@ng-nest/ui 15.0.4 → 15.0.5

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 (57) hide show
  1. package/core/config/config.d.ts +2 -0
  2. package/dropdown/dropdown-portal.component.d.ts +4 -0
  3. package/esm2020/core/config/config.mjs +1 -1
  4. package/esm2020/dropdown/dropdown-portal.component.mjs +16 -4
  5. package/esm2020/input/input.component.mjs +2 -2
  6. package/esm2020/pagination/pagination.component.mjs +33 -4
  7. package/esm2020/pagination/pagination.property.mjs +15 -3
  8. package/esm2020/table/table-body.component.mjs +6 -6
  9. package/esm2020/table/table-head.component.mjs +46 -7
  10. package/esm2020/table/table.component.mjs +16 -5
  11. package/esm2020/table/table.module.mjs +5 -1
  12. package/esm2020/table/table.property.mjs +23 -2
  13. package/esm2020/transfer/transfer.component.mjs +130 -20
  14. package/esm2020/transfer/transfer.module.mjs +12 -4
  15. package/esm2020/transfer/transfer.property.mjs +11 -2
  16. package/fesm2015/ng-nest-ui-core.mjs.map +1 -1
  17. package/fesm2015/ng-nest-ui-date-picker.mjs +1 -0
  18. package/fesm2015/ng-nest-ui-dropdown.mjs +15 -3
  19. package/fesm2015/ng-nest-ui-dropdown.mjs.map +1 -1
  20. package/fesm2015/ng-nest-ui-icon.mjs +1 -0
  21. package/fesm2015/ng-nest-ui-input.mjs +2 -2
  22. package/fesm2015/ng-nest-ui-input.mjs.map +1 -1
  23. package/fesm2015/ng-nest-ui-pagination.mjs +46 -5
  24. package/fesm2015/ng-nest-ui-pagination.mjs.map +1 -1
  25. package/fesm2015/ng-nest-ui-select.mjs +1 -0
  26. package/fesm2015/ng-nest-ui-table.mjs +89 -16
  27. package/fesm2015/ng-nest-ui-table.mjs.map +1 -1
  28. package/fesm2015/ng-nest-ui-transfer.mjs +154 -26
  29. package/fesm2015/ng-nest-ui-transfer.mjs.map +1 -1
  30. package/fesm2015/ng-nest-ui-tree-file.mjs +1 -0
  31. package/fesm2015/ng-nest-ui-upload.mjs +1 -0
  32. package/fesm2020/ng-nest-ui-core.mjs.map +1 -1
  33. package/fesm2020/ng-nest-ui-date-picker.mjs +1 -0
  34. package/fesm2020/ng-nest-ui-dropdown.mjs +15 -3
  35. package/fesm2020/ng-nest-ui-dropdown.mjs.map +1 -1
  36. package/fesm2020/ng-nest-ui-icon.mjs +1 -0
  37. package/fesm2020/ng-nest-ui-input.mjs +2 -2
  38. package/fesm2020/ng-nest-ui-input.mjs.map +1 -1
  39. package/fesm2020/ng-nest-ui-pagination.mjs +46 -5
  40. package/fesm2020/ng-nest-ui-pagination.mjs.map +1 -1
  41. package/fesm2020/ng-nest-ui-select.mjs +1 -0
  42. package/fesm2020/ng-nest-ui-table.mjs +89 -16
  43. package/fesm2020/ng-nest-ui-table.mjs.map +1 -1
  44. package/fesm2020/ng-nest-ui-transfer.mjs +151 -24
  45. package/fesm2020/ng-nest-ui-transfer.mjs.map +1 -1
  46. package/fesm2020/ng-nest-ui-tree-file.mjs +1 -0
  47. package/fesm2020/ng-nest-ui-upload.mjs +1 -0
  48. package/package.json +1 -1
  49. package/pagination/pagination.component.d.ts +3 -1
  50. package/pagination/pagination.property.d.ts +13 -3
  51. package/table/table-head.component.d.ts +9 -1
  52. package/table/table.component.d.ts +4 -2
  53. package/table/table.module.d.ts +4 -3
  54. package/table/table.property.d.ts +26 -1
  55. package/transfer/transfer.component.d.ts +12 -2
  56. package/transfer/transfer.module.d.ts +3 -1
  57. package/transfer/transfer.property.d.ts +29 -4
@@ -42,6 +42,7 @@ export class XPaginationComponent extends XPaginationProperty {
42
42
  }
43
43
  ngOnInit() {
44
44
  this.i18n.localeChange.pipe(takeUntil(this._unSubject)).subscribe(() => this.cdr.markForCheck());
45
+ this.inputSize = Number(this.size);
45
46
  }
46
47
  ngOnChanges(changes) {
47
48
  const { total, size, index } = changes;
@@ -54,6 +55,10 @@ export class XPaginationComponent extends XPaginationProperty {
54
55
  sizeChanged() {
55
56
  this.setIndexes();
56
57
  this.sizeChange.emit(this.size);
58
+ if (this.index !== 1) {
59
+ this.index = 1;
60
+ this.indexChange.emit(this.index);
61
+ }
57
62
  }
58
63
  setIndexes() {
59
64
  this.lastIndex = Math.ceil(Number(this.total) / Number(this.size)) || 1;
@@ -78,7 +83,7 @@ export class XPaginationComponent extends XPaginationProperty {
78
83
  this.indexChange.emit(this.index);
79
84
  }
80
85
  }
81
- onKeydown(event) {
86
+ onJumpKeydown(event) {
82
87
  if (this.jumpPage !== null && event.keyCode === ENTER) {
83
88
  if (this.jumpPage <= this.indexFirst) {
84
89
  this.jump(this.indexFirst);
@@ -95,6 +100,12 @@ export class XPaginationComponent extends XPaginationProperty {
95
100
  }
96
101
  onSimpleKeydown(event) {
97
102
  if (this.index !== null && event.keyCode === ENTER) {
103
+ if (Number(this.index) % 1 !== 0) {
104
+ this.index = Math.round(Number(this.index));
105
+ }
106
+ if (isNaN(Number(this.index)) || this.index === 0) {
107
+ this.index = 1;
108
+ }
98
109
  if (this.index <= this.indexFirst) {
99
110
  this.index = this.indexFirst;
100
111
  }
@@ -102,9 +113,27 @@ export class XPaginationComponent extends XPaginationProperty {
102
113
  this.index = this.lastIndex;
103
114
  }
104
115
  this.jump(this.index);
116
+ this.indexChange.emit(this.index);
105
117
  this.cdr.detectChanges();
106
118
  }
107
119
  }
120
+ onInputSizeKeydown(event) {
121
+ if (this.inputSize !== null && event.keyCode === ENTER) {
122
+ if (this.inputSize % 1 !== 0) {
123
+ this.inputSize = Math.round(this.inputSize);
124
+ }
125
+ if (isNaN(this.inputSize)) {
126
+ this.inputSize = Number(this.size);
127
+ }
128
+ if (this.inputSize <= 0) {
129
+ this.inputSize = Number(this.size);
130
+ }
131
+ else if (this.inputSize !== Number(this.size)) {
132
+ this.size = this.inputSize;
133
+ this.sizeChanged();
134
+ }
135
+ }
136
+ }
108
137
  validateIndex(value) {
109
138
  if (value > this.lastIndex) {
110
139
  return this.lastIndex;
@@ -124,9 +153,9 @@ export class XPaginationComponent extends XPaginationProperty {
124
153
  }
125
154
  }
126
155
  /** @nocollapse */ XPaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XPaginationComponent, deps: [{ token: i1.XConfigService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i2.XI18nService }], target: i0.ɵɵFactoryTarget.Component });
127
- /** @nocollapse */ XPaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: XPaginationComponent, selector: "x-pagination", usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<x-buttons *ngIf=\"!simple; else simpleTpl\" [space]=\"space\" [hiddenBorder]=\"hiddenBorder\">\r\n <x-button\r\n *ngIf=\"showEllipsis\"\r\n [icon]=\"'fto-chevrons-left'\"\r\n [title]=\"'pagination.first' | xI18n\"\r\n [disabled]=\"disabled || firstActivated\"\r\n (click)=\"jump(1)\"\r\n ></x-button>\r\n <ng-container *xOutlet=\"previousTpl\"></ng-container>\r\n <x-button\r\n *ngFor=\"let item of indexes; trackBy: trackByItem\"\r\n [disabled]=\"disabled\"\r\n [activated]=\"getActivated(item)\"\r\n (click)=\"jump(item)\"\r\n >{{ item }}</x-button\r\n >\r\n <ng-container *xOutlet=\"nextTpl\"></ng-container>\r\n <x-button\r\n *ngIf=\"showEllipsis && !simple\"\r\n [icon]=\"'fto-chevrons-right'\"\r\n [title]=\"'pagination.last' | xI18n\"\r\n [disabled]=\"disabled || lastActivated\"\r\n (click)=\"jump(lastIndex)\"\r\n ></x-button>\r\n</x-buttons>\r\n<ng-template #simpleTpl>\r\n <div class=\"x-pagination-simple\">\r\n <x-input\r\n [bordered]=\"!hiddenBorder\"\r\n [before]=\"previousTpl\"\r\n [after]=\"nextTpl\"\r\n [style.width.px]=\"simpleIndexWidth\"\r\n [(ngModel)]=\"index\"\r\n (xKeydown)=\"onSimpleKeydown($event)\"\r\n ></x-input>\r\n <span>/</span>\r\n <span>{{ lastIndex }}</span>\r\n </div>\r\n</ng-template>\r\n<x-select\r\n *ngIf=\"showSize\"\r\n [style.width.px]=\"sizeWidth\"\r\n class=\"x-pagination-size\"\r\n [data]=\"sizeData\"\r\n clearable=\"false\"\r\n [disabled]=\"disabled\"\r\n [bordered]=\"!hiddenBorder\"\r\n [nodeTpl]=\"nodeTpl\"\r\n [(ngModel)]=\"size\"\r\n (ngModelChange)=\"sizeChanged()\"\r\n></x-select>\r\n<div *ngIf=\"showJump && !simple\" class=\"x-pagination-jump\">\r\n <span>{{ 'pagination.jump' | xI18n }}</span>\r\n <x-input [bordered]=\"!hiddenBorder\" [style.width.px]=\"jumpWidth\" [(ngModel)]=\"jumpPage\" (xKeydown)=\"onKeydown($event)\"></x-input>\r\n</div>\r\n<x-button *ngIf=\"showTotal\" [disabled]=\"disabled\" class=\"x-pagination-total\" [type]=\"hiddenBorder === true ? 'text' : 'initial'\"\r\n ><ng-container *xOutlet=\"totalTpl; context: { $total: total }\"\r\n >{{ 'pagination.total' | xI18n }} {{ total }} {{ 'pagination.item' | xI18n }}</ng-container\r\n ></x-button\r\n>\r\n\r\n<ng-template #previousTpl>\r\n <x-button\r\n [icon]=\"'fto-chevron-left'\"\r\n [title]=\"'pagination.previous' | xI18n\"\r\n [disabled]=\"disabled || leftDisabled\"\r\n (click)=\"jump(-1, true)\"\r\n ></x-button>\r\n</ng-template>\r\n\r\n<ng-template #nextTpl>\r\n <x-button\r\n [icon]=\"'fto-chevron-right'\"\r\n [title]=\"'pagination.next' | xI18n\"\r\n [disabled]=\"disabled || rightDisabled\"\r\n (click)=\"jump(1, true)\"\r\n ></x-button>\r\n</ng-template>\r\n\r\n<ng-template #nodeTpl let-node=\"$node\">\r\n <ng-container *ngIf=\"node\"> {{ node?.label }} {{ 'pagination.sizePage' | xI18n }} </ng-container>\r\n</ng-template>\r\n", styles: [".x-pagination{margin:0;padding:0;display:inline-flex}.x-pagination>.x-buttons.x-buttons-hiddenBorder>x-button>.x-button{min-width:1.75rem}.x-pagination>.x-buttons.x-buttons-hiddenBorder>x-button>.x-button-activated{background-color:#0000000d}.x-pagination-size,.x-pagination-total{margin-left:.5rem}.x-pagination-jump{margin-left:.5rem;display:inline-flex;align-items:center}.x-pagination-jump x-input{margin-left:.5rem}.x-pagination-simple{margin:0 .5rem;display:inline-flex;align-items:center}.x-pagination-simple>x-input input{text-align:center}.x-pagination-simple>span{margin-left:.5rem}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.XButtonComponent, selector: "x-button" }, { kind: "component", type: i5.XButtonsComponent, selector: "x-buttons" }, { kind: "component", type: i6.XSelectComponent, selector: "x-select" }, { kind: "component", type: i7.XInputComponent, selector: "x-input" }, { kind: "directive", type: i8.XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { kind: "pipe", type: i2.XI18nPipe, name: "xI18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
156
+ /** @nocollapse */ XPaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: XPaginationComponent, selector: "x-pagination", usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<x-buttons *ngIf=\"!simple; else simpleTpl\" [space]=\"space\" [hiddenBorder]=\"hiddenBorder\">\r\n <x-button\r\n *ngIf=\"showEllipsis\"\r\n [icon]=\"'fto-chevrons-left'\"\r\n [title]=\"'pagination.first' | xI18n\"\r\n [disabled]=\"disabled || firstActivated\"\r\n (click)=\"jump(1)\"\r\n ></x-button>\r\n <ng-container *xOutlet=\"previousTpl\"></ng-container>\r\n <x-button\r\n *ngFor=\"let item of indexes; trackBy: trackByItem\"\r\n [disabled]=\"disabled\"\r\n [activated]=\"getActivated(item)\"\r\n (click)=\"jump(item)\"\r\n >{{ item }}</x-button\r\n >\r\n <ng-container *xOutlet=\"nextTpl\"></ng-container>\r\n <x-button\r\n *ngIf=\"showEllipsis && !simple\"\r\n [icon]=\"'fto-chevrons-right'\"\r\n [title]=\"'pagination.last' | xI18n\"\r\n [disabled]=\"disabled || lastActivated\"\r\n (click)=\"jump(lastIndex)\"\r\n ></x-button>\r\n</x-buttons>\r\n<ng-template #simpleTpl>\r\n <div class=\"x-pagination-simple\">\r\n <x-input\r\n [bordered]=\"!hiddenBorder\"\r\n [before]=\"previousTpl\"\r\n [after]=\"nextTpl\"\r\n [style.width.px]=\"simpleIndexWidth\"\r\n [(ngModel)]=\"index\"\r\n (xKeydown)=\"onSimpleKeydown($event)\"\r\n ></x-input>\r\n <span>/</span>\r\n <span>{{ lastIndex }}</span>\r\n </div>\r\n</ng-template>\r\n<x-select\r\n *ngIf=\"showSize && !showInputSize\"\r\n [style.width.px]=\"sizeWidth\"\r\n class=\"x-pagination-size\"\r\n [data]=\"sizeData\"\r\n clearable=\"false\"\r\n [disabled]=\"disabled\"\r\n [bordered]=\"!hiddenBorder\"\r\n [nodeTpl]=\"nodeTpl\"\r\n [(ngModel)]=\"size\"\r\n (ngModelChange)=\"sizeChanged()\"\r\n></x-select>\r\n<div *ngIf=\"showInputSize\" class=\"x-pagination-input-size\">\r\n <x-input\r\n [style.width.px]=\"inputSizeWidth\"\r\n [disabled]=\"disabled\"\r\n [bordered]=\"!hiddenBorder\"\r\n [(ngModel)]=\"inputSize\"\r\n (xKeydown)=\"onInputSizeKeydown($event)\"\r\n ></x-input>\r\n <span> {{ 'pagination.sizePage' | xI18n }} </span>\r\n</div>\r\n\r\n<div *ngIf=\"showJump && !simple\" class=\"x-pagination-jump\">\r\n <span>{{ 'pagination.jump' | xI18n }}</span>\r\n <x-input [bordered]=\"!hiddenBorder\" [style.width.px]=\"jumpWidth\" [(ngModel)]=\"jumpPage\" (xKeydown)=\"onJumpKeydown($event)\"></x-input>\r\n</div>\r\n<x-button *ngIf=\"showTotal\" [disabled]=\"disabled\" class=\"x-pagination-total\" [type]=\"hiddenBorder === true ? 'text' : 'initial'\"\r\n ><ng-container *xOutlet=\"totalTpl; context: { $total: total }\"\r\n >{{ 'pagination.total' | xI18n }} {{ total }} {{ 'pagination.item' | xI18n }}</ng-container\r\n ></x-button\r\n>\r\n\r\n<ng-template #previousTpl>\r\n <x-button\r\n [type]=\"hiddenBorder ? 'text' : 'initial'\"\r\n [icon]=\"'fto-chevron-left'\"\r\n [title]=\"'pagination.previous' | xI18n\"\r\n [disabled]=\"disabled || leftDisabled\"\r\n (click)=\"jump(-1, true)\"\r\n ></x-button>\r\n</ng-template>\r\n\r\n<ng-template #nextTpl>\r\n <x-button\r\n [type]=\"hiddenBorder ? 'text' : 'initial'\"\r\n [icon]=\"'fto-chevron-right'\"\r\n [title]=\"'pagination.next' | xI18n\"\r\n [disabled]=\"disabled || rightDisabled\"\r\n (click)=\"jump(1, true)\"\r\n ></x-button>\r\n</ng-template>\r\n\r\n<ng-template #nodeTpl let-node=\"$node\">\r\n <ng-container *ngIf=\"node\"> {{ node?.label }} {{ 'pagination.sizePage' | xI18n }} </ng-container>\r\n</ng-template>\r\n", styles: [".x-pagination{margin:0;padding:0;display:inline-flex}.x-pagination>.x-buttons.x-buttons-hiddenBorder>x-button>.x-button{min-width:1.75rem}.x-pagination>.x-buttons.x-buttons-hiddenBorder>x-button>.x-button-activated{background-color:#0000000d}.x-pagination-size,.x-pagination-total{margin-left:.5rem}.x-pagination-input-size{margin-left:.5rem;display:inline-flex;align-items:center}.x-pagination-input-size x-input{margin-right:.5rem}.x-pagination-jump{margin-left:.5rem;display:inline-flex;align-items:center}.x-pagination-jump x-input{margin-left:.5rem}.x-pagination-simple{margin-right:.5rem;display:inline-flex;align-items:center}.x-pagination-simple>x-input input{text-align:center}.x-pagination-simple>span{margin-left:.5rem}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.XButtonComponent, selector: "x-button" }, { kind: "component", type: i5.XButtonsComponent, selector: "x-buttons" }, { kind: "component", type: i6.XSelectComponent, selector: "x-select" }, { kind: "component", type: i7.XInputComponent, selector: "x-input" }, { kind: "directive", type: i8.XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { kind: "pipe", type: i2.XI18nPipe, name: "xI18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
128
157
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XPaginationComponent, decorators: [{
129
158
  type: Component,
130
- args: [{ selector: `${XPaginationPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<x-buttons *ngIf=\"!simple; else simpleTpl\" [space]=\"space\" [hiddenBorder]=\"hiddenBorder\">\r\n <x-button\r\n *ngIf=\"showEllipsis\"\r\n [icon]=\"'fto-chevrons-left'\"\r\n [title]=\"'pagination.first' | xI18n\"\r\n [disabled]=\"disabled || firstActivated\"\r\n (click)=\"jump(1)\"\r\n ></x-button>\r\n <ng-container *xOutlet=\"previousTpl\"></ng-container>\r\n <x-button\r\n *ngFor=\"let item of indexes; trackBy: trackByItem\"\r\n [disabled]=\"disabled\"\r\n [activated]=\"getActivated(item)\"\r\n (click)=\"jump(item)\"\r\n >{{ item }}</x-button\r\n >\r\n <ng-container *xOutlet=\"nextTpl\"></ng-container>\r\n <x-button\r\n *ngIf=\"showEllipsis && !simple\"\r\n [icon]=\"'fto-chevrons-right'\"\r\n [title]=\"'pagination.last' | xI18n\"\r\n [disabled]=\"disabled || lastActivated\"\r\n (click)=\"jump(lastIndex)\"\r\n ></x-button>\r\n</x-buttons>\r\n<ng-template #simpleTpl>\r\n <div class=\"x-pagination-simple\">\r\n <x-input\r\n [bordered]=\"!hiddenBorder\"\r\n [before]=\"previousTpl\"\r\n [after]=\"nextTpl\"\r\n [style.width.px]=\"simpleIndexWidth\"\r\n [(ngModel)]=\"index\"\r\n (xKeydown)=\"onSimpleKeydown($event)\"\r\n ></x-input>\r\n <span>/</span>\r\n <span>{{ lastIndex }}</span>\r\n </div>\r\n</ng-template>\r\n<x-select\r\n *ngIf=\"showSize\"\r\n [style.width.px]=\"sizeWidth\"\r\n class=\"x-pagination-size\"\r\n [data]=\"sizeData\"\r\n clearable=\"false\"\r\n [disabled]=\"disabled\"\r\n [bordered]=\"!hiddenBorder\"\r\n [nodeTpl]=\"nodeTpl\"\r\n [(ngModel)]=\"size\"\r\n (ngModelChange)=\"sizeChanged()\"\r\n></x-select>\r\n<div *ngIf=\"showJump && !simple\" class=\"x-pagination-jump\">\r\n <span>{{ 'pagination.jump' | xI18n }}</span>\r\n <x-input [bordered]=\"!hiddenBorder\" [style.width.px]=\"jumpWidth\" [(ngModel)]=\"jumpPage\" (xKeydown)=\"onKeydown($event)\"></x-input>\r\n</div>\r\n<x-button *ngIf=\"showTotal\" [disabled]=\"disabled\" class=\"x-pagination-total\" [type]=\"hiddenBorder === true ? 'text' : 'initial'\"\r\n ><ng-container *xOutlet=\"totalTpl; context: { $total: total }\"\r\n >{{ 'pagination.total' | xI18n }} {{ total }} {{ 'pagination.item' | xI18n }}</ng-container\r\n ></x-button\r\n>\r\n\r\n<ng-template #previousTpl>\r\n <x-button\r\n [icon]=\"'fto-chevron-left'\"\r\n [title]=\"'pagination.previous' | xI18n\"\r\n [disabled]=\"disabled || leftDisabled\"\r\n (click)=\"jump(-1, true)\"\r\n ></x-button>\r\n</ng-template>\r\n\r\n<ng-template #nextTpl>\r\n <x-button\r\n [icon]=\"'fto-chevron-right'\"\r\n [title]=\"'pagination.next' | xI18n\"\r\n [disabled]=\"disabled || rightDisabled\"\r\n (click)=\"jump(1, true)\"\r\n ></x-button>\r\n</ng-template>\r\n\r\n<ng-template #nodeTpl let-node=\"$node\">\r\n <ng-container *ngIf=\"node\"> {{ node?.label }} {{ 'pagination.sizePage' | xI18n }} </ng-container>\r\n</ng-template>\r\n", styles: [".x-pagination{margin:0;padding:0;display:inline-flex}.x-pagination>.x-buttons.x-buttons-hiddenBorder>x-button>.x-button{min-width:1.75rem}.x-pagination>.x-buttons.x-buttons-hiddenBorder>x-button>.x-button-activated{background-color:#0000000d}.x-pagination-size,.x-pagination-total{margin-left:.5rem}.x-pagination-jump{margin-left:.5rem;display:inline-flex;align-items:center}.x-pagination-jump x-input{margin-left:.5rem}.x-pagination-simple{margin:0 .5rem;display:inline-flex;align-items:center}.x-pagination-simple>x-input input{text-align:center}.x-pagination-simple>span{margin-left:.5rem}\n"] }]
159
+ args: [{ selector: `${XPaginationPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<x-buttons *ngIf=\"!simple; else simpleTpl\" [space]=\"space\" [hiddenBorder]=\"hiddenBorder\">\r\n <x-button\r\n *ngIf=\"showEllipsis\"\r\n [icon]=\"'fto-chevrons-left'\"\r\n [title]=\"'pagination.first' | xI18n\"\r\n [disabled]=\"disabled || firstActivated\"\r\n (click)=\"jump(1)\"\r\n ></x-button>\r\n <ng-container *xOutlet=\"previousTpl\"></ng-container>\r\n <x-button\r\n *ngFor=\"let item of indexes; trackBy: trackByItem\"\r\n [disabled]=\"disabled\"\r\n [activated]=\"getActivated(item)\"\r\n (click)=\"jump(item)\"\r\n >{{ item }}</x-button\r\n >\r\n <ng-container *xOutlet=\"nextTpl\"></ng-container>\r\n <x-button\r\n *ngIf=\"showEllipsis && !simple\"\r\n [icon]=\"'fto-chevrons-right'\"\r\n [title]=\"'pagination.last' | xI18n\"\r\n [disabled]=\"disabled || lastActivated\"\r\n (click)=\"jump(lastIndex)\"\r\n ></x-button>\r\n</x-buttons>\r\n<ng-template #simpleTpl>\r\n <div class=\"x-pagination-simple\">\r\n <x-input\r\n [bordered]=\"!hiddenBorder\"\r\n [before]=\"previousTpl\"\r\n [after]=\"nextTpl\"\r\n [style.width.px]=\"simpleIndexWidth\"\r\n [(ngModel)]=\"index\"\r\n (xKeydown)=\"onSimpleKeydown($event)\"\r\n ></x-input>\r\n <span>/</span>\r\n <span>{{ lastIndex }}</span>\r\n </div>\r\n</ng-template>\r\n<x-select\r\n *ngIf=\"showSize && !showInputSize\"\r\n [style.width.px]=\"sizeWidth\"\r\n class=\"x-pagination-size\"\r\n [data]=\"sizeData\"\r\n clearable=\"false\"\r\n [disabled]=\"disabled\"\r\n [bordered]=\"!hiddenBorder\"\r\n [nodeTpl]=\"nodeTpl\"\r\n [(ngModel)]=\"size\"\r\n (ngModelChange)=\"sizeChanged()\"\r\n></x-select>\r\n<div *ngIf=\"showInputSize\" class=\"x-pagination-input-size\">\r\n <x-input\r\n [style.width.px]=\"inputSizeWidth\"\r\n [disabled]=\"disabled\"\r\n [bordered]=\"!hiddenBorder\"\r\n [(ngModel)]=\"inputSize\"\r\n (xKeydown)=\"onInputSizeKeydown($event)\"\r\n ></x-input>\r\n <span> {{ 'pagination.sizePage' | xI18n }} </span>\r\n</div>\r\n\r\n<div *ngIf=\"showJump && !simple\" class=\"x-pagination-jump\">\r\n <span>{{ 'pagination.jump' | xI18n }}</span>\r\n <x-input [bordered]=\"!hiddenBorder\" [style.width.px]=\"jumpWidth\" [(ngModel)]=\"jumpPage\" (xKeydown)=\"onJumpKeydown($event)\"></x-input>\r\n</div>\r\n<x-button *ngIf=\"showTotal\" [disabled]=\"disabled\" class=\"x-pagination-total\" [type]=\"hiddenBorder === true ? 'text' : 'initial'\"\r\n ><ng-container *xOutlet=\"totalTpl; context: { $total: total }\"\r\n >{{ 'pagination.total' | xI18n }} {{ total }} {{ 'pagination.item' | xI18n }}</ng-container\r\n ></x-button\r\n>\r\n\r\n<ng-template #previousTpl>\r\n <x-button\r\n [type]=\"hiddenBorder ? 'text' : 'initial'\"\r\n [icon]=\"'fto-chevron-left'\"\r\n [title]=\"'pagination.previous' | xI18n\"\r\n [disabled]=\"disabled || leftDisabled\"\r\n (click)=\"jump(-1, true)\"\r\n ></x-button>\r\n</ng-template>\r\n\r\n<ng-template #nextTpl>\r\n <x-button\r\n [type]=\"hiddenBorder ? 'text' : 'initial'\"\r\n [icon]=\"'fto-chevron-right'\"\r\n [title]=\"'pagination.next' | xI18n\"\r\n [disabled]=\"disabled || rightDisabled\"\r\n (click)=\"jump(1, true)\"\r\n ></x-button>\r\n</ng-template>\r\n\r\n<ng-template #nodeTpl let-node=\"$node\">\r\n <ng-container *ngIf=\"node\"> {{ node?.label }} {{ 'pagination.sizePage' | xI18n }} </ng-container>\r\n</ng-template>\r\n", styles: [".x-pagination{margin:0;padding:0;display:inline-flex}.x-pagination>.x-buttons.x-buttons-hiddenBorder>x-button>.x-button{min-width:1.75rem}.x-pagination>.x-buttons.x-buttons-hiddenBorder>x-button>.x-button-activated{background-color:#0000000d}.x-pagination-size,.x-pagination-total{margin-left:.5rem}.x-pagination-input-size{margin-left:.5rem;display:inline-flex;align-items:center}.x-pagination-input-size x-input{margin-right:.5rem}.x-pagination-jump{margin-left:.5rem;display:inline-flex;align-items:center}.x-pagination-jump x-input{margin-left:.5rem}.x-pagination-simple{margin-right:.5rem;display:inline-flex;align-items:center}.x-pagination-simple>x-input input{text-align:center}.x-pagination-simple>span{margin-left:.5rem}\n"] }]
131
160
  }], ctorParameters: function () { return [{ type: i1.XConfigService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i2.XI18nService }]; } });
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQU14QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsU0FBUyxFQUFrQixNQUFNLGtCQUFrQixDQUFDO0FBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7OztBQVM5QyxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsbUJBQW1CO0lBeUIzRCxZQUNTLGFBQTZCLEVBQzdCLFVBQXNCLEVBQ3RCLFFBQW1CLEVBQ25CLEdBQXNCLEVBQ3RCLElBQWtCO1FBRXpCLEtBQUssRUFBRSxDQUFDO1FBTkQsa0JBQWEsR0FBYixhQUFhLENBQWdCO1FBQzdCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixTQUFJLEdBQUosSUFBSSxDQUFjO1FBNUIzQixZQUFPLEdBQWEsRUFBRSxDQUFDO1FBQ3ZCLGVBQVUsR0FBVyxDQUFDLENBQUM7UUFDdkIsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUN0QixhQUFRLEdBQWtCLElBQUksQ0FBQztRQUV2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SUFBSSxDQUFDO0lBQ2QsQ0FBQzs7b0lBNUhVLG9CQUFvQjt3SEFBcEIsb0JBQW9CLGdHQ3hCakMsKzJGQWtGQTsyRkQxRGEsb0JBQW9CO2tCQVBoQyxTQUFTOytCQUNFLEdBQUcsaUJBQWlCLEVBQUUsaUJBR2pCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBPbkNoYW5nZXMsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBFbGVtZW50UmVmLFxyXG4gIFJlbmRlcmVyMixcclxuICBDaGFuZ2VEZXRlY3RvclJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBYUGFnaW5hdGlvblByZWZpeCwgWFBhZ2luYXRpb25Qcm9wZXJ0eSB9IGZyb20gJy4vcGFnaW5hdGlvbi5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7IFhJc0NoYW5nZSwgWENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAbmctbmVzdC91aS9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBYSTE4blNlcnZpY2UgfSBmcm9tICdAbmctbmVzdC91aS9pMThuJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBFTlRFUiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogYCR7WFBhZ2luYXRpb25QcmVmaXh9YCxcclxuICB0ZW1wbGF0ZVVybDogJy4vcGFnaW5hdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc3R5bGUvaW5kZXguc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFhQYWdpbmF0aW9uQ29tcG9uZW50IGV4dGVuZHMgWFBhZ2luYXRpb25Qcm9wZXJ0eSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgbGFzdEluZGV4ITogbnVtYmVyO1xyXG4gIGluZGV4ZXM6IG51bWJlcltdID0gW107XHJcbiAgaW5kZXhGaXJzdDogbnVtYmVyID0gMTtcclxuICBpbmRleExhc3Q6IG51bWJlciA9IDE7XHJcbiAganVtcFBhZ2U6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIF91blN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBnZXQgbGVmdERpc2FibGVkKCkge1xyXG4gICAgcmV0dXJuIE51bWJlcih0aGlzLmluZGV4KSA9PT0gMSB8fCBOdW1iZXIodGhpcy50b3RhbCkgPT09IDA7XHJcbiAgfVxyXG5cclxuICBnZXQgcmlnaHREaXNhYmxlZCgpIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5pbmRleCkgPT09IHRoaXMubGFzdEluZGV4IHx8IE51bWJlcih0aGlzLnRvdGFsKSA9PT0gMDtcclxuICB9XHJcblxyXG4gIGdldCBmaXJzdEFjdGl2YXRlZCgpIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5pbmRleCkgPT09IDE7XHJcbiAgfVxyXG5cclxuICBnZXQgbGFzdEFjdGl2YXRlZCgpIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5pbmRleCkgPT09IHRoaXMubGFzdEluZGV4O1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgY29uZmlnU2VydmljZTogWENvbmZpZ1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuICAgIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgaTE4bjogWEkxOG5TZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgWFBhZ2luYXRpb25QcmVmaXgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmkxOG4ubG9jYWxlQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX3VuU3ViamVjdCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IHRvdGFsLCBzaXplLCBpbmRleCB9ID0gY2hhbmdlcztcclxuICAgIFhJc0NoYW5nZSh0b3RhbCwgc2l6ZSwgaW5kZXgpICYmIHRoaXMuc2V0SW5kZXhlcygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLl91blN1YmplY3QubmV4dCgpO1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBzaXplQ2hhbmdlZCgpIHtcclxuICAgIHRoaXMuc2V0SW5kZXhlcygpO1xyXG4gICAgdGhpcy5zaXplQ2hhbmdlLmVtaXQodGhpcy5zaXplIGFzIG51bWJlcik7XHJcbiAgfVxyXG5cclxuICBzZXRJbmRleGVzKCkge1xyXG4gICAgdGhpcy5sYXN0SW5kZXggPSBNYXRoLmNlaWwoTnVtYmVyKHRoaXMudG90YWwpIC8gTnVtYmVyKHRoaXMuc2l6ZSkpIHx8IDE7XHJcbiAgICBjb25zdCBpbmRleGVzOiBudW1iZXJbXSA9IFtdO1xyXG4gICAgY29uc3QgY3VycmVudCA9IE51bWJlcih0aGlzLmluZGV4KSAtIDE7XHJcbiAgICBjb25zdCBtYXhTaXplID0gTnVtYmVyKHRoaXMucGFnZUxpbmtTaXplKTtcclxuICAgIGNvbnN0IHBhZ2VzID0gTWF0aC5taW4obWF4U2l6ZSwgdGhpcy5sYXN0SW5kZXgpO1xyXG4gICAgbGV0IHN0YXJ0ID0gTWF0aC5tYXgoMCwgTWF0aC5jZWlsKGN1cnJlbnQgLSBwYWdlcyAvIDIpKSxcclxuICAgICAgZW5kID0gTWF0aC5taW4odGhpcy5sYXN0SW5kZXggLSAxLCBzdGFydCArIHBhZ2VzIC0gMSk7XHJcbiAgICB2YXIgZGVsdGEgPSBtYXhTaXplIC0gKGVuZCAtIHN0YXJ0ICsgMSk7XHJcbiAgICBzdGFydCA9IE1hdGgubWF4KDAsIHN0YXJ0IC0gZGVsdGEpO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8PSBlbmQ7IGkrKykge1xyXG4gICAgICBpbmRleGVzLnB1c2goaSArIDEpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pbmRleGVzID0gaW5kZXhlcztcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGp1bXAoaW5kZXg6IG51bWJlciwgaXNEaWZmID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IGl4ID0gdGhpcy52YWxpZGF0ZUluZGV4KGlzRGlmZiA/IE51bWJlcih0aGlzLmluZGV4KSArIGluZGV4IDogaW5kZXgpO1xyXG4gICAgaWYgKGl4ICE9PSB0aGlzLmluZGV4KSB7XHJcbiAgICAgIHRoaXMuaW5kZXggPSBpeDtcclxuICAgICAgdGhpcy5zZXRJbmRleGVzKCk7XHJcbiAgICAgIHRoaXMuaW5kZXhDaGFuZ2UuZW1pdCh0aGlzLmluZGV4KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuanVtcFBhZ2UgIT09IG51bGwgJiYgZXZlbnQua2V5Q29kZSA9PT0gRU5URVIpIHtcclxuICAgICAgaWYgKHRoaXMuanVtcFBhZ2UgPD0gdGhpcy5pbmRleEZpcnN0KSB7XHJcbiAgICAgICAgdGhpcy5qdW1wKHRoaXMuaW5kZXhGaXJzdCk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5qdW1wUGFnZSA+PSB0aGlzLmxhc3RJbmRleCkge1xyXG4gICAgICAgIHRoaXMuanVtcCh0aGlzLmxhc3RJbmRleCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5qdW1wKHRoaXMuanVtcFBhZ2UpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuanVtcFBhZ2UgPSBudWxsO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNpbXBsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLmluZGV4ICE9PSBudWxsICYmIGV2ZW50LmtleUNvZGUgPT09IEVOVEVSKSB7XHJcbiAgICAgIGlmICh0aGlzLmluZGV4IDw9IHRoaXMuaW5kZXhGaXJzdCkge1xyXG4gICAgICAgIHRoaXMuaW5kZXggPSB0aGlzLmluZGV4Rmlyc3Q7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5pbmRleCA+PSB0aGlzLmxhc3RJbmRleCkge1xyXG4gICAgICAgIHRoaXMuaW5kZXggPSB0aGlzLmxhc3RJbmRleDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmp1bXAodGhpcy5pbmRleCBhcyBudW1iZXIpO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZUluZGV4KHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgaWYgKHZhbHVlID4gdGhpcy5sYXN0SW5kZXgpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubGFzdEluZGV4O1xyXG4gICAgfSBlbHNlIGlmICh2YWx1ZSA8IDEpIHtcclxuICAgICAgcmV0dXJuIDE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRBY3RpdmF0ZWQoaW5kZXg6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIE51bWJlcih0aGlzLmluZGV4KSA9PT0gaW5kZXg7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5SXRlbShfaW5kZXg6IG51bWJlciwgaXRlbTogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gaXRlbTtcclxuICB9XHJcbn1cclxuIiwiPHgtYnV0dG9ucyAqbmdJZj1cIiFzaW1wbGU7IGVsc2Ugc2ltcGxlVHBsXCIgW3NwYWNlXT1cInNwYWNlXCIgW2hpZGRlbkJvcmRlcl09XCJoaWRkZW5Cb3JkZXJcIj5cclxuICA8eC1idXR0b25cclxuICAgICpuZ0lmPVwic2hvd0VsbGlwc2lzXCJcclxuICAgIFtpY29uXT1cIidmdG8tY2hldnJvbnMtbGVmdCdcIlxyXG4gICAgW3RpdGxlXT1cIidwYWdpbmF0aW9uLmZpcnN0JyB8IHhJMThuXCJcclxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBmaXJzdEFjdGl2YXRlZFwiXHJcbiAgICAoY2xpY2spPVwianVtcCgxKVwiXHJcbiAgPjwveC1idXR0b24+XHJcbiAgPG5nLWNvbnRhaW5lciAqeE91dGxldD1cInByZXZpb3VzVHBsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPHgtYnV0dG9uXHJcbiAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpbmRleGVzOyB0cmFja0J5OiB0cmFja0J5SXRlbVwiXHJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgW2FjdGl2YXRlZF09XCJnZXRBY3RpdmF0ZWQoaXRlbSlcIlxyXG4gICAgKGNsaWNrKT1cImp1bXAoaXRlbSlcIlxyXG4gICAgPnt7IGl0ZW0gfX08L3gtYnV0dG9uXHJcbiAgPlxyXG4gIDxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJuZXh0VHBsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPHgtYnV0dG9uXHJcbiAgICAqbmdJZj1cInNob3dFbGxpcHNpcyAmJiAhc2ltcGxlXCJcclxuICAgIFtpY29uXT1cIidmdG8tY2hldnJvbnMtcmlnaHQnXCJcclxuICAgIFt0aXRsZV09XCIncGFnaW5hdGlvbi5sYXN0JyB8IHhJMThuXCJcclxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBsYXN0QWN0aXZhdGVkXCJcclxuICAgIChjbGljayk9XCJqdW1wKGxhc3RJbmRleClcIlxyXG4gID48L3gtYnV0dG9uPlxyXG48L3gtYnV0dG9ucz5cclxuPG5nLXRlbXBsYXRlICNzaW1wbGVUcGw+XHJcbiAgPGRpdiBjbGFzcz1cIngtcGFnaW5hdGlvbi1zaW1wbGVcIj5cclxuICAgIDx4LWlucHV0XHJcbiAgICAgIFtib3JkZXJlZF09XCIhaGlkZGVuQm9yZGVyXCJcclxuICAgICAgW2JlZm9yZV09XCJwcmV2aW91c1RwbFwiXHJcbiAgICAgIFthZnRlcl09XCJuZXh0VHBsXCJcclxuICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInNpbXBsZUluZGV4V2lkdGhcIlxyXG4gICAgICBbKG5nTW9kZWwpXT1cImluZGV4XCJcclxuICAgICAgKHhLZXlkb3duKT1cIm9uU2ltcGxlS2V5ZG93bigkZXZlbnQpXCJcclxuICAgID48L3gtaW5wdXQ+XHJcbiAgICA8c3Bhbj4vPC9zcGFuPlxyXG4gICAgPHNwYW4+e3sgbGFzdEluZGV4IH19PC9zcGFuPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48eC1zZWxlY3RcclxuICAqbmdJZj1cInNob3dTaXplXCJcclxuICBbc3R5bGUud2lkdGgucHhdPVwic2l6ZVdpZHRoXCJcclxuICBjbGFzcz1cIngtcGFnaW5hdGlvbi1zaXplXCJcclxuICBbZGF0YV09XCJzaXplRGF0YVwiXHJcbiAgY2xlYXJhYmxlPVwiZmFsc2VcIlxyXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgW2JvcmRlcmVkXT1cIiFoaWRkZW5Cb3JkZXJcIlxyXG4gIFtub2RlVHBsXT1cIm5vZGVUcGxcIlxyXG4gIFsobmdNb2RlbCldPVwic2l6ZVwiXHJcbiAgKG5nTW9kZWxDaGFuZ2UpPVwic2l6ZUNoYW5nZWQoKVwiXHJcbj48L3gtc2VsZWN0PlxyXG48ZGl2ICpuZ0lmPVwic2hvd0p1bXAgJiYgIXNpbXBsZVwiIGNsYXNzPVwieC1wYWdpbmF0aW9uLWp1bXBcIj5cclxuICA8c3Bhbj57eyAncGFnaW5hdGlvbi5qdW1wJyB8IHhJMThuIH19PC9zcGFuPlxyXG4gIDx4LWlucHV0IFtib3JkZXJlZF09XCIhaGlkZGVuQm9yZGVyXCIgW3N0eWxlLndpZHRoLnB4XT1cImp1bXBXaWR0aFwiIFsobmdNb2RlbCldPVwianVtcFBhZ2VcIiAoeEtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIj48L3gtaW5wdXQ+XHJcbjwvZGl2PlxyXG48eC1idXR0b24gKm5nSWY9XCJzaG93VG90YWxcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBjbGFzcz1cIngtcGFnaW5hdGlvbi10b3RhbFwiIFt0eXBlXT1cImhpZGRlbkJvcmRlciA9PT0gdHJ1ZSA/ICd0ZXh0JyA6ICdpbml0aWFsJ1wiXHJcbiAgPjxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJ0b3RhbFRwbDsgY29udGV4dDogeyAkdG90YWw6IHRvdGFsIH1cIlxyXG4gICAgPnt7ICdwYWdpbmF0aW9uLnRvdGFsJyB8IHhJMThuIH19IHt7IHRvdGFsIH19IHt7ICdwYWdpbmF0aW9uLml0ZW0nIHwgeEkxOG4gfX08L25nLWNvbnRhaW5lclxyXG4gID48L3gtYnV0dG9uXHJcbj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcHJldmlvdXNUcGw+XHJcbiAgPHgtYnV0dG9uXHJcbiAgICBbaWNvbl09XCInZnRvLWNoZXZyb24tbGVmdCdcIlxyXG4gICAgW3RpdGxlXT1cIidwYWdpbmF0aW9uLnByZXZpb3VzJyB8IHhJMThuXCJcclxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBsZWZ0RGlzYWJsZWRcIlxyXG4gICAgKGNsaWNrKT1cImp1bXAoLTEsIHRydWUpXCJcclxuICA+PC94LWJ1dHRvbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbmV4dFRwbD5cclxuICA8eC1idXR0b25cclxuICAgIFtpY29uXT1cIidmdG8tY2hldnJvbi1yaWdodCdcIlxyXG4gICAgW3RpdGxlXT1cIidwYWdpbmF0aW9uLm5leHQnIHwgeEkxOG5cIlxyXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJpZ2h0RGlzYWJsZWRcIlxyXG4gICAgKGNsaWNrKT1cImp1bXAoMSwgdHJ1ZSlcIlxyXG4gID48L3gtYnV0dG9uPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNub2RlVHBsIGxldC1ub2RlPVwiJG5vZGVcIj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibm9kZVwiPiB7eyBub2RlPy5sYWJlbCB9fSB7eyAncGFnaW5hdGlvbi5zaXplUGFnZScgfCB4STE4biB9fSA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQU14QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsU0FBUyxFQUFrQixNQUFNLGtCQUFrQixDQUFDO0FBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7OztBQVM5QyxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsbUJBQW1CO0lBMEIzRCxZQUNTLGFBQTZCLEVBQzdCLFVBQXNCLEVBQ3RCLFFBQW1CLEVBQ25CLEdBQXNCLEVBQ3RCLElBQWtCO1FBRXpCLEtBQUssRUFBRSxDQUFDO1FBTkQsa0JBQWEsR0FBYixhQUFhLENBQWdCO1FBQzdCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixTQUFJLEdBQUosSUFBSSxDQUFjO1FBN0IzQixZQUFPLEdBQWEsRUFBRSxDQUFDO1FBQ3ZCLGVBQVUsR0FBVyxDQUFDLENBQUM7UUFDdkIsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUN0QixhQUFRLEdBQWtCLElBQUksQ0FBQztRQUd2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QUFFO1lBQzFCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUN2QjthQUFNLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtZQUNwQixPQUFPLENBQUMsQ0FBQztTQUNWO2FBQU07WUFDTCxPQUFPLEtBQUssQ0FBQztTQUNkO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFhO1FBQ3hCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLENBQUM7SUFDdEMsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFjLEVBQUUsSUFBWTtRQUN0QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7O29JQTFKVSxvQkFBb0I7d0hBQXBCLG9CQUFvQixnR0N4QmpDLHExR0ErRkE7MkZEdkVhLG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDRSxHQUFHLGlCQUFpQixFQUFFLGlCQUdqQixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgRWxlbWVudFJlZixcclxuICBSZW5kZXJlcjIsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWZcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWFBhZ2luYXRpb25QcmVmaXgsIFhQYWdpbmF0aW9uUHJvcGVydHkgfSBmcm9tICcuL3BhZ2luYXRpb24ucHJvcGVydHknO1xyXG5pbXBvcnQgeyBYSXNDaGFuZ2UsIFhDb25maWdTZXJ2aWNlIH0gZnJvbSAnQG5nLW5lc3QvdWkvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgWEkxOG5TZXJ2aWNlIH0gZnJvbSAnQG5nLW5lc3QvdWkvaTE4bic7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRU5URVIgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IGAke1hQYWdpbmF0aW9uUHJlZml4fWAsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3BhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3N0eWxlL2luZGV4LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBYUGFnaW5hdGlvbkNvbXBvbmVudCBleHRlbmRzIFhQYWdpbmF0aW9uUHJvcGVydHkgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gIGxhc3RJbmRleCE6IG51bWJlcjtcclxuICBpbmRleGVzOiBudW1iZXJbXSA9IFtdO1xyXG4gIGluZGV4Rmlyc3Q6IG51bWJlciA9IDE7XHJcbiAgaW5kZXhMYXN0OiBudW1iZXIgPSAxO1xyXG4gIGp1bXBQYWdlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICBpbnB1dFNpemUhOiBudW1iZXI7XHJcblxyXG4gIHByaXZhdGUgX3VuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIGdldCBsZWZ0RGlzYWJsZWQoKSB7XHJcbiAgICByZXR1cm4gTnVtYmVyKHRoaXMuaW5kZXgpID09PSAxIHx8IE51bWJlcih0aGlzLnRvdGFsKSA9PT0gMDtcclxuICB9XHJcblxyXG4gIGdldCByaWdodERpc2FibGVkKCkge1xyXG4gICAgcmV0dXJuIE51bWJlcih0aGlzLmluZGV4KSA9PT0gdGhpcy5sYXN0SW5kZXggfHwgTnVtYmVyKHRoaXMudG90YWwpID09PSAwO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGZpcnN0QWN0aXZhdGVkKCkge1xyXG4gICAgcmV0dXJuIE51bWJlcih0aGlzLmluZGV4KSA9PT0gMTtcclxuICB9XHJcblxyXG4gIGdldCBsYXN0QWN0aXZhdGVkKCkge1xyXG4gICAgcmV0dXJuIE51bWJlcih0aGlzLmluZGV4KSA9PT0gdGhpcy5sYXN0SW5kZXg7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBjb25maWdTZXJ2aWNlOiBYQ29uZmlnU2VydmljZSxcclxuICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHB1YmxpYyBpMThuOiBYSTE4blNlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBYUGFnaW5hdGlvblByZWZpeCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuaTE4bi5sb2NhbGVDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5fdW5TdWJqZWN0KSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpKTtcclxuICAgIHRoaXMuaW5wdXRTaXplID0gTnVtYmVyKHRoaXMuc2l6ZSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IHRvdGFsLCBzaXplLCBpbmRleCB9ID0gY2hhbmdlcztcclxuICAgIFhJc0NoYW5nZSh0b3RhbCwgc2l6ZSwgaW5kZXgpICYmIHRoaXMuc2V0SW5kZXhlcygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLl91blN1YmplY3QubmV4dCgpO1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBzaXplQ2hhbmdlZCgpIHtcclxuICAgIHRoaXMuc2V0SW5kZXhlcygpO1xyXG4gICAgdGhpcy5zaXplQ2hhbmdlLmVtaXQodGhpcy5zaXplIGFzIG51bWJlcik7XHJcbiAgICBpZiAodGhpcy5pbmRleCAhPT0gMSkge1xyXG4gICAgICB0aGlzLmluZGV4ID0gMTtcclxuICAgICAgdGhpcy5pbmRleENoYW5nZS5lbWl0KHRoaXMuaW5kZXgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0SW5kZXhlcygpIHtcclxuICAgIHRoaXMubGFzdEluZGV4ID0gTWF0aC5jZWlsKE51bWJlcih0aGlzLnRvdGFsKSAvIE51bWJlcih0aGlzLnNpemUpKSB8fCAxO1xyXG4gICAgY29uc3QgaW5kZXhlczogbnVtYmVyW10gPSBbXTtcclxuICAgIGNvbnN0IGN1cnJlbnQgPSBOdW1iZXIodGhpcy5pbmRleCkgLSAxO1xyXG4gICAgY29uc3QgbWF4U2l6ZSA9IE51bWJlcih0aGlzLnBhZ2VMaW5rU2l6ZSk7XHJcbiAgICBjb25zdCBwYWdlcyA9IE1hdGgubWluKG1heFNpemUsIHRoaXMubGFzdEluZGV4KTtcclxuICAgIGxldCBzdGFydCA9IE1hdGgubWF4KDAsIE1hdGguY2VpbChjdXJyZW50IC0gcGFnZXMgLyAyKSksXHJcbiAgICAgIGVuZCA9IE1hdGgubWluKHRoaXMubGFzdEluZGV4IC0gMSwgc3RhcnQgKyBwYWdlcyAtIDEpO1xyXG4gICAgdmFyIGRlbHRhID0gbWF4U2l6ZSAtIChlbmQgLSBzdGFydCArIDEpO1xyXG4gICAgc3RhcnQgPSBNYXRoLm1heCgwLCBzdGFydCAtIGRlbHRhKTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPD0gZW5kOyBpKyspIHtcclxuICAgICAgaW5kZXhlcy5wdXNoKGkgKyAxKTtcclxuICAgIH1cclxuICAgIHRoaXMuaW5kZXhlcyA9IGluZGV4ZXM7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBqdW1wKGluZGV4OiBudW1iZXIsIGlzRGlmZiA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCBpeCA9IHRoaXMudmFsaWRhdGVJbmRleChpc0RpZmYgPyBOdW1iZXIodGhpcy5pbmRleCkgKyBpbmRleCA6IGluZGV4KTtcclxuICAgIGlmIChpeCAhPT0gdGhpcy5pbmRleCkge1xyXG4gICAgICB0aGlzLmluZGV4ID0gaXg7XHJcbiAgICAgIHRoaXMuc2V0SW5kZXhlcygpO1xyXG4gICAgICB0aGlzLmluZGV4Q2hhbmdlLmVtaXQodGhpcy5pbmRleCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkp1bXBLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5qdW1wUGFnZSAhPT0gbnVsbCAmJiBldmVudC5rZXlDb2RlID09PSBFTlRFUikge1xyXG4gICAgICBpZiAodGhpcy5qdW1wUGFnZSA8PSB0aGlzLmluZGV4Rmlyc3QpIHtcclxuICAgICAgICB0aGlzLmp1bXAodGhpcy5pbmRleEZpcnN0KTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLmp1bXBQYWdlID49IHRoaXMubGFzdEluZGV4KSB7XHJcbiAgICAgICAgdGhpcy5qdW1wKHRoaXMubGFzdEluZGV4KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmp1bXAodGhpcy5qdW1wUGFnZSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5qdW1wUGFnZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2ltcGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuaW5kZXggIT09IG51bGwgJiYgZXZlbnQua2V5Q29kZSA9PT0gRU5URVIpIHtcclxuICAgICAgaWYgKE51bWJlcih0aGlzLmluZGV4KSAlIDEgIT09IDApIHtcclxuICAgICAgICB0aGlzLmluZGV4ID0gTWF0aC5yb3VuZChOdW1iZXIodGhpcy5pbmRleCkpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChpc05hTihOdW1iZXIodGhpcy5pbmRleCkpIHx8IHRoaXMuaW5kZXggPT09IDApIHtcclxuICAgICAgICB0aGlzLmluZGV4ID0gMTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5pbmRleCA8PSB0aGlzLmluZGV4Rmlyc3QpIHtcclxuICAgICAgICB0aGlzLmluZGV4ID0gdGhpcy5pbmRleEZpcnN0O1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaW5kZXggPj0gdGhpcy5sYXN0SW5kZXgpIHtcclxuICAgICAgICB0aGlzLmluZGV4ID0gdGhpcy5sYXN0SW5kZXg7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5qdW1wKHRoaXMuaW5kZXggYXMgbnVtYmVyKTtcclxuICAgICAgdGhpcy5pbmRleENoYW5nZS5lbWl0KHRoaXMuaW5kZXggYXMgbnVtYmVyKTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25JbnB1dFNpemVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5pbnB1dFNpemUgIT09IG51bGwgJiYgZXZlbnQua2V5Q29kZSA9PT0gRU5URVIpIHtcclxuICAgICAgaWYgKHRoaXMuaW5wdXRTaXplICUgMSAhPT0gMCkge1xyXG4gICAgICAgIHRoaXMuaW5wdXRTaXplID0gTWF0aC5yb3VuZCh0aGlzLmlucHV0U2l6ZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGlzTmFOKHRoaXMuaW5wdXRTaXplKSkge1xyXG4gICAgICAgIHRoaXMuaW5wdXRTaXplID0gTnVtYmVyKHRoaXMuc2l6ZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuaW5wdXRTaXplIDw9IDApIHtcclxuICAgICAgICB0aGlzLmlucHV0U2l6ZSA9IE51bWJlcih0aGlzLnNpemUpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaW5wdXRTaXplICE9PSBOdW1iZXIodGhpcy5zaXplKSkge1xyXG4gICAgICAgIHRoaXMuc2l6ZSA9IHRoaXMuaW5wdXRTaXplO1xyXG4gICAgICAgIHRoaXMuc2l6ZUNoYW5nZWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVJbmRleCh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGlmICh2YWx1ZSA+IHRoaXMubGFzdEluZGV4KSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxhc3RJbmRleDtcclxuICAgIH0gZWxzZSBpZiAodmFsdWUgPCAxKSB7XHJcbiAgICAgIHJldHVybiAxO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0QWN0aXZhdGVkKGluZGV4OiBudW1iZXIpIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5pbmRleCkgPT09IGluZGV4O1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUl0ZW0oX2luZGV4OiBudW1iZXIsIGl0ZW06IG51bWJlcikge1xyXG4gICAgcmV0dXJuIGl0ZW07XHJcbiAgfVxyXG59XHJcbiIsIjx4LWJ1dHRvbnMgKm5nSWY9XCIhc2ltcGxlOyBlbHNlIHNpbXBsZVRwbFwiIFtzcGFjZV09XCJzcGFjZVwiIFtoaWRkZW5Cb3JkZXJdPVwiaGlkZGVuQm9yZGVyXCI+XHJcbiAgPHgtYnV0dG9uXHJcbiAgICAqbmdJZj1cInNob3dFbGxpcHNpc1wiXHJcbiAgICBbaWNvbl09XCInZnRvLWNoZXZyb25zLWxlZnQnXCJcclxuICAgIFt0aXRsZV09XCIncGFnaW5hdGlvbi5maXJzdCcgfCB4STE4blwiXHJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgZmlyc3RBY3RpdmF0ZWRcIlxyXG4gICAgKGNsaWNrKT1cImp1bXAoMSlcIlxyXG4gID48L3gtYnV0dG9uPlxyXG4gIDxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJwcmV2aW91c1RwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gIDx4LWJ1dHRvblxyXG4gICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaW5kZXhlczsgdHJhY2tCeTogdHJhY2tCeUl0ZW1cIlxyXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgIFthY3RpdmF0ZWRdPVwiZ2V0QWN0aXZhdGVkKGl0ZW0pXCJcclxuICAgIChjbGljayk9XCJqdW1wKGl0ZW0pXCJcclxuICAgID57eyBpdGVtIH19PC94LWJ1dHRvblxyXG4gID5cclxuICA8bmctY29udGFpbmVyICp4T3V0bGV0PVwibmV4dFRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gIDx4LWJ1dHRvblxyXG4gICAgKm5nSWY9XCJzaG93RWxsaXBzaXMgJiYgIXNpbXBsZVwiXHJcbiAgICBbaWNvbl09XCInZnRvLWNoZXZyb25zLXJpZ2h0J1wiXHJcbiAgICBbdGl0bGVdPVwiJ3BhZ2luYXRpb24ubGFzdCcgfCB4STE4blwiXHJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgbGFzdEFjdGl2YXRlZFwiXHJcbiAgICAoY2xpY2spPVwianVtcChsYXN0SW5kZXgpXCJcclxuICA+PC94LWJ1dHRvbj5cclxuPC94LWJ1dHRvbnM+XHJcbjxuZy10ZW1wbGF0ZSAjc2ltcGxlVHBsPlxyXG4gIDxkaXYgY2xhc3M9XCJ4LXBhZ2luYXRpb24tc2ltcGxlXCI+XHJcbiAgICA8eC1pbnB1dFxyXG4gICAgICBbYm9yZGVyZWRdPVwiIWhpZGRlbkJvcmRlclwiXHJcbiAgICAgIFtiZWZvcmVdPVwicHJldmlvdXNUcGxcIlxyXG4gICAgICBbYWZ0ZXJdPVwibmV4dFRwbFwiXHJcbiAgICAgIFtzdHlsZS53aWR0aC5weF09XCJzaW1wbGVJbmRleFdpZHRoXCJcclxuICAgICAgWyhuZ01vZGVsKV09XCJpbmRleFwiXHJcbiAgICAgICh4S2V5ZG93bik9XCJvblNpbXBsZUtleWRvd24oJGV2ZW50KVwiXHJcbiAgICA+PC94LWlucHV0PlxyXG4gICAgPHNwYW4+Lzwvc3Bhbj5cclxuICAgIDxzcGFuPnt7IGxhc3RJbmRleCB9fTwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPHgtc2VsZWN0XHJcbiAgKm5nSWY9XCJzaG93U2l6ZSAmJiAhc2hvd0lucHV0U2l6ZVwiXHJcbiAgW3N0eWxlLndpZHRoLnB4XT1cInNpemVXaWR0aFwiXHJcbiAgY2xhc3M9XCJ4LXBhZ2luYXRpb24tc2l6ZVwiXHJcbiAgW2RhdGFdPVwic2l6ZURhdGFcIlxyXG4gIGNsZWFyYWJsZT1cImZhbHNlXCJcclxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gIFtib3JkZXJlZF09XCIhaGlkZGVuQm9yZGVyXCJcclxuICBbbm9kZVRwbF09XCJub2RlVHBsXCJcclxuICBbKG5nTW9kZWwpXT1cInNpemVcIlxyXG4gIChuZ01vZGVsQ2hhbmdlKT1cInNpemVDaGFuZ2VkKClcIlxyXG4+PC94LXNlbGVjdD5cclxuPGRpdiAqbmdJZj1cInNob3dJbnB1dFNpemVcIiBjbGFzcz1cIngtcGFnaW5hdGlvbi1pbnB1dC1zaXplXCI+XHJcbiAgPHgtaW5wdXRcclxuICAgIFtzdHlsZS53aWR0aC5weF09XCJpbnB1dFNpemVXaWR0aFwiXHJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgW2JvcmRlcmVkXT1cIiFoaWRkZW5Cb3JkZXJcIlxyXG4gICAgWyhuZ01vZGVsKV09XCJpbnB1dFNpemVcIlxyXG4gICAgKHhLZXlkb3duKT1cIm9uSW5wdXRTaXplS2V5ZG93bigkZXZlbnQpXCJcclxuICA+PC94LWlucHV0PlxyXG4gIDxzcGFuPiB7eyAncGFnaW5hdGlvbi5zaXplUGFnZScgfCB4STE4biB9fSA8L3NwYW4+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiAqbmdJZj1cInNob3dKdW1wICYmICFzaW1wbGVcIiBjbGFzcz1cIngtcGFnaW5hdGlvbi1qdW1wXCI+XHJcbiAgPHNwYW4+e3sgJ3BhZ2luYXRpb24uanVtcCcgfCB4STE4biB9fTwvc3Bhbj5cclxuICA8eC1pbnB1dCBbYm9yZGVyZWRdPVwiIWhpZGRlbkJvcmRlclwiIFtzdHlsZS53aWR0aC5weF09XCJqdW1wV2lkdGhcIiBbKG5nTW9kZWwpXT1cImp1bXBQYWdlXCIgKHhLZXlkb3duKT1cIm9uSnVtcEtleWRvd24oJGV2ZW50KVwiPjwveC1pbnB1dD5cclxuPC9kaXY+XHJcbjx4LWJ1dHRvbiAqbmdJZj1cInNob3dUb3RhbFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIGNsYXNzPVwieC1wYWdpbmF0aW9uLXRvdGFsXCIgW3R5cGVdPVwiaGlkZGVuQm9yZGVyID09PSB0cnVlID8gJ3RleHQnIDogJ2luaXRpYWwnXCJcclxuICA+PG5nLWNvbnRhaW5lciAqeE91dGxldD1cInRvdGFsVHBsOyBjb250ZXh0OiB7ICR0b3RhbDogdG90YWwgfVwiXHJcbiAgICA+e3sgJ3BhZ2luYXRpb24udG90YWwnIHwgeEkxOG4gfX0ge3sgdG90YWwgfX0ge3sgJ3BhZ2luYXRpb24uaXRlbScgfCB4STE4biB9fTwvbmctY29udGFpbmVyXHJcbiAgPjwveC1idXR0b25cclxuPlxyXG5cclxuPG5nLXRlbXBsYXRlICNwcmV2aW91c1RwbD5cclxuICA8eC1idXR0b25cclxuICAgIFt0eXBlXT1cImhpZGRlbkJvcmRlciA/ICd0ZXh0JyA6ICdpbml0aWFsJ1wiXHJcbiAgICBbaWNvbl09XCInZnRvLWNoZXZyb24tbGVmdCdcIlxyXG4gICAgW3RpdGxlXT1cIidwYWdpbmF0aW9uLnByZXZpb3VzJyB8IHhJMThuXCJcclxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBsZWZ0RGlzYWJsZWRcIlxyXG4gICAgKGNsaWNrKT1cImp1bXAoLTEsIHRydWUpXCJcclxuICA+PC94LWJ1dHRvbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbmV4dFRwbD5cclxuICA8eC1idXR0b25cclxuICAgIFt0eXBlXT1cImhpZGRlbkJvcmRlciA/ICd0ZXh0JyA6ICdpbml0aWFsJ1wiXHJcbiAgICBbaWNvbl09XCInZnRvLWNoZXZyb24tcmlnaHQnXCJcclxuICAgIFt0aXRsZV09XCIncGFnaW5hdGlvbi5uZXh0JyB8IHhJMThuXCJcclxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCByaWdodERpc2FibGVkXCJcclxuICAgIChjbGljayk9XCJqdW1wKDEsIHRydWUpXCJcclxuICA+PC94LWJ1dHRvbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbm9kZVRwbCBsZXQtbm9kZT1cIiRub2RlXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vZGVcIj4ge3sgbm9kZT8ubGFiZWwgfX0ge3sgJ3BhZ2luYXRpb24uc2l6ZVBhZ2UnIHwgeEkxOG4gfX0gPC9uZy1jb250YWluZXI+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
@@ -48,7 +48,7 @@ export class XPaginationProperty extends XProperty {
48
48
  }
49
49
  }
50
50
  /** @nocollapse */ XPaginationProperty.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XPaginationProperty, deps: null, target: i0.ɵɵFactoryTarget.Component });
51
- /** @nocollapse */ XPaginationProperty.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: XPaginationProperty, selector: "ng-component", inputs: { index: "index", size: "size", total: "total", query: "query", pageLinkSize: "pageLinkSize", showEllipsis: "showEllipsis", showTotal: "showTotal", space: "space", hiddenBorder: "hiddenBorder", showSize: "showSize", sizeWidth: "sizeWidth", sizeData: "sizeData", disabled: "disabled", showJump: "showJump", jumpWidth: "jumpWidth", totalTpl: "totalTpl", simple: "simple", simpleIndexWidth: "simpleIndexWidth" }, outputs: { queryChange: "queryChange", indexChange: "indexChange", sizeChange: "sizeChange" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
51
+ /** @nocollapse */ XPaginationProperty.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: XPaginationProperty, selector: "ng-component", inputs: { index: "index", size: "size", total: "total", query: "query", pageLinkSize: "pageLinkSize", showEllipsis: "showEllipsis", showTotal: "showTotal", space: "space", hiddenBorder: "hiddenBorder", showSize: "showSize", sizeWidth: "sizeWidth", showInputSize: "showInputSize", inputSizeWidth: "inputSizeWidth", sizeData: "sizeData", disabled: "disabled", showJump: "showJump", jumpWidth: "jumpWidth", totalTpl: "totalTpl", simple: "simple", simpleIndexWidth: "simpleIndexWidth" }, outputs: { queryChange: "queryChange", indexChange: "indexChange", sizeChange: "sizeChange" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
52
52
  __decorate([
53
53
  XWithConfig(X_CONFIG_NAME, 1),
54
54
  XInputNumber()
@@ -85,9 +85,17 @@ __decorate([
85
85
  XInputBoolean()
86
86
  ], XPaginationProperty.prototype, "showSize", void 0);
87
87
  __decorate([
88
- XWithConfig(X_CONFIG_NAME, 100),
88
+ XWithConfig(X_CONFIG_NAME, 110),
89
89
  XInputNumber()
90
90
  ], XPaginationProperty.prototype, "sizeWidth", void 0);
91
+ __decorate([
92
+ XWithConfig(X_CONFIG_NAME, false),
93
+ XInputBoolean()
94
+ ], XPaginationProperty.prototype, "showInputSize", void 0);
95
+ __decorate([
96
+ XWithConfig(X_CONFIG_NAME, 50),
97
+ XInputNumber()
98
+ ], XPaginationProperty.prototype, "inputSizeWidth", void 0);
91
99
  __decorate([
92
100
  XWithConfig(X_CONFIG_NAME, XPaginationSizeData)
93
101
  ], XPaginationProperty.prototype, "sizeData", void 0);
@@ -135,6 +143,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImpor
135
143
  type: Input
136
144
  }], sizeWidth: [{
137
145
  type: Input
146
+ }], showInputSize: [{
147
+ type: Input
148
+ }], inputSizeWidth: [{
149
+ type: Input
138
150
  }], sizeData: [{
139
151
  type: Input
140
152
  }], disabled: [{
@@ -156,4 +168,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImpor
156
168
  }], sizeChange: [{
157
169
  type: Output
158
170
  }] } });
159
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5wcm9wZXJ0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5wcm9wZXJ0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQW1CLFdBQVcsRUFBWSxhQUFhLEVBQW9CLE1BQU0sa0JBQWtCLENBQUM7QUFDcEksT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHdkU7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGNBQWMsQ0FBQztBQUNoRCxNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUM7QUFFbkM7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUVyRDs7R0FFRztBQUVILE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxTQUFTO0lBRGxEOztRQVlFOzs7V0FHRztRQUNzQixVQUFLLEdBQVksQ0FBQyxDQUFDO1FBQzVDOzs7V0FHRztRQUNNLFVBQUssR0FBVyxFQUFFLENBQUM7UUF1RTVCOzs7V0FHRztRQUNPLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNuRDs7O1dBR0c7UUFDTyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDbkQ7OztXQUdHO1FBQ08sZUFBVSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7S0FDbkQ7O21JQTFHWSxtQkFBbUI7dUhBQW5CLG1CQUFtQiw0a0JBRFQsRUFBRTtBQU0wQztJQUF2RCxXQUFXLENBQVUsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUFFLFlBQVksRUFBRTtrREFBaUI7QUFLZjtJQUF4RCxXQUFXLENBQVUsYUFBYSxFQUFFLEVBQUUsQ0FBQztJQUFFLFlBQVksRUFBRTtpREFBZ0I7QUFLeEQ7SUFBZixZQUFZLEVBQUU7a0RBQW9CO0FBVXFCO0lBQXZELFdBQVcsQ0FBVSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQUUsWUFBWSxFQUFFO3lEQUF3QjtBQUtsQjtJQUE1RCxXQUFXLENBQVcsYUFBYSxFQUFFLElBQUksQ0FBQztJQUFFLGFBQWEsRUFBRTt5REFBeUI7QUFLeEI7SUFBNUQsV0FBVyxDQUFXLGFBQWEsRUFBRSxJQUFJLENBQUM7SUFBRSxhQUFhLEVBQUU7c0RBQXNCO0FBSzFCO0lBQXZELFdBQVcsQ0FBVSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQUUsWUFBWSxFQUFFO2tEQUFpQjtBQUtWO0lBQTdELFdBQVcsQ0FBVyxhQUFhLEVBQUUsS0FBSyxDQUFDO0lBQUUsYUFBYSxFQUFFO3lEQUF5QjtBQUt4QjtJQUE3RCxXQUFXLENBQVcsYUFBYSxFQUFFLEtBQUssQ0FBQztJQUFFLGFBQWEsRUFBRTtxREFBcUI7QUFLeEI7SUFBekQsV0FBVyxDQUFVLGFBQWEsRUFBRSxHQUFHLENBQUM7SUFBRSxZQUFZLEVBQUU7c0RBQXFCO0FBS1Q7SUFBcEUsV0FBVyxDQUFxQixhQUFhLEVBQUUsbUJBQW1CLENBQUM7cURBQStCO0FBS2xGO0lBQWhCLGFBQWEsRUFBRTtxREFBcUI7QUFLeUI7SUFBN0QsV0FBVyxDQUFXLGFBQWEsRUFBRSxLQUFLLENBQUM7SUFBRSxhQUFhLEVBQUU7cURBQXFCO0FBS3pCO0lBQXhELFdBQVcsQ0FBVSxhQUFhLEVBQUUsRUFBRSxDQUFDO0lBQUUsWUFBWSxFQUFFO3NEQUFxQjtBQVVmO0lBQTdELFdBQVcsQ0FBVyxhQUFhLEVBQUUsS0FBSyxDQUFDO0lBQUUsYUFBYSxFQUFFO21EQUFtQjtBQUt0QjtJQUF6RCxXQUFXLENBQVUsYUFBYSxFQUFFLEdBQUcsQ0FBQztJQUFFLFlBQVksRUFBRTs2REFBNEI7MkZBMUZuRixtQkFBbUI7a0JBRC9CLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFOzhCQU13QyxLQUFLO3NCQUFyRSxLQUFLO2dCQUs0RCxJQUFJO3NCQUFyRSxLQUFLO2dCQUttQixLQUFLO3NCQUE3QixLQUFLO2dCQUtHLEtBQUs7c0JBQWIsS0FBSztnQkFLMkQsWUFBWTtzQkFBNUUsS0FBSztnQkFLZ0UsWUFBWTtzQkFBakYsS0FBSztnQkFLZ0UsU0FBUztzQkFBOUUsS0FBSztnQkFLMkQsS0FBSztzQkFBckUsS0FBSztnQkFLaUUsWUFBWTtzQkFBbEYsS0FBSztnQkFLaUUsUUFBUTtzQkFBOUUsS0FBSztnQkFLNkQsU0FBUztzQkFBM0UsS0FBSztnQkFLd0UsUUFBUTtzQkFBckYsS0FBSztnQkFLb0IsUUFBUTtzQkFBakMsS0FBSztnQkFLaUUsUUFBUTtzQkFBOUUsS0FBSztnQkFLNEQsU0FBUztzQkFBMUUsS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtpRSxNQUFNO3NCQUE1RSxLQUFLO2dCQUs2RCxnQkFBZ0I7c0JBQWxGLEtBQUs7Z0JBS0ksV0FBVztzQkFBcEIsTUFBTTtnQkFLRyxXQUFXO3NCQUFwQixNQUFNO2dCQUtHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBYUHJvcGVydHksIFhJbnB1dE51bWJlciwgWE51bWJlciwgWFF1ZXJ5LCBYV2l0aENvbmZpZywgWEJvb2xlYW4sIFhJbnB1dEJvb2xlYW4sIFhEYXRhLCBYVGVtcGxhdGUgfSBmcm9tICdAbmctbmVzdC91aS9jb3JlJztcclxuaW1wb3J0IHsgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWFNlbGVjdE5vZGUgfSBmcm9tICdAbmctbmVzdC91aS9zZWxlY3QnO1xyXG5cclxuLyoqXHJcbiAqIFBhZ2luYXRpb25cclxuICogQHNlbGVjdG9yIHgtcGFnaW5hdGlvblxyXG4gKiBAZGVjb3JhdG9yIGNvbXBvbmVudFxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFhQYWdpbmF0aW9uUHJlZml4ID0gJ3gtcGFnaW5hdGlvbic7XHJcbmNvbnN0IFhfQ09ORklHX05BTUUgPSAncGFnaW5hdGlvbic7XHJcblxyXG4vKipcclxuICogQHpoX0NOIOWIhumhtemAieaLqeadoeaVsFxyXG4gKiBAZW5fVVMgU3ViLXNlbGVjdGlvblxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFhQYWdpbmF0aW9uU2l6ZURhdGEgPSBbMTAsIDIwLCA1MCwgMTAwXTtcclxuXHJcbi8qKlxyXG4gKiBQYWdpbmF0aW9uIFByb3BlcnR5XHJcbiAqL1xyXG5AQ29tcG9uZW50KHsgdGVtcGxhdGU6ICcnIH0pXHJcbmV4cG9ydCBjbGFzcyBYUGFnaW5hdGlvblByb3BlcnR5IGV4dGVuZHMgWFByb3BlcnR5IHtcclxuICAvKipcclxuICAgKiBAemhfQ04g5b2T5YmN6aG156CBXHJcbiAgICogQGVuX1VTIEN1cnJlbnQgcGFnZSBudW1iZXJcclxuICAgKi9cclxuICBASW5wdXQoKSBAWFdpdGhDb25maWc8WE51bWJlcj4oWF9DT05GSUdfTkFNRSwgMSkgQFhJbnB1dE51bWJlcigpIGluZGV4ITogWE51bWJlcjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5q+P6aG15pi+56S65p2h5pWwXHJcbiAgICogQGVuX1VTIE51bWJlciBvZiBpdGVtcyBkaXNwbGF5ZWQgcGVyIHBhZ2VcclxuICAgKi9cclxuICBASW5wdXQoKSBAWFdpdGhDb25maWc8WE51bWJlcj4oWF9DT05GSUdfTkFNRSwgMTApIEBYSW5wdXROdW1iZXIoKSBzaXplITogWE51bWJlcjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5oC75pWwXHJcbiAgICogQGVuX1VTIFRvdGFsXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhJbnB1dE51bWJlcigpIHRvdGFsOiBYTnVtYmVyID0gMDtcclxuICAvKipcclxuICAgKiBAemhfQ04g5p+l6K+i5p2h5Lu2XHJcbiAgICogQGVuX1VTIFF1ZXJ5IGNvbmRpdGlvbnNcclxuICAgKi9cclxuICBASW5wdXQoKSBxdWVyeTogWFF1ZXJ5ID0ge307XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOacgOWkmuaYvuekuueahOWIhumhteaVsOmHj1xyXG4gICAqIEBlbl9VUyBUaGUgbGFyZ2VzdCBudW1iZXIgb2YgcGFnZXMgZGlzcGxheVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYV2l0aENvbmZpZzxYTnVtYmVyPihYX0NPTkZJR19OQU1FLCA1KSBAWElucHV0TnVtYmVyKCkgcGFnZUxpbmtTaXplITogWE51bWJlcjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5pi+56S66aaW5bC+6aG16Lez6L2sXHJcbiAgICogQGVuX1VTIERpc3BsYXkgdGhlIGZpcnN0IGFuZCBsYXN0IHBhZ2VcclxuICAgKi9cclxuICBASW5wdXQoKSBAWFdpdGhDb25maWc8WEJvb2xlYW4+KFhfQ09ORklHX05BTUUsIHRydWUpIEBYSW5wdXRCb29sZWFuKCkgc2hvd0VsbGlwc2lzITogWEJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOaYvuekuuaAu+adoeaVsFxyXG4gICAqIEBlbl9VUyBEaXNwbGF5IHRoZSB0b3RhbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYV2l0aENvbmZpZzxYQm9vbGVhbj4oWF9DT05GSUdfTkFNRSwgdHJ1ZSkgQFhJbnB1dEJvb2xlYW4oKSBzaG93VG90YWwhOiBYQm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5oyJ6ZKu6Ze06Led77yM5Y2V5L2NIHJlbSDvvIjmjIkgMXJlbSA9IDE2cHgg5q+U5L6L5p2l6K6h566X77yJXHJcbiAgICogQGVuX1VTIEJ1dHRvbiBzcGFjaW5nLCB1bml0IHJlbSAoY2FsY3VsYXRlZCBhY2NvcmRpbmcgdG8gdGhlIHJhdGlvIG9mIDFyZW0gPSAxNnB4KVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYV2l0aENvbmZpZzxYTnVtYmVyPihYX0NPTkZJR19OQU1FLCAwKSBAWElucHV0TnVtYmVyKCkgc3BhY2UhOiBYTnVtYmVyO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDpmpDol4/ovrnmoYZcclxuICAgKiBAZW5fVVMgSGlkZSBib3JkZXJcclxuICAgKi9cclxuICBASW5wdXQoKSBAWFdpdGhDb25maWc8WEJvb2xlYW4+KFhfQ09ORklHX05BTUUsIGZhbHNlKSBAWElucHV0Qm9vbGVhbigpIGhpZGRlbkJvcmRlciE6IFhCb29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmmL7npLrliIbpobXmnaHmlbBcclxuICAgKiBAZW5fVVMgU2hvdyBzaXplXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhXaXRoQ29uZmlnPFhCb29sZWFuPihYX0NPTkZJR19OQU1FLCBmYWxzZSkgQFhJbnB1dEJvb2xlYW4oKSBzaG93U2l6ZSE6IFhCb29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDliIbpobXmnaHmlbDnmoTlrr3luqZcclxuICAgKiBAZW5fVVMgc2l6ZSB3aXRoXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhXaXRoQ29uZmlnPFhOdW1iZXI+KFhfQ09ORklHX05BTUUsIDEwMCkgQFhJbnB1dE51bWJlcigpIHNpemVXaWR0aCE6IFhOdW1iZXI7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWIhumhteadoeaVsOeahOWuveW6plxyXG4gICAqIEBlbl9VUyBzaXplIHdpdGhcclxuICAgKi9cclxuICBASW5wdXQoKSBAWFdpdGhDb25maWc8WERhdGE8WFNlbGVjdE5vZGU+PihYX0NPTkZJR19OQU1FLCBYUGFnaW5hdGlvblNpemVEYXRhKSBzaXplRGF0YSE6IFhEYXRhPFhTZWxlY3ROb2RlPjtcclxuICAvKipcclxuICAgKiBAemhfQ04g56aB55So5pW05Liq5YiG6aG1XHJcbiAgICogQGVuX1VTIGRpc2FibGVkXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhJbnB1dEJvb2xlYW4oKSBkaXNhYmxlZCE6IFhCb29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmmL7npLrot7PovazovpPlhaXmoYZcclxuICAgKiBAZW5fVVMgU2hvdyBzaXplXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhXaXRoQ29uZmlnPFhCb29sZWFuPihYX0NPTkZJR19OQU1FLCBmYWxzZSkgQFhJbnB1dEJvb2xlYW4oKSBzaG93SnVtcCE6IFhCb29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDot7PovazpobXnmoTlrr3luqZcclxuICAgKiBAZW5fVVMgc2l6ZSB3aXRoXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhXaXRoQ29uZmlnPFhOdW1iZXI+KFhfQ09ORklHX05BTUUsIDUwKSBAWElucHV0TnVtYmVyKCkganVtcFdpZHRoITogWE51bWJlcjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5oC75pWw6Ieq5a6a5LmJ5qih5p2/XHJcbiAgICogQGVuX1VTIFRvdGFsIHRlbXBsYXRlXHJcbiAgICovXHJcbiAgQElucHV0KCkgdG90YWxUcGw/OiBYVGVtcGxhdGU7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOeugOWNleWIhumhtVxyXG4gICAqIEBlbl9VUyBTaW1wbGVcclxuICAgKi9cclxuICBASW5wdXQoKSBAWFdpdGhDb25maWc8WEJvb2xlYW4+KFhfQ09ORklHX05BTUUsIGZhbHNlKSBAWElucHV0Qm9vbGVhbigpIHNpbXBsZSE6IFhCb29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDnroDljZXliIbpobXovpPlhaXmoYblrr3luqZcclxuICAgKiBAZW5fVVMgU2ltcGxlIGluZGV4IHdpdGhcclxuICAgKi9cclxuICBASW5wdXQoKSBAWFdpdGhDb25maWc8WE51bWJlcj4oWF9DT05GSUdfTkFNRSwgMTMwKSBAWElucHV0TnVtYmVyKCkgc2ltcGxlSW5kZXhXaWR0aCE6IFhOdW1iZXI7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOmhteeggeWPmOWMlueahOS6i+S7tlxyXG4gICAqIEBlbl9VUyBQYWdlIG51bWJlciBjaGFuZ2UgZXZlbnRcclxuICAgKi9cclxuICBAT3V0cHV0KCkgcXVlcnlDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFhRdWVyeT4oKTtcclxuICAvKipcclxuICAgKiBAemhfQ04g6aG156CB5Y+Y5YyW55qE5LqL5Lu2XHJcbiAgICogQGVuX1VTIFBhZ2UgbnVtYmVyIGNoYW5nZSBldmVudFxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBpbmRleENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmr4/pobXmmL7npLrmnaHmlbDlj5jljJbnmoTkuovku7ZcclxuICAgKiBAZW5fVVMgU2hvdyB0aGUgbnVtYmVyIG9mIGV2ZW50cyBvbiBlYWNoIHBhZ2VcclxuICAgKi9cclxuICBAT3V0cHV0KCkgc2l6ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG59XHJcblxyXG4vKipcclxuICogUGFnaW5hdGlvbk9wdGlvblxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBYUGFnaW5hdGlvbk9wdGlvbiB7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOW9k+WJjemhteeggVxyXG4gICAqIEBlbl9VUyBDdXJyZW50IHBhZ2UgbnVtYmVyXHJcbiAgICovXHJcbiAgaW5kZXg/OiBYTnVtYmVyO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmr4/pobXmmL7npLrmnaHmlbBcclxuICAgKiBAZW5fVVMgTnVtYmVyIG9mIGl0ZW1zIGRpc3BsYXllZCBwZXIgcGFnZVxyXG4gICAqL1xyXG4gIHNpemU/OiBYTnVtYmVyO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmgLvmlbBcclxuICAgKiBAZW5fVVMgdG90YWxcclxuICAgKi9cclxuICB0b3RhbD86IFhOdW1iZXI7XHJcbn1cclxuIl19
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5wcm9wZXJ0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5wcm9wZXJ0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQW1CLFdBQVcsRUFBWSxhQUFhLEVBQW9CLE1BQU0sa0JBQWtCLENBQUM7QUFDcEksT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHdkU7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGNBQWMsQ0FBQztBQUNoRCxNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUM7QUFFbkM7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUVyRDs7R0FFRztBQUVILE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxTQUFTO0lBRGxEOztRQVlFOzs7V0FHRztRQUNzQixVQUFLLEdBQVksQ0FBQyxDQUFDO1FBQzVDOzs7V0FHRztRQUNNLFVBQUssR0FBVyxFQUFFLENBQUM7UUFpRjVCOzs7V0FHRztRQUNPLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNuRDs7O1dBR0c7UUFDTyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDbkQ7OztXQUdHO1FBQ08sZUFBVSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7S0FDbkQ7O21JQXBIWSxtQkFBbUI7dUhBQW5CLG1CQUFtQiw4b0JBRFQsRUFBRTtBQU0wQztJQUF2RCxXQUFXLENBQVUsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUFFLFlBQVksRUFBRTtrREFBaUI7QUFLZjtJQUF4RCxXQUFXLENBQVUsYUFBYSxFQUFFLEVBQUUsQ0FBQztJQUFFLFlBQVksRUFBRTtpREFBZ0I7QUFLeEQ7SUFBZixZQUFZLEVBQUU7a0RBQW9CO0FBVXFCO0lBQXZELFdBQVcsQ0FBVSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQUUsWUFBWSxFQUFFO3lEQUF3QjtBQUtsQjtJQUE1RCxXQUFXLENBQVcsYUFBYSxFQUFFLElBQUksQ0FBQztJQUFFLGFBQWEsRUFBRTt5REFBeUI7QUFLeEI7SUFBNUQsV0FBVyxDQUFXLGFBQWEsRUFBRSxJQUFJLENBQUM7SUFBRSxhQUFhLEVBQUU7c0RBQXNCO0FBSzFCO0lBQXZELFdBQVcsQ0FBVSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQUUsWUFBWSxFQUFFO2tEQUFpQjtBQUtWO0lBQTdELFdBQVcsQ0FBVyxhQUFhLEVBQUUsS0FBSyxDQUFDO0lBQUUsYUFBYSxFQUFFO3lEQUF5QjtBQUt4QjtJQUE3RCxXQUFXLENBQVcsYUFBYSxFQUFFLEtBQUssQ0FBQztJQUFFLGFBQWEsRUFBRTtxREFBcUI7QUFLeEI7SUFBekQsV0FBVyxDQUFVLGFBQWEsRUFBRSxHQUFHLENBQUM7SUFBRSxZQUFZLEVBQUU7c0RBQXFCO0FBS2hCO0lBQTdELFdBQVcsQ0FBVyxhQUFhLEVBQUUsS0FBSyxDQUFDO0lBQUUsYUFBYSxFQUFFOzBEQUEwQjtBQUs5QjtJQUF4RCxXQUFXLENBQVUsYUFBYSxFQUFFLEVBQUUsQ0FBQztJQUFFLFlBQVksRUFBRTsyREFBMEI7QUFLYjtJQUFwRSxXQUFXLENBQXFCLGFBQWEsRUFBRSxtQkFBbUIsQ0FBQztxREFBK0I7QUFLbEY7SUFBaEIsYUFBYSxFQUFFO3FEQUFxQjtBQUt5QjtJQUE3RCxXQUFXLENBQVcsYUFBYSxFQUFFLEtBQUssQ0FBQztJQUFFLGFBQWEsRUFBRTtxREFBcUI7QUFLekI7SUFBeEQsV0FBVyxDQUFVLGFBQWEsRUFBRSxFQUFFLENBQUM7SUFBRSxZQUFZLEVBQUU7c0RBQXFCO0FBVWY7SUFBN0QsV0FBVyxDQUFXLGFBQWEsRUFBRSxLQUFLLENBQUM7SUFBRSxhQUFhLEVBQUU7bURBQW1CO0FBS3RCO0lBQXpELFdBQVcsQ0FBVSxhQUFhLEVBQUUsR0FBRyxDQUFDO0lBQUUsWUFBWSxFQUFFOzZEQUE0QjsyRkFwR25GLG1CQUFtQjtrQkFEL0IsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUU7OEJBTXdDLEtBQUs7c0JBQXJFLEtBQUs7Z0JBSzRELElBQUk7c0JBQXJFLEtBQUs7Z0JBS21CLEtBQUs7c0JBQTdCLEtBQUs7Z0JBS0csS0FBSztzQkFBYixLQUFLO2dCQUsyRCxZQUFZO3NCQUE1RSxLQUFLO2dCQUtnRSxZQUFZO3NCQUFqRixLQUFLO2dCQUtnRSxTQUFTO3NCQUE5RSxLQUFLO2dCQUsyRCxLQUFLO3NCQUFyRSxLQUFLO2dCQUtpRSxZQUFZO3NCQUFsRixLQUFLO2dCQUtpRSxRQUFRO3NCQUE5RSxLQUFLO2dCQUs2RCxTQUFTO3NCQUEzRSxLQUFLO2dCQUtpRSxhQUFhO3NCQUFuRixLQUFLO2dCQUs0RCxjQUFjO3NCQUEvRSxLQUFLO2dCQUt3RSxRQUFRO3NCQUFyRixLQUFLO2dCQUtvQixRQUFRO3NCQUFqQyxLQUFLO2dCQUtpRSxRQUFRO3NCQUE5RSxLQUFLO2dCQUs0RCxTQUFTO3NCQUExRSxLQUFLO2dCQUtHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBS2lFLE1BQU07c0JBQTVFLEtBQUs7Z0JBSzZELGdCQUFnQjtzQkFBbEYsS0FBSztnQkFLSSxXQUFXO3NCQUFwQixNQUFNO2dCQUtHLFdBQVc7c0JBQXBCLE1BQU07Z0JBS0csVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFhQcm9wZXJ0eSwgWElucHV0TnVtYmVyLCBYTnVtYmVyLCBYUXVlcnksIFhXaXRoQ29uZmlnLCBYQm9vbGVhbiwgWElucHV0Qm9vbGVhbiwgWERhdGEsIFhUZW1wbGF0ZSB9IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBYU2VsZWN0Tm9kZSB9IGZyb20gJ0BuZy1uZXN0L3VpL3NlbGVjdCc7XHJcblxyXG4vKipcclxuICogUGFnaW5hdGlvblxyXG4gKiBAc2VsZWN0b3IgeC1wYWdpbmF0aW9uXHJcbiAqIEBkZWNvcmF0b3IgY29tcG9uZW50XHJcbiAqL1xyXG5leHBvcnQgY29uc3QgWFBhZ2luYXRpb25QcmVmaXggPSAneC1wYWdpbmF0aW9uJztcclxuY29uc3QgWF9DT05GSUdfTkFNRSA9ICdwYWdpbmF0aW9uJztcclxuXHJcbi8qKlxyXG4gKiBAemhfQ04g5YiG6aG16YCJ5oup5p2h5pWwXHJcbiAqIEBlbl9VUyBTdWItc2VsZWN0aW9uXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgWFBhZ2luYXRpb25TaXplRGF0YSA9IFsxMCwgMjAsIDUwLCAxMDBdO1xyXG5cclxuLyoqXHJcbiAqIFBhZ2luYXRpb24gUHJvcGVydHlcclxuICovXHJcbkBDb21wb25lbnQoeyB0ZW1wbGF0ZTogJycgfSlcclxuZXhwb3J0IGNsYXNzIFhQYWdpbmF0aW9uUHJvcGVydHkgZXh0ZW5kcyBYUHJvcGVydHkge1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDlvZPliY3pobXnoIFcclxuICAgKiBAZW5fVVMgQ3VycmVudCBwYWdlIG51bWJlclxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYV2l0aENvbmZpZzxYTnVtYmVyPihYX0NPTkZJR19OQU1FLCAxKSBAWElucHV0TnVtYmVyKCkgaW5kZXghOiBYTnVtYmVyO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmr4/pobXmmL7npLrmnaHmlbBcclxuICAgKiBAZW5fVVMgTnVtYmVyIG9mIGl0ZW1zIGRpc3BsYXllZCBwZXIgcGFnZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYV2l0aENvbmZpZzxYTnVtYmVyPihYX0NPTkZJR19OQU1FLCAxMCkgQFhJbnB1dE51bWJlcigpIHNpemUhOiBYTnVtYmVyO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmgLvmlbBcclxuICAgKiBAZW5fVVMgVG90YWxcclxuICAgKi9cclxuICBASW5wdXQoKSBAWElucHV0TnVtYmVyKCkgdG90YWw6IFhOdW1iZXIgPSAwO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmn6Xor6LmnaHku7ZcclxuICAgKiBAZW5fVVMgUXVlcnkgY29uZGl0aW9uc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHF1ZXJ5OiBYUXVlcnkgPSB7fTtcclxuICAvKipcclxuICAgKiBAemhfQ04g5pyA5aSa5pi+56S655qE5YiG6aG15pWw6YePXHJcbiAgICogQGVuX1VTIFRoZSBsYXJnZXN0IG51bWJlciBvZiBwYWdlcyBkaXNwbGF5XHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhXaXRoQ29uZmlnPFhOdW1iZXI+KFhfQ09ORklHX05BTUUsIDUpIEBYSW5wdXROdW1iZXIoKSBwYWdlTGlua1NpemUhOiBYTnVtYmVyO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmmL7npLrpppblsL7pobXot7PovaxcclxuICAgKiBAZW5fVVMgRGlzcGxheSB0aGUgZmlyc3QgYW5kIGxhc3QgcGFnZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYV2l0aENvbmZpZzxYQm9vbGVhbj4oWF9DT05GSUdfTkFNRSwgdHJ1ZSkgQFhJbnB1dEJvb2xlYW4oKSBzaG93RWxsaXBzaXMhOiBYQm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5pi+56S65oC75p2h5pWwXHJcbiAgICogQGVuX1VTIERpc3BsYXkgdGhlIHRvdGFsXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhXaXRoQ29uZmlnPFhCb29sZWFuPihYX0NPTkZJR19OQU1FLCB0cnVlKSBAWElucHV0Qm9vbGVhbigpIHNob3dUb3RhbCE6IFhCb29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmjInpkq7pl7Tot53vvIzljZXkvY0gcmVtIO+8iOaMiSAxcmVtID0gMTZweCDmr5TkvovmnaXorqHnrpfvvIlcclxuICAgKiBAZW5fVVMgQnV0dG9uIHNwYWNpbmcsIHVuaXQgcmVtIChjYWxjdWxhdGVkIGFjY29yZGluZyB0byB0aGUgcmF0aW8gb2YgMXJlbSA9IDE2cHgpXHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhXaXRoQ29uZmlnPFhOdW1iZXI+KFhfQ09ORklHX05BTUUsIDApIEBYSW5wdXROdW1iZXIoKSBzcGFjZSE6IFhOdW1iZXI7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOmakOiXj+i+ueahhlxyXG4gICAqIEBlbl9VUyBIaWRlIGJvcmRlclxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYV2l0aENvbmZpZzxYQm9vbGVhbj4oWF9DT05GSUdfTkFNRSwgZmFsc2UpIEBYSW5wdXRCb29sZWFuKCkgaGlkZGVuQm9yZGVyITogWEJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOaYvuekuuWIhumhteadoeaVsFxyXG4gICAqIEBlbl9VUyBTaG93IHNpemVcclxuICAgKi9cclxuICBASW5wdXQoKSBAWFdpdGhDb25maWc8WEJvb2xlYW4+KFhfQ09ORklHX05BTUUsIGZhbHNlKSBAWElucHV0Qm9vbGVhbigpIHNob3dTaXplITogWEJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWIhumhteadoeaVsOmAieaLqeahhueahOWuveW6plxyXG4gICAqIEBlbl9VUyBzaXplIHdpdGggc2VsZWN0XHJcbiAgICovXHJcbiAgQElucHV0KCkgQFhXaXRoQ29uZmlnPFhOdW1iZXI+KFhfQ09ORklHX05BTUUsIDExMCkgQFhJbnB1dE51bWJlcigpIHNpemVXaWR0aCE6IFhOdW1iZXI7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOaYvuekuui+k+WFpeWIhumhteadoeaVsO+8iOS4jeiDvei3n+S4i+aLiemAiemhueWQjOaXtuS9v+eUqO+8iVxyXG4gICAqIEBlbl9VUyBEaXNwbGF5IHRoZSBudW1iZXIgb2YgaW5wdXQgcGFnZSBicmVha3MgKGNhbm5vdCBleGlzdCB3aXRoIHRoZSBkcm9wLWRvd24gb3B0aW9ucyBvZiBwYWdlIGJyZWFrcylcclxuICAgKi9cclxuICBASW5wdXQoKSBAWFdpdGhDb25maWc8WEJvb2xlYW4+KFhfQ09ORklHX05BTUUsIGZhbHNlKSBAWElucHV0Qm9vbGVhbigpIHNob3dJbnB1dFNpemUhOiBYQm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5YiG6aG15p2h5pWw6L6T5YWl5qGG55qE5a695bqmXHJcbiAgICogQGVuX1VTIHNpemUgd2l0aCBpbnB1dFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYV2l0aENvbmZpZzxYTnVtYmVyPihYX0NPTkZJR19OQU1FLCA1MCkgQFhJbnB1dE51bWJlcigpIGlucHV0U2l6ZVdpZHRoITogWE51bWJlcjtcclxuICAvKipcclxuICAgKiBAemhfQ04g5YiG6aG15p2h5pWw55qE5a695bqmXHJcbiAgICogQGVuX1VTIHNpemUgd2l0aFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYV2l0aENvbmZpZzxYRGF0YTxYU2VsZWN0Tm9kZT4+KFhfQ09ORklHX05BTUUsIFhQYWdpbmF0aW9uU2l6ZURhdGEpIHNpemVEYXRhITogWERhdGE8WFNlbGVjdE5vZGU+O1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDnpoHnlKjmlbTkuKrliIbpobVcclxuICAgKiBAZW5fVVMgZGlzYWJsZWRcclxuICAgKi9cclxuICBASW5wdXQoKSBAWElucHV0Qm9vbGVhbigpIGRpc2FibGVkITogWEJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOaYvuekuui3s+i9rOi+k+WFpeahhlxyXG4gICAqIEBlbl9VUyBTaG93IHNpemVcclxuICAgKi9cclxuICBASW5wdXQoKSBAWFdpdGhDb25maWc8WEJvb2xlYW4+KFhfQ09ORklHX05BTUUsIGZhbHNlKSBAWElucHV0Qm9vbGVhbigpIHNob3dKdW1wITogWEJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOi3s+i9rOmhteeahOWuveW6plxyXG4gICAqIEBlbl9VUyBzaXplIHdpdGhcclxuICAgKi9cclxuICBASW5wdXQoKSBAWFdpdGhDb25maWc8WE51bWJlcj4oWF9DT05GSUdfTkFNRSwgNTApIEBYSW5wdXROdW1iZXIoKSBqdW1wV2lkdGghOiBYTnVtYmVyO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDmgLvmlbDoh6rlrprkuYnmqKHmnb9cclxuICAgKiBAZW5fVVMgVG90YWwgdGVtcGxhdGVcclxuICAgKi9cclxuICBASW5wdXQoKSB0b3RhbFRwbD86IFhUZW1wbGF0ZTtcclxuICAvKipcclxuICAgKiBAemhfQ04g566A5Y2V5YiG6aG1XHJcbiAgICogQGVuX1VTIFNpbXBsZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYV2l0aENvbmZpZzxYQm9vbGVhbj4oWF9DT05GSUdfTkFNRSwgZmFsc2UpIEBYSW5wdXRCb29sZWFuKCkgc2ltcGxlITogWEJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOeugOWNleWIhumhtei+k+WFpeahhuWuveW6plxyXG4gICAqIEBlbl9VUyBTaW1wbGUgaW5kZXggd2l0aFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYV2l0aENvbmZpZzxYTnVtYmVyPihYX0NPTkZJR19OQU1FLCAxMzApIEBYSW5wdXROdW1iZXIoKSBzaW1wbGVJbmRleFdpZHRoITogWE51bWJlcjtcclxuICAvKipcclxuICAgKiBAemhfQ04g6aG156CB5Y+Y5YyW55qE5LqL5Lu2XHJcbiAgICogQGVuX1VTIFBhZ2UgbnVtYmVyIGNoYW5nZSBldmVudFxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBxdWVyeUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8WFF1ZXJ5PigpO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDpobXnoIHlj5jljJbnmoTkuovku7ZcclxuICAgKiBAZW5fVVMgUGFnZSBudW1iZXIgY2hhbmdlIGV2ZW50XHJcbiAgICovXHJcbiAgQE91dHB1dCgpIGluZGV4Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOavj+mhteaYvuekuuadoeaVsOWPmOWMlueahOS6i+S7tlxyXG4gICAqIEBlbl9VUyBTaG93IHRoZSBudW1iZXIgb2YgZXZlbnRzIG9uIGVhY2ggcGFnZVxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBzaXplQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBQYWdpbmF0aW9uT3B0aW9uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFhQYWdpbmF0aW9uT3B0aW9uIHtcclxuICAvKipcclxuICAgKiBAemhfQ04g5b2T5YmN6aG156CBXHJcbiAgICogQGVuX1VTIEN1cnJlbnQgcGFnZSBudW1iZXJcclxuICAgKi9cclxuICBpbmRleD86IFhOdW1iZXI7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOavj+mhteaYvuekuuadoeaVsFxyXG4gICAqIEBlbl9VUyBOdW1iZXIgb2YgaXRlbXMgZGlzcGxheWVkIHBlciBwYWdlXHJcbiAgICovXHJcbiAgc2l6ZT86IFhOdW1iZXI7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOaAu+aVsFxyXG4gICAqIEBlbl9VUyB0b3RhbFxyXG4gICAqL1xyXG4gIHRvdGFsPzogWE51bWJlcjtcclxufVxyXG4iXX0=
@@ -85,8 +85,8 @@ export class XTableBodyComponent extends XTableBodyProperty {
85
85
  const ele = x.srcElement;
86
86
  this.table.scrollTop = ele.scrollTop;
87
87
  this.table.scrollLeft = ele.scrollLeft;
88
- if (ele.scrollLeft >= 0 && this.table.thead.length > 0) {
89
- for (let thead of this.table.thead) {
88
+ if (ele.scrollLeft >= 0 && this.table.theads.length > 0) {
89
+ for (let thead of this.table.theads) {
90
90
  thead.nativeElement.scrollLeft = this.table.scrollLeft;
91
91
  }
92
92
  }
@@ -156,7 +156,7 @@ export class XTableBodyComponent extends XTableBodyProperty {
156
156
  if (this.adaptionHeight > 0) {
157
157
  const captionHeight = this.table.tcaption?.nativeElement.clientHeight || 0;
158
158
  let headHeight = 0;
159
- for (let thead of this.table.thead) {
159
+ for (let thead of this.table.theads) {
160
160
  headHeight += thead.nativeElement.clientHeight;
161
161
  }
162
162
  const footHeight = this.table.tfoot?.nativeElement.clientHeight || 0;
@@ -199,10 +199,10 @@ export class XTableBodyComponent extends XTableBodyProperty {
199
199
  }
200
200
  }
201
201
  /** @nocollapse */ XTableBodyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XTableBodyComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: DOCUMENT }, { token: i1.XConfigService }], target: i0.ɵɵFactoryTarget.Component });
202
- /** @nocollapse */ XTableBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: XTableBodyComponent, selector: "x-table-body", inputs: { table: "table" }, viewQueries: [{ propertyName: "tbody", first: true, predicate: ["tbody"], descendants: true }, { propertyName: "virtualBody", first: true, predicate: ["virtualBody"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<tbody #tbody>\r\n <ng-container *ngIf=\"cellConfig; else virtualScrollTpl\">\r\n <tr *ngFor=\"let row of data; index as i; trackBy: trackByItem\" [style.gridTemplateColumns]=\"cellConfig.gridTemplateColumns\">\r\n <td\r\n *ngFor=\"let column of cellConfig.cells; index as j\"\r\n [title]=\"getTitle(row, column)\"\r\n [class.x-table-sticky]=\"table.getStickyLeft(column) || table.getStickyRight(column)\"\r\n [class.x-table-sticky-left]=\"table.getStickyLeft(column)\"\r\n [class.x-table-sticky-right]=\"table.getStickyRight(column)\"\r\n [class.x-table-sticky-left-last]=\"table.getStickyLeftLast(column)\"\r\n [class.x-table-sticky-right-first]=\"table.getStickyRightFirst(column)\"\r\n [style.left.px]=\"column.left\"\r\n [style.right.px]=\"column.right\"\r\n [style.grid-area]=\"column.gridArea\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"cellTpl; context: { column: column, row: row, i: i }\"></ng-container>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <x-empty *ngIf=\"isEmpty && level === 0\"></x-empty>\r\n</tbody>\r\n\r\n<ng-template #virtualScrollTpl>\r\n <cdk-virtual-scroll-viewport\r\n #virtualBody\r\n *ngIf=\"virtualScroll; else bodyTpl\"\r\n [itemSize]=\"getItemSize\"\r\n [minBufferPx]=\"minBufferPx\"\r\n [maxBufferPx]=\"maxBufferPx\"\r\n [style.height.px]=\"bodyHeight\"\r\n >\r\n <tr\r\n *cdkVirtualFor=\"let row of data; let index = index; trackBy: trackByItem\"\r\n [class.x-table-activated]=\"allowSelectRow && activatedRow?.id === row.id\"\r\n [style.height.px]=\"getRowHeight\"\r\n [style.min-height.px]=\"getRowHeight\"\r\n (click)=\"rowClick($event, row)\"\r\n >\r\n <!-- rowHeight \u4E3A 0 \u7684\u65F6\u5019\uFF0Cindex \u4E0B\u6807\u83B7\u53D6\u4E0D\u5230 -->\r\n <ng-container *ngTemplateOutlet=\"rowTpl; context: { row: row, i: getIndex(index, row) }\"></ng-container>\r\n </tr>\r\n </cdk-virtual-scroll-viewport>\r\n</ng-template>\r\n\r\n<ng-template #bodyTpl>\r\n <ng-container *ngFor=\"let row of data; index as i; trackBy: trackByItem\">\r\n <tr\r\n [class.x-table-activated]=\"allowSelectRow && activatedRow?.id === row.id\"\r\n [style.height.px]=\"getRowHeight\"\r\n [style.min-height.px]=\"getRowHeight\"\r\n (click)=\"rowClick($event, row)\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"rowTpl; context: { row: row, i: i }\"></ng-container>\r\n </tr>\r\n <div class=\"x-table-children\" [class.x-table-expandTpl]=\"expandTpl\" *ngIf=\"table.treeTable && row.children && row.expanded\">\r\n <x-table-body\r\n [data]=\"row.children\"\r\n [columns]=\"table.columns\"\r\n [itemSize]=\"table.itemSize\"\r\n [rowHeight]=\"table.rowHeight\"\r\n [columnTpl]=\"table.bodyColumnTpl\"\r\n [allowSelectRow]=\"table.allowSelectRow\"\r\n [rowClass]=\"table.rowClass\"\r\n [cellConfig]=\"table.cellConfig?.tbody\"\r\n [(activatedRow)]=\"table.activatedRow\"\r\n [expandedAll]=\"expandedAll\"\r\n [expandTpl]=\"expandTpl\"\r\n (activatedRowChange)=\"table.activatedRowChange.emit($event)\"\r\n [level]=\"row.level! + 1\"\r\n [table]=\"table\"\r\n ></x-table-body>\r\n </div>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #rowTpl let-row=\"row\" let-i=\"i\">\r\n <ng-container *ngIf=\"level > 0 && expandTpl\">\r\n <ng-container *xOutlet=\"expandTpl; context: { $row: row, $index: i, $level: level }\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"level === 0 || !expandTpl\">\r\n <ng-container *xOutlet=\"rowDefault; context: { row: row, i: i, level: level }\"></ng-container>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #rowDefault let-row=\"row\" let-i=\"i\">\r\n <ng-container *ngFor=\"let column of columns; index as j; trackBy: trackByItem\">\r\n <td\r\n [style.width.px]=\"column.width\"\r\n [style.flex]=\"getFlex(column)\"\r\n [title]=\"getTitle(row, column)\"\r\n [class.x-table-sticky]=\"table.getStickyLeft(column) || table.getStickyRight(column)\"\r\n [class.x-table-sticky-left]=\"table.getStickyLeft(column)\"\r\n [class.x-table-sticky-right]=\"table.getStickyRight(column)\"\r\n [class.x-table-sticky-left-last]=\"table.getStickyLeftLast(column)\"\r\n [class.x-table-sticky-right-first]=\"table.getStickyRightFirst(column)\"\r\n [style.left.px]=\"column.left\"\r\n [style.right.px]=\"column.right\"\r\n [ngClass]=\"!rowClass ? {} : rowClass(row, i)\"\r\n >\r\n <ng-template *ngTemplateOutlet=\"cellTpl; context: { column: column, row: row, i: i }\"></ng-template>\r\n </td>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #cellTpl let-column=\"column\" let-row=\"row\" let-i=\"i\">\r\n <ng-container [ngSwitch]=\"column.type\">\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <x-checkbox\r\n [data]=\"[{ id: true, label: '' }]\"\r\n [(ngModel)]=\"row[column.id]\"\r\n [disabled]=\"row.disabled\"\r\n (ngModelChange)=\"table.bodyChecked($event, column)\"\r\n ></x-checkbox>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'index'\">\r\n <div>{{ table.getIndex(i) }}</div>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <ng-container *ngIf=\"table.isExpandColumn(column)\">\r\n <x-button\r\n [class.is-leaf]=\"!row.leaf\"\r\n [class.is-expanded]=\"row.expanded\"\r\n (click)=\"onExpanded($event, row)\"\r\n icon=\"fto-chevron-right\"\r\n size=\"mini\"\r\n onlyIcon\r\n class=\"x-table-expand\"\r\n [style.margin-left.rem]=\"row.level - 0.5\"\r\n ></x-button>\r\n </ng-container>\r\n <ng-container *xOutlet=\"columnTpl[column.id]; context: { $column: column, $row: row, $index: table.getIndex(i) }\">\r\n <ng-container *xOutlet=\"table.bodyTdTpl; context: { $column: column, $row: row, $index: table.getIndex(i) }\">\r\n <div [innerHTML]=\"row[column.id]\" [style.text-align]=\"column.textAlign\"></div>\r\n {{ table.rowExpandNext && table.rowExpandNext.id === column.id ? 'x-table-body-level-' + row.level : '' }}\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { kind: "component", type: i5.XCheckboxComponent, selector: "x-checkbox" }, { kind: "component", type: i6.XButtonComponent, selector: "x-button" }, { kind: "directive", type: i7.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i7.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i7.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: i8.XEmptyComponent, selector: "x-empty" }, { kind: "component", type: XTableBodyComponent, selector: "x-table-body", inputs: ["table"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
202
+ /** @nocollapse */ XTableBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: XTableBodyComponent, selector: "x-table-body", inputs: { table: "table" }, viewQueries: [{ propertyName: "tbody", first: true, predicate: ["tbody"], descendants: true }, { propertyName: "virtualBody", first: true, predicate: ["virtualBody"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<tbody #tbody>\r\n <ng-container *ngIf=\"cellConfig; else virtualScrollTpl\">\r\n <tr *ngFor=\"let row of data; index as i; trackBy: trackByItem\" [style.gridTemplateColumns]=\"cellConfig.gridTemplateColumns\">\r\n <td\r\n *ngFor=\"let column of cellConfig.cells; index as j\"\r\n [title]=\"getTitle(row, column)\"\r\n [class.x-table-sticky]=\"table.getStickyLeft(column) || table.getStickyRight(column)\"\r\n [class.x-table-sticky-left]=\"table.getStickyLeft(column)\"\r\n [class.x-table-sticky-right]=\"table.getStickyRight(column)\"\r\n [class.x-table-sticky-left-last]=\"table.getStickyLeftLast(column)\"\r\n [class.x-table-sticky-right-first]=\"table.getStickyRightFirst(column)\"\r\n [style.left.px]=\"column.left\"\r\n [style.right.px]=\"column.right\"\r\n [style.grid-area]=\"column.gridArea\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"cellTpl; context: { column: column, row: row, i: i }\"></ng-container>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <x-empty *ngIf=\"isEmpty && level === 0\"></x-empty>\r\n</tbody>\r\n\r\n<ng-template #virtualScrollTpl>\r\n <cdk-virtual-scroll-viewport\r\n #virtualBody\r\n *ngIf=\"virtualScroll; else bodyTpl\"\r\n [itemSize]=\"getItemSize\"\r\n [minBufferPx]=\"minBufferPx\"\r\n [maxBufferPx]=\"maxBufferPx\"\r\n [style.height.px]=\"bodyHeight\"\r\n >\r\n <tr\r\n *cdkVirtualFor=\"let row of data; let index = index; trackBy: trackByItem\"\r\n [class.x-table-activated]=\"allowSelectRow && activatedRow?.id === row.id\"\r\n [style.height.px]=\"getRowHeight\"\r\n [style.min-height.px]=\"getRowHeight\"\r\n (click)=\"rowClick($event, row)\"\r\n >\r\n <!-- rowHeight \u4E3A 0 \u7684\u65F6\u5019\uFF0Cindex \u4E0B\u6807\u83B7\u53D6\u4E0D\u5230 -->\r\n <ng-container *ngTemplateOutlet=\"rowTpl; context: { row: row, i: getIndex(index, row) }\"></ng-container>\r\n </tr>\r\n </cdk-virtual-scroll-viewport>\r\n</ng-template>\r\n\r\n<ng-template #bodyTpl>\r\n <ng-container *ngFor=\"let row of data; index as i; trackBy: trackByItem\">\r\n <tr\r\n [class.x-table-activated]=\"allowSelectRow && activatedRow?.id === row.id\"\r\n [style.height.px]=\"getRowHeight\"\r\n [style.min-height.px]=\"getRowHeight\"\r\n (click)=\"rowClick($event, row)\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"rowTpl; context: { row: row, i: i }\"></ng-container>\r\n </tr>\r\n <div class=\"x-table-children\" [class.x-table-expandTpl]=\"expandTpl\" *ngIf=\"table.treeTable && row.children && row.expanded\">\r\n <x-table-body\r\n [data]=\"row.children\"\r\n [columns]=\"table.columns\"\r\n [itemSize]=\"table.itemSize\"\r\n [rowHeight]=\"table.rowHeight\"\r\n [columnTpl]=\"table.bodyColumnTpl\"\r\n [allowSelectRow]=\"table.allowSelectRow\"\r\n [rowClass]=\"table.rowClass\"\r\n [cellConfig]=\"table.cellConfig?.tbody\"\r\n [(activatedRow)]=\"table.activatedRow\"\r\n [expandedAll]=\"expandedAll\"\r\n [expandTpl]=\"expandTpl\"\r\n (activatedRowChange)=\"table.activatedRowChange.emit($event)\"\r\n [level]=\"row.level! + 1\"\r\n [table]=\"table\"\r\n ></x-table-body>\r\n </div>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #rowTpl let-row=\"row\" let-i=\"i\">\r\n <ng-container *ngIf=\"level > 0 && expandTpl\">\r\n <ng-container *xOutlet=\"expandTpl; context: { $row: row, $index: i, $level: level }\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"level === 0 || !expandTpl\">\r\n <ng-container *xOutlet=\"rowDefault; context: { row: row, i: i, level: level }\"></ng-container>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #rowDefault let-row=\"row\" let-i=\"i\">\r\n <ng-container *ngFor=\"let column of columns; index as j; trackBy: trackByItem\">\r\n <td\r\n [style.width.px]=\"column.width\"\r\n [style.flex]=\"getFlex(column)\"\r\n [title]=\"getTitle(row, column)\"\r\n [class.x-table-dragging]=\"column.dragging\"\r\n [class.x-table-sticky]=\"table.getStickyLeft(column) || table.getStickyRight(column)\"\r\n [class.x-table-sticky-left]=\"table.getStickyLeft(column)\"\r\n [class.x-table-sticky-right]=\"table.getStickyRight(column)\"\r\n [class.x-table-sticky-left-last]=\"table.getStickyLeftLast(column)\"\r\n [class.x-table-sticky-right-first]=\"table.getStickyRightFirst(column)\"\r\n [style.left.px]=\"column.left\"\r\n [style.right.px]=\"column.right\"\r\n [ngClass]=\"!rowClass ? {} : rowClass(row, i)\"\r\n >\r\n <ng-template *ngTemplateOutlet=\"cellTpl; context: { column: column, row: row, i: i }\"></ng-template>\r\n </td>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #cellTpl let-column=\"column\" let-row=\"row\" let-i=\"i\">\r\n <ng-container [ngSwitch]=\"column.type\">\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <x-checkbox\r\n [data]=\"[{ id: true, label: '' }]\"\r\n [(ngModel)]=\"row[column.id]\"\r\n [disabled]=\"row.disabled\"\r\n (ngModelChange)=\"table.bodyChecked($event, column)\"\r\n ></x-checkbox>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'index'\">\r\n <div>{{ table.getIndex(i) }}</div>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <ng-container *ngIf=\"table.isExpandColumn(column)\">\r\n <x-button\r\n [class.is-leaf]=\"!row.leaf\"\r\n [class.is-expanded]=\"row.expanded\"\r\n (click)=\"onExpanded($event, row)\"\r\n icon=\"fto-chevron-right\"\r\n size=\"mini\"\r\n onlyIcon\r\n class=\"x-table-expand\"\r\n [style.margin-left.rem]=\"row.level - 0.5\"\r\n ></x-button>\r\n </ng-container>\r\n <ng-container *xOutlet=\"columnTpl[column.id]; context: { $column: column, $row: row, $index: table.getIndex(i) }\">\r\n <ng-container *xOutlet=\"table.bodyTdTpl; context: { $column: column, $row: row, $index: table.getIndex(i) }\">\r\n <div [innerHTML]=\"row[column.id]\" [style.text-align]=\"column.textAlign\"></div>\r\n {{ table.rowExpandNext && table.rowExpandNext.id === column.id ? 'x-table-body-level-' + row.level : '' }}\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { kind: "component", type: i5.XCheckboxComponent, selector: "x-checkbox" }, { kind: "component", type: i6.XButtonComponent, selector: "x-button" }, { kind: "directive", type: i7.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i7.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i7.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: i8.XEmptyComponent, selector: "x-empty" }, { kind: "component", type: XTableBodyComponent, selector: "x-table-body", inputs: ["table"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
203
203
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: XTableBodyComponent, decorators: [{
204
204
  type: Component,
205
- args: [{ selector: `${XTableBodyPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<tbody #tbody>\r\n <ng-container *ngIf=\"cellConfig; else virtualScrollTpl\">\r\n <tr *ngFor=\"let row of data; index as i; trackBy: trackByItem\" [style.gridTemplateColumns]=\"cellConfig.gridTemplateColumns\">\r\n <td\r\n *ngFor=\"let column of cellConfig.cells; index as j\"\r\n [title]=\"getTitle(row, column)\"\r\n [class.x-table-sticky]=\"table.getStickyLeft(column) || table.getStickyRight(column)\"\r\n [class.x-table-sticky-left]=\"table.getStickyLeft(column)\"\r\n [class.x-table-sticky-right]=\"table.getStickyRight(column)\"\r\n [class.x-table-sticky-left-last]=\"table.getStickyLeftLast(column)\"\r\n [class.x-table-sticky-right-first]=\"table.getStickyRightFirst(column)\"\r\n [style.left.px]=\"column.left\"\r\n [style.right.px]=\"column.right\"\r\n [style.grid-area]=\"column.gridArea\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"cellTpl; context: { column: column, row: row, i: i }\"></ng-container>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <x-empty *ngIf=\"isEmpty && level === 0\"></x-empty>\r\n</tbody>\r\n\r\n<ng-template #virtualScrollTpl>\r\n <cdk-virtual-scroll-viewport\r\n #virtualBody\r\n *ngIf=\"virtualScroll; else bodyTpl\"\r\n [itemSize]=\"getItemSize\"\r\n [minBufferPx]=\"minBufferPx\"\r\n [maxBufferPx]=\"maxBufferPx\"\r\n [style.height.px]=\"bodyHeight\"\r\n >\r\n <tr\r\n *cdkVirtualFor=\"let row of data; let index = index; trackBy: trackByItem\"\r\n [class.x-table-activated]=\"allowSelectRow && activatedRow?.id === row.id\"\r\n [style.height.px]=\"getRowHeight\"\r\n [style.min-height.px]=\"getRowHeight\"\r\n (click)=\"rowClick($event, row)\"\r\n >\r\n <!-- rowHeight \u4E3A 0 \u7684\u65F6\u5019\uFF0Cindex \u4E0B\u6807\u83B7\u53D6\u4E0D\u5230 -->\r\n <ng-container *ngTemplateOutlet=\"rowTpl; context: { row: row, i: getIndex(index, row) }\"></ng-container>\r\n </tr>\r\n </cdk-virtual-scroll-viewport>\r\n</ng-template>\r\n\r\n<ng-template #bodyTpl>\r\n <ng-container *ngFor=\"let row of data; index as i; trackBy: trackByItem\">\r\n <tr\r\n [class.x-table-activated]=\"allowSelectRow && activatedRow?.id === row.id\"\r\n [style.height.px]=\"getRowHeight\"\r\n [style.min-height.px]=\"getRowHeight\"\r\n (click)=\"rowClick($event, row)\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"rowTpl; context: { row: row, i: i }\"></ng-container>\r\n </tr>\r\n <div class=\"x-table-children\" [class.x-table-expandTpl]=\"expandTpl\" *ngIf=\"table.treeTable && row.children && row.expanded\">\r\n <x-table-body\r\n [data]=\"row.children\"\r\n [columns]=\"table.columns\"\r\n [itemSize]=\"table.itemSize\"\r\n [rowHeight]=\"table.rowHeight\"\r\n [columnTpl]=\"table.bodyColumnTpl\"\r\n [allowSelectRow]=\"table.allowSelectRow\"\r\n [rowClass]=\"table.rowClass\"\r\n [cellConfig]=\"table.cellConfig?.tbody\"\r\n [(activatedRow)]=\"table.activatedRow\"\r\n [expandedAll]=\"expandedAll\"\r\n [expandTpl]=\"expandTpl\"\r\n (activatedRowChange)=\"table.activatedRowChange.emit($event)\"\r\n [level]=\"row.level! + 1\"\r\n [table]=\"table\"\r\n ></x-table-body>\r\n </div>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #rowTpl let-row=\"row\" let-i=\"i\">\r\n <ng-container *ngIf=\"level > 0 && expandTpl\">\r\n <ng-container *xOutlet=\"expandTpl; context: { $row: row, $index: i, $level: level }\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"level === 0 || !expandTpl\">\r\n <ng-container *xOutlet=\"rowDefault; context: { row: row, i: i, level: level }\"></ng-container>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #rowDefault let-row=\"row\" let-i=\"i\">\r\n <ng-container *ngFor=\"let column of columns; index as j; trackBy: trackByItem\">\r\n <td\r\n [style.width.px]=\"column.width\"\r\n [style.flex]=\"getFlex(column)\"\r\n [title]=\"getTitle(row, column)\"\r\n [class.x-table-sticky]=\"table.getStickyLeft(column) || table.getStickyRight(column)\"\r\n [class.x-table-sticky-left]=\"table.getStickyLeft(column)\"\r\n [class.x-table-sticky-right]=\"table.getStickyRight(column)\"\r\n [class.x-table-sticky-left-last]=\"table.getStickyLeftLast(column)\"\r\n [class.x-table-sticky-right-first]=\"table.getStickyRightFirst(column)\"\r\n [style.left.px]=\"column.left\"\r\n [style.right.px]=\"column.right\"\r\n [ngClass]=\"!rowClass ? {} : rowClass(row, i)\"\r\n >\r\n <ng-template *ngTemplateOutlet=\"cellTpl; context: { column: column, row: row, i: i }\"></ng-template>\r\n </td>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #cellTpl let-column=\"column\" let-row=\"row\" let-i=\"i\">\r\n <ng-container [ngSwitch]=\"column.type\">\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <x-checkbox\r\n [data]=\"[{ id: true, label: '' }]\"\r\n [(ngModel)]=\"row[column.id]\"\r\n [disabled]=\"row.disabled\"\r\n (ngModelChange)=\"table.bodyChecked($event, column)\"\r\n ></x-checkbox>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'index'\">\r\n <div>{{ table.getIndex(i) }}</div>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <ng-container *ngIf=\"table.isExpandColumn(column)\">\r\n <x-button\r\n [class.is-leaf]=\"!row.leaf\"\r\n [class.is-expanded]=\"row.expanded\"\r\n (click)=\"onExpanded($event, row)\"\r\n icon=\"fto-chevron-right\"\r\n size=\"mini\"\r\n onlyIcon\r\n class=\"x-table-expand\"\r\n [style.margin-left.rem]=\"row.level - 0.5\"\r\n ></x-button>\r\n </ng-container>\r\n <ng-container *xOutlet=\"columnTpl[column.id]; context: { $column: column, $row: row, $index: table.getIndex(i) }\">\r\n <ng-container *xOutlet=\"table.bodyTdTpl; context: { $column: column, $row: row, $index: table.getIndex(i) }\">\r\n <div [innerHTML]=\"row[column.id]\" [style.text-align]=\"column.textAlign\"></div>\r\n {{ table.rowExpandNext && table.rowExpandNext.id === column.id ? 'x-table-body-level-' + row.level : '' }}\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n</ng-template>\r\n" }]
205
+ args: [{ selector: `${XTableBodyPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<tbody #tbody>\r\n <ng-container *ngIf=\"cellConfig; else virtualScrollTpl\">\r\n <tr *ngFor=\"let row of data; index as i; trackBy: trackByItem\" [style.gridTemplateColumns]=\"cellConfig.gridTemplateColumns\">\r\n <td\r\n *ngFor=\"let column of cellConfig.cells; index as j\"\r\n [title]=\"getTitle(row, column)\"\r\n [class.x-table-sticky]=\"table.getStickyLeft(column) || table.getStickyRight(column)\"\r\n [class.x-table-sticky-left]=\"table.getStickyLeft(column)\"\r\n [class.x-table-sticky-right]=\"table.getStickyRight(column)\"\r\n [class.x-table-sticky-left-last]=\"table.getStickyLeftLast(column)\"\r\n [class.x-table-sticky-right-first]=\"table.getStickyRightFirst(column)\"\r\n [style.left.px]=\"column.left\"\r\n [style.right.px]=\"column.right\"\r\n [style.grid-area]=\"column.gridArea\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"cellTpl; context: { column: column, row: row, i: i }\"></ng-container>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <x-empty *ngIf=\"isEmpty && level === 0\"></x-empty>\r\n</tbody>\r\n\r\n<ng-template #virtualScrollTpl>\r\n <cdk-virtual-scroll-viewport\r\n #virtualBody\r\n *ngIf=\"virtualScroll; else bodyTpl\"\r\n [itemSize]=\"getItemSize\"\r\n [minBufferPx]=\"minBufferPx\"\r\n [maxBufferPx]=\"maxBufferPx\"\r\n [style.height.px]=\"bodyHeight\"\r\n >\r\n <tr\r\n *cdkVirtualFor=\"let row of data; let index = index; trackBy: trackByItem\"\r\n [class.x-table-activated]=\"allowSelectRow && activatedRow?.id === row.id\"\r\n [style.height.px]=\"getRowHeight\"\r\n [style.min-height.px]=\"getRowHeight\"\r\n (click)=\"rowClick($event, row)\"\r\n >\r\n <!-- rowHeight \u4E3A 0 \u7684\u65F6\u5019\uFF0Cindex \u4E0B\u6807\u83B7\u53D6\u4E0D\u5230 -->\r\n <ng-container *ngTemplateOutlet=\"rowTpl; context: { row: row, i: getIndex(index, row) }\"></ng-container>\r\n </tr>\r\n </cdk-virtual-scroll-viewport>\r\n</ng-template>\r\n\r\n<ng-template #bodyTpl>\r\n <ng-container *ngFor=\"let row of data; index as i; trackBy: trackByItem\">\r\n <tr\r\n [class.x-table-activated]=\"allowSelectRow && activatedRow?.id === row.id\"\r\n [style.height.px]=\"getRowHeight\"\r\n [style.min-height.px]=\"getRowHeight\"\r\n (click)=\"rowClick($event, row)\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"rowTpl; context: { row: row, i: i }\"></ng-container>\r\n </tr>\r\n <div class=\"x-table-children\" [class.x-table-expandTpl]=\"expandTpl\" *ngIf=\"table.treeTable && row.children && row.expanded\">\r\n <x-table-body\r\n [data]=\"row.children\"\r\n [columns]=\"table.columns\"\r\n [itemSize]=\"table.itemSize\"\r\n [rowHeight]=\"table.rowHeight\"\r\n [columnTpl]=\"table.bodyColumnTpl\"\r\n [allowSelectRow]=\"table.allowSelectRow\"\r\n [rowClass]=\"table.rowClass\"\r\n [cellConfig]=\"table.cellConfig?.tbody\"\r\n [(activatedRow)]=\"table.activatedRow\"\r\n [expandedAll]=\"expandedAll\"\r\n [expandTpl]=\"expandTpl\"\r\n (activatedRowChange)=\"table.activatedRowChange.emit($event)\"\r\n [level]=\"row.level! + 1\"\r\n [table]=\"table\"\r\n ></x-table-body>\r\n </div>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #rowTpl let-row=\"row\" let-i=\"i\">\r\n <ng-container *ngIf=\"level > 0 && expandTpl\">\r\n <ng-container *xOutlet=\"expandTpl; context: { $row: row, $index: i, $level: level }\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"level === 0 || !expandTpl\">\r\n <ng-container *xOutlet=\"rowDefault; context: { row: row, i: i, level: level }\"></ng-container>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #rowDefault let-row=\"row\" let-i=\"i\">\r\n <ng-container *ngFor=\"let column of columns; index as j; trackBy: trackByItem\">\r\n <td\r\n [style.width.px]=\"column.width\"\r\n [style.flex]=\"getFlex(column)\"\r\n [title]=\"getTitle(row, column)\"\r\n [class.x-table-dragging]=\"column.dragging\"\r\n [class.x-table-sticky]=\"table.getStickyLeft(column) || table.getStickyRight(column)\"\r\n [class.x-table-sticky-left]=\"table.getStickyLeft(column)\"\r\n [class.x-table-sticky-right]=\"table.getStickyRight(column)\"\r\n [class.x-table-sticky-left-last]=\"table.getStickyLeftLast(column)\"\r\n [class.x-table-sticky-right-first]=\"table.getStickyRightFirst(column)\"\r\n [style.left.px]=\"column.left\"\r\n [style.right.px]=\"column.right\"\r\n [ngClass]=\"!rowClass ? {} : rowClass(row, i)\"\r\n >\r\n <ng-template *ngTemplateOutlet=\"cellTpl; context: { column: column, row: row, i: i }\"></ng-template>\r\n </td>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #cellTpl let-column=\"column\" let-row=\"row\" let-i=\"i\">\r\n <ng-container [ngSwitch]=\"column.type\">\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <x-checkbox\r\n [data]=\"[{ id: true, label: '' }]\"\r\n [(ngModel)]=\"row[column.id]\"\r\n [disabled]=\"row.disabled\"\r\n (ngModelChange)=\"table.bodyChecked($event, column)\"\r\n ></x-checkbox>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'index'\">\r\n <div>{{ table.getIndex(i) }}</div>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <ng-container *ngIf=\"table.isExpandColumn(column)\">\r\n <x-button\r\n [class.is-leaf]=\"!row.leaf\"\r\n [class.is-expanded]=\"row.expanded\"\r\n (click)=\"onExpanded($event, row)\"\r\n icon=\"fto-chevron-right\"\r\n size=\"mini\"\r\n onlyIcon\r\n class=\"x-table-expand\"\r\n [style.margin-left.rem]=\"row.level - 0.5\"\r\n ></x-button>\r\n </ng-container>\r\n <ng-container *xOutlet=\"columnTpl[column.id]; context: { $column: column, $row: row, $index: table.getIndex(i) }\">\r\n <ng-container *xOutlet=\"table.bodyTdTpl; context: { $column: column, $row: row, $index: table.getIndex(i) }\">\r\n <div [innerHTML]=\"row[column.id]\" [style.text-align]=\"column.textAlign\"></div>\r\n {{ table.rowExpandNext && table.rowExpandNext.id === column.id ? 'x-table-body-level-' + row.level : '' }}\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n</ng-template>\r\n" }]
206
206
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
207
207
  type: Inject,
208
208
  args: [DOCUMENT]
@@ -215,4 +215,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImpor
215
215
  }], table: [{
216
216
  type: Input
217
217
  }] } });
218
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYm9keS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS90YWJsZS90YWJsZS1ib2R5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3RhYmxlL3RhYmxlLWJvZHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxpQkFBaUIsRUFJakIsdUJBQXVCLEVBR3ZCLE1BQU0sRUFDTixTQUFTLEVBQ1QsS0FBSyxFQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBdUMsTUFBTSxrQkFBa0IsQ0FBQztBQUM3RyxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQTJCLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFRM0MsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGtCQUFrQjtJQW1CekQ7SUFDRSxxREFBcUQ7SUFDOUMsUUFBbUIsRUFDbkIsVUFBc0IsRUFDdEIsR0FBc0IsRUFDSixHQUFRLEVBQzFCLGFBQTZCO1FBRXBDLEtBQUssRUFBRSxDQUFDO1FBTkQsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ0osUUFBRyxHQUFILEdBQUcsQ0FBSztRQUMxQixrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUF4QnRDLGVBQVUsR0FBZ0MsRUFBRSxDQUFDO1FBZXJDLGVBQVUs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SUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDO1NBQ2hFO2FBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsSUFBSSxDQUFDLElBQUksRUFBRTtZQUN6QyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDOUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO1lBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztTQUNoQztRQUNELElBQUksSUFBSSxFQUFFO1lBQ1IsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUM7U0FDL0U7UUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDdkQsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFO1lBQzVDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUMxQyxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDM0MsT0FBTyxXQUFXLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lB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LGlCQUVoQixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNOzswQkEwQjVDLE1BQU07MkJBQUMsUUFBUTt5RUFaRSxLQUFLO3NCQUF4QixTQUFTO3VCQUFDLE9BQU87Z0JBQ1EsV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhO2dCQUNmLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBSZW5kZXJlcjIsXHJcbiAgRWxlbWVudFJlZixcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIE9uQ2hhbmdlcyxcclxuICBJbmplY3QsXHJcbiAgVmlld0NoaWxkLFxyXG4gIElucHV0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFhUYWJsZUJvZHlQcmVmaXgsIFhUYWJsZUJvZHlQcm9wZXJ0eSwgWFRhYmxlUm93LCBYVGFibGVDb2x1bW4sIFhUYWJsZUNlbGwgfSBmcm9tICcuL3RhYmxlLnByb3BlcnR5JztcclxuaW1wb3J0IHsgcmVtb3ZlTmdUYWcsIFhJc0NoYW5nZSwgWFJlc2l6ZSwgWENvbmZpZ1NlcnZpY2UsIFhOdW1iZXIsIHN0cmlwVGFncyB9IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IGAke1hUYWJsZUJvZHlQcmVmaXh9YCxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtYm9keS5jb21wb25lbnQuaHRtbCcsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWFRhYmxlQm9keUNvbXBvbmVudCBleHRlbmRzIFhUYWJsZUJvZHlQcm9wZXJ0eSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICB0Ym9keVN0eWxlOiB7IFtwcm9wZXJ0eTogc3RyaW5nXTogYW55IH0gPSB7fTtcclxuICBnZXQgaXNFbXB0eSgpIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGE/Lmxlbmd0aCA9PT0gMDtcclxuICB9XHJcbiAgZ2V0IGdldFJvd0hlaWdodCgpIHtcclxuICAgIHJldHVybiB0aGlzLnJvd0hlaWdodCA9PSAwID8gJycgOiB0aGlzLnJvd0hlaWdodDtcclxuICB9XHJcbiAgZ2V0IGdldEl0ZW1TaXplKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucm93SGVpZ2h0ICE9PSAwICYmIHRoaXMuaXRlbVNpemUgPiB0aGlzLnJvd0hlaWdodCA/IHRoaXMucm93SGVpZ2h0IDogdGhpcy5pdGVtU2l6ZTtcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3Rib2R5JykgdGJvZHkhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ3ZpcnR1YWxCb2R5JykgdmlydHVhbEJvZHkhOiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XHJcbiAgQElucHV0KCkgdGFibGU6IGFueTtcclxuXHJcbiAgcHJpdmF0ZSBfdW5TdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcml2YXRlIF9yZXNpemVPYnNlcnZlciE6IFJlc2l6ZU9ic2VydmVyO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIC8vIEBPcHRpb25hbCgpIEBIb3N0KCkgcHVibGljIHRhYmxlOiBYVGFibGVDb21wb25lbnQsXHJcbiAgICBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwdWJsaWMgZG9jOiBhbnksXHJcbiAgICBwdWJsaWMgY29uZmlnU2VydmljZTogWENvbmZpZ1NlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG4gIG5nT25DaGFuZ2VzKHNpbXBsZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGNvbnN0IHsgZGF0YSwgY29sdW1ucywgYWN0aXZhdGVkUm93LCBtZXJnZVJ1bGUsIGV4cGFuZGVkQWxsLCBhZGFwdGlvbkhlaWdodCB9ID0gc2ltcGxlcztcclxuICAgIFhJc0NoYW5nZShkYXRhLCBjb2x1bW5zLCBhY3RpdmF0ZWRSb3csIG1lcmdlUnVsZSwgZXhwYW5kZWRBbGwpICYmIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIFhJc0NoYW5nZShhZGFwdGlvbkhlaWdodCkgJiYgdGhpcy5zZXRBZGFwdGlvbkhlaWdodCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICByZW1vdmVOZ1RhZyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XHJcbiAgICBpZiAodGhpcy5sZXZlbCA+IDApIHJlbW92ZU5nVGFnKHRoaXMudGJvZHkubmF0aXZlRWxlbWVudCk7XHJcbiAgICBpZiAodGhpcy5zY3JvbGw/LnkgJiYgIXRoaXMuYm9keUhlaWdodCkge1xyXG4gICAgICB0aGlzLmJvZHlIZWlnaHQgPSB0aGlzLnNjcm9sbC55O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy50YWJsZS52aXJ0dWFsQm9keSA9IHRoaXMudmlydHVhbEJvZHk7XHJcbiAgICB0aGlzLnRhYmxlLmJvZHlDaGFuZ2UgPSAoKSA9PiB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLnNldFN1YmplY3QoKTtcclxuICAgIHRoaXMuc2V0U2Nyb2xsKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3VuU3ViamVjdC5uZXh0KCk7XHJcbiAgICB0aGlzLl91blN1YmplY3QudW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuX3Jlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XHJcbiAgfVxyXG5cclxuICBzZXRTdWJqZWN0KCkge1xyXG4gICAgaWYgKHRoaXMudmlydHVhbEJvZHkpIHtcclxuICAgICAgdGhpcy50YWJsZS5zY3JvbGxDb250ZW50RWxlID0gdGhpcy52aXJ0dWFsQm9keT8uZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICAgICcuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcidcclxuICAgICAgKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgaWYgKHRoaXMuc2Nyb2xsPy54KSB7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRhYmxlLnNjcm9sbENvbnRlbnRFbGUsICd3aWR0aCcsIGAke3RoaXMuc2Nyb2xsLnh9cHhgKTtcclxuICAgICAgfVxyXG4gICAgICBYUmVzaXplKHRoaXMudGFibGUudGFibGUubmF0aXZlRWxlbWVudCwgdGhpcy50YWJsZS5zY3JvbGxDb250ZW50RWxlKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICAgIHRoaXMuX3Jlc2l6ZU9ic2VydmVyID0geC5yZXNpemVPYnNlcnZlcjtcclxuICAgICAgICAgIHRoaXMuc2V0QWRhcHRpb25IZWlnaHQoKTtcclxuICAgICAgICAgIHRoaXMuc2V0U2Nyb2xsKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zZXRBZGFwdGlvbkhlaWdodCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudGFibGUuc2Nyb2xsQ29udGVudEVsZSkge1xyXG4gICAgICBmcm9tRXZlbnQodGhpcy52aXJ0dWFsQm9keS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdzY3JvbGwnKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGVsZSA9IHguc3JjRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICAgIHRoaXMudGFibGUuc2Nyb2xsVG9wID0gZWxlLnNjcm9sbFRvcDtcclxuICAgICAgICAgIHRoaXMudGFibGUuc2Nyb2xsTGVmdCA9IGVsZS5zY3JvbGxMZWZ0O1xyXG4gICAgICAgICAgaWYgKGVsZS5zY3JvbGxMZWZ0ID49IDAgJiYgdGhpcy50YWJsZS50aGVhZC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IHRoZWFkIG9mIHRoaXMudGFibGUudGhlYWQpIHtcclxuICAgICAgICAgICAgICB0aGVhZC5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0aGlzLnRhYmxlLnNjcm9sbExlZnQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMudGFibGUuc2Nyb2xsTGVmdE1heCA9IGVsZS5zY3JvbGxMZWZ0ICsgZWxlLmNsaWVudFdpZHRoID09PSBlbGUuc2Nyb2xsV2lkdGg7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRTY3JvbGwoKSB7XHJcbiAgICBpZiAoIXRoaXMudmlydHVhbEJvZHkpIHJldHVybjtcclxuICAgIGNvbnN0IGVsZSA9IHRoaXMudmlydHVhbEJvZHkuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgY29uc3QgaGFzWSA9IGVsZS5zY3JvbGxIZWlnaHQgPiAodGhpcy5ib2R5SGVpZ2h0IGFzIG51bWJlcik7XHJcbiAgICBjb25zdCBoYXNYID0gdGhpcy50YWJsZS5zY3JvbGxDb250ZW50RWxlLmNsaWVudFdpZHRoID4gZWxlLmNsaWVudFdpZHRoO1xyXG5cclxuICAgIGlmICghdGhpcy50YWJsZS5oYXNTY3JvbGxZICYmIGhhc1kpIHtcclxuICAgICAgdGhpcy50YWJsZS5oYXNTY3JvbGxZID0gdHJ1ZTtcclxuICAgICAgdGhpcy50YWJsZS5zY3JvbGxZV2lkdGggPSBlbGUub2Zmc2V0V2lkdGggLSBlbGUuY2xpZW50V2lkdGg7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudGFibGUuaGFzU2Nyb2xsWSAmJiAhaGFzWSkge1xyXG4gICAgICB0aGlzLnRhYmxlLmhhc1Njcm9sbFkgPSBmYWxzZTtcclxuICAgICAgdGhpcy50YWJsZS5zY3JvbGxZV2lkdGggPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy50YWJsZS5oYXNTY3JvbGxYICYmIGhhc1gpIHtcclxuICAgICAgdGhpcy50YWJsZS5oYXNTY3JvbGxYID0gdHJ1ZTtcclxuICAgICAgdGhpcy50YWJsZS5zY3JvbGxYSGVpZ2h0ID0gZWxlLm9mZnNldEhlaWdodCAtIGVsZS5jbGllbnRIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudGFibGUuaGFzU2Nyb2xsWCAmJiAhaGFzWCkge1xyXG4gICAgICB0aGlzLnRhYmxlLmhhc1Njcm9sbFggPSBmYWxzZTtcclxuICAgICAgdGhpcy50YWJsZS5zY3JvbGxYSGVpZ2h0ID0gMDtcclxuICAgICAgdGhpcy50YWJsZS5zY3JvbGxYV2lkdGggPSBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKGhhc1gpIHtcclxuICAgICAgdGhpcy50YWJsZS5zY3JvbGxYV2lkdGggPSBlbGUub2Zmc2V0V2lkdGggKyBlbGUuc2Nyb2xsV2lkdGggLSBlbGUuY2xpZW50V2lkdGg7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50YWJsZS5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc2V0U3R5bGUoKSB7XHJcbiAgICBsZXQgaGVpZ2h0ID0gdGhpcy5yb3dIZWlnaHQgPT0gMCA/ICcnIDogdGhpcy5yb3dIZWlnaHQ7XHJcbiAgICBpZiAodGhpcy5jZWxsQ29uZmlnICYmIHRoaXMuY2VsbENvbmZpZy5jZWxscykge1xyXG4gICAgICBjb25zdCBzcHQgPSB0aGlzLmNlbGxDb25maWcuY2VsbHMubWFwKCh4KSA9PiB7XHJcbiAgICAgICAgY29uc3QgZ3JpZEFyZWFTcHQgPSB4LmdyaWRBcmVhPy5zcGxpdCgnLycpO1xyXG4gICAgICAgIHJldHVybiBncmlkQXJlYVNwdCAmJiBncmlkQXJlYVNwdC5sZW5ndGggPiAzID8gTnVtYmVyKGdyaWRBcmVhU3B0WzJdKSA6IDI7XHJcbiAgICAgIH0pO1xyXG4gICAgICBoZWlnaHQgPSAoKE1hdGgubWF4KC4uLnNwdCkgLSAxKSAqIChoZWlnaHQgYXMgbnVtYmVyKSkgYXMgWE51bWJlcjtcclxuICAgIH1cclxuICAgIHRoaXMudGJvZHlTdHlsZSA9IHtcclxuICAgICAgaGVpZ2h0OiBgJHtoZWlnaHR9cHhgXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0SW5kZXgoaW5kZXg6IG51bWJlciwgaXRlbTogWFRhYmxlUm93KSB7XHJcbiAgICBpZiAoIWlzTmFOKGluZGV4KSkgcmV0dXJuIGluZGV4O1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YS5pbmRleE9mKGl0ZW0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0RmxleChjb2x1bW46IFhUYWJsZUNvbHVtbikge1xyXG4gICAgaWYgKGNvbHVtbi53aWR0aCkgcmV0dXJuICdub25lJztcclxuICAgIGlmICghY29sdW1uLmZsZXgpIHJldHVybiAxO1xyXG4gICAgcmV0dXJuIGNvbHVtbi5mbGV4O1xyXG4gIH1cclxuXHJcbiAgZ2V0VGl0bGUocm93OiBYVGFibGVSb3csIGNvbHVtbjogWFRhYmxlQ2VsbCB8IGFueSkge1xyXG4gICAgbGV0IGl0ID0gcm93W2NvbHVtbi5pZCBhcyBzdHJpbmddO1xyXG4gICAgcmV0dXJuIGl0ID8gc3RyaXBUYWdzKGl0KSA6ICcnO1xyXG4gIH1cclxuXHJcbiAgc2V0QWRhcHRpb25IZWlnaHQoKSB7XHJcbiAgICBpZiAoKHRoaXMuYWRhcHRpb25IZWlnaHQgYXMgbnVtYmVyKSA+IDApIHtcclxuICAgICAgY29uc3QgY2FwdGlvbkhlaWdodCA9IHRoaXMudGFibGUudGNhcHRpb24/Lm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0IHx8IDA7XHJcbiAgICAgIGxldCBoZWFkSGVpZ2h0ID0gMDtcclxuICAgICAgZm9yIChsZXQgdGhlYWQgb2YgdGhpcy50YWJsZS50aGVhZCkge1xyXG4gICAgICAgIGhlYWRIZWlnaHQgKz0gdGhlYWQubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQ7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZm9vdEhlaWdodCA9IHRoaXMudGFibGUudGZvb3Q/Lm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0IHx8IDA7XHJcbiAgICAgIGNvbnN0IHBhZ2luYXRpb25IZWlnaHQgPSB0aGlzLnRhYmxlLnBhZ2luYXRpb24/LmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQgfHwgMDtcclxuICAgICAgdGhpcy5ib2R5SGVpZ2h0ID1cclxuICAgICAgICBOdW1iZXIodGhpcy5kb2NQZXJjZW50KSAqIHRoaXMuZG9jLmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgLVxyXG4gICAgICAgIGNhcHRpb25IZWlnaHQgLVxyXG4gICAgICAgIGhlYWRIZWlnaHQgLVxyXG4gICAgICAgIGZvb3RIZWlnaHQgLVxyXG4gICAgICAgIHBhZ2luYXRpb25IZWlnaHQgLVxyXG4gICAgICAgIE51bWJlcih0aGlzLmFkYXB0aW9uSGVpZ2h0KTtcclxuICAgICAgaWYgKHRoaXMuYm9keUhlaWdodCA8IDApIHRoaXMuYm9keUhlaWdodCA9IDA7XHJcbiAgICAgIHRoaXMubWluQnVmZmVyUHggPSB0aGlzLmJvZHlIZWlnaHQ7XHJcbiAgICAgIHRoaXMubWF4QnVmZmVyUHggPSB0aGlzLmJvZHlIZWlnaHQgKiAxLjI7XHJcbiAgICAgIHRoaXMudmlydHVhbEJvZHlbJ19zY3JvbGxTdHJhdGVneSddWydfbWluQnVmZmVyUHgnXSA9IHRoaXMubWluQnVmZmVyUHg7XHJcbiAgICAgIHRoaXMudmlydHVhbEJvZHlbJ19zY3JvbGxTdHJhdGVneSddWydfbWF4QnVmZmVyUHgnXSA9IHRoaXMubWF4QnVmZmVyUHg7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJvd0NsaWNrKGV2ZW50OiBFdmVudCwgcm93OiBYVGFibGVSb3cpIHtcclxuICAgIGlmIChyb3cuZGlzYWJsZWQpIHJldHVybjtcclxuICAgIHRoaXMuYWN0aXZhdGVkUm93ID0gcm93O1xyXG4gICAgaWYgKHRoaXMudGFibGUuYWxsb3dDaGVja1JvdyAmJiB0aGlzLnRhYmxlLnJvd0NoZWNrZWQpIHtcclxuICAgICAgaWYgKCFBcnJheS5mcm9tKChldmVudCBhcyBhbnkpLnBhdGgpLmZpbmQoKHg6IGFueSkgPT4geC5sb2NhbE5hbWUgPT0gJ3gtY2hlY2tib3gnKSkge1xyXG4gICAgICAgIHJvd1t0aGlzLnRhYmxlLnJvd0NoZWNrZWQuaWRdID0gIXJvd1t0aGlzLnRhYmxlLnJvd0NoZWNrZWQuaWRdO1xyXG4gICAgICAgIHRoaXMudGFibGUuYm9keUNoZWNrZWQocm93W3RoaXMudGFibGUucm93Q2hlY2tlZC5pZF0sIHRoaXMudGFibGUucm93Q2hlY2tlZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuYWN0aXZhdGVkUm93Q2hhbmdlLmVtaXQocm93KTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG9uRXhwYW5kZWQoX2V2ZW50OiBFdmVudCwgbm9kZTogWFRhYmxlUm93KSB7XHJcbiAgICBub2RlLmV4cGFuZGVkID0gIW5vZGUuZXhwYW5kZWQ7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5SXRlbShfaW5kZXg6IG51bWJlciwgaXRlbTogWFRhYmxlUm93IHwgWFRhYmxlQ29sdW1uKSB7XHJcbiAgICByZXR1cm4gaXRlbS5pZDtcclxuICB9XHJcbn1cclxuIiwiPHRib2R5ICN0Ym9keT5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2VsbENvbmZpZzsgZWxzZSB2aXJ0dWFsU2Nyb2xsVHBsXCI+XHJcbiAgICA8dHIgKm5nRm9yPVwibGV0IHJvdyBvZiBkYXRhOyBpbmRleCBhcyBpOyB0cmFja0J5OiB0cmFja0J5SXRlbVwiIFtzdHlsZS5ncmlkVGVtcGxhdGVDb2x1bW5zXT1cImNlbGxDb25maWcuZ3JpZFRlbXBsYXRlQ29sdW1uc1wiPlxyXG4gICAgICA8dGRcclxuICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNlbGxDb25maWcuY2VsbHM7IGluZGV4IGFzIGpcIlxyXG4gICAgICAgIFt0aXRsZV09XCJnZXRUaXRsZShyb3csIGNvbHVtbilcIlxyXG4gICAgICAgIFtjbGFzcy54LXRhYmxlLXN0aWNreV09XCJ0YWJsZS5nZXRTdGlja3lMZWZ0KGNvbHVtbikgfHwgdGFibGUuZ2V0U3RpY2t5UmlnaHQoY29sdW1uKVwiXHJcbiAgICAgICAgW2NsYXNzLngtdGFibGUtc3RpY2t5LWxlZnRdPVwidGFibGUuZ2V0U3RpY2t5TGVmdChjb2x1bW4pXCJcclxuICAgICAgICBbY2xhc3MueC10YWJsZS1zdGlja3ktcmlnaHRdPVwidGFibGUuZ2V0U3RpY2t5UmlnaHQoY29sdW1uKVwiXHJcbiAgICAgICAgW2NsYXNzLngtdGFibGUtc3RpY2t5LWxlZnQtbGFzdF09XCJ0YWJsZS5nZXRTdGlja3lMZWZ0TGFzdChjb2x1bW4pXCJcclxuICAgICAgICBbY2xhc3MueC10YWJsZS1zdGlja3ktcmlnaHQtZmlyc3RdPVwidGFibGUuZ2V0U3RpY2t5UmlnaHRGaXJzdChjb2x1bW4pXCJcclxuICAgICAgICBbc3R5bGUubGVmdC5weF09XCJjb2x1bW4ubGVmdFwiXHJcbiAgICAgICAgW3N0eWxlLnJpZ2h0LnB4XT1cImNvbHVtbi5yaWdodFwiXHJcbiAgICAgICAgW3N0eWxlLmdyaWQtYXJlYV09XCJjb2x1bW4uZ3JpZEFyZWFcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNlbGxUcGw7IGNvbnRleHQ6IHsgY29sdW1uOiBjb2x1bW4sIHJvdzogcm93LCBpOiBpIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC90ZD5cclxuICAgIDwvdHI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPHgtZW1wdHkgKm5nSWY9XCJpc0VtcHR5ICYmIGxldmVsID09PSAwXCI+PC94LWVtcHR5PlxyXG48L3Rib2R5PlxyXG5cclxuPG5nLXRlbXBsYXRlICN2aXJ0dWFsU2Nyb2xsVHBsPlxyXG4gIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcclxuICAgICN2aXJ0dWFsQm9keVxyXG4gICAgKm5nSWY9XCJ2aXJ0dWFsU2Nyb2xsOyBlbHNlIGJvZHlUcGxcIlxyXG4gICAgW2l0ZW1TaXplXT1cImdldEl0ZW1TaXplXCJcclxuICAgIFttaW5CdWZmZXJQeF09XCJtaW5CdWZmZXJQeFwiXHJcbiAgICBbbWF4QnVmZmVyUHhdPVwibWF4QnVmZmVyUHhcIlxyXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJib2R5SGVpZ2h0XCJcclxuICA+XHJcbiAgICA8dHJcclxuICAgICAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgcm93IG9mIGRhdGE7IGxldCBpbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5SXRlbVwiXHJcbiAgICAgIFtjbGFzcy54LXRhYmxlLWFjdGl2YXRlZF09XCJhbGxvd1NlbGVjdFJvdyAmJiBhY3RpdmF0ZWRSb3c/LmlkID09PSByb3cuaWRcIlxyXG4gICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImdldFJvd0hlaWdodFwiXHJcbiAgICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImdldFJvd0hlaWdodFwiXHJcbiAgICAgIChjbGljayk9XCJyb3dDbGljaygkZXZlbnQsIHJvdylcIlxyXG4gICAgPlxyXG4gICAgICA8IS0tIHJvd0hlaWdodCDkuLogMCDnmoTml7blgJnvvIxpbmRleCDkuIvmoIfojrflj5bkuI3liLAgLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyb3dUcGw7IGNvbnRleHQ6IHsgcm93OiByb3csIGk6IGdldEluZGV4KGluZGV4LCByb3cpIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvdHI+XHJcbiAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2JvZHlUcGw+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcm93IG9mIGRhdGE7IGluZGV4IGFzIGk7IHRyYWNrQnk6IHRyYWNrQnlJdGVtXCI+XHJcbiAgICA8dHJcclxuICAgICAgW2NsYXNzLngtdGFibGUtYWN0aXZhdGVkXT1cImFsbG93U2VsZWN0Um93ICYmIGFjdGl2YXRlZFJvdz8uaWQgPT09IHJvdy5pZFwiXHJcbiAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiZ2V0Um93SGVpZ2h0XCJcclxuICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiZ2V0Um93SGVpZ2h0XCJcclxuICAgICAgKGNsaWNrKT1cInJvd0NsaWNrKCRldmVudCwgcm93KVwiXHJcbiAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyb3dUcGw7IGNvbnRleHQ6IHsgcm93OiByb3csIGk6IGkgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC90cj5cclxuICAgIDxkaXYgY2xhc3M9XCJ4LXRhYmxlLWNoaWxkcmVuXCIgW2NsYXNzLngtdGFibGUtZXhwYW5kVHBsXT1cImV4cGFuZFRwbFwiICpuZ0lmPVwidGFibGUudHJlZVRhYmxlICYmIHJvdy5jaGlsZHJlbiAmJiByb3cuZXhwYW5kZWRcIj5cclxuICAgICAgPHgtdGFibGUtYm9keVxyXG4gICAgICAgIFtkYXRhXT1cInJvdy5jaGlsZHJlblwiXHJcbiAgICAgICAgW2NvbHVtbnNdPVwidGFibGUuY29sdW1uc1wiXHJcbiAgICAgICAgW2l0ZW1TaXplXT1cInRhYmxlLml0ZW1TaXplXCJcclxuICAgICAgICBbcm93SGVpZ2h0XT1cInRhYmxlLnJvd0hlaWdodFwiXHJcbiAgICAgICAgW2NvbHVtblRwbF09XCJ0YWJsZS5ib2R5Q29sdW1uVHBsXCJcclxuICAgICAgICBbYWxsb3dTZWxlY3RSb3ddPVwidGFibGUuYWxsb3dTZWxlY3RSb3dcIlxyXG4gICAgICAgIFtyb3dDbGFzc109XCJ0YWJsZS5yb3dDbGFzc1wiXHJcbiAgICAgICAgW2NlbGxDb25maWddPVwidGFibGUuY2VsbENvbmZpZz8udGJvZHlcIlxyXG4gICAgICAgIFsoYWN0aXZhdGVkUm93KV09XCJ0YWJsZS5hY3RpdmF0ZWRSb3dcIlxyXG4gICAgICAgIFtleHBhbmRlZEFsbF09XCJleHBhbmRlZEFsbFwiXHJcbiAgICAgICAgW2V4cGFuZFRwbF09XCJleHBhbmRUcGxcIlxyXG4gICAgICAgIChhY3RpdmF0ZWRSb3dDaGFuZ2UpPVwidGFibGUuYWN0aXZhdGVkUm93Q2hhbmdlLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgW2xldmVsXT1cInJvdy5sZXZlbCEgKyAxXCJcclxuICAgICAgICBbdGFibGVdPVwidGFibGVcIlxyXG4gICAgICA+PC94LXRhYmxlLWJvZHk+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcm93VHBsIGxldC1yb3c9XCJyb3dcIiBsZXQtaT1cImlcIj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibGV2ZWwgPiAwICYmIGV4cGFuZFRwbFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqeE91dGxldD1cImV4cGFuZFRwbDsgY29udGV4dDogeyAkcm93OiByb3csICRpbmRleDogaSwgJGxldmVsOiBsZXZlbCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxldmVsID09PSAwIHx8ICFleHBhbmRUcGxcIj5cclxuICAgIDxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJyb3dEZWZhdWx0OyBjb250ZXh0OiB7IHJvdzogcm93LCBpOiBpLCBsZXZlbDogbGV2ZWwgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNyb3dEZWZhdWx0IGxldC1yb3c9XCJyb3dcIiBsZXQtaT1cImlcIj5cclxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgaW5kZXggYXMgajsgdHJhY2tCeTogdHJhY2tCeUl0ZW1cIj5cclxuICAgIDx0ZFxyXG4gICAgICBbc3R5bGUud2lkdGgucHhdPVwiY29sdW1uLndpZHRoXCJcclxuICAgICAgW3N0eWxlLmZsZXhdPVwiZ2V0RmxleChjb2x1bW4pXCJcclxuICAgICAgW3RpdGxlXT1cImdldFRpdGxlKHJvdywgY29sdW1uKVwiXHJcbiAgICAgIFtjbGFzcy54LXRhYmxlLXN0aWNreV09XCJ0YWJsZS5nZXRTdGlja3lMZWZ0KGNvbHVtbikgfHwgdGFibGUuZ2V0U3RpY2t5UmlnaHQoY29sdW1uKVwiXHJcbiAgICAgIFtjbGFzcy54LXRhYmxlLXN0aWNreS1sZWZ0XT1cInRhYmxlLmdldFN0aWNreUxlZnQoY29sdW1uKVwiXHJcbiAgICAgIFtjbGFzcy54LXRhYmxlLXN0aWNreS1yaWdodF09XCJ0YWJsZS5nZXRTdGlja3lSaWdodChjb2x1bW4pXCJcclxuICAgICAgW2NsYXNzLngtdGFibGUtc3RpY2t5LWxlZnQtbGFzdF09XCJ0YWJsZS5nZXRTdGlja3lMZWZ0TGFzdChjb2x1bW4pXCJcclxuICAgICAgW2NsYXNzLngtdGFibGUtc3RpY2t5LXJpZ2h0LWZpcnN0XT1cInRhYmxlLmdldFN0aWNreVJpZ2h0Rmlyc3QoY29sdW1uKVwiXHJcbiAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cImNvbHVtbi5sZWZ0XCJcclxuICAgICAgW3N0eWxlLnJpZ2h0LnB4XT1cImNvbHVtbi5yaWdodFwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cIiFyb3dDbGFzcyA/IHt9IDogcm93Q2xhc3Mocm93LCBpKVwiXHJcbiAgICA+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cImNlbGxUcGw7IGNvbnRleHQ6IHsgY29sdW1uOiBjb2x1bW4sIHJvdzogcm93LCBpOiBpIH1cIj48L25nLXRlbXBsYXRlPlxyXG4gICAgPC90ZD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY2VsbFRwbCBsZXQtY29sdW1uPVwiY29sdW1uXCIgbGV0LXJvdz1cInJvd1wiIGxldC1pPVwiaVwiPlxyXG4gIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImNvbHVtbi50eXBlXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInY2hlY2tib3gnXCI+XHJcbiAgICAgIDx4LWNoZWNrYm94XHJcbiAgICAgICAgW2RhdGFdPVwiW3sgaWQ6IHRydWUsIGxhYmVsOiAnJyB9XVwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dbY29sdW1uLmlkXVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cInJvdy5kaXNhYmxlZFwiXHJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidGFibGUuYm9keUNoZWNrZWQoJGV2ZW50LCBjb2x1bW4pXCJcclxuICAgICAgPjwveC1jaGVja2JveD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2luZGV4J1wiPlxyXG4gICAgICA8ZGl2Pnt7IHRhYmxlLmdldEluZGV4KGkpIH19PC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYmxlLmlzRXhwYW5kQ29sdW1uKGNvbHVtbilcIj5cclxuICAgICAgICA8eC1idXR0b25cclxuICAgICAgICAgIFtjbGFzcy5pcy1sZWFmXT1cIiFyb3cubGVhZlwiXHJcbiAgICAgICAgICBbY2xhc3MuaXMtZXhwYW5kZWRdPVwicm93LmV4cGFuZGVkXCJcclxuICAgICAgICAgIChjbGljayk9XCJvbkV4cGFuZGVkKCRldmVudCwgcm93KVwiXHJcbiAgICAgICAgICBpY29uPVwiZnRvLWNoZXZyb24tcmlnaHRcIlxyXG4gICAgICAgICAgc2l6ZT1cIm1pbmlcIlxyXG4gICAgICAgICAgb25seUljb25cclxuICAgICAgICAgIGNsYXNzPVwieC10YWJsZS1leHBhbmRcIlxyXG4gICAgICAgICAgW3N0eWxlLm1hcmdpbi1sZWZ0LnJlbV09XCJyb3cubGV2ZWwgLSAwLjVcIlxyXG4gICAgICAgID48L3gtYnV0dG9uPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqeE91dGxldD1cImNvbHVtblRwbFtjb2x1bW4uaWRdOyBjb250ZXh0OiB7ICRjb2x1bW46IGNvbHVtbiwgJHJvdzogcm93LCAkaW5kZXg6IHRhYmxlLmdldEluZGV4KGkpIH1cIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICp4T3V0bGV0PVwidGFibGUuYm9keVRkVHBsOyBjb250ZXh0OiB7ICRjb2x1bW46IGNvbHVtbiwgJHJvdzogcm93LCAkaW5kZXg6IHRhYmxlLmdldEluZGV4KGkpIH1cIj5cclxuICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJyb3dbY29sdW1uLmlkXVwiIFtzdHlsZS50ZXh0LWFsaWduXT1cImNvbHVtbi50ZXh0QWxpZ25cIj48L2Rpdj5cclxuICAgICAgICAgIHt7IHRhYmxlLnJvd0V4cGFuZE5leHQgJiYgdGFibGUucm93RXhwYW5kTmV4dC5pZCA9PT0gY29sdW1uLmlkID8gJ3gtdGFibGUtYm9keS1sZXZlbC0nICsgcm93LmxldmVsIDogJycgfX1cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
218
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYm9keS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS90YWJsZS90YWJsZS1ib2R5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3RhYmxlL3RhYmxlLWJvZHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxpQkFBaUIsRUFJakIsdUJBQXVCLEVBR3ZCLE1BQU0sRUFDTixTQUFTLEVBQ1QsS0FBSyxFQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBdUMsTUFBTSxrQkFBa0IsQ0FBQztBQUM3RyxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQTJCLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFRM0MsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGtCQUFrQjtJQW1CekQ7SUFDRSxxREFBcUQ7SUFDOUMsUUFBbUIsRUFDbkIsVUFBc0IsRUFDdEIsR0FBc0IsRUFDSixHQUFRLEVBQzFCLGFBQTZCO1FBRXBDLEtBQUssRUFBRSxDQUFDO1FBTkQsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ0osUUFBRyxHQUFILEdBQUcsQ0FBSztRQUMxQixrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUF4QnRDLGVBQVUsR0FBZ0MsRUFBRSxDQUFDO1FBZXJDLGVBQVUs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SUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDO1NBQ2hFO2FBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsSUFBSSxDQUFDLElBQUksRUFBRTtZQUN6QyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDOUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO1lBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztTQUNoQztRQUNELElBQUksSUFBSSxFQUFFO1lBQ1IsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUM7U0FDL0U7UUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDdkQsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFO1lBQzVDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUMxQyxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDM0MsT0FBTyxXQUFXLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lB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LGlCQUVoQixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNOzswQkEwQjVDLE1BQU07MkJBQUMsUUFBUTt5RUFaRSxLQUFLO3NCQUF4QixTQUFTO3VCQUFDLE9BQU87Z0JBQ1EsV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhO2dCQUNmLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBSZW5kZXJlcjIsXHJcbiAgRWxlbWVudFJlZixcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIE9uQ2hhbmdlcyxcclxuICBJbmplY3QsXHJcbiAgVmlld0NoaWxkLFxyXG4gIElucHV0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFhUYWJsZUJvZHlQcmVmaXgsIFhUYWJsZUJvZHlQcm9wZXJ0eSwgWFRhYmxlUm93LCBYVGFibGVDb2x1bW4sIFhUYWJsZUNlbGwgfSBmcm9tICcuL3RhYmxlLnByb3BlcnR5JztcclxuaW1wb3J0IHsgcmVtb3ZlTmdUYWcsIFhJc0NoYW5nZSwgWFJlc2l6ZSwgWENvbmZpZ1NlcnZpY2UsIFhOdW1iZXIsIHN0cmlwVGFncyB9IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IGAke1hUYWJsZUJvZHlQcmVmaXh9YCxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtYm9keS5jb21wb25lbnQuaHRtbCcsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWFRhYmxlQm9keUNvbXBvbmVudCBleHRlbmRzIFhUYWJsZUJvZHlQcm9wZXJ0eSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICB0Ym9keVN0eWxlOiB7IFtwcm9wZXJ0eTogc3RyaW5nXTogYW55IH0gPSB7fTtcclxuICBnZXQgaXNFbXB0eSgpIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGE/Lmxlbmd0aCA9PT0gMDtcclxuICB9XHJcbiAgZ2V0IGdldFJvd0hlaWdodCgpIHtcclxuICAgIHJldHVybiB0aGlzLnJvd0hlaWdodCA9PSAwID8gJycgOiB0aGlzLnJvd0hlaWdodDtcclxuICB9XHJcbiAgZ2V0IGdldEl0ZW1TaXplKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucm93SGVpZ2h0ICE9PSAwICYmIHRoaXMuaXRlbVNpemUgPiB0aGlzLnJvd0hlaWdodCA/IHRoaXMucm93SGVpZ2h0IDogdGhpcy5pdGVtU2l6ZTtcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3Rib2R5JykgdGJvZHkhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ3ZpcnR1YWxCb2R5JykgdmlydHVhbEJvZHkhOiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XHJcbiAgQElucHV0KCkgdGFibGU6IGFueTtcclxuXHJcbiAgcHJpdmF0ZSBfdW5TdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcml2YXRlIF9yZXNpemVPYnNlcnZlciE6IFJlc2l6ZU9ic2VydmVyO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIC8vIEBPcHRpb25hbCgpIEBIb3N0KCkgcHVibGljIHRhYmxlOiBYVGFibGVDb21wb25lbnQsXHJcbiAgICBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwdWJsaWMgZG9jOiBhbnksXHJcbiAgICBwdWJsaWMgY29uZmlnU2VydmljZTogWENvbmZpZ1NlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG4gIG5nT25DaGFuZ2VzKHNpbXBsZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGNvbnN0IHsgZGF0YSwgY29sdW1ucywgYWN0aXZhdGVkUm93LCBtZXJnZVJ1bGUsIGV4cGFuZGVkQWxsLCBhZGFwdGlvbkhlaWdodCB9ID0gc2ltcGxlcztcclxuICAgIFhJc0NoYW5nZShkYXRhLCBjb2x1bW5zLCBhY3RpdmF0ZWRSb3csIG1lcmdlUnVsZSwgZXhwYW5kZWRBbGwpICYmIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIFhJc0NoYW5nZShhZGFwdGlvbkhlaWdodCkgJiYgdGhpcy5zZXRBZGFwdGlvbkhlaWdodCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICByZW1vdmVOZ1RhZyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XHJcbiAgICBpZiAodGhpcy5sZXZlbCA+IDApIHJlbW92ZU5nVGFnKHRoaXMudGJvZHkubmF0aXZlRWxlbWVudCk7XHJcbiAgICBpZiAodGhpcy5zY3JvbGw/LnkgJiYgIXRoaXMuYm9keUhlaWdodCkge1xyXG4gICAgICB0aGlzLmJvZHlIZWlnaHQgPSB0aGlzLnNjcm9sbC55O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy50YWJsZS52aXJ0dWFsQm9keSA9IHRoaXMudmlydHVhbEJvZHk7XHJcbiAgICB0aGlzLnRhYmxlLmJvZHlDaGFuZ2UgPSAoKSA9PiB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLnNldFN1YmplY3QoKTtcclxuICAgIHRoaXMuc2V0U2Nyb2xsKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3VuU3ViamVjdC5uZXh0KCk7XHJcbiAgICB0aGlzLl91blN1YmplY3QudW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuX3Jlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XHJcbiAgfVxyXG5cclxuICBzZXRTdWJqZWN0KCkge1xyXG4gICAgaWYgKHRoaXMudmlydHVhbEJvZHkpIHtcclxuICAgICAgdGhpcy50YWJsZS5zY3JvbGxDb250ZW50RWxlID0gdGhpcy52aXJ0dWFsQm9keT8uZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICAgICcuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcidcclxuICAgICAgKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgaWYgKHRoaXMuc2Nyb2xsPy54KSB7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRhYmxlLnNjcm9sbENvbnRlbnRFbGUsICd3aWR0aCcsIGAke3RoaXMuc2Nyb2xsLnh9cHhgKTtcclxuICAgICAgfVxyXG4gICAgICBYUmVzaXplKHRoaXMudGFibGUudGFibGUubmF0aXZlRWxlbWVudCwgdGhpcy50YWJsZS5zY3JvbGxDb250ZW50RWxlKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICAgIHRoaXMuX3Jlc2l6ZU9ic2VydmVyID0geC5yZXNpemVPYnNlcnZlcjtcclxuICAgICAgICAgIHRoaXMuc2V0QWRhcHRpb25IZWlnaHQoKTtcclxuICAgICAgICAgIHRoaXMuc2V0U2Nyb2xsKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zZXRBZGFwdGlvbkhlaWdodCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudGFibGUuc2Nyb2xsQ29udGVudEVsZSkge1xyXG4gICAgICBmcm9tRXZlbnQodGhpcy52aXJ0dWFsQm9keS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdzY3JvbGwnKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGVsZSA9IHguc3JjRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICAgIHRoaXMudGFibGUuc2Nyb2xsVG9wID0gZWxlLnNjcm9sbFRvcDtcclxuICAgICAgICAgIHRoaXMudGFibGUuc2Nyb2xsTGVmdCA9IGVsZS5zY3JvbGxMZWZ0O1xyXG4gICAgICAgICAgaWYgKGVsZS5zY3JvbGxMZWZ0ID49IDAgJiYgdGhpcy50YWJsZS50aGVhZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCB0aGVhZCBvZiB0aGlzLnRhYmxlLnRoZWFkcykge1xyXG4gICAgICAgICAgICAgIHRoZWFkLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRoaXMudGFibGUuc2Nyb2xsTGVmdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy50YWJsZS5zY3JvbGxMZWZ0TWF4ID0gZWxlLnNjcm9sbExlZnQgKyBlbGUuY2xpZW50V2lkdGggPT09IGVsZS5zY3JvbGxXaWR0aDtcclxuICAgICAgICAgIHRoaXMudGFibGUuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFNjcm9sbCgpIHtcclxuICAgIGlmICghdGhpcy52aXJ0dWFsQm9keSkgcmV0dXJuO1xyXG4gICAgY29uc3QgZWxlID0gdGhpcy52aXJ0dWFsQm9keS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBjb25zdCBoYXNZID0gZWxlLnNjcm9sbEhlaWdodCA+ICh0aGlzLmJvZHlIZWlnaHQgYXMgbnVtYmVyKTtcclxuICAgIGNvbnN0IGhhc1ggPSB0aGlzLnRhYmxlLnNjcm9sbENvbnRlbnRFbGUuY2xpZW50V2lkdGggPiBlbGUuY2xpZW50V2lkdGg7XHJcblxyXG4gICAgaWYgKCF0aGlzLnRhYmxlLmhhc1Njcm9sbFkgJiYgaGFzWSkge1xyXG4gICAgICB0aGlzLnRhYmxlLmhhc1Njcm9sbFkgPSB0cnVlO1xyXG4gICAgICB0aGlzLnRhYmxlLnNjcm9sbFlXaWR0aCA9IGVsZS5vZmZzZXRXaWR0aCAtIGVsZS5jbGllbnRXaWR0aDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy50YWJsZS5oYXNTY3JvbGxZICYmICFoYXNZKSB7XHJcbiAgICAgIHRoaXMudGFibGUuaGFzU2Nyb2xsWSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnRhYmxlLnNjcm9sbFlXaWR0aCA9IDA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLnRhYmxlLmhhc1Njcm9sbFggJiYgaGFzWCkge1xyXG4gICAgICB0aGlzLnRhYmxlLmhhc1Njcm9sbFggPSB0cnVlO1xyXG4gICAgICB0aGlzLnRhYmxlLnNjcm9sbFhIZWlnaHQgPSBlbGUub2Zmc2V0SGVpZ2h0IC0gZWxlLmNsaWVudEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy50YWJsZS5oYXNTY3JvbGxYICYmICFoYXNYKSB7XHJcbiAgICAgIHRoaXMudGFibGUuaGFzU2Nyb2xsWCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnRhYmxlLnNjcm9sbFhIZWlnaHQgPSAwO1xyXG4gICAgICB0aGlzLnRhYmxlLnNjcm9sbFhXaWR0aCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAoaGFzWCkge1xyXG4gICAgICB0aGlzLnRhYmxlLnNjcm9sbFhXaWR0aCA9IGVsZS5vZmZzZXRXaWR0aCArIGVsZS5zY3JvbGxXaWR0aCAtIGVsZS5jbGllbnRXaWR0aDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRhYmxlLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzZXRTdHlsZSgpIHtcclxuICAgIGxldCBoZWlnaHQgPSB0aGlzLnJvd0hlaWdodCA9PSAwID8gJycgOiB0aGlzLnJvd0hlaWdodDtcclxuICAgIGlmICh0aGlzLmNlbGxDb25maWcgJiYgdGhpcy5jZWxsQ29uZmlnLmNlbGxzKSB7XHJcbiAgICAgIGNvbnN0IHNwdCA9IHRoaXMuY2VsbENvbmZpZy5jZWxscy5tYXAoKHgpID0+IHtcclxuICAgICAgICBjb25zdCBncmlkQXJlYVNwdCA9IHguZ3JpZEFyZWE/LnNwbGl0KCcvJyk7XHJcbiAgICAgICAgcmV0dXJuIGdyaWRBcmVhU3B0ICYmIGdyaWRBcmVhU3B0Lmxlbmd0aCA+IDMgPyBOdW1iZXIoZ3JpZEFyZWFTcHRbMl0pIDogMjtcclxuICAgICAgfSk7XHJcbiAgICAgIGhlaWdodCA9ICgoTWF0aC5tYXgoLi4uc3B0KSAtIDEpICogKGhlaWdodCBhcyBudW1iZXIpKSBhcyBYTnVtYmVyO1xyXG4gICAgfVxyXG4gICAgdGhpcy50Ym9keVN0eWxlID0ge1xyXG4gICAgICBoZWlnaHQ6IGAke2hlaWdodH1weGBcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBnZXRJbmRleChpbmRleDogbnVtYmVyLCBpdGVtOiBYVGFibGVSb3cpIHtcclxuICAgIGlmICghaXNOYU4oaW5kZXgpKSByZXR1cm4gaW5kZXg7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhLmluZGV4T2YoaXRlbSk7XHJcbiAgfVxyXG5cclxuICBnZXRGbGV4KGNvbHVtbjogWFRhYmxlQ29sdW1uKSB7XHJcbiAgICBpZiAoY29sdW1uLndpZHRoKSByZXR1cm4gJ25vbmUnO1xyXG4gICAgaWYgKCFjb2x1bW4uZmxleCkgcmV0dXJuIDE7XHJcbiAgICByZXR1cm4gY29sdW1uLmZsZXg7XHJcbiAgfVxyXG5cclxuICBnZXRUaXRsZShyb3c6IFhUYWJsZVJvdywgY29sdW1uOiBYVGFibGVDZWxsIHwgYW55KSB7XHJcbiAgICBsZXQgaXQgPSByb3dbY29sdW1uLmlkIGFzIHN0cmluZ107XHJcbiAgICByZXR1cm4gaXQgPyBzdHJpcFRhZ3MoaXQpIDogJyc7XHJcbiAgfVxyXG5cclxuICBzZXRBZGFwdGlvbkhlaWdodCgpIHtcclxuICAgIGlmICgodGhpcy5hZGFwdGlvbkhlaWdodCBhcyBudW1iZXIpID4gMCkge1xyXG4gICAgICBjb25zdCBjYXB0aW9uSGVpZ2h0ID0gdGhpcy50YWJsZS50Y2FwdGlvbj8ubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQgfHwgMDtcclxuICAgICAgbGV0IGhlYWRIZWlnaHQgPSAwO1xyXG4gICAgICBmb3IgKGxldCB0aGVhZCBvZiB0aGlzLnRhYmxlLnRoZWFkcykge1xyXG4gICAgICAgIGhlYWRIZWlnaHQgKz0gdGhlYWQubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQ7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZm9vdEhlaWdodCA9IHRoaXMudGFibGUudGZvb3Q/Lm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0IHx8IDA7XHJcbiAgICAgIGNvbnN0IHBhZ2luYXRpb25IZWlnaHQgPSB0aGlzLnRhYmxlLnBhZ2luYXRpb24/LmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQgfHwgMDtcclxuICAgICAgdGhpcy5ib2R5SGVpZ2h0ID1cclxuICAgICAgICBOdW1iZXIodGhpcy5kb2NQZXJjZW50KSAqIHRoaXMuZG9jLmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgLVxyXG4gICAgICAgIGNhcHRpb25IZWlnaHQgLVxyXG4gICAgICAgIGhlYWRIZWlnaHQgLVxyXG4gICAgICAgIGZvb3RIZWlnaHQgLVxyXG4gICAgICAgIHBhZ2luYXRpb25IZWlnaHQgLVxyXG4gICAgICAgIE51bWJlcih0aGlzLmFkYXB0aW9uSGVpZ2h0KTtcclxuICAgICAgaWYgKHRoaXMuYm9keUhlaWdodCA8IDApIHRoaXMuYm9keUhlaWdodCA9IDA7XHJcbiAgICAgIHRoaXMubWluQnVmZmVyUHggPSB0aGlzLmJvZHlIZWlnaHQ7XHJcbiAgICAgIHRoaXMubWF4QnVmZmVyUHggPSB0aGlzLmJvZHlIZWlnaHQgKiAxLjI7XHJcbiAgICAgIHRoaXMudmlydHVhbEJvZHlbJ19zY3JvbGxTdHJhdGVneSddWydfbWluQnVmZmVyUHgnXSA9IHRoaXMubWluQnVmZmVyUHg7XHJcbiAgICAgIHRoaXMudmlydHVhbEJvZHlbJ19zY3JvbGxTdHJhdGVneSddWydfbWF4QnVmZmVyUHgnXSA9IHRoaXMubWF4QnVmZmVyUHg7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJvd0NsaWNrKGV2ZW50OiBFdmVudCwgcm93OiBYVGFibGVSb3cpIHtcclxuICAgIGlmIChyb3cuZGlzYWJsZWQpIHJldHVybjtcclxuICAgIHRoaXMuYWN0aXZhdGVkUm93ID0gcm93O1xyXG4gICAgaWYgKHRoaXMudGFibGUuYWxsb3dDaGVja1JvdyAmJiB0aGlzLnRhYmxlLnJvd0NoZWNrZWQpIHtcclxuICAgICAgaWYgKCFBcnJheS5mcm9tKChldmVudCBhcyBhbnkpLnBhdGgpLmZpbmQoKHg6IGFueSkgPT4geC5sb2NhbE5hbWUgPT0gJ3gtY2hlY2tib3gnKSkge1xyXG4gICAgICAgIHJvd1t0aGlzLnRhYmxlLnJvd0NoZWNrZWQuaWRdID0gIXJvd1t0aGlzLnRhYmxlLnJvd0NoZWNrZWQuaWRdO1xyXG4gICAgICAgIHRoaXMudGFibGUuYm9keUNoZWNrZWQocm93W3RoaXMudGFibGUucm93Q2hlY2tlZC5pZF0sIHRoaXMudGFibGUucm93Q2hlY2tlZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuYWN0aXZhdGVkUm93Q2hhbmdlLmVtaXQocm93KTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG9uRXhwYW5kZWQoX2V2ZW50OiBFdmVudCwgbm9kZTogWFRhYmxlUm93KSB7XHJcbiAgICBub2RlLmV4cGFuZGVkID0gIW5vZGUuZXhwYW5kZWQ7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5SXRlbShfaW5kZXg6IG51bWJlciwgaXRlbTogWFRhYmxlUm93IHwgWFRhYmxlQ29sdW1uKSB7XHJcbiAgICByZXR1cm4gaXRlbS5pZDtcclxuICB9XHJcbn1cclxuIiwiPHRib2R5ICN0Ym9keT5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2VsbENvbmZpZzsgZWxzZSB2aXJ0dWFsU2Nyb2xsVHBsXCI+XHJcbiAgICA8dHIgKm5nRm9yPVwibGV0IHJvdyBvZiBkYXRhOyBpbmRleCBhcyBpOyB0cmFja0J5OiB0cmFja0J5SXRlbVwiIFtzdHlsZS5ncmlkVGVtcGxhdGVDb2x1bW5zXT1cImNlbGxDb25maWcuZ3JpZFRlbXBsYXRlQ29sdW1uc1wiPlxyXG4gICAgICA8dGRcclxuICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNlbGxDb25maWcuY2VsbHM7IGluZGV4IGFzIGpcIlxyXG4gICAgICAgIFt0aXRsZV09XCJnZXRUaXRsZShyb3csIGNvbHVtbilcIlxyXG4gICAgICAgIFtjbGFzcy54LXRhYmxlLXN0aWNreV09XCJ0YWJsZS5nZXRTdGlja3lMZWZ0KGNvbHVtbikgfHwgdGFibGUuZ2V0U3RpY2t5UmlnaHQoY29sdW1uKVwiXHJcbiAgICAgICAgW2NsYXNzLngtdGFibGUtc3RpY2t5LWxlZnRdPVwidGFibGUuZ2V0U3RpY2t5TGVmdChjb2x1bW4pXCJcclxuICAgICAgICBbY2xhc3MueC10YWJsZS1zdGlja3ktcmlnaHRdPVwidGFibGUuZ2V0U3RpY2t5UmlnaHQoY29sdW1uKVwiXHJcbiAgICAgICAgW2NsYXNzLngtdGFibGUtc3RpY2t5LWxlZnQtbGFzdF09XCJ0YWJsZS5nZXRTdGlja3lMZWZ0TGFzdChjb2x1bW4pXCJcclxuICAgICAgICBbY2xhc3MueC10YWJsZS1zdGlja3ktcmlnaHQtZmlyc3RdPVwidGFibGUuZ2V0U3RpY2t5UmlnaHRGaXJzdChjb2x1bW4pXCJcclxuICAgICAgICBbc3R5bGUubGVmdC5weF09XCJjb2x1bW4ubGVmdFwiXHJcbiAgICAgICAgW3N0eWxlLnJpZ2h0LnB4XT1cImNvbHVtbi5yaWdodFwiXHJcbiAgICAgICAgW3N0eWxlLmdyaWQtYXJlYV09XCJjb2x1bW4uZ3JpZEFyZWFcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNlbGxUcGw7IGNvbnRleHQ6IHsgY29sdW1uOiBjb2x1bW4sIHJvdzogcm93LCBpOiBpIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC90ZD5cclxuICAgIDwvdHI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPHgtZW1wdHkgKm5nSWY9XCJpc0VtcHR5ICYmIGxldmVsID09PSAwXCI+PC94LWVtcHR5PlxyXG48L3Rib2R5PlxyXG5cclxuPG5nLXRlbXBsYXRlICN2aXJ0dWFsU2Nyb2xsVHBsPlxyXG4gIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcclxuICAgICN2aXJ0dWFsQm9keVxyXG4gICAgKm5nSWY9XCJ2aXJ0dWFsU2Nyb2xsOyBlbHNlIGJvZHlUcGxcIlxyXG4gICAgW2l0ZW1TaXplXT1cImdldEl0ZW1TaXplXCJcclxuICAgIFttaW5CdWZmZXJQeF09XCJtaW5CdWZmZXJQeFwiXHJcbiAgICBbbWF4QnVmZmVyUHhdPVwibWF4QnVmZmVyUHhcIlxyXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJib2R5SGVpZ2h0XCJcclxuICA+XHJcbiAgICA8dHJcclxuICAgICAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgcm93IG9mIGRhdGE7IGxldCBpbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5SXRlbVwiXHJcbiAgICAgIFtjbGFzcy54LXRhYmxlLWFjdGl2YXRlZF09XCJhbGxvd1NlbGVjdFJvdyAmJiBhY3RpdmF0ZWRSb3c/LmlkID09PSByb3cuaWRcIlxyXG4gICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImdldFJvd0hlaWdodFwiXHJcbiAgICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImdldFJvd0hlaWdodFwiXHJcbiAgICAgIChjbGljayk9XCJyb3dDbGljaygkZXZlbnQsIHJvdylcIlxyXG4gICAgPlxyXG4gICAgICA8IS0tIHJvd0hlaWdodCDkuLogMCDnmoTml7blgJnvvIxpbmRleCDkuIvmoIfojrflj5bkuI3liLAgLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyb3dUcGw7IGNvbnRleHQ6IHsgcm93OiByb3csIGk6IGdldEluZGV4KGluZGV4LCByb3cpIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvdHI+XHJcbiAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2JvZHlUcGw+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcm93IG9mIGRhdGE7IGluZGV4IGFzIGk7IHRyYWNrQnk6IHRyYWNrQnlJdGVtXCI+XHJcbiAgICA8dHJcclxuICAgICAgW2NsYXNzLngtdGFibGUtYWN0aXZhdGVkXT1cImFsbG93U2VsZWN0Um93ICYmIGFjdGl2YXRlZFJvdz8uaWQgPT09IHJvdy5pZFwiXHJcbiAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiZ2V0Um93SGVpZ2h0XCJcclxuICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiZ2V0Um93SGVpZ2h0XCJcclxuICAgICAgKGNsaWNrKT1cInJvd0NsaWNrKCRldmVudCwgcm93KVwiXHJcbiAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyb3dUcGw7IGNvbnRleHQ6IHsgcm93OiByb3csIGk6IGkgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC90cj5cclxuICAgIDxkaXYgY2xhc3M9XCJ4LXRhYmxlLWNoaWxkcmVuXCIgW2NsYXNzLngtdGFibGUtZXhwYW5kVHBsXT1cImV4cGFuZFRwbFwiICpuZ0lmPVwidGFibGUudHJlZVRhYmxlICYmIHJvdy5jaGlsZHJlbiAmJiByb3cuZXhwYW5kZWRcIj5cclxuICAgICAgPHgtdGFibGUtYm9keVxyXG4gICAgICAgIFtkYXRhXT1cInJvdy5jaGlsZHJlblwiXHJcbiAgICAgICAgW2NvbHVtbnNdPVwidGFibGUuY29sdW1uc1wiXHJcbiAgICAgICAgW2l0ZW1TaXplXT1cInRhYmxlLml0ZW1TaXplXCJcclxuICAgICAgICBbcm93SGVpZ2h0XT1cInRhYmxlLnJvd0hlaWdodFwiXHJcbiAgICAgICAgW2NvbHVtblRwbF09XCJ0YWJsZS5ib2R5Q29sdW1uVHBsXCJcclxuICAgICAgICBbYWxsb3dTZWxlY3RSb3ddPVwidGFibGUuYWxsb3dTZWxlY3RSb3dcIlxyXG4gICAgICAgIFtyb3dDbGFzc109XCJ0YWJsZS5yb3dDbGFzc1wiXHJcbiAgICAgICAgW2NlbGxDb25maWddPVwidGFibGUuY2VsbENvbmZpZz8udGJvZHlcIlxyXG4gICAgICAgIFsoYWN0aXZhdGVkUm93KV09XCJ0YWJsZS5hY3RpdmF0ZWRSb3dcIlxyXG4gICAgICAgIFtleHBhbmRlZEFsbF09XCJleHBhbmRlZEFsbFwiXHJcbiAgICAgICAgW2V4cGFuZFRwbF09XCJleHBhbmRUcGxcIlxyXG4gICAgICAgIChhY3RpdmF0ZWRSb3dDaGFuZ2UpPVwidGFibGUuYWN0aXZhdGVkUm93Q2hhbmdlLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgW2xldmVsXT1cInJvdy5sZXZlbCEgKyAxXCJcclxuICAgICAgICBbdGFibGVdPVwidGFibGVcIlxyXG4gICAgICA+PC94LXRhYmxlLWJvZHk+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcm93VHBsIGxldC1yb3c9XCJyb3dcIiBsZXQtaT1cImlcIj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibGV2ZWwgPiAwICYmIGV4cGFuZFRwbFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqeE91dGxldD1cImV4cGFuZFRwbDsgY29udGV4dDogeyAkcm93OiByb3csICRpbmRleDogaSwgJGxldmVsOiBsZXZlbCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxldmVsID09PSAwIHx8ICFleHBhbmRUcGxcIj5cclxuICAgIDxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJyb3dEZWZhdWx0OyBjb250ZXh0OiB7IHJvdzogcm93LCBpOiBpLCBsZXZlbDogbGV2ZWwgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNyb3dEZWZhdWx0IGxldC1yb3c9XCJyb3dcIiBsZXQtaT1cImlcIj5cclxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgaW5kZXggYXMgajsgdHJhY2tCeTogdHJhY2tCeUl0ZW1cIj5cclxuICAgIDx0ZFxyXG4gICAgICBbc3R5bGUud2lkdGgucHhdPVwiY29sdW1uLndpZHRoXCJcclxuICAgICAgW3N0eWxlLmZsZXhdPVwiZ2V0RmxleChjb2x1bW4pXCJcclxuICAgICAgW3RpdGxlXT1cImdldFRpdGxlKHJvdywgY29sdW1uKVwiXHJcbiAgICAgIFtjbGFzcy54LXRhYmxlLWRyYWdnaW5nXT1cImNvbHVtbi5kcmFnZ2luZ1wiXHJcbiAgICAgIFtjbGFzcy54LXRhYmxlLXN0aWNreV09XCJ0YWJsZS5nZXRTdGlja3lMZWZ0KGNvbHVtbikgfHwgdGFibGUuZ2V0U3RpY2t5UmlnaHQoY29sdW1uKVwiXHJcbiAgICAgIFtjbGFzcy54LXRhYmxlLXN0aWNreS1sZWZ0XT1cInRhYmxlLmdldFN0aWNreUxlZnQoY29sdW1uKVwiXHJcbiAgICAgIFtjbGFzcy54LXRhYmxlLXN0aWNreS1yaWdodF09XCJ0YWJsZS5nZXRTdGlja3lSaWdodChjb2x1bW4pXCJcclxuICAgICAgW2NsYXNzLngtdGFibGUtc3RpY2t5LWxlZnQtbGFzdF09XCJ0YWJsZS5nZXRTdGlja3lMZWZ0TGFzdChjb2x1bW4pXCJcclxuICAgICAgW2NsYXNzLngtdGFibGUtc3RpY2t5LXJpZ2h0LWZpcnN0XT1cInRhYmxlLmdldFN0aWNreVJpZ2h0Rmlyc3QoY29sdW1uKVwiXHJcbiAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cImNvbHVtbi5sZWZ0XCJcclxuICAgICAgW3N0eWxlLnJpZ2h0LnB4XT1cImNvbHVtbi5yaWdodFwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cIiFyb3dDbGFzcyA/IHt9IDogcm93Q2xhc3Mocm93LCBpKVwiXHJcbiAgICA+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cImNlbGxUcGw7IGNvbnRleHQ6IHsgY29sdW1uOiBjb2x1bW4sIHJvdzogcm93LCBpOiBpIH1cIj48L25nLXRlbXBsYXRlPlxyXG4gICAgPC90ZD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY2VsbFRwbCBsZXQtY29sdW1uPVwiY29sdW1uXCIgbGV0LXJvdz1cInJvd1wiIGxldC1pPVwiaVwiPlxyXG4gIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImNvbHVtbi50eXBlXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInY2hlY2tib3gnXCI+XHJcbiAgICAgIDx4LWNoZWNrYm94XHJcbiAgICAgICAgW2RhdGFdPVwiW3sgaWQ6IHRydWUsIGxhYmVsOiAnJyB9XVwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dbY29sdW1uLmlkXVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cInJvdy5kaXNhYmxlZFwiXHJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidGFibGUuYm9keUNoZWNrZWQoJGV2ZW50LCBjb2x1bW4pXCJcclxuICAgICAgPjwveC1jaGVja2JveD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2luZGV4J1wiPlxyXG4gICAgICA8ZGl2Pnt7IHRhYmxlLmdldEluZGV4KGkpIH19PC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYmxlLmlzRXhwYW5kQ29sdW1uKGNvbHVtbilcIj5cclxuICAgICAgICA8eC1idXR0b25cclxuICAgICAgICAgIFtjbGFzcy5pcy1sZWFmXT1cIiFyb3cubGVhZlwiXHJcbiAgICAgICAgICBbY2xhc3MuaXMtZXhwYW5kZWRdPVwicm93LmV4cGFuZGVkXCJcclxuICAgICAgICAgIChjbGljayk9XCJvbkV4cGFuZGVkKCRldmVudCwgcm93KVwiXHJcbiAgICAgICAgICBpY29uPVwiZnRvLWNoZXZyb24tcmlnaHRcIlxyXG4gICAgICAgICAgc2l6ZT1cIm1pbmlcIlxyXG4gICAgICAgICAgb25seUljb25cclxuICAgICAgICAgIGNsYXNzPVwieC10YWJsZS1leHBhbmRcIlxyXG4gICAgICAgICAgW3N0eWxlLm1hcmdpbi1sZWZ0LnJlbV09XCJyb3cubGV2ZWwgLSAwLjVcIlxyXG4gICAgICAgID48L3gtYnV0dG9uPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqeE91dGxldD1cImNvbHVtblRwbFtjb2x1bW4uaWRdOyBjb250ZXh0OiB7ICRjb2x1bW46IGNvbHVtbiwgJHJvdzogcm93LCAkaW5kZXg6IHRhYmxlLmdldEluZGV4KGkpIH1cIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICp4T3V0bGV0PVwidGFibGUuYm9keVRkVHBsOyBjb250ZXh0OiB7ICRjb2x1bW46IGNvbHVtbiwgJHJvdzogcm93LCAkaW5kZXg6IHRhYmxlLmdldEluZGV4KGkpIH1cIj5cclxuICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJyb3dbY29sdW1uLmlkXVwiIFtzdHlsZS50ZXh0LWFsaWduXT1cImNvbHVtbi50ZXh0QWxpZ25cIj48L2Rpdj5cclxuICAgICAgICAgIHt7IHRhYmxlLnJvd0V4cGFuZE5leHQgJiYgdGFibGUucm93RXhwYW5kTmV4dC5pZCA9PT0gY29sdW1uLmlkID8gJ3gtdGFibGUtYm9keS1sZXZlbC0nICsgcm93LmxldmVsIDogJycgfX1cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19