@bizdoc/core 2.3.18 → 2.3.20

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 (224) hide show
  1. package/esm2022/lib/admin/admin-menu.component.mjs +9 -10
  2. package/esm2022/lib/admin/architecture/cube-axes-filter.component.mjs +11 -11
  3. package/esm2022/lib/admin/architecture/designer-element.component.mjs +4 -4
  4. package/esm2022/lib/admin/architecture/designer-privileges.component.mjs +15 -16
  5. package/esm2022/lib/admin/architecture/designer.component.mjs +16 -15
  6. package/esm2022/lib/admin/architecture/elements/analysis-view.component.mjs +13 -14
  7. package/esm2022/lib/admin/architecture/elements/analysis-widget.component.mjs +11 -12
  8. package/esm2022/lib/admin/architecture/elements/anomaly-rule.component.mjs +4 -5
  9. package/esm2022/lib/admin/architecture/elements/attribute.component.mjs +10 -11
  10. package/esm2022/lib/admin/architecture/elements/box-form.component.mjs +11 -12
  11. package/esm2022/lib/admin/architecture/elements/configuration-datasource.component.mjs +13 -14
  12. package/esm2022/lib/admin/architecture/elements/cube-index-utility.component.mjs +9 -10
  13. package/esm2022/lib/admin/architecture/elements/cube-view.component.mjs +11 -12
  14. package/esm2022/lib/admin/architecture/elements/cube.component.mjs +23 -24
  15. package/esm2022/lib/admin/architecture/elements/document-state-widget.component.mjs +11 -12
  16. package/esm2022/lib/admin/architecture/elements/documents-report.component.mjs +10 -11
  17. package/esm2022/lib/admin/architecture/elements/documents-widget.component.mjs +10 -11
  18. package/esm2022/lib/admin/architecture/elements/explore-view.component.mjs +10 -11
  19. package/esm2022/lib/admin/architecture/elements/folder.component.mjs +16 -17
  20. package/esm2022/lib/admin/architecture/elements/form-invite.dialog.mjs +17 -18
  21. package/esm2022/lib/admin/architecture/elements/form.component.mjs +22 -23
  22. package/esm2022/lib/admin/architecture/elements/guide.component.mjs +16 -17
  23. package/esm2022/lib/admin/architecture/elements/job.component.mjs +12 -13
  24. package/esm2022/lib/admin/architecture/elements/matrix-view.component.mjs +9 -10
  25. package/esm2022/lib/admin/architecture/elements/parallel-view.component.mjs +12 -13
  26. package/esm2022/lib/admin/architecture/elements/performance-report.component.mjs +10 -11
  27. package/esm2022/lib/admin/architecture/elements/performance-widget.component.mjs +10 -11
  28. package/esm2022/lib/admin/architecture/elements/pivot-view.component.mjs +10 -11
  29. package/esm2022/lib/admin/architecture/elements/report.component.mjs +10 -11
  30. package/esm2022/lib/admin/architecture/elements/return-to-role-action.component.mjs +8 -9
  31. package/esm2022/lib/admin/architecture/elements/role.component.mjs +13 -14
  32. package/esm2022/lib/admin/architecture/elements/sum-view.component.mjs +10 -11
  33. package/esm2022/lib/admin/architecture/elements/tasks-report.component.mjs +13 -13
  34. package/esm2022/lib/admin/architecture/elements/type.component.mjs +18 -19
  35. package/esm2022/lib/admin/architecture/elements/usage-report.component.mjs +11 -12
  36. package/esm2022/lib/admin/architecture/elements/widget.component.mjs +10 -11
  37. package/esm2022/lib/admin/architecture/icon-picker.component.mjs +7 -8
  38. package/esm2022/lib/admin/core/color-picker.input.mjs +5 -6
  39. package/esm2022/lib/admin/core/localized-string.component.mjs +10 -11
  40. package/esm2022/lib/admin/diff/configuration-diff.component.mjs +11 -11
  41. package/esm2022/lib/admin/document-trace/document-trace.component.mjs +18 -18
  42. package/esm2022/lib/admin/document-trace/reassign.dialog.mjs +12 -12
  43. package/esm2022/lib/admin/document-trace/trace-element.component.mjs +13 -12
  44. package/esm2022/lib/admin/form/designer/box-designer.component.mjs +24 -60
  45. package/esm2022/lib/admin/form/designer/declarations.mjs +1 -1
  46. package/esm2022/lib/admin/form/designer/design-control.component.mjs +41 -0
  47. package/esm2022/lib/admin/form/designer/properties.component.mjs +11 -12
  48. package/esm2022/lib/admin/form/designer/section.component.mjs +11 -12
  49. package/esm2022/lib/admin/form/workflow/node.component.mjs +9 -10
  50. package/esm2022/lib/admin/form/workflow/role-node.component.mjs +15 -16
  51. package/esm2022/lib/admin/form/workflow/workflow.component.mjs +3 -3
  52. package/esm2022/lib/admin/indices/manage-cube-index.component.mjs +13 -13
  53. package/esm2022/lib/admin/patterns/patterns.component.mjs +19 -19
  54. package/esm2022/lib/admin/permissions/permissions.component.mjs +14 -15
  55. package/esm2022/lib/admin/positions/positions-popup.component.mjs +11 -11
  56. package/esm2022/lib/admin/positions/positions.component.mjs +23 -24
  57. package/esm2022/lib/admin/profiler/outofoffice.component.mjs +13 -13
  58. package/esm2022/lib/admin/profiler/profiler.component.mjs +15 -15
  59. package/esm2022/lib/browse/browse-items.component.mjs +3 -3
  60. package/esm2022/lib/browse/browse.mobile.component.mjs +15 -16
  61. package/esm2022/lib/browse/browse.pane.component.mjs +14 -15
  62. package/esm2022/lib/browse/expanded-item/expanded-item.component.mjs +14 -15
  63. package/esm2022/lib/browse/filter/filter.component.mjs +13 -13
  64. package/esm2022/lib/browse/folders-menu.component.mjs +10 -11
  65. package/esm2022/lib/chat/chat.mobile.component.mjs +5 -6
  66. package/esm2022/lib/chat/contacts.component.mjs +16 -16
  67. package/esm2022/lib/chat/conversation.component.mjs +13 -14
  68. package/esm2022/lib/compose/action/action-picker.component.mjs +9 -10
  69. package/esm2022/lib/compose/action/action.dialog.mjs +8 -9
  70. package/esm2022/lib/compose/action/action.pane.dialog.exp.mjs +6 -7
  71. package/esm2022/lib/compose/action/assign-action.component.mjs +12 -12
  72. package/esm2022/lib/compose/action/moveto-action.component.mjs +11 -11
  73. package/esm2022/lib/compose/action/return-action.component.mjs +9 -9
  74. package/esm2022/lib/compose/attachments/attachments.component.mjs +11 -12
  75. package/esm2022/lib/compose/attachments/preview/attachment-preview.component.mjs +8 -9
  76. package/esm2022/lib/compose/box/box.component.mjs +7 -8
  77. package/esm2022/lib/compose/comments/comment.component.mjs +14 -15
  78. package/esm2022/lib/compose/comments/comments.component.mjs +8 -9
  79. package/esm2022/lib/compose/comments/edits.component.mjs +5 -5
  80. package/esm2022/lib/compose/comments/quick-comment.component.exp.mjs +5 -6
  81. package/esm2022/lib/compose/comments/votes.component.mjs +8 -8
  82. package/esm2022/lib/compose/compose.mobile.component.mjs +16 -17
  83. package/esm2022/lib/compose/compose.pane.component.mjs +15 -16
  84. package/esm2022/lib/compose/copy/copy.dialog.mjs +11 -11
  85. package/esm2022/lib/compose/events/events.component.mjs +7 -8
  86. package/esm2022/lib/compose/form-selector/form-selector.sheet.mjs +7 -8
  87. package/esm2022/lib/compose/form.component.mjs +5 -5
  88. package/esm2022/lib/compose/new-menu.component.mjs +8 -9
  89. package/esm2022/lib/compose/tag/tags.component.mjs +10 -10
  90. package/esm2022/lib/compose/trace/people.component.mjs +4 -5
  91. package/esm2022/lib/compose/version-compare/version.pane.component.mjs +10 -11
  92. package/esm2022/lib/core/animations.mjs +7 -1
  93. package/esm2022/lib/core/checkbox.mjs +20 -17
  94. package/esm2022/lib/core/fields/address.field.mjs +35 -26
  95. package/esm2022/lib/core/fields/autocomplete.field.mjs +68 -52
  96. package/esm2022/lib/core/fields/checkbox.field.mjs +9 -10
  97. package/esm2022/lib/core/fields/checklist.designer.mjs +66 -47
  98. package/esm2022/lib/core/fields/checklist.field.mjs +8 -9
  99. package/esm2022/lib/core/fields/date-range.field.mjs +6 -6
  100. package/esm2022/lib/core/fields/date.field.mjs +10 -11
  101. package/esm2022/lib/core/fields/expression.field.mjs +31 -23
  102. package/esm2022/lib/core/fields/file.field.mjs +8 -9
  103. package/esm2022/lib/core/fields/html.field.mjs +9 -10
  104. package/esm2022/lib/core/fields/input.field.mjs +8 -9
  105. package/esm2022/lib/core/fields/numeric.field.mjs +7 -7
  106. package/esm2022/lib/core/fields/options.component.mjs +11 -12
  107. package/esm2022/lib/core/fields/radio-button.designer.mjs +10 -11
  108. package/esm2022/lib/core/fields/radio-button.field.mjs +8 -9
  109. package/esm2022/lib/core/fields/select.designer.mjs +71 -52
  110. package/esm2022/lib/core/fields/select.field.mjs +9 -10
  111. package/esm2022/lib/core/fields/signature.field.mjs +10 -11
  112. package/esm2022/lib/core/fields/switch.field.mjs +8 -9
  113. package/esm2022/lib/core/fields/tags.field.mjs +9 -10
  114. package/esm2022/lib/core/fields/textarea.field.mjs +9 -10
  115. package/esm2022/lib/core/fields/time.field.mjs +9 -10
  116. package/esm2022/lib/core/fields/timespan.field.mjs +33 -26
  117. package/esm2022/lib/core/fields/yesno.designer.mjs +70 -55
  118. package/esm2022/lib/core/fields/yesno.field.mjs +8 -9
  119. package/esm2022/lib/core/guide/guide.component.mjs +7 -8
  120. package/esm2022/lib/core/guide/help-tip.component.mjs +21 -18
  121. package/esm2022/lib/core/identity/identity.component.mjs +5 -6
  122. package/esm2022/lib/core/inputs/address.input.mjs +24 -21
  123. package/esm2022/lib/core/inputs/auto-complete.input.mjs +42 -26
  124. package/esm2022/lib/core/inputs/combination-picker-body.mjs +12 -13
  125. package/esm2022/lib/core/inputs/combination-picker.mjs +8 -5
  126. package/esm2022/lib/core/inputs/combination-pool.mjs +7 -8
  127. package/esm2022/lib/core/inputs/file.input.mjs +11 -12
  128. package/esm2022/lib/core/inputs/select.input.mjs +39 -23
  129. package/esm2022/lib/core/inputs/time-picker.mjs +6 -7
  130. package/esm2022/lib/core/mailbox.service.mjs +1 -1
  131. package/esm2022/lib/core/models.mjs +1 -1
  132. package/esm2022/lib/core/none.component.mjs +19 -22
  133. package/esm2022/lib/core/slots/slots.component.mjs +13 -14
  134. package/esm2022/lib/core/tagging/documents.component.mjs +7 -7
  135. package/esm2022/lib/core/tagging/edit-input.component.mjs +12 -13
  136. package/esm2022/lib/core/tagging/users.component.mjs +7 -7
  137. package/esm2022/lib/core/translations.mjs +2 -2
  138. package/esm2022/lib/cube/cube-menu.component.mjs +8 -9
  139. package/esm2022/lib/cube/explore/explore-items.component.mjs +8 -8
  140. package/esm2022/lib/cube/filter/filter-tags.component.exp.mjs +6 -7
  141. package/esm2022/lib/cube/filter/filter.component.mjs +11 -11
  142. package/esm2022/lib/cube/grid/spreadsheet.component.mjs +1 -2
  143. package/esm2022/lib/cube/matrix/matrix.mobile.component.mjs +12 -12
  144. package/esm2022/lib/cube/matrix/matrix.pane.component.mjs +12 -12
  145. package/esm2022/lib/cube/matrix/popup.component.mjs +10 -10
  146. package/esm2022/lib/cube/matrix/table.component.mjs +3 -4
  147. package/esm2022/lib/cube/parallel/parallel.component.mjs +4 -5
  148. package/esm2022/lib/cube/sum/sum.component.mjs +3 -3
  149. package/esm2022/lib/cube/view.mobile.component.mjs +16 -17
  150. package/esm2022/lib/cube/view.pane.component.mjs +12 -13
  151. package/esm2022/lib/dashboard/dashboard.component.mjs +11 -12
  152. package/esm2022/lib/dashboard/recents/recents.widget.mjs +11 -12
  153. package/esm2022/lib/dashboard/score/activity.widget.mjs +4 -5
  154. package/esm2022/lib/dashboard/score/peers-performance.widget.mjs +5 -5
  155. package/esm2022/lib/dashboard/score/pending-results.widget.mjs +11 -12
  156. package/esm2022/lib/dashboard/score/personal-score.widget.mjs +3 -2
  157. package/esm2022/lib/designer.module.mjs +6 -5
  158. package/esm2022/lib/home/about/about.dialog.mjs +7 -8
  159. package/esm2022/lib/home/home.desktop.component.mjs +17 -18
  160. package/esm2022/lib/home/home.mobile.component.mjs +16 -17
  161. package/esm2022/lib/home/notifications/notifications.component.mjs +3 -3
  162. package/esm2022/lib/home/options/options.component.mjs +11 -11
  163. package/esm2022/lib/home/outofoffice/outofoffice.component.mjs +8 -9
  164. package/esm2022/lib/home/tools.component.mjs +13 -13
  165. package/esm2022/lib/impersonate/impersonate.component.mjs +10 -10
  166. package/esm2022/lib/modules/gantt.module.mjs +4 -2
  167. package/esm2022/lib/notifications/notifications-table.component.mjs +3 -3
  168. package/esm2022/lib/notifications/types/commented.notification.mjs +19 -12
  169. package/esm2022/lib/notifications/types/escalated.notification.mjs +6 -6
  170. package/esm2022/lib/notifications/types/liked.notification.mjs +19 -12
  171. package/esm2022/lib/notifications/types/tagged.notification.mjs +9 -9
  172. package/esm2022/lib/notifications/types/text.notification.mjs +6 -3
  173. package/esm2022/lib/options/options.component.mjs +52 -28
  174. package/esm2022/lib/options/options.service.mjs +26 -6
  175. package/esm2022/lib/reports/cube/table-documents.component.mjs +10 -10
  176. package/esm2022/lib/reports/report.mobile.component.mjs +12 -13
  177. package/esm2022/lib/reports/report.pane.component.mjs +10 -11
  178. package/esm2022/lib/reports/reports-menu.component.mjs +7 -8
  179. package/esm2022/lib/reports/substitution/substitution.component.mjs +10 -11
  180. package/esm2022/lib/reports/table/table-view.component.mjs +5 -6
  181. package/esm2022/lib/search/path.component.mjs +17 -18
  182. package/esm2022/lib/shared.module.mjs +4 -2
  183. package/esm2022/lib/system.module.mjs +5 -5
  184. package/esm2022/lib/views/cube/chart.component.mjs +6 -7
  185. package/esm2022/lib/views/cube/explore.component.mjs +10 -10
  186. package/esm2022/lib/views/cube/matrix.component.mjs +11 -11
  187. package/esm2022/lib/views/cube/parallel.component.mjs +4 -5
  188. package/esm2022/lib/views/cube/pivot.component.mjs +4 -5
  189. package/esm2022/lib/views/cube/sum.component.mjs +12 -10
  190. package/esm2022/lib/views/cube/view.component.mjs +11 -12
  191. package/esm2022/lib/views/timeline/timeline.component.exp.mjs +191 -192
  192. package/esm2022/lib/views/views.component.mjs +4 -5
  193. package/esm2022/public-api.mjs +3 -1
  194. package/fesm2022/bizdoc-core.mjs +3509 -3296
  195. package/fesm2022/bizdoc-core.mjs.map +1 -1
  196. package/lib/admin/architecture/elements/analysis-view.component.d.ts +2 -2
  197. package/lib/admin/architecture/elements/cube-view.component.d.ts +2 -2
  198. package/lib/admin/architecture/elements/form.component.d.ts +5 -5
  199. package/lib/admin/architecture/elements/matrix-view.component.d.ts +17 -9
  200. package/lib/admin/architecture/elements/parallel-view.component.d.ts +5 -5
  201. package/lib/admin/architecture/elements/tasks-report.component.d.ts +3 -2
  202. package/lib/admin/form/designer/box-designer.component.d.ts +26 -23
  203. package/lib/admin/form/designer/declarations.d.ts +2 -2
  204. package/lib/admin/form/designer/design-control.component.d.ts +19 -0
  205. package/lib/admin/form/designer/section.component.d.ts +3 -3
  206. package/lib/compose/attachments/attachments.component.d.ts +2 -2
  207. package/lib/core/animations.d.ts +1 -0
  208. package/lib/core/inputs/combination-picker.d.ts +1 -0
  209. package/lib/core/mailbox.service.d.ts +4 -3
  210. package/lib/core/models.d.ts +1 -1
  211. package/lib/cube/matrix/table.component.d.ts +2 -2
  212. package/lib/dashboard/score/peers-performance.widget.d.ts +1 -1
  213. package/lib/designer.module.d.ts +27 -26
  214. package/lib/notifications/types/escalated.notification.d.ts +1 -1
  215. package/lib/notifications/types/tagged.notification.d.ts +1 -1
  216. package/lib/notifications/types/text.notification.d.ts +1 -1
  217. package/lib/options/options.component.d.ts +6 -4
  218. package/lib/options/options.service.d.ts +7 -2
  219. package/lib/shared.module.d.ts +1 -1
  220. package/lib/system.module.d.ts +25 -25
  221. package/lib/views/cube/sum.component.d.ts +1 -0
  222. package/lib/views/timeline/timeline.component.exp.d.ts +2 -2
  223. package/package.json +1 -1
  224. package/public-api.d.ts +2 -0
@@ -16,21 +16,20 @@ import * as i5 from "../core/session.service";
16
16
  import * as i6 from "../core/hub.service";
17
17
  import * as i7 from "../core/translate.service";
18
18
  import * as i8 from "@angular/material/snack-bar";
19
- import * as i9 from "@angular/common";
20
- import * as i10 from "@angular/material/badge";
21
- import * as i11 from "@angular/material/list";
22
- import * as i12 from "@angular/material/divider";
23
- import * as i13 from "@angular/material/button";
24
- import * as i14 from "@angular/material/icon";
25
- import * as i15 from "../core/animated-icon/animated-icon.directive";
26
- import * as i16 from "../core/popup/tooltip.directive";
27
- import * as i17 from "../admin/admin-menu.component";
28
- import * as i18 from "../core/slots/slots.component";
29
- import * as i19 from "../cube/cube-menu.component";
30
- import * as i20 from "../reports/reports-menu.component";
31
- import * as i21 from "../browse/folders-menu.component";
32
- import * as i22 from "../compose/new-menu.component";
33
- import * as i23 from "../core/pipes/translate.pipe";
19
+ import * as i9 from "@angular/material/badge";
20
+ import * as i10 from "@angular/material/list";
21
+ import * as i11 from "@angular/material/divider";
22
+ import * as i12 from "@angular/material/button";
23
+ import * as i13 from "@angular/material/icon";
24
+ import * as i14 from "../core/animated-icon/animated-icon.directive";
25
+ import * as i15 from "../core/popup/tooltip.directive";
26
+ import * as i16 from "../admin/admin-menu.component";
27
+ import * as i17 from "../core/slots/slots.component";
28
+ import * as i18 from "../cube/cube-menu.component";
29
+ import * as i19 from "../reports/reports-menu.component";
30
+ import * as i20 from "../browse/folders-menu.component";
31
+ import * as i21 from "../compose/new-menu.component";
32
+ import * as i22 from "../core/pipes/translate.pipe";
34
33
  /** desktop home comp */
35
34
  export class HomeComponent extends HomeBase {
36
35
  get submenuMode() {
@@ -214,11 +213,11 @@ export class HomeComponent extends HomeBase {
214
213
  }
215
214
  }
216
215
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: HomeComponent, deps: [{ token: i1.PanesRouter }, { token: i2.MailboxService }, { token: i3.Popup }, { token: i4.PromptService }, { token: i0.Injector }, { token: i5.SessionService }, { token: i6.HubService }, { token: i7.TranslateService }, { token: i8.MatSnackBar }, { token: BIZDOC_CONFIG }], target: i0.ɵɵFactoryTarget.Component }); }
217
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.1", type: HomeComponent, selector: "bizdoc-home", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" }, classAttribute: "mat-app-background" }, viewQueries: [{ propertyName: "drawer", first: true, predicate: MatSidenav, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div [class.nav-collapsed]=\"collapsed\" [class.nav-open]=\"submenu\"\r\n [class.dialog]=\"dialog\"\r\n class=\"nav-menu row\">\r\n <!--[class.loading]=\"loading\"-->\r\n <div class=\"column\">\r\n <div>\r\n <div [class.active]=\"activeMenu === 'new'\" class=\"new-container\" *ngIf=\"forms.length\">\r\n <button mat-raised-button\r\n [bizdocTooltip]=\"'Compose'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\"\r\n (click)=\"opennew()\" [disabled]=\"creating\"\r\n [attr.aria-label]=\"'Compose'| translate\" color=\"primary\" data-help=\"compose\">\r\n <mat-icon>add</mat-icon>\r\n <span class=\"nav-label\">{{'Compose'| translate}}</span>\r\n </button>\r\n </div>\r\n <mat-nav-list>\r\n <mat-list-item [attr.aria-label]=\"'Dashboard' | translate\"\r\n (click)=\"nav('dashboard')\" [class.active]=\"activeMenu === 'dashboard'\"\r\n data-help=\"dashboard\"\r\n [bizdocTooltip]=\"'Dashboard'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">\r\n <mat-icon matListItemIcon>apps</mat-icon><span class=\"nav-label\" matListItemTitle>{{'Dashboard' | translate}}</span>\r\n </mat-list-item>\r\n <mat-list-item (click)=\"mails()\" [bizdocTooltip]=\"'Mailbox'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\"\r\n [class.active]=\"activeMenu === 'mailbox'\"\r\n [attr.aria-label]=\"'Mailbox' | translate\" data-help=\"folders\">\r\n <mat-icon matListItemIcon [matBadge]=\"profile.inboxCount\" [matBadgeHidden]=\"profile.inboxCount < 1\" matBadgeColor=\"accent\" aria-hidden=\"false\">inbox</mat-icon>\r\n <span class=\"nav-label\" matListItemTitle>{{'Mailbox' | translate}}</span>\r\n </mat-list-item>\r\n <mat-list-item [attr.aria-label]=\"'Scheduler' | translate\" *ngIf=\"schedulerEnabled\"\r\n (click)=\"nav('schedule')\" [class.active]=\"activeMenu === 'schedule'\"\r\n [bizdocTooltip]=\"'Scheduler'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">\r\n <mat-icon matListItemIcon class=\"mat-icon-rtl-mirror\">date_range</mat-icon><span class=\"nav-label\" matListItemTitle>{{ 'Scheduler' | translate}}</span>\r\n </mat-list-item>\r\n <mat-list-item *ngIf='chatEnabled' data-help=\"chat\" [attr.aria-label]=\"'Chat' | translate\"\r\n (click)=\"nav('contacts')\" [class.active]=\"activeMenu === 'contacts'\"\r\n [bizdocTooltip]=\"'Chat'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">\r\n <mat-icon matListItemIcon [matBadge]=\"profile.conversationsCount\" [matBadgeHidden]=\"!profile.conversationsCount\" matBadgeColor=\"accent\" aria-hidden=\"false\">chat</mat-icon>\r\n <span class=\"nav-label\" matListItemTitle>{{ 'Chat' | translate}}</span>\r\n </mat-list-item>\r\n <mat-divider></mat-divider>\r\n <mat-list-item *ngIf=\"enableAnalysis && profile.cubes.length\"\r\n (click)=\"opensubmenu('cube')\"\r\n [class.active]=\"activeMenu === 'cube'\"\r\n [bizdocTooltip]=\"'Cube'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\"\r\n data-help=\"cube\" [attr.aria-label]=\"'Cube' | translate\">\r\n <mat-icon matListItemIcon>equalizer</mat-icon><span class=\"nav-label\" matListItemTitle>{{'Cube' | translate}}</span>\r\n </mat-list-item>\r\n <mat-list-item *ngIf=\"profile.reports.length\"\r\n (click)=\"opensubmenu('reports')\"\r\n [class.active]=\"activeMenu === 'reports'\"\r\n [bizdocTooltip]=\"'Reports'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\" data-help=\"reports\" [attr.aria-label]=\"'Reports' | translate\">\r\n <mat-icon matListItemIcon>list_alt</mat-icon><span class=\"nav-label\" matListItemTitle>{{'Reports' | translate}}</span>\r\n </mat-list-item>\r\n <ng-container *ngIf=\"sysAdmin\">\r\n <mat-divider></mat-divider>\r\n <mat-list-item (click)=\"opensubmenu('admin')\"\r\n [class.active]=\"activeMenu === 'admin'\"\r\n [bizdocTooltip]=\"'System'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\" [attr.aria-label]=\"'System' | translate\">\r\n <mat-icon matListItemIcon>device_hub</mat-icon>\r\n <span class=\"nav-label\" matListItemTitle>{{'Workflow' | translate}}</span>\r\n </mat-list-item>\r\n </ng-container>\r\n </mat-nav-list>\r\n </div>\r\n <span class=\"divider\"></span>\r\n <!--<lottie name=\"lf30_editor_qr7zgmcs\" *ngIf=\"loading\"></lottie>-->\r\n <!--@animate-->\r\n <div class=\"sign-in\">\r\n <button mat-icon-button data-help=\"sign-in\" [bizdocTooltip]=\"'Settings' | translate\" bizdocTooltipPosition=\"above\"\r\n [attr.aria-label]=\"'Settings' | translate\" (click)=\"options($event)\">\r\n <mat-icon matAnimate=\"rotate\">settingson</mat-icon>\r\n </button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [attr.aria-label]=\"'Power' | translate\" (click)=\"signout($event)\" [bizdocTooltip]=\"'Exit'|translate\" bizdocTooltipPosition=\"above\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">logout</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n <!-- -->\r\n <div *ngIf=\"submenu\" class=\"sub-menu\" (mouseleave)=\"collapsesubmenu()\" [@submenu]=\"submenuMode\" (@submenu.done)=\"resize()\">\r\n <div class=\"action\" *ngIf=\"submenu !== 'new'\">\r\n <button mat-icon-button (click)=\"togglePinned()\" [bizdocTooltip]=\"(pinned?'Collapse':'Expand')|translate\"><mat-icon class=\"mat-icon-rtl-mirror\">{{pinned ? 'push_pin' : 'menu'}}</mat-icon></button>\r\n </div>\r\n <ng-container [ngSwitch]=\"submenu\">\r\n <bizdoc-new-menu *ngSwitchCase=\"'new'\" (change)=\"closesubmenu()\"></bizdoc-new-menu>\r\n <bizdoc-folders-menu *ngSwitchCase=\"'mailbox'\" [collapsed]=\"submenuMode === 'shrink'\" (change)=\"collapsesubmenu()\"></bizdoc-folders-menu>\r\n <bizdoc-admin-menu *ngSwitchCase=\"'admin'\" [collapsed]=\"submenuMode === 'shrink'\"></bizdoc-admin-menu>\r\n <bizdoc-reports-menu *ngSwitchCase=\"'reports'\" [collapsed]=\"submenuMode === 'shrink'\" (change)=\"collapsesubmenu()\"></bizdoc-reports-menu>\r\n <bizdoc-cube-menu *ngSwitchCase=\"'cube'\" [collapsed]=\"submenuMode === 'shrink'\" (change)=\"collapsesubmenu()\"></bizdoc-cube-menu>\r\n </ng-container>\r\n </div>\r\n <div class=\"backdrop\" *ngIf=\"dialog\"></div>\r\n</div>\r\n<bizdoc-panes-outlet (dialogChange)=\"dialog = $event\"></bizdoc-panes-outlet>\r\n", styles: [":host{display:flex;position:absolute;height:100%;width:100%}::ng-deep .nav-collapsed .mdc-list-item{padding-right:0}::ng-deep [dir=rtl] .nav-collapsed .mdc-list-item{padding-left:0}.nav-menu{height:100%;z-index:1}.nav-menu .sub-menu{min-width:200px;display:block;z-index:1;overflow-x:hidden;align-self:stretch}.nav-menu .sub-menu .action{display:flex;-ms-flex-direction:row-reverse;-webkit-flex-direction:row-reverse;flex-direction:row-reverse}.nav-menu .new-container{margin:8px 8px 0;text-align:center}.nav-menu .new-container button{min-width:35px;padding:0 14px;height:40px}.nav-menu .new-container button .mat-icon{margin-right:2px;margin-left:2px}.nav-menu .nav-icon{display:none}.nav-menu.nav-collapsed .nav-icon{display:unset}.nav-menu.nav-collapsed .nav-label{display:none}.nav-menu.nav-collapsed .sign-in{-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;align-items:center}.nav-menu .sign-in{display:flex;-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row;overflow:hidden;margin-bottom:5px;align-items:baseline}.backdrop{position:absolute;z-index:200;width:100%;height:100%;display:block;background:#424242;opacity:.8}\n"], dependencies: [{ kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i9.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i9.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i10.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: i11.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i11.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i11.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "component", type: i12.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i11.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "component", type: i13.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i13.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i14.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i15.MatIconAnimate, selector: "[matAnimate]" }, { kind: "directive", type: i16.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "component", type: i17.AdminMenuComponent, selector: "bizdoc-admin-menu", inputs: ["collapsed"] }, { kind: "component", type: i18.SlotsComponent, selector: "bizdoc-panes-outlet", outputs: ["dialogChange"] }, { kind: "component", type: i19.CubeMenuComponent, selector: "bizdoc-cube-menu", inputs: ["collapsed"], outputs: ["change"] }, { kind: "component", type: i20.ReportsMenuComponent, selector: "bizdoc-reports-menu", inputs: ["collapsed"], outputs: ["change"] }, { kind: "component", type: i21.FoldersMenuComponent, selector: "bizdoc-folders-menu", inputs: ["collapsed"], outputs: ["change"] }, { kind: "component", type: i22.ComposeMenuComponent, selector: "bizdoc-new-menu", outputs: ["change"] }, { kind: "pipe", type: i23.TranslatePipe, name: "translate" }], animations: [submenuAnimation] }); }
216
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.1", type: HomeComponent, selector: "bizdoc-home", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" }, classAttribute: "mat-app-background" }, viewQueries: [{ propertyName: "drawer", first: true, predicate: MatSidenav, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div [class.nav-collapsed]=\"collapsed\" [class.nav-open]=\"submenu\"\n [class.dialog]=\"dialog\"\n class=\"nav-menu row\">\n <!--[class.loading]=\"loading\"-->\n <div class=\"column\">\n <div>\n @if (forms.length) {\n <div [class.active]=\"activeMenu === 'new'\" class=\"new-container\">\n <button mat-raised-button\n [bizdocTooltip]=\"'Compose'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\"\n (click)=\"opennew()\" [disabled]=\"creating\"\n [attr.aria-label]=\"'Compose'| translate\" color=\"primary\" data-help=\"compose\">\n <mat-icon>add</mat-icon>\n <span class=\"nav-label\">{{'Compose'| translate}}</span>\n </button>\n </div>\n }\n <mat-nav-list>\n <mat-list-item [attr.aria-label]=\"'Dashboard' | translate\"\n (click)=\"nav('dashboard')\" [class.active]=\"activeMenu === 'dashboard'\"\n data-help=\"dashboard\"\n [bizdocTooltip]=\"'Dashboard'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">\n <mat-icon matListItemIcon>apps</mat-icon><span class=\"nav-label\" matListItemTitle>{{'Dashboard' | translate}}</span>\n </mat-list-item>\n <mat-list-item (click)=\"mails()\" [bizdocTooltip]=\"'Mailbox'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\"\n [class.active]=\"activeMenu === 'mailbox'\"\n [attr.aria-label]=\"'Mailbox' | translate\" data-help=\"folders\">\n <mat-icon matListItemIcon [matBadge]=\"profile.inboxCount\" [matBadgeHidden]=\"profile.inboxCount < 1\" matBadgeColor=\"accent\" aria-hidden=\"false\">inbox</mat-icon>\n <span class=\"nav-label\" matListItemTitle>{{'Mailbox' | translate}}</span>\n </mat-list-item>\n @if (schedulerEnabled) {\n <mat-list-item [attr.aria-label]=\"'Scheduler' | translate\"\n (click)=\"nav('schedule')\" [class.active]=\"activeMenu === 'schedule'\"\n [bizdocTooltip]=\"'Scheduler'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">\n <mat-icon matListItemIcon class=\"mat-icon-rtl-mirror\">date_range</mat-icon><span class=\"nav-label\" matListItemTitle>{{ 'Scheduler' | translate}}</span>\n </mat-list-item>\n }\n @if (chatEnabled) {\n <mat-list-item data-help=\"chat\" [attr.aria-label]=\"'Chat' | translate\"\n (click)=\"nav('contacts')\" [class.active]=\"activeMenu === 'contacts'\"\n [bizdocTooltip]=\"'Chat'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">\n <mat-icon matListItemIcon [matBadge]=\"profile.conversationsCount\" [matBadgeHidden]=\"!profile.conversationsCount\" matBadgeColor=\"accent\" aria-hidden=\"false\">chat</mat-icon>\n <span class=\"nav-label\" matListItemTitle>{{ 'Chat' | translate}}</span>\n </mat-list-item>\n }\n <mat-divider></mat-divider>\n @if (enableAnalysis && profile.cubes.length) {\n <mat-list-item\n (click)=\"opensubmenu('cube')\"\n [class.active]=\"activeMenu === 'cube'\"\n [bizdocTooltip]=\"'Cube'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\"\n data-help=\"cube\" [attr.aria-label]=\"'Cube' | translate\">\n <mat-icon matListItemIcon>equalizer</mat-icon><span class=\"nav-label\" matListItemTitle>{{'Cube' | translate}}</span>\n </mat-list-item>\n }\n @if (profile.reports.length) {\n <mat-list-item\n (click)=\"opensubmenu('reports')\"\n [class.active]=\"activeMenu === 'reports'\"\n [bizdocTooltip]=\"'Reports'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\" data-help=\"reports\" [attr.aria-label]=\"'Reports' | translate\">\n <mat-icon matListItemIcon>list_alt</mat-icon><span class=\"nav-label\" matListItemTitle>{{'Reports' | translate}}</span>\n </mat-list-item>\n }\n @if (sysAdmin) {\n <mat-divider></mat-divider>\n <mat-list-item (click)=\"opensubmenu('admin')\"\n [class.active]=\"activeMenu === 'admin'\"\n [bizdocTooltip]=\"'System'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\" [attr.aria-label]=\"'System' | translate\">\n <mat-icon matListItemIcon>device_hub</mat-icon>\n <span class=\"nav-label\" matListItemTitle>{{'Workflow' | translate}}</span>\n </mat-list-item>\n }\n </mat-nav-list>\n </div>\n <span class=\"divider\"></span>\n <!--<lottie name=\"lf30_editor_qr7zgmcs\" *ngIf=\"loading\"></lottie>-->\n <!--@animate-->\n <div class=\"sign-in\">\n <button mat-icon-button data-help=\"sign-in\" [bizdocTooltip]=\"'Settings' | translate\" bizdocTooltipPosition=\"above\"\n [attr.aria-label]=\"'Settings' | translate\" (click)=\"options($event)\">\n <mat-icon matAnimate=\"rotate\">settingson</mat-icon>\n </button>\n <span class=\"divider\"></span>\n <button mat-icon-button [attr.aria-label]=\"'Power' | translate\" (click)=\"signout($event)\" [bizdocTooltip]=\"'Exit'|translate\" bizdocTooltipPosition=\"above\">\n <mat-icon class=\"mat-icon-rtl-mirror\">logout</mat-icon>\n </button>\n </div>\n </div>\n <!-- -->\n @if (submenu) {\n <div class=\"sub-menu\" (mouseleave)=\"collapsesubmenu()\" [@submenu]=\"submenuMode\" (@submenu.done)=\"resize()\">\n @if (submenu !== 'new') {\n <div class=\"action\">\n <button mat-icon-button (click)=\"togglePinned()\" [bizdocTooltip]=\"(pinned?'Collapse':'Expand')|translate\"><mat-icon class=\"mat-icon-rtl-mirror\">{{pinned ? 'push_pin' : 'menu'}}</mat-icon></button>\n </div>\n }\n @switch (submenu) {\n @case ('new') {\n <bizdoc-new-menu (change)=\"closesubmenu()\"></bizdoc-new-menu>\n }\n @case ('mailbox') {\n <bizdoc-folders-menu [collapsed]=\"submenuMode === 'shrink'\" (change)=\"collapsesubmenu()\"></bizdoc-folders-menu>\n }\n @case ('admin') {\n <bizdoc-admin-menu [collapsed]=\"submenuMode === 'shrink'\"></bizdoc-admin-menu>\n }\n @case ('reports') {\n <bizdoc-reports-menu [collapsed]=\"submenuMode === 'shrink'\" (change)=\"collapsesubmenu()\"></bizdoc-reports-menu>\n }\n @case ('cube') {\n <bizdoc-cube-menu [collapsed]=\"submenuMode === 'shrink'\" (change)=\"collapsesubmenu()\"></bizdoc-cube-menu>\n }\n }\n </div>\n }\n @if (dialog) {\n <div class=\"backdrop\"></div>\n }\n</div>\n<bizdoc-panes-outlet (dialogChange)=\"dialog = $event\"></bizdoc-panes-outlet>\n", styles: [":host{display:flex;position:absolute;height:100%;width:100%}::ng-deep .nav-collapsed .mdc-list-item{padding-right:0}::ng-deep [dir=rtl] .nav-collapsed .mdc-list-item{padding-left:0}.nav-menu{height:100%;z-index:1}.nav-menu .sub-menu{min-width:200px;display:block;z-index:1;overflow-x:hidden;align-self:stretch}.nav-menu .sub-menu .action{display:flex;-ms-flex-direction:row-reverse;-webkit-flex-direction:row-reverse;flex-direction:row-reverse}.nav-menu .new-container{margin:8px 8px 0;text-align:center}.nav-menu .new-container button{min-width:35px;padding:0 14px;height:40px}.nav-menu .new-container button .mat-icon{margin-right:2px;margin-left:2px}.nav-menu .nav-icon{display:none}.nav-menu.nav-collapsed .nav-icon{display:unset}.nav-menu.nav-collapsed .nav-label{display:none}.nav-menu.nav-collapsed .sign-in{-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;align-items:center}.nav-menu .sign-in{display:flex;-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row;overflow:hidden;margin-bottom:5px;align-items:baseline}.backdrop{position:absolute;z-index:200;width:100%;height:100%;display:block;background:#424242;opacity:.8}\n"], dependencies: [{ kind: "directive", type: i9.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: i10.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i10.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i10.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "component", type: i11.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i10.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "component", type: i12.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i12.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i13.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i14.MatIconAnimate, selector: "[matAnimate]" }, { kind: "directive", type: i15.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "component", type: i16.AdminMenuComponent, selector: "bizdoc-admin-menu", inputs: ["collapsed"] }, { kind: "component", type: i17.SlotsComponent, selector: "bizdoc-panes-outlet", outputs: ["dialogChange"] }, { kind: "component", type: i18.CubeMenuComponent, selector: "bizdoc-cube-menu", inputs: ["collapsed"], outputs: ["change"] }, { kind: "component", type: i19.ReportsMenuComponent, selector: "bizdoc-reports-menu", inputs: ["collapsed"], outputs: ["change"] }, { kind: "component", type: i20.FoldersMenuComponent, selector: "bizdoc-folders-menu", inputs: ["collapsed"], outputs: ["change"] }, { kind: "component", type: i21.ComposeMenuComponent, selector: "bizdoc-new-menu", outputs: ["change"] }, { kind: "pipe", type: i22.TranslatePipe, name: "translate" }], animations: [submenuAnimation] }); }
218
217
  }
219
218
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: HomeComponent, decorators: [{
220
219
  type: Component,
221
- args: [{ selector: 'bizdoc-home', host: { class: 'mat-app-background' }, animations: [submenuAnimation], template: "<div [class.nav-collapsed]=\"collapsed\" [class.nav-open]=\"submenu\"\r\n [class.dialog]=\"dialog\"\r\n class=\"nav-menu row\">\r\n <!--[class.loading]=\"loading\"-->\r\n <div class=\"column\">\r\n <div>\r\n <div [class.active]=\"activeMenu === 'new'\" class=\"new-container\" *ngIf=\"forms.length\">\r\n <button mat-raised-button\r\n [bizdocTooltip]=\"'Compose'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\"\r\n (click)=\"opennew()\" [disabled]=\"creating\"\r\n [attr.aria-label]=\"'Compose'| translate\" color=\"primary\" data-help=\"compose\">\r\n <mat-icon>add</mat-icon>\r\n <span class=\"nav-label\">{{'Compose'| translate}}</span>\r\n </button>\r\n </div>\r\n <mat-nav-list>\r\n <mat-list-item [attr.aria-label]=\"'Dashboard' | translate\"\r\n (click)=\"nav('dashboard')\" [class.active]=\"activeMenu === 'dashboard'\"\r\n data-help=\"dashboard\"\r\n [bizdocTooltip]=\"'Dashboard'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">\r\n <mat-icon matListItemIcon>apps</mat-icon><span class=\"nav-label\" matListItemTitle>{{'Dashboard' | translate}}</span>\r\n </mat-list-item>\r\n <mat-list-item (click)=\"mails()\" [bizdocTooltip]=\"'Mailbox'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\"\r\n [class.active]=\"activeMenu === 'mailbox'\"\r\n [attr.aria-label]=\"'Mailbox' | translate\" data-help=\"folders\">\r\n <mat-icon matListItemIcon [matBadge]=\"profile.inboxCount\" [matBadgeHidden]=\"profile.inboxCount < 1\" matBadgeColor=\"accent\" aria-hidden=\"false\">inbox</mat-icon>\r\n <span class=\"nav-label\" matListItemTitle>{{'Mailbox' | translate}}</span>\r\n </mat-list-item>\r\n <mat-list-item [attr.aria-label]=\"'Scheduler' | translate\" *ngIf=\"schedulerEnabled\"\r\n (click)=\"nav('schedule')\" [class.active]=\"activeMenu === 'schedule'\"\r\n [bizdocTooltip]=\"'Scheduler'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">\r\n <mat-icon matListItemIcon class=\"mat-icon-rtl-mirror\">date_range</mat-icon><span class=\"nav-label\" matListItemTitle>{{ 'Scheduler' | translate}}</span>\r\n </mat-list-item>\r\n <mat-list-item *ngIf='chatEnabled' data-help=\"chat\" [attr.aria-label]=\"'Chat' | translate\"\r\n (click)=\"nav('contacts')\" [class.active]=\"activeMenu === 'contacts'\"\r\n [bizdocTooltip]=\"'Chat'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">\r\n <mat-icon matListItemIcon [matBadge]=\"profile.conversationsCount\" [matBadgeHidden]=\"!profile.conversationsCount\" matBadgeColor=\"accent\" aria-hidden=\"false\">chat</mat-icon>\r\n <span class=\"nav-label\" matListItemTitle>{{ 'Chat' | translate}}</span>\r\n </mat-list-item>\r\n <mat-divider></mat-divider>\r\n <mat-list-item *ngIf=\"enableAnalysis && profile.cubes.length\"\r\n (click)=\"opensubmenu('cube')\"\r\n [class.active]=\"activeMenu === 'cube'\"\r\n [bizdocTooltip]=\"'Cube'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\"\r\n data-help=\"cube\" [attr.aria-label]=\"'Cube' | translate\">\r\n <mat-icon matListItemIcon>equalizer</mat-icon><span class=\"nav-label\" matListItemTitle>{{'Cube' | translate}}</span>\r\n </mat-list-item>\r\n <mat-list-item *ngIf=\"profile.reports.length\"\r\n (click)=\"opensubmenu('reports')\"\r\n [class.active]=\"activeMenu === 'reports'\"\r\n [bizdocTooltip]=\"'Reports'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\" data-help=\"reports\" [attr.aria-label]=\"'Reports' | translate\">\r\n <mat-icon matListItemIcon>list_alt</mat-icon><span class=\"nav-label\" matListItemTitle>{{'Reports' | translate}}</span>\r\n </mat-list-item>\r\n <ng-container *ngIf=\"sysAdmin\">\r\n <mat-divider></mat-divider>\r\n <mat-list-item (click)=\"opensubmenu('admin')\"\r\n [class.active]=\"activeMenu === 'admin'\"\r\n [bizdocTooltip]=\"'System'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\" [attr.aria-label]=\"'System' | translate\">\r\n <mat-icon matListItemIcon>device_hub</mat-icon>\r\n <span class=\"nav-label\" matListItemTitle>{{'Workflow' | translate}}</span>\r\n </mat-list-item>\r\n </ng-container>\r\n </mat-nav-list>\r\n </div>\r\n <span class=\"divider\"></span>\r\n <!--<lottie name=\"lf30_editor_qr7zgmcs\" *ngIf=\"loading\"></lottie>-->\r\n <!--@animate-->\r\n <div class=\"sign-in\">\r\n <button mat-icon-button data-help=\"sign-in\" [bizdocTooltip]=\"'Settings' | translate\" bizdocTooltipPosition=\"above\"\r\n [attr.aria-label]=\"'Settings' | translate\" (click)=\"options($event)\">\r\n <mat-icon matAnimate=\"rotate\">settingson</mat-icon>\r\n </button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [attr.aria-label]=\"'Power' | translate\" (click)=\"signout($event)\" [bizdocTooltip]=\"'Exit'|translate\" bizdocTooltipPosition=\"above\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">logout</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n <!-- -->\r\n <div *ngIf=\"submenu\" class=\"sub-menu\" (mouseleave)=\"collapsesubmenu()\" [@submenu]=\"submenuMode\" (@submenu.done)=\"resize()\">\r\n <div class=\"action\" *ngIf=\"submenu !== 'new'\">\r\n <button mat-icon-button (click)=\"togglePinned()\" [bizdocTooltip]=\"(pinned?'Collapse':'Expand')|translate\"><mat-icon class=\"mat-icon-rtl-mirror\">{{pinned ? 'push_pin' : 'menu'}}</mat-icon></button>\r\n </div>\r\n <ng-container [ngSwitch]=\"submenu\">\r\n <bizdoc-new-menu *ngSwitchCase=\"'new'\" (change)=\"closesubmenu()\"></bizdoc-new-menu>\r\n <bizdoc-folders-menu *ngSwitchCase=\"'mailbox'\" [collapsed]=\"submenuMode === 'shrink'\" (change)=\"collapsesubmenu()\"></bizdoc-folders-menu>\r\n <bizdoc-admin-menu *ngSwitchCase=\"'admin'\" [collapsed]=\"submenuMode === 'shrink'\"></bizdoc-admin-menu>\r\n <bizdoc-reports-menu *ngSwitchCase=\"'reports'\" [collapsed]=\"submenuMode === 'shrink'\" (change)=\"collapsesubmenu()\"></bizdoc-reports-menu>\r\n <bizdoc-cube-menu *ngSwitchCase=\"'cube'\" [collapsed]=\"submenuMode === 'shrink'\" (change)=\"collapsesubmenu()\"></bizdoc-cube-menu>\r\n </ng-container>\r\n </div>\r\n <div class=\"backdrop\" *ngIf=\"dialog\"></div>\r\n</div>\r\n<bizdoc-panes-outlet (dialogChange)=\"dialog = $event\"></bizdoc-panes-outlet>\r\n", styles: [":host{display:flex;position:absolute;height:100%;width:100%}::ng-deep .nav-collapsed .mdc-list-item{padding-right:0}::ng-deep [dir=rtl] .nav-collapsed .mdc-list-item{padding-left:0}.nav-menu{height:100%;z-index:1}.nav-menu .sub-menu{min-width:200px;display:block;z-index:1;overflow-x:hidden;align-self:stretch}.nav-menu .sub-menu .action{display:flex;-ms-flex-direction:row-reverse;-webkit-flex-direction:row-reverse;flex-direction:row-reverse}.nav-menu .new-container{margin:8px 8px 0;text-align:center}.nav-menu .new-container button{min-width:35px;padding:0 14px;height:40px}.nav-menu .new-container button .mat-icon{margin-right:2px;margin-left:2px}.nav-menu .nav-icon{display:none}.nav-menu.nav-collapsed .nav-icon{display:unset}.nav-menu.nav-collapsed .nav-label{display:none}.nav-menu.nav-collapsed .sign-in{-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;align-items:center}.nav-menu .sign-in{display:flex;-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row;overflow:hidden;margin-bottom:5px;align-items:baseline}.backdrop{position:absolute;z-index:200;width:100%;height:100%;display:block;background:#424242;opacity:.8}\n"] }]
220
+ args: [{ selector: 'bizdoc-home', host: { class: 'mat-app-background' }, animations: [submenuAnimation], template: "<div [class.nav-collapsed]=\"collapsed\" [class.nav-open]=\"submenu\"\n [class.dialog]=\"dialog\"\n class=\"nav-menu row\">\n <!--[class.loading]=\"loading\"-->\n <div class=\"column\">\n <div>\n @if (forms.length) {\n <div [class.active]=\"activeMenu === 'new'\" class=\"new-container\">\n <button mat-raised-button\n [bizdocTooltip]=\"'Compose'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\"\n (click)=\"opennew()\" [disabled]=\"creating\"\n [attr.aria-label]=\"'Compose'| translate\" color=\"primary\" data-help=\"compose\">\n <mat-icon>add</mat-icon>\n <span class=\"nav-label\">{{'Compose'| translate}}</span>\n </button>\n </div>\n }\n <mat-nav-list>\n <mat-list-item [attr.aria-label]=\"'Dashboard' | translate\"\n (click)=\"nav('dashboard')\" [class.active]=\"activeMenu === 'dashboard'\"\n data-help=\"dashboard\"\n [bizdocTooltip]=\"'Dashboard'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">\n <mat-icon matListItemIcon>apps</mat-icon><span class=\"nav-label\" matListItemTitle>{{'Dashboard' | translate}}</span>\n </mat-list-item>\n <mat-list-item (click)=\"mails()\" [bizdocTooltip]=\"'Mailbox'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\"\n [class.active]=\"activeMenu === 'mailbox'\"\n [attr.aria-label]=\"'Mailbox' | translate\" data-help=\"folders\">\n <mat-icon matListItemIcon [matBadge]=\"profile.inboxCount\" [matBadgeHidden]=\"profile.inboxCount < 1\" matBadgeColor=\"accent\" aria-hidden=\"false\">inbox</mat-icon>\n <span class=\"nav-label\" matListItemTitle>{{'Mailbox' | translate}}</span>\n </mat-list-item>\n @if (schedulerEnabled) {\n <mat-list-item [attr.aria-label]=\"'Scheduler' | translate\"\n (click)=\"nav('schedule')\" [class.active]=\"activeMenu === 'schedule'\"\n [bizdocTooltip]=\"'Scheduler'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">\n <mat-icon matListItemIcon class=\"mat-icon-rtl-mirror\">date_range</mat-icon><span class=\"nav-label\" matListItemTitle>{{ 'Scheduler' | translate}}</span>\n </mat-list-item>\n }\n @if (chatEnabled) {\n <mat-list-item data-help=\"chat\" [attr.aria-label]=\"'Chat' | translate\"\n (click)=\"nav('contacts')\" [class.active]=\"activeMenu === 'contacts'\"\n [bizdocTooltip]=\"'Chat'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\">\n <mat-icon matListItemIcon [matBadge]=\"profile.conversationsCount\" [matBadgeHidden]=\"!profile.conversationsCount\" matBadgeColor=\"accent\" aria-hidden=\"false\">chat</mat-icon>\n <span class=\"nav-label\" matListItemTitle>{{ 'Chat' | translate}}</span>\n </mat-list-item>\n }\n <mat-divider></mat-divider>\n @if (enableAnalysis && profile.cubes.length) {\n <mat-list-item\n (click)=\"opensubmenu('cube')\"\n [class.active]=\"activeMenu === 'cube'\"\n [bizdocTooltip]=\"'Cube'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\"\n data-help=\"cube\" [attr.aria-label]=\"'Cube' | translate\">\n <mat-icon matListItemIcon>equalizer</mat-icon><span class=\"nav-label\" matListItemTitle>{{'Cube' | translate}}</span>\n </mat-list-item>\n }\n @if (profile.reports.length) {\n <mat-list-item\n (click)=\"opensubmenu('reports')\"\n [class.active]=\"activeMenu === 'reports'\"\n [bizdocTooltip]=\"'Reports'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\" data-help=\"reports\" [attr.aria-label]=\"'Reports' | translate\">\n <mat-icon matListItemIcon>list_alt</mat-icon><span class=\"nav-label\" matListItemTitle>{{'Reports' | translate}}</span>\n </mat-list-item>\n }\n @if (sysAdmin) {\n <mat-divider></mat-divider>\n <mat-list-item (click)=\"opensubmenu('admin')\"\n [class.active]=\"activeMenu === 'admin'\"\n [bizdocTooltip]=\"'System'|translate\" bizdocTooltipPosition=\"end\" [bizdocTooltipDisabled]=\"!collapsed\" [attr.aria-label]=\"'System' | translate\">\n <mat-icon matListItemIcon>device_hub</mat-icon>\n <span class=\"nav-label\" matListItemTitle>{{'Workflow' | translate}}</span>\n </mat-list-item>\n }\n </mat-nav-list>\n </div>\n <span class=\"divider\"></span>\n <!--<lottie name=\"lf30_editor_qr7zgmcs\" *ngIf=\"loading\"></lottie>-->\n <!--@animate-->\n <div class=\"sign-in\">\n <button mat-icon-button data-help=\"sign-in\" [bizdocTooltip]=\"'Settings' | translate\" bizdocTooltipPosition=\"above\"\n [attr.aria-label]=\"'Settings' | translate\" (click)=\"options($event)\">\n <mat-icon matAnimate=\"rotate\">settingson</mat-icon>\n </button>\n <span class=\"divider\"></span>\n <button mat-icon-button [attr.aria-label]=\"'Power' | translate\" (click)=\"signout($event)\" [bizdocTooltip]=\"'Exit'|translate\" bizdocTooltipPosition=\"above\">\n <mat-icon class=\"mat-icon-rtl-mirror\">logout</mat-icon>\n </button>\n </div>\n </div>\n <!-- -->\n @if (submenu) {\n <div class=\"sub-menu\" (mouseleave)=\"collapsesubmenu()\" [@submenu]=\"submenuMode\" (@submenu.done)=\"resize()\">\n @if (submenu !== 'new') {\n <div class=\"action\">\n <button mat-icon-button (click)=\"togglePinned()\" [bizdocTooltip]=\"(pinned?'Collapse':'Expand')|translate\"><mat-icon class=\"mat-icon-rtl-mirror\">{{pinned ? 'push_pin' : 'menu'}}</mat-icon></button>\n </div>\n }\n @switch (submenu) {\n @case ('new') {\n <bizdoc-new-menu (change)=\"closesubmenu()\"></bizdoc-new-menu>\n }\n @case ('mailbox') {\n <bizdoc-folders-menu [collapsed]=\"submenuMode === 'shrink'\" (change)=\"collapsesubmenu()\"></bizdoc-folders-menu>\n }\n @case ('admin') {\n <bizdoc-admin-menu [collapsed]=\"submenuMode === 'shrink'\"></bizdoc-admin-menu>\n }\n @case ('reports') {\n <bizdoc-reports-menu [collapsed]=\"submenuMode === 'shrink'\" (change)=\"collapsesubmenu()\"></bizdoc-reports-menu>\n }\n @case ('cube') {\n <bizdoc-cube-menu [collapsed]=\"submenuMode === 'shrink'\" (change)=\"collapsesubmenu()\"></bizdoc-cube-menu>\n }\n }\n </div>\n }\n @if (dialog) {\n <div class=\"backdrop\"></div>\n }\n</div>\n<bizdoc-panes-outlet (dialogChange)=\"dialog = $event\"></bizdoc-panes-outlet>\n", styles: [":host{display:flex;position:absolute;height:100%;width:100%}::ng-deep .nav-collapsed .mdc-list-item{padding-right:0}::ng-deep [dir=rtl] .nav-collapsed .mdc-list-item{padding-left:0}.nav-menu{height:100%;z-index:1}.nav-menu .sub-menu{min-width:200px;display:block;z-index:1;overflow-x:hidden;align-self:stretch}.nav-menu .sub-menu .action{display:flex;-ms-flex-direction:row-reverse;-webkit-flex-direction:row-reverse;flex-direction:row-reverse}.nav-menu .new-container{margin:8px 8px 0;text-align:center}.nav-menu .new-container button{min-width:35px;padding:0 14px;height:40px}.nav-menu .new-container button .mat-icon{margin-right:2px;margin-left:2px}.nav-menu .nav-icon{display:none}.nav-menu.nav-collapsed .nav-icon{display:unset}.nav-menu.nav-collapsed .nav-label{display:none}.nav-menu.nav-collapsed .sign-in{-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column;align-items:center}.nav-menu .sign-in{display:flex;-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row;overflow:hidden;margin-bottom:5px;align-items:baseline}.backdrop{position:absolute;z-index:200;width:100%;height:100%;display:block;background:#424242;opacity:.8}\n"] }]
222
221
  }], ctorParameters: () => [{ type: i1.PanesRouter }, { type: i2.MailboxService }, { type: i3.Popup }, { type: i4.PromptService }, { type: i0.Injector }, { type: i5.SessionService }, { type: i6.HubService }, { type: i7.TranslateService }, { type: i8.MatSnackBar }, { type: undefined, decorators: [{
223
222
  type: Inject,
224
223
  args: [BIZDOC_CONFIG]
@@ -229,4 +228,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImpor
229
228
  type: HostListener,
230
229
  args: ['document:keydown', ['$event']]
231
230
  }] } });
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9tZS5kZXNrdG9wLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvaG9tZS9ob21lLmRlc2t0b3AuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9ob21lL2hvbWUuZGVza3RvcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlCLE9BQU8sRUFBZ0IsYUFBYSxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBT3RELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQXNCLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSTdFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTNELHdCQUF3QjtBQVF4QixNQUFNLE9BQU8sYUFBYyxTQUFRLFFBQVE7SUFPekMsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFBVyxXQUFXLENBQUMsS0FBd0I7UUFDN0MsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsS0FB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QyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO2dCQUNyRSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUM5QixDQUFDO2lCQUNJLENBQUM7Z0JBQ0osSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1lBQy9CLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzs4R0EvTFUsYUFBYSx3UUFnRWQsYUFBYTtrR0FoRVosYUFBYSw2TUFxRGIsVUFBVSxxRkNqRnZCLHM3TkE4RkEsMHNIRHBFYyxDQUFDLGdCQUFnQixDQUFDOzsyRkFFbkIsYUFBYTtrQkFQekIsU0FBUzsrQkFDRSxhQUFhLFFBR2pCLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLGNBQ3pCLENBQUMsZ0JBQWdCLENBQUM7OzBCQWtFM0IsTUFBTTsyQkFBQyxhQUFhO3lDQVhrQixNQUFNO3NCQUE5QyxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBa0h2QyxtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdDaGlsZCwgSW5qZWN0LCBIb3N0TGlzdGVuZXIsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdFNpZGVuYXYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcclxuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xyXG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQml6RG9jQ29uZmlnLCBCSVpET0NfQ09ORklHLCBPcGVuUG9saWN5IH0gZnJvbSAnLi4vY29yZS9jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgc3VibWVudUFuaW1hdGlvbiB9IGZyb20gJy4uL2NvcmUvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IFJlY2lwaWVudE1vZGVsIH0gZnJvbSAnLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUGFuZXNSb3V0ZXIgfSBmcm9tICcuLi9jb3JlL3Nsb3RzL3JvdXRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUG9wdXAgfSBmcm9tICcuLi9jb3JlL3BvcHVwL3BvcHVwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEh1YlNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL2h1Yi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSG9tZUJhc2UgfSBmcm9tICcuL2hvbWUtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uUGFuZUJhc2UsIE5hdmlnYXRpb25TdGFydCB9IGZyb20gJy4uL2NvcmUvc2xvdHMvcGFuZS1yZWYnO1xyXG5pbXBvcnQgeyBNYWlsYm94U2VydmljZSB9IGZyb20gJy4uL2NvcmUvbWFpbGJveC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL3Byb21wdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUXVpY2tPcHRpb25zQ29tcG9uZW50IH0gZnJvbSAnLi9vcHRpb25zL29wdGlvbnMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUXVpY2tTaWduQ29tcG9uZW50IH0gZnJvbSAnLi9zaWduL3NpZ24uY29tcG9uZW50JztcclxuXHJcbi8qKiBkZXNrdG9wIGhvbWUgY29tcCAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1ob21lJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaG9tZS5kZXNrdG9wLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ob21lLmRlc2t0b3AuY29tcG9uZW50LnNjc3MnXSxcclxuICBob3N0OiB7IGNsYXNzOiAnbWF0LWFwcC1iYWNrZ3JvdW5kJyB9LFxyXG4gIGFuaW1hdGlvbnM6IFtzdWJtZW51QW5pbWF0aW9uXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSG9tZUNvbXBvbmVudCBleHRlbmRzIEhvbWVCYXNlIHtcclxuICBkaWFsb2c6IGJvb2xlYW47XHJcbiAgcmVhZG9ubHkgc3lzQWRtaW4gPSB0aGlzLl9zZXNzaW9uLmlzU3lzdGVtO1xyXG4gIHByaXZhdGUgX3N1Ym1lbnVNb2RlOiAnZnVsbCcgfCAnc2hyaW5rJyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdzdWJtZW51TW9kZScpIGFzIGFueSB8fCAnZnVsbCc7XHJcbiAgcmVhZG9ubHkgZm9ybXMgPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZm9ybXMuZmlsdGVyKGYgPT4gZi5jcmVhdGFibGUpO1xyXG4gIGNyZWF0aW5nOiBib29sZWFuO1xyXG4gIHByaXZhdGUgX2NvbGxhcHNlVG9nZ2xlID0gZmFsc2U7XHJcbiAgcHVibGljIGdldCBzdWJtZW51TW9kZSgpOiAnZnVsbCcgfCAnc2hyaW5rJyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3VibWVudU1vZGU7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgc3VibWVudU1vZGUodmFsdWU6ICdmdWxsJyB8ICdzaHJpbmsnKSB7XHJcbiAgICB0aGlzLl9zdWJtZW51TW9kZSA9IHZhbHVlO1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3N1Ym1lbnVNb2RlJywgdmFsdWUpXHJcbiAgfVxyXG4gIHByaXZhdGUgX3N1Ym1lbnU6IHN0cmluZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdzdWJtZW51Jyk7XHJcbiAgcHJpdmF0ZSBfcGF0aDogc3RyaW5nO1xyXG4gIGdldCBhY3RpdmVNZW51KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3N1Ym1lbnUgfHwgdGhpcy5fcGF0aDtcclxuICB9XHJcbiAgcHVibGljIGdldCBzdWJtZW51KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3VibWVudTtcclxuICB9XHJcbiAgcHVibGljIHNldCBzdWJtZW51KHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3N1Ym1lbnUgPSB2YWx1ZTtcclxuICAgIGlmICh2YWx1ZSkgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3N1Ym1lbnUnLCB2YWx1ZSk7XHJcbiAgICBlbHNlIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdzdWJtZW51Jyk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2lzKG5hbWUsIHZhbD86IGJvb2xlYW4pIHtcclxuICAgIGlmICh2YWwgPT09IHVuZGVmaW5lZClcclxuICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKG5hbWUpID09PSAnMSc7XHJcbiAgICBlbHNlXHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKG5hbWUsIHZhbCA/ICcxJyA6ICcwJyk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2lzT3JEZWZhdWx0KG5hbWUsICRkZWZhdWx0KSB7XHJcbiAgICBjb25zdCB2YWwgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuYW1lKTtcclxuICAgIHJldHVybiB2YWwgPyB2YWwgPT09ICcxJyA6ICRkZWZhdWx0O1xyXG4gIH1cclxuICBwcml2YXRlIF9jb2xsYXBzZWQgPSB0aGlzLl9pc09yRGVmYXVsdCgnY29sbGFwc2VkJywgdHJ1ZSk7XHJcbiAgcHVibGljIGdldCBjb2xsYXBzZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29sbGFwc2VkO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IGNvbGxhcHNlZCh2YWx1ZSkge1xyXG4gICAgdGhpcy5fY29sbGFwc2VkID0gdmFsdWU7XHJcbiAgICB0aGlzLl9pcygnY29sbGFwc2VkJywgdGhpcy5jb2xsYXBzZWQpO1xyXG4gIH1cclxuICBwcml2YXRlIF9waW5uZWQgPSB0aGlzLl9pc09yRGVmYXVsdCgncGlubmVkJywgdHJ1ZSk7XHJcbiAgcHVibGljIGdldCBwaW5uZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGlubmVkO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IHBpbm5lZCh2YWx1ZSkge1xyXG4gICAgdGhpcy5fcGlubmVkID0gdmFsdWU7XHJcbiAgICB0aGlzLl9pcygncGlubmVkJywgdmFsdWUpXHJcbiAgfVxyXG4gIEBWaWV3Q2hpbGQoTWF0U2lkZW5hdiwgeyBzdGF0aWM6IHRydWUgfSkgZHJhd2VyOiBNYXRTaWRlbmF2O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBQYW5lc1JvdXRlcixcclxuICAgIHByaXZhdGUgX21haWxib3g6IE1haWxib3hTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcG9wdXA6IFBvcHVwLFxyXG4gICAgcHJpdmF0ZSBfc2I6IFByb21wdFNlcnZpY2UsXHJcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBzZXNzaW9uOiBTZXNzaW9uU2VydmljZSxcclxuICAgIG1lc3NhZ2luZzogSHViU2VydmljZSxcclxuICAgIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHNuYWNrQmFyOiBNYXRTbmFja0JhcixcclxuICAgIEBJbmplY3QoQklaRE9DX0NPTkZJRykgY29uZmlnOiBCaXpEb2NDb25maWcpIHtcclxuICAgIHN1cGVyKHNlc3Npb24sIG1lc3NhZ2luZywgdHJhbnNsYXRlLCBzbmFja0JhciwgaW5qZWN0b3IsIGNvbmZpZyk7XHJcbiAgICBfcm91dGVyLmV2ZW50cy5waXBlKGZpbHRlcihlID0+IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQgJiYgZS5wYW5lLnBhdGggJiYgZS5wYW5lLm1vZGUgPT09ICdwYW5lJykpLlxyXG4gICAgICBzdWJzY3JpYmUoKGU6IE5hdmlnYXRpb25QYW5lQmFzZSkgPT5cclxuICAgICAgICB0aGlzLl9wYXRoID0gZS5wYW5lLnBhdGguc3BsaXQoJy8nKVswXVxyXG4gICAgICApO1xyXG4gIH1cclxuICAvKiogb3B0aW9ucyAqL1xyXG4gIG9wdGlvbnMoZXZ0OiBFdmVudCkge1xyXG4gICAgdGhpcy5fcG9wdXAub3BlbihRdWlja09wdGlvbnNDb21wb25lbnQsIGV2dC50YXJnZXQgYXMgSFRNTEVsZW1lbnQsIHsgcG9zaXRpb246ICdlbmQnIH0pO1xyXG4gIH1cclxuICBzaWdub3V0KGV2dDogRXZlbnQpIHtcclxuICAgIHRoaXMuX3BvcHVwLm9wZW4oUXVpY2tTaWduQ29tcG9uZW50LCBldnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50LCB7IHBvc2l0aW9uOiAnZW5kJyB9KTtcclxuICB9XHJcbiAgbmF2KHBhdGgpIHtcclxuICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbcGF0aF0pO1xyXG4gICAgdGhpcy5zdWJtZW51ID0gbnVsbDtcclxuICAgIHRoaXMuY29sbGFwc2VzdWJtZW51KCk7XHJcbiAgfVxyXG4gIG9uTmV3TWVzc2FnZShtb2RlbDogUmVjaXBpZW50TW9kZWwpIHtcclxuICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbJ21haWxib3gvaScsIG1vZGVsLmlkLmVuY29kZUlkKCldLFxyXG4gICAgICB7XHJcbiAgICAgICAgc3RhdGU6IHsgaXRlbTogbW9kZWwgfSxcclxuICAgICAgICBwb2xpY3k6IE9wZW5Qb2xpY3kuQ2xlYXJcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIGNsb3Nlc3VibWVudSgpIHtcclxuICAgIHRoaXMuc3VibWVudSA9IG51bGw7XHJcbiAgfVxyXG4gIG9wZW5uZXcoKSB7XHJcbiAgICBpZiAodGhpcy5mb3Jtcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgIGlmICh0aGlzLnN1Ym1lbnUgPT09ICduZXcnKVxyXG4gICAgICAgIHRoaXMuY2xvc2VzdWJtZW51KCk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLm9wZW5zdWJtZW51KCduZXcnKTtcclxuICAgIH1cclxuICAgIGVsc2UgdGhpcy5fY3JlYXRlKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2NyZWF0ZSgpIHtcclxuICAgIHRoaXMuY3JlYXRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5fbWFpbGJveC5jcmVhdGUodGhpcy5mb3Jtc1swXS5uYW1lKS5cclxuICAgICAgc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiByID0+IHtcclxuICAgICAgICAgIHRoaXMuY3JlYXRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbJ21haWxib3gvaScsIHIuaWQuZW5jb2RlSWQoKV0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBwb2xpY3k6IE9wZW5Qb2xpY3kuQ2xlYXIsXHJcbiAgICAgICAgICAgICAgc3RhdGU6IHsgaXRlbTogciB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sIGVycm9yOihlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuX2hhbmRsZUVycihlKTtcclxuICAgICAgICB0aGlzLmNyZWF0aW5nID0gZmFsc2U7XHJcbiAgICAgIH19KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2hhbmRsZUVycihyZXNwb25zZTogSHR0cEVycm9yUmVzcG9uc2UgfCBHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3IpIHtcclxuICAgIGlmIChyZXNwb25zZS5jb25zdHJ1Y3Rvci5uYW1lID09PSAnUG9zaXRpb25FcnJvcicpXHJcbiAgICAgIHN3aXRjaCAoKHJlc3BvbnNlIGFzIEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcikuY29kZSkge1xyXG4gICAgICAgIGNhc2UgMTpcclxuICAgICAgICAgIHRoaXMuX3NiLmVycm9yKCdVc2VyRGVuaWVkR2VvRXJyJyk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgdGhpcy5fc2IuZXJyb3IoJ0dlb0VycicpO1xyXG4gICAgICB9XHJcbiAgICBlbHNlIHN3aXRjaCAoKHJlc3BvbnNlIGFzIEh0dHBFcnJvclJlc3BvbnNlKS5zdGF0dXMpIHtcclxuICAgICAgY2FzZSA0MDE6XHJcbiAgICAgICAgdGhpcy5fc2IuZXJyb3IoJ1VuYXV0aG9yaXplZCcpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDQwNjpcclxuICAgICAgICB0aGlzLl9zYi5lcnJvclN0cmluZygocmVzcG9uc2UgYXMgSHR0cEVycm9yUmVzcG9uc2UpLmVycm9yKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSA0MjY6IC8vIGxpY2Vuc2VcclxuICAgICAgICB0aGlzLl9zYi5lcnJvcignTGljZW5zZUVycicpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMuX3NiLmVycm9yKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvcGVuc3VibWVudShtZW51OiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLnN1Ym1lbnUgPT09IG1lbnUpXHJcbiAgICAgIHRoaXMuc3VibWVudU1vZGUgPSB0aGlzLnN1Ym1lbnVNb2RlID09PSAnZnVsbCcgPyAnc2hyaW5rJyA6ICdmdWxsJztcclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnN1Ym1lbnUgPSBtZW51O1xyXG4gICAgICB0aGlzLnN1Ym1lbnVNb2RlID0gJ2Z1bGwnO1xyXG4gICAgfVxyXG4gIH1cclxuICBjb2xsYXBzZXN1Ym1lbnUoKSB7XHJcbiAgICBpZiAoIXRoaXMucGlubmVkICYmIHRoaXMuc3VibWVudSAhPT0gJ25ldycpIHRoaXMuc3VibWVudU1vZGUgPSAnc2hyaW5rJztcclxuICB9XHJcbiAgdG9nZ2xlUGlubmVkKCkge1xyXG4gICAgdGhpcy5waW5uZWQgPSAhdGhpcy5waW5uZWQ7XHJcbiAgICB0aGlzLnN1Ym1lbnVNb2RlID0gdGhpcy5waW5uZWQgPyAnZnVsbCcgOiAnc2hyaW5rJztcclxuICB9XHJcbiAgb3ZlcnJpZGUgbWFpbHMoKSB7XHJcbiAgICBzdXBlci5tYWlscygpO1xyXG4gICAgdGhpcy5vcGVuc3VibWVudSgnbWFpbGJveCcpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBBbHQgKyBuL04sIEN0cmwgKyAuXHJcbiAgICogQHBhcmFtIGV2ZW50XHJcbiAgICovXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXHJcbiAgaGFuZGxlS2V5Ym9hcmRFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYgKGV2ZW50LmFsdEtleSAmJiAoZXZlbnQua2V5ID09PSAnbicgfHwgZXZlbnQua2V5ID09PSAnTicpKSB7XHJcbiAgICAgIGlmICh0aGlzLnN1Ym1lbnUgPT09ICduZXcnKVxyXG4gICAgICAgIHRoaXMuc3VibWVudSA9IG51bGw7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLmZvcm1zLmxlbmd0aCA9PT0gMSlcclxuICAgICAgICAgIHRoaXMuX2NyZWF0ZSgpO1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zdWJtZW51ID0gJ25ldyc7XHJcbiAgICAgICAgICB0aGlzLnN1Ym1lbnVNb2RlID0gJ2Z1bGwnO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZXZlbnQuY3RybEtleSAmJiBldmVudC5rZXkgPT09ICcuJykge1xyXG4gICAgICBpZiAodGhpcy5zdWJtZW51ICYmICF0aGlzLl9jb2xsYXBzZVRvZ2dsZSkge1xyXG4gICAgICAgIHRoaXMuc3VibWVudU1vZGUgPSB0aGlzLnN1Ym1lbnVNb2RlID09PSAnc2hyaW5rJyA/ICdmdWxsJyA6ICdzaHJpbmsnO1xyXG4gICAgICAgIHRoaXMuX2NvbGxhcHNlVG9nZ2xlID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLmNvbGxhcHNlZCA9ICF0aGlzLmNvbGxhcHNlZDtcclxuICAgICAgICB0aGlzLl9jb2xsYXBzZVRvZ2dsZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgW2NsYXNzLm5hdi1jb2xsYXBzZWRdPVwiY29sbGFwc2VkXCIgW2NsYXNzLm5hdi1vcGVuXT1cInN1Ym1lbnVcIlxyXG4gICAgIFtjbGFzcy5kaWFsb2ddPVwiZGlhbG9nXCJcclxuICAgICBjbGFzcz1cIm5hdi1tZW51IHJvd1wiPlxyXG4gIDwhLS1bY2xhc3MubG9hZGluZ109XCJsb2FkaW5nXCItLT5cclxuICA8ZGl2IGNsYXNzPVwiY29sdW1uXCI+XHJcbiAgICA8ZGl2PlxyXG4gICAgICA8ZGl2IFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlTWVudSA9PT0gJ25ldydcIiBjbGFzcz1cIm5ldy1jb250YWluZXJcIiAqbmdJZj1cImZvcm1zLmxlbmd0aFwiPlxyXG4gICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b25cclxuICAgICAgICAgICAgICAgIFtiaXpkb2NUb29sdGlwXT1cIidDb21wb3NlJ3x0cmFuc2xhdGVcIiBiaXpkb2NUb29sdGlwUG9zaXRpb249XCJlbmRcIiBbYml6ZG9jVG9vbHRpcERpc2FibGVkXT1cIiFjb2xsYXBzZWRcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5uZXcoKVwiIFtkaXNhYmxlZF09XCJjcmVhdGluZ1wiXHJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidDb21wb3NlJ3wgdHJhbnNsYXRlXCIgY29sb3I9XCJwcmltYXJ5XCIgZGF0YS1oZWxwPVwiY29tcG9zZVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uPmFkZDwvbWF0LWljb24+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hdi1sYWJlbFwiPnt7J0NvbXBvc2UnfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxtYXQtbmF2LWxpc3Q+XHJcbiAgICAgICAgPG1hdC1saXN0LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInRGFzaGJvYXJkJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5hdignZGFzaGJvYXJkJylcIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZU1lbnUgPT09ICdkYXNoYm9hcmQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWhlbHA9XCJkYXNoYm9hcmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtiaXpkb2NUb29sdGlwXT1cIidEYXNoYm9hcmQnfHRyYW5zbGF0ZVwiIGJpemRvY1Rvb2x0aXBQb3NpdGlvbj1cImVuZFwiIFtiaXpkb2NUb29sdGlwRGlzYWJsZWRdPVwiIWNvbGxhcHNlZFwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uIG1hdExpc3RJdGVtSWNvbj5hcHBzPC9tYXQtaWNvbj48c3BhbiBjbGFzcz1cIm5hdi1sYWJlbFwiIG1hdExpc3RJdGVtVGl0bGU+e3snRGFzaGJvYXJkJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgIDwvbWF0LWxpc3QtaXRlbT5cclxuICAgICAgICA8bWF0LWxpc3QtaXRlbSAoY2xpY2spPVwibWFpbHMoKVwiIFtiaXpkb2NUb29sdGlwXT1cIidNYWlsYm94J3x0cmFuc2xhdGVcIiBiaXpkb2NUb29sdGlwUG9zaXRpb249XCJlbmRcIiBbYml6ZG9jVG9vbHRpcERpc2FibGVkXT1cIiFjb2xsYXBzZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlTWVudSA9PT0gJ21haWxib3gnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidNYWlsYm94JyB8IHRyYW5zbGF0ZVwiIGRhdGEtaGVscD1cImZvbGRlcnNcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBtYXRMaXN0SXRlbUljb24gW21hdEJhZGdlXT1cInByb2ZpbGUuaW5ib3hDb3VudFwiIFttYXRCYWRnZUhpZGRlbl09XCJwcm9maWxlLmluYm94Q291bnQgPCAxXCIgbWF0QmFkZ2VDb2xvcj1cImFjY2VudFwiIGFyaWEtaGlkZGVuPVwiZmFsc2VcIj5pbmJveDwvbWF0LWljb24+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hdi1sYWJlbFwiIG1hdExpc3RJdGVtVGl0bGU+e3snTWFpbGJveCcgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICA8L21hdC1saXN0LWl0ZW0+XHJcbiAgICAgICAgPG1hdC1saXN0LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInU2NoZWR1bGVyJyB8IHRyYW5zbGF0ZVwiICpuZ0lmPVwic2NoZWR1bGVyRW5hYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5hdignc2NoZWR1bGUnKVwiIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlTWVudSA9PT0gJ3NjaGVkdWxlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW2JpemRvY1Rvb2x0aXBdPVwiJ1NjaGVkdWxlcid8dHJhbnNsYXRlXCIgYml6ZG9jVG9vbHRpcFBvc2l0aW9uPVwiZW5kXCIgW2JpemRvY1Rvb2x0aXBEaXNhYmxlZF09XCIhY29sbGFwc2VkXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24gbWF0TGlzdEl0ZW1JY29uIGNsYXNzPVwibWF0LWljb24tcnRsLW1pcnJvclwiPmRhdGVfcmFuZ2U8L21hdC1pY29uPjxzcGFuIGNsYXNzPVwibmF2LWxhYmVsXCIgbWF0TGlzdEl0ZW1UaXRsZT57eyAnU2NoZWR1bGVyJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgIDwvbWF0LWxpc3QtaXRlbT5cclxuICAgICAgICA8bWF0LWxpc3QtaXRlbSAqbmdJZj0nY2hhdEVuYWJsZWQnIGRhdGEtaGVscD1cImNoYXRcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidDaGF0JyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5hdignY29udGFjdHMnKVwiIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlTWVudSA9PT0gJ2NvbnRhY3RzJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW2JpemRvY1Rvb2x0aXBdPVwiJ0NoYXQnfHRyYW5zbGF0ZVwiIGJpemRvY1Rvb2x0aXBQb3NpdGlvbj1cImVuZFwiIFtiaXpkb2NUb29sdGlwRGlzYWJsZWRdPVwiIWNvbGxhcHNlZFwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uIG1hdExpc3RJdGVtSWNvbiBbbWF0QmFkZ2VdPVwicHJvZmlsZS5jb252ZXJzYXRpb25zQ291bnRcIiBbbWF0QmFkZ2VIaWRkZW5dPVwiIXByb2ZpbGUuY29udmVyc2F0aW9uc0NvdW50XCIgbWF0QmFkZ2VDb2xvcj1cImFjY2VudFwiIGFyaWEtaGlkZGVuPVwiZmFsc2VcIj5jaGF0PC9tYXQtaWNvbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmF2LWxhYmVsXCIgbWF0TGlzdEl0ZW1UaXRsZT57eyAnQ2hhdCcgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICA8L21hdC1saXN0LWl0ZW0+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgPG1hdC1saXN0LWl0ZW0gKm5nSWY9XCJlbmFibGVBbmFseXNpcyAmJiBwcm9maWxlLmN1YmVzLmxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5zdWJtZW51KCdjdWJlJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlTWVudSA9PT0gJ2N1YmUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbYml6ZG9jVG9vbHRpcF09XCInQ3ViZSd8dHJhbnNsYXRlXCIgYml6ZG9jVG9vbHRpcFBvc2l0aW9uPVwiZW5kXCIgW2JpemRvY1Rvb2x0aXBEaXNhYmxlZF09XCIhY29sbGFwc2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWhlbHA9XCJjdWJlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInQ3ViZScgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBtYXRMaXN0SXRlbUljb24+ZXF1YWxpemVyPC9tYXQtaWNvbj48c3BhbiBjbGFzcz1cIm5hdi1sYWJlbFwiIG1hdExpc3RJdGVtVGl0bGU+e3snQ3ViZScgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICA8L21hdC1saXN0LWl0ZW0+XHJcbiAgICAgICAgPG1hdC1saXN0LWl0ZW0gKm5nSWY9XCJwcm9maWxlLnJlcG9ydHMubGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbnN1Ym1lbnUoJ3JlcG9ydHMnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVNZW51ID09PSAncmVwb3J0cydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtiaXpkb2NUb29sdGlwXT1cIidSZXBvcnRzJ3x0cmFuc2xhdGVcIiBiaXpkb2NUb29sdGlwUG9zaXRpb249XCJlbmRcIiBbYml6ZG9jVG9vbHRpcERpc2FibGVkXT1cIiFjb2xsYXBzZWRcIiBkYXRhLWhlbHA9XCJyZXBvcnRzXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInUmVwb3J0cycgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBtYXRMaXN0SXRlbUljb24+bGlzdF9hbHQ8L21hdC1pY29uPjxzcGFuIGNsYXNzPVwibmF2LWxhYmVsXCIgbWF0TGlzdEl0ZW1UaXRsZT57eydSZXBvcnRzJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgIDwvbWF0LWxpc3QtaXRlbT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3lzQWRtaW5cIj5cclxuICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgPG1hdC1saXN0LWl0ZW0gKGNsaWNrKT1cIm9wZW5zdWJtZW51KCdhZG1pbicpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlTWVudSA9PT0gJ2FkbWluJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbYml6ZG9jVG9vbHRpcF09XCInU3lzdGVtJ3x0cmFuc2xhdGVcIiBiaXpkb2NUb29sdGlwUG9zaXRpb249XCJlbmRcIiBbYml6ZG9jVG9vbHRpcERpc2FibGVkXT1cIiFjb2xsYXBzZWRcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidTeXN0ZW0nIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBtYXRMaXN0SXRlbUljb24+ZGV2aWNlX2h1YjwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmF2LWxhYmVsXCIgbWF0TGlzdEl0ZW1UaXRsZT57eydXb3JrZmxvdycgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgIDwvbWF0LWxpc3QtaXRlbT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9tYXQtbmF2LWxpc3Q+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDwhLS08bG90dGllIG5hbWU9XCJsZjMwX2VkaXRvcl9xcjd6Z21jc1wiICpuZ0lmPVwibG9hZGluZ1wiPjwvbG90dGllPi0tPlxyXG4gICAgPCEtLUBhbmltYXRlLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2lnbi1pblwiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBkYXRhLWhlbHA9XCJzaWduLWluXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1NldHRpbmdzJyB8IHRyYW5zbGF0ZVwiIGJpemRvY1Rvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCJcclxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidTZXR0aW5ncycgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwib3B0aW9ucygkZXZlbnQpXCI+XHJcbiAgICAgICAgPG1hdC1pY29uIG1hdEFuaW1hdGU9XCJyb3RhdGVcIj5zZXR0aW5nc29uPC9tYXQtaWNvbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gW2F0dHIuYXJpYS1sYWJlbF09XCInUG93ZXInIHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cInNpZ25vdXQoJGV2ZW50KVwiIFtiaXpkb2NUb29sdGlwXT1cIidFeGl0J3x0cmFuc2xhdGVcIiBiaXpkb2NUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdC1pY29uLXJ0bC1taXJyb3JcIj5sb2dvdXQ8L21hdC1pY29uPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDwhLS0gLS0+XHJcbiAgPGRpdiAqbmdJZj1cInN1Ym1lbnVcIiBjbGFzcz1cInN1Yi1tZW51XCIgKG1vdXNlbGVhdmUpPVwiY29sbGFwc2VzdWJtZW51KClcIiBbQHN1Ym1lbnVdPVwic3VibWVudU1vZGVcIiAoQHN1Ym1lbnUuZG9uZSk9XCJyZXNpemUoKVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImFjdGlvblwiICpuZ0lmPVwic3VibWVudSAhPT0gJ25ldydcIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInRvZ2dsZVBpbm5lZCgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiKHBpbm5lZD8nQ29sbGFwc2UnOidFeHBhbmQnKXx0cmFuc2xhdGVcIj48bWF0LWljb24gY2xhc3M9XCJtYXQtaWNvbi1ydGwtbWlycm9yXCI+e3twaW5uZWQgPyAncHVzaF9waW4nIDogJ21lbnUnfX08L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJzdWJtZW51XCI+XHJcbiAgICAgIDxiaXpkb2MtbmV3LW1lbnUgKm5nU3dpdGNoQ2FzZT1cIiduZXcnXCIgKGNoYW5nZSk9XCJjbG9zZXN1Ym1lbnUoKVwiPjwvYml6ZG9jLW5ldy1tZW51PlxyXG4gICAgICA8Yml6ZG9jLWZvbGRlcnMtbWVudSAqbmdTd2l0Y2hDYXNlPVwiJ21haWxib3gnXCIgW2NvbGxhcHNlZF09XCJzdWJtZW51TW9kZSA9PT0gJ3NocmluaydcIiAoY2hhbmdlKT1cImNvbGxhcHNlc3VibWVudSgpXCI+PC9iaXpkb2MtZm9sZGVycy1tZW51PlxyXG4gICAgICA8Yml6ZG9jLWFkbWluLW1lbnUgKm5nU3dpdGNoQ2FzZT1cIidhZG1pbidcIiBbY29sbGFwc2VkXT1cInN1Ym1lbnVNb2RlID09PSAnc2hyaW5rJ1wiPjwvYml6ZG9jLWFkbWluLW1lbnU+XHJcbiAgICAgIDxiaXpkb2MtcmVwb3J0cy1tZW51ICpuZ1N3aXRjaENhc2U9XCIncmVwb3J0cydcIiBbY29sbGFwc2VkXT1cInN1Ym1lbnVNb2RlID09PSAnc2hyaW5rJ1wiIChjaGFuZ2UpPVwiY29sbGFwc2VzdWJtZW51KClcIj48L2JpemRvYy1yZXBvcnRzLW1lbnU+XHJcbiAgICAgIDxiaXpkb2MtY3ViZS1tZW51ICpuZ1N3aXRjaENhc2U9XCInY3ViZSdcIiBbY29sbGFwc2VkXT1cInN1Ym1lbnVNb2RlID09PSAnc2hyaW5rJ1wiIChjaGFuZ2UpPVwiY29sbGFwc2VzdWJtZW51KClcIj48L2JpemRvYy1jdWJlLW1lbnU+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiYmFja2Ryb3BcIiAqbmdJZj1cImRpYWxvZ1wiPjwvZGl2PlxyXG48L2Rpdj5cclxuPGJpemRvYy1wYW5lcy1vdXRsZXQgKGRpYWxvZ0NoYW5nZSk9XCJkaWFsb2cgPSAkZXZlbnRcIj48L2JpemRvYy1wYW5lcy1vdXRsZXQ+XHJcbiJdfQ==
231
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9tZS5kZXNrdG9wLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvaG9tZS9ob21lLmRlc2t0b3AuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9ob21lL2hvbWUuZGVza3RvcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlCLE9BQU8sRUFBZ0IsYUFBYSxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBT3RELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQXNCLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSTdFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFM0Qsd0JBQXdCO0FBUXhCLE1BQU0sT0FBTyxhQUFjLFNBQVEsUUFBUTtJQU96QyxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUFXLFdBQVcsQ0FBQyxLQUF3QjtRQUM3QyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUMxQixZQUFZLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxLQUFL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LElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDMUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7Z0JBQ3JFLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQzlCLENBQUM7aUJBQ0ksQ0FBQztnQkFDSixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQkFDakMsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7WUFDL0IsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDOzhHQS9MVSxhQUFhLHdRQWdFZCxhQUFhO2tHQWhFWixhQUFhLDZNQXFEYixVQUFVLHFGQ2pGdkIsNnNOQXdIQSx5NkdEOUZjLENBQUMsZ0JBQWdCLENBQUM7OzJGQUVuQixhQUFhO2tCQVB6QixTQUFTOytCQUNFLGFBQWEsUUFHakIsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsY0FDekIsQ0FBQyxnQkFBZ0IsQ0FBQzs7MEJBa0UzQixNQUFNOzJCQUFDLGFBQWE7eUNBWGtCLE1BQU07c0JBQTlDLFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFrSHZDLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkLCBJbmplY3QsIEhvc3RMaXN0ZW5lciwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0U2lkZW5hdiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xyXG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XHJcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBCaXpEb2NDb25maWcsIEJJWkRPQ19DT05GSUcsIE9wZW5Qb2xpY3kgfSBmcm9tICcuLi9jb3JlL2NvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBzdWJtZW51QW5pbWF0aW9uIH0gZnJvbSAnLi4vY29yZS9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgUmVjaXBpZW50TW9kZWwgfSBmcm9tICcuLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9zZXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQYW5lc1JvdXRlciB9IGZyb20gJy4uL2NvcmUvc2xvdHMvcm91dGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQb3B1cCB9IGZyb20gJy4uL2NvcmUvcG9wdXAvcG9wdXAuc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHViU2VydmljZSB9IGZyb20gJy4uL2NvcmUvaHViLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIb21lQmFzZSB9IGZyb20gJy4vaG9tZS1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25QYW5lQmFzZSwgTmF2aWdhdGlvblN0YXJ0IH0gZnJvbSAnLi4vY29yZS9zbG90cy9wYW5lLXJlZic7XHJcbmltcG9ydCB7IE1haWxib3hTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9tYWlsYm94LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgUHJvbXB0U2VydmljZSB9IGZyb20gJy4uL2NvcmUvcHJvbXB0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBRdWlja09wdGlvbnNDb21wb25lbnQgfSBmcm9tICcuL29wdGlvbnMvb3B0aW9ucy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBRdWlja1NpZ25Db21wb25lbnQgfSBmcm9tICcuL3NpZ24vc2lnbi5jb21wb25lbnQnO1xyXG5cclxuLyoqIGRlc2t0b3AgaG9tZSBjb21wICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWhvbWUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ob21lLmRlc2t0b3AuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2hvbWUuZGVza3RvcC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGhvc3Q6IHsgY2xhc3M6ICdtYXQtYXBwLWJhY2tncm91bmQnIH0sXHJcbiAgYW5pbWF0aW9uczogW3N1Ym1lbnVBbmltYXRpb25dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIb21lQ29tcG9uZW50IGV4dGVuZHMgSG9tZUJhc2Uge1xyXG4gIGRpYWxvZzogYm9vbGVhbjtcclxuICByZWFkb25seSBzeXNBZG1pbiA9IHRoaXMuX3Nlc3Npb24uaXNTeXN0ZW07XHJcbiAgcHJpdmF0ZSBfc3VibWVudU1vZGU6ICdmdWxsJyB8ICdzaHJpbmsnID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3N1Ym1lbnVNb2RlJykgYXMgYW55IHx8ICdmdWxsJztcclxuICByZWFkb25seSBmb3JtcyA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5mb3Jtcy5maWx0ZXIoZiA9PiBmLmNyZWF0YWJsZSk7XHJcbiAgY3JlYXRpbmc6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBfY29sbGFwc2VUb2dnbGUgPSBmYWxzZTtcclxuICBwdWJsaWMgZ2V0IHN1Ym1lbnVNb2RlKCk6ICdmdWxsJyB8ICdzaHJpbmsnIHtcclxuICAgIHJldHVybiB0aGlzLl9zdWJtZW51TW9kZTtcclxuICB9XHJcbiAgcHVibGljIHNldCBzdWJtZW51TW9kZSh2YWx1ZTogJ2Z1bGwnIHwgJ3NocmluaycpIHtcclxuICAgIHRoaXMuX3N1Ym1lbnVNb2RlID0gdmFsdWU7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc3VibWVudU1vZGUnLCB2YWx1ZSlcclxuICB9XHJcbiAgcHJpdmF0ZSBfc3VibWVudTogc3RyaW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3N1Ym1lbnUnKTtcclxuICBwcml2YXRlIF9wYXRoOiBzdHJpbmc7XHJcbiAgZ2V0IGFjdGl2ZU1lbnUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3VibWVudSB8fCB0aGlzLl9wYXRoO1xyXG4gIH1cclxuICBwdWJsaWMgZ2V0IHN1Ym1lbnUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9zdWJtZW51O1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IHN1Ym1lbnUodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fc3VibWVudSA9IHZhbHVlO1xyXG4gICAgaWYgKHZhbHVlKSBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc3VibWVudScsIHZhbHVlKTtcclxuICAgIGVsc2UgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3N1Ym1lbnUnKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfaXMobmFtZSwgdmFsPzogYm9vbGVhbikge1xyXG4gICAgaWYgKHZhbCA9PT0gdW5kZWZpbmVkKVxyXG4gICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSkgPT09ICcxJztcclxuICAgIGVsc2VcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obmFtZSwgdmFsID8gJzEnIDogJzAnKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfaXNPckRlZmF1bHQobmFtZSwgJGRlZmF1bHQpIHtcclxuICAgIGNvbnN0IHZhbCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKG5hbWUpO1xyXG4gICAgcmV0dXJuIHZhbCA/IHZhbCA9PT0gJzEnIDogJGRlZmF1bHQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2NvbGxhcHNlZCA9IHRoaXMuX2lzT3JEZWZhdWx0KCdjb2xsYXBzZWQnLCB0cnVlKTtcclxuICBwdWJsaWMgZ2V0IGNvbGxhcHNlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9jb2xsYXBzZWQ7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgY29sbGFwc2VkKHZhbHVlKSB7XHJcbiAgICB0aGlzLl9jb2xsYXBzZWQgPSB2YWx1ZTtcclxuICAgIHRoaXMuX2lzKCdjb2xsYXBzZWQnLCB0aGlzLmNvbGxhcHNlZCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3Bpbm5lZCA9IHRoaXMuX2lzT3JEZWZhdWx0KCdwaW5uZWQnLCB0cnVlKTtcclxuICBwdWJsaWMgZ2V0IHBpbm5lZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9waW5uZWQ7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgcGlubmVkKHZhbHVlKSB7XHJcbiAgICB0aGlzLl9waW5uZWQgPSB2YWx1ZTtcclxuICAgIHRoaXMuX2lzKCdwaW5uZWQnLCB2YWx1ZSlcclxuICB9XHJcbiAgQFZpZXdDaGlsZChNYXRTaWRlbmF2LCB7IHN0YXRpYzogdHJ1ZSB9KSBkcmF3ZXI6IE1hdFNpZGVuYXY7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9yb3V0ZXI6IFBhbmVzUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBfbWFpbGJveDogTWFpbGJveFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9wb3B1cDogUG9wdXAsXHJcbiAgICBwcml2YXRlIF9zYjogUHJvbXB0U2VydmljZSxcclxuICAgIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIHNlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgbWVzc2FnaW5nOiBIdWJTZXJ2aWNlLFxyXG4gICAgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxyXG4gICAgQEluamVjdChCSVpET0NfQ09ORklHKSBjb25maWc6IEJpekRvY0NvbmZpZykge1xyXG4gICAgc3VwZXIoc2Vzc2lvbiwgbWVzc2FnaW5nLCB0cmFuc2xhdGUsIHNuYWNrQmFyLCBpbmplY3RvciwgY29uZmlnKTtcclxuICAgIF9yb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKGUgPT4gZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCAmJiBlLnBhbmUucGF0aCAmJiBlLnBhbmUubW9kZSA9PT0gJ3BhbmUnKSkuXHJcbiAgICAgIHN1YnNjcmliZSgoZTogTmF2aWdhdGlvblBhbmVCYXNlKSA9PlxyXG4gICAgICAgIHRoaXMuX3BhdGggPSBlLnBhbmUucGF0aC5zcGxpdCgnLycpWzBdXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIC8qKiBvcHRpb25zICovXHJcbiAgb3B0aW9ucyhldnQ6IEV2ZW50KSB7XHJcbiAgICB0aGlzLl9wb3B1cC5vcGVuKFF1aWNrT3B0aW9uc0NvbXBvbmVudCwgZXZ0LnRhcmdldCBhcyBIVE1MRWxlbWVudCwgeyBwb3NpdGlvbjogJ2VuZCcgfSk7XHJcbiAgfVxyXG4gIHNpZ25vdXQoZXZ0OiBFdmVudCkge1xyXG4gICAgdGhpcy5fcG9wdXAub3BlbihRdWlja1NpZ25Db21wb25lbnQsIGV2dC50YXJnZXQgYXMgSFRNTEVsZW1lbnQsIHsgcG9zaXRpb246ICdlbmQnIH0pO1xyXG4gIH1cclxuICBuYXYocGF0aCkge1xyXG4gICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFtwYXRoXSk7XHJcbiAgICB0aGlzLnN1Ym1lbnUgPSBudWxsO1xyXG4gICAgdGhpcy5jb2xsYXBzZXN1Ym1lbnUoKTtcclxuICB9XHJcbiAgb25OZXdNZXNzYWdlKG1vZGVsOiBSZWNpcGllbnRNb2RlbCkge1xyXG4gICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFsnbWFpbGJveC9pJywgbW9kZWwuaWQuZW5jb2RlSWQoKV0sXHJcbiAgICAgIHtcclxuICAgICAgICBzdGF0ZTogeyBpdGVtOiBtb2RlbCB9LFxyXG4gICAgICAgIHBvbGljeTogT3BlblBvbGljeS5DbGVhclxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgY2xvc2VzdWJtZW51KCkge1xyXG4gICAgdGhpcy5zdWJtZW51ID0gbnVsbDtcclxuICB9XHJcbiAgb3Blbm5ldygpIHtcclxuICAgIGlmICh0aGlzLmZvcm1zLmxlbmd0aCA+IDEpIHtcclxuICAgICAgaWYgKHRoaXMuc3VibWVudSA9PT0gJ25ldycpXHJcbiAgICAgICAgdGhpcy5jbG9zZXN1Ym1lbnUoKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMub3BlbnN1Ym1lbnUoJ25ldycpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB0aGlzLl9jcmVhdGUoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfY3JlYXRlKCkge1xyXG4gICAgdGhpcy5jcmVhdGluZyA9IHRydWU7XHJcbiAgICB0aGlzLl9tYWlsYm94LmNyZWF0ZSh0aGlzLmZvcm1zWzBdLm5hbWUpLlxyXG4gICAgICBzdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IHIgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jcmVhdGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFsnbWFpbGJveC9pJywgci5pZC5lbmNvZGVJZCgpXSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHBvbGljeTogT3BlblBvbGljeS5DbGVhcixcclxuICAgICAgICAgICAgICBzdGF0ZTogeyBpdGVtOiByIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSwgZXJyb3I6KGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5faGFuZGxlRXJyKGUpO1xyXG4gICAgICAgIHRoaXMuY3JlYXRpbmcgPSBmYWxzZTtcclxuICAgICAgfX0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaGFuZGxlRXJyKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSB8IEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcikge1xyXG4gICAgaWYgKHJlc3BvbnNlLmNvbnN0cnVjdG9yLm5hbWUgPT09ICdQb3NpdGlvbkVycm9yJylcclxuICAgICAgc3dpdGNoICgocmVzcG9uc2UgYXMgR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yKS5jb2RlKSB7XHJcbiAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgICAgdGhpcy5fc2IuZXJyb3IoJ1VzZXJEZW5pZWRHZW9FcnInKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICB0aGlzLl9zYi5lcnJvcignR2VvRXJyJyk7XHJcbiAgICAgIH1cclxuICAgIGVsc2Ugc3dpdGNoICgocmVzcG9uc2UgYXMgSHR0cEVycm9yUmVzcG9uc2UpLnN0YXR1cykge1xyXG4gICAgICBjYXNlIDQwMTpcclxuICAgICAgICB0aGlzLl9zYi5lcnJvcignVW5hdXRob3JpemVkJyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgNDA2OlxyXG4gICAgICAgIHRoaXMuX3NiLmVycm9yU3RyaW5nKChyZXNwb25zZSBhcyBIdHRwRXJyb3JSZXNwb25zZSkuZXJyb3IpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDQyNjogLy8gbGljZW5zZVxyXG4gICAgICAgIHRoaXMuX3NiLmVycm9yKCdMaWNlbnNlRXJyJyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgdGhpcy5fc2IuZXJyb3IoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW5zdWJtZW51KG1lbnU6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuc3VibWVudSA9PT0gbWVudSlcclxuICAgICAgdGhpcy5zdWJtZW51TW9kZSA9IHRoaXMuc3VibWVudU1vZGUgPT09ICdmdWxsJyA/ICdzaHJpbmsnIDogJ2Z1bGwnO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuc3VibWVudSA9IG1lbnU7XHJcbiAgICAgIHRoaXMuc3VibWVudU1vZGUgPSAnZnVsbCc7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNvbGxhcHNlc3VibWVudSgpIHtcclxuICAgIGlmICghdGhpcy5waW5uZWQgJiYgdGhpcy5zdWJtZW51ICE9PSAnbmV3JykgdGhpcy5zdWJtZW51TW9kZSA9ICdzaHJpbmsnO1xyXG4gIH1cclxuICB0b2dnbGVQaW5uZWQoKSB7XHJcbiAgICB0aGlzLnBpbm5lZCA9ICF0aGlzLnBpbm5lZDtcclxuICAgIHRoaXMuc3VibWVudU1vZGUgPSB0aGlzLnBpbm5lZCA/ICdmdWxsJyA6ICdzaHJpbmsnO1xyXG4gIH1cclxuICBvdmVycmlkZSBtYWlscygpIHtcclxuICAgIHN1cGVyLm1haWxzKCk7XHJcbiAgICB0aGlzLm9wZW5zdWJtZW51KCdtYWlsYm94Jyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEFsdCArIG4vTiwgQ3RybCArIC5cclxuICAgKiBAcGFyYW0gZXZlbnRcclxuICAgKi9cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQuYWx0S2V5ICYmIChldmVudC5rZXkgPT09ICduJyB8fCBldmVudC5rZXkgPT09ICdOJykpIHtcclxuICAgICAgaWYgKHRoaXMuc3VibWVudSA9PT0gJ25ldycpXHJcbiAgICAgICAgdGhpcy5zdWJtZW51ID0gbnVsbDtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybXMubGVuZ3RoID09PSAxKVxyXG4gICAgICAgICAgdGhpcy5fY3JlYXRlKCk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnN1Ym1lbnUgPSAnbmV3JztcclxuICAgICAgICAgIHRoaXMuc3VibWVudU1vZGUgPSAnZnVsbCc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChldmVudC5jdHJsS2V5ICYmIGV2ZW50LmtleSA9PT0gJy4nKSB7XHJcbiAgICAgIGlmICh0aGlzLnN1Ym1lbnUgJiYgIXRoaXMuX2NvbGxhcHNlVG9nZ2xlKSB7XHJcbiAgICAgICAgdGhpcy5zdWJtZW51TW9kZSA9IHRoaXMuc3VibWVudU1vZGUgPT09ICdzaHJpbmsnID8gJ2Z1bGwnIDogJ3Nocmluayc7XHJcbiAgICAgICAgdGhpcy5fY29sbGFwc2VUb2dnbGUgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY29sbGFwc2VkID0gIXRoaXMuY29sbGFwc2VkO1xyXG4gICAgICAgIHRoaXMuX2NvbGxhcHNlVG9nZ2xlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBbY2xhc3MubmF2LWNvbGxhcHNlZF09XCJjb2xsYXBzZWRcIiBbY2xhc3MubmF2LW9wZW5dPVwic3VibWVudVwiXG4gIFtjbGFzcy5kaWFsb2ddPVwiZGlhbG9nXCJcbiAgY2xhc3M9XCJuYXYtbWVudSByb3dcIj5cbiAgPCEtLVtjbGFzcy5sb2FkaW5nXT1cImxvYWRpbmdcIi0tPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1uXCI+XG4gICAgPGRpdj5cbiAgICAgIEBpZiAoZm9ybXMubGVuZ3RoKSB7XG4gICAgICAgIDxkaXYgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVNZW51ID09PSAnbmV3J1wiIGNsYXNzPVwibmV3LWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgICAgIFtiaXpkb2NUb29sdGlwXT1cIidDb21wb3NlJ3x0cmFuc2xhdGVcIiBiaXpkb2NUb29sdGlwUG9zaXRpb249XCJlbmRcIiBbYml6ZG9jVG9vbHRpcERpc2FibGVkXT1cIiFjb2xsYXBzZWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5uZXcoKVwiIFtkaXNhYmxlZF09XCJjcmVhdGluZ1wiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidDb21wb3NlJ3wgdHJhbnNsYXRlXCIgY29sb3I9XCJwcmltYXJ5XCIgZGF0YS1oZWxwPVwiY29tcG9zZVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uPmFkZDwvbWF0LWljb24+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hdi1sYWJlbFwiPnt7J0NvbXBvc2UnfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICA8bWF0LW5hdi1saXN0PlxuICAgICAgICA8bWF0LWxpc3QtaXRlbSBbYXR0ci5hcmlhLWxhYmVsXT1cIidEYXNoYm9hcmQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAoY2xpY2spPVwibmF2KCdkYXNoYm9hcmQnKVwiIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlTWVudSA9PT0gJ2Rhc2hib2FyZCdcIlxuICAgICAgICAgIGRhdGEtaGVscD1cImRhc2hib2FyZFwiXG4gICAgICAgICAgW2JpemRvY1Rvb2x0aXBdPVwiJ0Rhc2hib2FyZCd8dHJhbnNsYXRlXCIgYml6ZG9jVG9vbHRpcFBvc2l0aW9uPVwiZW5kXCIgW2JpemRvY1Rvb2x0aXBEaXNhYmxlZF09XCIhY29sbGFwc2VkXCI+XG4gICAgICAgICAgPG1hdC1pY29uIG1hdExpc3RJdGVtSWNvbj5hcHBzPC9tYXQtaWNvbj48c3BhbiBjbGFzcz1cIm5hdi1sYWJlbFwiIG1hdExpc3RJdGVtVGl0bGU+e3snRGFzaGJvYXJkJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICA8L21hdC1saXN0LWl0ZW0+XG4gICAgICAgIDxtYXQtbGlzdC1pdGVtIChjbGljayk9XCJtYWlscygpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ01haWxib3gnfHRyYW5zbGF0ZVwiIGJpemRvY1Rvb2x0aXBQb3NpdGlvbj1cImVuZFwiIFtiaXpkb2NUb29sdGlwRGlzYWJsZWRdPVwiIWNvbGxhcHNlZFwiXG4gICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVNZW51ID09PSAnbWFpbGJveCdcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01haWxib3gnIHwgdHJhbnNsYXRlXCIgZGF0YS1oZWxwPVwiZm9sZGVyc1wiPlxuICAgICAgICAgIDxtYXQtaWNvbiBtYXRMaXN0SXRlbUljb24gW21hdEJhZGdlXT1cInByb2ZpbGUuaW5ib3hDb3VudFwiIFttYXRCYWRnZUhpZGRlbl09XCJwcm9maWxlLmluYm94Q291bnQgPCAxXCIgbWF0QmFkZ2VDb2xvcj1cImFjY2VudFwiIGFyaWEtaGlkZGVuPVwiZmFsc2VcIj5pbmJveDwvbWF0LWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJuYXYtbGFiZWxcIiBtYXRMaXN0SXRlbVRpdGxlPnt7J01haWxib3gnIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgIDwvbWF0LWxpc3QtaXRlbT5cbiAgICAgICAgQGlmIChzY2hlZHVsZXJFbmFibGVkKSB7XG4gICAgICAgICAgPG1hdC1saXN0LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInU2NoZWR1bGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwibmF2KCdzY2hlZHVsZScpXCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVNZW51ID09PSAnc2NoZWR1bGUnXCJcbiAgICAgICAgICAgIFtiaXpkb2NUb29sdGlwXT1cIidTY2hlZHVsZXInfHRyYW5zbGF0ZVwiIGJpemRvY1Rvb2x0aXBQb3NpdGlvbj1cImVuZFwiIFtiaXpkb2NUb29sdGlwRGlzYWJsZWRdPVwiIWNvbGxhcHNlZFwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIG1hdExpc3RJdGVtSWNvbiBjbGFzcz1cIm1hdC1pY29uLXJ0bC1taXJyb3JcIj5kYXRlX3JhbmdlPC9tYXQtaWNvbj48c3BhbiBjbGFzcz1cIm5hdi1sYWJlbFwiIG1hdExpc3RJdGVtVGl0bGU+e3sgJ1NjaGVkdWxlcicgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICA8L21hdC1saXN0LWl0ZW0+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChjaGF0RW5hYmxlZCkge1xuICAgICAgICAgIDxtYXQtbGlzdC1pdGVtIGRhdGEtaGVscD1cImNoYXRcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidDaGF0JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwibmF2KCdjb250YWN0cycpXCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVNZW51ID09PSAnY29udGFjdHMnXCJcbiAgICAgICAgICAgIFtiaXpkb2NUb29sdGlwXT1cIidDaGF0J3x0cmFuc2xhdGVcIiBiaXpkb2NUb29sdGlwUG9zaXRpb249XCJlbmRcIiBbYml6ZG9jVG9vbHRpcERpc2FibGVkXT1cIiFjb2xsYXBzZWRcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBtYXRMaXN0SXRlbUljb24gW21hdEJhZGdlXT1cInByb2ZpbGUuY29udmVyc2F0aW9uc0NvdW50XCIgW21hdEJhZGdlSGlkZGVuXT1cIiFwcm9maWxlLmNvbnZlcnNhdGlvbnNDb3VudFwiIG1hdEJhZGdlQ29sb3I9XCJhY2NlbnRcIiBhcmlhLWhpZGRlbj1cImZhbHNlXCI+Y2hhdDwvbWF0LWljb24+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hdi1sYWJlbFwiIG1hdExpc3RJdGVtVGl0bGU+e3sgJ0NoYXQnIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgPC9tYXQtbGlzdC1pdGVtPlxuICAgICAgICB9XG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuICAgICAgICBAaWYgKGVuYWJsZUFuYWx5c2lzICYmIHByb2ZpbGUuY3ViZXMubGVuZ3RoKSB7XG4gICAgICAgICAgPG1hdC1saXN0LWl0ZW1cbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuc3VibWVudSgnY3ViZScpXCJcbiAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlTWVudSA9PT0gJ2N1YmUnXCJcbiAgICAgICAgICAgIFtiaXpkb2NUb29sdGlwXT1cIidDdWJlJ3x0cmFuc2xhdGVcIiBiaXpkb2NUb29sdGlwUG9zaXRpb249XCJlbmRcIiBbYml6ZG9jVG9vbHRpcERpc2FibGVkXT1cIiFjb2xsYXBzZWRcIlxuICAgICAgICAgICAgZGF0YS1oZWxwPVwiY3ViZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0N1YmUnIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gbWF0TGlzdEl0ZW1JY29uPmVxdWFsaXplcjwvbWF0LWljb24+PHNwYW4gY2xhc3M9XCJuYXYtbGFiZWxcIiBtYXRMaXN0SXRlbVRpdGxlPnt7J0N1YmUnIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgPC9tYXQtbGlzdC1pdGVtPlxuICAgICAgICB9XG4gICAgICAgIEBpZiAocHJvZmlsZS5yZXBvcnRzLmxlbmd0aCkge1xuICAgICAgICAgIDxtYXQtbGlzdC1pdGVtXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlbnN1Ym1lbnUoJ3JlcG9ydHMnKVwiXG4gICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZU1lbnUgPT09ICdyZXBvcnRzJ1wiXG4gICAgICAgICAgICBbYml6ZG9jVG9vbHRpcF09XCInUmVwb3J0cyd8dHJhbnNsYXRlXCIgYml6ZG9jVG9vbHRpcFBvc2l0aW9uPVwiZW5kXCIgW2JpemRvY1Rvb2x0aXBEaXNhYmxlZF09XCIhY29sbGFwc2VkXCIgZGF0YS1oZWxwPVwicmVwb3J0c1wiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1JlcG9ydHMnIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gbWF0TGlzdEl0ZW1JY29uPmxpc3RfYWx0PC9tYXQtaWNvbj48c3BhbiBjbGFzcz1cIm5hdi1sYWJlbFwiIG1hdExpc3RJdGVtVGl0bGU+e3snUmVwb3J0cycgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICA8L21hdC1saXN0LWl0ZW0+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChzeXNBZG1pbikge1xuICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuICAgICAgICAgIDxtYXQtbGlzdC1pdGVtIChjbGljayk9XCJvcGVuc3VibWVudSgnYWRtaW4nKVwiXG4gICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZU1lbnUgPT09ICdhZG1pbidcIlxuICAgICAgICAgICAgW2JpemRvY1Rvb2x0aXBdPVwiJ1N5c3RlbSd8dHJhbnNsYXRlXCIgYml6ZG9jVG9vbHRpcFBvc2l0aW9uPVwiZW5kXCIgW2JpemRvY1Rvb2x0aXBEaXNhYmxlZF09XCIhY29sbGFwc2VkXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInU3lzdGVtJyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIG1hdExpc3RJdGVtSWNvbj5kZXZpY2VfaHViPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmF2LWxhYmVsXCIgbWF0TGlzdEl0ZW1UaXRsZT57eydXb3JrZmxvdycgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICA8L21hdC1saXN0LWl0ZW0+XG4gICAgICAgIH1cbiAgICAgIDwvbWF0LW5hdi1saXN0PlxuICAgIDwvZGl2PlxuICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cbiAgICA8IS0tPGxvdHRpZSBuYW1lPVwibGYzMF9lZGl0b3JfcXI3emdtY3NcIiAqbmdJZj1cImxvYWRpbmdcIj48L2xvdHRpZT4tLT5cbiAgICA8IS0tQGFuaW1hdGUtLT5cbiAgICA8ZGl2IGNsYXNzPVwic2lnbi1pblwiPlxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gZGF0YS1oZWxwPVwic2lnbi1pblwiIFtiaXpkb2NUb29sdGlwXT1cIidTZXR0aW5ncycgfCB0cmFuc2xhdGVcIiBiaXpkb2NUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1NldHRpbmdzJyB8IHRyYW5zbGF0ZVwiIChjbGljayk9XCJvcHRpb25zKCRldmVudClcIj5cbiAgICAgICAgPG1hdC1pY29uIG1hdEFuaW1hdGU9XCJyb3RhdGVcIj5zZXR0aW5nc29uPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gW2F0dHIuYXJpYS1sYWJlbF09XCInUG93ZXInIHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cInNpZ25vdXQoJGV2ZW50KVwiIFtiaXpkb2NUb29sdGlwXT1cIidFeGl0J3x0cmFuc2xhdGVcIiBiaXpkb2NUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiPlxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXQtaWNvbi1ydGwtbWlycm9yXCI+bG9nb3V0PC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPCEtLSAtLT5cbiAgQGlmIChzdWJtZW51KSB7XG4gICAgPGRpdiBjbGFzcz1cInN1Yi1tZW51XCIgKG1vdXNlbGVhdmUpPVwiY29sbGFwc2VzdWJtZW51KClcIiBbQHN1Ym1lbnVdPVwic3VibWVudU1vZGVcIiAoQHN1Ym1lbnUuZG9uZSk9XCJyZXNpemUoKVwiPlxuICAgICAgQGlmIChzdWJtZW51ICE9PSAnbmV3Jykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uXCI+XG4gICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInRvZ2dsZVBpbm5lZCgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiKHBpbm5lZD8nQ29sbGFwc2UnOidFeHBhbmQnKXx0cmFuc2xhdGVcIj48bWF0LWljb24gY2xhc3M9XCJtYXQtaWNvbi1ydGwtbWlycm9yXCI+e3twaW5uZWQgPyAncHVzaF9waW4nIDogJ21lbnUnfX08L21hdC1pY29uPjwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIEBzd2l0Y2ggKHN1Ym1lbnUpIHtcbiAgICAgICAgQGNhc2UgKCduZXcnKSB7XG4gICAgICAgICAgPGJpemRvYy1uZXctbWVudSAoY2hhbmdlKT1cImNsb3Nlc3VibWVudSgpXCI+PC9iaXpkb2MtbmV3LW1lbnU+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdtYWlsYm94Jykge1xuICAgICAgICAgIDxiaXpkb2MtZm9sZGVycy1tZW51IFtjb2xsYXBzZWRdPVwic3VibWVudU1vZGUgPT09ICdzaHJpbmsnXCIgKGNoYW5nZSk9XCJjb2xsYXBzZXN1Ym1lbnUoKVwiPjwvYml6ZG9jLWZvbGRlcnMtbWVudT5cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ2FkbWluJykge1xuICAgICAgICAgIDxiaXpkb2MtYWRtaW4tbWVudSBbY29sbGFwc2VkXT1cInN1Ym1lbnVNb2RlID09PSAnc2hyaW5rJ1wiPjwvYml6ZG9jLWFkbWluLW1lbnU+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdyZXBvcnRzJykge1xuICAgICAgICAgIDxiaXpkb2MtcmVwb3J0cy1tZW51IFtjb2xsYXBzZWRdPVwic3VibWVudU1vZGUgPT09ICdzaHJpbmsnXCIgKGNoYW5nZSk9XCJjb2xsYXBzZXN1Ym1lbnUoKVwiPjwvYml6ZG9jLXJlcG9ydHMtbWVudT5cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ2N1YmUnKSB7XG4gICAgICAgICAgPGJpemRvYy1jdWJlLW1lbnUgW2NvbGxhcHNlZF09XCJzdWJtZW51TW9kZSA9PT0gJ3NocmluaydcIiAoY2hhbmdlKT1cImNvbGxhcHNlc3VibWVudSgpXCI+PC9iaXpkb2MtY3ViZS1tZW51PlxuICAgICAgICB9XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIH1cbiAgQGlmIChkaWFsb2cpIHtcbiAgICA8ZGl2IGNsYXNzPVwiYmFja2Ryb3BcIj48L2Rpdj5cbiAgfVxuPC9kaXY+XG48Yml6ZG9jLXBhbmVzLW91dGxldCAoZGlhbG9nQ2hhbmdlKT1cImRpYWxvZyA9ICRldmVudFwiPjwvYml6ZG9jLXBhbmVzLW91dGxldD5cbiJdfQ==
@@ -18,20 +18,19 @@ import * as i6 from "../core/hub.service";
18
18
  import * as i7 from "../core/translate.service";
19
19
  import * as i8 from "@angular/material/snack-bar";
20
20
  import * as i9 from "../chat/chat-info";
21
- import * as i10 from "@angular/common";
22
- import * as i11 from "@angular/material/core";
23
- import * as i12 from "@angular/material/expansion";
24
- import * as i13 from "@angular/material/badge";
25
- import * as i14 from "@angular/material/list";
26
- import * as i15 from "@angular/material/divider";
27
- import * as i16 from "@angular/material/sidenav";
28
- import * as i17 from "@angular/material/toolbar";
29
- import * as i18 from "@angular/material/button";
30
- import * as i19 from "@angular/material/icon";
31
- import * as i20 from "../notifications/notifications-table.component";
32
- import * as i21 from "../core/popup/tooltip.directive";
33
- import * as i22 from "../chat/chat.mobile.component";
34
- import * as i23 from "../core/pipes/translate.pipe";
21
+ import * as i10 from "@angular/material/core";
22
+ import * as i11 from "@angular/material/expansion";
23
+ import * as i12 from "@angular/material/badge";
24
+ import * as i13 from "@angular/material/list";
25
+ import * as i14 from "@angular/material/divider";
26
+ import * as i15 from "@angular/material/sidenav";
27
+ import * as i16 from "@angular/material/toolbar";
28
+ import * as i17 from "@angular/material/button";
29
+ import * as i18 from "@angular/material/icon";
30
+ import * as i19 from "../notifications/notifications-table.component";
31
+ import * as i20 from "../core/popup/tooltip.directive";
32
+ import * as i21 from "../chat/chat.mobile.component";
33
+ import * as i22 from "../core/pipes/translate.pipe";
35
34
  /** home comp */
36
35
  export class HomeMobileComponent extends HomeBase {
37
36
  constructor(_router, _bs, _dir, _popup, injector, session, messaging, translate, snackBar, chat, config) {
@@ -117,11 +116,11 @@ export class HomeMobileComponent extends HomeBase {
117
116
  this.secondaryDrawer.toggle().then(this.resize);
118
117
  }
119
118
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: HomeMobileComponent, deps: [{ token: i1.Router }, { token: i2.MatBottomSheet }, { token: i3.Directionality }, { token: i4.Popup }, { token: i0.Injector }, { token: i5.SessionService }, { token: i6.HubService }, { token: i7.TranslateService }, { token: i8.MatSnackBar }, { token: i9.ChatInfo }, { token: BIZDOC_CONFIG }], target: i0.ɵɵFactoryTarget.Component }); }
120
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.1", type: HomeMobileComponent, selector: "bizdoc-mobile-home", viewQueries: [{ propertyName: "menuDrawer", first: true, predicate: MatSidenav, descendants: true, static: true }, { propertyName: "secondaryDrawer", first: true, predicate: ["secondaryDrawer"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<mat-toolbar color=\"primary\" [class.loading]=\"loading\">\r\n <button mat-icon-button (click)='menuDrawer.toggle()' [bizdocTooltip]=\"'Menu' | translate\" [attr.aria-label]=\"'Menu' | translate\"><mat-icon>menu</mat-icon></button>\r\n <div [routerLink]='[\"/dashboard\"]' matRipple [matRippleUnbounded]=\"true\" [matRippleRadius]=\"100\" [matRippleCentered]=\"true\" style=\"outline: none\">\r\n <img id=\"logo\" src=\"logo.svg\" alt=\"\" />\r\n </div>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"notifs()\" data-help=\"notifications\" [attr.aria-label]=\"'Notifications' | translate\" [bizdocTooltip]=\"'Notifications' | translate\"><mat-icon [matBadge]=\"profile.notificationsCount\" [matBadgeHidden]=\"!profile.notificationsCount\" matBadgeColor=\"accent\">notifications</mat-icon></button>\r\n <button mat-icon-button *ngIf='chatEnabled' (click)=\"chat()\" data-help=\"chat\" [attr.aria-label]=\"'Chat' | translate\" [bizdocTooltip]=\"'Chat' | translate\"><mat-icon [matBadge]=\"profile.conversationsCount\" [matBadgeHidden]=\"!profile.conversationsCount\" matBadgeColor=\"accent\">chat</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-sidenav-container autosize>\r\n <mat-sidenav #menuDrawer data-help=\"menu\" mode=\"over\" closed class=\"mat-elevation-z5\">\r\n <mat-nav-list>\r\n <mat-list-item [routerLink]='[\"/dashboard\"]' [attr.aria-label]=\"'Dashboard' | translate\" routerLinkActive=\"active\" data-help=\"dashboard\">\r\n <mat-icon matListItemIcon>apps</mat-icon><span matListItemTitle>{{'Dashboard' | translate}}</span>\r\n </mat-list-item>\r\n <mat-expansion-panel class=\"mat-elevation-z0\" [attr.aria-label]=\"'Mailbox' | translate\" data-help=\"folders\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <mat-icon>inbox</mat-icon>\r\n <span>{{'Mailbox' | translate}}</span>\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <mat-list-item *ngFor=\"let f of profile.folders\" [routerLink]='[\"/mailbox/f\", f.name]' routerLinkActive=\"active\" [attr.data-help]=\"'folder-'+f.name\" [attr.aria-label]=\"f.title\">\r\n <mat-icon matListItemIcon>{{f.icon}}</mat-icon>\r\n <span matListItemTitle>{{f.title}}</span>\r\n </mat-list-item>\r\n </mat-expansion-panel>\r\n <mat-list-item [routerLink]='[\"/schedule\"]' routerLinkActive=\"active\" *ngIf=\"schedulerEnabled\" [attr.aria-label]=\"'Scheduler' | translate\">\r\n <mat-icon matListItemIcon class=\"mat-icon-rtl-mirror\">date_range</mat-icon>\r\n <span matListItemTitle>{{ 'Schedule' | translate}}</span>\r\n </mat-list-item>\r\n <mat-divider></mat-divider>\r\n <ng-container *ngIf=\"enableAnalysis\">\r\n <ng-container *ngFor=\"let c of profile.cubes\">\r\n <mat-expansion-panel class=\"mat-elevation-z0\" *ngIf=\"c.views.length\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <mat-icon>{{ c.icon || 'insert_chart_outlined'}}</mat-icon>\r\n <span>{{c.title}}</span>\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <mat-list-item *ngFor=\"let v of c.views\" [routerLink]='[\"/cube\", c.name, \"v\", v.name]' routerLinkActive=\"active\" [attr.data-help]=\"'cube-view-'+v.name\">\r\n <mat-icon matListItemIcon>{{v.icon || 'insights'}}</mat-icon>\r\n <span matListItemTitle>{{v.title}}</span>\r\n </mat-list-item>\r\n </mat-expansion-panel>\r\n </ng-container>\r\n </ng-container>\r\n <mat-expansion-panel *ngIf=\"profile.reports.length\" class=\"mat-elevation-z0\" [attr.aria-label]=\"'Reports' | translate\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <mat-icon>list_alt</mat-icon>\r\n <span>{{'Reports' | translate}}</span>\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <mat-list-item *ngFor=\"let r of profile.reports\" [routerLink]='[\"/reports\", r.name]' routerLinkActive=\"active\"\r\n [attr.aria-label]=\"r.title\" [attr.data-help]=\"'report-'+r.name\">\r\n <mat-icon matListItemIcon>{{r.icon}}</mat-icon><span matListItemTitle>{{r.title}}</span>\r\n </mat-list-item>\r\n </mat-expansion-panel>\r\n <mat-divider></mat-divider>\r\n <mat-list-item role=\"listitem\" data-help=\"options\"\r\n (click)=\"options($event)\">\r\n <mat-icon matListItemIcon>settingson</mat-icon>\r\n <span matListItemTitle>{{'Settings' | translate}}</span>\r\n </mat-list-item>\r\n <mat-divider></mat-divider>\r\n <mat-list-item role=\"listitem\" (click)=\"signout()\">\r\n <mat-icon matListItemIcon>logout</mat-icon>\r\n <span matListItemTitle>{{'Power' | translate}}</span>\r\n </mat-list-item>\r\n </mat-nav-list>\r\n </mat-sidenav>\r\n <mat-sidenav #secondaryDrawer position=\"end\" closed mode=\"over\" autoFocus=\"false\" class=\"mat-elevation-z3\">\r\n <ng-container [ngSwitch]=\"mode\">\r\n <bizdoc-chat [(contact)]=\"contact\" *ngSwitchCase=\"'chat'\"></bizdoc-chat>\r\n <bizdoc-notifications-table *ngSwitchCase=\"'notifications'\"></bizdoc-notifications-table>\r\n </ng-container>\r\n </mat-sidenav>\r\n <mat-sidenav-content data-help=\"main\">\r\n <router-outlet></router-outlet>\r\n </mat-sidenav-content>\r\n</mat-sidenav-container>\r\n<button mat-fab [attr.aria-label]=\"'Compose'| translate\" [@fabFull]=\"composeState\" *ngIf=\"composeEnabled\" color=\"accent\" (click)=\"compose()\" data-help=\"compose\"><mat-icon>add</mat-icon></button>\r\n", styles: ["#logo{padding-left:12px;padding-right:12px;vertical-align:middle;width:120px;filter:invert(1)}:host ::ng-deep .mat-sidenav-container{height:calc(100% - 58px)}:host ::ng-deep .mat-sidenav-container .home-content{padding:unset}::ng-deep .mat-drawer-inner-container{height:auto}router-outlet~*{position:absolute;height:100%;width:100%}.mat-mdc-fab{z-index:1;position:absolute;bottom:30px;right:30px}::ng-deep [dir=rtl] .mat-mdc-fab{left:30px;right:unset}:host ::ng-deep .mat-expansion-panel-header{padding:0 18px}:host ::ng-deep .mat-expansion-panel-header .mat-expansion-panel-header-title .mat-icon{padding:0 3px}\n"], dependencies: [{ kind: "directive", type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i11.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: i12.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i12.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i12.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i13.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: i14.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i14.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i14.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "component", type: i15.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i14.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "component", type: i16.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i16.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i16.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "component", type: i17.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i18.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i18.MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }, { kind: "component", type: i19.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i20.NotificationsTableComponent, selector: "bizdoc-notifications-table" }, { kind: "directive", type: i21.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "component", type: i22.ChatMobileComponent, selector: "bizdoc-chat", inputs: ["contact"], outputs: ["contactChange"] }, { kind: "pipe", type: i23.TranslatePipe, name: "translate" }], animations: [fabAnimation] }); }
119
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.1", type: HomeMobileComponent, selector: "bizdoc-mobile-home", viewQueries: [{ propertyName: "menuDrawer", first: true, predicate: MatSidenav, descendants: true, static: true }, { propertyName: "secondaryDrawer", first: true, predicate: ["secondaryDrawer"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<mat-toolbar color=\"primary\" [class.loading]=\"loading\">\n <button mat-icon-button (click)='menuDrawer.toggle()' [bizdocTooltip]=\"'Menu' | translate\" [attr.aria-label]=\"'Menu' | translate\"><mat-icon>menu</mat-icon></button>\n <div [routerLink]='[\"/dashboard\"]' matRipple [matRippleUnbounded]=\"true\" [matRippleRadius]=\"100\" [matRippleCentered]=\"true\" style=\"outline: none\">\n <img id=\"logo\" src=\"logo.svg\" alt=\"\" />\n </div>\n <span class=\"divider\"></span>\n <button mat-icon-button (click)=\"notifs()\" data-help=\"notifications\" [attr.aria-label]=\"'Notifications' | translate\" [bizdocTooltip]=\"'Notifications' | translate\"><mat-icon [matBadge]=\"profile.notificationsCount\" [matBadgeHidden]=\"!profile.notificationsCount\" matBadgeColor=\"accent\">notifications</mat-icon></button>\n @if (chatEnabled) {\n <button mat-icon-button (click)=\"chat()\" data-help=\"chat\" [attr.aria-label]=\"'Chat' | translate\" [bizdocTooltip]=\"'Chat' | translate\"><mat-icon [matBadge]=\"profile.conversationsCount\" [matBadgeHidden]=\"!profile.conversationsCount\" matBadgeColor=\"accent\">chat</mat-icon></button>\n }\n</mat-toolbar>\n<mat-sidenav-container autosize>\n <mat-sidenav #menuDrawer data-help=\"menu\" mode=\"over\" closed class=\"mat-elevation-z5\">\n <mat-nav-list>\n <mat-list-item [routerLink]='[\"/dashboard\"]' [attr.aria-label]=\"'Dashboard' | translate\" routerLinkActive=\"active\" data-help=\"dashboard\">\n <mat-icon matListItemIcon>apps</mat-icon><span matListItemTitle>{{'Dashboard' | translate}}</span>\n </mat-list-item>\n <mat-expansion-panel class=\"mat-elevation-z0\" [attr.aria-label]=\"'Mailbox' | translate\" data-help=\"folders\">\n <mat-expansion-panel-header>\n <mat-panel-title>\n <mat-icon>inbox</mat-icon>\n <span>{{'Mailbox' | translate}}</span>\n </mat-panel-title>\n </mat-expansion-panel-header>\n @for (f of profile.folders; track f) {\n <mat-list-item [routerLink]='[\"/mailbox/f\", f.name]' routerLinkActive=\"active\" [attr.data-help]=\"'folder-'+f.name\" [attr.aria-label]=\"f.title\">\n <mat-icon matListItemIcon>{{f.icon}}</mat-icon>\n <span matListItemTitle>{{f.title}}</span>\n </mat-list-item>\n }\n </mat-expansion-panel>\n @if (schedulerEnabled) {\n <mat-list-item [routerLink]='[\"/schedule\"]' routerLinkActive=\"active\" [attr.aria-label]=\"'Scheduler' | translate\">\n <mat-icon matListItemIcon class=\"mat-icon-rtl-mirror\">date_range</mat-icon>\n <span matListItemTitle>{{ 'Schedule' | translate}}</span>\n </mat-list-item>\n }\n <mat-divider></mat-divider>\n @if (enableAnalysis) {\n @for (c of profile.cubes; track c) {\n @if (c.views.length) {\n <mat-expansion-panel class=\"mat-elevation-z0\">\n <mat-expansion-panel-header>\n <mat-panel-title>\n <mat-icon>{{ c.icon || 'insert_chart_outlined'}}</mat-icon>\n <span>{{c.title}}</span>\n </mat-panel-title>\n </mat-expansion-panel-header>\n @for (v of c.views; track v) {\n <mat-list-item [routerLink]='[\"/cube\", c.name, \"v\", v.name]' routerLinkActive=\"active\" [attr.data-help]=\"'cube-view-'+v.name\">\n <mat-icon matListItemIcon>{{v.icon || 'insights'}}</mat-icon>\n <span matListItemTitle>{{v.title}}</span>\n </mat-list-item>\n }\n </mat-expansion-panel>\n }\n }\n }\n @if (profile.reports.length) {\n <mat-expansion-panel class=\"mat-elevation-z0\" [attr.aria-label]=\"'Reports' | translate\">\n <mat-expansion-panel-header>\n <mat-panel-title>\n <mat-icon>list_alt</mat-icon>\n <span>{{'Reports' | translate}}</span>\n </mat-panel-title>\n </mat-expansion-panel-header>\n @for (r of profile.reports; track r) {\n <mat-list-item [routerLink]='[\"/reports\", r.name]' routerLinkActive=\"active\"\n [attr.aria-label]=\"r.title\" [attr.data-help]=\"'report-'+r.name\">\n <mat-icon matListItemIcon>{{r.icon}}</mat-icon><span matListItemTitle>{{r.title}}</span>\n </mat-list-item>\n }\n </mat-expansion-panel>\n }\n <mat-divider></mat-divider>\n <mat-list-item role=\"listitem\" data-help=\"options\"\n (click)=\"options($event)\">\n <mat-icon matListItemIcon>settingson</mat-icon>\n <span matListItemTitle>{{'Settings' | translate}}</span>\n </mat-list-item>\n <mat-divider></mat-divider>\n <mat-list-item role=\"listitem\" (click)=\"signout()\">\n <mat-icon matListItemIcon>logout</mat-icon>\n <span matListItemTitle>{{'Power' | translate}}</span>\n </mat-list-item>\n </mat-nav-list>\n </mat-sidenav>\n <mat-sidenav #secondaryDrawer position=\"end\" closed mode=\"over\" autoFocus=\"false\" class=\"mat-elevation-z3\">\n @switch (mode) {\n @case ('chat') {\n <bizdoc-chat [(contact)]=\"contact\"></bizdoc-chat>\n }\n @case ('notifications') {\n <bizdoc-notifications-table></bizdoc-notifications-table>\n }\n }\n </mat-sidenav>\n <mat-sidenav-content data-help=\"main\">\n <router-outlet></router-outlet>\n </mat-sidenav-content>\n</mat-sidenav-container>\n@if (composeEnabled) {\n <button mat-fab [attr.aria-label]=\"'Compose'| translate\" [@fabFull]=\"composeState\" color=\"accent\" (click)=\"compose()\" data-help=\"compose\"><mat-icon>add</mat-icon></button>\n}\n", styles: ["#logo{padding-left:12px;padding-right:12px;vertical-align:middle;width:120px;filter:invert(1)}:host ::ng-deep .mat-sidenav-container{height:calc(100% - 58px)}:host ::ng-deep .mat-sidenav-container .home-content{padding:unset}::ng-deep .mat-drawer-inner-container{height:auto}router-outlet~*{position:absolute;height:100%;width:100%}.mat-mdc-fab{z-index:1;position:absolute;bottom:30px;right:30px}::ng-deep [dir=rtl] .mat-mdc-fab{left:30px;right:unset}:host ::ng-deep .mat-expansion-panel-header{padding:0 18px}:host ::ng-deep .mat-expansion-panel-header .mat-expansion-panel-header-title .mat-icon{padding:0 3px}\n"], dependencies: [{ kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i10.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: i11.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i11.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i11.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i12.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: i13.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i13.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i13.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "component", type: i14.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i13.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "component", type: i15.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i15.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i15.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "component", type: i16.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i17.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i17.MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }, { kind: "component", type: i18.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i19.NotificationsTableComponent, selector: "bizdoc-notifications-table" }, { kind: "directive", type: i20.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "component", type: i21.ChatMobileComponent, selector: "bizdoc-chat", inputs: ["contact"], outputs: ["contactChange"] }, { kind: "pipe", type: i22.TranslatePipe, name: "translate" }], animations: [fabAnimation] }); }
121
120
  }
122
121
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: HomeMobileComponent, decorators: [{
123
122
  type: Component,
124
- args: [{ selector: 'bizdoc-mobile-home', animations: [fabAnimation], template: "<mat-toolbar color=\"primary\" [class.loading]=\"loading\">\r\n <button mat-icon-button (click)='menuDrawer.toggle()' [bizdocTooltip]=\"'Menu' | translate\" [attr.aria-label]=\"'Menu' | translate\"><mat-icon>menu</mat-icon></button>\r\n <div [routerLink]='[\"/dashboard\"]' matRipple [matRippleUnbounded]=\"true\" [matRippleRadius]=\"100\" [matRippleCentered]=\"true\" style=\"outline: none\">\r\n <img id=\"logo\" src=\"logo.svg\" alt=\"\" />\r\n </div>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"notifs()\" data-help=\"notifications\" [attr.aria-label]=\"'Notifications' | translate\" [bizdocTooltip]=\"'Notifications' | translate\"><mat-icon [matBadge]=\"profile.notificationsCount\" [matBadgeHidden]=\"!profile.notificationsCount\" matBadgeColor=\"accent\">notifications</mat-icon></button>\r\n <button mat-icon-button *ngIf='chatEnabled' (click)=\"chat()\" data-help=\"chat\" [attr.aria-label]=\"'Chat' | translate\" [bizdocTooltip]=\"'Chat' | translate\"><mat-icon [matBadge]=\"profile.conversationsCount\" [matBadgeHidden]=\"!profile.conversationsCount\" matBadgeColor=\"accent\">chat</mat-icon></button>\r\n</mat-toolbar>\r\n<mat-sidenav-container autosize>\r\n <mat-sidenav #menuDrawer data-help=\"menu\" mode=\"over\" closed class=\"mat-elevation-z5\">\r\n <mat-nav-list>\r\n <mat-list-item [routerLink]='[\"/dashboard\"]' [attr.aria-label]=\"'Dashboard' | translate\" routerLinkActive=\"active\" data-help=\"dashboard\">\r\n <mat-icon matListItemIcon>apps</mat-icon><span matListItemTitle>{{'Dashboard' | translate}}</span>\r\n </mat-list-item>\r\n <mat-expansion-panel class=\"mat-elevation-z0\" [attr.aria-label]=\"'Mailbox' | translate\" data-help=\"folders\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <mat-icon>inbox</mat-icon>\r\n <span>{{'Mailbox' | translate}}</span>\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <mat-list-item *ngFor=\"let f of profile.folders\" [routerLink]='[\"/mailbox/f\", f.name]' routerLinkActive=\"active\" [attr.data-help]=\"'folder-'+f.name\" [attr.aria-label]=\"f.title\">\r\n <mat-icon matListItemIcon>{{f.icon}}</mat-icon>\r\n <span matListItemTitle>{{f.title}}</span>\r\n </mat-list-item>\r\n </mat-expansion-panel>\r\n <mat-list-item [routerLink]='[\"/schedule\"]' routerLinkActive=\"active\" *ngIf=\"schedulerEnabled\" [attr.aria-label]=\"'Scheduler' | translate\">\r\n <mat-icon matListItemIcon class=\"mat-icon-rtl-mirror\">date_range</mat-icon>\r\n <span matListItemTitle>{{ 'Schedule' | translate}}</span>\r\n </mat-list-item>\r\n <mat-divider></mat-divider>\r\n <ng-container *ngIf=\"enableAnalysis\">\r\n <ng-container *ngFor=\"let c of profile.cubes\">\r\n <mat-expansion-panel class=\"mat-elevation-z0\" *ngIf=\"c.views.length\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <mat-icon>{{ c.icon || 'insert_chart_outlined'}}</mat-icon>\r\n <span>{{c.title}}</span>\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <mat-list-item *ngFor=\"let v of c.views\" [routerLink]='[\"/cube\", c.name, \"v\", v.name]' routerLinkActive=\"active\" [attr.data-help]=\"'cube-view-'+v.name\">\r\n <mat-icon matListItemIcon>{{v.icon || 'insights'}}</mat-icon>\r\n <span matListItemTitle>{{v.title}}</span>\r\n </mat-list-item>\r\n </mat-expansion-panel>\r\n </ng-container>\r\n </ng-container>\r\n <mat-expansion-panel *ngIf=\"profile.reports.length\" class=\"mat-elevation-z0\" [attr.aria-label]=\"'Reports' | translate\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <mat-icon>list_alt</mat-icon>\r\n <span>{{'Reports' | translate}}</span>\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <mat-list-item *ngFor=\"let r of profile.reports\" [routerLink]='[\"/reports\", r.name]' routerLinkActive=\"active\"\r\n [attr.aria-label]=\"r.title\" [attr.data-help]=\"'report-'+r.name\">\r\n <mat-icon matListItemIcon>{{r.icon}}</mat-icon><span matListItemTitle>{{r.title}}</span>\r\n </mat-list-item>\r\n </mat-expansion-panel>\r\n <mat-divider></mat-divider>\r\n <mat-list-item role=\"listitem\" data-help=\"options\"\r\n (click)=\"options($event)\">\r\n <mat-icon matListItemIcon>settingson</mat-icon>\r\n <span matListItemTitle>{{'Settings' | translate}}</span>\r\n </mat-list-item>\r\n <mat-divider></mat-divider>\r\n <mat-list-item role=\"listitem\" (click)=\"signout()\">\r\n <mat-icon matListItemIcon>logout</mat-icon>\r\n <span matListItemTitle>{{'Power' | translate}}</span>\r\n </mat-list-item>\r\n </mat-nav-list>\r\n </mat-sidenav>\r\n <mat-sidenav #secondaryDrawer position=\"end\" closed mode=\"over\" autoFocus=\"false\" class=\"mat-elevation-z3\">\r\n <ng-container [ngSwitch]=\"mode\">\r\n <bizdoc-chat [(contact)]=\"contact\" *ngSwitchCase=\"'chat'\"></bizdoc-chat>\r\n <bizdoc-notifications-table *ngSwitchCase=\"'notifications'\"></bizdoc-notifications-table>\r\n </ng-container>\r\n </mat-sidenav>\r\n <mat-sidenav-content data-help=\"main\">\r\n <router-outlet></router-outlet>\r\n </mat-sidenav-content>\r\n</mat-sidenav-container>\r\n<button mat-fab [attr.aria-label]=\"'Compose'| translate\" [@fabFull]=\"composeState\" *ngIf=\"composeEnabled\" color=\"accent\" (click)=\"compose()\" data-help=\"compose\"><mat-icon>add</mat-icon></button>\r\n", styles: ["#logo{padding-left:12px;padding-right:12px;vertical-align:middle;width:120px;filter:invert(1)}:host ::ng-deep .mat-sidenav-container{height:calc(100% - 58px)}:host ::ng-deep .mat-sidenav-container .home-content{padding:unset}::ng-deep .mat-drawer-inner-container{height:auto}router-outlet~*{position:absolute;height:100%;width:100%}.mat-mdc-fab{z-index:1;position:absolute;bottom:30px;right:30px}::ng-deep [dir=rtl] .mat-mdc-fab{left:30px;right:unset}:host ::ng-deep .mat-expansion-panel-header{padding:0 18px}:host ::ng-deep .mat-expansion-panel-header .mat-expansion-panel-header-title .mat-icon{padding:0 3px}\n"] }]
123
+ args: [{ selector: 'bizdoc-mobile-home', animations: [fabAnimation], template: "<mat-toolbar color=\"primary\" [class.loading]=\"loading\">\n <button mat-icon-button (click)='menuDrawer.toggle()' [bizdocTooltip]=\"'Menu' | translate\" [attr.aria-label]=\"'Menu' | translate\"><mat-icon>menu</mat-icon></button>\n <div [routerLink]='[\"/dashboard\"]' matRipple [matRippleUnbounded]=\"true\" [matRippleRadius]=\"100\" [matRippleCentered]=\"true\" style=\"outline: none\">\n <img id=\"logo\" src=\"logo.svg\" alt=\"\" />\n </div>\n <span class=\"divider\"></span>\n <button mat-icon-button (click)=\"notifs()\" data-help=\"notifications\" [attr.aria-label]=\"'Notifications' | translate\" [bizdocTooltip]=\"'Notifications' | translate\"><mat-icon [matBadge]=\"profile.notificationsCount\" [matBadgeHidden]=\"!profile.notificationsCount\" matBadgeColor=\"accent\">notifications</mat-icon></button>\n @if (chatEnabled) {\n <button mat-icon-button (click)=\"chat()\" data-help=\"chat\" [attr.aria-label]=\"'Chat' | translate\" [bizdocTooltip]=\"'Chat' | translate\"><mat-icon [matBadge]=\"profile.conversationsCount\" [matBadgeHidden]=\"!profile.conversationsCount\" matBadgeColor=\"accent\">chat</mat-icon></button>\n }\n</mat-toolbar>\n<mat-sidenav-container autosize>\n <mat-sidenav #menuDrawer data-help=\"menu\" mode=\"over\" closed class=\"mat-elevation-z5\">\n <mat-nav-list>\n <mat-list-item [routerLink]='[\"/dashboard\"]' [attr.aria-label]=\"'Dashboard' | translate\" routerLinkActive=\"active\" data-help=\"dashboard\">\n <mat-icon matListItemIcon>apps</mat-icon><span matListItemTitle>{{'Dashboard' | translate}}</span>\n </mat-list-item>\n <mat-expansion-panel class=\"mat-elevation-z0\" [attr.aria-label]=\"'Mailbox' | translate\" data-help=\"folders\">\n <mat-expansion-panel-header>\n <mat-panel-title>\n <mat-icon>inbox</mat-icon>\n <span>{{'Mailbox' | translate}}</span>\n </mat-panel-title>\n </mat-expansion-panel-header>\n @for (f of profile.folders; track f) {\n <mat-list-item [routerLink]='[\"/mailbox/f\", f.name]' routerLinkActive=\"active\" [attr.data-help]=\"'folder-'+f.name\" [attr.aria-label]=\"f.title\">\n <mat-icon matListItemIcon>{{f.icon}}</mat-icon>\n <span matListItemTitle>{{f.title}}</span>\n </mat-list-item>\n }\n </mat-expansion-panel>\n @if (schedulerEnabled) {\n <mat-list-item [routerLink]='[\"/schedule\"]' routerLinkActive=\"active\" [attr.aria-label]=\"'Scheduler' | translate\">\n <mat-icon matListItemIcon class=\"mat-icon-rtl-mirror\">date_range</mat-icon>\n <span matListItemTitle>{{ 'Schedule' | translate}}</span>\n </mat-list-item>\n }\n <mat-divider></mat-divider>\n @if (enableAnalysis) {\n @for (c of profile.cubes; track c) {\n @if (c.views.length) {\n <mat-expansion-panel class=\"mat-elevation-z0\">\n <mat-expansion-panel-header>\n <mat-panel-title>\n <mat-icon>{{ c.icon || 'insert_chart_outlined'}}</mat-icon>\n <span>{{c.title}}</span>\n </mat-panel-title>\n </mat-expansion-panel-header>\n @for (v of c.views; track v) {\n <mat-list-item [routerLink]='[\"/cube\", c.name, \"v\", v.name]' routerLinkActive=\"active\" [attr.data-help]=\"'cube-view-'+v.name\">\n <mat-icon matListItemIcon>{{v.icon || 'insights'}}</mat-icon>\n <span matListItemTitle>{{v.title}}</span>\n </mat-list-item>\n }\n </mat-expansion-panel>\n }\n }\n }\n @if (profile.reports.length) {\n <mat-expansion-panel class=\"mat-elevation-z0\" [attr.aria-label]=\"'Reports' | translate\">\n <mat-expansion-panel-header>\n <mat-panel-title>\n <mat-icon>list_alt</mat-icon>\n <span>{{'Reports' | translate}}</span>\n </mat-panel-title>\n </mat-expansion-panel-header>\n @for (r of profile.reports; track r) {\n <mat-list-item [routerLink]='[\"/reports\", r.name]' routerLinkActive=\"active\"\n [attr.aria-label]=\"r.title\" [attr.data-help]=\"'report-'+r.name\">\n <mat-icon matListItemIcon>{{r.icon}}</mat-icon><span matListItemTitle>{{r.title}}</span>\n </mat-list-item>\n }\n </mat-expansion-panel>\n }\n <mat-divider></mat-divider>\n <mat-list-item role=\"listitem\" data-help=\"options\"\n (click)=\"options($event)\">\n <mat-icon matListItemIcon>settingson</mat-icon>\n <span matListItemTitle>{{'Settings' | translate}}</span>\n </mat-list-item>\n <mat-divider></mat-divider>\n <mat-list-item role=\"listitem\" (click)=\"signout()\">\n <mat-icon matListItemIcon>logout</mat-icon>\n <span matListItemTitle>{{'Power' | translate}}</span>\n </mat-list-item>\n </mat-nav-list>\n </mat-sidenav>\n <mat-sidenav #secondaryDrawer position=\"end\" closed mode=\"over\" autoFocus=\"false\" class=\"mat-elevation-z3\">\n @switch (mode) {\n @case ('chat') {\n <bizdoc-chat [(contact)]=\"contact\"></bizdoc-chat>\n }\n @case ('notifications') {\n <bizdoc-notifications-table></bizdoc-notifications-table>\n }\n }\n </mat-sidenav>\n <mat-sidenav-content data-help=\"main\">\n <router-outlet></router-outlet>\n </mat-sidenav-content>\n</mat-sidenav-container>\n@if (composeEnabled) {\n <button mat-fab [attr.aria-label]=\"'Compose'| translate\" [@fabFull]=\"composeState\" color=\"accent\" (click)=\"compose()\" data-help=\"compose\"><mat-icon>add</mat-icon></button>\n}\n", styles: ["#logo{padding-left:12px;padding-right:12px;vertical-align:middle;width:120px;filter:invert(1)}:host ::ng-deep .mat-sidenav-container{height:calc(100% - 58px)}:host ::ng-deep .mat-sidenav-container .home-content{padding:unset}::ng-deep .mat-drawer-inner-container{height:auto}router-outlet~*{position:absolute;height:100%;width:100%}.mat-mdc-fab{z-index:1;position:absolute;bottom:30px;right:30px}::ng-deep [dir=rtl] .mat-mdc-fab{left:30px;right:unset}:host ::ng-deep .mat-expansion-panel-header{padding:0 18px}:host ::ng-deep .mat-expansion-panel-header .mat-expansion-panel-header-title .mat-icon{padding:0 3px}\n"] }]
125
124
  }], ctorParameters: () => [{ type: i1.Router }, { type: i2.MatBottomSheet }, { type: i3.Directionality }, { type: i4.Popup }, { type: i0.Injector }, { type: i5.SessionService }, { type: i6.HubService }, { type: i7.TranslateService }, { type: i8.MatSnackBar }, { type: i9.ChatInfo }, { type: undefined, decorators: [{
126
125
  type: Inject,
127
126
  args: [BIZDOC_CONFIG]
@@ -132,4 +131,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImpor
132
131
  type: ViewChild,
133
132
  args: ['secondaryDrawer', { static: true }]
134
133
  }] } });
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9tZS5tb2JpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9ob21lL2hvbWUubW9iaWxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvaG9tZS9ob21lLm1vYmlsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBZ0IsZUFBZSxFQUFFLGFBQWEsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUl2RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkMsT0FBTyxFQUFnQixhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFLbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFakYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWpELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ3BFLGdCQUFnQjtBQU9oQixNQUFNLE9BQU8sbUJBQW9CLFNBQVEsUUFBUTtJQU8vQyxZQUNVLE9BQWUsRUFDZixHQUFtQixFQUNuQixJQUFvQixFQUNwQixNQUFhLEVBQ3JCLFFBQWtCLEVBQ2xCLE9BQXVCLEVBQ3ZCLFNBQXFCLEVBQ3JCLFNBQTJCLEVBQzNCLFFBQXFCLEVBQ3JCLElBQWMsRUFD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LENBQUM7OzJGQUVmLG1CQUFtQjtrQkFOL0IsU0FBUzsrQkFDRSxvQkFBb0IsY0FHbEIsQ0FBQyxZQUFZLENBQUM7OzBCQW9CdkIsTUFBTTsyQkFBQyxhQUFhO3lDQWJrQixVQUFVO3NCQUFsRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ1MsZUFBZTtzQkFBOUQsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdDaGlsZCwgSW5qZWN0LCBPbkluaXQsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlck91dGxldCwgTmF2aWdhdGlvblN0YXJ0LCBBY3RpdmF0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBNYXRTaWRlbmF2IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XHJcbmltcG9ydCB7IE1hdEJvdHRvbVNoZWV0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYm90dG9tLXNoZWV0JztcclxuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xyXG5pbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcclxuaW1wb3J0IHsgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEJpekRvY0NvbmZpZywgQklaRE9DX0NPTkZJRyB9IGZyb20gJy4uL2NvcmUvY29uZmlndXJhdGlvbic7XHJcbmltcG9ydCB7IGZhYkFuaW1hdGlvbiB9IGZyb20gJy4uL2NvcmUvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IENvbnRhY3QsIFJlY2lwaWVudE1vZGVsIH0gZnJvbSAnLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHViU2VydmljZSB9IGZyb20gJy4uL2NvcmUvaHViLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEZvcm1TZWxlY3RvclNoZWV0IH0gZnJvbSAnLi4vY29tcG9zZS9mb3JtLXNlbGVjdG9yL2Zvcm0tc2VsZWN0b3Iuc2hlZXQnO1xyXG5pbXBvcnQgeyBQb3B1cCB9IGZyb20gJy4uL2NvcmUvcG9wdXAvcG9wdXAuc2VydmljZSc7XHJcbmltcG9ydCB7IEhvbWVCYXNlIH0gZnJvbSAnLi9ob21lLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2hhdEluZm8gfSBmcm9tICcuLi9jaGF0L2NoYXQtaW5mbyc7XHJcbmltcG9ydCB7IFF1aWNrU2lnbkNvbXBvbmVudCB9IGZyb20gJy4vc2lnbi9zaWduLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFF1aWNrT3B0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4vb3B0aW9ucy9vcHRpb25zLmNvbXBvbmVudCc7XHJcbi8qKiBob21lIGNvbXAgKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdiaXpkb2MtbW9iaWxlLWhvbWUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ob21lLm1vYmlsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaG9tZS5tb2JpbGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBhbmltYXRpb25zOiBbZmFiQW5pbWF0aW9uXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSG9tZU1vYmlsZUNvbXBvbmVudCBleHRlbmRzIEhvbWVCYXNlIGltcGxlbWVudHMgT25Jbml0IHtcclxuICBtb2RlOiAnY2hhdCcgfCAnbm90aWZpY2F0aW9ucyc7XHJcbiAgY29tcG9zZVN0YXRlOiAnd29ya2luZycgfCAnZG9uZSc7XHJcbiAgY29udGFjdDogQ29udGFjdDtcclxuICBjb21wb3NlRW5hYmxlZDogYm9vbGVhbjtcclxuICBAVmlld0NoaWxkKE1hdFNpZGVuYXYsIHsgc3RhdGljOiB0cnVlIH0pIG1lbnVEcmF3ZXI6IE1hdFNpZGVuYXY7XHJcbiAgQFZpZXdDaGlsZCgnc2Vjb25kYXJ5RHJhd2VyJywgeyBzdGF0aWM6IHRydWUgfSkgc2Vjb25kYXJ5RHJhd2VyOiBNYXRTaWRlbmF2O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIF9iczogTWF0Qm90dG9tU2hlZXQsXHJcbiAgICBwcml2YXRlIF9kaXI6IERpcmVjdGlvbmFsaXR5LFxyXG4gICAgcHJpdmF0ZSBfcG9wdXA6IFBvcHVwLFxyXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBtZXNzYWdpbmc6IEh1YlNlcnZpY2UsXHJcbiAgICB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBzbmFja0JhcjogTWF0U25hY2tCYXIsXHJcbiAgICBjaGF0OiBDaGF0SW5mbyxcclxuICAgIEBJbmplY3QoQklaRE9DX0NPTkZJRykgY29uZmlnOiBCaXpEb2NDb25maWcpIHtcclxuICAgIHN1cGVyKHNlc3Npb24sIG1lc3NhZ2luZywgdHJhbnNsYXRlLCBzbmFja0JhciwgaW5qZWN0b3IsIGNvbmZpZyk7XHJcbiAgICBfcm91dGVyLmluaXRpYWxOYXZpZ2F0aW9uKCk7XHJcbiAgICBjaGF0Ll9vcGVuJC5zdWJzY3JpYmUoZSA9PiB7XHJcbiAgICAgIHRoaXMubW9kZSA9ICdjaGF0JztcclxuICAgICAgdGhpcy5jb250YWN0ID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmNvbnRhY3RzLmZpbmQoYyA9PiBjLmlkID09IGUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG92ZXJyaWRlIG5nT25Jbml0KCkge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgIHRoaXMuX3JvdXRlci5ldmVudHMuc3Vic2NyaWJlKGUgPT4ge1xyXG4gICAgICAvLyBjbG9zZSBtZW51IHdoZW4geHNcclxuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcclxuICAgICAgICB0aGlzLm1lbnVEcmF3ZXIuY2xvc2UoKTtcclxuICAgICAgfVxyXG4gICAgICAvLyBlbmFibGUgY29tcG9zZSBvbiBtb2JpbGUgcGVyIHJvdXRlXHJcbiAgICAgIGVsc2UgaWYgKGUgaW5zdGFuY2VvZiBBY3RpdmF0aW9uRW5kKSB7XHJcbiAgICAgICAgaWYgKGUuc25hcHNob3QuY2hpbGRyZW4ubGVuZ3RoID09PSAwKVxyXG4gICAgICAgICAgdGhpcy5jb21wb3NlRW5hYmxlZCA9IChlIGFzIEFjdGl2YXRpb25FbmQpLnNuYXBzaG90LmRhdGFbJ2NvbXBvc2UnXTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0cnkge1xyXG4gICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQucmVxdWVzdEZ1bGxzY3JlZW4oeyBuYXZpZ2F0aW9uVUk6ICdoaWRlJyB9KTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgY29uc29sZS5sb2coZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNvbXBvc2UoKSB7XHJcbiAgICB0aGlzLl9icy5vcGVuKEZvcm1TZWxlY3RvclNoZWV0LCB7XHJcbiAgICAgIGF1dG9Gb2N1czogdHJ1ZSxcclxuICAgICAgZGlyZWN0aW9uOiB0aGlzLl9kaXIudmFsdWVcclxuICAgIH0pLmluc3RhbmNlLmRvbmUuXHJcbiAgICAgIHBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLmNvbXBvc2VTdGF0ZSA9ICd3b3JraW5nJztcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY29tcG9zZVN0YXRlID0gJ2RvbmUnLCA1MDApXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBvbk5ld01lc3NhZ2UobW9kZWw6IFJlY2lwaWVudE1vZGVsPGFueT4pIHtcclxuICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbJ21haWxib3gvaScsIG1vZGVsLmlkLmVuY29kZUlkKCldLFxyXG4gICAgICB7XHJcbiAgICAgICAgc3RhdGU6IHsgaXRlbTogbW9kZWwgfVxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgY2hhdCgpIHtcclxuICAgIHRoaXMubW9kZSA9ICdjaGF0JztcclxuICAgIGlmICh0aGlzLnNlY29uZGFyeURyYXdlci5vcGVuZWQpIHtcclxuICAgICAgaWYgKHRoaXMuY29udGFjdCkgdGhpcy5jb250YWN0ID0gbnVsbDtcclxuICAgICAgZWxzZSB0aGlzLl9jbG9zZSgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB0aGlzLl9vcGVuKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX29wZW4oKSB7XHJcbiAgICB0aGlzLnNlY29uZGFyeURyYXdlci5vcGVuKCkudGhlbih0aGlzLnJlc2l6ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jbG9zZSgpIHtcclxuICAgIHRoaXMuc2Vjb25kYXJ5RHJhd2VyLmNsb3NlKCkudGhlbih0aGlzLnJlc2l6ZSk7XHJcbiAgfVxyXG4gIGdldEFuaW1hdGlvbihvdXRsZXQ6IFJvdXRlck91dGxldCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gb3V0bGV0ICYmIG91dGxldC5hY3RpdmF0ZWRSb3V0ZURhdGEgJiYgb3V0bGV0LmFjdGl2YXRlZFJvdXRlRGF0YVsnYW5pbWF0aW9uJ107XHJcbiAgfVxyXG4gIC8qKiBvcHRpb25zICovXHJcbiAgb3B0aW9ucyhldnQ6IEV2ZW50KSB7XHJcbiAgICB0aGlzLl9wb3B1cC5vcGVuKFF1aWNrT3B0aW9uc0NvbXBvbmVudCwgZXZ0LnRhcmdldCBhcyBIVE1MRWxlbWVudCwgeyBwb3NpdGlvbjogJ2VuZCcgfSk7XHJcbiAgfVxyXG4gIHNpZ25vdXQoKSB7XHJcbiAgICB0aGlzLm1lbnVEcmF3ZXIuY2xvc2UoKTtcclxuICAgIHRoaXMuX2JzLm9wZW4oUXVpY2tTaWduQ29tcG9uZW50LCB7XHJcbiAgICAgIGRpcmVjdGlvbjogdGhpcy5fZGlyLnZhbHVlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBub3RpZnMoKSB7XHJcbiAgICBzdXBlci5ub3RpZnMoKTtcclxuICAgIHRoaXMubW9kZSA9ICdub3RpZmljYXRpb25zJztcclxuICAgIHRoaXMuc2Vjb25kYXJ5RHJhd2VyLnRvZ2dsZSgpLnRoZW4odGhpcy5yZXNpemUpO1xyXG4gIH1cclxufVxyXG4iLCI8bWF0LXRvb2xiYXIgY29sb3I9XCJwcmltYXJ5XCIgW2NsYXNzLmxvYWRpbmddPVwibG9hZGluZ1wiPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9J21lbnVEcmF3ZXIudG9nZ2xlKCknIFtiaXpkb2NUb29sdGlwXT1cIidNZW51JyB8IHRyYW5zbGF0ZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01lbnUnIHwgdHJhbnNsYXRlXCI+PG1hdC1pY29uPm1lbnU8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gIDxkaXYgW3JvdXRlckxpbmtdPSdbXCIvZGFzaGJvYXJkXCJdJyBtYXRSaXBwbGUgW21hdFJpcHBsZVVuYm91bmRlZF09XCJ0cnVlXCIgW21hdFJpcHBsZVJhZGl1c109XCIxMDBcIiBbbWF0UmlwcGxlQ2VudGVyZWRdPVwidHJ1ZVwiIHN0eWxlPVwib3V0bGluZTogbm9uZVwiPlxyXG4gICAgPGltZyBpZD1cImxvZ29cIiBzcmM9XCJsb2dvLnN2Z1wiIGFsdD1cIlwiIC8+XHJcbiAgPC9kaXY+XHJcbiAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJub3RpZnMoKVwiIGRhdGEtaGVscD1cIm5vdGlmaWNhdGlvbnNcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidOb3RpZmljYXRpb25zJyB8IHRyYW5zbGF0ZVwiIFtiaXpkb2NUb29sdGlwXT1cIidOb3RpZmljYXRpb25zJyB8IHRyYW5zbGF0ZVwiPjxtYXQtaWNvbiBbbWF0QmFkZ2VdPVwicHJvZmlsZS5ub3RpZmljYXRpb25zQ291bnRcIiBbbWF0QmFkZ2VIaWRkZW5dPVwiIXByb2ZpbGUubm90aWZpY2F0aW9uc0NvdW50XCIgbWF0QmFkZ2VDb2xvcj1cImFjY2VudFwiPm5vdGlmaWNhdGlvbnM8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uICpuZ0lmPSdjaGF0RW5hYmxlZCcgKGNsaWNrKT1cImNoYXQoKVwiIGRhdGEtaGVscD1cImNoYXRcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidDaGF0JyB8IHRyYW5zbGF0ZVwiIFtiaXpkb2NUb29sdGlwXT1cIidDaGF0JyB8IHRyYW5zbGF0ZVwiPjxtYXQtaWNvbiBbbWF0QmFkZ2VdPVwicHJvZmlsZS5jb252ZXJzYXRpb25zQ291bnRcIiBbbWF0QmFkZ2VIaWRkZW5dPVwiIXByb2ZpbGUuY29udmVyc2F0aW9uc0NvdW50XCIgbWF0QmFkZ2VDb2xvcj1cImFjY2VudFwiPmNoYXQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG48L21hdC10b29sYmFyPlxyXG48bWF0LXNpZGVuYXYtY29udGFpbmVyIGF1dG9zaXplPlxyXG4gIDxtYXQtc2lkZW5hdiAjbWVudURyYXdlciBkYXRhLWhlbHA9XCJtZW51XCIgbW9kZT1cIm92ZXJcIiBjbG9zZWQgY2xhc3M9XCJtYXQtZWxldmF0aW9uLXo1XCI+XHJcbiAgICA8bWF0LW5hdi1saXN0PlxyXG4gICAgICA8bWF0LWxpc3QtaXRlbSBbcm91dGVyTGlua109J1tcIi9kYXNoYm9hcmRcIl0nIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0Rhc2hib2FyZCcgfCB0cmFuc2xhdGVcIiByb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlXCIgZGF0YS1oZWxwPVwiZGFzaGJvYXJkXCI+XHJcbiAgICAgICAgPG1hdC1pY29uIG1hdExpc3RJdGVtSWNvbj5hcHBzPC9tYXQtaWNvbj48c3BhbiBtYXRMaXN0SXRlbVRpdGxlPnt7J0Rhc2hib2FyZCcgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgPC9tYXQtbGlzdC1pdGVtPlxyXG4gICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBjbGFzcz1cIm1hdC1lbGV2YXRpb24tejBcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidNYWlsYm94JyB8IHRyYW5zbGF0ZVwiIGRhdGEtaGVscD1cImZvbGRlcnNcIj5cclxuICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgICA8bWF0LXBhbmVsLXRpdGxlPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+aW5ib3g8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8c3Bhbj57eydNYWlsYm94JyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgPC9tYXQtcGFuZWwtdGl0bGU+XHJcbiAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgICA8bWF0LWxpc3QtaXRlbSAqbmdGb3I9XCJsZXQgZiBvZiBwcm9maWxlLmZvbGRlcnNcIiBbcm91dGVyTGlua109J1tcIi9tYWlsYm94L2ZcIiwgZi5uYW1lXScgcm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZVwiIFthdHRyLmRhdGEtaGVscF09XCInZm9sZGVyLScrZi5uYW1lXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJmLnRpdGxlXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24gbWF0TGlzdEl0ZW1JY29uPnt7Zi5pY29ufX08L21hdC1pY29uPlxyXG4gICAgICAgICAgPHNwYW4gbWF0TGlzdEl0ZW1UaXRsZT57e2YudGl0bGV9fTwvc3Bhbj5cclxuICAgICAgICA8L21hdC1saXN0LWl0ZW0+XHJcbiAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuICAgICAgPG1hdC1saXN0LWl0ZW0gW3JvdXRlckxpbmtdPSdbXCIvc2NoZWR1bGVcIl0nIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmVcIiAqbmdJZj1cInNjaGVkdWxlckVuYWJsZWRcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidTY2hlZHVsZXInIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgPG1hdC1pY29uIG1hdExpc3RJdGVtSWNvbiBjbGFzcz1cIm1hdC1pY29uLXJ0bC1taXJyb3JcIj5kYXRlX3JhbmdlPC9tYXQtaWNvbj5cclxuICAgICAgICA8c3BhbiBtYXRMaXN0SXRlbVRpdGxlPnt7ICdTY2hlZHVsZScgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgPC9tYXQtbGlzdC1pdGVtPlxyXG4gICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVuYWJsZUFuYWx5c2lzXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGMgb2YgcHJvZmlsZS5jdWJlc1wiPlxyXG4gICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsIGNsYXNzPVwibWF0LWVsZXZhdGlvbi16MFwiICpuZ0lmPVwiYy52aWV3cy5sZW5ndGhcIj5cclxuICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgICAgICAgPG1hdC1wYW5lbC10aXRsZT5cclxuICAgICAgICAgICAgICA8bWF0LWljb24+e3sgYy5pY29uIHx8ICdpbnNlcnRfY2hhcnRfb3V0bGluZWQnfX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgIDxzcGFuPnt7Yy50aXRsZX19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L21hdC1wYW5lbC10aXRsZT5cclxuICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgICA8bWF0LWxpc3QtaXRlbSAqbmdGb3I9XCJsZXQgdiBvZiBjLnZpZXdzXCIgW3JvdXRlckxpbmtdPSdbXCIvY3ViZVwiLCBjLm5hbWUsIFwidlwiLCB2Lm5hbWVdJyByb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlXCIgW2F0dHIuZGF0YS1oZWxwXT1cIidjdWJlLXZpZXctJyt2Lm5hbWVcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIG1hdExpc3RJdGVtSWNvbj57e3YuaWNvbiB8fCAnaW5zaWdodHMnfX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8c3BhbiBtYXRMaXN0SXRlbVRpdGxlPnt7di50aXRsZX19PC9zcGFuPlxyXG4gICAgICAgICAgPC9tYXQtbGlzdC1pdGVtPlxyXG4gICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCAqbmdJZj1cInByb2ZpbGUucmVwb3J0cy5sZW5ndGhcIiBjbGFzcz1cIm1hdC1lbGV2YXRpb24tejBcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidSZXBvcnRzJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgICAgIDxtYXQtcGFuZWwtdGl0bGU+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5saXN0X2FsdDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7J1JlcG9ydHMnIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICA8L21hdC1wYW5lbC10aXRsZT5cclxuICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgIDxtYXQtbGlzdC1pdGVtICpuZ0Zvcj1cImxldCByIG9mIHByb2ZpbGUucmVwb3J0c1wiIFtyb3V0ZXJMaW5rXT0nW1wiL3JlcG9ydHNcIiwgci5uYW1lXScgcm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJyLnRpdGxlXCIgW2F0dHIuZGF0YS1oZWxwXT1cIidyZXBvcnQtJytyLm5hbWVcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBtYXRMaXN0SXRlbUljb24+e3tyLmljb259fTwvbWF0LWljb24+PHNwYW4gbWF0TGlzdEl0ZW1UaXRsZT57e3IudGl0bGV9fTwvc3Bhbj5cclxuICAgICAgICA8L21hdC1saXN0LWl0ZW0+XHJcbiAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgIDxtYXQtbGlzdC1pdGVtIHJvbGU9XCJsaXN0aXRlbVwiIGRhdGEtaGVscD1cIm9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3B0aW9ucygkZXZlbnQpXCI+XHJcbiAgICAgICAgPG1hdC1pY29uIG1hdExpc3RJdGVtSWNvbj5zZXR0aW5nc29uPC9tYXQtaWNvbj5cclxuICAgICAgICA8c3BhbiBtYXRMaXN0SXRlbVRpdGxlPnt7J1NldHRpbmdzJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICA8L21hdC1saXN0LWl0ZW0+XHJcbiAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICA8bWF0LWxpc3QtaXRlbSByb2xlPVwibGlzdGl0ZW1cIiAoY2xpY2spPVwic2lnbm91dCgpXCI+XHJcbiAgICAgICAgPG1hdC1pY29uIG1hdExpc3RJdGVtSWNvbj5sb2dvdXQ8L21hdC1pY29uPlxyXG4gICAgICAgIDxzcGFuIG1hdExpc3RJdGVtVGl0bGU+e3snUG93ZXInIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgIDwvbWF0LWxpc3QtaXRlbT5cclxuICAgIDwvbWF0LW5hdi1saXN0PlxyXG4gIDwvbWF0LXNpZGVuYXY+XHJcbiAgPG1hdC1zaWRlbmF2ICNzZWNvbmRhcnlEcmF3ZXIgcG9zaXRpb249XCJlbmRcIiBjbG9zZWQgbW9kZT1cIm92ZXJcIiBhdXRvRm9jdXM9XCJmYWxzZVwiIGNsYXNzPVwibWF0LWVsZXZhdGlvbi16M1wiPlxyXG4gICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwibW9kZVwiPlxyXG4gICAgPGJpemRvYy1jaGF0IFsoY29udGFjdCldPVwiY29udGFjdFwiICpuZ1N3aXRjaENhc2U9XCInY2hhdCdcIj48L2JpemRvYy1jaGF0PlxyXG4gICAgPGJpemRvYy1ub3RpZmljYXRpb25zLXRhYmxlICpuZ1N3aXRjaENhc2U9XCInbm90aWZpY2F0aW9ucydcIj48L2JpemRvYy1ub3RpZmljYXRpb25zLXRhYmxlPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9tYXQtc2lkZW5hdj5cclxuICA8bWF0LXNpZGVuYXYtY29udGVudCBkYXRhLWhlbHA9XCJtYWluXCI+XHJcbiAgICA8cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+XHJcbiAgPC9tYXQtc2lkZW5hdi1jb250ZW50PlxyXG48L21hdC1zaWRlbmF2LWNvbnRhaW5lcj5cclxuPGJ1dHRvbiBtYXQtZmFiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0NvbXBvc2UnfCB0cmFuc2xhdGVcIiBbQGZhYkZ1bGxdPVwiY29tcG9zZVN0YXRlXCIgKm5nSWY9XCJjb21wb3NlRW5hYmxlZFwiIGNvbG9yPVwiYWNjZW50XCIgKGNsaWNrKT1cImNvbXBvc2UoKVwiIGRhdGEtaGVscD1cImNvbXBvc2VcIj48bWF0LWljb24+YWRkPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuIl19
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9tZS5tb2JpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9ob21lL2hvbWUubW9iaWxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvaG9tZS9ob21lLm1vYmlsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBZ0IsZUFBZSxFQUFFLGFBQWEsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUl2RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkMsT0FBTyxFQUFnQixhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFLbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFakYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWpELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDcEUsZ0JBQWdCO0FBT2hCLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxRQUFRO0lBTy9DLFlBQ1UsT0FBZSxFQUNmLEdBQW1CLEVBQ25CLElBQW9CLEVBQ3BCLE1BQWEsRUFDckIsUUFBa0IsRUFDbEIsT0FBdUIsRUFDdkIsU0FBcUIsRUFDckIsU0FBMkIsRUFDM0IsUUFBcUIsRUFDckIsSUFBYyxFQUNT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Q0FBQzs7MkZBRWYsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNFLG9CQUFvQixjQUdsQixDQUFDLFlBQVksQ0FBQzs7MEJBb0J2QixNQUFNOzJCQUFDLGFBQWE7eUNBYmtCLFVBQVU7c0JBQWxELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDUyxlQUFlO3NCQUE5RCxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkLCBJbmplY3QsIE9uSW5pdCwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyT3V0bGV0LCBOYXZpZ2F0aW9uU3RhcnQsIEFjdGl2YXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE1hdFNpZGVuYXYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcclxuaW1wb3J0IHsgTWF0Qm90dG9tU2hlZXQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9ib3R0b20tc2hlZXQnO1xyXG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XHJcbmltcG9ydCB7IERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xyXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQml6RG9jQ29uZmlnLCBCSVpET0NfQ09ORklHIH0gZnJvbSAnLi4vY29yZS9jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgZmFiQW5pbWF0aW9uIH0gZnJvbSAnLi4vY29yZS9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgQ29udGFjdCwgUmVjaXBpZW50TW9kZWwgfSBmcm9tICcuLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9zZXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdWJTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9odWIuc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9ybVNlbGVjdG9yU2hlZXQgfSBmcm9tICcuLi9jb21wb3NlL2Zvcm0tc2VsZWN0b3IvZm9ybS1zZWxlY3Rvci5zaGVldCc7XHJcbmltcG9ydCB7IFBvcHVwIH0gZnJvbSAnLi4vY29yZS9wb3B1cC9wb3B1cC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSG9tZUJhc2UgfSBmcm9tICcuL2hvbWUtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDaGF0SW5mbyB9IGZyb20gJy4uL2NoYXQvY2hhdC1pbmZvJztcclxuaW1wb3J0IHsgUXVpY2tTaWduQ29tcG9uZW50IH0gZnJvbSAnLi9zaWduL3NpZ24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgUXVpY2tPcHRpb25zQ29tcG9uZW50IH0gZnJvbSAnLi9vcHRpb25zL29wdGlvbnMuY29tcG9uZW50JztcclxuLyoqIGhvbWUgY29tcCAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1tb2JpbGUtaG9tZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hvbWUubW9iaWxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ob21lLm1vYmlsZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFtmYWJBbmltYXRpb25dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIb21lTW9iaWxlQ29tcG9uZW50IGV4dGVuZHMgSG9tZUJhc2UgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIG1vZGU6ICdjaGF0JyB8ICdub3RpZmljYXRpb25zJztcclxuICBjb21wb3NlU3RhdGU6ICd3b3JraW5nJyB8ICdkb25lJztcclxuICBjb250YWN0OiBDb250YWN0O1xyXG4gIGNvbXBvc2VFbmFibGVkOiBib29sZWFuO1xyXG4gIEBWaWV3Q2hpbGQoTWF0U2lkZW5hdiwgeyBzdGF0aWM6IHRydWUgfSkgbWVudURyYXdlcjogTWF0U2lkZW5hdjtcclxuICBAVmlld0NoaWxkKCdzZWNvbmRhcnlEcmF3ZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBzZWNvbmRhcnlEcmF3ZXI6IE1hdFNpZGVuYXY7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9yb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgX2JzOiBNYXRCb3R0b21TaGVldCxcclxuICAgIHByaXZhdGUgX2RpcjogRGlyZWN0aW9uYWxpdHksXHJcbiAgICBwcml2YXRlIF9wb3B1cDogUG9wdXAsXHJcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBzZXNzaW9uOiBTZXNzaW9uU2VydmljZSxcclxuICAgIG1lc3NhZ2luZzogSHViU2VydmljZSxcclxuICAgIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHNuYWNrQmFyOiBNYXRTbmFja0JhcixcclxuICAgIGNoYXQ6IENoYXRJbmZvLFxyXG4gICAgQEluamVjdChCSVpET0NfQ09ORklHKSBjb25maWc6IEJpekRvY0NvbmZpZykge1xyXG4gICAgc3VwZXIoc2Vzc2lvbiwgbWVzc2FnaW5nLCB0cmFuc2xhdGUsIHNuYWNrQmFyLCBpbmplY3RvciwgY29uZmlnKTtcclxuICAgIF9yb3V0ZXIuaW5pdGlhbE5hdmlnYXRpb24oKTtcclxuICAgIGNoYXQuX29wZW4kLnN1YnNjcmliZShlID0+IHtcclxuICAgICAgdGhpcy5tb2RlID0gJ2NoYXQnO1xyXG4gICAgICB0aGlzLmNvbnRhY3QgPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuY29udGFjdHMuZmluZChjID0+IGMuaWQgPT0gZSk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgdGhpcy5fcm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoZSA9PiB7XHJcbiAgICAgIC8vIGNsb3NlIG1lbnUgd2hlbiB4c1xyXG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xyXG4gICAgICAgIHRoaXMubWVudURyYXdlci5jbG9zZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIGVuYWJsZSBjb21wb3NlIG9uIG1vYmlsZSBwZXIgcm91dGVcclxuICAgICAgZWxzZSBpZiAoZSBpbnN0YW5jZW9mIEFjdGl2YXRpb25FbmQpIHtcclxuICAgICAgICBpZiAoZS5zbmFwc2hvdC5jaGlsZHJlbi5sZW5ndGggPT09IDApXHJcbiAgICAgICAgICB0aGlzLmNvbXBvc2VFbmFibGVkID0gKGUgYXMgQWN0aXZhdGlvbkVuZCkuc25hcHNob3QuZGF0YVsnY29tcG9zZSddO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRyeSB7XHJcbiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5yZXF1ZXN0RnVsbHNjcmVlbih7IG5hdmlnYXRpb25VSTogJ2hpZGUnIH0pO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgIH1cclxuICB9XHJcbiAgY29tcG9zZSgpIHtcclxuICAgIHRoaXMuX2JzLm9wZW4oRm9ybVNlbGVjdG9yU2hlZXQsIHtcclxuICAgICAgYXV0b0ZvY3VzOiB0cnVlLFxyXG4gICAgICBkaXJlY3Rpb246IHRoaXMuX2Rpci52YWx1ZVxyXG4gICAgfSkuaW5zdGFuY2UuZG9uZS5cclxuICAgICAgcGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY29tcG9zZVN0YXRlID0gJ3dvcmtpbmcnO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jb21wb3NlU3RhdGUgPSAnZG9uZScsIDUwMClcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIG9uTmV3TWVzc2FnZShtb2RlbDogUmVjaXBpZW50TW9kZWw8YW55Pikge1xyXG4gICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFsnbWFpbGJveC9pJywgbW9kZWwuaWQuZW5jb2RlSWQoKV0sXHJcbiAgICAgIHtcclxuICAgICAgICBzdGF0ZTogeyBpdGVtOiBtb2RlbCB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBjaGF0KCkge1xyXG4gICAgdGhpcy5tb2RlID0gJ2NoYXQnO1xyXG4gICAgaWYgKHRoaXMuc2Vjb25kYXJ5RHJhd2VyLm9wZW5lZCkge1xyXG4gICAgICBpZiAodGhpcy5jb250YWN0KSB0aGlzLmNvbnRhY3QgPSBudWxsO1xyXG4gICAgICBlbHNlIHRoaXMuX2Nsb3NlKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHRoaXMuX29wZW4oKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfb3BlbigpIHtcclxuICAgIHRoaXMuc2Vjb25kYXJ5RHJhd2VyLm9wZW4oKS50aGVuKHRoaXMucmVzaXplKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2Nsb3NlKCkge1xyXG4gICAgdGhpcy5zZWNvbmRhcnlEcmF3ZXIuY2xvc2UoKS50aGVuKHRoaXMucmVzaXplKTtcclxuICB9XHJcbiAgZ2V0QW5pbWF0aW9uKG91dGxldDogUm91dGVyT3V0bGV0KTogc3RyaW5nIHtcclxuICAgIHJldHVybiBvdXRsZXQgJiYgb3V0bGV0LmFjdGl2YXRlZFJvdXRlRGF0YSAmJiBvdXRsZXQuYWN0aXZhdGVkUm91dGVEYXRhWydhbmltYXRpb24nXTtcclxuICB9XHJcbiAgLyoqIG9wdGlvbnMgKi9cclxuICBvcHRpb25zKGV2dDogRXZlbnQpIHtcclxuICAgIHRoaXMuX3BvcHVwLm9wZW4oUXVpY2tPcHRpb25zQ29tcG9uZW50LCBldnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50LCB7IHBvc2l0aW9uOiAnZW5kJyB9KTtcclxuICB9XHJcbiAgc2lnbm91dCgpIHtcclxuICAgIHRoaXMubWVudURyYXdlci5jbG9zZSgpO1xyXG4gICAgdGhpcy5fYnMub3BlbihRdWlja1NpZ25Db21wb25lbnQsIHtcclxuICAgICAgZGlyZWN0aW9uOiB0aGlzLl9kaXIudmFsdWUsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG5vdGlmcygpIHtcclxuICAgIHN1cGVyLm5vdGlmcygpO1xyXG4gICAgdGhpcy5tb2RlID0gJ25vdGlmaWNhdGlvbnMnO1xyXG4gICAgdGhpcy5zZWNvbmRhcnlEcmF3ZXIudG9nZ2xlKCkudGhlbih0aGlzLnJlc2l6ZSk7XHJcbiAgfVxyXG59XHJcbiIsIjxtYXQtdG9vbGJhciBjb2xvcj1cInByaW1hcnlcIiBbY2xhc3MubG9hZGluZ109XCJsb2FkaW5nXCI+XG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9J21lbnVEcmF3ZXIudG9nZ2xlKCknIFtiaXpkb2NUb29sdGlwXT1cIidNZW51JyB8IHRyYW5zbGF0ZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01lbnUnIHwgdHJhbnNsYXRlXCI+PG1hdC1pY29uPm1lbnU8L21hdC1pY29uPjwvYnV0dG9uPlxuICA8ZGl2IFtyb3V0ZXJMaW5rXT0nW1wiL2Rhc2hib2FyZFwiXScgbWF0UmlwcGxlIFttYXRSaXBwbGVVbmJvdW5kZWRdPVwidHJ1ZVwiIFttYXRSaXBwbGVSYWRpdXNdPVwiMTAwXCIgW21hdFJpcHBsZUNlbnRlcmVkXT1cInRydWVcIiBzdHlsZT1cIm91dGxpbmU6IG5vbmVcIj5cbiAgICA8aW1nIGlkPVwibG9nb1wiIHNyYz1cImxvZ28uc3ZnXCIgYWx0PVwiXCIgLz5cbiAgPC9kaXY+XG4gIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm5vdGlmcygpXCIgZGF0YS1oZWxwPVwibm90aWZpY2F0aW9uc1wiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ05vdGlmaWNhdGlvbnMnIHwgdHJhbnNsYXRlXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ05vdGlmaWNhdGlvbnMnIHwgdHJhbnNsYXRlXCI+PG1hdC1pY29uIFttYXRCYWRnZV09XCJwcm9maWxlLm5vdGlmaWNhdGlvbnNDb3VudFwiIFttYXRCYWRnZUhpZGRlbl09XCIhcHJvZmlsZS5ub3RpZmljYXRpb25zQ291bnRcIiBtYXRCYWRnZUNvbG9yPVwiYWNjZW50XCI+bm90aWZpY2F0aW9uczwvbWF0LWljb24+PC9idXR0b24+XG4gIEBpZiAoY2hhdEVuYWJsZWQpIHtcbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY2hhdCgpXCIgZGF0YS1oZWxwPVwiY2hhdFwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0NoYXQnIHwgdHJhbnNsYXRlXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0NoYXQnIHwgdHJhbnNsYXRlXCI+PG1hdC1pY29uIFttYXRCYWRnZV09XCJwcm9maWxlLmNvbnZlcnNhdGlvbnNDb3VudFwiIFttYXRCYWRnZUhpZGRlbl09XCIhcHJvZmlsZS5jb252ZXJzYXRpb25zQ291bnRcIiBtYXRCYWRnZUNvbG9yPVwiYWNjZW50XCI+Y2hhdDwvbWF0LWljb24+PC9idXR0b24+XG4gIH1cbjwvbWF0LXRvb2xiYXI+XG48bWF0LXNpZGVuYXYtY29udGFpbmVyIGF1dG9zaXplPlxuICA8bWF0LXNpZGVuYXYgI21lbnVEcmF3ZXIgZGF0YS1oZWxwPVwibWVudVwiIG1vZGU9XCJvdmVyXCIgY2xvc2VkIGNsYXNzPVwibWF0LWVsZXZhdGlvbi16NVwiPlxuICAgIDxtYXQtbmF2LWxpc3Q+XG4gICAgICA8bWF0LWxpc3QtaXRlbSBbcm91dGVyTGlua109J1tcIi9kYXNoYm9hcmRcIl0nIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0Rhc2hib2FyZCcgfCB0cmFuc2xhdGVcIiByb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlXCIgZGF0YS1oZWxwPVwiZGFzaGJvYXJkXCI+XG4gICAgICAgIDxtYXQtaWNvbiBtYXRMaXN0SXRlbUljb24+YXBwczwvbWF0LWljb24+PHNwYW4gbWF0TGlzdEl0ZW1UaXRsZT57eydEYXNoYm9hcmQnIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICA8L21hdC1saXN0LWl0ZW0+XG4gICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBjbGFzcz1cIm1hdC1lbGV2YXRpb24tejBcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidNYWlsYm94JyB8IHRyYW5zbGF0ZVwiIGRhdGEtaGVscD1cImZvbGRlcnNcIj5cbiAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAgICAgIDxtYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgICAgICA8bWF0LWljb24+aW5ib3g8L21hdC1pY29uPlxuICAgICAgICAgICAgPHNwYW4+e3snTWFpbGJveCcgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICA8L21hdC1wYW5lbC10aXRsZT5cbiAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgQGZvciAoZiBvZiBwcm9maWxlLmZvbGRlcnM7IHRyYWNrIGYpIHtcbiAgICAgICAgICA8bWF0LWxpc3QtaXRlbSBbcm91dGVyTGlua109J1tcIi9tYWlsYm94L2ZcIiwgZi5uYW1lXScgcm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZVwiIFthdHRyLmRhdGEtaGVscF09XCInZm9sZGVyLScrZi5uYW1lXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJmLnRpdGxlXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gbWF0TGlzdEl0ZW1JY29uPnt7Zi5pY29ufX08L21hdC1pY29uPlxuICAgICAgICAgICAgPHNwYW4gbWF0TGlzdEl0ZW1UaXRsZT57e2YudGl0bGV9fTwvc3Bhbj5cbiAgICAgICAgICA8L21hdC1saXN0LWl0ZW0+XG4gICAgICAgIH1cbiAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgIEBpZiAoc2NoZWR1bGVyRW5hYmxlZCkge1xuICAgICAgICA8bWF0LWxpc3QtaXRlbSBbcm91dGVyTGlua109J1tcIi9zY2hlZHVsZVwiXScgcm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1NjaGVkdWxlcicgfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgICA8bWF0LWljb24gbWF0TGlzdEl0ZW1JY29uIGNsYXNzPVwibWF0LWljb24tcnRsLW1pcnJvclwiPmRhdGVfcmFuZ2U8L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuIG1hdExpc3RJdGVtVGl0bGU+e3sgJ1NjaGVkdWxlJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICA8L21hdC1saXN0LWl0ZW0+XG4gICAgICB9XG4gICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cbiAgICAgIEBpZiAoZW5hYmxlQW5hbHlzaXMpIHtcbiAgICAgICAgQGZvciAoYyBvZiBwcm9maWxlLmN1YmVzOyB0cmFjayBjKSB7XG4gICAgICAgICAgQGlmIChjLnZpZXdzLmxlbmd0aCkge1xuICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwgY2xhc3M9XCJtYXQtZWxldmF0aW9uLXowXCI+XG4gICAgICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgICAgICAgICA8bWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnt7IGMuaWNvbiB8fCAnaW5zZXJ0X2NoYXJ0X291dGxpbmVkJ319PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7Yy50aXRsZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAgICAgICAgICBAZm9yICh2IG9mIGMudmlld3M7IHRyYWNrIHYpIHtcbiAgICAgICAgICAgICAgICA8bWF0LWxpc3QtaXRlbSBbcm91dGVyTGlua109J1tcIi9jdWJlXCIsIGMubmFtZSwgXCJ2XCIsIHYubmFtZV0nIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmVcIiBbYXR0ci5kYXRhLWhlbHBdPVwiJ2N1YmUtdmlldy0nK3YubmFtZVwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIG1hdExpc3RJdGVtSWNvbj57e3YuaWNvbiB8fCAnaW5zaWdodHMnfX08L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gbWF0TGlzdEl0ZW1UaXRsZT57e3YudGl0bGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L21hdC1saXN0LWl0ZW0+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBpZiAocHJvZmlsZS5yZXBvcnRzLmxlbmd0aCkge1xuICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBjbGFzcz1cIm1hdC1lbGV2YXRpb24tejBcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidSZXBvcnRzJyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgICAgIDxtYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5saXN0X2FsdDwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDxzcGFuPnt7J1JlcG9ydHMnIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgICA8L21hdC1wYW5lbC10aXRsZT5cbiAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAgICAgIEBmb3IgKHIgb2YgcHJvZmlsZS5yZXBvcnRzOyB0cmFjayByKSB7XG4gICAgICAgICAgICA8bWF0LWxpc3QtaXRlbSBbcm91dGVyTGlua109J1tcIi9yZXBvcnRzXCIsIHIubmFtZV0nIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmVcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInIudGl0bGVcIiBbYXR0ci5kYXRhLWhlbHBdPVwiJ3JlcG9ydC0nK3IubmFtZVwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24gbWF0TGlzdEl0ZW1JY29uPnt7ci5pY29ufX08L21hdC1pY29uPjxzcGFuIG1hdExpc3RJdGVtVGl0bGU+e3tyLnRpdGxlfX08L3NwYW4+XG4gICAgICAgICAgICA8L21hdC1saXN0LWl0ZW0+XG4gICAgICAgICAgfVxuICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XG4gICAgICB9XG4gICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cbiAgICAgIDxtYXQtbGlzdC1pdGVtIHJvbGU9XCJsaXN0aXRlbVwiIGRhdGEtaGVscD1cIm9wdGlvbnNcIlxuICAgICAgICAoY2xpY2spPVwib3B0aW9ucygkZXZlbnQpXCI+XG4gICAgICAgIDxtYXQtaWNvbiBtYXRMaXN0SXRlbUljb24+c2V0dGluZ3NvbjwvbWF0LWljb24+XG4gICAgICAgIDxzcGFuIG1hdExpc3RJdGVtVGl0bGU+e3snU2V0dGluZ3MnIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICA8L21hdC1saXN0LWl0ZW0+XG4gICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cbiAgICAgIDxtYXQtbGlzdC1pdGVtIHJvbGU9XCJsaXN0aXRlbVwiIChjbGljayk9XCJzaWdub3V0KClcIj5cbiAgICAgICAgPG1hdC1pY29uIG1hdExpc3RJdGVtSWNvbj5sb2dvdXQ8L21hdC1pY29uPlxuICAgICAgICA8c3BhbiBtYXRMaXN0SXRlbVRpdGxlPnt7J1Bvd2VyJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgPC9tYXQtbGlzdC1pdGVtPlxuICAgIDwvbWF0LW5hdi1saXN0PlxuICA8L21hdC1zaWRlbmF2PlxuICA8bWF0LXNpZGVuYXYgI3NlY29uZGFyeURyYXdlciBwb3NpdGlvbj1cImVuZFwiIGNsb3NlZCBtb2RlPVwib3ZlclwiIGF1dG9Gb2N1cz1cImZhbHNlXCIgY2xhc3M9XCJtYXQtZWxldmF0aW9uLXozXCI+XG4gICAgQHN3aXRjaCAobW9kZSkge1xuICAgICAgQGNhc2UgKCdjaGF0Jykge1xuICAgICAgICA8Yml6ZG9jLWNoYXQgWyhjb250YWN0KV09XCJjb250YWN0XCI+PC9iaXpkb2MtY2hhdD5cbiAgICAgIH1cbiAgICAgIEBjYXNlICgnbm90aWZpY2F0aW9ucycpIHtcbiAgICAgICAgPGJpemRvYy1ub3RpZmljYXRpb25zLXRhYmxlPjwvYml6ZG9jLW5vdGlmaWNhdGlvbnMtdGFibGU+XG4gICAgICB9XG4gICAgfVxuICA8L21hdC1zaWRlbmF2PlxuICA8bWF0LXNpZGVuYXYtY29udGVudCBkYXRhLWhlbHA9XCJtYWluXCI+XG4gICAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxuICA8L21hdC1zaWRlbmF2LWNvbnRlbnQ+XG48L21hdC1zaWRlbmF2LWNvbnRhaW5lcj5cbkBpZiAoY29tcG9zZUVuYWJsZWQpIHtcbiAgPGJ1dHRvbiBtYXQtZmFiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0NvbXBvc2UnfCB0cmFuc2xhdGVcIiBbQGZhYkZ1bGxdPVwiY29tcG9zZVN0YXRlXCIgY29sb3I9XCJhY2NlbnRcIiAoY2xpY2spPVwiY29tcG9zZSgpXCIgZGF0YS1oZWxwPVwiY29tcG9zZVwiPjxtYXQtaWNvbj5hZGQ8L21hdC1pY29uPjwvYnV0dG9uPlxufVxuIl19