@sumaris-net/ngx-components 2.12.26-alpha2 → 2.12.26

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 (167) hide show
  1. package/doc/changelog.md +6 -0
  2. package/esm2022/src/app/admin/services/validator/person.validator.mjs +11 -8
  3. package/esm2022/src/app/admin/users/users.mjs +11 -5
  4. package/esm2022/src/app/core/account/account.page.mjs +12 -5
  5. package/esm2022/src/app/core/account/new-token.modal.mjs +15 -8
  6. package/esm2022/src/app/core/account/password/change-password.form.mjs +10 -5
  7. package/esm2022/src/app/core/account/password/change-password.page.mjs +9 -4
  8. package/esm2022/src/app/core/account/token.table.mjs +12 -5
  9. package/esm2022/src/app/core/auth/auth.form.mjs +11 -5
  10. package/esm2022/src/app/core/auth/auth.modal.mjs +17 -14
  11. package/esm2022/src/app/core/auth/reset-password.modal.mjs +20 -16
  12. package/esm2022/src/app/core/form/array/testing/form-array.test.mjs +13 -5
  13. package/esm2022/src/app/core/form/entity/editor.class.mjs +20 -14
  14. package/esm2022/src/app/core/form/entity/entity-editor-modal.class.mjs +21 -10
  15. package/esm2022/src/app/core/form/entity/entity-editor.class.mjs +24 -11
  16. package/esm2022/src/app/core/form/entity/tab-editor.class.mjs +21 -5
  17. package/esm2022/src/app/core/form/form-container.class.mjs +5 -4
  18. package/esm2022/src/app/core/form/form.class.mjs +13 -13
  19. package/esm2022/src/app/core/form/list/list.form.mjs +20 -10
  20. package/esm2022/src/app/core/form/properties/properties.form.mjs +26 -17
  21. package/esm2022/src/app/core/form/properties/properties.table.mjs +14 -10
  22. package/esm2022/src/app/core/form/properties/property.validator.mjs +8 -5
  23. package/esm2022/src/app/core/form/username/username.form.mjs +10 -5
  24. package/esm2022/src/app/core/home/home.mjs +63 -40
  25. package/esm2022/src/app/core/install/install-upgrade-card.component.mjs +34 -21
  26. package/esm2022/src/app/core/menu/menu.component.mjs +53 -33
  27. package/esm2022/src/app/core/menu/testing/menu-other.testing.mjs +15 -13
  28. package/esm2022/src/app/core/menu/testing/menu.testing.mjs +15 -13
  29. package/esm2022/src/app/core/peer/select-peer.modal.mjs +40 -26
  30. package/esm2022/src/app/core/services/testing/referential.validator.mjs +8 -5
  31. package/esm2022/src/app/core/services/validator/account.validator.mjs +18 -8
  32. package/esm2022/src/app/core/services/validator/base.validator.class.mjs +11 -9
  33. package/esm2022/src/app/core/services/validator/local-settings.validator.mjs +10 -8
  34. package/esm2022/src/app/core/services/validator/user-settings.validator.mjs +6 -5
  35. package/esm2022/src/app/core/services/validator/user-token.validator.mjs +6 -5
  36. package/esm2022/src/app/core/settings/settings.page.mjs +35 -25
  37. package/esm2022/src/app/core/table/async-table.class.mjs +32 -16
  38. package/esm2022/src/app/core/table/column/actions-column.component.mjs +9 -8
  39. package/esm2022/src/app/core/table/column/nav-actions-column.component.mjs +9 -8
  40. package/esm2022/src/app/core/table/column/row-field.component.mjs +11 -6
  41. package/esm2022/src/app/core/table/memory-table.class.mjs +4 -4
  42. package/esm2022/src/app/core/table/table.class.mjs +40 -27
  43. package/esm2022/src/app/core/table/table.pipes.mjs +21 -15
  44. package/esm2022/src/app/core/table/testing/table-validator.service.mjs +8 -5
  45. package/esm2022/src/app/core/table/testing/table.testing.mjs +11 -6
  46. package/esm2022/src/app/core/table/testing/table2-validator.service.mjs +8 -5
  47. package/esm2022/src/app/core/table/testing/table2.testing.mjs +13 -9
  48. package/esm2022/src/app/shared/form/field.component.mjs +16 -14
  49. package/esm2022/src/app/shared/help/help.modal.mjs +25 -20
  50. package/esm2022/src/app/shared/image/gallery/image-gallery.component.mjs +40 -31
  51. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +18 -14
  52. package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +14 -13
  53. package/esm2022/src/app/shared/material/badge/badge.test.mjs +8 -6
  54. package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +21 -14
  55. package/esm2022/src/app/shared/material/boolean/testing/boolean.test.page.mjs +12 -5
  56. package/esm2022/src/app/shared/material/chips/material.chips.mjs +23 -18
  57. package/esm2022/src/app/shared/material/datetime/material.date.mjs +41 -33
  58. package/esm2022/src/app/shared/material/datetime/material.dateshort.mjs +42 -36
  59. package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +41 -33
  60. package/esm2022/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +13 -11
  61. package/esm2022/src/app/shared/material/datetime/testing/mat-date.test.mjs +14 -12
  62. package/esm2022/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +14 -12
  63. package/esm2022/src/app/shared/material/duration/material.duration.mjs +29 -18
  64. package/esm2022/src/app/shared/material/duration/testing/mat-duration.test.mjs +14 -12
  65. package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +32 -25
  66. package/esm2022/src/app/shared/material/swipe/material.swipe.mjs +20 -15
  67. package/esm2022/src/app/shared/material/testing/common.test.mjs +14 -12
  68. package/esm2022/src/app/shared/material/text/text-form.component.mjs +12 -5
  69. package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +13 -6
  70. package/esm2022/src/app/shared/named-filter/testing/named-filter-selector.testing.mjs +12 -13
  71. package/esm2022/src/app/shared/pipes/form.pipes.mjs +26 -18
  72. package/esm2022/src/app/shared/pipes/selection.pipes.mjs +35 -33
  73. package/esm2022/src/app/shared/storage/storage-explorer.component.mjs +53 -28
  74. package/esm2022/src/app/shared/toolbar/toolbar.mjs +30 -20
  75. package/esm2022/src/app/shared/upload-file/upload-file-popover.component.mjs +16 -14
  76. package/esm2022/src/app/shared/upload-file/upload-file.component.mjs +20 -18
  77. package/esm2022/src/app/social/job/progression/job-progression.icon.mjs +26 -18
  78. package/esm2022/src/app/social/message/message.form.mjs +10 -5
  79. package/esm2022/src/app/social/message/message.modal.mjs +19 -16
  80. package/esm2022/src/app/social/user-event/notification/user-event-notification.icon.mjs +27 -18
  81. package/esm2022/src/app/social/user-event/notification/user-event-notification.list.mjs +40 -23
  82. package/fesm2022/sumaris-net.ngx-components.mjs +1250 -756
  83. package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
  84. package/package.json +1 -1
  85. package/src/app/admin/services/validator/person.validator.d.ts +3 -2
  86. package/src/app/admin/users/users.d.ts +4 -2
  87. package/src/app/core/account/account.page.d.ts +4 -2
  88. package/src/app/core/account/new-token.modal.d.ts +3 -2
  89. package/src/app/core/account/password/change-password.form.d.ts +4 -2
  90. package/src/app/core/account/password/change-password.page.d.ts +4 -2
  91. package/src/app/core/account/token.table.d.ts +6 -3
  92. package/src/app/core/auth/auth.form.d.ts +5 -3
  93. package/src/app/core/auth/auth.modal.d.ts +7 -5
  94. package/src/app/core/auth/reset-password.modal.d.ts +6 -6
  95. package/src/app/core/form/array/testing/form-array.test.d.ts +5 -2
  96. package/src/app/core/form/entity/editor.class.d.ts +7 -7
  97. package/src/app/core/form/entity/entity-editor-modal.class.d.ts +5 -3
  98. package/src/app/core/form/entity/entity-editor.class.d.ts +7 -4
  99. package/src/app/core/form/entity/tab-editor.class.d.ts +11 -2
  100. package/src/app/core/form/form-container.class.d.ts +1 -2
  101. package/src/app/core/form/form.class.d.ts +3 -5
  102. package/src/app/core/form/list/list.form.d.ts +8 -3
  103. package/src/app/core/form/properties/properties.form.d.ts +7 -3
  104. package/src/app/core/form/properties/properties.table.d.ts +5 -3
  105. package/src/app/core/form/properties/property.validator.d.ts +3 -1
  106. package/src/app/core/form/username/username.form.d.ts +5 -3
  107. package/src/app/core/home/home.d.ts +22 -16
  108. package/src/app/core/install/install-upgrade-card.component.d.ts +15 -10
  109. package/src/app/core/menu/menu.component.d.ts +17 -13
  110. package/src/app/core/menu/testing/menu-other.testing.d.ts +5 -1
  111. package/src/app/core/menu/testing/menu.testing.d.ts +5 -1
  112. package/src/app/core/peer/select-peer.modal.d.ts +15 -10
  113. package/src/app/core/services/testing/referential.validator.d.ts +3 -2
  114. package/src/app/core/services/validator/account.validator.d.ts +8 -2
  115. package/src/app/core/services/validator/base.validator.class.d.ts +3 -3
  116. package/src/app/core/services/validator/local-settings.validator.d.ts +4 -3
  117. package/src/app/core/services/validator/user-settings.validator.d.ts +2 -2
  118. package/src/app/core/services/validator/user-token.validator.d.ts +2 -2
  119. package/src/app/core/settings/settings.page.d.ts +9 -3
  120. package/src/app/core/table/async-table.class.d.ts +14 -14
  121. package/src/app/core/table/column/actions-column.component.d.ts +3 -3
  122. package/src/app/core/table/column/nav-actions-column.component.d.ts +4 -4
  123. package/src/app/core/table/column/row-field.component.d.ts +2 -2
  124. package/src/app/core/table/memory-table.class.d.ts +2 -2
  125. package/src/app/core/table/table.class.d.ts +14 -15
  126. package/src/app/core/table/table.pipes.d.ts +5 -4
  127. package/src/app/core/table/testing/table-validator.service.d.ts +3 -2
  128. package/src/app/core/table/testing/table.testing.d.ts +4 -2
  129. package/src/app/core/table/testing/table2-validator.service.d.ts +3 -1
  130. package/src/app/core/table/testing/table2.testing.d.ts +4 -2
  131. package/src/app/shared/form/field.component.d.ts +5 -5
  132. package/src/app/shared/help/help.modal.d.ts +8 -7
  133. package/src/app/shared/image/gallery/image-gallery.component.d.ts +8 -8
  134. package/src/app/shared/inputs.d.ts +1 -1
  135. package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +7 -6
  136. package/src/app/shared/material/autocomplete/testing/autocomplete.test.d.ts +4 -4
  137. package/src/app/shared/material/badge/badge.test.d.ts +3 -2
  138. package/src/app/shared/material/boolean/material.boolean.d.ts +6 -5
  139. package/src/app/shared/material/boolean/testing/boolean.test.page.d.ts +5 -2
  140. package/src/app/shared/material/chips/material.chips.d.ts +5 -5
  141. package/src/app/shared/material/datetime/material.date.d.ts +11 -10
  142. package/src/app/shared/material/datetime/material.dateshort.d.ts +11 -10
  143. package/src/app/shared/material/datetime/material.datetime.d.ts +11 -10
  144. package/src/app/shared/material/datetime/testing/mat-date-time.test.d.ts +4 -4
  145. package/src/app/shared/material/datetime/testing/mat-date.test.d.ts +3 -3
  146. package/src/app/shared/material/datetime/testing/mat-dateshort.test.d.ts +3 -3
  147. package/src/app/shared/material/duration/material.duration.d.ts +12 -6
  148. package/src/app/shared/material/duration/testing/mat-duration.test.d.ts +3 -3
  149. package/src/app/shared/material/latlong/material.latlong.d.ts +9 -9
  150. package/src/app/shared/material/swipe/material.swipe.d.ts +5 -5
  151. package/src/app/shared/material/testing/common.test.d.ts +4 -4
  152. package/src/app/shared/material/text/text-form.component.d.ts +6 -3
  153. package/src/app/shared/named-filter/named-filter-selector.component.d.ts +5 -2
  154. package/src/app/shared/named-filter/testing/named-filter-selector.testing.d.ts +3 -4
  155. package/src/app/shared/pipes/form.pipes.d.ts +7 -6
  156. package/src/app/shared/pipes/selection.pipes.d.ts +10 -10
  157. package/src/app/shared/storage/storage-explorer.component.d.ts +15 -12
  158. package/src/app/shared/toolbar/toolbar.d.ts +12 -10
  159. package/src/app/shared/upload-file/upload-file-popover.component.d.ts +4 -4
  160. package/src/app/shared/upload-file/upload-file.component.d.ts +3 -3
  161. package/src/app/social/job/progression/job-progression.icon.d.ts +6 -5
  162. package/src/app/social/message/message.form.d.ts +4 -2
  163. package/src/app/social/message/message.modal.d.ts +5 -5
  164. package/src/app/social/user-event/notification/user-event-notification.icon.d.ts +8 -7
  165. package/src/app/social/user-event/notification/user-event-notification.list.d.ts +9 -8
  166. package/src/assets/manifest.json +1 -1
  167. package/src/theme/_ngx-components.table.scss +1 -2
@@ -4,13 +4,14 @@ import { DateUtils } from '../../../shared/dates';
4
4
  import { toBoolean } from '../../../shared/functions';
5
5
  import { AppTabEditor } from '../../form/entity/tab-editor.class';
6
6
  import * as i0 from "@angular/core";
7
- import * as i1 from "../menu.service";
8
- import * as i2 from "@angular/common";
9
- import * as i3 from "@angular/router";
10
- import * as i4 from "../sub-menu-tab.directive";
11
- import * as i5 from "@ionic/angular";
12
- import * as i6 from "@angular/material/tabs";
13
- import * as i7 from "../../../shared/toolbar/toolbar";
7
+ import * as i1 from "@angular/router";
8
+ import * as i2 from "@ionic/angular";
9
+ import * as i3 from "@ngx-translate/core";
10
+ import * as i4 from "../menu.service";
11
+ import * as i5 from "@angular/common";
12
+ import * as i6 from "../sub-menu-tab.directive";
13
+ import * as i7 from "@angular/material/tabs";
14
+ import * as i8 from "../../../shared/toolbar/toolbar";
14
15
  export class MenuTestingPage extends AppTabEditor {
15
16
  menuService;
16
17
  logPrefix = '[menu-testing] ';
@@ -38,8 +39,9 @@ export class MenuTestingPage extends AppTabEditor {
38
39
  set secondTabTitle(value) {
39
40
  this.$secondTabTitle.next(value);
40
41
  }
41
- constructor(menuService) {
42
- super({
42
+ constructor(route, // Modal editor give 'null'
43
+ router, navController, alertCtrl, translate, menuService) {
44
+ super(route, router, navController, alertCtrl, translate, {
43
45
  tabCount: 4,
44
46
  });
45
47
  this.menuService = menuService;
@@ -138,13 +140,13 @@ export class MenuTestingPage extends AppTabEditor {
138
140
  setTimeout(() => this.subTabGroup.realignInkBar(), 200);
139
141
  }
140
142
  }
141
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MenuTestingPage, deps: [{ token: i1.MenuService }], target: i0.ɵɵFactoryTarget.Component });
142
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MenuTestingPage, selector: "app-testing-menu", inputs: { subSelectedTabIndex: "subSelectedTabIndex" }, outputs: { subSelectedTabIndexChange: "subSelectedTabIndexChange" }, viewQueries: [{ propertyName: "subTabGroup", first: true, predicate: ["subTabGroup"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<app-toolbar [defaultBackHref]=\"parentPath\">\n <ion-title [innerHTML]=\"$title | async\"></ion-title>\n</app-toolbar>\n\n<ion-content>\n <mat-tab-group #tabGroup [(selectedIndex)]=\"selectedTabIndex\" (selectedTabChange)=\"onTabChange($event)\"\n class=\"mat-mdc-tab-disabled-hidden\"\n dynamicHeight>\n <!-- TAB: 1 -->\n <mat-tab\n label=\"Details\"\n class=\"ion-padding\"\n appSubMenuTab\n [subMenuTitle]=\"($title | async) || ''\"\n [parentPath]=\"parentPath\"\n >\n <ng-template mat-tab-label>\n <ion-label>Details</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n <p>A first tab</p>\n\n <p [class.cdk-visually-hidden]=\"showThirdTab\">\n <ion-toggle #toggleThird>Toggle Third Tab</ion-toggle>\n </p>\n\n <p>\n <ion-button (click)=\"changeTitle($event)\">Change page title</ion-button>\n\n <ion-button (click)=\"addSubMenuItem($event)\">Add sub menu other 3</ion-button>\n\n <ion-button (click)=\"addOutsideRouteSubMenuItem($event, true)\">\n Add sub menu (outside route) - pinned\n </ion-button>\n\n <ion-button (click)=\"addOutsideRouteSubMenuItem($event, false)\">\n Add sub menu (outside route) - not pinned\n </ion-button>\n </p>\n\n <p>\n &nbsp;&nbsp;\n <ion-button (click)=\"enableMenu(false)\" *ngIf=\"menuService.enabled | async\">Disable menu</ion-button>\n <ion-button (click)=\"enableMenu(true)\" *ngIf=\"(menuService.enabled | async) !== true\">Enable menu</ion-button>\n <ion-button (click)=\"toggleSplitPaneWhen()\" [disabled]=\"(menuService.enabled | async) !== true\">\n Toggle split pane\n </ion-button>\n </p>\n </div>\n </mat-tab>\n\n <!-- TAB: 2 -->\n <mat-tab\n label=\"Second\"\n class=\"ion-padding\"\n appSubMenuTab\n [subMenuIcon]=\"{ icon: 'settings' }\"\n [subMenuTitle]=\"$secondTabTitle | async\"\n >\n <ng-template mat-tab-label>\n <ion-label [innerHTML]=\"$secondTabTitle | async\"></ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n <p>A second tab</p>\n\n <p *ngIf=\"showOtherLinks\">\n Navigate to :\n <a [routerLink]=\"childPath + '/1'\">{{ childPath }}/1</a>\n <br />\n Navigate to :\n <a [routerLink]=\"childPath + '/2'\">{{ childPath }}/2</a>\n </p>\n\n <p>\n <ion-button (click)=\"changeSecondTabTitle($event)\">Change tab label</ion-button>\n </p>\n </div>\n </mat-tab>\n\n <!-- TAB: 3 -->\n <mat-tab\n [label]=\"thirdTabTitle\"\n class=\"ion-padding\"\n [disabled]=\"!showThirdTab && !toggleThird.checked\"\n appSubMenuTab\n [subMenuIcon]=\"{ icon: 'none' }\"\n >\n <ng-template mat-tab-label>\n <ion-label>{{ thirdTabTitle }}</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">A third tab</div>\n </mat-tab>\n\n <!-- TAB: 4 -->\n <mat-tab appSubMenuTab [subMenuIcon]=\"{ icon: 'person' }\" label=\"Sub Tab\" class=\"ion-padding\">\n <ng-template mat-tab-label>\n <ion-label>Sub Tab</ion-label>\n </ng-template>\n\n <mat-tab-group #subTabGroup [(selectedIndex)]=\"subSelectedTabIndex\" (selectedTabChange)=\"onTabChange($event, 'subtab')\"\n class=\"mat-mdc-tab-disabled-hidden\"\n dynamicHeight>\n <mat-tab\n label=\"Sub1\"\n class=\"ion-padding\"\n >\n <ng-template mat-tab-label>\n <ion-label>Sub1</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n <p>First SubTab</p>\n </div>\n </mat-tab>\n\n <mat-tab\n label=\"Sub2\"\n class=\"ion-padding\"\n >\n <ng-template mat-tab-label>\n <ion-label>Sub2</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n <p>Second SubTab</p>\n </div>\n </mat-tab>\n </mat-tab-group>\n </mat-tab>\n </mat-tab-group>\n</ion-content>\n", styles: [".menu-item{padding-left:0 px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i4.SubMenuTabDirective, selector: "[appSubMenuTab]", inputs: ["label", "disabled", "parentPath", "path", "subMenuTitle", "subMenuIcon"] }, { kind: "component", type: i5.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i5.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i5.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i5.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i5.IonToggle, selector: "ion-toggle", inputs: ["alignment", "checked", "color", "disabled", "enableOnOffLabels", "justify", "labelPlacement", "legacy", "mode", "name", "value"] }, { kind: "directive", type: i5.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }, { kind: "directive", type: i5.RouterLinkWithHrefDelegate, selector: "a[routerLink],area[routerLink]" }, { kind: "directive", type: i6.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i6.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i6.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: i7.ToolbarComponent, selector: "app-toolbar", inputs: ["progressBarMode", "title", "color", "class", "backHref", "defaultBackHref", "hasValidate", "hasClose", "hasSearch", "canGoBack", "canShowMenu"], outputs: ["onValidate", "onClose", "onValidateAndClose", "onBackClick", "onSearch"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
143
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MenuTestingPage, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.NavController }, { token: i2.AlertController }, { token: i3.TranslateService }, { token: i4.MenuService }], target: i0.ɵɵFactoryTarget.Component });
144
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MenuTestingPage, selector: "app-testing-menu", inputs: { subSelectedTabIndex: "subSelectedTabIndex" }, outputs: { subSelectedTabIndexChange: "subSelectedTabIndexChange" }, viewQueries: [{ propertyName: "subTabGroup", first: true, predicate: ["subTabGroup"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<app-toolbar [defaultBackHref]=\"parentPath\">\n <ion-title [innerHTML]=\"$title | async\"></ion-title>\n</app-toolbar>\n\n<ion-content>\n <mat-tab-group #tabGroup [(selectedIndex)]=\"selectedTabIndex\" (selectedTabChange)=\"onTabChange($event)\"\n class=\"mat-mdc-tab-disabled-hidden\"\n dynamicHeight>\n <!-- TAB: 1 -->\n <mat-tab\n label=\"Details\"\n class=\"ion-padding\"\n appSubMenuTab\n [subMenuTitle]=\"($title | async) || ''\"\n [parentPath]=\"parentPath\"\n >\n <ng-template mat-tab-label>\n <ion-label>Details</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n <p>A first tab</p>\n\n <p [class.cdk-visually-hidden]=\"showThirdTab\">\n <ion-toggle #toggleThird>Toggle Third Tab</ion-toggle>\n </p>\n\n <p>\n <ion-button (click)=\"changeTitle($event)\">Change page title</ion-button>\n\n <ion-button (click)=\"addSubMenuItem($event)\">Add sub menu other 3</ion-button>\n\n <ion-button (click)=\"addOutsideRouteSubMenuItem($event, true)\">\n Add sub menu (outside route) - pinned\n </ion-button>\n\n <ion-button (click)=\"addOutsideRouteSubMenuItem($event, false)\">\n Add sub menu (outside route) - not pinned\n </ion-button>\n </p>\n\n <p>\n &nbsp;&nbsp;\n <ion-button (click)=\"enableMenu(false)\" *ngIf=\"menuService.enabled | async\">Disable menu</ion-button>\n <ion-button (click)=\"enableMenu(true)\" *ngIf=\"(menuService.enabled | async) !== true\">Enable menu</ion-button>\n <ion-button (click)=\"toggleSplitPaneWhen()\" [disabled]=\"(menuService.enabled | async) !== true\">\n Toggle split pane\n </ion-button>\n </p>\n </div>\n </mat-tab>\n\n <!-- TAB: 2 -->\n <mat-tab\n label=\"Second\"\n class=\"ion-padding\"\n appSubMenuTab\n [subMenuIcon]=\"{ icon: 'settings' }\"\n [subMenuTitle]=\"$secondTabTitle | async\"\n >\n <ng-template mat-tab-label>\n <ion-label [innerHTML]=\"$secondTabTitle | async\"></ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n <p>A second tab</p>\n\n <p *ngIf=\"showOtherLinks\">\n Navigate to :\n <a [routerLink]=\"childPath + '/1'\">{{ childPath }}/1</a>\n <br />\n Navigate to :\n <a [routerLink]=\"childPath + '/2'\">{{ childPath }}/2</a>\n </p>\n\n <p>\n <ion-button (click)=\"changeSecondTabTitle($event)\">Change tab label</ion-button>\n </p>\n </div>\n </mat-tab>\n\n <!-- TAB: 3 -->\n <mat-tab\n [label]=\"thirdTabTitle\"\n class=\"ion-padding\"\n [disabled]=\"!showThirdTab && !toggleThird.checked\"\n appSubMenuTab\n [subMenuIcon]=\"{ icon: 'none' }\"\n >\n <ng-template mat-tab-label>\n <ion-label>{{ thirdTabTitle }}</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">A third tab</div>\n </mat-tab>\n\n <!-- TAB: 4 -->\n <mat-tab appSubMenuTab [subMenuIcon]=\"{ icon: 'person' }\" label=\"Sub Tab\" class=\"ion-padding\">\n <ng-template mat-tab-label>\n <ion-label>Sub Tab</ion-label>\n </ng-template>\n\n <mat-tab-group #subTabGroup [(selectedIndex)]=\"subSelectedTabIndex\" (selectedTabChange)=\"onTabChange($event, 'subtab')\"\n class=\"mat-mdc-tab-disabled-hidden\"\n dynamicHeight>\n <mat-tab\n label=\"Sub1\"\n class=\"ion-padding\"\n >\n <ng-template mat-tab-label>\n <ion-label>Sub1</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n <p>First SubTab</p>\n </div>\n </mat-tab>\n\n <mat-tab\n label=\"Sub2\"\n class=\"ion-padding\"\n >\n <ng-template mat-tab-label>\n <ion-label>Sub2</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n <p>Second SubTab</p>\n </div>\n </mat-tab>\n </mat-tab-group>\n </mat-tab>\n </mat-tab-group>\n</ion-content>\n", styles: [".menu-item{padding-left:0 px}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i6.SubMenuTabDirective, selector: "[appSubMenuTab]", inputs: ["label", "disabled", "parentPath", "path", "subMenuTitle", "subMenuIcon"] }, { kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i2.IonToggle, selector: "ion-toggle", inputs: ["alignment", "checked", "color", "disabled", "enableOnOffLabels", "justify", "labelPlacement", "legacy", "mode", "name", "value"] }, { kind: "directive", type: i2.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }, { kind: "directive", type: i2.RouterLinkWithHrefDelegate, selector: "a[routerLink],area[routerLink]" }, { kind: "directive", type: i7.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i7.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i7.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: i8.ToolbarComponent, selector: "app-toolbar", inputs: ["progressBarMode", "title", "color", "class", "backHref", "defaultBackHref", "hasValidate", "hasClose", "hasSearch", "canGoBack", "canShowMenu"], outputs: ["onValidate", "onClose", "onValidateAndClose", "onBackClick", "onSearch"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }] });
143
145
  }
144
146
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MenuTestingPage, decorators: [{
145
147
  type: Component,
146
148
  args: [{ selector: 'app-testing-menu', template: "<app-toolbar [defaultBackHref]=\"parentPath\">\n <ion-title [innerHTML]=\"$title | async\"></ion-title>\n</app-toolbar>\n\n<ion-content>\n <mat-tab-group #tabGroup [(selectedIndex)]=\"selectedTabIndex\" (selectedTabChange)=\"onTabChange($event)\"\n class=\"mat-mdc-tab-disabled-hidden\"\n dynamicHeight>\n <!-- TAB: 1 -->\n <mat-tab\n label=\"Details\"\n class=\"ion-padding\"\n appSubMenuTab\n [subMenuTitle]=\"($title | async) || ''\"\n [parentPath]=\"parentPath\"\n >\n <ng-template mat-tab-label>\n <ion-label>Details</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n <p>A first tab</p>\n\n <p [class.cdk-visually-hidden]=\"showThirdTab\">\n <ion-toggle #toggleThird>Toggle Third Tab</ion-toggle>\n </p>\n\n <p>\n <ion-button (click)=\"changeTitle($event)\">Change page title</ion-button>\n\n <ion-button (click)=\"addSubMenuItem($event)\">Add sub menu other 3</ion-button>\n\n <ion-button (click)=\"addOutsideRouteSubMenuItem($event, true)\">\n Add sub menu (outside route) - pinned\n </ion-button>\n\n <ion-button (click)=\"addOutsideRouteSubMenuItem($event, false)\">\n Add sub menu (outside route) - not pinned\n </ion-button>\n </p>\n\n <p>\n &nbsp;&nbsp;\n <ion-button (click)=\"enableMenu(false)\" *ngIf=\"menuService.enabled | async\">Disable menu</ion-button>\n <ion-button (click)=\"enableMenu(true)\" *ngIf=\"(menuService.enabled | async) !== true\">Enable menu</ion-button>\n <ion-button (click)=\"toggleSplitPaneWhen()\" [disabled]=\"(menuService.enabled | async) !== true\">\n Toggle split pane\n </ion-button>\n </p>\n </div>\n </mat-tab>\n\n <!-- TAB: 2 -->\n <mat-tab\n label=\"Second\"\n class=\"ion-padding\"\n appSubMenuTab\n [subMenuIcon]=\"{ icon: 'settings' }\"\n [subMenuTitle]=\"$secondTabTitle | async\"\n >\n <ng-template mat-tab-label>\n <ion-label [innerHTML]=\"$secondTabTitle | async\"></ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n <p>A second tab</p>\n\n <p *ngIf=\"showOtherLinks\">\n Navigate to :\n <a [routerLink]=\"childPath + '/1'\">{{ childPath }}/1</a>\n <br />\n Navigate to :\n <a [routerLink]=\"childPath + '/2'\">{{ childPath }}/2</a>\n </p>\n\n <p>\n <ion-button (click)=\"changeSecondTabTitle($event)\">Change tab label</ion-button>\n </p>\n </div>\n </mat-tab>\n\n <!-- TAB: 3 -->\n <mat-tab\n [label]=\"thirdTabTitle\"\n class=\"ion-padding\"\n [disabled]=\"!showThirdTab && !toggleThird.checked\"\n appSubMenuTab\n [subMenuIcon]=\"{ icon: 'none' }\"\n >\n <ng-template mat-tab-label>\n <ion-label>{{ thirdTabTitle }}</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">A third tab</div>\n </mat-tab>\n\n <!-- TAB: 4 -->\n <mat-tab appSubMenuTab [subMenuIcon]=\"{ icon: 'person' }\" label=\"Sub Tab\" class=\"ion-padding\">\n <ng-template mat-tab-label>\n <ion-label>Sub Tab</ion-label>\n </ng-template>\n\n <mat-tab-group #subTabGroup [(selectedIndex)]=\"subSelectedTabIndex\" (selectedTabChange)=\"onTabChange($event, 'subtab')\"\n class=\"mat-mdc-tab-disabled-hidden\"\n dynamicHeight>\n <mat-tab\n label=\"Sub1\"\n class=\"ion-padding\"\n >\n <ng-template mat-tab-label>\n <ion-label>Sub1</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n <p>First SubTab</p>\n </div>\n </mat-tab>\n\n <mat-tab\n label=\"Sub2\"\n class=\"ion-padding\"\n >\n <ng-template mat-tab-label>\n <ion-label>Sub2</ion-label>\n </ng-template>\n\n <div class=\"ion-padding\">\n <p>Second SubTab</p>\n </div>\n </mat-tab>\n </mat-tab-group>\n </mat-tab>\n </mat-tab-group>\n</ion-content>\n", styles: [".menu-item{padding-left:0 px}\n"] }]
147
- }], ctorParameters: () => [{ type: i1.MenuService }], propDecorators: { subSelectedTabIndex: [{
149
+ }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.NavController }, { type: i2.AlertController }, { type: i3.TranslateService }, { type: i4.MenuService }], propDecorators: { subSelectedTabIndex: [{
148
150
  type: Input
149
151
  }], subSelectedTabIndexChange: [{
150
152
  type: Output
@@ -152,4 +154,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
152
154
  type: ViewChild,
153
155
  args: ['subTabGroup', { static: true }]
154
156
  }] } });
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS50ZXN0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL21lbnUvdGVzdGluZy9tZW51LnRlc3RpbmcudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvbWVudS90ZXN0aW5nL21lbnUudGVzdGluZy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXRELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7Ozs7O0FBT2xFLE1BQU0sT0FBTyxlQUFnQixTQUFRLFlBQVk7SUFrQ3pCO0lBakNaLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQztJQUM5QixTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ2YsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUNuQixVQUFVLEdBQVcsSUFBSSxDQUFDO0lBQzFCLElBQUksR0FBVyxJQUFJLENBQUM7SUFDcEIsY0FBYyxHQUFHLElBQUksQ0FBQztJQUN0QixZQUFZLEdBQUcsS0FBSyxDQUFDO0lBRXJCLE1BQU0sR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO0lBQy9CLGVBQWUsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO0lBQ3hDLG9CQUFvQixHQUFHLENBQUMsQ0FBQztJQUVuQyxXQUFXLENBQVM7SUFFcEIsSUFBYSxtQkFBbUIsQ0FBQyxLQUFhO1FBQzVDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBQ0QsSUFBSSxtQkFBbUI7UUFDckIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUM7SUFDbkMsQ0FBQztJQUVrQix5QkFBeUIsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBRTlCLFdBQVcsQ0FBYztJQUVyRSxJQUFjLEtBQUssQ0FBQyxLQUFhO1FBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFjLGNBQWMsQ0FBQyxLQUFhO1FBQ3hDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxZQUFzQixXQUF3QjtRQUM1QyxLQUFLLENBQUM7WUFDSixRQUFRLEVBQUUsQ0FBQztTQUNaLENBQUMsQ0FBQztRQUhpQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUk5QyxDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxlQUFlLENBQUMsQ0FBQztRQUVoRCxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELGVBQWU7UUFDYixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxXQUFXO1FBQ1QsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxlQUFlLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsSUFBSSxDQUFDLEVBQVcsRUFBRSxPQUFhO1FBQzdCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQXdCLEVBQUUsT0FBWTtRQUN6QyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFlO1FBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLE9BQU8sSUFBSSxNQUFNLENBQUM7UUFDMUQsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELG9CQUFvQixDQUFDLEtBQWU7UUFDbEMsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsY0FBYyxHQUFHLFVBQVUsSUFBSSxxQkFBcUIsQ0FBQztJQUM1RCxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQWU7UUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUM7WUFDOUIsS0FBSyxFQUFFLE1BQU07WUFDYixVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDckIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTztZQUN6QixjQUFjO1NBQ2YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELDBCQUEwQixDQUFDLEtBQWUsRUFBRSxNQUFnQjtRQUMxRCxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQztZQUM5QixLQUFLLEVBQUUsTUFBTTtZQUNiLFVBQVUsRUFBRSxjQUFjO1lBQzFCLElBQUksRUFBRSxtQkFBbUI7WUFDekIsTUFBTSxFQUFFLFNBQVMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDO1NBQ2pDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFUyxVQUFVLENBQUMsS0FBYztRQUNqQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBQ1MsbUJBQW1CO1FBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBQ1MsS0FBSyxDQUFDLFdBQVc7UUFDekIsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQztRQUMvQixJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQztRQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsY0FBYyxDQUFDO1FBQzdDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7UUFDdkMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUNoRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVTLHVCQUF1QjtRQUMvQixPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFUyxlQUFlO1FBQ3ZCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFUyxLQUFLLENBQUMsWUFBWTtRQUMxQixPQUFPLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsc0JBQXNCLENBQUMsS0FBYTtRQUNsQyxZQUFZO1FBQ1osSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDZCxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ1osQ0FBQzthQUFNLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckMsT0FBTyxDQUFDLElBQUksQ0FBQyxrQ0FBa0MsS0FBSyxrQkFBa0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzlGLEtBQUssR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUM7UUFDcEMsQ0FBQztRQUVELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDbEMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUzQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7WUFDdkMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BCLGdEQUFnRDtZQUNoRCxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMxRCxDQUFDO0lBQ0gsQ0FBQzt3R0F0SlUsZUFBZTs0RkFBZixlQUFlLHNVQ2I1QiwwcklBc0lBOzs0RkR6SGEsZUFBZTtrQkFMM0IsU0FBUzsrQkFDRSxrQkFBa0I7Z0ZBbUJmLG1CQUFtQjtzQkFBL0IsS0FBSztnQkFPYSx5QkFBeUI7c0JBQTNDLE1BQU07Z0JBRXFDLFdBQVc7c0JBQXRELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNZW51U2VydmljZSB9IGZyb20gJy4uL21lbnUuc2VydmljZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEYXRlVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZGF0ZXMnO1xuaW1wb3J0IHsgdG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBNYXRUYWJHcm91cCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xuaW1wb3J0IHsgQXBwVGFiRWRpdG9yIH0gZnJvbSAnLi4vLi4vZm9ybS9lbnRpdHkvdGFiLWVkaXRvci5jbGFzcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC10ZXN0aW5nLW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVudS50ZXN0aW5nLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tZW51LnRlc3Rpbmcuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBNZW51VGVzdGluZ1BhZ2UgZXh0ZW5kcyBBcHBUYWJFZGl0b3IgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByb3RlY3RlZCBsb2dQcmVmaXggPSAnW21lbnUtdGVzdGluZ10gJztcbiAgcHJvdGVjdGVkIGNoaWxkUGF0aCA9ICcnO1xuICBwcm90ZWN0ZWQgdGhpcmRUYWJUaXRsZSA9ICcnO1xuICBwcm90ZWN0ZWQgcGFyZW50UGF0aDogc3RyaW5nID0gbnVsbDtcbiAgcHJvdGVjdGVkIHBhdGg6IHN0cmluZyA9IG51bGw7XG4gIHByb3RlY3RlZCBzaG93T3RoZXJMaW5rcyA9IHRydWU7XG4gIHByb3RlY3RlZCBzaG93VGhpcmRUYWIgPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgJHRpdGxlID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBwcm90ZWN0ZWQgJHNlY29uZFRhYlRpdGxlID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBwcm90ZWN0ZWQgX3N1YlNlbGVjdGVkVGFiSW5kZXggPSAwO1xuXG4gIHN1YlRhYkNvdW50OiBudW1iZXI7XG5cbiAgQElucHV0KCkgc2V0IHN1YlNlbGVjdGVkVGFiSW5kZXgodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuc2V0U3ViU2VsZWN0ZWRUYWJJbmRleCh2YWx1ZSk7XG4gIH1cbiAgZ2V0IHN1YlNlbGVjdGVkVGFiSW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fc3ViU2VsZWN0ZWRUYWJJbmRleDtcbiAgfVxuXG4gIEBPdXRwdXQoKSByZWFkb25seSBzdWJTZWxlY3RlZFRhYkluZGV4Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgQFZpZXdDaGlsZCgnc3ViVGFiR3JvdXAnLCB7IHN0YXRpYzogdHJ1ZSB9KSBzdWJUYWJHcm91cDogTWF0VGFiR3JvdXA7XG5cbiAgcHJvdGVjdGVkIHNldCB0aXRsZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy4kdGl0bGUubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0IHNlY29uZFRhYlRpdGxlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLiRzZWNvbmRUYWJUaXRsZS5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBtZW51U2VydmljZTogTWVudVNlcnZpY2UpIHtcbiAgICBzdXBlcih7XG4gICAgICB0YWJDb3VudDogNCxcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5sb2dQcmVmaXh9IEluaXQgcGFnZS4uLmApO1xuXG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICB0aGlzLmluaXRTdWJNZW51KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5sb2dQcmVmaXh9RGVzdHJveWluZy4uLmApO1xuICB9XG5cbiAgbG9hZChpZD86IG51bWJlciwgb3B0aW9ucz86IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgfVxuXG4gIGdldCBpc05ld0RhdGEoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmVsb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHNhdmUoZXZlbnQ6IEV2ZW50IHwgdW5kZWZpbmVkLCBvcHRpb25zOiBhbnkpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcbiAgfVxuXG4gIGNoYW5nZVRpdGxlKGV2ZW50PzogVUlFdmVudCkge1xuICAgIHRoaXMudGl0bGUgPSAnJztcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IHRpbWUgPSBEYXRlVXRpbHMubW9tZW50KCkuZm9ybWF0KCdISDptbTpzcycpO1xuICAgICAgdGhpcy50aXRsZSA9IGAke3RoaXMuZ2V0RGVmYXVsdFRpdGxlKCl9IDxiPiR7dGltZX08L2I+YDtcbiAgICB9LCAyMDAwKTtcbiAgfVxuXG4gIGNoYW5nZVNlY29uZFRhYlRpdGxlKGV2ZW50PzogVUlFdmVudCkge1xuICAgIGNvbnN0IHRpbWUgPSBEYXRlVXRpbHMubW9tZW50KCkuZm9ybWF0KCdISDptbTpzcycpO1xuICAgIHRoaXMuc2Vjb25kVGFiVGl0bGUgPSBgPHNtYWxsPiR7dGltZX08YnIvPjwvc21hbGw+U2Vjb25kYDtcbiAgfVxuXG4gIGFkZFN1Yk1lbnVJdGVtKGV2ZW50PzogVUlFdmVudCkge1xuICAgIHRoaXMubWVudVNlcnZpY2UuYWRkU3ViTWVudUl0ZW0oe1xuICAgICAgdGl0bGU6ICdGYWtlJyxcbiAgICAgIHBhcmVudFBhdGg6IHRoaXMucGF0aCxcbiAgICAgIHBhdGg6IHRoaXMucGF0aCArICcvZmFrZScsXG4gICAgICAvL3Bpbm5lZDogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgYWRkT3V0c2lkZVJvdXRlU3ViTWVudUl0ZW0oZXZlbnQ/OiBVSUV2ZW50LCBwaW5uZWQ/OiBib29sZWFuKSB7XG4gICAgdGhpcy5tZW51U2VydmljZS5hZGRTdWJNZW51SXRlbSh7XG4gICAgICB0aXRsZTogJ0Zha2UnLFxuICAgICAgcGFyZW50UGF0aDogJy9hZG1pbi91c2VycycsXG4gICAgICBwYXRoOiAnL2FkbWluL3VzZXJzL2Zha2UnLFxuICAgICAgcGlubmVkOiB0b0Jvb2xlYW4ocGlubmVkLCBmYWxzZSksXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZW5hYmxlTWVudSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMubWVudVNlcnZpY2UuZW5hYmxlKHZhbHVlKTtcbiAgfVxuICBwcm90ZWN0ZWQgdG9nZ2xlU3BsaXRQYW5lV2hlbigpIHtcbiAgICB0aGlzLm1lbnVTZXJ2aWNlLnRvZ2dsZVNwbGl0UGFuZVdoZW4oKTtcbiAgfVxuICBwcm90ZWN0ZWQgYXN5bmMgaW5pdFN1Yk1lbnUoKSB7XG4gICAgdGhpcy50aXRsZSA9IGF3YWl0IHRoaXMuY29tcHV0ZVRpdGxlKCk7XG4gICAgdGhpcy5zZWNvbmRUYWJUaXRsZSA9ICdPdGhlcnMnO1xuICAgIHRoaXMudGhpcmRUYWJUaXRsZSA9ICdUaGlyZCc7XG4gICAgdGhpcy5wYXJlbnRQYXRoID0gJy90ZXN0aW5nJztcbiAgICB0aGlzLnBhdGggPSB0aGlzLnBhcmVudFBhdGggKyAnL3NoYXJlZC9tZW51JztcbiAgICB0aGlzLmNoaWxkUGF0aCA9IHRoaXMucGF0aCArICcvb3RoZXJzJztcbiAgICBjb25zb2xlLmRlYnVnKGAke3RoaXMubG9nUHJlZml4fSBTZXR1cCB3aXRoYCwgeyBwYXRoOiB0aGlzLnBhdGgsIHBhcmVudFBhdGg6IHRoaXMucGFyZW50UGF0aCB9KTtcbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEZpcnN0SW52YWxpZFRhYkluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RGVmYXVsdFRpdGxlKCkge1xuICAgIHJldHVybiAnTWVudSc7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgY29tcHV0ZVRpdGxlKCkge1xuICAgIHJldHVybiB0aGlzLmdldERlZmF1bHRUaXRsZSgpO1xuICB9XG5cbiAgc2V0U3ViU2VsZWN0ZWRUYWJJbmRleCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgLy8gRml4IHZhbHVlXG4gICAgaWYgKHZhbHVlIDwgMCkge1xuICAgICAgdmFsdWUgPSAwO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgPiB0aGlzLnRhYkNvdW50IC0gMSkge1xuICAgICAgY29uc29sZS53YXJuKGBbbWVudS1vdGhlcl0gSW52YWxpZCB0YWIgaW5kZXggJHt2YWx1ZX0uIE1heCB2YWx1ZSBpcyAke3RoaXMuc3ViVGFiQ291bnQgLSAxfWApO1xuICAgICAgdmFsdWUgPSB0aGlzLl9zdWJTZWxlY3RlZFRhYkluZGV4O1xuICAgIH1cblxuICAgIHRoaXMuX3N1YlNlbGVjdGVkVGFiSW5kZXggPSB2YWx1ZTtcbiAgICB0aGlzLnN1YlNlbGVjdGVkVGFiSW5kZXhDaGFuZ2UubmV4dCh2YWx1ZSk7XG5cbiAgICBpZiAodGhpcy5zdWJUYWJHcm91cCkge1xuICAgICAgdGhpcy5zdWJUYWJHcm91cC5zZWxlY3RlZEluZGV4ID0gdmFsdWU7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgICAgLy8gV2FpdCB0YWIgY2hhbmdlIGluIFVJLCBiZWZvcmUgcmVhbGlnbiBpbmsgdGFiXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc3ViVGFiR3JvdXAucmVhbGlnbklua0JhcigpLCAyMDApO1xuICAgIH1cbiAgfVxufVxuIiwiPGFwcC10b29sYmFyIFtkZWZhdWx0QmFja0hyZWZdPVwicGFyZW50UGF0aFwiPlxuICA8aW9uLXRpdGxlIFtpbm5lckhUTUxdPVwiJHRpdGxlIHwgYXN5bmNcIj48L2lvbi10aXRsZT5cbjwvYXBwLXRvb2xiYXI+XG5cbjxpb24tY29udGVudD5cbiAgPG1hdC10YWItZ3JvdXAgI3RhYkdyb3VwIFsoc2VsZWN0ZWRJbmRleCldPVwic2VsZWN0ZWRUYWJJbmRleFwiIChzZWxlY3RlZFRhYkNoYW5nZSk9XCJvblRhYkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXQtbWRjLXRhYi1kaXNhYmxlZC1oaWRkZW5cIlxuICAgICAgICAgICAgICAgICBkeW5hbWljSGVpZ2h0PlxuICAgIDwhLS0gVEFCOiAxIC0tPlxuICAgIDxtYXQtdGFiXG4gICAgICBsYWJlbD1cIkRldGFpbHNcIlxuICAgICAgY2xhc3M9XCJpb24tcGFkZGluZ1wiXG4gICAgICBhcHBTdWJNZW51VGFiXG4gICAgICBbc3ViTWVudVRpdGxlXT1cIigkdGl0bGUgfCBhc3luYykgfHwgJydcIlxuICAgICAgW3BhcmVudFBhdGhdPVwicGFyZW50UGF0aFwiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlIG1hdC10YWItbGFiZWw+XG4gICAgICAgIDxpb24tbGFiZWw+RGV0YWlsczwvaW9uLWxhYmVsPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPGRpdiBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gICAgICAgIDxwPkEgZmlyc3QgdGFiPC9wPlxuXG4gICAgICAgIDxwIFtjbGFzcy5jZGstdmlzdWFsbHktaGlkZGVuXT1cInNob3dUaGlyZFRhYlwiPlxuICAgICAgICAgIDxpb24tdG9nZ2xlICN0b2dnbGVUaGlyZD5Ub2dnbGUgVGhpcmQgVGFiPC9pb24tdG9nZ2xlPlxuICAgICAgICA8L3A+XG5cbiAgICAgICAgPHA+XG4gICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImNoYW5nZVRpdGxlKCRldmVudClcIj5DaGFuZ2UgcGFnZSB0aXRsZTwvaW9uLWJ1dHRvbj5cblxuICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJhZGRTdWJNZW51SXRlbSgkZXZlbnQpXCI+QWRkIHN1YiBtZW51IG90aGVyIDM8L2lvbi1idXR0b24+XG5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiYWRkT3V0c2lkZVJvdXRlU3ViTWVudUl0ZW0oJGV2ZW50LCB0cnVlKVwiPlxuICAgICAgICAgICAgQWRkIHN1YiBtZW51IChvdXRzaWRlIHJvdXRlKSAtIHBpbm5lZFxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJhZGRPdXRzaWRlUm91dGVTdWJNZW51SXRlbSgkZXZlbnQsIGZhbHNlKVwiPlxuICAgICAgICAgICAgQWRkIHN1YiBtZW51IChvdXRzaWRlIHJvdXRlKSAtIG5vdCBwaW5uZWRcbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIDwvcD5cblxuICAgICAgICA8cD5cbiAgICAgICAgICAmbmJzcDsmbmJzcDtcbiAgICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiZW5hYmxlTWVudShmYWxzZSlcIiAqbmdJZj1cIm1lbnVTZXJ2aWNlLmVuYWJsZWQgfCBhc3luY1wiPkRpc2FibGUgbWVudTwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiZW5hYmxlTWVudSh0cnVlKVwiICpuZ0lmPVwiKG1lbnVTZXJ2aWNlLmVuYWJsZWQgfCBhc3luYykgIT09IHRydWVcIj5FbmFibGUgbWVudTwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwidG9nZ2xlU3BsaXRQYW5lV2hlbigpXCIgW2Rpc2FibGVkXT1cIihtZW51U2VydmljZS5lbmFibGVkIHwgYXN5bmMpICE9PSB0cnVlXCI+XG4gICAgICAgICAgICBUb2dnbGUgc3BsaXQgcGFuZVxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9tYXQtdGFiPlxuXG4gICAgPCEtLSBUQUI6IDIgLS0+XG4gICAgPG1hdC10YWJcbiAgICAgIGxhYmVsPVwiU2Vjb25kXCJcbiAgICAgIGNsYXNzPVwiaW9uLXBhZGRpbmdcIlxuICAgICAgYXBwU3ViTWVudVRhYlxuICAgICAgW3N1Yk1lbnVJY29uXT1cInsgaWNvbjogJ3NldHRpbmdzJyB9XCJcbiAgICAgIFtzdWJNZW51VGl0bGVdPVwiJHNlY29uZFRhYlRpdGxlIHwgYXN5bmNcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZSBtYXQtdGFiLWxhYmVsPlxuICAgICAgICA8aW9uLWxhYmVsIFtpbm5lckhUTUxdPVwiJHNlY29uZFRhYlRpdGxlIHwgYXN5bmNcIj48L2lvbi1sYWJlbD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgICA8cD5BIHNlY29uZCB0YWI8L3A+XG5cbiAgICAgICAgPHAgKm5nSWY9XCJzaG93T3RoZXJMaW5rc1wiPlxuICAgICAgICAgIE5hdmlnYXRlIHRvIDpcbiAgICAgICAgICA8YSBbcm91dGVyTGlua109XCJjaGlsZFBhdGggKyAnLzEnXCI+e3sgY2hpbGRQYXRoIH19LzE8L2E+XG4gICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgTmF2aWdhdGUgdG8gOlxuICAgICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cImNoaWxkUGF0aCArICcvMidcIj57eyBjaGlsZFBhdGggfX0vMjwvYT5cbiAgICAgICAgPC9wPlxuXG4gICAgICAgIDxwPlxuICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJjaGFuZ2VTZWNvbmRUYWJUaXRsZSgkZXZlbnQpXCI+Q2hhbmdlIHRhYiBsYWJlbDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9tYXQtdGFiPlxuXG4gICAgPCEtLSBUQUI6IDMgLS0+XG4gICAgPG1hdC10YWJcbiAgICAgIFtsYWJlbF09XCJ0aGlyZFRhYlRpdGxlXCJcbiAgICAgIGNsYXNzPVwiaW9uLXBhZGRpbmdcIlxuICAgICAgW2Rpc2FibGVkXT1cIiFzaG93VGhpcmRUYWIgJiYgIXRvZ2dsZVRoaXJkLmNoZWNrZWRcIlxuICAgICAgYXBwU3ViTWVudVRhYlxuICAgICAgW3N1Yk1lbnVJY29uXT1cInsgaWNvbjogJ25vbmUnIH1cIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZSBtYXQtdGFiLWxhYmVsPlxuICAgICAgICA8aW9uLWxhYmVsPnt7IHRoaXJkVGFiVGl0bGUgfX08L2lvbi1sYWJlbD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJpb24tcGFkZGluZ1wiPkEgdGhpcmQgdGFiPC9kaXY+XG4gICAgPC9tYXQtdGFiPlxuXG4gICAgPCEtLSBUQUI6IDQgLS0+XG4gICAgPG1hdC10YWIgYXBwU3ViTWVudVRhYiBbc3ViTWVudUljb25dPVwieyBpY29uOiAncGVyc29uJyB9XCIgbGFiZWw9XCJTdWIgVGFiXCIgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgPG5nLXRlbXBsYXRlIG1hdC10YWItbGFiZWw+XG4gICAgICAgIDxpb24tbGFiZWw+U3ViIFRhYjwvaW9uLWxhYmVsPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPG1hdC10YWItZ3JvdXAgI3N1YlRhYkdyb3VwIFsoc2VsZWN0ZWRJbmRleCldPVwic3ViU2VsZWN0ZWRUYWJJbmRleFwiIChzZWxlY3RlZFRhYkNoYW5nZSk9XCJvblRhYkNoYW5nZSgkZXZlbnQsICdzdWJ0YWInKVwiXG4gICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdC1tZGMtdGFiLWRpc2FibGVkLWhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgICBkeW5hbWljSGVpZ2h0PlxuICAgICAgICA8bWF0LXRhYlxuICAgICAgICAgICAgbGFiZWw9XCJTdWIxXCJcbiAgICAgICAgICAgIGNsYXNzPVwiaW9uLXBhZGRpbmdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdC10YWItbGFiZWw+XG4gICAgICAgICAgICAgIDxpb24tbGFiZWw+U3ViMTwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gICAgICAgICAgICAgIDxwPkZpcnN0IFN1YlRhYjwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L21hdC10YWI+XG5cbiAgICAgICAgPG1hdC10YWJcbiAgICAgICAgICAgIGxhYmVsPVwiU3ViMlwiXG4gICAgICAgICAgICBjbGFzcz1cImlvbi1wYWRkaW5nXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXQtdGFiLWxhYmVsPlxuICAgICAgICAgICAgICA8aW9uLWxhYmVsPlN1YjI8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgICAgICAgICA8cD5TZWNvbmQgU3ViVGFiPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICAgIDwvbWF0LXRhYi1ncm91cD5cbiAgICA8L21hdC10YWI+XG4gIDwvbWF0LXRhYi1ncm91cD5cbjwvaW9uLWNvbnRlbnQ+XG4iXX0=
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS50ZXN0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL21lbnUvdGVzdGluZy9tZW51LnRlc3RpbmcudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvbWVudS90ZXN0aW5nL21lbnUudGVzdGluZy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLcEgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXRELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7Ozs7OztBQU9sRSxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxZQUFZO0lBd0NuQztJQXZDRixTQUFTLEdBQUcsaUJBQWlCLENBQUM7SUFDOUIsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUNmLGFBQWEsR0FBRyxFQUFFLENBQUM7SUFDbkIsVUFBVSxHQUFXLElBQUksQ0FBQztJQUMxQixJQUFJLEdBQVcsSUFBSSxDQUFDO0lBQ3BCLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDdEIsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUVyQixNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztJQUMvQixlQUFlLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztJQUN4QyxvQkFBb0IsR0FBRyxDQUFDLENBQUM7SUFFbkMsV0FBVyxDQUFTO0lBRXBCLElBQWEsbUJBQW1CLENBQUMsS0FBYTtRQUM1QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FB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S0FBYTtRQUNsQyxZQUFZO1FBQ1osSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDZCxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ1osQ0FBQzthQUFNLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckMsT0FBTyxDQUFDLElBQUksQ0FBQyxrQ0FBa0MsS0FBSyxrQkFBa0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzlGLEtBQUssR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUM7UUFDcEMsQ0FBQztRQUVELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDbEMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUzQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7WUFDdkMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BCLGdEQUFnRDtZQUNoRCxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMxRCxDQUFDO0lBQ0gsQ0FBQzt3R0E3SlUsZUFBZTs0RkFBZixlQUFlLHNVQ2hCNUIsMHJJQXNJQTs7NEZEdEhhLGVBQWU7a0JBTDNCLFNBQVM7K0JBQ0Usa0JBQWtCOzJOQW1CZixtQkFBbUI7c0JBQS9CLEtBQUs7Z0JBT2EseUJBQXlCO3NCQUEzQyxNQUFNO2dCQUVxQyxXQUFXO3NCQUF0RCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWVudVNlcnZpY2UgfSBmcm9tICcuLi9tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBbGVydENvbnRyb2xsZXIsIE5hdkNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEYXRlVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZGF0ZXMnO1xuaW1wb3J0IHsgdG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBNYXRUYWJHcm91cCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xuaW1wb3J0IHsgQXBwVGFiRWRpdG9yIH0gZnJvbSAnLi4vLi4vZm9ybS9lbnRpdHkvdGFiLWVkaXRvci5jbGFzcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC10ZXN0aW5nLW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVudS50ZXN0aW5nLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tZW51LnRlc3Rpbmcuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBNZW51VGVzdGluZ1BhZ2UgZXh0ZW5kcyBBcHBUYWJFZGl0b3IgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByb3RlY3RlZCBsb2dQcmVmaXggPSAnW21lbnUtdGVzdGluZ10gJztcbiAgcHJvdGVjdGVkIGNoaWxkUGF0aCA9ICcnO1xuICBwcm90ZWN0ZWQgdGhpcmRUYWJUaXRsZSA9ICcnO1xuICBwcm90ZWN0ZWQgcGFyZW50UGF0aDogc3RyaW5nID0gbnVsbDtcbiAgcHJvdGVjdGVkIHBhdGg6IHN0cmluZyA9IG51bGw7XG4gIHByb3RlY3RlZCBzaG93T3RoZXJMaW5rcyA9IHRydWU7XG4gIHByb3RlY3RlZCBzaG93VGhpcmRUYWIgPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgJHRpdGxlID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBwcm90ZWN0ZWQgJHNlY29uZFRhYlRpdGxlID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBwcm90ZWN0ZWQgX3N1YlNlbGVjdGVkVGFiSW5kZXggPSAwO1xuXG4gIHN1YlRhYkNvdW50OiBudW1iZXI7XG5cbiAgQElucHV0KCkgc2V0IHN1YlNlbGVjdGVkVGFiSW5kZXgodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuc2V0U3ViU2VsZWN0ZWRUYWJJbmRleCh2YWx1ZSk7XG4gIH1cbiAgZ2V0IHN1YlNlbGVjdGVkVGFiSW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fc3ViU2VsZWN0ZWRUYWJJbmRleDtcbiAgfVxuXG4gIEBPdXRwdXQoKSByZWFkb25seSBzdWJTZWxlY3RlZFRhYkluZGV4Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgQFZpZXdDaGlsZCgnc3ViVGFiR3JvdXAnLCB7IHN0YXRpYzogdHJ1ZSB9KSBzdWJUYWJHcm91cDogTWF0VGFiR3JvdXA7XG5cbiAgcHJvdGVjdGVkIHNldCB0aXRsZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy4kdGl0bGUubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0IHNlY29uZFRhYlRpdGxlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLiRzZWNvbmRUYWJUaXRsZS5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgLy8gTW9kYWwgZWRpdG9yIGdpdmUgJ251bGwnXG4gICAgcm91dGVyOiBSb3V0ZXIsXG4gICAgbmF2Q29udHJvbGxlcjogTmF2Q29udHJvbGxlcixcbiAgICBhbGVydEN0cmw6IEFsZXJ0Q29udHJvbGxlcixcbiAgICB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG1lbnVTZXJ2aWNlOiBNZW51U2VydmljZVxuICApIHtcbiAgICBzdXBlcihyb3V0ZSwgcm91dGVyLCBuYXZDb250cm9sbGVyLCBhbGVydEN0cmwsIHRyYW5zbGF0ZSwge1xuICAgICAgdGFiQ291bnQ6IDQsXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zb2xlLmRlYnVnKGAke3RoaXMubG9nUHJlZml4fSBJbml0IHBhZ2UuLi5gKTtcblxuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgdGhpcy5pbml0U3ViTWVudSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICBjb25zb2xlLmRlYnVnKGAke3RoaXMubG9nUHJlZml4fURlc3Ryb3lpbmcuLi5gKTtcbiAgfVxuXG4gIGxvYWQoaWQ/OiBudW1iZXIsIG9wdGlvbnM/OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gIH1cblxuICBnZXQgaXNOZXdEYXRhKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJlbG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gIH1cblxuICBzYXZlKGV2ZW50OiBFdmVudCB8IHVuZGVmaW5lZCwgb3B0aW9uczogYW55KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSk7XG4gIH1cblxuICBjaGFuZ2VUaXRsZShldmVudD86IFVJRXZlbnQpIHtcbiAgICB0aGlzLnRpdGxlID0gJyc7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCB0aW1lID0gRGF0ZVV0aWxzLm1vbWVudCgpLmZvcm1hdCgnSEg6bW06c3MnKTtcbiAgICAgIHRoaXMudGl0bGUgPSBgJHt0aGlzLmdldERlZmF1bHRUaXRsZSgpfSA8Yj4ke3RpbWV9PC9iPmA7XG4gICAgfSwgMjAwMCk7XG4gIH1cblxuICBjaGFuZ2VTZWNvbmRUYWJUaXRsZShldmVudD86IFVJRXZlbnQpIHtcbiAgICBjb25zdCB0aW1lID0gRGF0ZVV0aWxzLm1vbWVudCgpLmZvcm1hdCgnSEg6bW06c3MnKTtcbiAgICB0aGlzLnNlY29uZFRhYlRpdGxlID0gYDxzbWFsbD4ke3RpbWV9PGJyLz48L3NtYWxsPlNlY29uZGA7XG4gIH1cblxuICBhZGRTdWJNZW51SXRlbShldmVudD86IFVJRXZlbnQpIHtcbiAgICB0aGlzLm1lbnVTZXJ2aWNlLmFkZFN1Yk1lbnVJdGVtKHtcbiAgICAgIHRpdGxlOiAnRmFrZScsXG4gICAgICBwYXJlbnRQYXRoOiB0aGlzLnBhdGgsXG4gICAgICBwYXRoOiB0aGlzLnBhdGggKyAnL2Zha2UnLFxuICAgICAgLy9waW5uZWQ6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGFkZE91dHNpZGVSb3V0ZVN1Yk1lbnVJdGVtKGV2ZW50PzogVUlFdmVudCwgcGlubmVkPzogYm9vbGVhbikge1xuICAgIHRoaXMubWVudVNlcnZpY2UuYWRkU3ViTWVudUl0ZW0oe1xuICAgICAgdGl0bGU6ICdGYWtlJyxcbiAgICAgIHBhcmVudFBhdGg6ICcvYWRtaW4vdXNlcnMnLFxuICAgICAgcGF0aDogJy9hZG1pbi91c2Vycy9mYWtlJyxcbiAgICAgIHBpbm5lZDogdG9Cb29sZWFuKHBpbm5lZCwgZmFsc2UpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGVuYWJsZU1lbnUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLm1lbnVTZXJ2aWNlLmVuYWJsZSh2YWx1ZSk7XG4gIH1cbiAgcHJvdGVjdGVkIHRvZ2dsZVNwbGl0UGFuZVdoZW4oKSB7XG4gICAgdGhpcy5tZW51U2VydmljZS50b2dnbGVTcGxpdFBhbmVXaGVuKCk7XG4gIH1cbiAgcHJvdGVjdGVkIGFzeW5jIGluaXRTdWJNZW51KCkge1xuICAgIHRoaXMudGl0bGUgPSBhd2FpdCB0aGlzLmNvbXB1dGVUaXRsZSgpO1xuICAgIHRoaXMuc2Vjb25kVGFiVGl0bGUgPSAnT3RoZXJzJztcbiAgICB0aGlzLnRoaXJkVGFiVGl0bGUgPSAnVGhpcmQnO1xuICAgIHRoaXMucGFyZW50UGF0aCA9ICcvdGVzdGluZyc7XG4gICAgdGhpcy5wYXRoID0gdGhpcy5wYXJlbnRQYXRoICsgJy9zaGFyZWQvbWVudSc7XG4gICAgdGhpcy5jaGlsZFBhdGggPSB0aGlzLnBhdGggKyAnL290aGVycyc7XG4gICAgY29uc29sZS5kZWJ1ZyhgJHt0aGlzLmxvZ1ByZWZpeH0gU2V0dXAgd2l0aGAsIHsgcGF0aDogdGhpcy5wYXRoLCBwYXJlbnRQYXRoOiB0aGlzLnBhcmVudFBhdGggfSk7XG4gICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRGaXJzdEludmFsaWRUYWJJbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldERlZmF1bHRUaXRsZSgpIHtcbiAgICByZXR1cm4gJ01lbnUnO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGNvbXB1dGVUaXRsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXREZWZhdWx0VGl0bGUoKTtcbiAgfVxuXG4gIHNldFN1YlNlbGVjdGVkVGFiSW5kZXgodmFsdWU6IG51bWJlcikge1xuICAgIC8vIEZpeCB2YWx1ZVxuICAgIGlmICh2YWx1ZSA8IDApIHtcbiAgICAgIHZhbHVlID0gMDtcbiAgICB9IGVsc2UgaWYgKHZhbHVlID4gdGhpcy50YWJDb3VudCAtIDEpIHtcbiAgICAgIGNvbnNvbGUud2FybihgW21lbnUtb3RoZXJdIEludmFsaWQgdGFiIGluZGV4ICR7dmFsdWV9LiBNYXggdmFsdWUgaXMgJHt0aGlzLnN1YlRhYkNvdW50IC0gMX1gKTtcbiAgICAgIHZhbHVlID0gdGhpcy5fc3ViU2VsZWN0ZWRUYWJJbmRleDtcbiAgICB9XG5cbiAgICB0aGlzLl9zdWJTZWxlY3RlZFRhYkluZGV4ID0gdmFsdWU7XG4gICAgdGhpcy5zdWJTZWxlY3RlZFRhYkluZGV4Q2hhbmdlLm5leHQodmFsdWUpO1xuXG4gICAgaWYgKHRoaXMuc3ViVGFiR3JvdXApIHtcbiAgICAgIHRoaXMuc3ViVGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9IHZhbHVlO1xuICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIC8vIFdhaXQgdGFiIGNoYW5nZSBpbiBVSSwgYmVmb3JlIHJlYWxpZ24gaW5rIHRhYlxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnN1YlRhYkdyb3VwLnJlYWxpZ25JbmtCYXIoKSwgMjAwKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxhcHAtdG9vbGJhciBbZGVmYXVsdEJhY2tIcmVmXT1cInBhcmVudFBhdGhcIj5cbiAgPGlvbi10aXRsZSBbaW5uZXJIVE1MXT1cIiR0aXRsZSB8IGFzeW5jXCI+PC9pb24tdGl0bGU+XG48L2FwcC10b29sYmFyPlxuXG48aW9uLWNvbnRlbnQ+XG4gIDxtYXQtdGFiLWdyb3VwICN0YWJHcm91cCBbKHNlbGVjdGVkSW5kZXgpXT1cInNlbGVjdGVkVGFiSW5kZXhcIiAoc2VsZWN0ZWRUYWJDaGFuZ2UpPVwib25UYWJDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0LW1kYy10YWItZGlzYWJsZWQtaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgZHluYW1pY0hlaWdodD5cbiAgICA8IS0tIFRBQjogMSAtLT5cbiAgICA8bWF0LXRhYlxuICAgICAgbGFiZWw9XCJEZXRhaWxzXCJcbiAgICAgIGNsYXNzPVwiaW9uLXBhZGRpbmdcIlxuICAgICAgYXBwU3ViTWVudVRhYlxuICAgICAgW3N1Yk1lbnVUaXRsZV09XCIoJHRpdGxlIHwgYXN5bmMpIHx8ICcnXCJcbiAgICAgIFtwYXJlbnRQYXRoXT1cInBhcmVudFBhdGhcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZSBtYXQtdGFiLWxhYmVsPlxuICAgICAgICA8aW9uLWxhYmVsPkRldGFpbHM8L2lvbi1sYWJlbD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgICA8cD5BIGZpcnN0IHRhYjwvcD5cblxuICAgICAgICA8cCBbY2xhc3MuY2RrLXZpc3VhbGx5LWhpZGRlbl09XCJzaG93VGhpcmRUYWJcIj5cbiAgICAgICAgICA8aW9uLXRvZ2dsZSAjdG9nZ2xlVGhpcmQ+VG9nZ2xlIFRoaXJkIFRhYjwvaW9uLXRvZ2dsZT5cbiAgICAgICAgPC9wPlxuXG4gICAgICAgIDxwPlxuICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJjaGFuZ2VUaXRsZSgkZXZlbnQpXCI+Q2hhbmdlIHBhZ2UgdGl0bGU8L2lvbi1idXR0b24+XG5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiYWRkU3ViTWVudUl0ZW0oJGV2ZW50KVwiPkFkZCBzdWIgbWVudSBvdGhlciAzPC9pb24tYnV0dG9uPlxuXG4gICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImFkZE91dHNpZGVSb3V0ZVN1Yk1lbnVJdGVtKCRldmVudCwgdHJ1ZSlcIj5cbiAgICAgICAgICAgIEFkZCBzdWIgbWVudSAob3V0c2lkZSByb3V0ZSkgLSBwaW5uZWRcbiAgICAgICAgICA8L2lvbi1idXR0b24+XG5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiYWRkT3V0c2lkZVJvdXRlU3ViTWVudUl0ZW0oJGV2ZW50LCBmYWxzZSlcIj5cbiAgICAgICAgICAgIEFkZCBzdWIgbWVudSAob3V0c2lkZSByb3V0ZSkgLSBub3QgcGlubmVkXG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L3A+XG5cbiAgICAgICAgPHA+XG4gICAgICAgICAgJm5ic3A7Jm5ic3A7XG4gICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImVuYWJsZU1lbnUoZmFsc2UpXCIgKm5nSWY9XCJtZW51U2VydmljZS5lbmFibGVkIHwgYXN5bmNcIj5EaXNhYmxlIG1lbnU8L2lvbi1idXR0b24+XG4gICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImVuYWJsZU1lbnUodHJ1ZSlcIiAqbmdJZj1cIihtZW51U2VydmljZS5lbmFibGVkIHwgYXN5bmMpICE9PSB0cnVlXCI+RW5hYmxlIG1lbnU8L2lvbi1idXR0b24+XG4gICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cInRvZ2dsZVNwbGl0UGFuZVdoZW4oKVwiIFtkaXNhYmxlZF09XCIobWVudVNlcnZpY2UuZW5hYmxlZCB8IGFzeW5jKSAhPT0gdHJ1ZVwiPlxuICAgICAgICAgICAgVG9nZ2xlIHNwbGl0IHBhbmVcbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvbWF0LXRhYj5cblxuICAgIDwhLS0gVEFCOiAyIC0tPlxuICAgIDxtYXQtdGFiXG4gICAgICBsYWJlbD1cIlNlY29uZFwiXG4gICAgICBjbGFzcz1cImlvbi1wYWRkaW5nXCJcbiAgICAgIGFwcFN1Yk1lbnVUYWJcbiAgICAgIFtzdWJNZW51SWNvbl09XCJ7IGljb246ICdzZXR0aW5ncycgfVwiXG4gICAgICBbc3ViTWVudVRpdGxlXT1cIiRzZWNvbmRUYWJUaXRsZSB8IGFzeW5jXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGUgbWF0LXRhYi1sYWJlbD5cbiAgICAgICAgPGlvbi1sYWJlbCBbaW5uZXJIVE1MXT1cIiRzZWNvbmRUYWJUaXRsZSB8IGFzeW5jXCI+PC9pb24tbGFiZWw+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgICAgPHA+QSBzZWNvbmQgdGFiPC9wPlxuXG4gICAgICAgIDxwICpuZ0lmPVwic2hvd090aGVyTGlua3NcIj5cbiAgICAgICAgICBOYXZpZ2F0ZSB0byA6XG4gICAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwiY2hpbGRQYXRoICsgJy8xJ1wiPnt7IGNoaWxkUGF0aCB9fS8xPC9hPlxuICAgICAgICAgIDxiciAvPlxuICAgICAgICAgIE5hdmlnYXRlIHRvIDpcbiAgICAgICAgICA8YSBbcm91dGVyTGlua109XCJjaGlsZFBhdGggKyAnLzInXCI+e3sgY2hpbGRQYXRoIH19LzI8L2E+XG4gICAgICAgIDwvcD5cblxuICAgICAgICA8cD5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiY2hhbmdlU2Vjb25kVGFiVGl0bGUoJGV2ZW50KVwiPkNoYW5nZSB0YWIgbGFiZWw8L2lvbi1idXR0b24+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvbWF0LXRhYj5cblxuICAgIDwhLS0gVEFCOiAzIC0tPlxuICAgIDxtYXQtdGFiXG4gICAgICBbbGFiZWxdPVwidGhpcmRUYWJUaXRsZVwiXG4gICAgICBjbGFzcz1cImlvbi1wYWRkaW5nXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhc2hvd1RoaXJkVGFiICYmICF0b2dnbGVUaGlyZC5jaGVja2VkXCJcbiAgICAgIGFwcFN1Yk1lbnVUYWJcbiAgICAgIFtzdWJNZW51SWNvbl09XCJ7IGljb246ICdub25lJyB9XCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGUgbWF0LXRhYi1sYWJlbD5cbiAgICAgICAgPGlvbi1sYWJlbD57eyB0aGlyZFRhYlRpdGxlIH19PC9pb24tbGFiZWw+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5BIHRoaXJkIHRhYjwvZGl2PlxuICAgIDwvbWF0LXRhYj5cblxuICAgIDwhLS0gVEFCOiA0IC0tPlxuICAgIDxtYXQtdGFiIGFwcFN1Yk1lbnVUYWIgW3N1Yk1lbnVJY29uXT1cInsgaWNvbjogJ3BlcnNvbicgfVwiIGxhYmVsPVwiU3ViIFRhYlwiIGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBtYXQtdGFiLWxhYmVsPlxuICAgICAgICA8aW9uLWxhYmVsPlN1YiBUYWI8L2lvbi1sYWJlbD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxtYXQtdGFiLWdyb3VwICNzdWJUYWJHcm91cCBbKHNlbGVjdGVkSW5kZXgpXT1cInN1YlNlbGVjdGVkVGFiSW5kZXhcIiAoc2VsZWN0ZWRUYWJDaGFuZ2UpPVwib25UYWJDaGFuZ2UoJGV2ZW50LCAnc3VidGFiJylcIlxuICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXQtbWRjLXRhYi1kaXNhYmxlZC1oaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICAgZHluYW1pY0hlaWdodD5cbiAgICAgICAgPG1hdC10YWJcbiAgICAgICAgICAgIGxhYmVsPVwiU3ViMVwiXG4gICAgICAgICAgICBjbGFzcz1cImlvbi1wYWRkaW5nXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXQtdGFiLWxhYmVsPlxuICAgICAgICAgICAgICA8aW9uLWxhYmVsPlN1YjE8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgICAgICAgICA8cD5GaXJzdCBTdWJUYWI8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9tYXQtdGFiPlxuXG4gICAgICAgIDxtYXQtdGFiXG4gICAgICAgICAgICBsYWJlbD1cIlN1YjJcIlxuICAgICAgICAgICAgY2xhc3M9XCJpb24tcGFkZGluZ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0LXRhYi1sYWJlbD5cbiAgICAgICAgICAgICAgPGlvbi1sYWJlbD5TdWIyPC9pb24tbGFiZWw+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgICAgICAgICAgPHA+U2Vjb25kIFN1YlRhYjwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L21hdC10YWI+XG4gICAgICA8L21hdC10YWItZ3JvdXA+XG4gICAgPC9tYXQtdGFiPlxuICA8L21hdC10YWItZ3JvdXA+XG48L2lvbi1jb250ZW50PlxuIl19
@@ -1,27 +1,33 @@
1
- import { booleanAttribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, inject, Input } from '@angular/core';
2
- import { ModalController, PopoverController } from '@ionic/angular';
1
+ import { booleanAttribute, ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Optional, } from '@angular/core';
3
2
  import { Peer } from '../services/model/peer.model';
4
3
  import { Subject, Subscription } from 'rxjs';
5
4
  import { fadeInAnimation } from '../../shared/material/material.animations';
6
- import { HttpClient } from '@angular/common/http';
7
5
  import { NetworkUtils } from '../services/network.utils';
8
6
  import { VersionUtils } from '../../shared/version/versions';
9
7
  import { ENVIRONMENT } from '../../../environments/environment.class';
10
8
  import { TextPopover } from '../form/text-popover/text-popover.component';
11
- import { TranslateService } from '@ngx-translate/core';
12
9
  import { isMobile } from '../../shared/platforms';
13
10
  import { Validators } from '@angular/forms';
14
11
  import { PEER_URL_REGEXP } from '../services/network.service';
15
12
  import { APP_LOGGING_SERVICE } from '../../shared/logging/logging-service.class';
16
13
  import * as i0 from "@angular/core";
17
- import * as i1 from "@angular/common";
18
- import * as i2 from "@ionic/angular";
19
- import * as i3 from "@ngx-translate/core";
20
- import * as i4 from "@rx-angular/template/for";
21
- import * as i5 from "@angular/material/icon";
22
- import * as i6 from "@angular/material/core";
23
- import * as i7 from "@angular/material/tooltip";
14
+ import * as i1 from "@ionic/angular";
15
+ import * as i2 from "@ngx-translate/core";
16
+ import * as i3 from "@angular/common/http";
17
+ import * as i4 from "@angular/common";
18
+ import * as i5 from "@rx-angular/template/for";
19
+ import * as i6 from "@angular/material/icon";
20
+ import * as i7 from "@angular/material/core";
21
+ import * as i8 from "@angular/material/tooltip";
22
+ import * as i9 from "../../../environments/environment.class";
24
23
  export class SelectPeerModal {
24
+ modalCtrl;
25
+ popoverController;
26
+ translate;
27
+ http;
28
+ cd;
29
+ environment;
30
+ loggingService;
25
31
  _subscription = new Subscription();
26
32
  _logger;
27
33
  loading = true;
@@ -34,18 +40,18 @@ export class SelectPeerModal {
34
40
  allowSelectDownPeer = true;
35
41
  showSetManuallyButton = true;
36
42
  onRefresh = new EventEmitter();
37
- modalCtrl = inject(ModalController);
38
- popoverController = inject(PopoverController);
39
- translate = inject(TranslateService);
40
- http = inject(HttpClient);
41
- cd = inject(ChangeDetectorRef);
42
- environment = inject(ENVIRONMENT);
43
- loggingService = inject(APP_LOGGING_SERVICE, { optional: true });
44
- constructor() {
43
+ constructor(modalCtrl, popoverController, translate, http, cd, environment, loggingService) {
44
+ this.modalCtrl = modalCtrl;
45
+ this.popoverController = popoverController;
46
+ this.translate = translate;
47
+ this.http = http;
48
+ this.cd = cd;
49
+ this.environment = environment;
50
+ this.loggingService = loggingService;
45
51
  this.mobile = isMobile(window);
46
- this._logger = this.loggingService?.getLogger('network-modal');
47
- this.peerMinVersion = this.environment.peerMinVersion;
48
- this.peerDefaultPrefix = this.environment.peerDefaultPrefix || 'https://';
52
+ this._logger = loggingService?.getLogger('network-modal');
53
+ this.peerMinVersion = environment.peerMinVersion;
54
+ this.peerDefaultPrefix = environment.peerDefaultPrefix || 'https://';
49
55
  }
50
56
  set peers(peers) {
51
57
  this._subscription.add(peers.subscribe((res) => this.refreshPeers(res)));
@@ -166,13 +172,21 @@ export class SelectPeerModal {
166
172
  markForCheck() {
167
173
  this.cd.markForCheck();
168
174
  }
169
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectPeerModal, deps: [], target: i0.ɵɵFactoryTarget.Component });
170
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: SelectPeerModal, selector: "select-peer-modal", inputs: { selectedPeer: "selectedPeer", canCancel: ["canCancel", "canCancel", booleanAttribute], allowSelectDownPeer: ["allowSelectDownPeer", "allowSelectDownPeer", booleanAttribute], showSetManuallyButton: ["showSetManuallyButton", "showSetManuallyButton", booleanAttribute], onRefresh: "onRefresh" }, ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"light\">\n <ion-buttons slot=\"start\">\n <ion-button (click)=\"cancel()\" *ngIf=\"canCancel\" visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n </ion-buttons>\n\n <ion-title>\n {{ 'NETWORK.PEER.SELECT_MODAL.TITLE' | translate }}\n </ion-title>\n\n <ion-buttons slot=\"end\">\n <!-- loader -->\n <ion-spinner *ngIf=\"loading; else endButtons\"></ion-spinner>\n\n <ng-template #endButtons>\n <!-- refresh button -->\n <ion-button\n *ngIf=\"onRefresh.observed\"\n [matTooltip]=\"'COMMON.BTN_REFRESH' | translate\"\n (click)=\"refresh($event)\"\n >\n <mat-icon slot=\"icon-only\">refresh</mat-icon>\n </ion-button>\n </ng-template>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content>\n <ion-list>\n <ion-list-header>\n <ion-label class=\"ion-text-wrap\">\n <p translate>NETWORK.PEER.SELECT_MODAL.HELP</p>\n </ion-label>\n </ion-list-header>\n\n <ion-item\n *rxFor=\"let peer of $peers\"\n (click)=\"selectPeer(peer)\"\n [class.selected]=\"selectedPeer && selectedPeer === peer.url\"\n tappable\n matRipple\n detail\n @fadeInAnimation\n >\n <!-- Peer is UP -->\n @if (peer.reachable) {\n <!-- icon -->\n <ion-avatar slot=\"start\">\n <ion-img [src]=\"peer.favicon || peer.url + '/api/favicon'\"></ion-img>\n </ion-avatar>\n\n <ion-grid>\n <ion-row class=\"ion-no-padding\">\n <ion-col class=\"ion-no-padding\">\n <ion-label class=\"ion-text-wrap\">\n <ion-text>\n <h3>{{ peer.hostAndPort }}{{ peer.path }}</h3>\n </ion-text>\n <ion-text color=\"primary\">\n <h4>{{ peer.label }}</h4>\n </ion-text>\n </ion-label>\n </ion-col>\n <ion-col class=\"ion-no-padding\">\n <ion-label class=\"ion-text-wrap ion-text-center\" color=\"medium\">\n <h3>{{ peer.softwareName }}</h3>\n <h4 *ngIf=\"!peerMinVersion || isCompatible(peer); else invalidVersion\">\n <small>v{{ peer.softwareVersion }}</small>\n </h4>\n <ng-template #invalidVersion>\n <ion-text\n color=\"danger\"\n [matTooltip]=\"\n 'NETWORK.PEER.SELECT_MODAL.NOT_COMPATIBLE_HELP' | translate: { version: peerMinVersion }\n \"\n >\n <h4 class=\"ion-color-danger\">\n <small>\n <mat-icon>warning</mat-icon>\n v{{ peer.softwareVersion }}\n </small>\n </h4>\n </ion-text>\n </ng-template>\n </ion-label>\n </ion-col>\n </ion-row>\n </ion-grid>\n } @else {\n <!-- Peer is DOWN -->\n <ion-icon slot=\"start\" name=\"desktop\" class=\"disabled ion-icon-avatar\"></ion-icon>\n\n <ion-label class=\"ion-text-wrap\">\n <ion-text color=\"medium\">\n <h3>{{ peer.hostAndPort }}{{ peer.path }}</h3>\n </ion-text>\n <ion-text color=\"danger\">\n <h4>\n <small><ion-icon size=\"small\" name=\"close-circle\"></ion-icon></small>\n <span translate>NETWORK.PEER.OFFLINE</span>\n </h4>\n </ion-text>\n </ion-label>\n }\n </ion-item>\n </ion-list>\n</ion-content>\n\n@if ((canCancel && !mobile) || showSetManuallyButton) {\n <ion-footer>\n <ion-toolbar>\n <ion-row class=\"ion-no-padding ion-text-nowrap\">\n <ion-col></ion-col>\n\n <!-- buttons -->\n @if (showSetManuallyButton) {\n <ion-col size=\"auto\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"clickSetManually($event)\">\n <ion-label translate>NETWORK.PEER.SELECT_MODAL.BTN_SET_MANUALLY</ion-label>\n </ion-button>\n </ion-col>\n }\n\n @if (canCancel) {\n <ion-col size=\"auto\" hidden-xs hidden-sm hidden-mobile>\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"cancel()\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n </ion-col>\n }\n </ion-row>\n </ion-toolbar>\n </ion-footer>\n}\n", styles: ["ion-item .ion-icon-avatar{font-size:40px;width:40px;height:40px}ion-item .ion-icon-avatar.disabled{color:rgba(var(--ion-color-medium-rgb),.7)}ion-item h4 ion-icon,ion-item h4 mat-icon{height:14px;width:14px;font-size:14px;line-height:14px}ion-item h4 small ion-icon,ion-item h4 small mat-icon{height:12px;width:12px;font-size:12px;line-height:12px}ion-item.selected{--ion-color-base: var(--ion-color-secondary100-contrast) !important;--ion-item-background: var(--ion-color-secondary100)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IonAvatar, selector: "ion-avatar" }, { kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i2.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonImg, selector: "ion-img", inputs: ["alt", "src"] }, { kind: "component", type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i2.IonListHeader, selector: "ion-list-header", inputs: ["color", "lines", "mode"] }, { kind: "component", type: i2.IonRow, selector: "ion-row" }, { kind: "component", type: i2.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: i2.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i3.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i4.RxFor, selector: "[rxFor][rxForOf]", inputs: ["rxForOf", "rxForTemplate", "rxForStrategy", "rxForParent", "rxForPatchZone", "rxForTrackBy", "rxForRenderCallback"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], animations: [fadeInAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush });
175
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectPeerModal, deps: [{ token: i1.ModalController }, { token: i1.PopoverController }, { token: i2.TranslateService }, { token: i3.HttpClient }, { token: i0.ChangeDetectorRef }, { token: ENVIRONMENT }, { token: APP_LOGGING_SERVICE, optional: true }], target: i0.ɵɵFactoryTarget.Component });
176
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: SelectPeerModal, selector: "select-peer-modal", inputs: { selectedPeer: "selectedPeer", canCancel: ["canCancel", "canCancel", booleanAttribute], allowSelectDownPeer: ["allowSelectDownPeer", "allowSelectDownPeer", booleanAttribute], showSetManuallyButton: ["showSetManuallyButton", "showSetManuallyButton", booleanAttribute], onRefresh: "onRefresh" }, ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"light\">\n <ion-buttons slot=\"start\">\n <ion-button (click)=\"cancel()\" *ngIf=\"canCancel\" visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n </ion-buttons>\n\n <ion-title>\n {{ 'NETWORK.PEER.SELECT_MODAL.TITLE' | translate }}\n </ion-title>\n\n <ion-buttons slot=\"end\">\n <!-- loader -->\n <ion-spinner *ngIf=\"loading; else endButtons\"></ion-spinner>\n\n <ng-template #endButtons>\n <!-- refresh button -->\n <ion-button\n *ngIf=\"onRefresh.observed\"\n [matTooltip]=\"'COMMON.BTN_REFRESH' | translate\"\n (click)=\"refresh($event)\"\n >\n <mat-icon slot=\"icon-only\">refresh</mat-icon>\n </ion-button>\n </ng-template>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content>\n <ion-list>\n <ion-list-header>\n <ion-label class=\"ion-text-wrap\">\n <p translate>NETWORK.PEER.SELECT_MODAL.HELP</p>\n </ion-label>\n </ion-list-header>\n\n <ion-item\n *rxFor=\"let peer of $peers\"\n (click)=\"selectPeer(peer)\"\n [class.selected]=\"selectedPeer && selectedPeer === peer.url\"\n tappable\n matRipple\n detail\n @fadeInAnimation\n >\n <!-- Peer is UP -->\n @if (peer.reachable) {\n <!-- icon -->\n <ion-avatar slot=\"start\">\n <ion-img [src]=\"peer.favicon || peer.url + '/api/favicon'\"></ion-img>\n </ion-avatar>\n\n <ion-grid>\n <ion-row class=\"ion-no-padding\">\n <ion-col class=\"ion-no-padding\">\n <ion-label class=\"ion-text-wrap\">\n <ion-text>\n <h3>{{ peer.hostAndPort }}{{ peer.path }}</h3>\n </ion-text>\n <ion-text color=\"primary\">\n <h4>{{ peer.label }}</h4>\n </ion-text>\n </ion-label>\n </ion-col>\n <ion-col class=\"ion-no-padding\">\n <ion-label class=\"ion-text-wrap ion-text-center\" color=\"medium\">\n <h3>{{ peer.softwareName }}</h3>\n <h4 *ngIf=\"!peerMinVersion || isCompatible(peer); else invalidVersion\">\n <small>v{{ peer.softwareVersion }}</small>\n </h4>\n <ng-template #invalidVersion>\n <ion-text\n color=\"danger\"\n [matTooltip]=\"\n 'NETWORK.PEER.SELECT_MODAL.NOT_COMPATIBLE_HELP' | translate: { version: peerMinVersion }\n \"\n >\n <h4 class=\"ion-color-danger\">\n <small>\n <mat-icon>warning</mat-icon>\n v{{ peer.softwareVersion }}\n </small>\n </h4>\n </ion-text>\n </ng-template>\n </ion-label>\n </ion-col>\n </ion-row>\n </ion-grid>\n } @else {\n <!-- Peer is DOWN -->\n <ion-icon slot=\"start\" name=\"desktop\" class=\"disabled ion-icon-avatar\"></ion-icon>\n\n <ion-label class=\"ion-text-wrap\">\n <ion-text color=\"medium\">\n <h3>{{ peer.hostAndPort }}{{ peer.path }}</h3>\n </ion-text>\n <ion-text color=\"danger\">\n <h4>\n <small><ion-icon size=\"small\" name=\"close-circle\"></ion-icon></small>\n <span translate>NETWORK.PEER.OFFLINE</span>\n </h4>\n </ion-text>\n </ion-label>\n }\n </ion-item>\n </ion-list>\n</ion-content>\n\n@if ((canCancel && !mobile) || showSetManuallyButton) {\n <ion-footer>\n <ion-toolbar>\n <ion-row class=\"ion-no-padding ion-text-nowrap\">\n <ion-col></ion-col>\n\n <!-- buttons -->\n @if (showSetManuallyButton) {\n <ion-col size=\"auto\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"clickSetManually($event)\">\n <ion-label translate>NETWORK.PEER.SELECT_MODAL.BTN_SET_MANUALLY</ion-label>\n </ion-button>\n </ion-col>\n }\n\n @if (canCancel) {\n <ion-col size=\"auto\" hidden-xs hidden-sm hidden-mobile>\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"cancel()\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n </ion-col>\n }\n </ion-row>\n </ion-toolbar>\n </ion-footer>\n}\n", styles: ["ion-item .ion-icon-avatar{font-size:40px;width:40px;height:40px}ion-item .ion-icon-avatar.disabled{color:rgba(var(--ion-color-medium-rgb),.7)}ion-item h4 ion-icon,ion-item h4 mat-icon{height:14px;width:14px;font-size:14px;line-height:14px}ion-item h4 small ion-icon,ion-item h4 small mat-icon{height:12px;width:12px;font-size:12px;line-height:12px}ion-item.selected{--ion-color-base: var(--ion-color-secondary100-contrast) !important;--ion-item-background: var(--ion-color-secondary100)}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.IonAvatar, selector: "ion-avatar" }, { kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i1.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonImg, selector: "ion-img", inputs: ["alt", "src"] }, { kind: "component", type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i1.IonListHeader, selector: "ion-list-header", inputs: ["color", "lines", "mode"] }, { kind: "component", type: i1.IonRow, selector: "ion-row" }, { kind: "component", type: i1.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: i1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i5.RxFor, selector: "[rxFor][rxForOf]", inputs: ["rxForOf", "rxForTemplate", "rxForStrategy", "rxForParent", "rxForPatchZone", "rxForTrackBy", "rxForRenderCallback"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], animations: [fadeInAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush });
171
177
  }
172
178
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectPeerModal, decorators: [{
173
179
  type: Component,
174
180
  args: [{ selector: 'select-peer-modal', changeDetection: ChangeDetectionStrategy.OnPush, animations: [fadeInAnimation], template: "<ion-header>\n <ion-toolbar color=\"light\">\n <ion-buttons slot=\"start\">\n <ion-button (click)=\"cancel()\" *ngIf=\"canCancel\" visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n </ion-buttons>\n\n <ion-title>\n {{ 'NETWORK.PEER.SELECT_MODAL.TITLE' | translate }}\n </ion-title>\n\n <ion-buttons slot=\"end\">\n <!-- loader -->\n <ion-spinner *ngIf=\"loading; else endButtons\"></ion-spinner>\n\n <ng-template #endButtons>\n <!-- refresh button -->\n <ion-button\n *ngIf=\"onRefresh.observed\"\n [matTooltip]=\"'COMMON.BTN_REFRESH' | translate\"\n (click)=\"refresh($event)\"\n >\n <mat-icon slot=\"icon-only\">refresh</mat-icon>\n </ion-button>\n </ng-template>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content>\n <ion-list>\n <ion-list-header>\n <ion-label class=\"ion-text-wrap\">\n <p translate>NETWORK.PEER.SELECT_MODAL.HELP</p>\n </ion-label>\n </ion-list-header>\n\n <ion-item\n *rxFor=\"let peer of $peers\"\n (click)=\"selectPeer(peer)\"\n [class.selected]=\"selectedPeer && selectedPeer === peer.url\"\n tappable\n matRipple\n detail\n @fadeInAnimation\n >\n <!-- Peer is UP -->\n @if (peer.reachable) {\n <!-- icon -->\n <ion-avatar slot=\"start\">\n <ion-img [src]=\"peer.favicon || peer.url + '/api/favicon'\"></ion-img>\n </ion-avatar>\n\n <ion-grid>\n <ion-row class=\"ion-no-padding\">\n <ion-col class=\"ion-no-padding\">\n <ion-label class=\"ion-text-wrap\">\n <ion-text>\n <h3>{{ peer.hostAndPort }}{{ peer.path }}</h3>\n </ion-text>\n <ion-text color=\"primary\">\n <h4>{{ peer.label }}</h4>\n </ion-text>\n </ion-label>\n </ion-col>\n <ion-col class=\"ion-no-padding\">\n <ion-label class=\"ion-text-wrap ion-text-center\" color=\"medium\">\n <h3>{{ peer.softwareName }}</h3>\n <h4 *ngIf=\"!peerMinVersion || isCompatible(peer); else invalidVersion\">\n <small>v{{ peer.softwareVersion }}</small>\n </h4>\n <ng-template #invalidVersion>\n <ion-text\n color=\"danger\"\n [matTooltip]=\"\n 'NETWORK.PEER.SELECT_MODAL.NOT_COMPATIBLE_HELP' | translate: { version: peerMinVersion }\n \"\n >\n <h4 class=\"ion-color-danger\">\n <small>\n <mat-icon>warning</mat-icon>\n v{{ peer.softwareVersion }}\n </small>\n </h4>\n </ion-text>\n </ng-template>\n </ion-label>\n </ion-col>\n </ion-row>\n </ion-grid>\n } @else {\n <!-- Peer is DOWN -->\n <ion-icon slot=\"start\" name=\"desktop\" class=\"disabled ion-icon-avatar\"></ion-icon>\n\n <ion-label class=\"ion-text-wrap\">\n <ion-text color=\"medium\">\n <h3>{{ peer.hostAndPort }}{{ peer.path }}</h3>\n </ion-text>\n <ion-text color=\"danger\">\n <h4>\n <small><ion-icon size=\"small\" name=\"close-circle\"></ion-icon></small>\n <span translate>NETWORK.PEER.OFFLINE</span>\n </h4>\n </ion-text>\n </ion-label>\n }\n </ion-item>\n </ion-list>\n</ion-content>\n\n@if ((canCancel && !mobile) || showSetManuallyButton) {\n <ion-footer>\n <ion-toolbar>\n <ion-row class=\"ion-no-padding ion-text-nowrap\">\n <ion-col></ion-col>\n\n <!-- buttons -->\n @if (showSetManuallyButton) {\n <ion-col size=\"auto\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"clickSetManually($event)\">\n <ion-label translate>NETWORK.PEER.SELECT_MODAL.BTN_SET_MANUALLY</ion-label>\n </ion-button>\n </ion-col>\n }\n\n @if (canCancel) {\n <ion-col size=\"auto\" hidden-xs hidden-sm hidden-mobile>\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"cancel()\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n </ion-col>\n }\n </ion-row>\n </ion-toolbar>\n </ion-footer>\n}\n", styles: ["ion-item .ion-icon-avatar{font-size:40px;width:40px;height:40px}ion-item .ion-icon-avatar.disabled{color:rgba(var(--ion-color-medium-rgb),.7)}ion-item h4 ion-icon,ion-item h4 mat-icon{height:14px;width:14px;font-size:14px;line-height:14px}ion-item h4 small ion-icon,ion-item h4 small mat-icon{height:12px;width:12px;font-size:12px;line-height:12px}ion-item.selected{--ion-color-base: var(--ion-color-secondary100-contrast) !important;--ion-item-background: var(--ion-color-secondary100)}\n"] }]
175
- }], ctorParameters: () => [], propDecorators: { selectedPeer: [{
181
+ }], ctorParameters: () => [{ type: i1.ModalController }, { type: i1.PopoverController }, { type: i2.TranslateService }, { type: i3.HttpClient }, { type: i0.ChangeDetectorRef }, { type: i9.Environment, decorators: [{
182
+ type: Inject,
183
+ args: [ENVIRONMENT]
184
+ }] }, { type: undefined, decorators: [{
185
+ type: Optional
186
+ }, {
187
+ type: Inject,
188
+ args: [APP_LOGGING_SERVICE]
189
+ }] }], propDecorators: { selectedPeer: [{
176
190
  type: Input
177
191
  }], canCancel: [{
178
192
  type: Input,
@@ -186,4 +200,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
186
200
  }], onRefresh: [{
187
201
  type: Input
188
202
  }] } });
189
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXBlZXIubW9kYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvcGVlci9zZWxlY3QtcGVlci5tb2RhbC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9wZWVyL3NlbGVjdC1wZWVyLm1vZGFsLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNoSixPQUFPLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3BELE9BQU8sRUFBYyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBc0IsTUFBTSw2Q0FBNkMsQ0FBQztBQUM5RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FB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Y2VzQ29udGVudCI6WyJpbXBvcnQgeyBib29sZWFuQXR0cmlidXRlLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1vZGFsQ29udHJvbGxlciwgUG9wb3ZlckNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBQZWVyIH0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvcGVlci5tb2RlbCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZhZGVJbkFuaW1hdGlvbiB9IGZyb20gJy4uLy4uL3NoYXJlZC9tYXRlcmlhbC9tYXRlcmlhbC5hbmltYXRpb25zJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBOZXR3b3JrVXRpbHMsIE5vZGVJbmZvIH0gZnJvbSAnLi4vc2VydmljZXMvbmV0d29yay51dGlscyc7XG5pbXBvcnQgeyBWZXJzaW9uVXRpbHMgfSBmcm9tICcuLi8uLi9zaGFyZWQvdmVyc2lvbi92ZXJzaW9ucyc7XG5pbXBvcnQgeyBFTlZJUk9OTUVOVCB9IGZyb20gJy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5jbGFzcyc7XG5pbXBvcnQgeyBUZXh0UG9wb3ZlciwgVGV4dFBvcG92ZXJPcHRpb25zIH0gZnJvbSAnLi4vZm9ybS90ZXh0LXBvcG92ZXIvdGV4dC1wb3BvdmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBpc01vYmlsZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9wbGF0Zm9ybXMnO1xuaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFBFRVJfVVJMX1JFR0VYUCB9IGZyb20gJy4uL3NlcnZpY2VzL25ldHdvcmsuc2VydmljZSc7XG5pbXBvcnQgeyBBUFBfTE9HR0lOR19TRVJWSUNFIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xvZ2dpbmcvbG9nZ2luZy1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7IElMb2dnZXIgfSBmcm9tICcuLi8uLi9zaGFyZWQvbG9nZ2luZy9sb2dnZXIubW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElTZWxlY3RQZWVyTW9kYWxPcHRpb25zIHtcbiAgY2FuQ2FuY2VsOiBib29sZWFuO1xuICBhbGxvd1NlbGVjdERvd25QZWVyOiBib29sZWFuO1xuICBvblJlZnJlc2g6IEV2ZW50RW1pdHRlcjxFdmVudD47XG4gIHNob3dTZXRNYW51YWxseUJ1dHRvbjogYm9vbGVhbjtcbiAgc2VsZWN0ZWRQZWVyPzogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZWxlY3QtcGVlci1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnc2VsZWN0LXBlZXIubW9kYWwuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlbGVjdC1wZWVyLm1vZGFsLnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGFuaW1hdGlvbnM6IFtmYWRlSW5BbmltYXRpb25dLFxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RQZWVyTW9kYWwgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIElTZWxlY3RQZWVyTW9kYWxPcHRpb25zIHtcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXI7XG5cbiAgcHJvdGVjdGVkIGxvYWRpbmcgPSB0cnVlO1xuICBwcm90ZWN0ZWQgbW9iaWxlOiBib29sZWFuO1xuICBwcm90ZWN0ZWQgJHBlZXJzID0gbmV3IFN1YmplY3Q8UGVlcltdPigpO1xuICBwcm90ZWN0ZWQgcGVlck1pblZlcnNpb246IHN0cmluZztcbiAgcHJvdGVjdGVkIHBlZXJEZWZhdWx0UHJlZml4OiBzdHJpbmc7XG5cbiAgQElucHV0KCkgc2VsZWN0ZWRQZWVyOiBzdHJpbmc7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBjYW5DYW5jZWwgPSB0cnVlO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgYWxsb3dTZWxlY3REb3duUGVlciA9IHRydWU7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzaG93U2V0TWFudWFsbHlCdXR0b24gPSB0cnVlO1xuXG4gIEBJbnB1dCgpIG9uUmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBtb2RhbEN0cmwgPSBpbmplY3QoTW9kYWxDb250cm9sbGVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBwb3BvdmVyQ29udHJvbGxlciA9IGluamVjdChQb3BvdmVyQ29udHJvbGxlcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2QgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcm90ZWN0ZWQgZW52aXJvbm1lbnQgPSBpbmplY3QoRU5WSVJPTk1FTlQpO1xuICBwcm90ZWN0ZWQgbG9nZ2luZ1NlcnZpY2UgPSBpbmplY3QoQVBQX0xPR0dJTkdfU0VSVklDRSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLm1vYmlsZSA9IGlzTW9iaWxlKHdpbmRvdyk7XG4gICAgdGhpcy5fbG9nZ2VyID0gdGhpcy5sb2dnaW5nU2VydmljZT8uZ2V0TG9nZ2VyKCduZXR3b3JrLW1vZGFsJyk7XG4gICAgdGhpcy5wZWVyTWluVmVyc2lvbiA9IHRoaXMuZW52aXJvbm1lbnQucGVlck1pblZlcnNpb247XG4gICAgdGhpcy5wZWVyRGVmYXVsdFByZWZpeCA9IHRoaXMuZW52aXJvbm1lbnQucGVlckRlZmF1bHRQcmVmaXggfHwgJ2h0dHBzOi8vJztcbiAgfVxuXG4gIHNldCBwZWVycyhwZWVyczogT2JzZXJ2YWJsZTxQZWVyW10+KSB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChwZWVycy5zdWJzY3JpYmUoKHJlcykgPT4gdGhpcy5yZWZyZXNoUGVlcnMocmVzKSkpO1xuICB9XG5cbiAgY2FuY2VsKCkge1xuICAgIHRoaXMubW9kYWxDdHJsLmRpc21pc3MoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgc2VsZWN0UGVlcihwZWVyOiBQZWVyKSB7XG4gICAgaWYgKHRoaXMuYWxsb3dTZWxlY3REb3duUGVlciB8fCAocGVlci5yZWFjaGFibGUgJiYgdGhpcy5pc0NvbXBhdGlibGUocGVlcikpKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKGBbc2VsZWN0LXBlZXItbW9kYWxdIFNlbGVjdGVkIHBlZXI6IHt1cmw6ICcke3BlZXIudXJsfSd9YCk7XG4gICAgICB0aGlzLnNlbGVjdGVkUGVlciA9IHBlZXIudXJsO1xuICAgICAgdGhpcy5tb2RhbEN0cmwuZGlzbWlzcyhwZWVyKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogIENoZWNrIHRoZSBtaW4gcG9kIHZlcnNpb24sIGRlZmluZWQgYnkgdGhlIGFwcFxuICAgKlxuICAgKiBAcGFyYW0gcGVlclxuICAgKi9cbiAgaXNDb21wYXRpYmxlKHBlZXI6IFBlZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMucGVlck1pblZlcnNpb24gfHwgKHBlZXIgJiYgcGVlci5zb2Z0d2FyZVZlcnNpb24gJiYgVmVyc2lvblV0aWxzLmlzQ29tcGF0aWJsZSh0aGlzLnBlZXJNaW5WZXJzaW9uLCBwZWVyLnNvZnR3YXJlVmVyc2lvbikpO1xuICB9XG5cbiAgcmVmcmVzaChldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMub25SZWZyZXNoLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgYXN5bmMgY2xpY2tTZXRNYW51YWxseShldmVudD86IEV2ZW50KSB7XG4gICAgY29uc3QgcGVlclVybCA9IGF3YWl0IHRoaXMub3BlblBlZXJVcmxQb3BvdmVyKGV2ZW50KTtcbiAgICBpZiAocGVlclVybCkge1xuICAgICAgY29uc3QgcGVlciA9IFBlZXIucGFyc2VVcmwocGVlclVybCk7XG4gICAgICBhd2FpdCB0aGlzLnJlZnJlc2hQZWVyKHBlZXIpO1xuICAgICAgdGhpcy5zZWxlY3RQZWVyKHBlZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2RzIC0tICovXG5cbiAgYXN5bmMgcmVmcmVzaFBlZXJzKHBlZXJzOiBQZWVyW10pIHtcbiAgICBwZWVycyA9IHBlZXJzIHx8IFtdO1xuXG4gICAgY29uc3QgZGF0YTogUGVlcltdID0gW107XG4gICAgY29uc3Qgam9icyA9IFByb21pc2UuYWxsKFxuICAgICAgcGVlcnMubWFwKGFzeW5jIChwZWVyKSA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaFBlZXIocGVlcik7XG5cbiAgICAgICAgaWYgKHRoaXMuX3N1YnNjcmlwdGlvbi5jbG9zZWQpIHJldHVybjsgLy8gY29tcG9uZW50IGRlc3Ryb3llZFxuXG4gICAgICAgIGRhdGEucHVzaChwZWVyKTtcblxuICAgICAgICAvLyBTb3J0IChieSByZWFjaGFibGUsIHRoZW4gaG9zdClcbiAgICAgICAgZGF0YS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgaWYgKGEucmVhY2hhYmxlICYmICFiLnJlYWNoYWJsZSkgcmV0dXJuIC0xO1xuICAgICAgICAgIGlmICghYS5yZWFjaGFibGUgJiYgYi5yZWFjaGFibGUpIHJldHVybiAxO1xuICAgICAgICAgIGlmIChhLmhvc3RBbmRQb3J0IDwgYi5ob3N0QW5kUG9ydCkgcmV0dXJuIC0xO1xuICAgICAgICAgIGlmIChhLmhvc3RBbmRQb3J0ID4gYi5ob3N0QW5kUG9ydCkgcmV0dXJuIDE7XG4gICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuJHBlZXJzLm5leHQoZGF0YSk7XG4gICAgICAgIHJldHVybiBwZWVyO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZCh0aGlzLiRwZWVycy5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jZC5tYXJrRm9yQ2hlY2soKSkpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGpvYnM7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoIXRoaXMuX3N1YnNjcmlwdGlvbi5jbG9zZWQpIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICB9XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyByZWZyZXNoUGVlcihwZWVyOiBQZWVyKTogUHJvbWlzZTxQZWVyPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN1bW1hcnk6IE5vZGVJbmZvID0gYXdhaXQgTmV0d29ya1V0aWxzLmdldE5vZGVJbmZvKHRoaXMuaHR0cCwgcGVlci51cmwpO1xuICAgICAgcGVlci5zdGF0dXMgPSAnVVAnO1xuICAgICAgcGVlci5zb2Z0d2FyZU5hbWUgPSBzdW1tYXJ5LnNvZnR3YXJlTmFtZTtcbiAgICAgIHBlZXIuc29mdHdhcmVWZXJzaW9uID0gc3VtbWFyeS5zb2Z0d2FyZVZlcnNpb247XG4gICAgICBwZWVyLmxhYmVsID0gc3VtbWFyeS5ub2RlTGFiZWw7XG4gICAgICBwZWVyLm5hbWUgPSBzdW1tYXJ5Lm5vZGVOYW1lO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gSWYgbW9kYWwgd2FzIG5vdCBjbG9zZWQgKGUuZy4gcmVzcG9uc2UgYXJyaXZlZCB0b28gbGF0ZSA9PiBpZ25vcmUpXG4gICAgICBpZiAoIXRoaXMuX3N1YnNjcmlwdGlvbi5jbG9zZWQpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgW3NlbGVjdC1wZWVyXSBFcnJvciB3aGlsZSBjYWxsaW5nICcke3BlZXIudXJsfS9hcGkvbm9kZS9pbmZvJzogJHtlcnI/Lm1lc3NhZ2UgfHwgZXJyfWAsIGVycik7XG4gICAgICAgIHRoaXMuX2xvZ2dlcj8uZXJyb3IoJ3JlZnJlc2hQZWVyJywgYEVycm9yIHdoaWxlIGNhbGxpbmcgJyR7cGVlci51cmx9L2FwaS9ub2RlL2luZm8nOiAke2Vycj8ubWVzc2FnZSB8fCBKU09OLnN0cmluZ2lmeShlcnIpfWApO1xuICAgICAgfVxuICAgICAgcGVlci5zdGF0dXMgPSAnRE9XTic7XG4gICAgfVxuICAgIHJldHVybiBwZWVyO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIG9wZW5QZWVyVXJsUG9wb3ZlcihldmVudDogRXZlbnQsIG9wdHM/OiBQYXJ0aWFsPFRleHRQb3BvdmVyT3B0aW9ucz4pIHtcbiAgICBjb25zdCBtb2RhbCA9IGF3YWl0IHRoaXMucG9wb3ZlckNvbnRyb2xsZXIuY3JlYXRlKHtcbiAgICAgIGNvbXBvbmVudDogVGV4dFBvcG92ZXIsXG4gICAgICBjb21wb25lbnRQcm9wczogPFRleHRQb3BvdmVyT3B0aW9ucz57XG4gICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdTRVRUSU5HUy5QRUVSX1VSTCcpLFxuICAgICAgICBtdWx0aWxpbmU6IGZhbHNlLFxuICAgICAgICBhdXRvZm9jdXM6ICF0aGlzLm1vYmlsZSxcbiAgICAgICAgYXV0b2NvbXBsZXRlOiBmYWxzZSxcbiAgICAgICAgdmFsaWRhdG9yOiBWYWxpZGF0b3JzLnBhdHRlcm4oUEVFUl9VUkxfUkVHRVhQKSxcbiAgICAgICAgbWF4TGVuZ3RoOiBudWxsLFxuICAgICAgICB0ZXh0OiB0aGlzLnNlbGVjdGVkUGVlciB8fCB0aGlzLnBlZXJEZWZhdWx0UHJlZml4LFxuICAgICAgICAuLi5vcHRzLFxuICAgICAgfSxcbiAgICAgIGJhY2tkcm9wRGlzbWlzczogZmFsc2UsXG4gICAgICBrZXlib2FyZENsb3NlOiBmYWxzZSxcbiAgICAgIGV2ZW50OiBudWxsLCAvLyBJTVBPUlRBTlQ6IG51bGwgZXZlbnQgd2lsbCBjZW50ZXIgdGhlIHBvcG92ZXIsIGFuZCB0aGlzIHdpbGwgZml4IGtleWJvYXJkIG92ZXJsYXAgb24gbW9iaWxlXG4gICAgICB0cmFuc2x1Y2VudDogdHJ1ZSxcbiAgICAgIGNzc0NsYXNzOiAncG9wb3Zlci1sYXJnZScsXG4gICAgfSk7XG5cbiAgICBhd2FpdCBtb2RhbC5wcmVzZW50KCk7XG4gICAgY29uc3QgeyBkYXRhLCByb2xlIH0gPSBhd2FpdCBtb2RhbC5vbkRpZERpc21pc3MoKTtcblxuICAgIGlmIChkYXRhKSB7XG4gICAgICBjb25zb2xlLmluZm8oJ1BvcG92ZXIgcmVzdWx0OiAnLCBkYXRhKTtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBtYXJrRm9yQ2hlY2soKSB7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuIiwiPGlvbi1oZWFkZXI+XG4gIDxpb24tdG9vbGJhciBjb2xvcj1cImxpZ2h0XCI+XG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiPlxuICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImNhbmNlbCgpXCIgKm5nSWY9XCJjYW5DYW5jZWxcIiB2aXNpYmxlLXhzIHZpc2libGUtc20gdmlzaWJsZS1tb2JpbGU+XG4gICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cImFycm93LWJhY2tcIj48L2lvbi1pY29uPlxuICAgICAgPC9pb24tYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG5cbiAgICA8aW9uLXRpdGxlPlxuICAgICAge3sgJ05FVFdPUksuUEVFUi5TRUxFQ1RfTU9EQUwuVElUTEUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9pb24tdGl0bGU+XG5cbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgICAgPCEtLSBsb2FkZXIgLS0+XG4gICAgICA8aW9uLXNwaW5uZXIgKm5nSWY9XCJsb2FkaW5nOyBlbHNlIGVuZEJ1dHRvbnNcIj48L2lvbi1zcGlubmVyPlxuXG4gICAgICA8bmctdGVtcGxhdGUgI2VuZEJ1dHRvbnM+XG4gICAgICAgIDwhLS0gcmVmcmVzaCBidXR0b24gLS0+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJvblJlZnJlc2gub2JzZXJ2ZWRcIlxuICAgICAgICAgIFttYXRUb29sdGlwXT1cIidDT01NT04uQlROX1JFRlJFU0gnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAoY2xpY2spPVwicmVmcmVzaCgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxtYXQtaWNvbiBzbG90PVwiaWNvbi1vbmx5XCI+cmVmcmVzaDwvbWF0LWljb24+XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9pb24tYnV0dG9ucz5cbiAgPC9pb24tdG9vbGJhcj5cbjwvaW9uLWhlYWRlcj5cblxuPGlvbi1jb250ZW50PlxuICA8aW9uLWxpc3Q+XG4gICAgPGlvbi1saXN0LWhlYWRlcj5cbiAgICAgIDxpb24tbGFiZWwgY2xhc3M9XCJpb24tdGV4dC13cmFwXCI+XG4gICAgICAgIDxwIHRyYW5zbGF0ZT5ORVRXT1JLLlBFRVIuU0VMRUNUX01PREFMLkhFTFA8L3A+XG4gICAgICA8L2lvbi1sYWJlbD5cbiAgICA8L2lvbi1saXN0LWhlYWRlcj5cblxuICAgIDxpb24taXRlbVxuICAgICAgKnJ4Rm9yPVwibGV0IHBlZXIgb2YgJHBlZXJzXCJcbiAgICAgIChjbGljayk9XCJzZWxlY3RQZWVyKHBlZXIpXCJcbiAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJzZWxlY3RlZFBlZXIgJiYgc2VsZWN0ZWRQZWVyID09PSBwZWVyLnVybFwiXG4gICAgICB0YXBwYWJsZVxuICAgICAgbWF0UmlwcGxlXG4gICAgICBkZXRhaWxcbiAgICAgIEBmYWRlSW5BbmltYXRpb25cbiAgICA+XG4gICAgICA8IS0tIFBlZXIgaXMgVVAgLS0+XG4gICAgICBAaWYgKHBlZXIucmVhY2hhYmxlKSB7XG4gICAgICAgIDwhLS0gaWNvbiAtLT5cbiAgICAgICAgPGlvbi1hdmF0YXIgc2xvdD1cInN0YXJ0XCI+XG4gICAgICAgICAgPGlvbi1pbWcgW3NyY109XCJwZWVyLmZhdmljb24gfHwgcGVlci51cmwgKyAnL2FwaS9mYXZpY29uJ1wiPjwvaW9uLWltZz5cbiAgICAgICAgPC9pb24tYXZhdGFyPlxuXG4gICAgICAgIDxpb24tZ3JpZD5cbiAgICAgICAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCI+XG4gICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCI+XG4gICAgICAgICAgICAgIDxpb24tbGFiZWwgY2xhc3M9XCJpb24tdGV4dC13cmFwXCI+XG4gICAgICAgICAgICAgICAgPGlvbi10ZXh0PlxuICAgICAgICAgICAgICAgICAgPGgzPnt7IHBlZXIuaG9zdEFuZFBvcnQgfX17eyBwZWVyLnBhdGggfX08L2gzPlxuICAgICAgICAgICAgICAgIDwvaW9uLXRleHQ+XG4gICAgICAgICAgICAgICAgPGlvbi10ZXh0IGNvbG9yPVwicHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgICAgPGg0Pnt7IHBlZXIubGFiZWwgfX08L2g0PlxuICAgICAgICAgICAgICAgIDwvaW9uLXRleHQ+XG4gICAgICAgICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiPlxuICAgICAgICAgICAgICA8aW9uLWxhYmVsIGNsYXNzPVwiaW9uLXRleHQtd3JhcCBpb24tdGV4dC1jZW50ZXJcIiBjb2xvcj1cIm1lZGl1bVwiPlxuICAgICAgICAgICAgICAgIDxoMz57eyBwZWVyLnNvZnR3YXJlTmFtZSB9fTwvaDM+XG4gICAgICAgICAgICAgICAgPGg0ICpuZ0lmPVwiIXBlZXJNaW5WZXJzaW9uIHx8IGlzQ29tcGF0aWJsZShwZWVyKTsgZWxzZSBpbnZhbGlkVmVyc2lvblwiPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnZ7eyBwZWVyLnNvZnR3YXJlVmVyc2lvbiB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPC9oND5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2ludmFsaWRWZXJzaW9uPlxuICAgICAgICAgICAgICAgICAgPGlvbi10ZXh0XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPVwiZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgJ05FVFdPUksuUEVFUi5TRUxFQ1RfTU9EQUwuTk9UX0NPTVBBVElCTEVfSEVMUCcgfCB0cmFuc2xhdGU6IHsgdmVyc2lvbjogcGVlck1pblZlcnNpb24gfVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJpb24tY29sb3ItZGFuZ2VyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPndhcm5pbmc8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgdnt7IHBlZXIuc29mdHdhcmVWZXJzaW9uIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9oND5cbiAgICAgICAgICAgICAgICAgIDwvaW9uLXRleHQ+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgPC9pb24tcm93PlxuICAgICAgICA8L2lvbi1ncmlkPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDwhLS0gUGVlciBpcyBET1dOIC0tPlxuICAgICAgICA8aW9uLWljb24gc2xvdD1cInN0YXJ0XCIgbmFtZT1cImRlc2t0b3BcIiBjbGFzcz1cImRpc2FibGVkIGlvbi1pY29uLWF2YXRhclwiPjwvaW9uLWljb24+XG5cbiAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cImlvbi10ZXh0LXdyYXBcIj5cbiAgICAgICAgICA8aW9uLXRleHQgY29sb3I9XCJtZWRpdW1cIj5cbiAgICAgICAgICAgIDxoMz57eyBwZWVyLmhvc3RBbmRQb3J0IH19e3sgcGVlci5wYXRoIH19PC9oMz5cbiAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICAgIDxpb24tdGV4dCBjb2xvcj1cImRhbmdlclwiPlxuICAgICAgICAgICAgPGg0PlxuICAgICAgICAgICAgICA8c21hbGw+PGlvbi1pY29uIHNpemU9XCJzbWFsbFwiIG5hbWU9XCJjbG9zZS1jaXJjbGVcIj48L2lvbi1pY29uPjwvc21hbGw+XG4gICAgICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5ORVRXT1JLLlBFRVIuT0ZGTElORTwvc3Bhbj5cbiAgICAgICAgICAgIDwvaDQ+XG4gICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICB9XG4gICAgPC9pb24taXRlbT5cbiAgPC9pb24tbGlzdD5cbjwvaW9uLWNvbnRlbnQ+XG5cbkBpZiAoKGNhbkNhbmNlbCAmJiAhbW9iaWxlKSB8fCBzaG93U2V0TWFudWFsbHlCdXR0b24pIHtcbiAgPGlvbi1mb290ZXI+XG4gICAgPGlvbi10b29sYmFyPlxuICAgICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tbm8tcGFkZGluZyBpb24tdGV4dC1ub3dyYXBcIj5cbiAgICAgICAgPGlvbi1jb2w+PC9pb24tY29sPlxuXG4gICAgICAgIDwhLS0gYnV0dG9ucyAtLT5cbiAgICAgICAgQGlmIChzaG93U2V0TWFudWFsbHlCdXR0b24pIHtcbiAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiYXV0b1wiPlxuICAgICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cImNsZWFyXCIgY29sb3I9XCJkYXJrXCIgKGNsaWNrKT1cImNsaWNrU2V0TWFudWFsbHkoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICA8aW9uLWxhYmVsIHRyYW5zbGF0ZT5ORVRXT1JLLlBFRVIuU0VMRUNUX01PREFMLkJUTl9TRVRfTUFOVUFMTFk8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKGNhbkNhbmNlbCkge1xuICAgICAgICAgIDxpb24tY29sIHNpemU9XCJhdXRvXCIgaGlkZGVuLXhzIGhpZGRlbi1zbSBoaWRkZW4tbW9iaWxlPlxuICAgICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cImNsZWFyXCIgY29sb3I9XCJkYXJrXCIgKGNsaWNrKT1cImNhbmNlbCgpXCI+XG4gICAgICAgICAgICAgIDxpb24tbGFiZWwgdHJhbnNsYXRlPkNPTU1PTi5CVE5fQ0FOQ0VMPC9pb24tbGFiZWw+XG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICB9XG4gICAgICA8L2lvbi1yb3c+XG4gICAgPC9pb24tdG9vbGJhcj5cbiAgPC9pb24tZm9vdGVyPlxufVxuIl19
203
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXBlZXIubW9kYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvcGVlci9zZWxlY3QtcGVlci5tb2RhbC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9wZWVyL3NlbGVjdC1wZWVyLm1vZGFsLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGdCQUFnQixFQUNoQix1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDcEQsT0FBTyxFQUFjLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRTVFLE9BQU8sRUFBRSxZQUFZLEVBQVksTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDN0QsT0FBTyxFQUFlLFdBQVcsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxXQUFXLEVBQXNCLE1BQU0sNkNBQTZDLENBQUM7QUFFOUYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNENBQTRDLENBQUM7Ozs7Ozs7Ozs7O0FBa0JqRixNQUFNLE9BQU8sZUFBZTtJQWtCaEI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUN1QjtJQUNvQjtJQXZCN0MsYUFBYSxHQUFHLElBQUksWUFB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ZTtTQUMxQixDQUFDLENBQUM7UUFFSCxNQUFNLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN0QixNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRWxELElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxPQUFPLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3ZDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFUyxZQUFZO1FBQ3BCLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekIsQ0FBQzt3R0FwS1UsZUFBZSw2S0F1QmhCLFdBQVcsYUFDQyxtQkFBbUI7NEZBeEI5QixlQUFlLCtHQVdOLGdCQUFnQix1RUFDaEIsZ0JBQWdCLDZFQUNoQixnQkFBZ0IscURDdkR0QywwaEpBeUlBLG9uSURqR2MsQ0FBQyxlQUFlLENBQUM7OzRGQUVsQixlQUFlO2tCQVAzQixTQUFTOytCQUNFLG1CQUFtQixtQkFHWix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLENBQUMsZUFBZSxDQUFDOzswQkF5QjFCLE1BQU07MkJBQUMsV0FBVzs7MEJBQ2xCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsbUJBQW1CO3lDQWRoQyxZQUFZO3NCQUFwQixLQUFLO2dCQUNrQyxTQUFTO3NCQUFoRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLG1CQUFtQjtzQkFBMUQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxxQkFBcUI7c0JBQTVELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBRTdCLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBib29sZWFuQXR0cmlidXRlLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1vZGFsQ29udHJvbGxlciwgUG9wb3ZlckNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBQZWVyIH0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvcGVlci5tb2RlbCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZhZGVJbkFuaW1hdGlvbiB9IGZyb20gJy4uLy4uL3NoYXJlZC9tYXRlcmlhbC9tYXRlcmlhbC5hbmltYXRpb25zJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBOZXR3b3JrVXRpbHMsIE5vZGVJbmZvIH0gZnJvbSAnLi4vc2VydmljZXMvbmV0d29yay51dGlscyc7XG5pbXBvcnQgeyBWZXJzaW9uVXRpbHMgfSBmcm9tICcuLi8uLi9zaGFyZWQvdmVyc2lvbi92ZXJzaW9ucyc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudCwgRU5WSVJPTk1FTlQgfSBmcm9tICcuLi8uLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQuY2xhc3MnO1xuaW1wb3J0IHsgVGV4dFBvcG92ZXIsIFRleHRQb3BvdmVyT3B0aW9ucyB9IGZyb20gJy4uL2Zvcm0vdGV4dC1wb3BvdmVyL3RleHQtcG9wb3Zlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgaXNNb2JpbGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvcGxhdGZvcm1zJztcbmltcG9ydCB7IFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBQRUVSX1VSTF9SRUdFWFAgfSBmcm9tICcuLi9zZXJ2aWNlcy9uZXR3b3JrLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVBQX0xPR0dJTkdfU0VSVklDRSB9IGZyb20gJy4uLy4uL3NoYXJlZC9sb2dnaW5nL2xvZ2dpbmctc2VydmljZS5jbGFzcyc7XG5pbXBvcnQgeyBJTG9nZ2VyLCBJTG9nZ2luZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvbG9nZ2luZy9sb2dnZXIubW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElTZWxlY3RQZWVyTW9kYWxPcHRpb25zIHtcbiAgY2FuQ2FuY2VsOiBib29sZWFuO1xuICBhbGxvd1NlbGVjdERvd25QZWVyOiBib29sZWFuO1xuICBvblJlZnJlc2g6IEV2ZW50RW1pdHRlcjxFdmVudD47XG4gIHNob3dTZXRNYW51YWxseUJ1dHRvbjogYm9vbGVhbjtcbiAgc2VsZWN0ZWRQZWVyPzogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZWxlY3QtcGVlci1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnc2VsZWN0LXBlZXIubW9kYWwuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlbGVjdC1wZWVyLm1vZGFsLnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGFuaW1hdGlvbnM6IFtmYWRlSW5BbmltYXRpb25dLFxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RQZWVyTW9kYWwgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIElTZWxlY3RQZWVyTW9kYWxPcHRpb25zIHtcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXI7XG5cbiAgcHJvdGVjdGVkIGxvYWRpbmcgPSB0cnVlO1xuICBwcm90ZWN0ZWQgbW9iaWxlOiBib29sZWFuO1xuICBwcm90ZWN0ZWQgJHBlZXJzID0gbmV3IFN1YmplY3Q8UGVlcltdPigpO1xuICBwcm90ZWN0ZWQgcGVlck1pblZlcnNpb246IHN0cmluZztcbiAgcHJvdGVjdGVkIHBlZXJEZWZhdWx0UHJlZml4OiBzdHJpbmc7XG5cbiAgQElucHV0KCkgc2VsZWN0ZWRQZWVyOiBzdHJpbmc7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBjYW5DYW5jZWwgPSB0cnVlO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgYWxsb3dTZWxlY3REb3duUGVlciA9IHRydWU7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzaG93U2V0TWFudWFsbHlCdXR0b24gPSB0cnVlO1xuXG4gIEBJbnB1dCgpIG9uUmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtb2RhbEN0cmw6IE1vZGFsQ29udHJvbGxlcixcbiAgICBwcml2YXRlIHBvcG92ZXJDb250cm9sbGVyOiBQb3BvdmVyQ29udHJvbGxlcixcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQEluamVjdChFTlZJUk9OTUVOVCkgcHJvdGVjdGVkIGVudmlyb25tZW50OiBFbnZpcm9ubWVudCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFQUF9MT0dHSU5HX1NFUlZJQ0UpIHByb3RlY3RlZCBsb2dnaW5nU2VydmljZT86IElMb2dnaW5nU2VydmljZVxuICApIHtcbiAgICB0aGlzLm1vYmlsZSA9IGlzTW9iaWxlKHdpbmRvdyk7XG4gICAgdGhpcy5fbG9nZ2VyID0gbG9nZ2luZ1NlcnZpY2U/LmdldExvZ2dlcignbmV0d29yay1tb2RhbCcpO1xuICAgIHRoaXMucGVlck1pblZlcnNpb24gPSBlbnZpcm9ubWVudC5wZWVyTWluVmVyc2lvbjtcbiAgICB0aGlzLnBlZXJEZWZhdWx0UHJlZml4ID0gZW52aXJvbm1lbnQucGVlckRlZmF1bHRQcmVmaXggfHwgJ2h0dHBzOi8vJztcbiAgfVxuXG4gIHNldCBwZWVycyhwZWVyczogT2JzZXJ2YWJsZTxQZWVyW10+KSB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChwZWVycy5zdWJzY3JpYmUoKHJlcykgPT4gdGhpcy5yZWZyZXNoUGVlcnMocmVzKSkpO1xuICB9XG5cbiAgY2FuY2VsKCkge1xuICAgIHRoaXMubW9kYWxDdHJsLmRpc21pc3MoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgc2VsZWN0UGVlcihwZWVyOiBQZWVyKSB7XG4gICAgaWYgKHRoaXMuYWxsb3dTZWxlY3REb3duUGVlciB8fCAocGVlci5yZWFjaGFibGUgJiYgdGhpcy5pc0NvbXBhdGlibGUocGVlcikpKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKGBbc2VsZWN0LXBlZXItbW9kYWxdIFNlbGVjdGVkIHBlZXI6IHt1cmw6ICcke3BlZXIudXJsfSd9YCk7XG4gICAgICB0aGlzLnNlbGVjdGVkUGVlciA9IHBlZXIudXJsO1xuICAgICAgdGhpcy5tb2RhbEN0cmwuZGlzbWlzcyhwZWVyKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogIENoZWNrIHRoZSBtaW4gcG9kIHZlcnNpb24sIGRlZmluZWQgYnkgdGhlIGFwcFxuICAgKlxuICAgKiBAcGFyYW0gcGVlclxuICAgKi9cbiAgaXNDb21wYXRpYmxlKHBlZXI6IFBlZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMucGVlck1pblZlcnNpb24gfHwgKHBlZXIgJiYgcGVlci5zb2Z0d2FyZVZlcnNpb24gJiYgVmVyc2lvblV0aWxzLmlzQ29tcGF0aWJsZSh0aGlzLnBlZXJNaW5WZXJzaW9uLCBwZWVyLnNvZnR3YXJlVmVyc2lvbikpO1xuICB9XG5cbiAgcmVmcmVzaChldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMub25SZWZyZXNoLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgYXN5bmMgY2xpY2tTZXRNYW51YWxseShldmVudD86IEV2ZW50KSB7XG4gICAgY29uc3QgcGVlclVybCA9IGF3YWl0IHRoaXMub3BlblBlZXJVcmxQb3BvdmVyKGV2ZW50KTtcbiAgICBpZiAocGVlclVybCkge1xuICAgICAgY29uc3QgcGVlciA9IFBlZXIucGFyc2VVcmwocGVlclVybCk7XG4gICAgICBhd2FpdCB0aGlzLnJlZnJlc2hQZWVyKHBlZXIpO1xuICAgICAgdGhpcy5zZWxlY3RQZWVyKHBlZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2RzIC0tICovXG5cbiAgYXN5bmMgcmVmcmVzaFBlZXJzKHBlZXJzOiBQZWVyW10pIHtcbiAgICBwZWVycyA9IHBlZXJzIHx8IFtdO1xuXG4gICAgY29uc3QgZGF0YTogUGVlcltdID0gW107XG4gICAgY29uc3Qgam9icyA9IFByb21pc2UuYWxsKFxuICAgICAgcGVlcnMubWFwKGFzeW5jIChwZWVyKSA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaFBlZXIocGVlcik7XG5cbiAgICAgICAgaWYgKHRoaXMuX3N1YnNjcmlwdGlvbi5jbG9zZWQpIHJldHVybjsgLy8gY29tcG9uZW50IGRlc3Ryb3llZFxuXG4gICAgICAgIGRhdGEucHVzaChwZWVyKTtcblxuICAgICAgICAvLyBTb3J0IChieSByZWFjaGFibGUsIHRoZW4gaG9zdClcbiAgICAgICAgZGF0YS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgaWYgKGEucmVhY2hhYmxlICYmICFiLnJlYWNoYWJsZSkgcmV0dXJuIC0xO1xuICAgICAgICAgIGlmICghYS5yZWFjaGFibGUgJiYgYi5yZWFjaGFibGUpIHJldHVybiAxO1xuICAgICAgICAgIGlmIChhLmhvc3RBbmRQb3J0IDwgYi5ob3N0QW5kUG9ydCkgcmV0dXJuIC0xO1xuICAgICAgICAgIGlmIChhLmhvc3RBbmRQb3J0ID4gYi5ob3N0QW5kUG9ydCkgcmV0dXJuIDE7XG4gICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuJHBlZXJzLm5leHQoZGF0YSk7XG4gICAgICAgIHJldHVybiBwZWVyO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZCh0aGlzLiRwZWVycy5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jZC5tYXJrRm9yQ2hlY2soKSkpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGpvYnM7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoIXRoaXMuX3N1YnNjcmlwdGlvbi5jbG9zZWQpIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICB9XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyByZWZyZXNoUGVlcihwZWVyOiBQZWVyKTogUHJvbWlzZTxQZWVyPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN1bW1hcnk6IE5vZGVJbmZvID0gYXdhaXQgTmV0d29ya1V0aWxzLmdldE5vZGVJbmZvKHRoaXMuaHR0cCwgcGVlci51cmwpO1xuICAgICAgcGVlci5zdGF0dXMgPSAnVVAnO1xuICAgICAgcGVlci5zb2Z0d2FyZU5hbWUgPSBzdW1tYXJ5LnNvZnR3YXJlTmFtZTtcbiAgICAgIHBlZXIuc29mdHdhcmVWZXJzaW9uID0gc3VtbWFyeS5zb2Z0d2FyZVZlcnNpb247XG4gICAgICBwZWVyLmxhYmVsID0gc3VtbWFyeS5ub2RlTGFiZWw7XG4gICAgICBwZWVyLm5hbWUgPSBzdW1tYXJ5Lm5vZGVOYW1lO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gSWYgbW9kYWwgd2FzIG5vdCBjbG9zZWQgKGUuZy4gcmVzcG9uc2UgYXJyaXZlZCB0b28gbGF0ZSA9PiBpZ25vcmUpXG4gICAgICBpZiAoIXRoaXMuX3N1YnNjcmlwdGlvbi5jbG9zZWQpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgW3NlbGVjdC1wZWVyXSBFcnJvciB3aGlsZSBjYWxsaW5nICcke3BlZXIudXJsfS9hcGkvbm9kZS9pbmZvJzogJHtlcnI/Lm1lc3NhZ2UgfHwgZXJyfWAsIGVycik7XG4gICAgICAgIHRoaXMuX2xvZ2dlcj8uZXJyb3IoJ3JlZnJlc2hQZWVyJywgYEVycm9yIHdoaWxlIGNhbGxpbmcgJyR7cGVlci51cmx9L2FwaS9ub2RlL2luZm8nOiAke2Vycj8ubWVzc2FnZSB8fCBKU09OLnN0cmluZ2lmeShlcnIpfWApO1xuICAgICAgfVxuICAgICAgcGVlci5zdGF0dXMgPSAnRE9XTic7XG4gICAgfVxuICAgIHJldHVybiBwZWVyO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIG9wZW5QZWVyVXJsUG9wb3ZlcihldmVudDogRXZlbnQsIG9wdHM/OiBQYXJ0aWFsPFRleHRQb3BvdmVyT3B0aW9ucz4pIHtcbiAgICBjb25zdCBtb2RhbCA9IGF3YWl0IHRoaXMucG9wb3ZlckNvbnRyb2xsZXIuY3JlYXRlKHtcbiAgICAgIGNvbXBvbmVudDogVGV4dFBvcG92ZXIsXG4gICAgICBjb21wb25lbnRQcm9wczogPFRleHRQb3BvdmVyT3B0aW9ucz57XG4gICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdTRVRUSU5HUy5QRUVSX1VSTCcpLFxuICAgICAgICBtdWx0aWxpbmU6IGZhbHNlLFxuICAgICAgICBhdXRvZm9jdXM6ICF0aGlzLm1vYmlsZSxcbiAgICAgICAgYXV0b2NvbXBsZXRlOiBmYWxzZSxcbiAgICAgICAgdmFsaWRhdG9yOiBWYWxpZGF0b3JzLnBhdHRlcm4oUEVFUl9VUkxfUkVHRVhQKSxcbiAgICAgICAgbWF4TGVuZ3RoOiBudWxsLFxuICAgICAgICB0ZXh0OiB0aGlzLnNlbGVjdGVkUGVlciB8fCB0aGlzLnBlZXJEZWZhdWx0UHJlZml4LFxuICAgICAgICAuLi5vcHRzLFxuICAgICAgfSxcbiAgICAgIGJhY2tkcm9wRGlzbWlzczogZmFsc2UsXG4gICAgICBrZXlib2FyZENsb3NlOiBmYWxzZSxcbiAgICAgIGV2ZW50OiBudWxsLCAvLyBJTVBPUlRBTlQ6IG51bGwgZXZlbnQgd2lsbCBjZW50ZXIgdGhlIHBvcG92ZXIsIGFuZCB0aGlzIHdpbGwgZml4IGtleWJvYXJkIG92ZXJsYXAgb24gbW9iaWxlXG4gICAgICB0cmFuc2x1Y2VudDogdHJ1ZSxcbiAgICAgIGNzc0NsYXNzOiAncG9wb3Zlci1sYXJnZScsXG4gICAgfSk7XG5cbiAgICBhd2FpdCBtb2RhbC5wcmVzZW50KCk7XG4gICAgY29uc3QgeyBkYXRhLCByb2xlIH0gPSBhd2FpdCBtb2RhbC5vbkRpZERpc21pc3MoKTtcblxuICAgIGlmIChkYXRhKSB7XG4gICAgICBjb25zb2xlLmluZm8oJ1BvcG92ZXIgcmVzdWx0OiAnLCBkYXRhKTtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBtYXJrRm9yQ2hlY2soKSB7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuIiwiPGlvbi1oZWFkZXI+XG4gIDxpb24tdG9vbGJhciBjb2xvcj1cImxpZ2h0XCI+XG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiPlxuICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImNhbmNlbCgpXCIgKm5nSWY9XCJjYW5DYW5jZWxcIiB2aXNpYmxlLXhzIHZpc2libGUtc20gdmlzaWJsZS1tb2JpbGU+XG4gICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cImFycm93LWJhY2tcIj48L2lvbi1pY29uPlxuICAgICAgPC9pb24tYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG5cbiAgICA8aW9uLXRpdGxlPlxuICAgICAge3sgJ05FVFdPUksuUEVFUi5TRUxFQ1RfTU9EQUwuVElUTEUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9pb24tdGl0bGU+XG5cbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgICAgPCEtLSBsb2FkZXIgLS0+XG4gICAgICA8aW9uLXNwaW5uZXIgKm5nSWY9XCJsb2FkaW5nOyBlbHNlIGVuZEJ1dHRvbnNcIj48L2lvbi1zcGlubmVyPlxuXG4gICAgICA8bmctdGVtcGxhdGUgI2VuZEJ1dHRvbnM+XG4gICAgICAgIDwhLS0gcmVmcmVzaCBidXR0b24gLS0+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJvblJlZnJlc2gub2JzZXJ2ZWRcIlxuICAgICAgICAgIFttYXRUb29sdGlwXT1cIidDT01NT04uQlROX1JFRlJFU0gnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAoY2xpY2spPVwicmVmcmVzaCgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxtYXQtaWNvbiBzbG90PVwiaWNvbi1vbmx5XCI+cmVmcmVzaDwvbWF0LWljb24+XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9pb24tYnV0dG9ucz5cbiAgPC9pb24tdG9vbGJhcj5cbjwvaW9uLWhlYWRlcj5cblxuPGlvbi1jb250ZW50PlxuICA8aW9uLWxpc3Q+XG4gICAgPGlvbi1saXN0LWhlYWRlcj5cbiAgICAgIDxpb24tbGFiZWwgY2xhc3M9XCJpb24tdGV4dC13cmFwXCI+XG4gICAgICAgIDxwIHRyYW5zbGF0ZT5ORVRXT1JLLlBFRVIuU0VMRUNUX01PREFMLkhFTFA8L3A+XG4gICAgICA8L2lvbi1sYWJlbD5cbiAgICA8L2lvbi1saXN0LWhlYWRlcj5cblxuICAgIDxpb24taXRlbVxuICAgICAgKnJ4Rm9yPVwibGV0IHBlZXIgb2YgJHBlZXJzXCJcbiAgICAgIChjbGljayk9XCJzZWxlY3RQZWVyKHBlZXIpXCJcbiAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJzZWxlY3RlZFBlZXIgJiYgc2VsZWN0ZWRQZWVyID09PSBwZWVyLnVybFwiXG4gICAgICB0YXBwYWJsZVxuICAgICAgbWF0UmlwcGxlXG4gICAgICBkZXRhaWxcbiAgICAgIEBmYWRlSW5BbmltYXRpb25cbiAgICA+XG4gICAgICA8IS0tIFBlZXIgaXMgVVAgLS0+XG4gICAgICBAaWYgKHBlZXIucmVhY2hhYmxlKSB7XG4gICAgICAgIDwhLS0gaWNvbiAtLT5cbiAgICAgICAgPGlvbi1hdmF0YXIgc2xvdD1cInN0YXJ0XCI+XG4gICAgICAgICAgPGlvbi1pbWcgW3NyY109XCJwZWVyLmZhdmljb24gfHwgcGVlci51cmwgKyAnL2FwaS9mYXZpY29uJ1wiPjwvaW9uLWltZz5cbiAgICAgICAgPC9pb24tYXZhdGFyPlxuXG4gICAgICAgIDxpb24tZ3JpZD5cbiAgICAgICAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCI+XG4gICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCI+XG4gICAgICAgICAgICAgIDxpb24tbGFiZWwgY2xhc3M9XCJpb24tdGV4dC13cmFwXCI+XG4gICAgICAgICAgICAgICAgPGlvbi10ZXh0PlxuICAgICAgICAgICAgICAgICAgPGgzPnt7IHBlZXIuaG9zdEFuZFBvcnQgfX17eyBwZWVyLnBhdGggfX08L2gzPlxuICAgICAgICAgICAgICAgIDwvaW9uLXRleHQ+XG4gICAgICAgICAgICAgICAgPGlvbi10ZXh0IGNvbG9yPVwicHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgICAgPGg0Pnt7IHBlZXIubGFiZWwgfX08L2g0PlxuICAgICAgICAgICAgICAgIDwvaW9uLXRleHQ+XG4gICAgICAgICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiPlxuICAgICAgICAgICAgICA8aW9uLWxhYmVsIGNsYXNzPVwiaW9uLXRleHQtd3JhcCBpb24tdGV4dC1jZW50ZXJcIiBjb2xvcj1cIm1lZGl1bVwiPlxuICAgICAgICAgICAgICAgIDxoMz57eyBwZWVyLnNvZnR3YXJlTmFtZSB9fTwvaDM+XG4gICAgICAgICAgICAgICAgPGg0ICpuZ0lmPVwiIXBlZXJNaW5WZXJzaW9uIHx8IGlzQ29tcGF0aWJsZShwZWVyKTsgZWxzZSBpbnZhbGlkVmVyc2lvblwiPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnZ7eyBwZWVyLnNvZnR3YXJlVmVyc2lvbiB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPC9oND5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2ludmFsaWRWZXJzaW9uPlxuICAgICAgICAgICAgICAgICAgPGlvbi10ZXh0XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPVwiZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgJ05FVFdPUksuUEVFUi5TRUxFQ1RfTU9EQUwuTk9UX0NPTVBBVElCTEVfSEVMUCcgfCB0cmFuc2xhdGU6IHsgdmVyc2lvbjogcGVlck1pblZlcnNpb24gfVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJpb24tY29sb3ItZGFuZ2VyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPndhcm5pbmc8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgdnt7IHBlZXIuc29mdHdhcmVWZXJzaW9uIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9oND5cbiAgICAgICAgICAgICAgICAgIDwvaW9uLXRleHQ+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgPC9pb24tcm93PlxuICAgICAgICA8L2lvbi1ncmlkPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDwhLS0gUGVlciBpcyBET1dOIC0tPlxuICAgICAgICA8aW9uLWljb24gc2xvdD1cInN0YXJ0XCIgbmFtZT1cImRlc2t0b3BcIiBjbGFzcz1cImRpc2FibGVkIGlvbi1pY29uLWF2YXRhclwiPjwvaW9uLWljb24+XG5cbiAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cImlvbi10ZXh0LXdyYXBcIj5cbiAgICAgICAgICA8aW9uLXRleHQgY29sb3I9XCJtZWRpdW1cIj5cbiAgICAgICAgICAgIDxoMz57eyBwZWVyLmhvc3RBbmRQb3J0IH19e3sgcGVlci5wYXRoIH19PC9oMz5cbiAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICAgIDxpb24tdGV4dCBjb2xvcj1cImRhbmdlclwiPlxuICAgICAgICAgICAgPGg0PlxuICAgICAgICAgICAgICA8c21hbGw+PGlvbi1pY29uIHNpemU9XCJzbWFsbFwiIG5hbWU9XCJjbG9zZS1jaXJjbGVcIj48L2lvbi1pY29uPjwvc21hbGw+XG4gICAgICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5ORVRXT1JLLlBFRVIuT0ZGTElORTwvc3Bhbj5cbiAgICAgICAgICAgIDwvaDQ+XG4gICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICB9XG4gICAgPC9pb24taXRlbT5cbiAgPC9pb24tbGlzdD5cbjwvaW9uLWNvbnRlbnQ+XG5cbkBpZiAoKGNhbkNhbmNlbCAmJiAhbW9iaWxlKSB8fCBzaG93U2V0TWFudWFsbHlCdXR0b24pIHtcbiAgPGlvbi1mb290ZXI+XG4gICAgPGlvbi10b29sYmFyPlxuICAgICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tbm8tcGFkZGluZyBpb24tdGV4dC1ub3dyYXBcIj5cbiAgICAgICAgPGlvbi1jb2w+PC9pb24tY29sPlxuXG4gICAgICAgIDwhLS0gYnV0dG9ucyAtLT5cbiAgICAgICAgQGlmIChzaG93U2V0TWFudWFsbHlCdXR0b24pIHtcbiAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiYXV0b1wiPlxuICAgICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cImNsZWFyXCIgY29sb3I9XCJkYXJrXCIgKGNsaWNrKT1cImNsaWNrU2V0TWFudWFsbHkoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICA8aW9uLWxhYmVsIHRyYW5zbGF0ZT5ORVRXT1JLLlBFRVIuU0VMRUNUX01PREFMLkJUTl9TRVRfTUFOVUFMTFk8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKGNhbkNhbmNlbCkge1xuICAgICAgICAgIDxpb24tY29sIHNpemU9XCJhdXRvXCIgaGlkZGVuLXhzIGhpZGRlbi1zbSBoaWRkZW4tbW9iaWxlPlxuICAgICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cImNsZWFyXCIgY29sb3I9XCJkYXJrXCIgKGNsaWNrKT1cImNhbmNlbCgpXCI+XG4gICAgICAgICAgICAgIDxpb24tbGFiZWwgdHJhbnNsYXRlPkNPTU1PTi5CVE5fQ0FOQ0VMPC9pb24tbGFiZWw+XG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICB9XG4gICAgICA8L2lvbi1yb3c+XG4gICAgPC9pb24tdG9vbGJhcj5cbiAgPC9pb24tZm9vdGVyPlxufVxuIl19
@@ -2,9 +2,12 @@ import { Injectable } from '@angular/core';
2
2
  import { Validators } from '@angular/forms';
3
3
  import { AppValidatorService } from '../validator/base.validator.class';
4
4
  import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/forms";
5
6
  export class ReferentialValidatorService extends AppValidatorService {
6
- constructor() {
7
- super();
7
+ formBuilder;
8
+ constructor(formBuilder) {
9
+ super(formBuilder);
10
+ this.formBuilder = formBuilder;
8
11
  }
9
12
  getRowValidator() {
10
13
  return this.getFormGroup();
@@ -34,10 +37,10 @@ export class ReferentialValidatorService extends AppValidatorService {
34
37
  getFormGroupOptions(data, opts) {
35
38
  return null;
36
39
  }
37
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ReferentialValidatorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
40
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ReferentialValidatorService, deps: [{ token: i1.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Injectable });
38
41
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ReferentialValidatorService });
39
42
  }
40
43
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ReferentialValidatorService, decorators: [{
41
44
  type: Injectable
42
- }], ctorParameters: () => [] });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXJlbnRpYWwudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL3Rlc3RpbmcvcmVmZXJlbnRpYWwudmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUE0QyxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFHeEUsTUFBTSxPQUFPLDJCQUFpRSxTQUFRLG1CQUFzQjtJQUMxRztRQUNFLEtBQUssRUFBRSxDQUFDO0lBQ1YsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsWUFBWSxDQUNWLElBQVEsRUFDUixJQUdDO1FBRUQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRyxDQUFDO0lBRUQsa0JBQWtCLENBQ2hCLElBQVEsRUFDUixJQUdDO1FBRUQsTUFBTSxjQUFjLEdBQTJCO1lBQzdDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUM7WUFDL0IsVUFBVSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQztZQUMvQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxDQUFDO1lBQ25ELFFBQVEsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUNoRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDO1lBQ3pDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUMxRCxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDeEQsVUFBVSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1NBQ3JFLENBQUM7UUFFRixJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDNUMsY0FBYyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQy9GLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDekMsY0FBYyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzFGLENBQUM7UUFFRCxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRUQsbUJBQW1CLENBQUMsSUFBUSxFQUFFLElBQVU7UUFDdEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO3dHQWpEVSwyQkFBMkI7NEdBQTNCLDJCQUEyQjs7NEZBQTNCLDJCQUEyQjtrQkFEdkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbE9wdGlvbnMsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBSZWZlcmVudGlhbCB9IGZyb20gJy4uL21vZGVsL3JlZmVyZW50aWFsLm1vZGVsJztcbmltcG9ydCB7IEFwcFZhbGlkYXRvclNlcnZpY2UgfSBmcm9tICcuLi92YWxpZGF0b3IvYmFzZS52YWxpZGF0b3IuY2xhc3MnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUmVmZXJlbnRpYWxWYWxpZGF0b3JTZXJ2aWNlPFQgZXh0ZW5kcyBSZWZlcmVudGlhbCA9IFJlZmVyZW50aWFsPiBleHRlbmRzIEFwcFZhbGlkYXRvclNlcnZpY2U8VD4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZ2V0Um93VmFsaWRhdG9yKCk6IFVudHlwZWRGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLmdldEZvcm1Hcm91cCgpO1xuICB9XG5cbiAgZ2V0Rm9ybUdyb3VwKFxuICAgIGRhdGE/OiBULFxuICAgIG9wdHM/OiB7XG4gICAgICB3aXRoRGVzY3JpcHRpb24/OiBib29sZWFuO1xuICAgICAgd2l0aENvbW1lbnRzPzogYm9vbGVhbjtcbiAgICB9XG4gICk6IFVudHlwZWRGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHRoaXMuZ2V0Rm9ybUdyb3VwQ29uZmlnKGRhdGEsIG9wdHMpLCB0aGlzLmdldEZvcm1Hcm91cE9wdGlvbnMoZGF0YSwgb3B0cykpO1xuICB9XG5cbiAgZ2V0Rm9ybUdyb3VwQ29uZmlnKFxuICAgIGRhdGE/OiBULFxuICAgIG9wdHM/OiB7XG4gICAgICB3aXRoRGVzY3JpcHRpb24/OiBib29sZWFuO1xuICAgICAgd2l0aENvbW1lbnRzPzogYm9vbGVhbjtcbiAgICB9XG4gICk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgIGNvbnN0IGNvbnRyb2xzQ29uZmlnOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge1xuICAgICAgaWQ6IFsoZGF0YSAmJiBkYXRhLmlkKSB8fCBudWxsXSxcbiAgICAgIHVwZGF0ZURhdGU6IFsoZGF0YSAmJiBkYXRhLnVwZGF0ZURhdGUpIHx8IG51bGxdLFxuICAgICAgY3JlYXRpb25EYXRlOiBbKGRhdGEgJiYgZGF0YS5jcmVhdGlvbkRhdGUpIHx8IG51bGxdLFxuICAgICAgc3RhdHVzSWQ6IFsoZGF0YSAmJiBkYXRhLnN0YXR1c0lkKSB8fCBudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIGxldmVsSWQ6IFsoZGF0YSAmJiBkYXRhLmxldmVsSWQpIHx8IG51bGxdLFxuICAgICAgbGFiZWw6IFsoZGF0YSAmJiBkYXRhLmxhYmVsKSB8fCBudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIG5hbWU6IFsoZGF0YSAmJiBkYXRhLm5hbWUpIHx8IG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgZW50aXR5TmFtZTogWyhkYXRhICYmIGRhdGEuZW50aXR5TmFtZSkgfHwgbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgfTtcblxuICAgIGlmICghb3B0cyB8fCBvcHRzLndpdGhEZXNjcmlwdGlvbiAhPT0gZmFsc2UpIHtcbiAgICAgIGNvbnRyb2xzQ29uZmlnLmRlc2NyaXB0aW9uID0gWyhkYXRhICYmIGRhdGEuZGVzY3JpcHRpb24pIHx8IG51bGwsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NSldO1xuICAgIH1cbiAgICBpZiAoIW9wdHMgfHwgb3B0cy53aXRoQ29tbWVudHMgIT09IGZhbHNlKSB7XG4gICAgICBjb250cm9sc0NvbmZpZy5jb21tZW50cyA9IFsoZGF0YSAmJiBkYXRhLmNvbW1lbnRzKSB8fCBudWxsLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyMDAwKV07XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRyb2xzQ29uZmlnO1xuICB9XG5cbiAgZ2V0Rm9ybUdyb3VwT3B0aW9ucyhkYXRhPzogVCwgb3B0cz86IGFueSk6IEFic3RyYWN0Q29udHJvbE9wdGlvbnMgfCBudWxsIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl19
45
+ }], ctorParameters: () => [{ type: i1.UntypedFormBuilder }] });
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXJlbnRpYWwudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL3Rlc3RpbmcvcmVmZXJlbnRpYWwudmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFnRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7O0FBSXhFLE1BQU0sT0FBTywyQkFBaUUsU0FBUSxtQkFBc0I7SUFDcEY7SUFBdEIsWUFBc0IsV0FBK0I7UUFDbkQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBREMsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO0lBRXJELENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELFlBQVksQ0FDVixJQUFRLEVBQ1IsSUFHQztRQUVELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDM0csQ0FBQztJQUVELGtCQUFrQixDQUNoQixJQUFRLEVBQ1IsSUFHQztRQUVELE1BQU0sY0FBYyxHQUEyQjtZQUM3QyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDO1lBQy9CLFVBQVUsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUM7WUFDL0MsWUFBWSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLElBQUksQ0FBQztZQUNuRCxRQUFRLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDaEUsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQztZQUN6QyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDMUQsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ3hELFVBQVUsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztTQUNyRSxDQUFDO1FBRUYsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzVDLGNBQWMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMvRixDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3pDLGNBQWMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMxRixDQUFDO1FBRUQsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVELG1CQUFtQixDQUFDLElBQVEsRUFBRSxJQUFVO1FBQ3RDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzt3R0FqRFUsMkJBQTJCOzRHQUEzQiwyQkFBMkI7OzRGQUEzQiwyQkFBMkI7a0JBRHZDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2xPcHRpb25zLCBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBSZWZlcmVudGlhbCB9IGZyb20gJy4uL21vZGVsL3JlZmVyZW50aWFsLm1vZGVsJztcbmltcG9ydCB7IEFwcFZhbGlkYXRvclNlcnZpY2UgfSBmcm9tICcuLi92YWxpZGF0b3IvYmFzZS52YWxpZGF0b3IuY2xhc3MnO1xuaW1wb3J0IHsgU3RhdHVzSWRzIH0gZnJvbSAnLi4vbW9kZWwvbW9kZWwuZW51bSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSZWZlcmVudGlhbFZhbGlkYXRvclNlcnZpY2U8VCBleHRlbmRzIFJlZmVyZW50aWFsID0gUmVmZXJlbnRpYWw+IGV4dGVuZHMgQXBwVmFsaWRhdG9yU2VydmljZTxUPiB7XG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyKSB7XG4gICAgc3VwZXIoZm9ybUJ1aWxkZXIpO1xuICB9XG5cbiAgZ2V0Um93VmFsaWRhdG9yKCk6IFVudHlwZWRGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLmdldEZvcm1Hcm91cCgpO1xuICB9XG5cbiAgZ2V0Rm9ybUdyb3VwKFxuICAgIGRhdGE/OiBULFxuICAgIG9wdHM/OiB7XG4gICAgICB3aXRoRGVzY3JpcHRpb24/OiBib29sZWFuO1xuICAgICAgd2l0aENvbW1lbnRzPzogYm9vbGVhbjtcbiAgICB9XG4gICk6IFVudHlwZWRGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHRoaXMuZ2V0Rm9ybUdyb3VwQ29uZmlnKGRhdGEsIG9wdHMpLCB0aGlzLmdldEZvcm1Hcm91cE9wdGlvbnMoZGF0YSwgb3B0cykpO1xuICB9XG5cbiAgZ2V0Rm9ybUdyb3VwQ29uZmlnKFxuICAgIGRhdGE/OiBULFxuICAgIG9wdHM/OiB7XG4gICAgICB3aXRoRGVzY3JpcHRpb24/OiBib29sZWFuO1xuICAgICAgd2l0aENvbW1lbnRzPzogYm9vbGVhbjtcbiAgICB9XG4gICk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgIGNvbnN0IGNvbnRyb2xzQ29uZmlnOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge1xuICAgICAgaWQ6IFsoZGF0YSAmJiBkYXRhLmlkKSB8fCBudWxsXSxcbiAgICAgIHVwZGF0ZURhdGU6IFsoZGF0YSAmJiBkYXRhLnVwZGF0ZURhdGUpIHx8IG51bGxdLFxuICAgICAgY3JlYXRpb25EYXRlOiBbKGRhdGEgJiYgZGF0YS5jcmVhdGlvbkRhdGUpIHx8IG51bGxdLFxuICAgICAgc3RhdHVzSWQ6IFsoZGF0YSAmJiBkYXRhLnN0YXR1c0lkKSB8fCBudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIGxldmVsSWQ6IFsoZGF0YSAmJiBkYXRhLmxldmVsSWQpIHx8IG51bGxdLFxuICAgICAgbGFiZWw6IFsoZGF0YSAmJiBkYXRhLmxhYmVsKSB8fCBudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIG5hbWU6IFsoZGF0YSAmJiBkYXRhLm5hbWUpIHx8IG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgZW50aXR5TmFtZTogWyhkYXRhICYmIGRhdGEuZW50aXR5TmFtZSkgfHwgbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgfTtcblxuICAgIGlmICghb3B0cyB8fCBvcHRzLndpdGhEZXNjcmlwdGlvbiAhPT0gZmFsc2UpIHtcbiAgICAgIGNvbnRyb2xzQ29uZmlnLmRlc2NyaXB0aW9uID0gWyhkYXRhICYmIGRhdGEuZGVzY3JpcHRpb24pIHx8IG51bGwsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NSldO1xuICAgIH1cbiAgICBpZiAoIW9wdHMgfHwgb3B0cy53aXRoQ29tbWVudHMgIT09IGZhbHNlKSB7XG4gICAgICBjb250cm9sc0NvbmZpZy5jb21tZW50cyA9IFsoZGF0YSAmJiBkYXRhLmNvbW1lbnRzKSB8fCBudWxsLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyMDAwKV07XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRyb2xzQ29uZmlnO1xuICB9XG5cbiAgZ2V0Rm9ybUdyb3VwT3B0aW9ucyhkYXRhPzogVCwgb3B0cz86IGFueSk6IEFic3RyYWN0Q29udHJvbE9wdGlvbnMgfCBudWxsIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl19
@@ -1,11 +1,21 @@
1
- import { inject, Injectable } from '@angular/core';
2
- import { UserSettingsValidatorService } from './user-settings.validator';
1
+ import { Injectable } from '@angular/core';
3
2
  import { PersonValidatorService } from '../../../admin/services/validator/person.validator';
4
3
  import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/forms";
5
+ import * as i2 from "@ngx-translate/core";
6
+ import * as i3 from "../account.service";
7
+ import * as i4 from "./user-settings.validator";
5
8
  export class AccountValidatorService extends PersonValidatorService {
6
- userSettingsValidatorService = inject(UserSettingsValidatorService);
7
- constructor() {
8
- super();
9
+ formBuilder;
10
+ translate;
11
+ accountService;
12
+ userSettingsValidatorService;
13
+ constructor(formBuilder, translate, accountService, userSettingsValidatorService) {
14
+ super(formBuilder, translate, accountService);
15
+ this.formBuilder = formBuilder;
16
+ this.translate = translate;
17
+ this.accountService = accountService;
18
+ this.userSettingsValidatorService = userSettingsValidatorService;
9
19
  }
10
20
  getFormGroupConfig(data, opts) {
11
21
  opts = this.fillDefaultOptions(opts);
@@ -25,11 +35,11 @@ export class AccountValidatorService extends PersonValidatorService {
25
35
  ...super.fillDefaultOptions(opts),
26
36
  };
27
37
  }
28
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AccountValidatorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
38
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AccountValidatorService, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.TranslateService }, { token: i3.AccountService }, { token: i4.UserSettingsValidatorService }], target: i0.ɵɵFactoryTarget.Injectable });
29
39
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AccountValidatorService, providedIn: 'root' });
30
40
  }
31
41
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AccountValidatorService, decorators: [{
32
42
  type: Injectable,
33
43
  args: [{ providedIn: 'root' }]
34
- }], ctorParameters: () => [] });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC52YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvdmFsaWRhdG9yL2FjY291bnQudmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pFLE9BQU8sRUFBMEIsc0JBQXNCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7QUFRcEgsTUFBTSxPQUFPLHVCQUdYLFNBQVEsc0JBQTRCO0lBQ2pCLDRCQUE0QixHQUFHLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBRXZGO1FBQ0UsS0FBSyxFQUFFLENBQUM7SUFDVixDQUFDO0lBRUQsa0JBQWtCLENBQUMsSUFBUSxFQUFFLElBQVE7UUFDbkMsSUFBSSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyQyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXhELElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLFVBQVUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdkYsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRVMsa0JBQWtCLENBQUMsSUFBUTtRQUNuQyxPQUFPO1lBQ0wsWUFBWSxFQUFFLElBQUk7WUFDbEIsVUFBVSxFQUFFLElBQUk7WUFDaEIsR0FBRyxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDO1NBQ2xDLENBQUM7SUFDSixDQUFDO3dHQS9CVSx1QkFBdUI7NEdBQXZCLHVCQUF1QixjQURWLE1BQU07OzRGQUNuQix1QkFBdUI7a0JBRG5DLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY2NvdW50IH0gZnJvbSAnLi4vbW9kZWwvYWNjb3VudC5tb2RlbCc7XG5pbXBvcnQgeyBVc2VyU2V0dGluZ3NWYWxpZGF0b3JTZXJ2aWNlIH0gZnJvbSAnLi91c2VyLXNldHRpbmdzLnZhbGlkYXRvcic7XG5pbXBvcnQgeyBQZXJzb25WYWxpZGF0b3JPcHRpb25zLCBQZXJzb25WYWxpZGF0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYWRtaW4vc2VydmljZXMvdmFsaWRhdG9yL3BlcnNvbi52YWxpZGF0b3InO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFjY291bnRWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgUGVyc29uVmFsaWRhdG9yT3B0aW9ucyB7XG4gIHdpdGhTZXR0aW5ncz86IGJvb2xlYW47XG4gIHdpdGhUb2tlbnM/OiBib29sZWFuO1xufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFjY291bnRWYWxpZGF0b3JTZXJ2aWNlPFxuICBUIGV4dGVuZHMgQWNjb3VudCA9IEFjY291bnQsXG4gIE8gZXh0ZW5kcyBBY2NvdW50VmFsaWRhdG9yT3B0aW9ucyA9IEFjY291bnRWYWxpZGF0b3JPcHRpb25zLFxuPiBleHRlbmRzIFBlcnNvblZhbGlkYXRvclNlcnZpY2U8VCwgTz4ge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdXNlclNldHRpbmdzVmFsaWRhdG9yU2VydmljZSA9IGluamVjdChVc2VyU2V0dGluZ3NWYWxpZGF0b3JTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZ2V0Rm9ybUdyb3VwQ29uZmlnKGRhdGE/OiBULCBvcHRzPzogTyk6IHsgW2tleTogc3RyaW5nXTogYW55W10gfSB7XG4gICAgb3B0cyA9IHRoaXMuZmlsbERlZmF1bHRPcHRpb25zKG9wdHMpO1xuXG4gICAgY29uc3QgZm9ybUNvbmZpZyA9IHN1cGVyLmdldEZvcm1Hcm91cENvbmZpZyhkYXRhLCBvcHRzKTtcblxuICAgIGlmIChvcHRzLndpdGhTZXR0aW5ncykge1xuICAgICAgZm9ybUNvbmZpZy5zZXR0aW5ncyA9IHRoaXMudXNlclNldHRpbmdzVmFsaWRhdG9yU2VydmljZS5nZXRGb3JtR3JvdXAoZGF0YT8uc2V0dGluZ3MpO1xuICAgIH1cbiAgICBpZiAob3B0cy53aXRoVG9rZW5zKSB7XG4gICAgICBmb3JtQ29uZmlnLnRva2VucyA9IFtkYXRhPy50b2tlbnMgfHwgbnVsbF07XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcm1Db25maWc7XG4gIH1cblxuICBwcm90ZWN0ZWQgZmlsbERlZmF1bHRPcHRpb25zKG9wdHM/OiBPKTogTyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdpdGhTZXR0aW5nczogdHJ1ZSxcbiAgICAgIHdpdGhUb2tlbnM6IHRydWUsXG4gICAgICAuLi5zdXBlci5maWxsRGVmYXVsdE9wdGlvbnMob3B0cyksXG4gICAgfTtcbiAgfVxufVxuIl19
44
+ }], ctorParameters: () => [{ type: i1.UntypedFormBuilder }, { type: i2.TranslateService }, { type: i3.AccountService }, { type: i4.UserSettingsValidatorService }] });
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC52YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvdmFsaWRhdG9yL2FjY291bnQudmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLM0MsT0FBTyxFQUEwQixzQkFBc0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDOzs7Ozs7QUFTcEgsTUFBTSxPQUFPLHVCQUdYLFNBQVEsc0JBQTRCO0lBRXhCO0lBQ0E7SUFDQTtJQUNBO0lBSlosWUFDWSxXQUErQixFQUMvQixTQUEyQixFQUMzQixjQUE4QixFQUM5Qiw0QkFBMEQ7UUFFcEUsS0FBSyxDQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFMcEMsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQy9CLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixpQ0FBNEIsR0FBNUIsNEJBQTRCLENBQThCO0lBR3RFLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxJQUFRLEVBQUUsSUFBUTtRQUNuQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXJDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFeEQsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsVUFBVSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsNEJBQTRCLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2RixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksRUFBRSxNQUFNLElBQUksSUFBSSxDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUVELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFUyxrQkFBa0IsQ0FBQyxJQUFRO1FBQ25DLE9BQU87WUFDTCxZQUFZLEVBQUUsSUFBSTtZQUNsQixVQUFVLEVBQUUsSUFBSTtZQUNoQixHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7U0FDbEMsQ0FBQztJQUNKLENBQUM7d0dBbENVLHVCQUF1Qjs0R0FBdkIsdUJBQXVCLGNBRFYsTUFBTTs7NEZBQ25CLHVCQUF1QjtrQkFEbkMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY2NvdW50IH0gZnJvbSAnLi4vbW9kZWwvYWNjb3VudC5tb2RlbCc7XG5pbXBvcnQgeyBBY2NvdW50U2VydmljZSB9IGZyb20gJy4uL2FjY291bnQuc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyU2V0dGluZ3NWYWxpZGF0b3JTZXJ2aWNlIH0gZnJvbSAnLi91c2VyLXNldHRpbmdzLnZhbGlkYXRvcic7XG5pbXBvcnQgeyBQZXJzb25WYWxpZGF0b3JPcHRpb25zLCBQZXJzb25WYWxpZGF0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYWRtaW4vc2VydmljZXMvdmFsaWRhdG9yL3BlcnNvbi52YWxpZGF0b3InO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFjY291bnRWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgUGVyc29uVmFsaWRhdG9yT3B0aW9ucyB7XG4gIHdpdGhTZXR0aW5ncz86IGJvb2xlYW47XG4gIHdpdGhUb2tlbnM/OiBib29sZWFuO1xufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFjY291bnRWYWxpZGF0b3JTZXJ2aWNlPFxuICBUIGV4dGVuZHMgQWNjb3VudCA9IEFjY291bnQsXG4gIE8gZXh0ZW5kcyBBY2NvdW50VmFsaWRhdG9yT3B0aW9ucyA9IEFjY291bnRWYWxpZGF0b3JPcHRpb25zLFxuPiBleHRlbmRzIFBlcnNvblZhbGlkYXRvclNlcnZpY2U8VCwgTz4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhY2NvdW50U2VydmljZTogQWNjb3VudFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHVzZXJTZXR0aW5nc1ZhbGlkYXRvclNlcnZpY2U6IFVzZXJTZXR0aW5nc1ZhbGlkYXRvclNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoZm9ybUJ1aWxkZXIsIHRyYW5zbGF0ZSwgYWNjb3VudFNlcnZpY2UpO1xuICB9XG5cbiAgZ2V0Rm9ybUdyb3VwQ29uZmlnKGRhdGE/OiBULCBvcHRzPzogTyk6IHsgW2tleTogc3RyaW5nXTogYW55W10gfSB7XG4gICAgb3B0cyA9IHRoaXMuZmlsbERlZmF1bHRPcHRpb25zKG9wdHMpO1xuXG4gICAgY29uc3QgZm9ybUNvbmZpZyA9IHN1cGVyLmdldEZvcm1Hcm91cENvbmZpZyhkYXRhLCBvcHRzKTtcblxuICAgIGlmIChvcHRzLndpdGhTZXR0aW5ncykge1xuICAgICAgZm9ybUNvbmZpZy5zZXR0aW5ncyA9IHRoaXMudXNlclNldHRpbmdzVmFsaWRhdG9yU2VydmljZS5nZXRGb3JtR3JvdXAoZGF0YT8uc2V0dGluZ3MpO1xuICAgIH1cbiAgICBpZiAob3B0cy53aXRoVG9rZW5zKSB7XG4gICAgICBmb3JtQ29uZmlnLnRva2VucyA9IFtkYXRhPy50b2tlbnMgfHwgbnVsbF07XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcm1Db25maWc7XG4gIH1cblxuICBwcm90ZWN0ZWQgZmlsbERlZmF1bHRPcHRpb25zKG9wdHM/OiBPKTogTyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdpdGhTZXR0aW5nczogdHJ1ZSxcbiAgICAgIHdpdGhUb2tlbnM6IHRydWUsXG4gICAgICAuLi5zdXBlci5maWxsRGVmYXVsdE9wdGlvbnMob3B0cyksXG4gICAgfTtcbiAgfVxufVxuIl19