@mozaic-ds/angular 0.24.0-beta.2 → 0.24.0-beta.4

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 (110) hide show
  1. package/adeo/assets/tokens/adeo/css/_variables.scss +50 -200
  2. package/adeo/assets/tokens/adeo/js/tokens.js +575 -575
  3. package/adeo/assets/tokens/adeo/js/tokensObject.js +12457 -9652
  4. package/adeo/assets/tokens/adeo/scss/_tokens.scss +240 -239
  5. package/adeo/assets/tokens/bricoman/android/colors.xml +483 -0
  6. package/adeo/assets/tokens/bricoman/android/font_dimens.xml +18 -0
  7. package/adeo/assets/tokens/bricoman/css/_variables.scss +477 -0
  8. package/adeo/assets/tokens/bricoman/css/root.scss +479 -0
  9. package/adeo/assets/tokens/bricoman/ios/StyleDictionaryColor.h +491 -0
  10. package/adeo/assets/tokens/bricoman/ios/StyleDictionaryColor.m +503 -0
  11. package/adeo/assets/tokens/bricoman/ios/StyleDictionaryColor.swift +486 -0
  12. package/adeo/assets/tokens/bricoman/ios/StyleDictionarySize.h +69 -0
  13. package/adeo/assets/tokens/bricoman/ios/StyleDictionarySize.m +70 -0
  14. package/adeo/assets/tokens/bricoman/ios/StyleDictionarySize.swift +71 -0
  15. package/adeo/assets/tokens/bricoman/js/tokens.js +575 -0
  16. package/adeo/assets/tokens/bricoman/js/tokensObject.js +12444 -0
  17. package/adeo/assets/tokens/bricoman/scss/_tokens.scss +1630 -0
  18. package/adeo/components/breadcrumb/breadcrumb.component.d.ts +2 -1
  19. package/adeo/components/datatable/moz-datatable.component.d.ts +2 -0
  20. package/adeo/components/header/header.component.d.ts +33 -0
  21. package/adeo/components/header/header.module.d.ts +10 -0
  22. package/adeo/components/header/index.d.ts +3 -0
  23. package/adeo/components/header/model/header.d.ts +5 -0
  24. package/adeo/components/header/public-api.d.ts +1 -0
  25. package/adeo/components/kpi/index.d.ts +3 -0
  26. package/adeo/components/kpi/kpi.component.d.ts +14 -0
  27. package/adeo/components/kpi/kpi.module.d.ts +9 -0
  28. package/adeo/components/kpi/model/kpi.d.ts +4 -0
  29. package/adeo/components/kpi/public-api.d.ts +1 -0
  30. package/adeo/components/progress-bar/progress-bar.component.d.ts +2 -2
  31. package/adeo/components/public-api.d.ts +2 -0
  32. package/adeo/esm2020/components/autocomplete/autocomplete.component.mjs +6 -3
  33. package/adeo/esm2020/components/breadcrumb/breadcrumb.component.mjs +6 -3
  34. package/adeo/esm2020/components/datatable/components/footer/moz-datatable-footer.component.mjs +13 -3
  35. package/adeo/esm2020/components/datatable/moz-datatable.component.mjs +13 -3
  36. package/adeo/esm2020/components/dropdown/dropdown.component.mjs +6 -3
  37. package/adeo/esm2020/components/header/header.component.mjs +129 -0
  38. package/adeo/esm2020/components/header/header.module.mjs +20 -0
  39. package/adeo/esm2020/components/header/index.mjs +4 -0
  40. package/adeo/esm2020/components/header/model/header.mjs +6 -0
  41. package/adeo/esm2020/components/header/public-api.mjs +2 -0
  42. package/adeo/esm2020/components/kpi/index.mjs +4 -0
  43. package/adeo/esm2020/components/kpi/kpi.component.mjs +47 -0
  44. package/adeo/esm2020/components/kpi/kpi.module.mjs +19 -0
  45. package/adeo/esm2020/components/kpi/model/kpi.mjs +6 -0
  46. package/adeo/esm2020/components/kpi/public-api.mjs +2 -0
  47. package/adeo/esm2020/components/pagination/pagination.component.mjs +2 -2
  48. package/adeo/esm2020/components/progress-bar/progress-bar.component.mjs +6 -6
  49. package/adeo/esm2020/components/public-api.mjs +3 -1
  50. package/adeo/esm2020/components/tabs/tabs.component.mjs +3 -3
  51. package/adeo/fesm2015/mozaic-ds-angular.mjs +262 -24
  52. package/adeo/fesm2015/mozaic-ds-angular.mjs.map +1 -1
  53. package/adeo/fesm2020/mozaic-ds-angular.mjs +253 -20
  54. package/adeo/fesm2020/mozaic-ds-angular.mjs.map +1 -1
  55. package/adeo/package.json +1 -1
  56. package/assets/tokens/adeo/css/_variables.scss +50 -200
  57. package/assets/tokens/adeo/js/tokens.js +575 -575
  58. package/assets/tokens/adeo/js/tokensObject.js +12457 -9652
  59. package/assets/tokens/adeo/scss/_tokens.scss +240 -239
  60. package/assets/tokens/bricoman/android/colors.xml +483 -0
  61. package/assets/tokens/bricoman/android/font_dimens.xml +18 -0
  62. package/assets/tokens/bricoman/css/_variables.scss +477 -0
  63. package/assets/tokens/bricoman/css/root.scss +479 -0
  64. package/assets/tokens/bricoman/ios/StyleDictionaryColor.h +491 -0
  65. package/assets/tokens/bricoman/ios/StyleDictionaryColor.m +503 -0
  66. package/assets/tokens/bricoman/ios/StyleDictionaryColor.swift +486 -0
  67. package/assets/tokens/bricoman/ios/StyleDictionarySize.h +69 -0
  68. package/assets/tokens/bricoman/ios/StyleDictionarySize.m +70 -0
  69. package/assets/tokens/bricoman/ios/StyleDictionarySize.swift +71 -0
  70. package/assets/tokens/bricoman/js/tokens.js +575 -0
  71. package/assets/tokens/bricoman/js/tokensObject.js +12444 -0
  72. package/assets/tokens/bricoman/scss/_tokens.scss +1630 -0
  73. package/components/breadcrumb/breadcrumb.component.d.ts +2 -1
  74. package/components/datatable/moz-datatable.component.d.ts +2 -0
  75. package/components/header/header.component.d.ts +33 -0
  76. package/components/header/header.module.d.ts +10 -0
  77. package/components/header/index.d.ts +3 -0
  78. package/components/header/model/header.d.ts +5 -0
  79. package/components/header/public-api.d.ts +1 -0
  80. package/components/kpi/index.d.ts +3 -0
  81. package/components/kpi/kpi.component.d.ts +14 -0
  82. package/components/kpi/kpi.module.d.ts +9 -0
  83. package/components/kpi/model/kpi.d.ts +4 -0
  84. package/components/kpi/public-api.d.ts +1 -0
  85. package/components/progress-bar/progress-bar.component.d.ts +2 -2
  86. package/components/public-api.d.ts +2 -0
  87. package/esm2020/components/autocomplete/autocomplete.component.mjs +6 -3
  88. package/esm2020/components/breadcrumb/breadcrumb.component.mjs +6 -3
  89. package/esm2020/components/datatable/components/footer/moz-datatable-footer.component.mjs +13 -3
  90. package/esm2020/components/datatable/moz-datatable.component.mjs +13 -3
  91. package/esm2020/components/dropdown/dropdown.component.mjs +6 -3
  92. package/esm2020/components/header/header.component.mjs +129 -0
  93. package/esm2020/components/header/header.module.mjs +20 -0
  94. package/esm2020/components/header/index.mjs +4 -0
  95. package/esm2020/components/header/model/header.mjs +6 -0
  96. package/esm2020/components/header/public-api.mjs +2 -0
  97. package/esm2020/components/kpi/index.mjs +4 -0
  98. package/esm2020/components/kpi/kpi.component.mjs +47 -0
  99. package/esm2020/components/kpi/kpi.module.mjs +19 -0
  100. package/esm2020/components/kpi/model/kpi.mjs +6 -0
  101. package/esm2020/components/kpi/public-api.mjs +2 -0
  102. package/esm2020/components/pagination/pagination.component.mjs +2 -2
  103. package/esm2020/components/progress-bar/progress-bar.component.mjs +6 -6
  104. package/esm2020/components/public-api.mjs +3 -1
  105. package/esm2020/components/tabs/tabs.component.mjs +3 -3
  106. package/fesm2015/mozaic-ds-angular.mjs +262 -24
  107. package/fesm2015/mozaic-ds-angular.mjs.map +1 -1
  108. package/fesm2020/mozaic-ds-angular.mjs +253 -20
  109. package/fesm2020/mozaic-ds-angular.mjs.map +1 -1
  110. package/package.json +1 -1
@@ -26,9 +26,16 @@ export class MozDatatableFooterComponent {
26
26
  if (this.totalItems === 1 && this.selectedRowPerPage === 0) {
27
27
  return 0;
28
28
  }
29
+ // case nullable
30
+ if (this.totalItems == null || this.selectedRowPerPage == null) {
31
+ return 0;
32
+ }
29
33
  return Math.ceil(this.totalItems / this.selectedRowPerPage);
30
34
  }
31
35
  calculateCountEnd() {
36
+ if (this.selectedRowPerPage == null) {
37
+ return 0;
38
+ }
32
39
  const count = this.selectedRowPerPage * this.currentPage;
33
40
  if (count > this.totalItems) {
34
41
  return this.totalItems;
@@ -36,6 +43,9 @@ export class MozDatatableFooterComponent {
36
43
  return count;
37
44
  }
38
45
  calculateCountStart() {
46
+ if (this.selectedRowPerPage == null || this.totalItems == null) {
47
+ return 0;
48
+ }
39
49
  if (this.selectedRowPerPage === 0 || this.currentPage === 0 || this.totalItems === 0) {
40
50
  return 0;
41
51
  }
@@ -43,10 +53,10 @@ export class MozDatatableFooterComponent {
43
53
  }
44
54
  }
45
55
  MozDatatableFooterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MozDatatableFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
46
- MozDatatableFooterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: MozDatatableFooterComponent, selector: "moz-datatable-footer", inputs: { footerSettings: "footerSettings", isLoading: "isLoading" }, outputs: { rowPerPageChangeEmitter: "rowPerPageChangeEmitter", pageChangeEmitter: "pageChangeEmitter" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"mc-datatable__footer\">\n <div class=\"mc-datatable__select\">\n <label for=\"selectRows\" class=\"mc-datatable__select-label\">{{\n footerSettings?.labels?.rowPerPage || 'Rows per page'\n }}</label>\n <select\n moz-select\n [disabled]=\"isLoading || false\"\n id=\"selectRows\"\n [(ngModel)]=\"selectedRowPerPage\"\n (change)=\"rowPerPageChangeEmitter.emit(selectedRowPerPage)\"\n [disabled]=\"calculateNumberOfPage() === 0\"\n >\n <option\n *ngFor=\"let value of footerSettings?.pagination?.rowPerPage?.options\"\n [ngValue]=\"value\"\n >\n {{ value }}\n </option>\n </select>\n </div>\n <div class=\"mc-datatable__count\" *ngIf=\"!isLoading\">\n <strong>{{ calculateCountStart() }}-{{ calculateCountEnd() }}</strong> /\n <strong\n >{{ footerSettings?.pagination?.totalItems }}\n {{ footerSettings?.labels?.items || 'Items' }}</strong\n >\n </div>\n <div class=\"mc-datatable__pagination\">\n <moz-pagination\n [numberOfPages]=\"isLoading ? 0 : calculateNumberOfPage()\"\n [(ngModel)]=\"currentPage\"\n (pageChangeEvent)=\"pageChangeEmitter.emit(currentPage)\"\n [pageLabel]=\"footerSettings?.labels?.page || 'Page'\"\n [pageOfLabel]=\"footerSettings?.labels?.of || 'of'\"\n >\n </moz-pagination>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.PaginationComponent, selector: "moz-pagination", inputs: ["numberOfPages", "light", "pageLabel", "pageOfLabel", "pageTitleMask"], outputs: ["pageChangeEvent"] }, { kind: "component", type: i3.SelectComponent, selector: "select[moz-`select`]", inputs: ["size"] }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { 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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
56
+ MozDatatableFooterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: MozDatatableFooterComponent, selector: "moz-datatable-footer", inputs: { footerSettings: "footerSettings", isLoading: "isLoading" }, outputs: { rowPerPageChangeEmitter: "rowPerPageChangeEmitter", pageChangeEmitter: "pageChangeEmitter" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"mc-datatable__footer\">\n <div class=\"mc-datatable__select\">\n <label for=\"selectRows\" class=\"mc-datatable__select-label\">{{\n footerSettings?.labels?.rowPerPage || 'Rows per page'\n }}</label>\n <select\n moz-select\n id=\"selectRows\"\n [(ngModel)]=\"selectedRowPerPage\"\n (change)=\"rowPerPageChangeEmitter.emit(selectedRowPerPage)\"\n [disabled]=\"calculateNumberOfPage() === 0 || isLoading || false\"\n >\n <option\n *ngFor=\"let value of footerSettings?.pagination?.rowPerPage?.options\"\n [ngValue]=\"value\"\n >\n {{ value }}\n </option>\n </select>\n </div>\n <div class=\"mc-datatable__count\" *ngIf=\"!isLoading\">\n <strong>{{ calculateCountStart() }}-{{ calculateCountEnd() }}</strong> /\n <strong\n >{{ footerSettings?.pagination?.totalItems || 0 }}\n {{ footerSettings?.labels?.items || 'Items' }}</strong\n >\n </div>\n <div class=\"mc-datatable__pagination\">\n <moz-pagination\n [numberOfPages]=\"isLoading ? 0 : calculateNumberOfPage()\"\n [(ngModel)]=\"currentPage\"\n (pageChangeEvent)=\"pageChangeEmitter.emit(currentPage)\"\n [pageLabel]=\"footerSettings?.labels?.page || 'Page'\"\n [pageOfLabel]=\"footerSettings?.labels?.of || 'of'\"\n >\n </moz-pagination>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.PaginationComponent, selector: "moz-pagination", inputs: ["numberOfPages", "light", "pageLabel", "pageOfLabel", "pageTitleMask"], outputs: ["pageChangeEvent"] }, { kind: "component", type: i3.SelectComponent, selector: "select[moz-`select`]", inputs: ["size"] }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { 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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
47
57
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MozDatatableFooterComponent, decorators: [{
48
58
  type: Component,
49
- args: [{ selector: 'moz-datatable-footer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"mc-datatable__footer\">\n <div class=\"mc-datatable__select\">\n <label for=\"selectRows\" class=\"mc-datatable__select-label\">{{\n footerSettings?.labels?.rowPerPage || 'Rows per page'\n }}</label>\n <select\n moz-select\n [disabled]=\"isLoading || false\"\n id=\"selectRows\"\n [(ngModel)]=\"selectedRowPerPage\"\n (change)=\"rowPerPageChangeEmitter.emit(selectedRowPerPage)\"\n [disabled]=\"calculateNumberOfPage() === 0\"\n >\n <option\n *ngFor=\"let value of footerSettings?.pagination?.rowPerPage?.options\"\n [ngValue]=\"value\"\n >\n {{ value }}\n </option>\n </select>\n </div>\n <div class=\"mc-datatable__count\" *ngIf=\"!isLoading\">\n <strong>{{ calculateCountStart() }}-{{ calculateCountEnd() }}</strong> /\n <strong\n >{{ footerSettings?.pagination?.totalItems }}\n {{ footerSettings?.labels?.items || 'Items' }}</strong\n >\n </div>\n <div class=\"mc-datatable__pagination\">\n <moz-pagination\n [numberOfPages]=\"isLoading ? 0 : calculateNumberOfPage()\"\n [(ngModel)]=\"currentPage\"\n (pageChangeEvent)=\"pageChangeEmitter.emit(currentPage)\"\n [pageLabel]=\"footerSettings?.labels?.page || 'Page'\"\n [pageOfLabel]=\"footerSettings?.labels?.of || 'of'\"\n >\n </moz-pagination>\n </div>\n</div>\n" }]
59
+ args: [{ selector: 'moz-datatable-footer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"mc-datatable__footer\">\n <div class=\"mc-datatable__select\">\n <label for=\"selectRows\" class=\"mc-datatable__select-label\">{{\n footerSettings?.labels?.rowPerPage || 'Rows per page'\n }}</label>\n <select\n moz-select\n id=\"selectRows\"\n [(ngModel)]=\"selectedRowPerPage\"\n (change)=\"rowPerPageChangeEmitter.emit(selectedRowPerPage)\"\n [disabled]=\"calculateNumberOfPage() === 0 || isLoading || false\"\n >\n <option\n *ngFor=\"let value of footerSettings?.pagination?.rowPerPage?.options\"\n [ngValue]=\"value\"\n >\n {{ value }}\n </option>\n </select>\n </div>\n <div class=\"mc-datatable__count\" *ngIf=\"!isLoading\">\n <strong>{{ calculateCountStart() }}-{{ calculateCountEnd() }}</strong> /\n <strong\n >{{ footerSettings?.pagination?.totalItems || 0 }}\n {{ footerSettings?.labels?.items || 'Items' }}</strong\n >\n </div>\n <div class=\"mc-datatable__pagination\">\n <moz-pagination\n [numberOfPages]=\"isLoading ? 0 : calculateNumberOfPage()\"\n [(ngModel)]=\"currentPage\"\n (pageChangeEvent)=\"pageChangeEmitter.emit(currentPage)\"\n [pageLabel]=\"footerSettings?.labels?.page || 'Page'\"\n [pageOfLabel]=\"footerSettings?.labels?.of || 'of'\"\n >\n </moz-pagination>\n </div>\n</div>\n" }]
50
60
  }], propDecorators: { footerSettings: [{
51
61
  type: Input
52
62
  }], isLoading: [{
@@ -56,4 +66,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
56
66
  }], pageChangeEmitter: [{
57
67
  type: Output
58
68
  }] } });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW96LWRhdGF0YWJsZS1mb290ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvZGF0YXRhYmxlL2NvbXBvbmVudHMvZm9vdGVyL21vei1kYXRhdGFibGUtZm9vdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL2RhdGF0YWJsZS9jb21wb25lbnRzL2Zvb3Rlci9tb3otZGF0YXRhYmxlLWZvb3Rlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBUXZCLE1BQU0sT0FBTywyQkFBMkI7SUFMeEM7UUFRbUIsNEJBQXVCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNyRCxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0tBMkNqRTtJQXJDQyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFDRSxPQUFPLENBQUMsZ0JBQWdCLENBQUM7WUFDekIsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsWUFBWSxLQUFLLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLGFBQWEsRUFDbEY7WUFDQSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsSUFBSSxDQUFDLENBQUM7WUFDckYsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLFVBQVUsRUFBRSxXQUFXLElBQUksQ0FBQyxDQUFDO1lBQ3JFLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxVQUFVLEVBQUUsVUFBVSxJQUFJLENBQUMsQ0FBQztTQUNwRTtJQUNILENBQUM7SUFFTSxxQkFBcUI7UUFDMUIsV0FBVztRQUNYLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLGtCQUFrQixLQUFLLENBQUMsRUFBRTtZQUMxRCxPQUFPLENBQUMsQ0FBQztTQUNWO1FBQ0QsZ0JBQWdCO1FBQ2hCLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLGtCQUFrQixLQUFLLENBQUMsRUFBRTtZQUMxRCxPQUFPLENBQUMsQ0FBQztTQUNWO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVNLGlCQUFpQjtRQUN0QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUN6RCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQzNCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztTQUN4QjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLG1CQUFtQjtRQUN4QixJQUFJLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxDQUFDLEVBQUU7WUFDcEYsT0FBTyxDQUFDLENBQUM7U0FDVjtRQUNELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUQsQ0FBQzs7d0hBOUNVLDJCQUEyQjs0R0FBM0IsMkJBQTJCLGdRQ2pCeEMsaTJDQXVDQTsyRkR0QmEsMkJBQTJCO2tCQUx2QyxTQUFTOytCQUNFLHNCQUFzQixtQkFFZix1QkFBdUIsQ0FBQyxNQUFNOzhCQUcvQixjQUFjO3NCQUE3QixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1csdUJBQXVCO3NCQUF2QyxNQUFNO2dCQUNVLGlCQUFpQjtzQkFBakMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9vdGVyU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9tb2RlbC9mb290ZXItc2V0dGluZ3MnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb3otZGF0YXRhYmxlLWZvb3RlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tb3otZGF0YXRhYmxlLWZvb3Rlci5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBNb3pEYXRhdGFibGVGb290ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBwdWJsaWMgZm9vdGVyU2V0dGluZ3M/OiBGb290ZXJTZXR0aW5ncztcbiAgQElucHV0KCkgcHVibGljIGlzTG9hZGluZz86IGJvb2xlYW47XG4gIEBPdXRwdXQoKSBwdWJsaWMgcm93UGVyUGFnZUNoYW5nZUVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBwYWdlQ2hhbmdlRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIHB1YmxpYyBzZWxlY3RlZFJvd1BlclBhZ2UhOiBudW1iZXI7XG4gIHB1YmxpYyBjdXJyZW50UGFnZSE6IG51bWJlcjtcbiAgcHVibGljIHRvdGFsSXRlbXMhOiBudW1iZXI7XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIGNoYW5nZXNbJ2Zvb3RlclNldHRpbmdzJ10gJiZcbiAgICAgIGNoYW5nZXNbJ2Zvb3RlclNldHRpbmdzJ10uY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzWydmb290ZXJTZXR0aW5ncyddLnByZXZpb3VzVmFsdWVcbiAgICApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dQZXJQYWdlID0gdGhpcy5mb290ZXJTZXR0aW5ncz8ucGFnaW5hdGlvbj8ucm93UGVyUGFnZT8uc2VsZWN0ZWQgfHwgMDtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLmZvb3RlclNldHRpbmdzPy5wYWdpbmF0aW9uPy5jdXJyZW50UGFnZSB8fCAwO1xuICAgICAgdGhpcy50b3RhbEl0ZW1zID0gdGhpcy5mb290ZXJTZXR0aW5ncz8ucGFnaW5hdGlvbj8udG90YWxJdGVtcyB8fCAwO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjYWxjdWxhdGVOdW1iZXJPZlBhZ2UoKTogbnVtYmVyIHtcbiAgICAvLyBjYXNlIE5BTlxuICAgIGlmICh0aGlzLnRvdGFsSXRlbXMgPT09IDAgJiYgdGhpcy5zZWxlY3RlZFJvd1BlclBhZ2UgPT09IDApIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICAvLyBjYXNlIElORklOSVRZXG4gICAgaWYgKHRoaXMudG90YWxJdGVtcyA9PT0gMSAmJiB0aGlzLnNlbGVjdGVkUm93UGVyUGFnZSA9PT0gMCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy50b3RhbEl0ZW1zIC8gdGhpcy5zZWxlY3RlZFJvd1BlclBhZ2UpO1xuICB9XG5cbiAgcHVibGljIGNhbGN1bGF0ZUNvdW50RW5kKCk6IG51bWJlciB7XG4gICAgY29uc3QgY291bnQgPSB0aGlzLnNlbGVjdGVkUm93UGVyUGFnZSAqIHRoaXMuY3VycmVudFBhZ2U7XG4gICAgaWYgKGNvdW50ID4gdGhpcy50b3RhbEl0ZW1zKSB7XG4gICAgICByZXR1cm4gdGhpcy50b3RhbEl0ZW1zO1xuICAgIH1cbiAgICByZXR1cm4gY291bnQ7XG4gIH1cblxuICBwdWJsaWMgY2FsY3VsYXRlQ291bnRTdGFydCgpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkUm93UGVyUGFnZSA9PT0gMCB8fCB0aGlzLmN1cnJlbnRQYWdlID09PSAwIHx8IHRoaXMudG90YWxJdGVtcyA9PT0gMCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkUm93UGVyUGFnZSAqICh0aGlzLmN1cnJlbnRQYWdlIC0gMSkgKyAxO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibWMtZGF0YXRhYmxlX19mb290ZXJcIj5cbiAgPGRpdiBjbGFzcz1cIm1jLWRhdGF0YWJsZV9fc2VsZWN0XCI+XG4gICAgPGxhYmVsIGZvcj1cInNlbGVjdFJvd3NcIiBjbGFzcz1cIm1jLWRhdGF0YWJsZV9fc2VsZWN0LWxhYmVsXCI+e3tcbiAgICAgIGZvb3RlclNldHRpbmdzPy5sYWJlbHM/LnJvd1BlclBhZ2UgfHwgJ1Jvd3MgcGVyIHBhZ2UnXG4gICAgfX08L2xhYmVsPlxuICAgIDxzZWxlY3RcbiAgICAgIG1vei1zZWxlY3RcbiAgICAgIFtkaXNhYmxlZF09XCJpc0xvYWRpbmcgfHwgZmFsc2VcIlxuICAgICAgaWQ9XCJzZWxlY3RSb3dzXCJcbiAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRSb3dQZXJQYWdlXCJcbiAgICAgIChjaGFuZ2UpPVwicm93UGVyUGFnZUNoYW5nZUVtaXR0ZXIuZW1pdChzZWxlY3RlZFJvd1BlclBhZ2UpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJjYWxjdWxhdGVOdW1iZXJPZlBhZ2UoKSA9PT0gMFwiXG4gICAgPlxuICAgICAgPG9wdGlvblxuICAgICAgICAqbmdGb3I9XCJsZXQgdmFsdWUgb2YgZm9vdGVyU2V0dGluZ3M/LnBhZ2luYXRpb24/LnJvd1BlclBhZ2U/Lm9wdGlvbnNcIlxuICAgICAgICBbbmdWYWx1ZV09XCJ2YWx1ZVwiXG4gICAgICA+XG4gICAgICAgIHt7IHZhbHVlIH19XG4gICAgICA8L29wdGlvbj5cbiAgICA8L3NlbGVjdD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJtYy1kYXRhdGFibGVfX2NvdW50XCIgKm5nSWY9XCIhaXNMb2FkaW5nXCI+XG4gICAgPHN0cm9uZz57eyBjYWxjdWxhdGVDb3VudFN0YXJ0KCkgfX0te3sgY2FsY3VsYXRlQ291bnRFbmQoKSB9fTwvc3Ryb25nPiAvXG4gICAgPHN0cm9uZ1xuICAgICAgPnt7IGZvb3RlclNldHRpbmdzPy5wYWdpbmF0aW9uPy50b3RhbEl0ZW1zIH19XG4gICAgICB7eyBmb290ZXJTZXR0aW5ncz8ubGFiZWxzPy5pdGVtcyB8fCAnSXRlbXMnIH19PC9zdHJvbmdcbiAgICA+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibWMtZGF0YXRhYmxlX19wYWdpbmF0aW9uXCI+XG4gICAgPG1vei1wYWdpbmF0aW9uXG4gICAgICBbbnVtYmVyT2ZQYWdlc109XCJpc0xvYWRpbmcgPyAwIDogY2FsY3VsYXRlTnVtYmVyT2ZQYWdlKClcIlxuICAgICAgWyhuZ01vZGVsKV09XCJjdXJyZW50UGFnZVwiXG4gICAgICAocGFnZUNoYW5nZUV2ZW50KT1cInBhZ2VDaGFuZ2VFbWl0dGVyLmVtaXQoY3VycmVudFBhZ2UpXCJcbiAgICAgIFtwYWdlTGFiZWxdPVwiZm9vdGVyU2V0dGluZ3M/LmxhYmVscz8ucGFnZSB8fCAnUGFnZSdcIlxuICAgICAgW3BhZ2VPZkxhYmVsXT1cImZvb3RlclNldHRpbmdzPy5sYWJlbHM/Lm9mIHx8ICdvZidcIlxuICAgID5cbiAgICA8L21vei1wYWdpbmF0aW9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW96LWRhdGF0YWJsZS1mb290ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvZGF0YXRhYmxlL2NvbXBvbmVudHMvZm9vdGVyL21vei1kYXRhdGFibGUtZm9vdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL2RhdGF0YWJsZS9jb21wb25lbnRzL2Zvb3Rlci9tb3otZGF0YXRhYmxlLWZvb3Rlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBUXZCLE1BQU0sT0FBTywyQkFBMkI7SUFMeEM7UUFRbUIsNEJBQXVCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNyRCxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0tBcURqRTtJQS9DQyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFDRSxPQUFPLENBQUMsZ0JBQWdCLENBQUM7WUFDekIsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsWUFBWSxLQUFLLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLGFBQWEsRUFDbEY7WUFDQSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsSUFBSSxDQUFDLENBQUM7WUFDckYsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLFVBQVUsRUFBRSxXQUFXLElBQUksQ0FBQyxDQUFDO1lBQ3JFLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxVQUFVLEVBQUUsVUFBVSxJQUFJLENBQUMsQ0FBQztTQUNwRTtJQUNILENBQUM7SUFFTSxxQkFBcUI7UUFDMUIsV0FBVztRQUNYLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLGtCQUFrQixLQUFLLENBQUMsRUFBRTtZQUMxRCxPQUFPLENBQUMsQ0FBQztTQUNWO1FBQ0QsZ0JBQWdCO1FBQ2hCLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLGtCQUFrQixLQUFLLENBQUMsRUFBRTtZQUMxRCxPQUFPLENBQUMsQ0FBQztTQUNWO1FBQ0QsZ0JBQWdCO1FBQ2hCLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksRUFBRTtZQUM5RCxPQUFPLENBQUMsQ0FBQztTQUNWO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVNLGlCQUFpQjtRQUN0QixJQUFJLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLEVBQUU7WUFDbkMsT0FBTyxDQUFDLENBQUM7U0FDVjtRQUNELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3pELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDM0IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQ3hCO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU0sbUJBQW1CO1FBQ3hCLElBQUksSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksRUFBRTtZQUM5RCxPQUFPLENBQUMsQ0FBQztTQUNWO1FBQ0QsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssQ0FBQyxFQUFFO1lBQ3BGLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFDRCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlELENBQUM7O3dIQXhEVSwyQkFBMkI7NEdBQTNCLDJCQUEyQixnUUNqQnhDLG0xQ0FzQ0E7MkZEckJhLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDRSxzQkFBc0IsbUJBRWYsdUJBQXVCLENBQUMsTUFBTTs4QkFHL0IsY0FBYztzQkFBN0IsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNXLHVCQUF1QjtzQkFBdkMsTUFBTTtnQkFDVSxpQkFBaUI7c0JBQWpDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvb3RlclNldHRpbmdzIH0gZnJvbSAnLi4vLi4vbW9kZWwvZm9vdGVyLXNldHRpbmdzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW96LWRhdGF0YWJsZS1mb290ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbW96LWRhdGF0YWJsZS1mb290ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTW96RGF0YXRhYmxlRm9vdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgcHVibGljIGZvb3RlclNldHRpbmdzPzogRm9vdGVyU2V0dGluZ3M7XG4gIEBJbnB1dCgpIHB1YmxpYyBpc0xvYWRpbmc/OiBib29sZWFuO1xuICBAT3V0cHV0KCkgcHVibGljIHJvd1BlclBhZ2VDaGFuZ2VFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcGFnZUNoYW5nZUVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICBwdWJsaWMgc2VsZWN0ZWRSb3dQZXJQYWdlITogbnVtYmVyO1xuICBwdWJsaWMgY3VycmVudFBhZ2UhOiBudW1iZXI7XG4gIHB1YmxpYyB0b3RhbEl0ZW1zITogbnVtYmVyO1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICBjaGFuZ2VzWydmb290ZXJTZXR0aW5ncyddICYmXG4gICAgICBjaGFuZ2VzWydmb290ZXJTZXR0aW5ncyddLmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlc1snZm9vdGVyU2V0dGluZ3MnXS5wcmV2aW91c1ZhbHVlXG4gICAgKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93UGVyUGFnZSA9IHRoaXMuZm9vdGVyU2V0dGluZ3M/LnBhZ2luYXRpb24/LnJvd1BlclBhZ2U/LnNlbGVjdGVkIHx8IDA7XG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID0gdGhpcy5mb290ZXJTZXR0aW5ncz8ucGFnaW5hdGlvbj8uY3VycmVudFBhZ2UgfHwgMDtcbiAgICAgIHRoaXMudG90YWxJdGVtcyA9IHRoaXMuZm9vdGVyU2V0dGluZ3M/LnBhZ2luYXRpb24/LnRvdGFsSXRlbXMgfHwgMDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2FsY3VsYXRlTnVtYmVyT2ZQYWdlKCk6IG51bWJlciB7XG4gICAgLy8gY2FzZSBOQU5cbiAgICBpZiAodGhpcy50b3RhbEl0ZW1zID09PSAwICYmIHRoaXMuc2VsZWN0ZWRSb3dQZXJQYWdlID09PSAwKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgLy8gY2FzZSBJTkZJTklUWVxuICAgIGlmICh0aGlzLnRvdGFsSXRlbXMgPT09IDEgJiYgdGhpcy5zZWxlY3RlZFJvd1BlclBhZ2UgPT09IDApIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICAvLyBjYXNlIG51bGxhYmxlXG4gICAgaWYgKHRoaXMudG90YWxJdGVtcyA9PSBudWxsIHx8IHRoaXMuc2VsZWN0ZWRSb3dQZXJQYWdlID09IG51bGwpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5jZWlsKHRoaXMudG90YWxJdGVtcyAvIHRoaXMuc2VsZWN0ZWRSb3dQZXJQYWdlKTtcbiAgfVxuXG4gIHB1YmxpYyBjYWxjdWxhdGVDb3VudEVuZCgpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkUm93UGVyUGFnZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgY29uc3QgY291bnQgPSB0aGlzLnNlbGVjdGVkUm93UGVyUGFnZSAqIHRoaXMuY3VycmVudFBhZ2U7XG4gICAgaWYgKGNvdW50ID4gdGhpcy50b3RhbEl0ZW1zKSB7XG4gICAgICByZXR1cm4gdGhpcy50b3RhbEl0ZW1zO1xuICAgIH1cbiAgICByZXR1cm4gY291bnQ7XG4gIH1cblxuICBwdWJsaWMgY2FsY3VsYXRlQ291bnRTdGFydCgpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkUm93UGVyUGFnZSA9PSBudWxsIHx8IHRoaXMudG90YWxJdGVtcyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRSb3dQZXJQYWdlID09PSAwIHx8IHRoaXMuY3VycmVudFBhZ2UgPT09IDAgfHwgdGhpcy50b3RhbEl0ZW1zID09PSAwKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRSb3dQZXJQYWdlICogKHRoaXMuY3VycmVudFBhZ2UgLSAxKSArIDE7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtYy1kYXRhdGFibGVfX2Zvb3RlclwiPlxuICA8ZGl2IGNsYXNzPVwibWMtZGF0YXRhYmxlX19zZWxlY3RcIj5cbiAgICA8bGFiZWwgZm9yPVwic2VsZWN0Um93c1wiIGNsYXNzPVwibWMtZGF0YXRhYmxlX19zZWxlY3QtbGFiZWxcIj57e1xuICAgICAgZm9vdGVyU2V0dGluZ3M/LmxhYmVscz8ucm93UGVyUGFnZSB8fCAnUm93cyBwZXIgcGFnZSdcbiAgICB9fTwvbGFiZWw+XG4gICAgPHNlbGVjdFxuICAgICAgbW96LXNlbGVjdFxuICAgICAgaWQ9XCJzZWxlY3RSb3dzXCJcbiAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRSb3dQZXJQYWdlXCJcbiAgICAgIChjaGFuZ2UpPVwicm93UGVyUGFnZUNoYW5nZUVtaXR0ZXIuZW1pdChzZWxlY3RlZFJvd1BlclBhZ2UpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJjYWxjdWxhdGVOdW1iZXJPZlBhZ2UoKSA9PT0gMCB8fCBpc0xvYWRpbmcgfHwgZmFsc2VcIlxuICAgID5cbiAgICAgIDxvcHRpb25cbiAgICAgICAgKm5nRm9yPVwibGV0IHZhbHVlIG9mIGZvb3RlclNldHRpbmdzPy5wYWdpbmF0aW9uPy5yb3dQZXJQYWdlPy5vcHRpb25zXCJcbiAgICAgICAgW25nVmFsdWVdPVwidmFsdWVcIlxuICAgICAgPlxuICAgICAgICB7eyB2YWx1ZSB9fVxuICAgICAgPC9vcHRpb24+XG4gICAgPC9zZWxlY3Q+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibWMtZGF0YXRhYmxlX19jb3VudFwiICpuZ0lmPVwiIWlzTG9hZGluZ1wiPlxuICAgIDxzdHJvbmc+e3sgY2FsY3VsYXRlQ291bnRTdGFydCgpIH19LXt7IGNhbGN1bGF0ZUNvdW50RW5kKCkgfX08L3N0cm9uZz4gL1xuICAgIDxzdHJvbmdcbiAgICAgID57eyBmb290ZXJTZXR0aW5ncz8ucGFnaW5hdGlvbj8udG90YWxJdGVtcyB8fCAwIH19XG4gICAgICB7eyBmb290ZXJTZXR0aW5ncz8ubGFiZWxzPy5pdGVtcyB8fCAnSXRlbXMnIH19PC9zdHJvbmdcbiAgICA+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibWMtZGF0YXRhYmxlX19wYWdpbmF0aW9uXCI+XG4gICAgPG1vei1wYWdpbmF0aW9uXG4gICAgICBbbnVtYmVyT2ZQYWdlc109XCJpc0xvYWRpbmcgPyAwIDogY2FsY3VsYXRlTnVtYmVyT2ZQYWdlKClcIlxuICAgICAgWyhuZ01vZGVsKV09XCJjdXJyZW50UGFnZVwiXG4gICAgICAocGFnZUNoYW5nZUV2ZW50KT1cInBhZ2VDaGFuZ2VFbWl0dGVyLmVtaXQoY3VycmVudFBhZ2UpXCJcbiAgICAgIFtwYWdlTGFiZWxdPVwiZm9vdGVyU2V0dGluZ3M/LmxhYmVscz8ucGFnZSB8fCAnUGFnZSdcIlxuICAgICAgW3BhZ2VPZkxhYmVsXT1cImZvb3RlclNldHRpbmdzPy5sYWJlbHM/Lm9mIHx8ICdvZidcIlxuICAgID5cbiAgICA8L21vei1wYWdpbmF0aW9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -113,12 +113,22 @@ export class MozDatatableComponent {
113
113
  getUnhiddenColumns() {
114
114
  return this.datatableSettings?.columnDefs.filter((headTitle) => !headTitle.hide) || [];
115
115
  }
116
+ getColumns() {
117
+ return this.datatableSettings?.isLoading
118
+ ? ['', '', '', '', '']
119
+ : this.datatableSettings?.columnDefs;
120
+ }
121
+ getFields() {
122
+ return this.datatableSettings?.isLoading
123
+ ? ['', '', '', '', '']
124
+ : this.datatableSettings?.rowData;
125
+ }
116
126
  }
117
127
  MozDatatableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MozDatatableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
118
- MozDatatableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: MozDatatableComponent, selector: "moz-datatable", inputs: { footerSettings: "footerSettings", selectionSettings: "selectionSettings", datatableSettings: "datatableSettings" }, outputs: { rowClick: "rowClick", sortColumn: "sortColumn", rowSelected: "rowSelected", rowAllSelected: "rowAllSelected", emptyBodyButtonClicked: "emptyBodyButtonClicked", pageChange: "pageChange", rowPerPageChange: "rowPerPageChange" }, queries: [{ propertyName: "expansionContentComponent", first: true, predicate: MozDatatableRowExpansionContentComponent, descendants: true }, { propertyName: "headerCellComponents", predicate: MozDatatableHeaderCellComponent }, { propertyName: "contentCellComponents", predicate: MozDatatableContentCellComponent }], viewQueries: [{ propertyName: "selectionComponent", first: true, predicate: MozDatatableSelectionComponent, descendants: true }, { propertyName: "thSelectionRef", first: true, predicate: ["thSelection"], descendants: true }, { propertyName: "thSubRowRef", first: true, predicate: ["thSubRow"], descendants: true }], ngImport: i0, template: "<div class=\"mc-datatable mc-datatable-height\">\n <div class=\"mc-datatable__header\">\n <ng-content select=\"moz-datatable-caption\"></ng-content>\n <div>\n <moz-datatable-selection\n [selectionSettings]=\"selectionSettings\"\n [paginationEnabled]=\"datatableSettings?.activatePagination\"\n [rowData]=\"datatableSettings?.rowData\"\n (updateSelectionAllEmitter)=\"selectionAllRowEvent($event)\"\n ></moz-datatable-selection>\n </div>\n </div>\n <div class=\"mc-datatable__container mc-datatable-height\">\n <div class=\"mc-datatable__main mc-datatable-height\">\n <table class=\"mc-datatable__table\">\n <thead [ngClass]=\"{ 'fix-header-row': datatableSettings?.fixHeaderRow }\">\n <tr>\n <th\n class=\"mc-datatable__cell-checkbox moz-datatable__th mc-datatable__fix-first-column\"\n *ngIf=\"\n datatableSettings?.activateSelection && selectionComponent && selectionSettings\n \"\n #thSelection\n >\n <moz-checkbox\n (change)=\"\n selectionComponent.onUdpateSelectionAllPageRows($event); selectionRowEvent($event)\n \"\n [indeterminate]=\"selectionComponent.isIndeterminate\"\n [checked]=\"selectionSettings.allSelected && !selectionComponent.isIndeterminate\"\n [disabled]=\"datatableSettings?.isLoading || false\"\n >\n </moz-checkbox>\n </th>\n <th\n *ngIf=\"hasSubRow() && !datatableSettings?.isLoading\"\n class=\"mc-datatable__fix-first-column\"\n [style.left.px]=\"getStyleLeftForColumnFixed()\"\n #thSubRow\n ></th>\n <ng-container *ngFor=\"let columnDef of datatableSettings?.columnDefs\">\n <th\n class=\"moz-datatable__th\"\n *ngIf=\"!columnDef.hide\"\n [ngClass]=\"{\n 'mc-datatable__fix-first-column':\n datatableSettings?.fixFirstColumn &&\n getUnhiddenColumns()[0].field === columnDef.field\n }\"\n [style.left.px]=\"getLeftValueFixFirstColumn()\"\n >\n <div\n [mozDatatableSort]=\"columnDef\"\n [ngClass]=\"{ header: columnDef.sort }\"\n (sortEmitter)=\"sortEvent($event)\"\n >\n <ng-container\n *ngIf=\"getCustomHeader(columnDef.field) as customHeader; else defaultHeaderCell\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n customHeader;\n context: {\n $implicit: {\n content: columnDef\n }\n }\n \"\n ></ng-container>\n </ng-container>\n <ng-template #defaultHeaderCell>\n {{ columnDef.headerName | uppercase }}\n </ng-template>\n </div>\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngIf=\"(datatableSettings?.rowData?.length || 0) > 0; else emptyBody\">\n <ng-container *ngFor=\"let row of datatableSettings?.rowData; index as i\">\n <tr class=\"mc-datatable__row-parent\" (click)=\"rowClickEvent($event, row)\">\n <td\n class=\"mc-datatable__fix-first-column\"\n *ngIf=\"datatableSettings?.activateSelection && selectionComponent\"\n >\n <ng-container *ngIf=\"datatableSettings?.isLoading; else notLoadingCheckbox\">\n <div class=\"skeleton-box mu-mb-100 checkbox-loading\"></div>\n </ng-container>\n <ng-template #notLoadingCheckbox>\n <moz-checkbox\n (change)=\"\n selectionComponent.onUdpateSelectionRow(row); selectionRowEvent($event)\n \"\n [(ngModel)]=\"row.selected\"\n [checked]=\"row.selected || false\"\n [disabled]=\"row.disableSelection || false\"\n >\n </moz-checkbox>\n </ng-template>\n </td>\n <ng-container *ngIf=\"hasSubRow() && !datatableSettings?.isLoading\">\n <td\n *ngIf=\"row['subRow']; else noSubRow\"\n class=\"mc-datatable__cell-button mc-datatable__fix-first-column\"\n [style.left.px]=\"getStyleLeftForColumnFixed()\"\n >\n <button\n class=\"mc-datatable__expand mc-datatable__btn\"\n (click)=\"toggleRowExpansion(i); $event.stopPropagation()\"\n >\n <span class=\"mc-datatable__btn-icon\">\n <ng-container *ngIf=\"!expandedRows[i]; else subrowClosed\">\n <moz-icon [iconName]=\"'Navigation_Control_Circle--More_24px'\"></moz-icon>\n </ng-container>\n <ng-template #subrowClosed>\n <moz-icon [iconName]=\"'Navigation_Control_Circle--Less_24px'\"></moz-icon>\n </ng-template>\n </span>\n </button>\n </td>\n <ng-template #noSubRow\n ><td\n class=\"mc-datatable__cell-button mc-datatable__fix-first-column\"\n [style.left.px]=\"getStyleLeftForColumnFixed()\"\n ></td\n ></ng-template>\n </ng-container>\n <ng-container *ngFor=\"let columnDef of datatableSettings?.columnDefs\">\n <td\n *ngIf=\"!columnDef.hide\"\n [ngClass]=\"{\n 'mc-datatable__fix-first-column':\n datatableSettings?.fixFirstColumn &&\n getUnhiddenColumns()[0].field === columnDef.field\n }\"\n [style.left.px]=\"getLeftValueFixFirstColumn()\"\n >\n <ng-container *ngIf=\"datatableSettings?.isLoading; else notLoadingCells\">\n <div class=\"skeleton-box mu-mb-100 cells-loading\"></div>\n </ng-container>\n <ng-template #notLoadingCells>\n <ng-container\n *ngIf=\"\n getCustomContent(columnDef.field) as customContent;\n else defaultContentCell\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"\n customContent;\n context: {\n $implicit: {\n row: row,\n index: i,\n columnDefs: datatableSettings?.columnDefs,\n content: row[columnDef.field]\n }\n }\n \"\n ></ng-container>\n </ng-container>\n <ng-template #defaultContentCell>\n {{ row[columnDef.field] }}\n </ng-template>\n </ng-template>\n </td>\n </ng-container>\n </tr>\n <ng-container>\n <tr *ngIf=\"expandedRows[i]\">\n <td [attr.colspan]=\"getColspanForExpansionRow()\">\n <ng-container\n *ngIf=\"getCustomExpansionRowContent() as expansionRowContentComponent\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n expansionRowContentComponent;\n context: {\n $implicit: {\n subRowContent: row['subRow'],\n index: i,\n }\n }\n \"\n ></ng-container>\n </ng-container>\n </td>\n </tr>\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-template #emptyBody>\n <tr class=\"mc-datatable__empty\">\n <td colspan=\"5\" class=\"mc-datatable__empty-cell\">\n <div class=\"mc-datatable__empty-content\">\n <div>\n <div>\n <p>\n <strong>\n {{\n datatableSettings?.labels?.emptyBodyTitle || 'There is no result.'\n }}</strong\n ><br />\n {{\n datatableSettings?.labels?.emptyBodyDescription ||\n 'Please try changing your filters.'\n }}\n </p>\n </div>\n <div *ngIf=\"datatableSettings?.activateEmptyBodyButton\">\n <button\n moz-button\n [theme]=\"'neutral'\"\n [size]=\"'s'\"\n [variation]=\"'bordered'\"\n (click)=\"emptyButtonClickEvent()\"\n >\n <moz-icon\n iconName=\"{{\n datatableSettings?.icons?.emptyBodyButtonIcon ||\n 'Navigation_Display_Filter_24px'\n }}\"\n ></moz-icon>\n {{ datatableSettings?.labels?.emptyBodyButtonTitle || 'Change filters' }}\n </button>\n </div>\n </div>\n </div>\n </td>\n </tr></ng-template\n >\n </tbody>\n </table>\n </div>\n </div>\n <moz-datatable-footer\n *ngIf=\"datatableSettings?.activatePagination\"\n [footerSettings]=\"footerSettings\"\n [isLoading]=\"datatableSettings?.isLoading\"\n (rowPerPageChangeEmitter)=\"rowPerPageChangeEvent($event)\"\n (pageChangeEmitter)=\"pageChangeEvent($event)\"\n ></moz-datatable-footer>\n</div>\n", styles: [".mc-datatable{font-family:LeroyMerlin,sans-serif;box-sizing:border-box}.mc-datatable *,.mc-datatable :after,.mc-datatable :before{box-sizing:inherit}.mc-datatable__container{border-radius:4px;box-shadow:0 1px 5px #19191933;background-color:#e6e6e6;overflow:hidden}.mc-datatable__main{scrollbar-color:#666666 #e6e6e6;scrollbar-width:thin;overflow:auto}.mc-datatable__main::-webkit-scrollbar{background-color:#e6e6e6;height:.5rem;width:.5rem}.mc-datatable__main::-webkit-scrollbar-track{background:#e6e6e6}.mc-datatable__main::-webkit-scrollbar-thumb{background:#666666}.mc-datatable__table tr,.mc-datatable thead th,.mc-datatable thead td{height:2.9375rem}.mc-datatable__table{border-collapse:collapse;border-spacing:0;caption-side:bottom;width:100%}.mc-datatable__table>thead,.mc-datatable__table>tbody{background-color:#fff}.mc-datatable__table th,.mc-datatable__table td{border-bottom:1px solid #b3b3b3;text-align:left;vertical-align:middle;padding-right:1rem;padding-left:1rem}.mc-datatable thead th,.mc-datatable thead td{font-weight:600;font-size:.75rem;line-height:1.3333333333;color:#191919;text-transform:uppercase}.mc-datatable__head{align-items:center;display:flex;justify-content:space-between}.mc-datatable tbody tr:hover:not(.mc-datatable__empty){background-color:#e6e6e6}.mc-datatable tbody tr.selected{background-color:#ebf5de}.mc-datatable tbody th,.mc-datatable tbody td{font-size:.875rem;line-height:1.2857142857;color:#191919}.mc-datatable__row-parent:not(.mc-datatable__row-parent--expanded)+.mc-datatable__row-expandable{height:0}.mc-datatable__row-parent:not(.mc-datatable__row-parent--expanded)+.mc-datatable__row-expandable .mc-datatable__row-inner{overflow:hidden;max-height:0}.mc-datatable__row-parent.mc-datatable__row-parent--expanded+.mc-datatable__row-expandable .mc-datatable__row-inner{max-height:100%}.mc-datatable__row-expandable>td{padding:0;border-bottom:0}.mc-datatable__row-expandable--offset-1 table th:first-child,.mc-datatable__row-expandable--offset-1 table td:first-child{padding-left:4.25rem}.mc-datatable__row-expandable--offset-2 table th:first-child,.mc-datatable__row-expandable--offset-2 table td:first-child{padding-left:7.75rem}.mc-datatable__cell-checkbox{width:3.25rem}.mc-datatable__cell-button{width:3.5rem}.mc-datatable__cell-field{min-width:9.375rem}td.mc-datatable__cell-number{text-align:right}.mc-datatable__empty,.mc-datatable__empty:hover{background-color:#e6e6e6}.mc-datatable__empty-cell{color:#666}.mc-datatable__empty-content{font-size:1rem;line-height:1.375;align-items:center;color:#666;display:flex;gap:1.5rem;min-height:19.375rem;justify-content:center;text-align:center}.mc-datatable__empty-content strong{font-size:1.125rem;line-height:1.3333333333}.mc-datatable--s .mc-datatable__table tr,.mc-datatable--s .mc-datatable thead th,.mc-datatable--s .mc-datatable thead td{height:2.4375rem}.mc-datatable--l .mc-datatable__table tr,.mc-datatable--l .mc-datatable thead th,.mc-datatable--l .mc-datatable thead td{height:3.4375rem}.mc-datatable--sticky .mc-datatable__table>thead,.mc-datatable--sticky-header .mc-datatable__table>thead{box-shadow:0 4px 20px #19191933;top:0;z-index:2}.mc-datatable--sticky .mc-datatable__table>tbody tr:last-child th,.mc-datatable--sticky .mc-datatable__table>tbody tr:last-child td,.mc-datatable--sticky-header .mc-datatable__table>tbody tr:last-child th,.mc-datatable--sticky-header .mc-datatable__table>tbody tr:last-child td{border-bottom:transparent}.mc-datatable--sticky .mc-datatable__footer,.mc-datatable--sticky-header .mc-datatable__footer{border-top:1px solid #b3b3b3;position:relative;z-index:2}.mc-datatable--sticky .mc-datatable__main{padding-top:2.9375rem;transform:translateZ(0)}.mc-datatable--sticky .mc-datatable__table{scrollbar-color:#666666 #e6e6e6;scrollbar-width:thin;display:block;overflow-y:auto}.mc-datatable--sticky .mc-datatable__table::-webkit-scrollbar{background-color:#e6e6e6;height:.5rem;width:.5rem}.mc-datatable--sticky .mc-datatable__table::-webkit-scrollbar-track{background:#e6e6e6}.mc-datatable--sticky .mc-datatable__table::-webkit-scrollbar-thumb{background:#666666}.mc-datatable--sticky .mc-datatable__table>thead{position:fixed;width:100%}.mc-datatable--sticky .mc-datatable__table>thead,.mc-datatable--sticky .mc-datatable__table>tbody,.mc-datatable--sticky .mc-datatable__table>thead tr,.mc-datatable--sticky .mc-datatable__table>tbody tr,.mc-datatable--sticky .mc-datatable__table>thead th,.mc-datatable--sticky .mc-datatable__table>thead td,.mc-datatable--sticky .mc-datatable__table>tbody th,.mc-datatable--sticky .mc-datatable__table>tbody td{display:flex}.mc-datatable--sticky .mc-datatable__table>thead,.mc-datatable--sticky .mc-datatable__table>tbody,.mc-datatable--sticky .mc-datatable__table>thead tr,.mc-datatable--sticky .mc-datatable__table>tbody tr{width:100%}.mc-datatable--sticky .mc-datatable__table>tbody{flex-direction:column}.mc-datatable--sticky .mc-datatable__table>thead th,.mc-datatable--sticky .mc-datatable__table>thead td,.mc-datatable--sticky .mc-datatable__table>tbody th,.mc-datatable--sticky .mc-datatable__table>tbody td{align-items:center}.mc-datatable--sticky .mc-datatable__table>thead th:not(.mc-datatable__cell-checkbox):not(.mc-datatable__cell-button),.mc-datatable--sticky .mc-datatable__table>thead td:not(.mc-datatable__cell-checkbox):not(.mc-datatable__cell-button),.mc-datatable--sticky .mc-datatable__table>tbody th:not(.mc-datatable__cell-checkbox):not(.mc-datatable__cell-button),.mc-datatable--sticky .mc-datatable__table>tbody td:not(.mc-datatable__cell-checkbox):not(.mc-datatable__cell-button){flex:1}.mc-datatable--sticky .mc-datatable__cell-checkbox,.mc-datatable--sticky .mc-datatable__cell-button,.mc-datatable--sticky .mc-datatable__cell-field,.mc-datatable--sticky .mc-datatable__cell-number{flex-shrink:0}.mc-datatable--sticky .mc-datatable__cell-number{justify-content:flex-end}.mc-datatable--sticky-header .mc-datatable__main{overflow-y:auto}.mc-datatable--sticky-header .mc-datatable__table>thead{position:sticky}.mc-datatable--overflow-visible .mc-datatable__container,.mc-datatable--overflow-visible .mc-datatable__main{overflow:visible}.mc-datatable__btn{margin:0;box-shadow:none;text-decoration:none;outline:none;border:none;cursor:pointer;padding:0;align-items:center;background-color:transparent;display:flex}.mc-datatable__btn-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.mc-datatable__btn-icon,.mc-datatable__btn svg{width:1.5rem;height:1.5rem}.mc-datatable__sort{font-weight:600;font-size:.75rem;line-height:1.3333333333;color:#191919;text-transform:uppercase;align-items:center;display:flex;height:100%;font-family:inherit;justify-content:space-between;width:100%}.mc-datatable__sort-arrow{align-items:center;display:flex;flex-direction:column;height:1.5rem;justify-content:space-around;margin-left:.5rem;width:1.5rem}.mc-datatable__sort-arrow:after,.mc-datatable__sort-arrow:before{background-color:#ccc;content:\"\";flex-shrink:0;height:.5rem;width:.75rem}.mc-datatable__sort-arrow:before{clip-path:polygon(50% 0%,0% 100%,100% 100%)}.asc .mc-datatable__sort-arrow:before{background-color:#333}.desc .mc-datatable__sort-arrow:before{display:none}.mc-datatable__sort-arrow:after{clip-path:polygon(0 0,100% 0,50% 100%)}.asc .mc-datatable__sort-arrow:after{display:none}.desc .mc-datatable__sort-arrow:after{background-color:#333}.mc-datatable__options{width:1.5rem;height:1.5rem}.mc-datatable__expand .mc-datatable__btn-icon{fill:#46a610}.mc-datatable .visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.mc-datatable__topbar{justify-content:space-between;padding-top:1rem;padding-bottom:1rem}.mc-datatable__topbar,.mc-datatable__topbar-edition,.mc-datatable__topbar-actions{display:flex;gap:1rem}.mc-datatable__topbar-edition,.mc-datatable__topbar-actions{flex-wrap:wrap}.mc-datatable__topbar-edition{flex-shrink:0}.mc-datatable__topbar-actions{align-items:center;justify-content:flex-end;margin-left:auto}.mc-datatable__filters{align-items:center;border-top:1px solid #b3b3b3;display:flex;flex-wrap:wrap;gap:1rem;justify-content:flex-end;padding-top:1rem;padding-bottom:1rem}.mc-datatable__footer{align-items:center;background-color:#fff;display:flex;padding:.75rem 1rem;gap:1rem}@media screen and (max-width: 679px){.mc-datatable__footer{flex-direction:column}}.mc-datatable__select{display:flex;align-items:center;gap:.5rem}.mc-datatable__select-label{font-size:.875rem;line-height:1.2857142857;color:#333;flex-shrink:0}.mc-datatable__count{font-size:.75rem;line-height:1.3333333333;color:#666}.mc-datatable__pagination{margin-left:auto}.mc-datatable__subtable{border-collapse:collapse;border-spacing:0;caption-side:bottom;width:100%;background-color:#e6e6e6}.mc-datatable__subtable th,.mc-datatable__subtable td{border-bottom-color:#b3b3b3}.mc-datatable__subtable thead th,.mc-datatable__subtable thead td{font-size:.75rem;line-height:1.3333333333;color:#000}.mc-datatable__subtable tbody th,.mc-datatable__subtable tbody td{color:#000}.fix-header-row{position:sticky;top:0;box-shadow:0 1px 5px #22202033;z-index:1}.header{align-items:center;display:flex;height:100%;font-family:inherit;justify-content:space-between;width:100%}.is-sorted-asc:before{background-color:var(--color-datatable-sort-arrow-active, #333333)}.is-sorted-desc:after{background-color:var(--color-datatable-sort-arrow-active, #333333)}.mc-datatable-height{height:100%}.mc-datatable__sort-arrow{cursor:pointer}.mc-datatable__fix-first-column{position:sticky;background-color:#fff;left:0}.skeleton-box{display:inline-block;position:relative;overflow:hidden;background-color:#ccc}.skeleton-box:after{position:absolute;inset:0;transform:translate(-100%);background-image:linear-gradient(90deg,rgba(255,255,255,0) 0,rgba(255,255,255,.2) 20%,rgba(255,255,255,.5) 60%,rgba(255,255,255,0));animation:shimmer 2s infinite;content:\"\"}@keyframes shimmer{to{transform:translate(100%)}}.checkbox-loading{width:25px;height:25px}.cells-loading{width:250px;height:25px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.ButtonComponent, selector: "button[moz-button]", inputs: ["iconPosition", "onlyIcon", "theme", "variation", "widthBehavior", "size"] }, { kind: "component", type: i4.CheckboxComponent, selector: "moz-checkbox", inputs: ["disabled", "indeterminate", "invalid", "checked"] }, { kind: "component", type: i5.IconComponent, selector: "moz-icon", inputs: ["iconName"] }, { kind: "component", type: i6.MozDatatableFooterComponent, selector: "moz-datatable-footer", inputs: ["footerSettings", "isLoading"], outputs: ["rowPerPageChangeEmitter", "pageChangeEmitter"] }, { kind: "component", type: i7.MozDatatableSelectionComponent, selector: "moz-datatable-selection", inputs: ["selectionSettings", "paginationEnabled", "rowData"], outputs: ["updateSelectionAllEmitter"] }, { kind: "directive", type: i8.MozDatatableSortDirective, selector: "[mozDatatableSort]", inputs: ["mozDatatableSort"], outputs: ["sortEmitter"] }, { kind: "pipe", type: i1.UpperCasePipe, name: "uppercase" }], encapsulation: i0.ViewEncapsulation.None });
128
+ MozDatatableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: MozDatatableComponent, selector: "moz-datatable", inputs: { footerSettings: "footerSettings", selectionSettings: "selectionSettings", datatableSettings: "datatableSettings" }, outputs: { rowClick: "rowClick", sortColumn: "sortColumn", rowSelected: "rowSelected", rowAllSelected: "rowAllSelected", emptyBodyButtonClicked: "emptyBodyButtonClicked", pageChange: "pageChange", rowPerPageChange: "rowPerPageChange" }, queries: [{ propertyName: "expansionContentComponent", first: true, predicate: MozDatatableRowExpansionContentComponent, descendants: true }, { propertyName: "headerCellComponents", predicate: MozDatatableHeaderCellComponent }, { propertyName: "contentCellComponents", predicate: MozDatatableContentCellComponent }], viewQueries: [{ propertyName: "selectionComponent", first: true, predicate: MozDatatableSelectionComponent, descendants: true }, { propertyName: "thSelectionRef", first: true, predicate: ["thSelection"], descendants: true }, { propertyName: "thSubRowRef", first: true, predicate: ["thSubRow"], descendants: true }], ngImport: i0, template: "<div class=\"mc-datatable mc-datatable-height\">\n <div class=\"mc-datatable__header\">\n <ng-content select=\"moz-datatable-caption\"></ng-content>\n <div>\n <moz-datatable-selection\n [selectionSettings]=\"selectionSettings\"\n [paginationEnabled]=\"datatableSettings?.activatePagination\"\n [rowData]=\"datatableSettings?.rowData\"\n (updateSelectionAllEmitter)=\"selectionAllRowEvent($event)\"\n ></moz-datatable-selection>\n </div>\n </div>\n <div class=\"mc-datatable__container mc-datatable-height\">\n <div class=\"mc-datatable__main mc-datatable-height\">\n <table class=\"mc-datatable__table\">\n <thead [ngClass]=\"{ 'fix-header-row': datatableSettings?.fixHeaderRow }\">\n <tr *ngIf=\"getColumns() && getColumns().length > 0\">\n <th\n class=\"mc-datatable__cell-checkbox moz-datatable__th mc-datatable__fix-first-column\"\n *ngIf=\"\n datatableSettings?.activateSelection && selectionComponent && selectionSettings\n \"\n #thSelection\n >\n <moz-checkbox\n (change)=\"\n selectionComponent.onUdpateSelectionAllPageRows($event); selectionRowEvent($event)\n \"\n [indeterminate]=\"selectionComponent.isIndeterminate\"\n [checked]=\"selectionSettings.allSelected && !selectionComponent.isIndeterminate\"\n [disabled]=\"datatableSettings?.isLoading || false\"\n >\n </moz-checkbox>\n </th>\n <th\n *ngIf=\"hasSubRow() && !datatableSettings?.isLoading\"\n class=\"mc-datatable__fix-first-column\"\n [style.left.px]=\"getStyleLeftForColumnFixed()\"\n #thSubRow\n ></th>\n <ng-container *ngFor=\"let columnDef of getColumns()\">\n <th\n class=\"moz-datatable__th\"\n *ngIf=\"!columnDef.hide\"\n [ngClass]=\"{\n 'mc-datatable__fix-first-column':\n datatableSettings?.fixFirstColumn &&\n getUnhiddenColumns()[0].field === columnDef.field\n }\"\n [style.left.px]=\"getLeftValueFixFirstColumn()\"\n >\n <ng-container *ngIf=\"datatableSettings?.isLoading; else notLoadingHeading\">\n <div class=\"skeleton-box mu-mb-100 cells-loading\"></div>\n </ng-container>\n\n <ng-template #notLoadingHeading>\n <div\n [mozDatatableSort]=\"columnDef\"\n [ngClass]=\"{ header: columnDef.sort }\"\n (sortEmitter)=\"sortEvent($event)\"\n >\n <ng-container\n *ngIf=\"\n getCustomHeader(columnDef.field) as customHeader;\n else defaultHeaderCell\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"\n customHeader;\n context: {\n $implicit: {\n content: columnDef\n }\n }\n \"\n ></ng-container>\n </ng-container>\n <ng-template #defaultHeaderCell>\n {{ columnDef.headerName | uppercase }}\n </ng-template>\n </div>\n </ng-template>\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody>\n <ng-container\n *ngIf=\"\n (datatableSettings?.rowData?.length || 0) > 0 || datatableSettings?.isLoading;\n else emptyBody\n \"\n >\n <ng-container *ngFor=\"let row of getFields(); index as i\">\n <tr class=\"mc-datatable__row-parent\" (click)=\"rowClickEvent($event, row)\">\n <td\n class=\"mc-datatable__fix-first-column\"\n *ngIf=\"datatableSettings?.activateSelection && selectionComponent\"\n >\n <ng-container *ngIf=\"datatableSettings?.isLoading; else notLoadingCheckbox\">\n <div class=\"skeleton-box mu-mb-100 checkbox-loading\"></div>\n </ng-container>\n <ng-template #notLoadingCheckbox>\n <moz-checkbox\n (change)=\"\n selectionComponent.onUdpateSelectionRow(row); selectionRowEvent($event)\n \"\n [(ngModel)]=\"row.selected\"\n [checked]=\"row.selected || false\"\n [disabled]=\"row.disableSelection || false\"\n >\n </moz-checkbox>\n </ng-template>\n </td>\n <ng-container *ngIf=\"hasSubRow() && !datatableSettings?.isLoading\">\n <td\n *ngIf=\"row['subRow']; else noSubRow\"\n class=\"mc-datatable__cell-button mc-datatable__fix-first-column\"\n [style.left.px]=\"getStyleLeftForColumnFixed()\"\n >\n <button\n class=\"mc-datatable__expand mc-datatable__btn\"\n (click)=\"toggleRowExpansion(i); $event.stopPropagation()\"\n >\n <span class=\"mc-datatable__btn-icon\">\n <ng-container *ngIf=\"!expandedRows[i]; else subrowClosed\">\n <moz-icon [iconName]=\"'Navigation_Control_Circle--More_24px'\"></moz-icon>\n </ng-container>\n <ng-template #subrowClosed>\n <moz-icon [iconName]=\"'Navigation_Control_Circle--Less_24px'\"></moz-icon>\n </ng-template>\n </span>\n </button>\n </td>\n <ng-template #noSubRow\n ><td\n class=\"mc-datatable__cell-button mc-datatable__fix-first-column\"\n [style.left.px]=\"getStyleLeftForColumnFixed()\"\n ></td\n ></ng-template>\n </ng-container>\n <ng-container *ngFor=\"let columnDef of getColumns()\">\n <td\n *ngIf=\"!columnDef.hide\"\n [ngClass]=\"{\n 'mc-datatable__fix-first-column':\n datatableSettings?.fixFirstColumn &&\n getUnhiddenColumns()[0].field === columnDef.field\n }\"\n [style.left.px]=\"getLeftValueFixFirstColumn()\"\n >\n <ng-container *ngIf=\"datatableSettings?.isLoading; else notLoadingCells\">\n <div class=\"skeleton-box mu-mb-100 cells-loading\"></div>\n </ng-container>\n <ng-template #notLoadingCells>\n <ng-container\n *ngIf=\"\n getCustomContent(columnDef.field) as customContent;\n else defaultContentCell\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"\n customContent;\n context: {\n $implicit: {\n row: row,\n index: i,\n columnDefs: datatableSettings?.columnDefs,\n content: row[columnDef.field]\n }\n }\n \"\n ></ng-container>\n </ng-container>\n <ng-template #defaultContentCell>\n {{ row[columnDef.field] }}\n </ng-template>\n </ng-template>\n </td>\n </ng-container>\n </tr>\n <ng-container>\n <tr *ngIf=\"expandedRows[i]\">\n <td [attr.colspan]=\"getColspanForExpansionRow()\">\n <ng-container\n *ngIf=\"getCustomExpansionRowContent() as expansionRowContentComponent\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n expansionRowContentComponent;\n context: {\n $implicit: {\n subRowContent: row['subRow'],\n index: i,\n }\n }\n \"\n ></ng-container>\n </ng-container>\n </td>\n </tr>\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-template #emptyBody>\n <tr class=\"mc-datatable__empty\">\n <td colspan=\"5\" class=\"mc-datatable__empty-cell\">\n <div class=\"mc-datatable__empty-content\">\n <div>\n <div>\n <p>\n <strong>\n {{\n datatableSettings?.labels?.emptyBodyTitle || 'There is no result.'\n }}</strong\n ><br />\n {{\n datatableSettings?.labels?.emptyBodyDescription ||\n 'Please try changing your filters.'\n }}\n </p>\n </div>\n <div *ngIf=\"datatableSettings?.activateEmptyBodyButton\">\n <button\n moz-button\n [theme]=\"'neutral'\"\n [size]=\"'s'\"\n [variation]=\"'bordered'\"\n (click)=\"emptyButtonClickEvent()\"\n >\n <moz-icon\n iconName=\"{{\n datatableSettings?.icons?.emptyBodyButtonIcon ||\n 'Navigation_Display_Filter_24px'\n }}\"\n ></moz-icon>\n {{ datatableSettings?.labels?.emptyBodyButtonTitle || 'Change filters' }}\n </button>\n </div>\n </div>\n </div>\n </td>\n </tr></ng-template\n >\n </tbody>\n </table>\n </div>\n <moz-datatable-footer\n *ngIf=\"datatableSettings?.activatePagination\"\n [footerSettings]=\"footerSettings\"\n [isLoading]=\"datatableSettings?.isLoading\"\n (rowPerPageChangeEmitter)=\"rowPerPageChangeEvent($event)\"\n (pageChangeEmitter)=\"pageChangeEvent($event)\"\n ></moz-datatable-footer>\n </div>\n</div>\n", styles: [".mc-datatable{font-family:LeroyMerlin,sans-serif;box-sizing:border-box}.mc-datatable *,.mc-datatable :after,.mc-datatable :before{box-sizing:inherit}.mc-datatable__container{border-radius:4px;box-shadow:0 1px 5px #19191933;background-color:#e6e6e6;overflow:hidden}.mc-datatable__main{scrollbar-color:#666666 #e6e6e6;scrollbar-width:thin;overflow:auto}.mc-datatable__main::-webkit-scrollbar{background-color:#e6e6e6;height:.5rem;width:.5rem}.mc-datatable__main::-webkit-scrollbar-track{background:#e6e6e6}.mc-datatable__main::-webkit-scrollbar-thumb{background:#666666}.mc-datatable__table tr,.mc-datatable thead th,.mc-datatable thead td{height:2.9375rem}.mc-datatable__table{border-collapse:collapse;border-spacing:0;caption-side:bottom;width:100%}.mc-datatable__table>thead,.mc-datatable__table>tbody{background-color:#fff}.mc-datatable__table th,.mc-datatable__table td{border-bottom:1px solid #b3b3b3;text-align:left;vertical-align:middle;padding-right:1rem;padding-left:1rem}.mc-datatable thead th,.mc-datatable thead td{font-weight:600;font-size:.75rem;line-height:1.3333333333;color:#191919;text-transform:uppercase}.mc-datatable__head{align-items:center;display:flex;justify-content:space-between}.mc-datatable tbody tr:hover:not(.mc-datatable__empty){background-color:#e6e6e6}.mc-datatable tbody tr.selected{background-color:#ebf5de}.mc-datatable tbody th,.mc-datatable tbody td{font-size:.875rem;line-height:1.2857142857;color:#191919}.mc-datatable__row-parent:not(.mc-datatable__row-parent--expanded)+.mc-datatable__row-expandable{height:0}.mc-datatable__row-parent:not(.mc-datatable__row-parent--expanded)+.mc-datatable__row-expandable .mc-datatable__row-inner{overflow:hidden;max-height:0}.mc-datatable__row-parent.mc-datatable__row-parent--expanded+.mc-datatable__row-expandable .mc-datatable__row-inner{max-height:100%}.mc-datatable__row-expandable>td{padding:0;border-bottom:0}.mc-datatable__row-expandable--offset-1 table th:first-child,.mc-datatable__row-expandable--offset-1 table td:first-child{padding-left:4.25rem}.mc-datatable__row-expandable--offset-2 table th:first-child,.mc-datatable__row-expandable--offset-2 table td:first-child{padding-left:7.75rem}.mc-datatable__cell-checkbox{width:3.25rem}.mc-datatable__cell-button{width:3.5rem}.mc-datatable__cell-field{min-width:9.375rem}td.mc-datatable__cell-number{text-align:right}.mc-datatable__empty,.mc-datatable__empty:hover{background-color:#e6e6e6}.mc-datatable__empty-cell{color:#666}.mc-datatable__empty-content{font-size:1rem;line-height:1.375;align-items:center;color:#666;display:flex;gap:1.5rem;min-height:19.375rem;justify-content:center;text-align:center}.mc-datatable__empty-content strong{font-size:1.125rem;line-height:1.3333333333}.mc-datatable--s .mc-datatable__table tr,.mc-datatable--s .mc-datatable thead th,.mc-datatable--s .mc-datatable thead td{height:2.4375rem}.mc-datatable--l .mc-datatable__table tr,.mc-datatable--l .mc-datatable thead th,.mc-datatable--l .mc-datatable thead td{height:3.4375rem}.mc-datatable--sticky .mc-datatable__table>thead,.mc-datatable--sticky-header .mc-datatable__table>thead{box-shadow:0 4px 20px #19191933;top:0;z-index:2}.mc-datatable--sticky .mc-datatable__table>tbody tr:last-child th,.mc-datatable--sticky .mc-datatable__table>tbody tr:last-child td,.mc-datatable--sticky-header .mc-datatable__table>tbody tr:last-child th,.mc-datatable--sticky-header .mc-datatable__table>tbody tr:last-child td{border-bottom:transparent}.mc-datatable--sticky .mc-datatable__footer,.mc-datatable--sticky-header .mc-datatable__footer{border-top:1px solid #b3b3b3;position:relative;z-index:2}.mc-datatable--sticky .mc-datatable__main{padding-top:2.9375rem;transform:translateZ(0)}.mc-datatable--sticky .mc-datatable__table{scrollbar-color:#666666 #e6e6e6;scrollbar-width:thin;display:block;overflow-y:auto}.mc-datatable--sticky .mc-datatable__table::-webkit-scrollbar{background-color:#e6e6e6;height:.5rem;width:.5rem}.mc-datatable--sticky .mc-datatable__table::-webkit-scrollbar-track{background:#e6e6e6}.mc-datatable--sticky .mc-datatable__table::-webkit-scrollbar-thumb{background:#666666}.mc-datatable--sticky .mc-datatable__table>thead{position:fixed;width:100%}.mc-datatable--sticky .mc-datatable__table>thead,.mc-datatable--sticky .mc-datatable__table>tbody,.mc-datatable--sticky .mc-datatable__table>thead tr,.mc-datatable--sticky .mc-datatable__table>tbody tr,.mc-datatable--sticky .mc-datatable__table>thead th,.mc-datatable--sticky .mc-datatable__table>thead td,.mc-datatable--sticky .mc-datatable__table>tbody th,.mc-datatable--sticky .mc-datatable__table>tbody td{display:flex}.mc-datatable--sticky .mc-datatable__table>thead,.mc-datatable--sticky .mc-datatable__table>tbody,.mc-datatable--sticky .mc-datatable__table>thead tr,.mc-datatable--sticky .mc-datatable__table>tbody tr{width:100%}.mc-datatable--sticky .mc-datatable__table>tbody{flex-direction:column}.mc-datatable--sticky .mc-datatable__table>thead th,.mc-datatable--sticky .mc-datatable__table>thead td,.mc-datatable--sticky .mc-datatable__table>tbody th,.mc-datatable--sticky .mc-datatable__table>tbody td{align-items:center}.mc-datatable--sticky .mc-datatable__table>thead th:not(.mc-datatable__cell-checkbox):not(.mc-datatable__cell-button),.mc-datatable--sticky .mc-datatable__table>thead td:not(.mc-datatable__cell-checkbox):not(.mc-datatable__cell-button),.mc-datatable--sticky .mc-datatable__table>tbody th:not(.mc-datatable__cell-checkbox):not(.mc-datatable__cell-button),.mc-datatable--sticky .mc-datatable__table>tbody td:not(.mc-datatable__cell-checkbox):not(.mc-datatable__cell-button){flex:1}.mc-datatable--sticky .mc-datatable__cell-checkbox,.mc-datatable--sticky .mc-datatable__cell-button,.mc-datatable--sticky .mc-datatable__cell-field,.mc-datatable--sticky .mc-datatable__cell-number{flex-shrink:0}.mc-datatable--sticky .mc-datatable__cell-number{justify-content:flex-end}.mc-datatable--sticky-header .mc-datatable__main{overflow-y:auto}.mc-datatable--sticky-header .mc-datatable__table>thead{position:sticky}.mc-datatable--overflow-visible .mc-datatable__container,.mc-datatable--overflow-visible .mc-datatable__main{overflow:visible}.mc-datatable__btn{margin:0;box-shadow:none;text-decoration:none;outline:none;border:none;cursor:pointer;padding:0;align-items:center;background-color:transparent;display:flex}.mc-datatable__btn-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.mc-datatable__btn-icon,.mc-datatable__btn svg{width:1.5rem;height:1.5rem}.mc-datatable__sort{font-weight:600;font-size:.75rem;line-height:1.3333333333;color:#191919;text-transform:uppercase;align-items:center;display:flex;height:100%;font-family:inherit;justify-content:space-between;width:100%}.mc-datatable__sort-arrow{align-items:center;display:flex;flex-direction:column;height:1.5rem;justify-content:space-around;margin-left:.5rem;width:1.5rem}.mc-datatable__sort-arrow:after,.mc-datatable__sort-arrow:before{background-color:#ccc;content:\"\";flex-shrink:0;height:.5rem;width:.75rem}.mc-datatable__sort-arrow:before{clip-path:polygon(50% 0%,0% 100%,100% 100%)}.asc .mc-datatable__sort-arrow:before{background-color:#333}.desc .mc-datatable__sort-arrow:before{display:none}.mc-datatable__sort-arrow:after{clip-path:polygon(0 0,100% 0,50% 100%)}.asc .mc-datatable__sort-arrow:after{display:none}.desc .mc-datatable__sort-arrow:after{background-color:#333}.mc-datatable__options{width:1.5rem;height:1.5rem}.mc-datatable__expand .mc-datatable__btn-icon{fill:#46a610}.mc-datatable .visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.mc-datatable__topbar{justify-content:space-between;padding-top:1rem;padding-bottom:1rem}.mc-datatable__topbar,.mc-datatable__topbar-edition,.mc-datatable__topbar-actions{display:flex;gap:1rem}.mc-datatable__topbar-edition,.mc-datatable__topbar-actions{flex-wrap:wrap}.mc-datatable__topbar-edition{flex-shrink:0}.mc-datatable__topbar-actions{align-items:center;justify-content:flex-end;margin-left:auto}.mc-datatable__filters{align-items:center;border-top:1px solid #b3b3b3;display:flex;flex-wrap:wrap;gap:1rem;justify-content:flex-end;padding-top:1rem;padding-bottom:1rem}.mc-datatable__footer{align-items:center;background-color:#fff;display:flex;padding:.75rem 1rem;gap:1rem}@media screen and (max-width: 679px){.mc-datatable__footer{flex-direction:column}}.mc-datatable__select{display:flex;align-items:center;gap:.5rem}.mc-datatable__select-label{font-size:.875rem;line-height:1.2857142857;color:#333;flex-shrink:0}.mc-datatable__count{font-size:.75rem;line-height:1.3333333333;color:#666}.mc-datatable__pagination{margin-left:auto}.mc-datatable__subtable{border-collapse:collapse;border-spacing:0;caption-side:bottom;width:100%;background-color:#e6e6e6}.mc-datatable__subtable th,.mc-datatable__subtable td{border-bottom-color:#b3b3b3}.mc-datatable__subtable thead th,.mc-datatable__subtable thead td{font-size:.75rem;line-height:1.3333333333;color:#000}.mc-datatable__subtable tbody th,.mc-datatable__subtable tbody td{color:#000}.fix-header-row{position:sticky;top:0;box-shadow:0 1px 5px #22202033;z-index:1}.header{align-items:center;display:flex;height:100%;font-family:inherit;justify-content:space-between;width:100%}.is-sorted-asc:before{background-color:var(--color-datatable-sort-arrow-active, #333333)}.is-sorted-desc:after{background-color:var(--color-datatable-sort-arrow-active, #333333)}.mc-datatable-height{height:100%}.mc-datatable__sort-arrow{cursor:pointer}.mc-datatable__fix-first-column{position:sticky;background-color:#fff;left:0}.skeleton-box{display:inline-block;position:relative;overflow:hidden;background-color:#ccc}.skeleton-box:after{position:absolute;inset:0;transform:translate(-100%);background-image:linear-gradient(90deg,rgba(255,255,255,0) 0,rgba(255,255,255,.2) 20%,rgba(255,255,255,.5) 60%,rgba(255,255,255,0));animation:shimmer 2s infinite;content:\"\"}@keyframes shimmer{to{transform:translate(100%)}}.checkbox-loading{width:25px;height:25px}.cells-loading{width:250px;height:25px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.ButtonComponent, selector: "button[moz-button]", inputs: ["iconPosition", "onlyIcon", "theme", "variation", "widthBehavior", "size"] }, { kind: "component", type: i4.CheckboxComponent, selector: "moz-checkbox", inputs: ["disabled", "indeterminate", "invalid", "checked"] }, { kind: "component", type: i5.IconComponent, selector: "moz-icon", inputs: ["iconName"] }, { kind: "component", type: i6.MozDatatableFooterComponent, selector: "moz-datatable-footer", inputs: ["footerSettings", "isLoading"], outputs: ["rowPerPageChangeEmitter", "pageChangeEmitter"] }, { kind: "component", type: i7.MozDatatableSelectionComponent, selector: "moz-datatable-selection", inputs: ["selectionSettings", "paginationEnabled", "rowData"], outputs: ["updateSelectionAllEmitter"] }, { kind: "directive", type: i8.MozDatatableSortDirective, selector: "[mozDatatableSort]", inputs: ["mozDatatableSort"], outputs: ["sortEmitter"] }, { kind: "pipe", type: i1.UpperCasePipe, name: "uppercase" }], encapsulation: i0.ViewEncapsulation.None });
119
129
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MozDatatableComponent, decorators: [{
120
130
  type: Component,
121
- args: [{ selector: 'moz-datatable', encapsulation: ViewEncapsulation.None, template: "<div class=\"mc-datatable mc-datatable-height\">\n <div class=\"mc-datatable__header\">\n <ng-content select=\"moz-datatable-caption\"></ng-content>\n <div>\n <moz-datatable-selection\n [selectionSettings]=\"selectionSettings\"\n [paginationEnabled]=\"datatableSettings?.activatePagination\"\n [rowData]=\"datatableSettings?.rowData\"\n (updateSelectionAllEmitter)=\"selectionAllRowEvent($event)\"\n ></moz-datatable-selection>\n </div>\n </div>\n <div class=\"mc-datatable__container mc-datatable-height\">\n <div class=\"mc-datatable__main mc-datatable-height\">\n <table class=\"mc-datatable__table\">\n <thead [ngClass]=\"{ 'fix-header-row': datatableSettings?.fixHeaderRow }\">\n <tr>\n <th\n class=\"mc-datatable__cell-checkbox moz-datatable__th mc-datatable__fix-first-column\"\n *ngIf=\"\n datatableSettings?.activateSelection && selectionComponent && selectionSettings\n \"\n #thSelection\n >\n <moz-checkbox\n (change)=\"\n selectionComponent.onUdpateSelectionAllPageRows($event); selectionRowEvent($event)\n \"\n [indeterminate]=\"selectionComponent.isIndeterminate\"\n [checked]=\"selectionSettings.allSelected && !selectionComponent.isIndeterminate\"\n [disabled]=\"datatableSettings?.isLoading || false\"\n >\n </moz-checkbox>\n </th>\n <th\n *ngIf=\"hasSubRow() && !datatableSettings?.isLoading\"\n class=\"mc-datatable__fix-first-column\"\n [style.left.px]=\"getStyleLeftForColumnFixed()\"\n #thSubRow\n ></th>\n <ng-container *ngFor=\"let columnDef of datatableSettings?.columnDefs\">\n <th\n class=\"moz-datatable__th\"\n *ngIf=\"!columnDef.hide\"\n [ngClass]=\"{\n 'mc-datatable__fix-first-column':\n datatableSettings?.fixFirstColumn &&\n getUnhiddenColumns()[0].field === columnDef.field\n }\"\n [style.left.px]=\"getLeftValueFixFirstColumn()\"\n >\n <div\n [mozDatatableSort]=\"columnDef\"\n [ngClass]=\"{ header: columnDef.sort }\"\n (sortEmitter)=\"sortEvent($event)\"\n >\n <ng-container\n *ngIf=\"getCustomHeader(columnDef.field) as customHeader; else defaultHeaderCell\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n customHeader;\n context: {\n $implicit: {\n content: columnDef\n }\n }\n \"\n ></ng-container>\n </ng-container>\n <ng-template #defaultHeaderCell>\n {{ columnDef.headerName | uppercase }}\n </ng-template>\n </div>\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngIf=\"(datatableSettings?.rowData?.length || 0) > 0; else emptyBody\">\n <ng-container *ngFor=\"let row of datatableSettings?.rowData; index as i\">\n <tr class=\"mc-datatable__row-parent\" (click)=\"rowClickEvent($event, row)\">\n <td\n class=\"mc-datatable__fix-first-column\"\n *ngIf=\"datatableSettings?.activateSelection && selectionComponent\"\n >\n <ng-container *ngIf=\"datatableSettings?.isLoading; else notLoadingCheckbox\">\n <div class=\"skeleton-box mu-mb-100 checkbox-loading\"></div>\n </ng-container>\n <ng-template #notLoadingCheckbox>\n <moz-checkbox\n (change)=\"\n selectionComponent.onUdpateSelectionRow(row); selectionRowEvent($event)\n \"\n [(ngModel)]=\"row.selected\"\n [checked]=\"row.selected || false\"\n [disabled]=\"row.disableSelection || false\"\n >\n </moz-checkbox>\n </ng-template>\n </td>\n <ng-container *ngIf=\"hasSubRow() && !datatableSettings?.isLoading\">\n <td\n *ngIf=\"row['subRow']; else noSubRow\"\n class=\"mc-datatable__cell-button mc-datatable__fix-first-column\"\n [style.left.px]=\"getStyleLeftForColumnFixed()\"\n >\n <button\n class=\"mc-datatable__expand mc-datatable__btn\"\n (click)=\"toggleRowExpansion(i); $event.stopPropagation()\"\n >\n <span class=\"mc-datatable__btn-icon\">\n <ng-container *ngIf=\"!expandedRows[i]; else subrowClosed\">\n <moz-icon [iconName]=\"'Navigation_Control_Circle--More_24px'\"></moz-icon>\n </ng-container>\n <ng-template #subrowClosed>\n <moz-icon [iconName]=\"'Navigation_Control_Circle--Less_24px'\"></moz-icon>\n </ng-template>\n </span>\n </button>\n </td>\n <ng-template #noSubRow\n ><td\n class=\"mc-datatable__cell-button mc-datatable__fix-first-column\"\n [style.left.px]=\"getStyleLeftForColumnFixed()\"\n ></td\n ></ng-template>\n </ng-container>\n <ng-container *ngFor=\"let columnDef of datatableSettings?.columnDefs\">\n <td\n *ngIf=\"!columnDef.hide\"\n [ngClass]=\"{\n 'mc-datatable__fix-first-column':\n datatableSettings?.fixFirstColumn &&\n getUnhiddenColumns()[0].field === columnDef.field\n }\"\n [style.left.px]=\"getLeftValueFixFirstColumn()\"\n >\n <ng-container *ngIf=\"datatableSettings?.isLoading; else notLoadingCells\">\n <div class=\"skeleton-box mu-mb-100 cells-loading\"></div>\n </ng-container>\n <ng-template #notLoadingCells>\n <ng-container\n *ngIf=\"\n getCustomContent(columnDef.field) as customContent;\n else defaultContentCell\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"\n customContent;\n context: {\n $implicit: {\n row: row,\n index: i,\n columnDefs: datatableSettings?.columnDefs,\n content: row[columnDef.field]\n }\n }\n \"\n ></ng-container>\n </ng-container>\n <ng-template #defaultContentCell>\n {{ row[columnDef.field] }}\n </ng-template>\n </ng-template>\n </td>\n </ng-container>\n </tr>\n <ng-container>\n <tr *ngIf=\"expandedRows[i]\">\n <td [attr.colspan]=\"getColspanForExpansionRow()\">\n <ng-container\n *ngIf=\"getCustomExpansionRowContent() as expansionRowContentComponent\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n expansionRowContentComponent;\n context: {\n $implicit: {\n subRowContent: row['subRow'],\n index: i,\n }\n }\n \"\n ></ng-container>\n </ng-container>\n </td>\n </tr>\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-template #emptyBody>\n <tr class=\"mc-datatable__empty\">\n <td colspan=\"5\" class=\"mc-datatable__empty-cell\">\n <div class=\"mc-datatable__empty-content\">\n <div>\n <div>\n <p>\n <strong>\n {{\n datatableSettings?.labels?.emptyBodyTitle || 'There is no result.'\n }}</strong\n ><br />\n {{\n datatableSettings?.labels?.emptyBodyDescription ||\n 'Please try changing your filters.'\n }}\n </p>\n </div>\n <div *ngIf=\"datatableSettings?.activateEmptyBodyButton\">\n <button\n moz-button\n [theme]=\"'neutral'\"\n [size]=\"'s'\"\n [variation]=\"'bordered'\"\n (click)=\"emptyButtonClickEvent()\"\n >\n <moz-icon\n iconName=\"{{\n datatableSettings?.icons?.emptyBodyButtonIcon ||\n 'Navigation_Display_Filter_24px'\n }}\"\n ></moz-icon>\n {{ datatableSettings?.labels?.emptyBodyButtonTitle || 'Change filters' }}\n </button>\n </div>\n </div>\n </div>\n </td>\n </tr></ng-template\n >\n </tbody>\n </table>\n </div>\n </div>\n <moz-datatable-footer\n *ngIf=\"datatableSettings?.activatePagination\"\n [footerSettings]=\"footerSettings\"\n [isLoading]=\"datatableSettings?.isLoading\"\n (rowPerPageChangeEmitter)=\"rowPerPageChangeEvent($event)\"\n (pageChangeEmitter)=\"pageChangeEvent($event)\"\n ></moz-datatable-footer>\n</div>\n", styles: [".mc-datatable{font-family:LeroyMerlin,sans-serif;box-sizing:border-box}.mc-datatable *,.mc-datatable :after,.mc-datatable :before{box-sizing:inherit}.mc-datatable__container{border-radius:4px;box-shadow:0 1px 5px #19191933;background-color:#e6e6e6;overflow:hidden}.mc-datatable__main{scrollbar-color:#666666 #e6e6e6;scrollbar-width:thin;overflow:auto}.mc-datatable__main::-webkit-scrollbar{background-color:#e6e6e6;height:.5rem;width:.5rem}.mc-datatable__main::-webkit-scrollbar-track{background:#e6e6e6}.mc-datatable__main::-webkit-scrollbar-thumb{background:#666666}.mc-datatable__table tr,.mc-datatable thead th,.mc-datatable thead td{height:2.9375rem}.mc-datatable__table{border-collapse:collapse;border-spacing:0;caption-side:bottom;width:100%}.mc-datatable__table>thead,.mc-datatable__table>tbody{background-color:#fff}.mc-datatable__table th,.mc-datatable__table td{border-bottom:1px solid #b3b3b3;text-align:left;vertical-align:middle;padding-right:1rem;padding-left:1rem}.mc-datatable thead th,.mc-datatable thead td{font-weight:600;font-size:.75rem;line-height:1.3333333333;color:#191919;text-transform:uppercase}.mc-datatable__head{align-items:center;display:flex;justify-content:space-between}.mc-datatable tbody tr:hover:not(.mc-datatable__empty){background-color:#e6e6e6}.mc-datatable tbody tr.selected{background-color:#ebf5de}.mc-datatable tbody th,.mc-datatable tbody td{font-size:.875rem;line-height:1.2857142857;color:#191919}.mc-datatable__row-parent:not(.mc-datatable__row-parent--expanded)+.mc-datatable__row-expandable{height:0}.mc-datatable__row-parent:not(.mc-datatable__row-parent--expanded)+.mc-datatable__row-expandable .mc-datatable__row-inner{overflow:hidden;max-height:0}.mc-datatable__row-parent.mc-datatable__row-parent--expanded+.mc-datatable__row-expandable .mc-datatable__row-inner{max-height:100%}.mc-datatable__row-expandable>td{padding:0;border-bottom:0}.mc-datatable__row-expandable--offset-1 table th:first-child,.mc-datatable__row-expandable--offset-1 table td:first-child{padding-left:4.25rem}.mc-datatable__row-expandable--offset-2 table th:first-child,.mc-datatable__row-expandable--offset-2 table td:first-child{padding-left:7.75rem}.mc-datatable__cell-checkbox{width:3.25rem}.mc-datatable__cell-button{width:3.5rem}.mc-datatable__cell-field{min-width:9.375rem}td.mc-datatable__cell-number{text-align:right}.mc-datatable__empty,.mc-datatable__empty:hover{background-color:#e6e6e6}.mc-datatable__empty-cell{color:#666}.mc-datatable__empty-content{font-size:1rem;line-height:1.375;align-items:center;color:#666;display:flex;gap:1.5rem;min-height:19.375rem;justify-content:center;text-align:center}.mc-datatable__empty-content strong{font-size:1.125rem;line-height:1.3333333333}.mc-datatable--s .mc-datatable__table tr,.mc-datatable--s .mc-datatable thead th,.mc-datatable--s .mc-datatable thead td{height:2.4375rem}.mc-datatable--l .mc-datatable__table tr,.mc-datatable--l .mc-datatable thead th,.mc-datatable--l .mc-datatable thead td{height:3.4375rem}.mc-datatable--sticky .mc-datatable__table>thead,.mc-datatable--sticky-header .mc-datatable__table>thead{box-shadow:0 4px 20px #19191933;top:0;z-index:2}.mc-datatable--sticky .mc-datatable__table>tbody tr:last-child th,.mc-datatable--sticky .mc-datatable__table>tbody tr:last-child td,.mc-datatable--sticky-header .mc-datatable__table>tbody tr:last-child th,.mc-datatable--sticky-header .mc-datatable__table>tbody tr:last-child td{border-bottom:transparent}.mc-datatable--sticky .mc-datatable__footer,.mc-datatable--sticky-header .mc-datatable__footer{border-top:1px solid #b3b3b3;position:relative;z-index:2}.mc-datatable--sticky .mc-datatable__main{padding-top:2.9375rem;transform:translateZ(0)}.mc-datatable--sticky .mc-datatable__table{scrollbar-color:#666666 #e6e6e6;scrollbar-width:thin;display:block;overflow-y:auto}.mc-datatable--sticky .mc-datatable__table::-webkit-scrollbar{background-color:#e6e6e6;height:.5rem;width:.5rem}.mc-datatable--sticky .mc-datatable__table::-webkit-scrollbar-track{background:#e6e6e6}.mc-datatable--sticky .mc-datatable__table::-webkit-scrollbar-thumb{background:#666666}.mc-datatable--sticky .mc-datatable__table>thead{position:fixed;width:100%}.mc-datatable--sticky .mc-datatable__table>thead,.mc-datatable--sticky .mc-datatable__table>tbody,.mc-datatable--sticky .mc-datatable__table>thead tr,.mc-datatable--sticky .mc-datatable__table>tbody tr,.mc-datatable--sticky .mc-datatable__table>thead th,.mc-datatable--sticky .mc-datatable__table>thead td,.mc-datatable--sticky .mc-datatable__table>tbody th,.mc-datatable--sticky .mc-datatable__table>tbody td{display:flex}.mc-datatable--sticky .mc-datatable__table>thead,.mc-datatable--sticky .mc-datatable__table>tbody,.mc-datatable--sticky .mc-datatable__table>thead tr,.mc-datatable--sticky .mc-datatable__table>tbody tr{width:100%}.mc-datatable--sticky .mc-datatable__table>tbody{flex-direction:column}.mc-datatable--sticky .mc-datatable__table>thead th,.mc-datatable--sticky .mc-datatable__table>thead td,.mc-datatable--sticky .mc-datatable__table>tbody th,.mc-datatable--sticky .mc-datatable__table>tbody td{align-items:center}.mc-datatable--sticky .mc-datatable__table>thead th:not(.mc-datatable__cell-checkbox):not(.mc-datatable__cell-button),.mc-datatable--sticky .mc-datatable__table>thead td:not(.mc-datatable__cell-checkbox):not(.mc-datatable__cell-button),.mc-datatable--sticky .mc-datatable__table>tbody th:not(.mc-datatable__cell-checkbox):not(.mc-datatable__cell-button),.mc-datatable--sticky .mc-datatable__table>tbody td:not(.mc-datatable__cell-checkbox):not(.mc-datatable__cell-button){flex:1}.mc-datatable--sticky .mc-datatable__cell-checkbox,.mc-datatable--sticky .mc-datatable__cell-button,.mc-datatable--sticky .mc-datatable__cell-field,.mc-datatable--sticky .mc-datatable__cell-number{flex-shrink:0}.mc-datatable--sticky .mc-datatable__cell-number{justify-content:flex-end}.mc-datatable--sticky-header .mc-datatable__main{overflow-y:auto}.mc-datatable--sticky-header .mc-datatable__table>thead{position:sticky}.mc-datatable--overflow-visible .mc-datatable__container,.mc-datatable--overflow-visible .mc-datatable__main{overflow:visible}.mc-datatable__btn{margin:0;box-shadow:none;text-decoration:none;outline:none;border:none;cursor:pointer;padding:0;align-items:center;background-color:transparent;display:flex}.mc-datatable__btn-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.mc-datatable__btn-icon,.mc-datatable__btn svg{width:1.5rem;height:1.5rem}.mc-datatable__sort{font-weight:600;font-size:.75rem;line-height:1.3333333333;color:#191919;text-transform:uppercase;align-items:center;display:flex;height:100%;font-family:inherit;justify-content:space-between;width:100%}.mc-datatable__sort-arrow{align-items:center;display:flex;flex-direction:column;height:1.5rem;justify-content:space-around;margin-left:.5rem;width:1.5rem}.mc-datatable__sort-arrow:after,.mc-datatable__sort-arrow:before{background-color:#ccc;content:\"\";flex-shrink:0;height:.5rem;width:.75rem}.mc-datatable__sort-arrow:before{clip-path:polygon(50% 0%,0% 100%,100% 100%)}.asc .mc-datatable__sort-arrow:before{background-color:#333}.desc .mc-datatable__sort-arrow:before{display:none}.mc-datatable__sort-arrow:after{clip-path:polygon(0 0,100% 0,50% 100%)}.asc .mc-datatable__sort-arrow:after{display:none}.desc .mc-datatable__sort-arrow:after{background-color:#333}.mc-datatable__options{width:1.5rem;height:1.5rem}.mc-datatable__expand .mc-datatable__btn-icon{fill:#46a610}.mc-datatable .visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.mc-datatable__topbar{justify-content:space-between;padding-top:1rem;padding-bottom:1rem}.mc-datatable__topbar,.mc-datatable__topbar-edition,.mc-datatable__topbar-actions{display:flex;gap:1rem}.mc-datatable__topbar-edition,.mc-datatable__topbar-actions{flex-wrap:wrap}.mc-datatable__topbar-edition{flex-shrink:0}.mc-datatable__topbar-actions{align-items:center;justify-content:flex-end;margin-left:auto}.mc-datatable__filters{align-items:center;border-top:1px solid #b3b3b3;display:flex;flex-wrap:wrap;gap:1rem;justify-content:flex-end;padding-top:1rem;padding-bottom:1rem}.mc-datatable__footer{align-items:center;background-color:#fff;display:flex;padding:.75rem 1rem;gap:1rem}@media screen and (max-width: 679px){.mc-datatable__footer{flex-direction:column}}.mc-datatable__select{display:flex;align-items:center;gap:.5rem}.mc-datatable__select-label{font-size:.875rem;line-height:1.2857142857;color:#333;flex-shrink:0}.mc-datatable__count{font-size:.75rem;line-height:1.3333333333;color:#666}.mc-datatable__pagination{margin-left:auto}.mc-datatable__subtable{border-collapse:collapse;border-spacing:0;caption-side:bottom;width:100%;background-color:#e6e6e6}.mc-datatable__subtable th,.mc-datatable__subtable td{border-bottom-color:#b3b3b3}.mc-datatable__subtable thead th,.mc-datatable__subtable thead td{font-size:.75rem;line-height:1.3333333333;color:#000}.mc-datatable__subtable tbody th,.mc-datatable__subtable tbody td{color:#000}.fix-header-row{position:sticky;top:0;box-shadow:0 1px 5px #22202033;z-index:1}.header{align-items:center;display:flex;height:100%;font-family:inherit;justify-content:space-between;width:100%}.is-sorted-asc:before{background-color:var(--color-datatable-sort-arrow-active, #333333)}.is-sorted-desc:after{background-color:var(--color-datatable-sort-arrow-active, #333333)}.mc-datatable-height{height:100%}.mc-datatable__sort-arrow{cursor:pointer}.mc-datatable__fix-first-column{position:sticky;background-color:#fff;left:0}.skeleton-box{display:inline-block;position:relative;overflow:hidden;background-color:#ccc}.skeleton-box:after{position:absolute;inset:0;transform:translate(-100%);background-image:linear-gradient(90deg,rgba(255,255,255,0) 0,rgba(255,255,255,.2) 20%,rgba(255,255,255,.5) 60%,rgba(255,255,255,0));animation:shimmer 2s infinite;content:\"\"}@keyframes shimmer{to{transform:translate(100%)}}.checkbox-loading{width:25px;height:25px}.cells-loading{width:250px;height:25px}\n"] }]
131
+ args: [{ selector: 'moz-datatable', encapsulation: ViewEncapsulation.None, template: "<div class=\"mc-datatable mc-datatable-height\">\n <div class=\"mc-datatable__header\">\n <ng-content select=\"moz-datatable-caption\"></ng-content>\n <div>\n <moz-datatable-selection\n [selectionSettings]=\"selectionSettings\"\n [paginationEnabled]=\"datatableSettings?.activatePagination\"\n [rowData]=\"datatableSettings?.rowData\"\n (updateSelectionAllEmitter)=\"selectionAllRowEvent($event)\"\n ></moz-datatable-selection>\n </div>\n </div>\n <div class=\"mc-datatable__container mc-datatable-height\">\n <div class=\"mc-datatable__main mc-datatable-height\">\n <table class=\"mc-datatable__table\">\n <thead [ngClass]=\"{ 'fix-header-row': datatableSettings?.fixHeaderRow }\">\n <tr *ngIf=\"getColumns() && getColumns().length > 0\">\n <th\n class=\"mc-datatable__cell-checkbox moz-datatable__th mc-datatable__fix-first-column\"\n *ngIf=\"\n datatableSettings?.activateSelection && selectionComponent && selectionSettings\n \"\n #thSelection\n >\n <moz-checkbox\n (change)=\"\n selectionComponent.onUdpateSelectionAllPageRows($event); selectionRowEvent($event)\n \"\n [indeterminate]=\"selectionComponent.isIndeterminate\"\n [checked]=\"selectionSettings.allSelected && !selectionComponent.isIndeterminate\"\n [disabled]=\"datatableSettings?.isLoading || false\"\n >\n </moz-checkbox>\n </th>\n <th\n *ngIf=\"hasSubRow() && !datatableSettings?.isLoading\"\n class=\"mc-datatable__fix-first-column\"\n [style.left.px]=\"getStyleLeftForColumnFixed()\"\n #thSubRow\n ></th>\n <ng-container *ngFor=\"let columnDef of getColumns()\">\n <th\n class=\"moz-datatable__th\"\n *ngIf=\"!columnDef.hide\"\n [ngClass]=\"{\n 'mc-datatable__fix-first-column':\n datatableSettings?.fixFirstColumn &&\n getUnhiddenColumns()[0].field === columnDef.field\n }\"\n [style.left.px]=\"getLeftValueFixFirstColumn()\"\n >\n <ng-container *ngIf=\"datatableSettings?.isLoading; else notLoadingHeading\">\n <div class=\"skeleton-box mu-mb-100 cells-loading\"></div>\n </ng-container>\n\n <ng-template #notLoadingHeading>\n <div\n [mozDatatableSort]=\"columnDef\"\n [ngClass]=\"{ header: columnDef.sort }\"\n (sortEmitter)=\"sortEvent($event)\"\n >\n <ng-container\n *ngIf=\"\n getCustomHeader(columnDef.field) as customHeader;\n else defaultHeaderCell\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"\n customHeader;\n context: {\n $implicit: {\n content: columnDef\n }\n }\n \"\n ></ng-container>\n </ng-container>\n <ng-template #defaultHeaderCell>\n {{ columnDef.headerName | uppercase }}\n </ng-template>\n </div>\n </ng-template>\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody>\n <ng-container\n *ngIf=\"\n (datatableSettings?.rowData?.length || 0) > 0 || datatableSettings?.isLoading;\n else emptyBody\n \"\n >\n <ng-container *ngFor=\"let row of getFields(); index as i\">\n <tr class=\"mc-datatable__row-parent\" (click)=\"rowClickEvent($event, row)\">\n <td\n class=\"mc-datatable__fix-first-column\"\n *ngIf=\"datatableSettings?.activateSelection && selectionComponent\"\n >\n <ng-container *ngIf=\"datatableSettings?.isLoading; else notLoadingCheckbox\">\n <div class=\"skeleton-box mu-mb-100 checkbox-loading\"></div>\n </ng-container>\n <ng-template #notLoadingCheckbox>\n <moz-checkbox\n (change)=\"\n selectionComponent.onUdpateSelectionRow(row); selectionRowEvent($event)\n \"\n [(ngModel)]=\"row.selected\"\n [checked]=\"row.selected || false\"\n [disabled]=\"row.disableSelection || false\"\n >\n </moz-checkbox>\n </ng-template>\n </td>\n <ng-container *ngIf=\"hasSubRow() && !datatableSettings?.isLoading\">\n <td\n *ngIf=\"row['subRow']; else noSubRow\"\n class=\"mc-datatable__cell-button mc-datatable__fix-first-column\"\n [style.left.px]=\"getStyleLeftForColumnFixed()\"\n >\n <button\n class=\"mc-datatable__expand mc-datatable__btn\"\n (click)=\"toggleRowExpansion(i); $event.stopPropagation()\"\n >\n <span class=\"mc-datatable__btn-icon\">\n <ng-container *ngIf=\"!expandedRows[i]; else subrowClosed\">\n <moz-icon [iconName]=\"'Navigation_Control_Circle--More_24px'\"></moz-icon>\n </ng-container>\n <ng-template #subrowClosed>\n <moz-icon [iconName]=\"'Navigation_Control_Circle--Less_24px'\"></moz-icon>\n </ng-template>\n </span>\n </button>\n </td>\n <ng-template #noSubRow\n ><td\n class=\"mc-datatable__cell-button mc-datatable__fix-first-column\"\n [style.left.px]=\"getStyleLeftForColumnFixed()\"\n ></td\n ></ng-template>\n </ng-container>\n <ng-container *ngFor=\"let columnDef of getColumns()\">\n <td\n *ngIf=\"!columnDef.hide\"\n [ngClass]=\"{\n 'mc-datatable__fix-first-column':\n datatableSettings?.fixFirstColumn &&\n getUnhiddenColumns()[0].field === columnDef.field\n }\"\n [style.left.px]=\"getLeftValueFixFirstColumn()\"\n >\n <ng-container *ngIf=\"datatableSettings?.isLoading; else notLoadingCells\">\n <div class=\"skeleton-box mu-mb-100 cells-loading\"></div>\n </ng-container>\n <ng-template #notLoadingCells>\n <ng-container\n *ngIf=\"\n getCustomContent(columnDef.field) as customContent;\n else defaultContentCell\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"\n customContent;\n context: {\n $implicit: {\n row: row,\n index: i,\n columnDefs: datatableSettings?.columnDefs,\n content: row[columnDef.field]\n }\n }\n \"\n ></ng-container>\n </ng-container>\n <ng-template #defaultContentCell>\n {{ row[columnDef.field] }}\n </ng-template>\n </ng-template>\n </td>\n </ng-container>\n </tr>\n <ng-container>\n <tr *ngIf=\"expandedRows[i]\">\n <td [attr.colspan]=\"getColspanForExpansionRow()\">\n <ng-container\n *ngIf=\"getCustomExpansionRowContent() as expansionRowContentComponent\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n expansionRowContentComponent;\n context: {\n $implicit: {\n subRowContent: row['subRow'],\n index: i,\n }\n }\n \"\n ></ng-container>\n </ng-container>\n </td>\n </tr>\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-template #emptyBody>\n <tr class=\"mc-datatable__empty\">\n <td colspan=\"5\" class=\"mc-datatable__empty-cell\">\n <div class=\"mc-datatable__empty-content\">\n <div>\n <div>\n <p>\n <strong>\n {{\n datatableSettings?.labels?.emptyBodyTitle || 'There is no result.'\n }}</strong\n ><br />\n {{\n datatableSettings?.labels?.emptyBodyDescription ||\n 'Please try changing your filters.'\n }}\n </p>\n </div>\n <div *ngIf=\"datatableSettings?.activateEmptyBodyButton\">\n <button\n moz-button\n [theme]=\"'neutral'\"\n [size]=\"'s'\"\n [variation]=\"'bordered'\"\n (click)=\"emptyButtonClickEvent()\"\n >\n <moz-icon\n iconName=\"{{\n datatableSettings?.icons?.emptyBodyButtonIcon ||\n 'Navigation_Display_Filter_24px'\n }}\"\n ></moz-icon>\n {{ datatableSettings?.labels?.emptyBodyButtonTitle || 'Change filters' }}\n </button>\n </div>\n </div>\n </div>\n </td>\n </tr></ng-template\n >\n </tbody>\n </table>\n </div>\n <moz-datatable-footer\n *ngIf=\"datatableSettings?.activatePagination\"\n [footerSettings]=\"footerSettings\"\n [isLoading]=\"datatableSettings?.isLoading\"\n (rowPerPageChangeEmitter)=\"rowPerPageChangeEvent($event)\"\n (pageChangeEmitter)=\"pageChangeEvent($event)\"\n ></moz-datatable-footer>\n </div>\n</div>\n", styles: [".mc-datatable{font-family:LeroyMerlin,sans-serif;box-sizing:border-box}.mc-datatable *,.mc-datatable :after,.mc-datatable :before{box-sizing:inherit}.mc-datatable__container{border-radius:4px;box-shadow:0 1px 5px #19191933;background-color:#e6e6e6;overflow:hidden}.mc-datatable__main{scrollbar-color:#666666 #e6e6e6;scrollbar-width:thin;overflow:auto}.mc-datatable__main::-webkit-scrollbar{background-color:#e6e6e6;height:.5rem;width:.5rem}.mc-datatable__main::-webkit-scrollbar-track{background:#e6e6e6}.mc-datatable__main::-webkit-scrollbar-thumb{background:#666666}.mc-datatable__table tr,.mc-datatable thead th,.mc-datatable thead td{height:2.9375rem}.mc-datatable__table{border-collapse:collapse;border-spacing:0;caption-side:bottom;width:100%}.mc-datatable__table>thead,.mc-datatable__table>tbody{background-color:#fff}.mc-datatable__table th,.mc-datatable__table td{border-bottom:1px solid #b3b3b3;text-align:left;vertical-align:middle;padding-right:1rem;padding-left:1rem}.mc-datatable thead th,.mc-datatable thead td{font-weight:600;font-size:.75rem;line-height:1.3333333333;color:#191919;text-transform:uppercase}.mc-datatable__head{align-items:center;display:flex;justify-content:space-between}.mc-datatable tbody tr:hover:not(.mc-datatable__empty){background-color:#e6e6e6}.mc-datatable tbody tr.selected{background-color:#ebf5de}.mc-datatable tbody th,.mc-datatable tbody td{font-size:.875rem;line-height:1.2857142857;color:#191919}.mc-datatable__row-parent:not(.mc-datatable__row-parent--expanded)+.mc-datatable__row-expandable{height:0}.mc-datatable__row-parent:not(.mc-datatable__row-parent--expanded)+.mc-datatable__row-expandable .mc-datatable__row-inner{overflow:hidden;max-height:0}.mc-datatable__row-parent.mc-datatable__row-parent--expanded+.mc-datatable__row-expandable .mc-datatable__row-inner{max-height:100%}.mc-datatable__row-expandable>td{padding:0;border-bottom:0}.mc-datatable__row-expandable--offset-1 table th:first-child,.mc-datatable__row-expandable--offset-1 table td:first-child{padding-left:4.25rem}.mc-datatable__row-expandable--offset-2 table th:first-child,.mc-datatable__row-expandable--offset-2 table td:first-child{padding-left:7.75rem}.mc-datatable__cell-checkbox{width:3.25rem}.mc-datatable__cell-button{width:3.5rem}.mc-datatable__cell-field{min-width:9.375rem}td.mc-datatable__cell-number{text-align:right}.mc-datatable__empty,.mc-datatable__empty:hover{background-color:#e6e6e6}.mc-datatable__empty-cell{color:#666}.mc-datatable__empty-content{font-size:1rem;line-height:1.375;align-items:center;color:#666;display:flex;gap:1.5rem;min-height:19.375rem;justify-content:center;text-align:center}.mc-datatable__empty-content strong{font-size:1.125rem;line-height:1.3333333333}.mc-datatable--s .mc-datatable__table tr,.mc-datatable--s .mc-datatable thead th,.mc-datatable--s .mc-datatable thead td{height:2.4375rem}.mc-datatable--l .mc-datatable__table tr,.mc-datatable--l .mc-datatable thead th,.mc-datatable--l .mc-datatable thead td{height:3.4375rem}.mc-datatable--sticky .mc-datatable__table>thead,.mc-datatable--sticky-header .mc-datatable__table>thead{box-shadow:0 4px 20px #19191933;top:0;z-index:2}.mc-datatable--sticky .mc-datatable__table>tbody tr:last-child th,.mc-datatable--sticky .mc-datatable__table>tbody tr:last-child td,.mc-datatable--sticky-header .mc-datatable__table>tbody tr:last-child th,.mc-datatable--sticky-header .mc-datatable__table>tbody tr:last-child td{border-bottom:transparent}.mc-datatable--sticky .mc-datatable__footer,.mc-datatable--sticky-header .mc-datatable__footer{border-top:1px solid #b3b3b3;position:relative;z-index:2}.mc-datatable--sticky .mc-datatable__main{padding-top:2.9375rem;transform:translateZ(0)}.mc-datatable--sticky .mc-datatable__table{scrollbar-color:#666666 #e6e6e6;scrollbar-width:thin;display:block;overflow-y:auto}.mc-datatable--sticky .mc-datatable__table::-webkit-scrollbar{background-color:#e6e6e6;height:.5rem;width:.5rem}.mc-datatable--sticky .mc-datatable__table::-webkit-scrollbar-track{background:#e6e6e6}.mc-datatable--sticky .mc-datatable__table::-webkit-scrollbar-thumb{background:#666666}.mc-datatable--sticky .mc-datatable__table>thead{position:fixed;width:100%}.mc-datatable--sticky .mc-datatable__table>thead,.mc-datatable--sticky .mc-datatable__table>tbody,.mc-datatable--sticky .mc-datatable__table>thead tr,.mc-datatable--sticky .mc-datatable__table>tbody tr,.mc-datatable--sticky .mc-datatable__table>thead th,.mc-datatable--sticky .mc-datatable__table>thead td,.mc-datatable--sticky .mc-datatable__table>tbody th,.mc-datatable--sticky .mc-datatable__table>tbody td{display:flex}.mc-datatable--sticky .mc-datatable__table>thead,.mc-datatable--sticky .mc-datatable__table>tbody,.mc-datatable--sticky .mc-datatable__table>thead tr,.mc-datatable--sticky .mc-datatable__table>tbody tr{width:100%}.mc-datatable--sticky .mc-datatable__table>tbody{flex-direction:column}.mc-datatable--sticky .mc-datatable__table>thead th,.mc-datatable--sticky .mc-datatable__table>thead td,.mc-datatable--sticky .mc-datatable__table>tbody th,.mc-datatable--sticky .mc-datatable__table>tbody td{align-items:center}.mc-datatable--sticky .mc-datatable__table>thead th:not(.mc-datatable__cell-checkbox):not(.mc-datatable__cell-button),.mc-datatable--sticky .mc-datatable__table>thead td:not(.mc-datatable__cell-checkbox):not(.mc-datatable__cell-button),.mc-datatable--sticky .mc-datatable__table>tbody th:not(.mc-datatable__cell-checkbox):not(.mc-datatable__cell-button),.mc-datatable--sticky .mc-datatable__table>tbody td:not(.mc-datatable__cell-checkbox):not(.mc-datatable__cell-button){flex:1}.mc-datatable--sticky .mc-datatable__cell-checkbox,.mc-datatable--sticky .mc-datatable__cell-button,.mc-datatable--sticky .mc-datatable__cell-field,.mc-datatable--sticky .mc-datatable__cell-number{flex-shrink:0}.mc-datatable--sticky .mc-datatable__cell-number{justify-content:flex-end}.mc-datatable--sticky-header .mc-datatable__main{overflow-y:auto}.mc-datatable--sticky-header .mc-datatable__table>thead{position:sticky}.mc-datatable--overflow-visible .mc-datatable__container,.mc-datatable--overflow-visible .mc-datatable__main{overflow:visible}.mc-datatable__btn{margin:0;box-shadow:none;text-decoration:none;outline:none;border:none;cursor:pointer;padding:0;align-items:center;background-color:transparent;display:flex}.mc-datatable__btn-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.mc-datatable__btn-icon,.mc-datatable__btn svg{width:1.5rem;height:1.5rem}.mc-datatable__sort{font-weight:600;font-size:.75rem;line-height:1.3333333333;color:#191919;text-transform:uppercase;align-items:center;display:flex;height:100%;font-family:inherit;justify-content:space-between;width:100%}.mc-datatable__sort-arrow{align-items:center;display:flex;flex-direction:column;height:1.5rem;justify-content:space-around;margin-left:.5rem;width:1.5rem}.mc-datatable__sort-arrow:after,.mc-datatable__sort-arrow:before{background-color:#ccc;content:\"\";flex-shrink:0;height:.5rem;width:.75rem}.mc-datatable__sort-arrow:before{clip-path:polygon(50% 0%,0% 100%,100% 100%)}.asc .mc-datatable__sort-arrow:before{background-color:#333}.desc .mc-datatable__sort-arrow:before{display:none}.mc-datatable__sort-arrow:after{clip-path:polygon(0 0,100% 0,50% 100%)}.asc .mc-datatable__sort-arrow:after{display:none}.desc .mc-datatable__sort-arrow:after{background-color:#333}.mc-datatable__options{width:1.5rem;height:1.5rem}.mc-datatable__expand .mc-datatable__btn-icon{fill:#46a610}.mc-datatable .visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.mc-datatable__topbar{justify-content:space-between;padding-top:1rem;padding-bottom:1rem}.mc-datatable__topbar,.mc-datatable__topbar-edition,.mc-datatable__topbar-actions{display:flex;gap:1rem}.mc-datatable__topbar-edition,.mc-datatable__topbar-actions{flex-wrap:wrap}.mc-datatable__topbar-edition{flex-shrink:0}.mc-datatable__topbar-actions{align-items:center;justify-content:flex-end;margin-left:auto}.mc-datatable__filters{align-items:center;border-top:1px solid #b3b3b3;display:flex;flex-wrap:wrap;gap:1rem;justify-content:flex-end;padding-top:1rem;padding-bottom:1rem}.mc-datatable__footer{align-items:center;background-color:#fff;display:flex;padding:.75rem 1rem;gap:1rem}@media screen and (max-width: 679px){.mc-datatable__footer{flex-direction:column}}.mc-datatable__select{display:flex;align-items:center;gap:.5rem}.mc-datatable__select-label{font-size:.875rem;line-height:1.2857142857;color:#333;flex-shrink:0}.mc-datatable__count{font-size:.75rem;line-height:1.3333333333;color:#666}.mc-datatable__pagination{margin-left:auto}.mc-datatable__subtable{border-collapse:collapse;border-spacing:0;caption-side:bottom;width:100%;background-color:#e6e6e6}.mc-datatable__subtable th,.mc-datatable__subtable td{border-bottom-color:#b3b3b3}.mc-datatable__subtable thead th,.mc-datatable__subtable thead td{font-size:.75rem;line-height:1.3333333333;color:#000}.mc-datatable__subtable tbody th,.mc-datatable__subtable tbody td{color:#000}.fix-header-row{position:sticky;top:0;box-shadow:0 1px 5px #22202033;z-index:1}.header{align-items:center;display:flex;height:100%;font-family:inherit;justify-content:space-between;width:100%}.is-sorted-asc:before{background-color:var(--color-datatable-sort-arrow-active, #333333)}.is-sorted-desc:after{background-color:var(--color-datatable-sort-arrow-active, #333333)}.mc-datatable-height{height:100%}.mc-datatable__sort-arrow{cursor:pointer}.mc-datatable__fix-first-column{position:sticky;background-color:#fff;left:0}.skeleton-box{display:inline-block;position:relative;overflow:hidden;background-color:#ccc}.skeleton-box:after{position:absolute;inset:0;transform:translate(-100%);background-image:linear-gradient(90deg,rgba(255,255,255,0) 0,rgba(255,255,255,.2) 20%,rgba(255,255,255,.5) 60%,rgba(255,255,255,0));animation:shimmer 2s infinite;content:\"\"}@keyframes shimmer{to{transform:translate(100%)}}.checkbox-loading{width:25px;height:25px}.cells-loading{width:250px;height:25px}\n"] }]
122
132
  }], propDecorators: { footerSettings: [{
123
133
  type: Input
124
134
  }], selectionSettings: [{
@@ -158,4 +168,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
158
168
  type: ContentChild,
159
169
  args: [MozDatatableRowExpansionContentComponent]
160
170
  }] } });
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW96LWRhdGF0YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvY29tcG9uZW50cy9kYXRhdGFibGUvbW96LWRhdGF0YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvY29tcG9uZW50cy9kYXRhdGFibGUvbW96LWRhdGF0YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxlQUFlLEVBSWYsWUFBWSxFQUNaLE1BQU0sRUFDTixZQUFZLEVBQ1osU0FBUyxFQUNULGlCQUFpQixHQUVsQixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUc3RyxPQUFPLEVBQUUsd0NBQXdDLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQzs7Ozs7Ozs7OztBQVMxSCxNQUFNLE9BQU8scUJBQXFCO0lBTmxDO1FBV0Usc0JBQXNCO1FBQ1osYUFBUSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDdkMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDekMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBcUIsQ0FBQztRQUNwRCxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO1FBQ3ZELDJCQUFzQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFLL0QseUJBQXlCO1FBQ2YsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDeEMscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQWNqRCx5QkFBb0IsR0FBa0MsSUFBSSxHQUFH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RU0sa0JBQWtCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6RixDQUFDOztrSEExSVUscUJBQXFCO3NHQUFyQixxQkFBcUIsdWRBNEJsQix3Q0FBd0MsMEVBTnJDLCtCQUErQix3REFHL0IsZ0NBQWdDLGlGQWJ0Qyw4QkFBOEIsME9DMUMzQyxpc1ZBb1BBOzJGRHROYSxxQkFBcUI7a0JBTmpDLFNBQVM7K0JBQ0UsZUFBZSxpQkFHVixpQkFBaUIsQ0FBQyxJQUFJOzhCQUdyQixjQUFjO3NCQUE3QixLQUFLO2dCQUNVLGlCQUFpQjtzQkFBaEMsS0FBSztnQkFDVSxpQkFBaUI7c0JBQWhDLEtBQUs7Z0JBR0ksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBR0Esa0JBQWtCO3NCQUR4QixTQUFTO3VCQUFDLDhCQUE4QjtnQkFJL0IsVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBRXNDLGNBQWM7c0JBQTFELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDRCxXQUFXO3NCQUFwRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBR2pDLG9CQUFvQjtzQkFEMUIsZUFBZTt1QkFBQywrQkFBK0I7Z0JBSXpDLHFCQUFxQjtzQkFEM0IsZUFBZTt1QkFBQyxnQ0FBZ0M7Z0JBSTFDLHlCQUF5QjtzQkFEL0IsWUFBWTt1QkFBQyx3Q0FBd0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIFF1ZXJ5TGlzdCxcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgVGVtcGxhdGVSZWYsXG4gIENvbnRlbnRDaGlsZCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIEVsZW1lbnRSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm93RGF0YSB9IGZyb20gJy4vbW9kZWwvcm93LWRhdGEnO1xuaW1wb3J0IHsgU2VsZWN0aW9uU2V0dGluZ3MgfSBmcm9tICcuL21vZGVsL3NlbGVjdGlvbi1zZXR0aW5ncyc7XG5pbXBvcnQgeyBNb3pEYXRhdGFibGVTZWxlY3Rpb25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc2VsZWN0aW9uL21vei1kYXRhdGFibGUtc2VsZWN0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNb3pEYXRhdGFibGVIZWFkZXJDZWxsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2hlYWRlci9tb3otZGF0YXRhYmxlLWhlYWRlci1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNb3pEYXRhdGFibGVDb250ZW50Q2VsbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jb250ZW50L21vei1kYXRhdGFibGUtY29udGVudC1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRhdGFibGVTZXR0aW5ncyB9IGZyb20gJy4vbW9kZWwvZGF0YXRhYmxlLXNldHRpbmdzJztcbmltcG9ydCB7IEZvb3RlclNldHRpbmdzIH0gZnJvbSAnLi9tb2RlbC9mb290ZXItc2V0dGluZ3MnO1xuaW1wb3J0IHsgTW96RGF0YXRhYmxlUm93RXhwYW5zaW9uQ29udGVudENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yb3cvbW96LWRhdGF0YWJsZS1yb3ctZXhwYW5zaW9uLWNvbnRlbnQuY29tcG9uZW50JztcbmltcG9ydCB7IENvbHVtbkRlZiB9IGZyb20gJy4vbW9kZWwvY29sdW1uLWRlZic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vei1kYXRhdGFibGUnLFxuICBzdHlsZVVybHM6IFsnLi9tb3otZGF0YXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi9tb3otZGF0YXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgTW96RGF0YXRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gIEBJbnB1dCgpIHB1YmxpYyBmb290ZXJTZXR0aW5ncz86IEZvb3RlclNldHRpbmdzO1xuICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0aW9uU2V0dGluZ3M/OiBTZWxlY3Rpb25TZXR0aW5ncztcbiAgQElucHV0KCkgcHVibGljIGRhdGF0YWJsZVNldHRpbmdzPzogRGF0YXRhYmxlU2V0dGluZ3M7XG5cbiAgLy8gRlJPTSBCT0RZIERBVEFUQUJMRVxuICBAT3V0cHV0KCkgcm93Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPFJvd0RhdGE+KCk7XG4gIEBPdXRwdXQoKSBzb3J0Q29sdW1uID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xuICBAT3V0cHV0KCkgcm93U2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdGlvblNldHRpbmdzPigpO1xuICBAT3V0cHV0KCkgcm93QWxsU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdGlvblNldHRpbmdzPigpO1xuICBAT3V0cHV0KCkgZW1wdHlCb2R5QnV0dG9uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBAVmlld0NoaWxkKE1vekRhdGF0YWJsZVNlbGVjdGlvbkNvbXBvbmVudClcbiAgcHVibGljIHNlbGVjdGlvbkNvbXBvbmVudD86IE1vekRhdGF0YWJsZVNlbGVjdGlvbkNvbXBvbmVudDtcblxuICAvLyBGUk9NIFBBR0lOQVRJT04gRk9PVEVSXG4gIEBPdXRwdXQoKSBwYWdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSByb3dQZXJQYWdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgQFZpZXdDaGlsZCgndGhTZWxlY3Rpb24nLCB7IHN0YXRpYzogZmFsc2UgfSkgdGhTZWxlY3Rpb25SZWY/OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCd0aFN1YlJvdycsIHsgc3RhdGljOiBmYWxzZSB9KSB0aFN1YlJvd1JlZj86IEVsZW1lbnRSZWY7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihNb3pEYXRhdGFibGVIZWFkZXJDZWxsQ29tcG9uZW50KVxuICBwdWJsaWMgaGVhZGVyQ2VsbENvbXBvbmVudHM/OiBRdWVyeUxpc3Q8TW96RGF0YXRhYmxlSGVhZGVyQ2VsbENvbXBvbmVudD47XG5cbiAgQENvbnRlbnRDaGlsZHJlbihNb3pEYXRhdGFibGVDb250ZW50Q2VsbENvbXBvbmVudClcbiAgcHVibGljIGNvbnRlbnRDZWxsQ29tcG9uZW50cz86IFF1ZXJ5TGlzdDxNb3pEYXRhdGFibGVDb250ZW50Q2VsbENvbXBvbmVudD47XG5cbiAgQENvbnRlbnRDaGlsZChNb3pEYXRhdGFibGVSb3dFeHBhbnNpb25Db250ZW50Q29tcG9uZW50KVxuICBwdWJsaWMgZXhwYW5zaW9uQ29udGVudENvbXBvbmVudD86IE1vekRhdGF0YWJsZVJvd0V4cGFuc2lvbkNvbnRlbnRDb21wb25lbnQ7XG5cbiAgcHVibGljIGN1c3RvbUhlYWRlckNlbGxzTWFwOiBNYXA8c3RyaW5nLCBUZW1wbGF0ZVJlZjxhbnk+PiA9IG5ldyBNYXA8c3RyaW5nLCBUZW1wbGF0ZVJlZjxhbnk+PigpO1xuICBwdWJsaWMgY3VzdG9tQ29udGVudENlbGxzTWFwOiBNYXA8c3RyaW5nLCBUZW1wbGF0ZVJlZjxhbnk+PiA9IG5ldyBNYXA8c3RyaW5nLCBUZW1wbGF0ZVJlZjxhbnk+PigpO1xuICBwdWJsaWMgZXhwYW5kZWRSb3dzOiBib29sZWFuW10gPSBbXTtcblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5idWlsZEN1c3RvbUhlYWRlck1hcCgpO1xuICAgIHRoaXMuYnVpbGRDdXN0b21Db250ZW50TWFwKCk7XG4gIH1cblxuICBwdWJsaWMgYnVpbGRDdXN0b21IZWFkZXJNYXAoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGVhZGVyQ2VsbENvbXBvbmVudHMpIHtcbiAgICAgIHRoaXMuaGVhZGVyQ2VsbENvbXBvbmVudHMuZm9yRWFjaCgoaGVhZGVyKSA9PiB7XG4gICAgICAgIGlmIChoZWFkZXIuZmllbGQgJiYgaGVhZGVyLnRlbXBsYXRlUmVmKSB7XG4gICAgICAgICAgdGhpcy5jdXN0b21IZWFkZXJDZWxsc01hcC5zZXQoaGVhZGVyLmZpZWxkLCBoZWFkZXIudGVtcGxhdGVSZWYpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYnVpbGRDdXN0b21Db250ZW50TWFwKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbnRlbnRDZWxsQ29tcG9uZW50cykge1xuICAgICAgdGhpcy5jb250ZW50Q2VsbENvbXBvbmVudHMuZm9yRWFjaCgoY2VsbCkgPT4ge1xuICAgICAgICBpZiAoY2VsbC5maWVsZCAmJiBjZWxsLnRlbXBsYXRlUmVmKSB7XG4gICAgICAgICAgdGhpcy5jdXN0b21Db250ZW50Q2VsbHNNYXAuc2V0KGNlbGwuZmllbGQsIGNlbGwudGVtcGxhdGVSZWYpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0Q3VzdG9tRXhwYW5zaW9uUm93Q29udGVudCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5leHBhbnNpb25Db250ZW50Q29tcG9uZW50Py50ZW1wbGF0ZVJlZjtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVSb3dFeHBhbnNpb24oaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuZXhwYW5kZWRSb3dzW2luZGV4XSA9ICF0aGlzLmV4cGFuZGVkUm93c1tpbmRleF07XG4gIH1cblxuICBwdWJsaWMgaGFzU3ViUm93KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5kYXRhdGFibGVTZXR0aW5ncz8ucm93RGF0YS5maWx0ZXIoKHJvdykgPT4gcm93WydzdWJSb3cnXSkubGVuZ3RoIHx8IDApID4gMDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDdXN0b21IZWFkZXIoY29sdW1uSWQ6IHN0cmluZyk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmN1c3RvbUhlYWRlckNlbGxzTWFwLmdldChjb2x1bW5JZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q3VzdG9tQ29udGVudChjb2x1bW5JZDogc3RyaW5nKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY3VzdG9tQ29udGVudENlbGxzTWFwLmdldChjb2x1bW5JZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29sc3BhbkZvckV4cGFuc2lvblJvdygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmRhdGF0YWJsZVNldHRpbmdzPy5hY3RpdmF0ZVNlbGVjdGlvblxuICAgICAgPyAodGhpcy5kYXRhdGFibGVTZXR0aW5ncz8uY29sdW1uRGVmcz8ubGVuZ3RoIHx8IDApICsgMlxuICAgICAgOiAodGhpcy5kYXRhdGFibGVTZXR0aW5ncz8uY29sdW1uRGVmcz8ubGVuZ3RoIHx8IDApICsgMTtcbiAgfVxuXG4gIHB1YmxpYyBlbXB0eUJ1dHRvbkNsaWNrRXZlbnQoKTogdm9pZCB7XG4gICAgdGhpcy5lbXB0eUJvZHlCdXR0b25DbGlja2VkLmVtaXQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgcm93Q2xpY2tFdmVudChldmVudDogTW91c2VFdmVudCwgcm93Q2xpY2s6IFJvd0RhdGEpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucm93Q2xpY2suZW1pdChyb3dDbGljayk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0aW9uQWxsUm93RXZlbnQoJGV2ZW50OiBTZWxlY3Rpb25TZXR0aW5ncykge1xuICAgIHRoaXMucm93QWxsU2VsZWN0ZWQuZW1pdCgkZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdGlvblJvd0V2ZW50KCRldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLnJvd1NlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3Rpb25TZXR0aW5ncyk7XG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgcHVibGljIHJvd1BlclBhZ2VDaGFuZ2VFdmVudCgkZXZlbnQ6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucm93UGVyUGFnZUNoYW5nZS5lbWl0KCRldmVudCk7XG4gIH1cblxuICBwdWJsaWMgcGFnZUNoYW5nZUV2ZW50KCRldmVudDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5wYWdlQ2hhbmdlLmVtaXQoJGV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBzb3J0RXZlbnQoJGV2ZW50OiB1bmtub3duKSB7XG4gICAgdGhpcy5zb3J0Q29sdW1uLmVtaXQoJGV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTdHlsZUxlZnRGb3JDb2x1bW5GaXhlZCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmRhdGF0YWJsZVNldHRpbmdzPy5hY3RpdmF0ZVNlbGVjdGlvbiAmJiB0aGlzLnRoU2VsZWN0aW9uUmVmXG4gICAgICA/IHRoaXMudGhTZWxlY3Rpb25SZWYubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aFxuICAgICAgOiAwO1xuICB9XG5cbiAgcHVibGljIGdldExlZnRWYWx1ZUZpeEZpcnN0Q29sdW1uKCk6IG51bWJlciB7XG4gICAgbGV0IHZhbHVlID0gMDtcbiAgICBpZiAodGhpcy5kYXRhdGFibGVTZXR0aW5ncz8uYWN0aXZhdGVTZWxlY3Rpb24gJiYgdGhpcy50aFNlbGVjdGlvblJlZikge1xuICAgICAgdmFsdWUgKz0gdGhpcy50aFNlbGVjdGlvblJlZi5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgIH1cbiAgICBpZiAodGhpcy5oYXNTdWJSb3coKSAmJiB0aGlzLnRoU3ViUm93UmVmKSB7XG4gICAgICB2YWx1ZSArPSB0aGlzLnRoU3ViUm93UmVmLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGg7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRVbmhpZGRlbkNvbHVtbnMoKTogQ29sdW1uRGVmW10ge1xuICAgIHJldHVybiB0aGlzLmRhdGF0YWJsZVNldHRpbmdzPy5jb2x1bW5EZWZzLmZpbHRlcigoaGVhZFRpdGxlKSA9PiAhaGVhZFRpdGxlLmhpZGUpIHx8IFtdO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibWMtZGF0YXRhYmxlIG1jLWRhdGF0YWJsZS1oZWlnaHRcIj5cbiAgPGRpdiBjbGFzcz1cIm1jLWRhdGF0YWJsZV9faGVhZGVyXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwibW96LWRhdGF0YWJsZS1jYXB0aW9uXCI+PC9uZy1jb250ZW50PlxuICAgIDxkaXY+XG4gICAgICA8bW96LWRhdGF0YWJsZS1zZWxlY3Rpb25cbiAgICAgICAgW3NlbGVjdGlvblNldHRpbmdzXT1cInNlbGVjdGlvblNldHRpbmdzXCJcbiAgICAgICAgW3BhZ2luYXRpb25FbmFibGVkXT1cImRhdGF0YWJsZVNldHRpbmdzPy5hY3RpdmF0ZVBhZ2luYXRpb25cIlxuICAgICAgICBbcm93RGF0YV09XCJkYXRhdGFibGVTZXR0aW5ncz8ucm93RGF0YVwiXG4gICAgICAgICh1cGRhdGVTZWxlY3Rpb25BbGxFbWl0dGVyKT1cInNlbGVjdGlvbkFsbFJvd0V2ZW50KCRldmVudClcIlxuICAgICAgPjwvbW96LWRhdGF0YWJsZS1zZWxlY3Rpb24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibWMtZGF0YXRhYmxlX19jb250YWluZXIgbWMtZGF0YXRhYmxlLWhlaWdodFwiPlxuICAgIDxkaXYgY2xhc3M9XCJtYy1kYXRhdGFibGVfX21haW4gbWMtZGF0YXRhYmxlLWhlaWdodFwiPlxuICAgICAgPHRhYmxlIGNsYXNzPVwibWMtZGF0YXRhYmxlX190YWJsZVwiPlxuICAgICAgICA8dGhlYWQgW25nQ2xhc3NdPVwieyAnZml4LWhlYWRlci1yb3cnOiBkYXRhdGFibGVTZXR0aW5ncz8uZml4SGVhZGVyUm93IH1cIj5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgY2xhc3M9XCJtYy1kYXRhdGFibGVfX2NlbGwtY2hlY2tib3ggbW96LWRhdGF0YWJsZV9fdGggbWMtZGF0YXRhYmxlX19maXgtZmlyc3QtY29sdW1uXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICBkYXRhdGFibGVTZXR0aW5ncz8uYWN0aXZhdGVTZWxlY3Rpb24gJiYgc2VsZWN0aW9uQ29tcG9uZW50ICYmIHNlbGVjdGlvblNldHRpbmdzXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICN0aFNlbGVjdGlvblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bW96LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbkNvbXBvbmVudC5vblVkcGF0ZVNlbGVjdGlvbkFsbFBhZ2VSb3dzKCRldmVudCk7IHNlbGVjdGlvblJvd0V2ZW50KCRldmVudClcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInNlbGVjdGlvbkNvbXBvbmVudC5pc0luZGV0ZXJtaW5hdGVcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvblNldHRpbmdzLmFsbFNlbGVjdGVkICYmICFzZWxlY3Rpb25Db21wb25lbnQuaXNJbmRldGVybWluYXRlXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGF0YXRhYmxlU2V0dGluZ3M/LmlzTG9hZGluZyB8fCBmYWxzZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9tb3otY2hlY2tib3g+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgICpuZ0lmPVwiaGFzU3ViUm93KCkgJiYgIWRhdGF0YWJsZVNldHRpbmdzPy5pc0xvYWRpbmdcIlxuICAgICAgICAgICAgICBjbGFzcz1cIm1jLWRhdGF0YWJsZV9fZml4LWZpcnN0LWNvbHVtblwiXG4gICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cImdldFN0eWxlTGVmdEZvckNvbHVtbkZpeGVkKClcIlxuICAgICAgICAgICAgICAjdGhTdWJSb3dcbiAgICAgICAgICAgID48L3RoPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uRGVmIG9mIGRhdGF0YWJsZVNldHRpbmdzPy5jb2x1bW5EZWZzXCI+XG4gICAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICAgIGNsYXNzPVwibW96LWRhdGF0YWJsZV9fdGhcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbHVtbkRlZi5oaWRlXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAnbWMtZGF0YXRhYmxlX19maXgtZmlyc3QtY29sdW1uJzpcbiAgICAgICAgICAgICAgICAgICAgZGF0YXRhYmxlU2V0dGluZ3M/LmZpeEZpcnN0Q29sdW1uICYmXG4gICAgICAgICAgICAgICAgICAgIGdldFVuaGlkZGVuQ29sdW1ucygpWzBdLmZpZWxkID09PSBjb2x1bW5EZWYuZmllbGRcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUubGVmdC5weF09XCJnZXRMZWZ0VmFsdWVGaXhGaXJzdENvbHVtbigpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIFttb3pEYXRhdGFibGVTb3J0XT1cImNvbHVtbkRlZlwiXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7IGhlYWRlcjogY29sdW1uRGVmLnNvcnQgfVwiXG4gICAgICAgICAgICAgICAgICAoc29ydEVtaXR0ZXIpPVwic29ydEV2ZW50KCRldmVudClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRDdXN0b21IZWFkZXIoY29sdW1uRGVmLmZpZWxkKSBhcyBjdXN0b21IZWFkZXI7IGVsc2UgZGVmYXVsdEhlYWRlckNlbGxcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbUhlYWRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogY29sdW1uRGVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEhlYWRlckNlbGw+XG4gICAgICAgICAgICAgICAgICAgIHt7IGNvbHVtbkRlZi5oZWFkZXJOYW1lIHwgdXBwZXJjYXNlIH19XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZGF0YXRhYmxlU2V0dGluZ3M/LnJvd0RhdGE/Lmxlbmd0aCB8fCAwKSA+IDA7IGVsc2UgZW1wdHlCb2R5XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByb3cgb2YgZGF0YXRhYmxlU2V0dGluZ3M/LnJvd0RhdGE7IGluZGV4IGFzIGlcIj5cbiAgICAgICAgICAgICAgPHRyIGNsYXNzPVwibWMtZGF0YXRhYmxlX19yb3ctcGFyZW50XCIgKGNsaWNrKT1cInJvd0NsaWNrRXZlbnQoJGV2ZW50LCByb3cpXCI+XG4gICAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1jLWRhdGF0YWJsZV9fZml4LWZpcnN0LWNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImRhdGF0YWJsZVNldHRpbmdzPy5hY3RpdmF0ZVNlbGVjdGlvbiAmJiBzZWxlY3Rpb25Db21wb25lbnRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhdGFibGVTZXR0aW5ncz8uaXNMb2FkaW5nOyBlbHNlIG5vdExvYWRpbmdDaGVja2JveFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2tlbGV0b24tYm94IG11LW1iLTEwMCBjaGVja2JveC1sb2FkaW5nXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm90TG9hZGluZ0NoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICA8bW96LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbkNvbXBvbmVudC5vblVkcGF0ZVNlbGVjdGlvblJvdyhyb3cpOyBzZWxlY3Rpb25Sb3dFdmVudCgkZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvdy5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwicm93LnNlbGVjdGVkIHx8IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicm93LmRpc2FibGVTZWxlY3Rpb24gfHwgZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvbW96LWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNTdWJSb3coKSAmJiAhZGF0YXRhYmxlU2V0dGluZ3M/LmlzTG9hZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicm93WydzdWJSb3cnXTsgZWxzZSBub1N1YlJvd1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWMtZGF0YXRhYmxlX19jZWxsLWJ1dHRvbiBtYy1kYXRhdGFibGVfX2ZpeC1maXJzdC1jb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUubGVmdC5weF09XCJnZXRTdHlsZUxlZnRGb3JDb2x1bW5GaXhlZCgpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWMtZGF0YXRhYmxlX19leHBhbmQgbWMtZGF0YXRhYmxlX19idG5cIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVSb3dFeHBhbnNpb24oaSk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1jLWRhdGF0YWJsZV9fYnRuLWljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZXhwYW5kZWRSb3dzW2ldOyBlbHNlIHN1YnJvd0Nsb3NlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bW96LWljb24gW2ljb25OYW1lXT1cIidOYXZpZ2F0aW9uX0NvbnRyb2xfQ2lyY2xlLS1Nb3JlXzI0cHgnXCI+PC9tb3otaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzdWJyb3dDbG9zZWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxtb3otaWNvbiBbaWNvbk5hbWVdPVwiJ05hdmlnYXRpb25fQ29udHJvbF9DaXJjbGUtLUxlc3NfMjRweCdcIj48L21vei1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9TdWJSb3dcbiAgICAgICAgICAgICAgICAgICAgPjx0ZFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWMtZGF0YXRhYmxlX19jZWxsLWJ1dHRvbiBtYy1kYXRhdGFibGVfX2ZpeC1maXJzdC1jb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cImdldFN0eWxlTGVmdEZvckNvbHVtbkZpeGVkKClcIlxuICAgICAgICAgICAgICAgICAgICA+PC90ZFxuICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uRGVmIG9mIGRhdGF0YWJsZVNldHRpbmdzPy5jb2x1bW5EZWZzXCI+XG4gICAgICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhY29sdW1uRGVmLmhpZGVcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgJ21jLWRhdGF0YWJsZV9fZml4LWZpcnN0LWNvbHVtbic6XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhdGFibGVTZXR0aW5ncz8uZml4Rmlyc3RDb2x1bW4gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldFVuaGlkZGVuQ29sdW1ucygpWzBdLmZpZWxkID09PSBjb2x1bW5EZWYuZmllbGRcbiAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cImdldExlZnRWYWx1ZUZpeEZpcnN0Q29sdW1uKClcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YXRhYmxlU2V0dGluZ3M/LmlzTG9hZGluZzsgZWxzZSBub3RMb2FkaW5nQ2VsbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2tlbGV0b24tYm94IG11LW1iLTEwMCBjZWxscy1sb2FkaW5nXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vdExvYWRpbmdDZWxscz5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRDdXN0b21Db250ZW50KGNvbHVtbkRlZi5maWVsZCkgYXMgY3VzdG9tQ29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBkZWZhdWx0Q29udGVudENlbGxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbUNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdzogcm93LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uRGVmczogZGF0YXRhYmxlU2V0dGluZ3M/LmNvbHVtbkRlZnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHJvd1tjb2x1bW5EZWYuZmllbGRdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdENvbnRlbnRDZWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgcm93W2NvbHVtbkRlZi5maWVsZF0gfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8dHIgKm5nSWY9XCJleHBhbmRlZFJvd3NbaV1cIj5cbiAgICAgICAgICAgICAgICAgIDx0ZCBbYXR0ci5jb2xzcGFuXT1cImdldENvbHNwYW5Gb3JFeHBhbnNpb25Sb3coKVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRDdXN0b21FeHBhbnNpb25Sb3dDb250ZW50KCkgYXMgZXhwYW5zaW9uUm93Q29udGVudENvbXBvbmVudFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5zaW9uUm93Q29udGVudENvbXBvbmVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViUm93Q29udGVudDogcm93WydzdWJSb3cnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2VtcHR5Qm9keT5cbiAgICAgICAgICAgIDx0ciBjbGFzcz1cIm1jLWRhdGF0YWJsZV9fZW1wdHlcIj5cbiAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI1XCIgY2xhc3M9XCJtYy1kYXRhdGFibGVfX2VtcHR5LWNlbGxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWMtZGF0YXRhYmxlX19lbXB0eS1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhdGFibGVTZXR0aW5ncz8ubGFiZWxzPy5lbXB0eUJvZHlUaXRsZSB8fCAnVGhlcmUgaXMgbm8gcmVzdWx0LidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3N0cm9uZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPjxiciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YXRhYmxlU2V0dGluZ3M/LmxhYmVscz8uZW1wdHlCb2R5RGVzY3JpcHRpb24gfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUGxlYXNlIHRyeSBjaGFuZ2luZyB5b3VyIGZpbHRlcnMuJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGF0YXRhYmxlU2V0dGluZ3M/LmFjdGl2YXRlRW1wdHlCb2R5QnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgbW96LWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgW3RoZW1lXT1cIiduZXV0cmFsJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCIncydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3ZhcmlhdGlvbl09XCInYm9yZGVyZWQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlbXB0eUJ1dHRvbkNsaWNrRXZlbnQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1vei1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGljb25OYW1lPVwie3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhdGFibGVTZXR0aW5ncz8uaWNvbnM/LmVtcHR5Qm9keUJ1dHRvbkljb24gfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdOYXZpZ2F0aW9uX0Rpc3BsYXlfRmlsdGVyXzI0cHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L21vei1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZGF0YXRhYmxlU2V0dGluZ3M/LmxhYmVscz8uZW1wdHlCb2R5QnV0dG9uVGl0bGUgfHwgJ0NoYW5nZSBmaWx0ZXJzJyB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC90cj48L25nLXRlbXBsYXRlXG4gICAgICAgICAgPlxuICAgICAgICA8L3Rib2R5PlxuICAgICAgPC90YWJsZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxtb3otZGF0YXRhYmxlLWZvb3RlclxuICAgICpuZ0lmPVwiZGF0YXRhYmxlU2V0dGluZ3M/LmFjdGl2YXRlUGFnaW5hdGlvblwiXG4gICAgW2Zvb3RlclNldHRpbmdzXT1cImZvb3RlclNldHRpbmdzXCJcbiAgICBbaXNMb2FkaW5nXT1cImRhdGF0YWJsZVNldHRpbmdzPy5pc0xvYWRpbmdcIlxuICAgIChyb3dQZXJQYWdlQ2hhbmdlRW1pdHRlcik9XCJyb3dQZXJQYWdlQ2hhbmdlRXZlbnQoJGV2ZW50KVwiXG4gICAgKHBhZ2VDaGFuZ2VFbWl0dGVyKT1cInBhZ2VDaGFuZ2VFdmVudCgkZXZlbnQpXCJcbiAgPjwvbW96LWRhdGF0YWJsZS1mb290ZXI+XG48L2Rpdj5cbiJdfQ==
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW96LWRhdGF0YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvY29tcG9uZW50cy9kYXRhdGFibGUvbW96LWRhdGF0YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvY29tcG9uZW50cy9kYXRhdGFibGUvbW96LWRhdGF0YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxlQUFlLEVBSWYsWUFBWSxFQUNaLE1BQU0sRUFDTixZQUFZLEVBQ1osU0FBUyxFQUNULGlCQUFpQixHQUVsQixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUc3RyxPQUFPLEVBQUUsd0NBQXdDLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQzs7Ozs7Ozs7OztBQVMxSCxNQUFNLE9BQU8scUJBQXFCO0lBTmxDO1FBV0Usc0JBQXNCO1FBQ1osYUFBUSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDdkMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDekMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBcUIsQ0FBQztRQUNwRCxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO1FBQ3ZELDJCQUFzQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFLL0QseUJBQXlCO1FBQ2YsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDeEMscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQWNqRCx5QkFBb0IsR0FBa0MsSUFBSSxHQUFH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bkIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBRXNDLGNBQWM7c0JBQTFELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDRCxXQUFXO3NCQUFwRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBR2pDLG9CQUFvQjtzQkFEMUIsZUFBZTt1QkFBQywrQkFBK0I7Z0JBSXpDLHFCQUFxQjtzQkFEM0IsZUFBZTt1QkFBQyxnQ0FBZ0M7Z0JBSTFDLHlCQUF5QjtzQkFEL0IsWUFBWTt1QkFBQyx3Q0FBd0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIFF1ZXJ5TGlzdCxcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgVGVtcGxhdGVSZWYsXG4gIENvbnRlbnRDaGlsZCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIEVsZW1lbnRSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm93RGF0YSB9IGZyb20gJy4vbW9kZWwvcm93LWRhdGEnO1xuaW1wb3J0IHsgU2VsZWN0aW9uU2V0dGluZ3MgfSBmcm9tICcuL21vZGVsL3NlbGVjdGlvbi1zZXR0aW5ncyc7XG5pbXBvcnQgeyBNb3pEYXRhdGFibGVTZWxlY3Rpb25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc2VsZWN0aW9uL21vei1kYXRhdGFibGUtc2VsZWN0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNb3pEYXRhdGFibGVIZWFkZXJDZWxsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2hlYWRlci9tb3otZGF0YXRhYmxlLWhlYWRlci1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNb3pEYXRhdGFibGVDb250ZW50Q2VsbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jb250ZW50L21vei1kYXRhdGFibGUtY29udGVudC1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRhdGFibGVTZXR0aW5ncyB9IGZyb20gJy4vbW9kZWwvZGF0YXRhYmxlLXNldHRpbmdzJztcbmltcG9ydCB7IEZvb3RlclNldHRpbmdzIH0gZnJvbSAnLi9tb2RlbC9mb290ZXItc2V0dGluZ3MnO1xuaW1wb3J0IHsgTW96RGF0YXRhYmxlUm93RXhwYW5zaW9uQ29udGVudENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yb3cvbW96LWRhdGF0YWJsZS1yb3ctZXhwYW5zaW9uLWNvbnRlbnQuY29tcG9uZW50JztcbmltcG9ydCB7IENvbHVtbkRlZiB9IGZyb20gJy4vbW9kZWwvY29sdW1uLWRlZic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vei1kYXRhdGFibGUnLFxuICBzdHlsZVVybHM6IFsnLi9tb3otZGF0YXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi9tb3otZGF0YXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgTW96RGF0YXRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gIEBJbnB1dCgpIHB1YmxpYyBmb290ZXJTZXR0aW5ncz86IEZvb3RlclNldHRpbmdzO1xuICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0aW9uU2V0dGluZ3M/OiBTZWxlY3Rpb25TZXR0aW5ncztcbiAgQElucHV0KCkgcHVibGljIGRhdGF0YWJsZVNldHRpbmdzPzogRGF0YXRhYmxlU2V0dGluZ3M7XG5cbiAgLy8gRlJPTSBCT0RZIERBVEFUQUJMRVxuICBAT3V0cHV0KCkgcm93Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPFJvd0RhdGE+KCk7XG4gIEBPdXRwdXQoKSBzb3J0Q29sdW1uID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xuICBAT3V0cHV0KCkgcm93U2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdGlvblNldHRpbmdzPigpO1xuICBAT3V0cHV0KCkgcm93QWxsU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdGlvblNldHRpbmdzPigpO1xuICBAT3V0cHV0KCkgZW1wdHlCb2R5QnV0dG9uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBAVmlld0NoaWxkKE1vekRhdGF0YWJsZVNlbGVjdGlvbkNvbXBvbmVudClcbiAgcHVibGljIHNlbGVjdGlvbkNvbXBvbmVudD86IE1vekRhdGF0YWJsZVNlbGVjdGlvbkNvbXBvbmVudDtcblxuICAvLyBGUk9NIFBBR0lOQVRJT04gRk9PVEVSXG4gIEBPdXRwdXQoKSBwYWdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSByb3dQZXJQYWdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgQFZpZXdDaGlsZCgndGhTZWxlY3Rpb24nLCB7IHN0YXRpYzogZmFsc2UgfSkgdGhTZWxlY3Rpb25SZWY/OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCd0aFN1YlJvdycsIHsgc3RhdGljOiBmYWxzZSB9KSB0aFN1YlJvd1JlZj86IEVsZW1lbnRSZWY7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihNb3pEYXRhdGFibGVIZWFkZXJDZWxsQ29tcG9uZW50KVxuICBwdWJsaWMgaGVhZGVyQ2VsbENvbXBvbmVudHM/OiBRdWVyeUxpc3Q8TW96RGF0YXRhYmxlSGVhZGVyQ2VsbENvbXBvbmVudD47XG5cbiAgQENvbnRlbnRDaGlsZHJlbihNb3pEYXRhdGFibGVDb250ZW50Q2VsbENvbXBvbmVudClcbiAgcHVibGljIGNvbnRlbnRDZWxsQ29tcG9uZW50cz86IFF1ZXJ5TGlzdDxNb3pEYXRhdGFibGVDb250ZW50Q2VsbENvbXBvbmVudD47XG5cbiAgQENvbnRlbnRDaGlsZChNb3pEYXRhdGFibGVSb3dFeHBhbnNpb25Db250ZW50Q29tcG9uZW50KVxuICBwdWJsaWMgZXhwYW5zaW9uQ29udGVudENvbXBvbmVudD86IE1vekRhdGF0YWJsZVJvd0V4cGFuc2lvbkNvbnRlbnRDb21wb25lbnQ7XG5cbiAgcHVibGljIGN1c3RvbUhlYWRlckNlbGxzTWFwOiBNYXA8c3RyaW5nLCBUZW1wbGF0ZVJlZjxhbnk+PiA9IG5ldyBNYXA8c3RyaW5nLCBUZW1wbGF0ZVJlZjxhbnk+PigpO1xuICBwdWJsaWMgY3VzdG9tQ29udGVudENlbGxzTWFwOiBNYXA8c3RyaW5nLCBUZW1wbGF0ZVJlZjxhbnk+PiA9IG5ldyBNYXA8c3RyaW5nLCBUZW1wbGF0ZVJlZjxhbnk+PigpO1xuICBwdWJsaWMgZXhwYW5kZWRSb3dzOiBib29sZWFuW10gPSBbXTtcblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5idWlsZEN1c3RvbUhlYWRlck1hcCgpO1xuICAgIHRoaXMuYnVpbGRDdXN0b21Db250ZW50TWFwKCk7XG4gIH1cblxuICBwdWJsaWMgYnVpbGRDdXN0b21IZWFkZXJNYXAoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGVhZGVyQ2VsbENvbXBvbmVudHMpIHtcbiAgICAgIHRoaXMuaGVhZGVyQ2VsbENvbXBvbmVudHMuZm9yRWFjaCgoaGVhZGVyKSA9PiB7XG4gICAgICAgIGlmIChoZWFkZXIuZmllbGQgJiYgaGVhZGVyLnRlbXBsYXRlUmVmKSB7XG4gICAgICAgICAgdGhpcy5jdXN0b21IZWFkZXJDZWxsc01hcC5zZXQoaGVhZGVyLmZpZWxkLCBoZWFkZXIudGVtcGxhdGVSZWYpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYnVpbGRDdXN0b21Db250ZW50TWFwKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbnRlbnRDZWxsQ29tcG9uZW50cykge1xuICAgICAgdGhpcy5jb250ZW50Q2VsbENvbXBvbmVudHMuZm9yRWFjaCgoY2VsbCkgPT4ge1xuICAgICAgICBpZiAoY2VsbC5maWVsZCAmJiBjZWxsLnRlbXBsYXRlUmVmKSB7XG4gICAgICAgICAgdGhpcy5jdXN0b21Db250ZW50Q2VsbHNNYXAuc2V0KGNlbGwuZmllbGQsIGNlbGwudGVtcGxhdGVSZWYpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0Q3VzdG9tRXhwYW5zaW9uUm93Q29udGVudCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5leHBhbnNpb25Db250ZW50Q29tcG9uZW50Py50ZW1wbGF0ZVJlZjtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVSb3dFeHBhbnNpb24oaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuZXhwYW5kZWRSb3dzW2luZGV4XSA9ICF0aGlzLmV4cGFuZGVkUm93c1tpbmRleF07XG4gIH1cblxuICBwdWJsaWMgaGFzU3ViUm93KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5kYXRhdGFibGVTZXR0aW5ncz8ucm93RGF0YS5maWx0ZXIoKHJvdykgPT4gcm93WydzdWJSb3cnXSkubGVuZ3RoIHx8IDApID4gMDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDdXN0b21IZWFkZXIoY29sdW1uSWQ6IHN0cmluZyk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmN1c3RvbUhlYWRlckNlbGxzTWFwLmdldChjb2x1bW5JZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q3VzdG9tQ29udGVudChjb2x1bW5JZDogc3RyaW5nKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY3VzdG9tQ29udGVudENlbGxzTWFwLmdldChjb2x1bW5JZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29sc3BhbkZvckV4cGFuc2lvblJvdygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmRhdGF0YWJsZVNldHRpbmdzPy5hY3RpdmF0ZVNlbGVjdGlvblxuICAgICAgPyAodGhpcy5kYXRhdGFibGVTZXR0aW5ncz8uY29sdW1uRGVmcz8ubGVuZ3RoIHx8IDApICsgMlxuICAgICAgOiAodGhpcy5kYXRhdGFibGVTZXR0aW5ncz8uY29sdW1uRGVmcz8ubGVuZ3RoIHx8IDApICsgMTtcbiAgfVxuXG4gIHB1YmxpYyBlbXB0eUJ1dHRvbkNsaWNrRXZlbnQoKTogdm9pZCB7XG4gICAgdGhpcy5lbXB0eUJvZHlCdXR0b25DbGlja2VkLmVtaXQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgcm93Q2xpY2tFdmVudChldmVudDogTW91c2VFdmVudCwgcm93Q2xpY2s6IFJvd0RhdGEpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucm93Q2xpY2suZW1pdChyb3dDbGljayk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0aW9uQWxsUm93RXZlbnQoJGV2ZW50OiBTZWxlY3Rpb25TZXR0aW5ncykge1xuICAgIHRoaXMucm93QWxsU2VsZWN0ZWQuZW1pdCgkZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdGlvblJvd0V2ZW50KCRldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLnJvd1NlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3Rpb25TZXR0aW5ncyk7XG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgcHVibGljIHJvd1BlclBhZ2VDaGFuZ2VFdmVudCgkZXZlbnQ6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucm93UGVyUGFnZUNoYW5nZS5lbWl0KCRldmVudCk7XG4gIH1cblxuICBwdWJsaWMgcGFnZUNoYW5nZUV2ZW50KCRldmVudDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5wYWdlQ2hhbmdlLmVtaXQoJGV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBzb3J0RXZlbnQoJGV2ZW50OiB1bmtub3duKSB7XG4gICAgdGhpcy5zb3J0Q29sdW1uLmVtaXQoJGV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTdHlsZUxlZnRGb3JDb2x1bW5GaXhlZCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmRhdGF0YWJsZVNldHRpbmdzPy5hY3RpdmF0ZVNlbGVjdGlvbiAmJiB0aGlzLnRoU2VsZWN0aW9uUmVmXG4gICAgICA/IHRoaXMudGhTZWxlY3Rpb25SZWYubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aFxuICAgICAgOiAwO1xuICB9XG5cbiAgcHVibGljIGdldExlZnRWYWx1ZUZpeEZpcnN0Q29sdW1uKCk6IG51bWJlciB7XG4gICAgbGV0IHZhbHVlID0gMDtcbiAgICBpZiAodGhpcy5kYXRhdGFibGVTZXR0aW5ncz8uYWN0aXZhdGVTZWxlY3Rpb24gJiYgdGhpcy50aFNlbGVjdGlvblJlZikge1xuICAgICAgdmFsdWUgKz0gdGhpcy50aFNlbGVjdGlvblJlZi5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgIH1cbiAgICBpZiAodGhpcy5oYXNTdWJSb3coKSAmJiB0aGlzLnRoU3ViUm93UmVmKSB7XG4gICAgICB2YWx1ZSArPSB0aGlzLnRoU3ViUm93UmVmLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGg7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRVbmhpZGRlbkNvbHVtbnMoKTogQ29sdW1uRGVmW10ge1xuICAgIHJldHVybiB0aGlzLmRhdGF0YWJsZVNldHRpbmdzPy5jb2x1bW5EZWZzLmZpbHRlcigoaGVhZFRpdGxlKSA9PiAhaGVhZFRpdGxlLmhpZGUpIHx8IFtdO1xuICB9XG5cbiAgcHVibGljIGdldENvbHVtbnMoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5kYXRhdGFibGVTZXR0aW5ncz8uaXNMb2FkaW5nXG4gICAgICA/IFsnJywgJycsICcnLCAnJywgJyddXG4gICAgICA6IHRoaXMuZGF0YXRhYmxlU2V0dGluZ3M/LmNvbHVtbkRlZnM7XG4gIH1cblxuICBwdWJsaWMgZ2V0RmllbGRzKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YXRhYmxlU2V0dGluZ3M/LmlzTG9hZGluZ1xuICAgICAgPyBbJycsICcnLCAnJywgJycsICcnXVxuICAgICAgOiB0aGlzLmRhdGF0YWJsZVNldHRpbmdzPy5yb3dEYXRhO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibWMtZGF0YXRhYmxlIG1jLWRhdGF0YWJsZS1oZWlnaHRcIj5cbiAgPGRpdiBjbGFzcz1cIm1jLWRhdGF0YWJsZV9faGVhZGVyXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwibW96LWRhdGF0YWJsZS1jYXB0aW9uXCI+PC9uZy1jb250ZW50PlxuICAgIDxkaXY+XG4gICAgICA8bW96LWRhdGF0YWJsZS1zZWxlY3Rpb25cbiAgICAgICAgW3NlbGVjdGlvblNldHRpbmdzXT1cInNlbGVjdGlvblNldHRpbmdzXCJcbiAgICAgICAgW3BhZ2luYXRpb25FbmFibGVkXT1cImRhdGF0YWJsZVNldHRpbmdzPy5hY3RpdmF0ZVBhZ2luYXRpb25cIlxuICAgICAgICBbcm93RGF0YV09XCJkYXRhdGFibGVTZXR0aW5ncz8ucm93RGF0YVwiXG4gICAgICAgICh1cGRhdGVTZWxlY3Rpb25BbGxFbWl0dGVyKT1cInNlbGVjdGlvbkFsbFJvd0V2ZW50KCRldmVudClcIlxuICAgICAgPjwvbW96LWRhdGF0YWJsZS1zZWxlY3Rpb24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibWMtZGF0YXRhYmxlX19jb250YWluZXIgbWMtZGF0YXRhYmxlLWhlaWdodFwiPlxuICAgIDxkaXYgY2xhc3M9XCJtYy1kYXRhdGFibGVfX21haW4gbWMtZGF0YXRhYmxlLWhlaWdodFwiPlxuICAgICAgPHRhYmxlIGNsYXNzPVwibWMtZGF0YXRhYmxlX190YWJsZVwiPlxuICAgICAgICA8dGhlYWQgW25nQ2xhc3NdPVwieyAnZml4LWhlYWRlci1yb3cnOiBkYXRhdGFibGVTZXR0aW5ncz8uZml4SGVhZGVyUm93IH1cIj5cbiAgICAgICAgICA8dHIgKm5nSWY9XCJnZXRDb2x1bW5zKCkgJiYgZ2V0Q29sdW1ucygpLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICBjbGFzcz1cIm1jLWRhdGF0YWJsZV9fY2VsbC1jaGVja2JveCBtb3otZGF0YXRhYmxlX190aCBtYy1kYXRhdGFibGVfX2ZpeC1maXJzdC1jb2x1bW5cIlxuICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgIGRhdGF0YWJsZVNldHRpbmdzPy5hY3RpdmF0ZVNlbGVjdGlvbiAmJiBzZWxlY3Rpb25Db21wb25lbnQgJiYgc2VsZWN0aW9uU2V0dGluZ3NcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgI3RoU2VsZWN0aW9uXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxtb3otY2hlY2tib3hcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIlxuICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uQ29tcG9uZW50Lm9uVWRwYXRlU2VsZWN0aW9uQWxsUGFnZVJvd3MoJGV2ZW50KTsgc2VsZWN0aW9uUm93RXZlbnQoJGV2ZW50KVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwic2VsZWN0aW9uQ29tcG9uZW50LmlzSW5kZXRlcm1pbmF0ZVwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uU2V0dGluZ3MuYWxsU2VsZWN0ZWQgJiYgIXNlbGVjdGlvbkNvbXBvbmVudC5pc0luZGV0ZXJtaW5hdGVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkYXRhdGFibGVTZXR0aW5ncz8uaXNMb2FkaW5nIHx8IGZhbHNlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L21vei1jaGVja2JveD5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgKm5nSWY9XCJoYXNTdWJSb3coKSAmJiAhZGF0YXRhYmxlU2V0dGluZ3M/LmlzTG9hZGluZ1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwibWMtZGF0YXRhYmxlX19maXgtZmlyc3QtY29sdW1uXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiZ2V0U3R5bGVMZWZ0Rm9yQ29sdW1uRml4ZWQoKVwiXG4gICAgICAgICAgICAgICN0aFN1YlJvd1xuICAgICAgICAgICAgPjwvdGg+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW5EZWYgb2YgZ2V0Q29sdW1ucygpXCI+XG4gICAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICAgIGNsYXNzPVwibW96LWRhdGF0YWJsZV9fdGhcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbHVtbkRlZi5oaWRlXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAnbWMtZGF0YXRhYmxlX19maXgtZmlyc3QtY29sdW1uJzpcbiAgICAgICAgICAgICAgICAgICAgZGF0YXRhYmxlU2V0dGluZ3M/LmZpeEZpcnN0Q29sdW1uICYmXG4gICAgICAgICAgICAgICAgICAgIGdldFVuaGlkZGVuQ29sdW1ucygpWzBdLmZpZWxkID09PSBjb2x1bW5EZWYuZmllbGRcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUubGVmdC5weF09XCJnZXRMZWZ0VmFsdWVGaXhGaXJzdENvbHVtbigpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhdGFibGVTZXR0aW5ncz8uaXNMb2FkaW5nOyBlbHNlIG5vdExvYWRpbmdIZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2tlbGV0b24tYm94IG11LW1iLTEwMCBjZWxscy1sb2FkaW5nXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vdExvYWRpbmdIZWFkaW5nPlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBbbW96RGF0YXRhYmxlU29ydF09XCJjb2x1bW5EZWZcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7IGhlYWRlcjogY29sdW1uRGVmLnNvcnQgfVwiXG4gICAgICAgICAgICAgICAgICAgIChzb3J0RW1pdHRlcik9XCJzb3J0RXZlbnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q3VzdG9tSGVhZGVyKGNvbHVtbkRlZi5maWVsZCkgYXMgY3VzdG9tSGVhZGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBkZWZhdWx0SGVhZGVyQ2VsbFxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21IZWFkZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGNvbHVtbkRlZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRIZWFkZXJDZWxsPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbHVtbkRlZi5oZWFkZXJOYW1lIHwgdXBwZXJjYXNlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIChkYXRhdGFibGVTZXR0aW5ncz8ucm93RGF0YT8ubGVuZ3RoIHx8IDApID4gMCB8fCBkYXRhdGFibGVTZXR0aW5ncz8uaXNMb2FkaW5nO1xuICAgICAgICAgICAgICBlbHNlIGVtcHR5Qm9keVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByb3cgb2YgZ2V0RmllbGRzKCk7IGluZGV4IGFzIGlcIj5cbiAgICAgICAgICAgICAgPHRyIGNsYXNzPVwibWMtZGF0YXRhYmxlX19yb3ctcGFyZW50XCIgKGNsaWNrKT1cInJvd0NsaWNrRXZlbnQoJGV2ZW50LCByb3cpXCI+XG4gICAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1jLWRhdGF0YWJsZV9fZml4LWZpcnN0LWNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImRhdGF0YWJsZVNldHRpbmdzPy5hY3RpdmF0ZVNlbGVjdGlvbiAmJiBzZWxlY3Rpb25Db21wb25lbnRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhdGFibGVTZXR0aW5ncz8uaXNMb2FkaW5nOyBlbHNlIG5vdExvYWRpbmdDaGVja2JveFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2tlbGV0b24tYm94IG11LW1iLTEwMCBjaGVja2JveC1sb2FkaW5nXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm90TG9hZGluZ0NoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICA8bW96LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbkNvbXBvbmVudC5vblVkcGF0ZVNlbGVjdGlvblJvdyhyb3cpOyBzZWxlY3Rpb25Sb3dFdmVudCgkZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvdy5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwicm93LnNlbGVjdGVkIHx8IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicm93LmRpc2FibGVTZWxlY3Rpb24gfHwgZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvbW96LWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNTdWJSb3coKSAmJiAhZGF0YXRhYmxlU2V0dGluZ3M/LmlzTG9hZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicm93WydzdWJSb3cnXTsgZWxzZSBub1N1YlJvd1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWMtZGF0YXRhYmxlX19jZWxsLWJ1dHRvbiBtYy1kYXRhdGFibGVfX2ZpeC1maXJzdC1jb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUubGVmdC5weF09XCJnZXRTdHlsZUxlZnRGb3JDb2x1bW5GaXhlZCgpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWMtZGF0YXRhYmxlX19leHBhbmQgbWMtZGF0YXRhYmxlX19idG5cIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVSb3dFeHBhbnNpb24oaSk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1jLWRhdGF0YWJsZV9fYnRuLWljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZXhwYW5kZWRSb3dzW2ldOyBlbHNlIHN1YnJvd0Nsb3NlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bW96LWljb24gW2ljb25OYW1lXT1cIidOYXZpZ2F0aW9uX0NvbnRyb2xfQ2lyY2xlLS1Nb3JlXzI0cHgnXCI+PC9tb3otaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzdWJyb3dDbG9zZWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxtb3otaWNvbiBbaWNvbk5hbWVdPVwiJ05hdmlnYXRpb25fQ29udHJvbF9DaXJjbGUtLUxlc3NfMjRweCdcIj48L21vei1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9TdWJSb3dcbiAgICAgICAgICAgICAgICAgICAgPjx0ZFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWMtZGF0YXRhYmxlX19jZWxsLWJ1dHRvbiBtYy1kYXRhdGFibGVfX2ZpeC1maXJzdC1jb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cImdldFN0eWxlTGVmdEZvckNvbHVtbkZpeGVkKClcIlxuICAgICAgICAgICAgICAgICAgICA+PC90ZFxuICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uRGVmIG9mIGdldENvbHVtbnMoKVwiPlxuICAgICAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbHVtbkRlZi5oaWRlXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICdtYy1kYXRhdGFibGVfX2ZpeC1maXJzdC1jb2x1bW4nOlxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YXRhYmxlU2V0dGluZ3M/LmZpeEZpcnN0Q29sdW1uICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRVbmhpZGRlbkNvbHVtbnMoKVswXS5maWVsZCA9PT0gY29sdW1uRGVmLmZpZWxkXG4gICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUubGVmdC5weF09XCJnZXRMZWZ0VmFsdWVGaXhGaXJzdENvbHVtbigpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGF0YWJsZVNldHRpbmdzPy5pc0xvYWRpbmc7IGVsc2Ugbm90TG9hZGluZ0NlbGxzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNrZWxldG9uLWJveCBtdS1tYi0xMDAgY2VsbHMtbG9hZGluZ1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub3RMb2FkaW5nQ2VsbHM+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q3VzdG9tQ29udGVudChjb2x1bW5EZWYuZmllbGQpIGFzIGN1c3RvbUNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgZGVmYXVsdENvbnRlbnRDZWxsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21Db250ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3c6IHJvdyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkRlZnM6IGRhdGF0YWJsZVNldHRpbmdzPy5jb2x1bW5EZWZzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiByb3dbY29sdW1uRGVmLmZpZWxkXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDb250ZW50Q2VsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJvd1tjb2x1bW5EZWYuZmllbGRdIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPHRyICpuZ0lmPVwiZXhwYW5kZWRSb3dzW2ldXCI+XG4gICAgICAgICAgICAgICAgICA8dGQgW2F0dHIuY29sc3Bhbl09XCJnZXRDb2xzcGFuRm9yRXhwYW5zaW9uUm93KClcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZ2V0Q3VzdG9tRXhwYW5zaW9uUm93Q29udGVudCgpIGFzIGV4cGFuc2lvblJvd0NvbnRlbnRDb21wb25lbnRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuc2lvblJvd0NvbnRlbnRDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YlJvd0NvbnRlbnQ6IHJvd1snc3ViUm93J10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNlbXB0eUJvZHk+XG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJtYy1kYXRhdGFibGVfX2VtcHR5XCI+XG4gICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiNVwiIGNsYXNzPVwibWMtZGF0YXRhYmxlX19lbXB0eS1jZWxsXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1jLWRhdGF0YWJsZV9fZW1wdHktY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YXRhYmxlU2V0dGluZ3M/LmxhYmVscz8uZW1wdHlCb2R5VGl0bGUgfHwgJ1RoZXJlIGlzIG5vIHJlc3VsdC4nXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zdHJvbmdcbiAgICAgICAgICAgICAgICAgICAgICAgID48YnIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGF0YWJsZVNldHRpbmdzPy5sYWJlbHM/LmVtcHR5Qm9keURlc2NyaXB0aW9uIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BsZWFzZSB0cnkgY2hhbmdpbmcgeW91ciBmaWx0ZXJzLidcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRhdGF0YWJsZVNldHRpbmdzPy5hY3RpdmF0ZUVtcHR5Qm9keUJ1dHRvblwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIG1vei1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aGVtZV09XCInbmV1dHJhbCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NpemVdPVwiJ3MnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YXJpYXRpb25dPVwiJ2JvcmRlcmVkJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZW1wdHlCdXR0b25DbGlja0V2ZW50KClcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtb3otaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uTmFtZT1cInt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YXRhYmxlU2V0dGluZ3M/Lmljb25zPy5lbXB0eUJvZHlCdXR0b25JY29uIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTmF2aWdhdGlvbl9EaXNwbGF5X0ZpbHRlcl8yNHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9tb3otaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRhdGF0YWJsZVNldHRpbmdzPy5sYWJlbHM/LmVtcHR5Qm9keUJ1dHRvblRpdGxlIHx8ICdDaGFuZ2UgZmlsdGVycycgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvdHI+PC9uZy10ZW1wbGF0ZVxuICAgICAgICAgID5cbiAgICAgICAgPC90Ym9keT5cbiAgICAgIDwvdGFibGU+XG4gICAgPC9kaXY+XG4gICAgPG1vei1kYXRhdGFibGUtZm9vdGVyXG4gICAgICAqbmdJZj1cImRhdGF0YWJsZVNldHRpbmdzPy5hY3RpdmF0ZVBhZ2luYXRpb25cIlxuICAgICAgW2Zvb3RlclNldHRpbmdzXT1cImZvb3RlclNldHRpbmdzXCJcbiAgICAgIFtpc0xvYWRpbmddPVwiZGF0YXRhYmxlU2V0dGluZ3M/LmlzTG9hZGluZ1wiXG4gICAgICAocm93UGVyUGFnZUNoYW5nZUVtaXR0ZXIpPVwicm93UGVyUGFnZUNoYW5nZUV2ZW50KCRldmVudClcIlxuICAgICAgKHBhZ2VDaGFuZ2VFbWl0dGVyKT1cInBhZ2VDaGFuZ2VFdmVudCgkZXZlbnQpXCJcbiAgICA+PC9tb3otZGF0YXRhYmxlLWZvb3Rlcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==