@igo2/context 1.11.1 → 1.13.0-alpha.0

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 (111) hide show
  1. package/{esm2015/igo2-context.js → esm2020/igo2-context.mjs} +0 -0
  2. package/esm2020/lib/context-import-export/context-import-export/context-import-export.component.mjs +229 -0
  3. package/{esm2015/lib/context-import-export/context-import-export.module.js → esm2020/lib/context-import-export/context-import-export.module.mjs} +16 -18
  4. package/{esm2015/lib/context-import-export/index.js → esm2020/lib/context-import-export/index.mjs} +1 -1
  5. package/{esm2015/lib/context-import-export/shared/context-export.errors.js → esm2020/lib/context-import-export/shared/context-export.errors.mjs} +1 -1
  6. package/{esm2015/lib/context-import-export/shared/context-export.interface.js → esm2020/lib/context-import-export/shared/context-export.interface.mjs} +1 -1
  7. package/{esm2015/lib/context-import-export/shared/context-export.service.js → esm2020/lib/context-import-export/shared/context-export.service.mjs} +1 -1
  8. package/{esm2015/lib/context-import-export/shared/context-export.utils.js → esm2020/lib/context-import-export/shared/context-export.utils.mjs} +1 -1
  9. package/{esm2015/lib/context-import-export/shared/context-import.errors.js → esm2020/lib/context-import-export/shared/context-import.errors.mjs} +1 -1
  10. package/{esm2015/lib/context-import-export/shared/context-import.service.js → esm2020/lib/context-import-export/shared/context-import.service.mjs} +1 -1
  11. package/esm2020/lib/context-import-export/shared/context-import.utils.mjs +158 -0
  12. package/{esm2015/lib/context-import-export/shared/index.js → esm2020/lib/context-import-export/shared/index.mjs} +1 -1
  13. package/{esm2015/lib/context-manager/context-edit/context-edit-binding.directive.js → esm2020/lib/context-manager/context-edit/context-edit-binding.directive.mjs} +1 -1
  14. package/{esm2015/lib/context-manager/context-edit/context-edit.component.js → esm2020/lib/context-manager/context-edit/context-edit.component.mjs} +4 -7
  15. package/{esm2015/lib/context-manager/context-edit/index.js → esm2020/lib/context-manager/context-edit/index.mjs} +1 -1
  16. package/esm2020/lib/context-manager/context-form/context-form.component.mjs +147 -0
  17. package/{esm2015/lib/context-manager/context-form/index.js → esm2020/lib/context-manager/context-form/index.mjs} +1 -1
  18. package/esm2020/lib/context-manager/context-item/context-item.component.mjs +245 -0
  19. package/{esm2015/lib/context-manager/context-item/index.js → esm2020/lib/context-manager/context-item/index.mjs} +1 -1
  20. package/esm2020/lib/context-manager/context-list/context-list-binding.directive.mjs +260 -0
  21. package/esm2020/lib/context-manager/context-list/context-list.component.mjs +592 -0
  22. package/{esm2015/lib/context-manager/context-list/context-list.enum.js → esm2020/lib/context-manager/context-list/context-list.enum.mjs} +1 -1
  23. package/{esm2015/lib/context-manager/context-list/index.js → esm2020/lib/context-manager/context-list/index.mjs} +1 -1
  24. package/{esm2015/lib/context-manager/context-manager.module.js → esm2020/lib/context-manager/context-manager.module.mjs} +25 -27
  25. package/{esm2015/lib/context-manager/context-permissions/context-permissions-binding.directive.js → esm2020/lib/context-manager/context-permissions/context-permissions-binding.directive.mjs} +1 -1
  26. package/esm2020/lib/context-manager/context-permissions/context-permissions.component.mjs +306 -0
  27. package/{esm2015/lib/context-manager/context-permissions/index.js → esm2020/lib/context-manager/context-permissions/index.mjs} +1 -1
  28. package/{esm2015/lib/context-manager/index.js → esm2020/lib/context-manager/index.mjs} +1 -1
  29. package/{esm2015/lib/context-manager/shared/context.enum.js → esm2020/lib/context-manager/shared/context.enum.mjs} +1 -1
  30. package/esm2020/lib/context-manager/shared/context.interface.mjs +2 -0
  31. package/esm2020/lib/context-manager/shared/context.service.mjs +624 -0
  32. package/{esm2015/lib/context-manager/shared/index.js → esm2020/lib/context-manager/shared/index.mjs} +1 -1
  33. package/{esm2015/lib/context-manager/shared/layer-context.directive.js → esm2020/lib/context-manager/shared/layer-context.directive.mjs} +1 -1
  34. package/esm2020/lib/context-manager/shared/map-context.directive.mjs +70 -0
  35. package/{esm2015/lib/context-map-button/bookmark-button/bookmark-button.component.js → esm2020/lib/context-map-button/bookmark-button/bookmark-button.component.mjs} +8 -14
  36. package/esm2020/lib/context-map-button/bookmark-button/bookmark-dialog.component.mjs +50 -0
  37. package/{esm2015/lib/context-map-button/bookmark-button/index.js → esm2020/lib/context-map-button/bookmark-button/index.mjs} +1 -1
  38. package/{esm2015/lib/context-map-button/context-map-button.module.js → esm2020/lib/context-map-button/context-map-button.module.mjs} +15 -17
  39. package/{esm2015/lib/context-map-button/index.js → esm2020/lib/context-map-button/index.mjs} +1 -1
  40. package/{esm2015/lib/context-map-button/poi-button/index.js → esm2020/lib/context-map-button/poi-button/index.mjs} +1 -1
  41. package/esm2020/lib/context-map-button/poi-button/poi-button.component.mjs +171 -0
  42. package/esm2020/lib/context-map-button/poi-button/poi-dialog.component.mjs +50 -0
  43. package/{esm2015/lib/context-map-button/poi-button/shared/index.js → esm2020/lib/context-map-button/poi-button/shared/index.mjs} +1 -1
  44. package/{esm2015/lib/context-map-button/poi-button/shared/poi.interface.js → esm2020/lib/context-map-button/poi-button/shared/poi.interface.mjs} +1 -1
  45. package/{esm2015/lib/context-map-button/poi-button/shared/poi.service.js → esm2020/lib/context-map-button/poi-button/shared/poi.service.mjs} +1 -1
  46. package/{esm2015/lib/context-map-button/user-button/index.js → esm2020/lib/context-map-button/user-button/index.mjs} +1 -1
  47. package/{esm2015/lib/context-map-button/user-button/user-button.animation.js → esm2020/lib/context-map-button/user-button/user-button.animation.mjs} +1 -1
  48. package/esm2020/lib/context-map-button/user-button/user-button.component.mjs +104 -0
  49. package/{esm2015/lib/context-map-button/user-button/user-dialog.component.js → esm2020/lib/context-map-button/user-button/user-dialog.component.mjs} +6 -12
  50. package/{esm2015/lib/context.module.js → esm2020/lib/context.module.mjs} +2 -2
  51. package/{esm2015/lib/share-map/index.js → esm2020/lib/share-map/index.mjs} +1 -1
  52. package/esm2020/lib/share-map/share-map/share-map-api.component.mjs +181 -0
  53. package/{esm2015/lib/share-map/share-map/share-map-url.component.js → esm2020/lib/share-map/share-map/share-map-url.component.mjs} +13 -23
  54. package/esm2020/lib/share-map/share-map/share-map.component.mjs +57 -0
  55. package/{esm2015/lib/share-map/share-map.module.js → esm2020/lib/share-map/share-map.module.mjs} +11 -13
  56. package/{esm2015/lib/share-map/shared/index.js → esm2020/lib/share-map/shared/index.mjs} +1 -1
  57. package/esm2020/lib/share-map/shared/share-map.service.mjs +201 -0
  58. package/{esm2015/lib/sidenav/index.js → esm2020/lib/sidenav/index.mjs} +1 -1
  59. package/esm2020/lib/sidenav/sidenav.component.mjs +170 -0
  60. package/{esm2015/lib/sidenav/sidenav.module.js → esm2020/lib/sidenav/sidenav.module.mjs} +11 -13
  61. package/{esm2015/public_api.js → esm2020/public_api.mjs} +1 -1
  62. package/fesm2015/igo2-context.mjs +5143 -0
  63. package/fesm2015/igo2-context.mjs.map +1 -0
  64. package/{fesm2015/igo2-context.js → fesm2020/igo2-context.mjs} +596 -731
  65. package/fesm2020/igo2-context.mjs.map +1 -0
  66. package/{igo2-context.d.ts → index.d.ts} +0 -0
  67. package/lib/context-import-export/context-import-export/context-import-export.component.d.ts +4 -4
  68. package/lib/context-manager/context-edit/context-edit-binding.directive.d.ts +1 -1
  69. package/lib/context-manager/context-edit/context-edit.component.d.ts +1 -1
  70. package/lib/context-manager/context-form/context-form.component.d.ts +4 -4
  71. package/lib/context-manager/context-item/context-item.component.d.ts +5 -8
  72. package/lib/context-manager/context-list/context-list-binding.directive.d.ts +6 -4
  73. package/lib/context-manager/context-list/context-list.component.d.ts +1 -1
  74. package/lib/context-manager/context-permissions/context-permissions-binding.directive.d.ts +1 -1
  75. package/lib/context-manager/context-permissions/context-permissions.component.d.ts +5 -5
  76. package/lib/context-manager/shared/context.service.d.ts +4 -3
  77. package/lib/context-manager/shared/layer-context.directive.d.ts +1 -1
  78. package/lib/context-manager/shared/map-context.directive.d.ts +1 -1
  79. package/lib/context-map-button/bookmark-button/bookmark-button.component.d.ts +1 -1
  80. package/lib/context-map-button/bookmark-button/bookmark-dialog.component.d.ts +1 -1
  81. package/lib/context-map-button/poi-button/poi-button.component.d.ts +1 -1
  82. package/lib/context-map-button/poi-button/poi-dialog.component.d.ts +1 -1
  83. package/lib/context-map-button/user-button/user-button.component.d.ts +1 -1
  84. package/lib/context-map-button/user-button/user-dialog.component.d.ts +1 -1
  85. package/lib/share-map/share-map/share-map-api.component.d.ts +4 -4
  86. package/lib/share-map/share-map/share-map-url.component.d.ts +1 -1
  87. package/lib/share-map/share-map/share-map.component.d.ts +1 -1
  88. package/lib/sidenav/sidenav.component.d.ts +1 -1
  89. package/ngcc.config.js +3 -3
  90. package/package.json +31 -18
  91. package/bundles/igo2-context.umd.js +0 -6064
  92. package/bundles/igo2-context.umd.js.map +0 -1
  93. package/esm2015/lib/context-import-export/context-import-export/context-import-export.component.js +0 -257
  94. package/esm2015/lib/context-import-export/shared/context-import.utils.js +0 -156
  95. package/esm2015/lib/context-manager/context-form/context-form.component.js +0 -156
  96. package/esm2015/lib/context-manager/context-item/context-item.component.js +0 -249
  97. package/esm2015/lib/context-manager/context-list/context-list-binding.directive.js +0 -247
  98. package/esm2015/lib/context-manager/context-list/context-list.component.js +0 -601
  99. package/esm2015/lib/context-manager/context-permissions/context-permissions.component.js +0 -323
  100. package/esm2015/lib/context-manager/shared/context.interface.js +0 -2
  101. package/esm2015/lib/context-manager/shared/context.service.js +0 -611
  102. package/esm2015/lib/context-manager/shared/map-context.directive.js +0 -67
  103. package/esm2015/lib/context-map-button/bookmark-button/bookmark-dialog.component.js +0 -59
  104. package/esm2015/lib/context-map-button/poi-button/poi-button.component.js +0 -177
  105. package/esm2015/lib/context-map-button/poi-button/poi-dialog.component.js +0 -59
  106. package/esm2015/lib/context-map-button/user-button/user-button.component.js +0 -112
  107. package/esm2015/lib/share-map/share-map/share-map-api.component.js +0 -194
  108. package/esm2015/lib/share-map/share-map/share-map.component.js +0 -63
  109. package/esm2015/lib/share-map/shared/share-map.service.js +0 -201
  110. package/esm2015/lib/sidenav/sidenav.component.js +0 -183
  111. package/fesm2015/igo2-context.js.map +0 -1
@@ -1,601 +0,0 @@
1
- import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';
2
- import { ContextListControlsEnum } from './context-list.enum';
3
- import { BehaviorSubject, ReplaySubject, EMPTY, timer } from 'rxjs';
4
- import { take } from 'rxjs/operators';
5
- import { BookmarkDialogComponent } from '../../context-map-button/bookmark-button/bookmark-dialog.component';
6
- import { debounce } from 'rxjs/operators';
7
- import { ActionStore, ActionbarMode } from '@igo2/common';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "../shared/context.service";
10
- import * as i2 from "@igo2/core";
11
- import * as i3 from "@igo2/auth";
12
- import * as i4 from "@angular/material/dialog";
13
- import * as i5 from "@igo2/common";
14
- import * as i6 from "@angular/common";
15
- import * as i7 from "@angular/material/menu";
16
- import * as i8 from "@angular/material/checkbox";
17
- import * as i9 from "@angular/material/form-field";
18
- import * as i10 from "@angular/material/input";
19
- import * as i11 from "@angular/forms";
20
- import * as i12 from "@angular/material/button";
21
- import * as i13 from "@angular/material/icon";
22
- import * as i14 from "@angular/material/tooltip";
23
- import * as i15 from "../context-item/context-item.component";
24
- import * as i16 from "@ngx-translate/core";
25
- function ContextListComponent_mat_form_field_1_button_3_Template(rf, ctx) { if (rf & 1) {
26
- const _r10 = i0.ɵɵgetCurrentView();
27
- i0.ɵɵelementStart(0, "button", 14);
28
- i0.ɵɵlistener("click", function ContextListComponent_mat_form_field_1_button_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r9 = i0.ɵɵnextContext(2); return ctx_r9.clearFilter(); });
29
- i0.ɵɵelement(1, "mat-icon", 15);
30
- i0.ɵɵelementEnd();
31
- } }
32
- function ContextListComponent_mat_form_field_1_Template(rf, ctx) { if (rf & 1) {
33
- const _r12 = i0.ɵɵgetCurrentView();
34
- i0.ɵɵelementStart(0, "mat-form-field", 11);
35
- i0.ɵɵelementStart(1, "input", 12);
36
- i0.ɵɵlistener("ngModelChange", function ContextListComponent_mat_form_field_1_Template_input_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r11 = i0.ɵɵnextContext(); return ctx_r11.term = $event; });
37
- i0.ɵɵpipe(2, "translate");
38
- i0.ɵɵelementEnd();
39
- i0.ɵɵtemplate(3, ContextListComponent_mat_form_field_1_button_3_Template, 2, 0, "button", 13);
40
- i0.ɵɵelementEnd();
41
- } if (rf & 2) {
42
- const ctx_r0 = i0.ɵɵnextContext();
43
- i0.ɵɵproperty("ngClass", ctx_r0.auth.authenticated && ctx_r0.configService.getConfig("context") ? "context-filter-min-width" : "context-filter-max-width");
44
- i0.ɵɵadvance(1);
45
- i0.ɵɵproperty("placeholder", i0.ɵɵpipeBind1(2, 4, "igo.context.contextManager.filterPlaceHolder"))("ngModel", ctx_r0.term);
46
- i0.ɵɵadvance(2);
47
- i0.ɵɵproperty("ngIf", ctx_r0.term.length);
48
- } }
49
- function ContextListComponent_button_2_Template(rf, ctx) { if (rf & 1) {
50
- const _r14 = i0.ɵɵgetCurrentView();
51
- i0.ɵɵelementStart(0, "button", 16);
52
- i0.ɵɵlistener("click", function ContextListComponent_button_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r13 = i0.ɵɵnextContext(); return ctx_r13.toggleSort(true); });
53
- i0.ɵɵpipe(1, "translate");
54
- i0.ɵɵelement(2, "mat-icon", 17);
55
- i0.ɵɵelementEnd();
56
- } if (rf & 2) {
57
- i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 1, "igo.context.contextManager.sortAlphabetically"));
58
- } }
59
- function ContextListComponent_button_3_Template(rf, ctx) { if (rf & 1) {
60
- const _r16 = i0.ɵɵgetCurrentView();
61
- i0.ɵɵelementStart(0, "button", 16);
62
- i0.ɵɵlistener("click", function ContextListComponent_button_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r16); const ctx_r15 = i0.ɵɵnextContext(); return ctx_r15.toggleSort(false); });
63
- i0.ɵɵpipe(1, "translate");
64
- i0.ɵɵelement(2, "mat-icon", 18);
65
- i0.ɵɵelementEnd();
66
- } if (rf & 2) {
67
- i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 1, "igo.context.contextManager.sortContextOrder"));
68
- } }
69
- function ContextListComponent_igo_actionbar_4_Template(rf, ctx) { if (rf & 1) {
70
- i0.ɵɵelement(0, "igo-actionbar", 19);
71
- } if (rf & 2) {
72
- const ctx_r3 = i0.ɵɵnextContext();
73
- i0.ɵɵproperty("iconColor", ctx_r3.color)("store", ctx_r3.actionStore)("withIcon", true)("withTitle", ctx_r3.actionbarMode === "overlay")("horizontal", false)("mode", ctx_r3.actionbarMode);
74
- } }
75
- function ContextListComponent_button_5_Template(rf, ctx) { if (rf & 1) {
76
- i0.ɵɵelementStart(0, "button", 20);
77
- i0.ɵɵpipe(1, "translate");
78
- i0.ɵɵelement(2, "mat-icon", 21);
79
- i0.ɵɵelementEnd();
80
- } if (rf & 2) {
81
- i0.ɵɵnextContext();
82
- const _r5 = i0.ɵɵreference(7);
83
- i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 2, "igo.context.contextManager.filterUser"))("matMenuTriggerFor", _r5);
84
- } }
85
- function ContextListComponent_ng_container_8_button_3_Template(rf, ctx) { if (rf & 1) {
86
- i0.ɵɵelementStart(0, "button", 27);
87
- i0.ɵɵtext(1);
88
- i0.ɵɵelementEnd();
89
- } if (rf & 2) {
90
- const user_r17 = i0.ɵɵnextContext().$implicit;
91
- const _r20 = i0.ɵɵreference(6);
92
- i0.ɵɵproperty("matMenuTriggerFor", _r20);
93
- i0.ɵɵadvance(1);
94
- i0.ɵɵtextInterpolate1(" ", user_r17.title, " ");
95
- } }
96
- function ContextListComponent_ng_container_8_button_4_Template(rf, ctx) { if (rf & 1) {
97
- i0.ɵɵelementStart(0, "button", 9);
98
- i0.ɵɵtext(1);
99
- i0.ɵɵelementEnd();
100
- } if (rf & 2) {
101
- const user_r17 = i0.ɵɵnextContext().$implicit;
102
- i0.ɵɵadvance(1);
103
- i0.ɵɵtextInterpolate1(" ", user_r17.title, " ");
104
- } }
105
- function ContextListComponent_ng_container_8_mat_checkbox_7_Template(rf, ctx) { if (rf & 1) {
106
- const _r27 = i0.ɵɵgetCurrentView();
107
- i0.ɵɵelementStart(0, "mat-checkbox", 8);
108
- i0.ɵɵlistener("click", function ContextListComponent_ng_container_8_mat_checkbox_7_Template_mat_checkbox_click_0_listener($event) { return $event.stopPropagation(); })("change", function ContextListComponent_ng_container_8_mat_checkbox_7_Template_mat_checkbox_change_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r27); const child_r24 = restoredCtx.$implicit; const user_r17 = i0.ɵɵnextContext().$implicit; const ctx_r26 = i0.ɵɵnextContext(); return ctx_r26.userSelection(child_r24, user_r17); });
109
- i0.ɵɵtext(1);
110
- i0.ɵɵelementEnd();
111
- } if (rf & 2) {
112
- const child_r24 = ctx.$implicit;
113
- const ctx_r21 = i0.ɵɵnextContext(2);
114
- i0.ɵɵproperty("checked", ctx_r21.getPermission(child_r24).checked);
115
- i0.ɵɵadvance(1);
116
- i0.ɵɵtextInterpolate1(" ", child_r24.title, " ");
117
- } }
118
- function ContextListComponent_ng_container_8_Template(rf, ctx) { if (rf & 1) {
119
- const _r31 = i0.ɵɵgetCurrentView();
120
- i0.ɵɵelementContainerStart(0);
121
- i0.ɵɵelementStart(1, "span", 7);
122
- i0.ɵɵelementStart(2, "mat-checkbox", 22);
123
- i0.ɵɵlistener("click", function ContextListComponent_ng_container_8_Template_mat_checkbox_click_2_listener($event) { return $event.stopPropagation(); })("change", function ContextListComponent_ng_container_8_Template_mat_checkbox_change_2_listener() { const restoredCtx = i0.ɵɵrestoreView(_r31); const user_r17 = restoredCtx.$implicit; const ctx_r30 = i0.ɵɵnextContext(); return ctx_r30.userSelection(user_r17); });
124
- i0.ɵɵelementEnd();
125
- i0.ɵɵtemplate(3, ContextListComponent_ng_container_8_button_3_Template, 2, 2, "button", 23);
126
- i0.ɵɵtemplate(4, ContextListComponent_ng_container_8_button_4_Template, 2, 1, "button", 24);
127
- i0.ɵɵelementEnd();
128
- i0.ɵɵelementStart(5, "mat-menu", null, 25);
129
- i0.ɵɵtemplate(7, ContextListComponent_ng_container_8_mat_checkbox_7_Template, 2, 2, "mat-checkbox", 26);
130
- i0.ɵɵelementEnd();
131
- i0.ɵɵelementContainerEnd();
132
- } if (rf & 2) {
133
- const user_r17 = ctx.$implicit;
134
- const ctx_r6 = i0.ɵɵnextContext();
135
- i0.ɵɵadvance(2);
136
- i0.ɵɵproperty("checked", ctx_r6.getPermission(user_r17).checked)("indeterminate", ctx_r6.getPermission(user_r17).indeterminate);
137
- i0.ɵɵadvance(1);
138
- i0.ɵɵproperty("ngIf", user_r17.childs);
139
- i0.ɵɵadvance(1);
140
- i0.ɵɵproperty("ngIf", !user_r17.childs);
141
- i0.ɵɵadvance(3);
142
- i0.ɵɵproperty("ngForOf", user_r17.childs);
143
- } }
144
- function ContextListComponent_ng_template_14_igo_collapsible_0_ng_template_2_Template(rf, ctx) { if (rf & 1) {
145
- const _r38 = i0.ɵɵgetCurrentView();
146
- i0.ɵɵelementStart(0, "igo-context-item", 31);
147
- i0.ɵɵlistener("edit", function ContextListComponent_ng_template_14_igo_collapsible_0_ng_template_2_Template_igo_context_item_edit_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r38); const context_r36 = restoredCtx.$implicit; const ctx_r37 = i0.ɵɵnextContext(3); return ctx_r37.edit.emit(context_r36); })("delete", function ContextListComponent_ng_template_14_igo_collapsible_0_ng_template_2_Template_igo_context_item_delete_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r38); const context_r36 = restoredCtx.$implicit; const ctx_r39 = i0.ɵɵnextContext(3); return ctx_r39.delete.emit(context_r36); })("clone", function ContextListComponent_ng_template_14_igo_collapsible_0_ng_template_2_Template_igo_context_item_clone_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r38); const context_r36 = restoredCtx.$implicit; const ctx_r40 = i0.ɵɵnextContext(3); return ctx_r40.clone.emit(context_r36); })("save", function ContextListComponent_ng_template_14_igo_collapsible_0_ng_template_2_Template_igo_context_item_save_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r38); const context_r36 = restoredCtx.$implicit; const ctx_r41 = i0.ɵɵnextContext(3); return ctx_r41.save.emit(context_r36); })("hide", function ContextListComponent_ng_template_14_igo_collapsible_0_ng_template_2_Template_igo_context_item_hide_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r38); const context_r36 = restoredCtx.$implicit; const ctx_r42 = i0.ɵɵnextContext(3); return ctx_r42.hideContext(context_r36); })("show", function ContextListComponent_ng_template_14_igo_collapsible_0_ng_template_2_Template_igo_context_item_show_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r38); const context_r36 = restoredCtx.$implicit; const ctx_r43 = i0.ɵɵnextContext(3); return ctx_r43.showContext(context_r36); })("favorite", function ContextListComponent_ng_template_14_igo_collapsible_0_ng_template_2_Template_igo_context_item_favorite_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r38); const context_r36 = restoredCtx.$implicit; const ctx_r44 = i0.ɵɵnextContext(3); return ctx_r44.favorite.emit(context_r36); })("manageTools", function ContextListComponent_ng_template_14_igo_collapsible_0_ng_template_2_Template_igo_context_item_manageTools_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r38); const context_r36 = restoredCtx.$implicit; const ctx_r45 = i0.ɵɵnextContext(3); return ctx_r45.manageTools.emit(context_r36); })("managePermissions", function ContextListComponent_ng_template_14_igo_collapsible_0_ng_template_2_Template_igo_context_item_managePermissions_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r38); const context_r36 = restoredCtx.$implicit; const ctx_r46 = i0.ɵɵnextContext(3); return ctx_r46.managePermissions.emit(context_r36); })("select", function ContextListComponent_ng_template_14_igo_collapsible_0_ng_template_2_Template_igo_context_item_select_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r38); const context_r36 = restoredCtx.$implicit; const ctx_r47 = i0.ɵɵnextContext(3); return ctx_r47.select.emit(context_r36); })("unselect", function ContextListComponent_ng_template_14_igo_collapsible_0_ng_template_2_Template_igo_context_item_unselect_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r38); const context_r36 = restoredCtx.$implicit; const ctx_r48 = i0.ɵɵnextContext(3); return ctx_r48.unselect.emit(context_r36); });
148
- i0.ɵɵelementEnd();
149
- } if (rf & 2) {
150
- const context_r36 = ctx.$implicit;
151
- const ctx_r35 = i0.ɵɵnextContext(3);
152
- i0.ɵɵproperty("selected", ctx_r35.selectedContext && ctx_r35.selectedContext.uri === context_r36.uri)("context", context_r36)("default", context_r36.id && ctx_r35.defaultContextId && ctx_r35.defaultContextId === context_r36.id);
153
- } }
154
- function ContextListComponent_ng_template_14_igo_collapsible_0_Template(rf, ctx) { if (rf & 1) {
155
- const _r50 = i0.ɵɵgetCurrentView();
156
- i0.ɵɵelementStart(0, "igo-collapsible", 30);
157
- i0.ɵɵlistener("toggle", function ContextListComponent_ng_template_14_igo_collapsible_0_Template_igo_collapsible_toggle_0_listener($event) { i0.ɵɵrestoreView(_r50); const groupContexts_r32 = i0.ɵɵnextContext().$implicit; const ctx_r49 = i0.ɵɵnextContext(); return (ctx_r49.collapsed[ctx_r49.titleMapping[groupContexts_r32.key]] = $event); });
158
- i0.ɵɵpipe(1, "translate");
159
- i0.ɵɵtemplate(2, ContextListComponent_ng_template_14_igo_collapsible_0_ng_template_2_Template, 1, 3, "ng-template", 10);
160
- i0.ɵɵelementEnd();
161
- } if (rf & 2) {
162
- const groupContexts_r32 = i0.ɵɵnextContext().$implicit;
163
- const ctx_r33 = i0.ɵɵnextContext();
164
- i0.ɵɵproperty("title", i0.ɵɵpipeBind1(1, 3, ctx_r33.titleMapping[groupContexts_r32.key]))("collapsed", ctx_r33.collapsed[ctx_r33.titleMapping[groupContexts_r32.key]]);
165
- i0.ɵɵadvance(2);
166
- i0.ɵɵproperty("ngForOf", groupContexts_r32.value);
167
- } }
168
- function ContextListComponent_ng_template_14_1_ng_template_0_Template(rf, ctx) { if (rf & 1) {
169
- const _r56 = i0.ɵɵgetCurrentView();
170
- i0.ɵɵelementStart(0, "igo-context-item", 32);
171
- i0.ɵɵlistener("select", function ContextListComponent_ng_template_14_1_ng_template_0_Template_igo_context_item_select_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r56); const context_r54 = restoredCtx.$implicit; const ctx_r55 = i0.ɵɵnextContext(3); return ctx_r55.select.emit(context_r54); })("unselect", function ContextListComponent_ng_template_14_1_ng_template_0_Template_igo_context_item_unselect_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r56); const context_r54 = restoredCtx.$implicit; const ctx_r57 = i0.ɵɵnextContext(3); return ctx_r57.unselect.emit(context_r54); });
172
- i0.ɵɵelementEnd();
173
- } if (rf & 2) {
174
- const context_r54 = ctx.$implicit;
175
- const ctx_r53 = i0.ɵɵnextContext(3);
176
- i0.ɵɵproperty("selected", ctx_r53.selectedContext && ctx_r53.selectedContext.uri === context_r54.uri)("context", context_r54)("default", ctx_r53.defaultContextId === context_r54.id);
177
- } }
178
- function ContextListComponent_ng_template_14_1_Template(rf, ctx) { if (rf & 1) {
179
- i0.ɵɵtemplate(0, ContextListComponent_ng_template_14_1_ng_template_0_Template, 1, 3, "ng-template", 10);
180
- } if (rf & 2) {
181
- const groupContexts_r32 = i0.ɵɵnextContext().$implicit;
182
- i0.ɵɵproperty("ngForOf", groupContexts_r32.value);
183
- } }
184
- function ContextListComponent_ng_template_14_Template(rf, ctx) { if (rf & 1) {
185
- i0.ɵɵtemplate(0, ContextListComponent_ng_template_14_igo_collapsible_0_Template, 3, 5, "igo-collapsible", 28);
186
- i0.ɵɵtemplate(1, ContextListComponent_ng_template_14_1_Template, 1, 1, undefined, 29);
187
- } if (rf & 2) {
188
- const groupContexts_r32 = ctx.$implicit;
189
- const ctx_r7 = i0.ɵɵnextContext();
190
- i0.ɵɵproperty("ngIf", groupContexts_r32.value.length && ctx_r7.auth.authenticated);
191
- i0.ɵɵadvance(1);
192
- i0.ɵɵproperty("ngIf", groupContexts_r32.value.length && !ctx_r7.auth.authenticated);
193
- } }
194
- export class ContextListComponent {
195
- constructor(cdRef, contextService, configService, auth, dialog, languageService, storageService) {
196
- this.cdRef = cdRef;
197
- this.contextService = contextService;
198
- this.configService = configService;
199
- this.auth = auth;
200
- this.dialog = dialog;
201
- this.languageService = languageService;
202
- this.storageService = storageService;
203
- this.contextsInitial = { ours: [] };
204
- this.contexts$ = new BehaviorSubject(this.contextsInitial);
205
- this.change$ = new ReplaySubject(1);
206
- this._contexts = { ours: [] };
207
- this.collapsed = [];
208
- this.select = new EventEmitter();
209
- this.unselect = new EventEmitter();
210
- this.edit = new EventEmitter();
211
- this.delete = new EventEmitter();
212
- this.save = new EventEmitter();
213
- this.clone = new EventEmitter();
214
- this.create = new EventEmitter();
215
- this.hide = new EventEmitter();
216
- this.show = new EventEmitter();
217
- this.showHiddenContexts = new EventEmitter();
218
- this.favorite = new EventEmitter();
219
- this.managePermissions = new EventEmitter();
220
- this.manageTools = new EventEmitter();
221
- this.filterPermissionsChanged = new EventEmitter();
222
- this.titleMapping = {
223
- ours: 'igo.context.contextManager.ourContexts',
224
- shared: 'igo.context.contextManager.sharedContexts',
225
- public: 'igo.context.contextManager.publicContexts'
226
- };
227
- this.permissions = [];
228
- this.actionStore = new ActionStore([]);
229
- this.actionbarMode = ActionbarMode.Overlay;
230
- this.color = 'primary';
231
- this.showHidden = false;
232
- this._term = '';
233
- this._sortedAlpha = undefined;
234
- this.showContextFilter = ContextListControlsEnum.always;
235
- this.thresholdToFilter = 5;
236
- }
237
- get contexts() {
238
- return this._contexts;
239
- }
240
- set contexts(value) {
241
- this._contexts = value;
242
- this.cdRef.detectChanges();
243
- this.next();
244
- }
245
- get selectedContext() {
246
- return this._selectedContext;
247
- }
248
- set selectedContext(value) {
249
- this._selectedContext = value;
250
- this.cdRef.detectChanges();
251
- }
252
- get map() {
253
- return this._map;
254
- }
255
- set map(value) {
256
- this._map = value;
257
- }
258
- get defaultContextId() {
259
- return this._defaultContextId;
260
- }
261
- set defaultContextId(value) {
262
- this._defaultContextId = value;
263
- }
264
- /**
265
- * Context filter term
266
- */
267
- set term(value) {
268
- this._term = value;
269
- this.next();
270
- }
271
- get term() {
272
- return this._term;
273
- }
274
- get sortedAlpha() {
275
- return this._sortedAlpha;
276
- }
277
- set sortedAlpha(value) {
278
- this._sortedAlpha = value;
279
- this.next();
280
- }
281
- ngOnInit() {
282
- this.change$$ = this.change$
283
- .pipe(debounce(() => {
284
- return this.contexts.ours.length === 0 ? EMPTY : timer(50);
285
- }))
286
- .subscribe(() => {
287
- this.contexts$.next(this.filterContextsList(this.contexts));
288
- });
289
- this.actionStore.load([
290
- {
291
- id: 'emptyContext',
292
- title: this.languageService.translate.instant('igo.context.contextManager.emptyContext'),
293
- icon: 'map-outline',
294
- tooltip: this.languageService.translate.instant('igo.context.contextManager.emptyContextTooltip'),
295
- handler: () => {
296
- this.createContext(true);
297
- }
298
- },
299
- {
300
- id: 'contextFromMap',
301
- title: this.languageService.translate.instant('igo.context.contextManager.contextMap'),
302
- icon: 'map-check',
303
- tooltip: this.languageService.translate.instant('igo.context.contextManager.contextMapTooltip'),
304
- handler: () => {
305
- this.createContext(false);
306
- }
307
- }
308
- ]);
309
- }
310
- next() {
311
- this.change$.next();
312
- }
313
- filterContextsList(contexts) {
314
- if (this.term === '') {
315
- if (this.sortedAlpha) {
316
- contexts = this.sortContextsList(contexts);
317
- }
318
- return contexts;
319
- }
320
- else {
321
- const ours = contexts.ours.filter((context) => {
322
- const filterNormalized = this.term
323
- .toLowerCase()
324
- .normalize('NFD')
325
- .replace(/[\u0300-\u036f]/g, '');
326
- const contextTitleNormalized = context.title
327
- .toLowerCase()
328
- .normalize('NFD')
329
- .replace(/[\u0300-\u036f]/g, '');
330
- return contextTitleNormalized.includes(filterNormalized);
331
- });
332
- let updateContexts = {
333
- ours
334
- };
335
- if (this.contexts.public) {
336
- const publics = contexts.public.filter((context) => {
337
- const filterNormalized = this.term
338
- .toLowerCase()
339
- .normalize('NFD')
340
- .replace(/[\u0300-\u036f]/g, '');
341
- const contextTitleNormalized = context.title
342
- .toLowerCase()
343
- .normalize('NFD')
344
- .replace(/[\u0300-\u036f]/g, '');
345
- return contextTitleNormalized.includes(filterNormalized);
346
- });
347
- updateContexts.public = publics;
348
- }
349
- if (this.contexts.shared) {
350
- const shared = contexts.shared.filter((context) => {
351
- const filterNormalized = this.term
352
- .toLowerCase()
353
- .normalize('NFD')
354
- .replace(/[\u0300-\u036f]/g, '');
355
- const contextTitleNormalized = context.title
356
- .toLowerCase()
357
- .normalize('NFD')
358
- .replace(/[\u0300-\u036f]/g, '');
359
- return contextTitleNormalized.includes(filterNormalized);
360
- });
361
- updateContexts.shared = shared;
362
- }
363
- if (this.sortedAlpha) {
364
- updateContexts = this.sortContextsList(updateContexts);
365
- }
366
- return updateContexts;
367
- }
368
- }
369
- ngOnDestroy() {
370
- this.change$$.unsubscribe();
371
- }
372
- showFilter() {
373
- switch (this.showContextFilter) {
374
- case ContextListControlsEnum.always:
375
- return true;
376
- case ContextListControlsEnum.never:
377
- return false;
378
- default:
379
- let totalLength = this.contexts.ours.length;
380
- this.contexts.public
381
- ? (totalLength += this.contexts.public.length)
382
- : (totalLength += 0);
383
- this.contexts.shared
384
- ? (totalLength += this.contexts.shared.length)
385
- : (totalLength += 0);
386
- if (totalLength >= this.thresholdToFilter) {
387
- return true;
388
- }
389
- return false;
390
- }
391
- }
392
- sortContextsList(contexts) {
393
- if (contexts) {
394
- const contextsList = JSON.parse(JSON.stringify(contexts));
395
- contextsList.ours.sort((a, b) => {
396
- if (this.normalize(a.title) < this.normalize(b.title)) {
397
- return -1;
398
- }
399
- if (this.normalize(a.title) > this.normalize(b.title)) {
400
- return 1;
401
- }
402
- return 0;
403
- });
404
- if (contextsList.shared) {
405
- contextsList.shared.sort((a, b) => {
406
- if (this.normalize(a.title) < this.normalize(b.title)) {
407
- return -1;
408
- }
409
- if (this.normalize(a.title) > this.normalize(b.title)) {
410
- return 1;
411
- }
412
- return 0;
413
- });
414
- }
415
- else if (contextsList.public) {
416
- contextsList.public.sort((a, b) => {
417
- if (this.normalize(a.title) < this.normalize(b.title)) {
418
- return -1;
419
- }
420
- if (this.normalize(a.title) > this.normalize(b.title)) {
421
- return 1;
422
- }
423
- return 0;
424
- });
425
- }
426
- return contextsList;
427
- }
428
- }
429
- normalize(str) {
430
- return str
431
- .normalize('NFD')
432
- .replace(/[\u0300-\u036f]/g, '')
433
- .toLowerCase();
434
- }
435
- toggleSort(sortAlpha) {
436
- this.sortedAlpha = sortAlpha;
437
- }
438
- clearFilter() {
439
- this.term = '';
440
- }
441
- createContext(empty) {
442
- this.dialog
443
- .open(BookmarkDialogComponent, { disableClose: false })
444
- .afterClosed()
445
- .pipe(take(1))
446
- .subscribe((title) => {
447
- if (title) {
448
- this.create.emit({ title, empty });
449
- }
450
- });
451
- }
452
- getPermission(user) {
453
- if (user) {
454
- const permission = this.permissions.find((p) => p.name === user.name);
455
- return permission;
456
- }
457
- }
458
- userSelection(user, parent) {
459
- const permission = this.getPermission(user);
460
- if (permission) {
461
- permission.checked = !permission.checked;
462
- this.storageService.set('contexts.permissions.' + permission.name, permission.checked);
463
- permission.indeterminate = false;
464
- }
465
- if (parent) {
466
- let indeterminate = false;
467
- for (const c of parent.childs) {
468
- const cPermission = this.getPermission(c);
469
- if (cPermission.checked !== permission.checked) {
470
- indeterminate = true;
471
- break;
472
- }
473
- }
474
- const parentPermission = this.getPermission(parent);
475
- if (parentPermission) {
476
- parentPermission.checked = permission.checked;
477
- this.storageService.set('contexts.permissions.' + parentPermission.name, permission.checked);
478
- parentPermission.indeterminate = indeterminate;
479
- }
480
- }
481
- if (user.childs) {
482
- for (const c of user.childs) {
483
- const childrenPermission = this.getPermission(c);
484
- if (childrenPermission &&
485
- childrenPermission.checked !== permission.checked) {
486
- childrenPermission.checked = permission.checked;
487
- this.storageService.set('contexts.permissions.' + childrenPermission.name, permission.checked);
488
- }
489
- }
490
- }
491
- this.filterPermissionsChanged.emit(this.permissions);
492
- }
493
- hideContext(context) {
494
- context.hidden = true;
495
- if (!this.showHidden) {
496
- const contexts = { ours: [], shared: [], public: [] };
497
- contexts.ours = this.contexts.ours.filter((c) => c.id !== context.id);
498
- contexts.shared = this.contexts.shared.filter((c) => c.id !== context.id);
499
- contexts.public = this.contexts.public.filter((c) => c.id !== context.id);
500
- this.contexts = contexts;
501
- }
502
- this.hide.emit(context);
503
- }
504
- showContext(context) {
505
- context.hidden = false;
506
- this.show.emit(context);
507
- }
508
- }
509
- ContextListComponent.ɵfac = function ContextListComponent_Factory(t) { return new (t || ContextListComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.ContextService), i0.ɵɵdirectiveInject(i2.ConfigService), i0.ɵɵdirectiveInject(i3.AuthService), i0.ɵɵdirectiveInject(i4.MatDialog), i0.ɵɵdirectiveInject(i2.LanguageService), i0.ɵɵdirectiveInject(i2.StorageService)); };
510
- ContextListComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ContextListComponent, selectors: [["igo-context-list"]], inputs: { contexts: "contexts", selectedContext: "selectedContext", map: "map", defaultContextId: "defaultContextId", term: "term" }, outputs: { select: "select", unselect: "unselect", edit: "edit", delete: "delete", save: "save", clone: "clone", create: "create", hide: "hide", show: "show", showHiddenContexts: "showHiddenContexts", favorite: "favorite", managePermissions: "managePermissions", manageTools: "manageTools", filterPermissionsChanged: "filterPermissionsChanged" }, decls: 17, vars: 16, consts: [[3, "navigation"], [3, "ngClass", 4, "ngIf"], ["class", "sort-alpha", "mat-icon-button", "", "matTooltipShowDelay", "500", 3, "matTooltip", "click", 4, "ngIf"], ["class", "add-context-button", "icon", "plus", 3, "iconColor", "store", "withIcon", "withTitle", "horizontal", "mode", 4, "ngIf"], ["class", "users-filter", "mat-icon-button", "", "matTooltipShowDelay", "500", 3, "matTooltip", "matMenuTriggerFor", 4, "ngIf"], ["accountMenu", "matMenu"], [4, "ngFor", "ngForOf"], [1, "profilsMenu"], [1, "mat-menu-item", 3, "checked", "click", "change"], ["mat-menu-item", ""], ["ngFor", "", 3, "ngForOf"], [3, "ngClass"], ["matInput", "", "type", "text", 3, "placeholder", "ngModel", "ngModelChange"], ["mat-button", "", "mat-icon-button", "", "matSuffix", "", "class", "clear-button", "aria-label", "Clear", "color", "warn", 3, "click", 4, "ngIf"], ["mat-button", "", "mat-icon-button", "", "matSuffix", "", "aria-label", "Clear", "color", "warn", 1, "clear-button", 3, "click"], ["svgIcon", "close"], ["mat-icon-button", "", "matTooltipShowDelay", "500", 1, "sort-alpha", 3, "matTooltip", "click"], ["color", "primary", "svgIcon", "sort-alphabetical-variant"], ["color", "warn", "svgIcon", "sort-variant-remove"], ["icon", "plus", 1, "add-context-button", 3, "iconColor", "store", "withIcon", "withTitle", "horizontal", "mode"], ["mat-icon-button", "", "matTooltipShowDelay", "500", 1, "users-filter", 3, "matTooltip", "matMenuTriggerFor"], ["color", "primary", "svgIcon", "filter-menu"], [1, "mat-menu-item", 3, "checked", "indeterminate", "click", "change"], ["mat-menu-item", "", 3, "matMenuTriggerFor", 4, "ngIf"], ["mat-menu-item", "", 4, "ngIf"], ["subAccountMenu", "matMenu"], ["class", "mat-menu-item", 3, "checked", "click", "change", 4, "ngFor", "ngForOf"], ["mat-menu-item", "", 3, "matMenuTriggerFor"], [3, "title", "collapsed", "toggle", 4, "ngIf"], [4, "ngIf"], [3, "title", "collapsed", "toggle"], ["igoListItem", "", "color", "accent", 3, "selected", "context", "default", "edit", "delete", "clone", "save", "hide", "show", "favorite", "manageTools", "managePermissions", "select", "unselect"], ["igoListItem", "", "color", "accent", 3, "selected", "context", "default", "select", "unselect"]], template: function ContextListComponent_Template(rf, ctx) { if (rf & 1) {
511
- i0.ɵɵelementStart(0, "igo-list", 0);
512
- i0.ɵɵtemplate(1, ContextListComponent_mat_form_field_1_Template, 4, 6, "mat-form-field", 1);
513
- i0.ɵɵtemplate(2, ContextListComponent_button_2_Template, 3, 3, "button", 2);
514
- i0.ɵɵtemplate(3, ContextListComponent_button_3_Template, 3, 3, "button", 2);
515
- i0.ɵɵtemplate(4, ContextListComponent_igo_actionbar_4_Template, 1, 6, "igo-actionbar", 3);
516
- i0.ɵɵtemplate(5, ContextListComponent_button_5_Template, 3, 4, "button", 4);
517
- i0.ɵɵelementStart(6, "mat-menu", null, 5);
518
- i0.ɵɵtemplate(8, ContextListComponent_ng_container_8_Template, 8, 5, "ng-container", 6);
519
- i0.ɵɵelementStart(9, "span", 7);
520
- i0.ɵɵelementStart(10, "mat-checkbox", 8);
521
- i0.ɵɵlistener("click", function ContextListComponent_Template_mat_checkbox_click_10_listener($event) { return $event.stopPropagation(); })("change", function ContextListComponent_Template_mat_checkbox_change_10_listener() { return ctx.showHiddenContexts.emit(); });
522
- i0.ɵɵelementEnd();
523
- i0.ɵɵelementStart(11, "button", 9);
524
- i0.ɵɵtext(12);
525
- i0.ɵɵpipe(13, "translate");
526
- i0.ɵɵelementEnd();
527
- i0.ɵɵelementEnd();
528
- i0.ɵɵelementEnd();
529
- i0.ɵɵtemplate(14, ContextListComponent_ng_template_14_Template, 2, 2, "ng-template", 10);
530
- i0.ɵɵpipe(15, "keyvalue");
531
- i0.ɵɵpipe(16, "async");
532
- i0.ɵɵelementEnd();
533
- } if (rf & 2) {
534
- i0.ɵɵproperty("navigation", true);
535
- i0.ɵɵadvance(1);
536
- i0.ɵɵproperty("ngIf", ctx.showFilter());
537
- i0.ɵɵadvance(1);
538
- i0.ɵɵproperty("ngIf", !ctx.sortedAlpha);
539
- i0.ɵɵadvance(1);
540
- i0.ɵɵproperty("ngIf", ctx.sortedAlpha);
541
- i0.ɵɵadvance(1);
542
- i0.ɵɵproperty("ngIf", ctx.auth.authenticated && ctx.configService.getConfig("context"));
543
- i0.ɵɵadvance(1);
544
- i0.ɵɵproperty("ngIf", ctx.auth.authenticated && ctx.configService.getConfig("context"));
545
- i0.ɵɵadvance(3);
546
- i0.ɵɵproperty("ngForOf", ctx.users);
547
- i0.ɵɵadvance(2);
548
- i0.ɵɵproperty("checked", ctx.showHidden);
549
- i0.ɵɵadvance(2);
550
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(13, 10, "igo.context.contextManager.showHidden"), " ");
551
- i0.ɵɵadvance(2);
552
- i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(15, 12, i0.ɵɵpipeBind1(16, 14, ctx.contexts$)));
553
- } }, directives: [i5.ListComponent, i6.NgIf, i7.MatMenu, i6.NgForOf, i8.MatCheckbox, i7.MatMenuItem, i9.MatFormField, i6.NgClass, i10.MatInput, i11.DefaultValueAccessor, i11.NgControlStatus, i11.NgModel, i12.MatButton, i9.MatSuffix, i13.MatIcon, i14.MatTooltip, i5.ActionbarComponent, i7.MatMenuTrigger, i5.CollapsibleComponent, i15.ContextItemComponent, i5.ListItemDirective], pipes: [i16.TranslatePipe, i5.KeyValuePipe, i6.AsyncPipe], styles: [".context-filter-max-width[_ngcontent-%COMP%]{width:calc(100% - 100px);margin:5px;padding-left:6px}.context-filter-min-width[_ngcontent-%COMP%]{width:calc(100% - 135px);margin:5px;padding-left:6px}.clear-button[_ngcontent-%COMP%]{padding-right:5px}mat-form-field[_ngcontent-%COMP%]{height:40px}.profilsMenu[_ngcontent-%COMP%]{display:flex}.profilsMenu[_ngcontent-%COMP%] > mat-checkbox[_ngcontent-%COMP%]{width:8px}.add-context-button[_ngcontent-%COMP%]{margin:0;width:40px;display:inline-flex;overflow:hidden}"], changeDetection: 0 });
554
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ContextListComponent, [{
555
- type: Component,
556
- args: [{
557
- selector: 'igo-context-list',
558
- templateUrl: './context-list.component.html',
559
- styleUrls: ['./context-list.component.scss'],
560
- changeDetection: ChangeDetectionStrategy.OnPush
561
- }]
562
- }], function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.ContextService }, { type: i2.ConfigService }, { type: i3.AuthService }, { type: i4.MatDialog }, { type: i2.LanguageService }, { type: i2.StorageService }]; }, { contexts: [{
563
- type: Input
564
- }], selectedContext: [{
565
- type: Input
566
- }], map: [{
567
- type: Input
568
- }], defaultContextId: [{
569
- type: Input
570
- }], select: [{
571
- type: Output
572
- }], unselect: [{
573
- type: Output
574
- }], edit: [{
575
- type: Output
576
- }], delete: [{
577
- type: Output
578
- }], save: [{
579
- type: Output
580
- }], clone: [{
581
- type: Output
582
- }], create: [{
583
- type: Output
584
- }], hide: [{
585
- type: Output
586
- }], show: [{
587
- type: Output
588
- }], showHiddenContexts: [{
589
- type: Output
590
- }], favorite: [{
591
- type: Output
592
- }], managePermissions: [{
593
- type: Output
594
- }], manageTools: [{
595
- type: Output
596
- }], filterPermissionsChanged: [{
597
- type: Output
598
- }], term: [{
599
- type: Input
600
- }] }); })();
601
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbnRleHQvc3JjL2xpYi9jb250ZXh0LW1hbmFnZXIvY29udGV4dC1saXN0L2NvbnRleHQtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb250ZXh0L3NyYy9saWIvY29udGV4dC1tYW5hZ2VyL2NvbnRleHQtbGlzdC9jb250ZXh0LWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFHWix1QkFBdUIsRUFFeEIsTUFBTSxlQUFlLENBQUM7QUFZdkIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUQsT0FBTyxFQUVMLGVBQWUsRUFDZixhQUFhLEVBQ2IsS0FBSyxFQUNMLEtBQUssRUFDTixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd0QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUM3RyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDM0J0RCxrQ0FRMEI7SUFBeEIsK01BQXVCO0lBQ3ZCLCtCQUFxQztJQUN2QyxpQkFBUzs7OztJQWhCWCwwQ0FBb0s7SUFDbEssaUNBSXFCO0lBQW5CLDROQUFrQjs7SUFKcEIsaUJBSXFCO0lBQ3JCLDZGQVVTO0lBQ1gsaUJBQWlCOzs7SUFqQm9CLDBKQUE4SDtJQUkvSixlQUEwRTtJQUExRSxrR0FBMEUsd0JBQUE7SUFPekUsZUFBaUI7SUFBakIseUNB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ZUFBa0I7UUFBbEIsdUNBQWtCO1FBU2hCLGVBQWlCO1FBQWpCLHNDQUFpQjtRQVNKLGVBQThEO1FBQTlELHVGQUE4RDtRQVdyRSxlQUE4RDtRQUE5RCx1RkFBOEQ7UUFVdEMsZUFBUTtRQUFSLG1DQUFRO1FBbUNuQyxlQUFzQjtRQUF0Qix3Q0FBc0I7UUFLdEIsZUFDRjtRQURFLGdHQUNGO1FBSWlDLGVBQXdDO1FBQXhDLHVGQUF3Qzs7dUZEOURsRSxvQkFBb0I7Y0FOaEMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLFdBQVcsRUFBRSwrQkFBK0I7Z0JBQzVDLFNBQVMsRUFBRSxDQUFDLCtCQUErQixDQUFDO2dCQUM1QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTthQUNoRDswT0FZSyxRQUFRO2tCQURYLEtBQUs7WUFZRixlQUFlO2tCQURsQixLQUFLO1lBV0YsR0FBRztrQkFETixLQUFLO1lBVUYsZ0JBQWdCO2tCQURuQixLQUFLO1lBV0ksTUFBTTtrQkFBZixNQUFNO1lBQ0csUUFBUTtrQkFBakIsTUFBTTtZQUNHLElBQUk7a0JBQWIsTUFBTTtZQUNHLE1BQU07a0JBQWYsTUFBTTtZQUNHLElBQUk7a0JBQWIsTUFBTTtZQUNHLEtBQUs7a0JBQWQsTUFBTTtZQUNHLE1BQU07a0JBQWYsTUFBTTtZQUNHLElBQUk7a0JBQWIsTUFBTTtZQUNHLElBQUk7a0JBQWIsTUFBTTtZQUNHLGtCQUFrQjtrQkFBM0IsTUFBTTtZQUNHLFFBQVE7a0JBQWpCLE1BQU07WUFDRyxpQkFBaUI7a0JBQTFCLE1BQU07WUFDRyxXQUFXO2tCQUFwQixNQUFNO1lBQ0csd0JBQXdCO2tCQUFqQyxNQUFNO1lBd0JILElBQUk7a0JBRFAsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgT25Jbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgT25EZXN0cm95XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJ0BpZ28yL2F1dGgnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSwgTGFuZ3VhZ2VTZXJ2aWNlLCBTdG9yYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBJZ29NYXAgfSBmcm9tICdAaWdvMi9nZW8nO1xuXG5pbXBvcnQge1xuICBEZXRhaWxlZENvbnRleHQsXG4gIENvbnRleHRzTGlzdCxcbiAgQ29udGV4dFVzZXJQZXJtaXNzaW9uLFxuICBDb250ZXh0UHJvZmlsc1xufSBmcm9tICcuLi9zaGFyZWQvY29udGV4dC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ29udGV4dExpc3RDb250cm9sc0VudW0gfSBmcm9tICcuL2NvbnRleHQtbGlzdC5lbnVtJztcbmltcG9ydCB7XG4gIFN1YnNjcmlwdGlvbixcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBSZXBsYXlTdWJqZWN0LFxuICBFTVBUWSxcbiAgdGltZXJcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQm9va21hcmtEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb250ZXh0LW1hcC1idXR0b24vYm9va21hcmstYnV0dG9uL2Jvb2ttYXJrLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgZGVib3VuY2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBY3Rpb25TdG9yZSwgQWN0aW9uYmFyTW9kZSB9IGZyb20gJ0BpZ28yL2NvbW1vbic7XG5pbXBvcnQgeyBDb250ZXh0U2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9jb250ZXh0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tY29udGV4dC1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbnRleHQtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbnRleHQtbGlzdC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBDb250ZXh0TGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBjb250ZXh0c0luaXRpYWw6IENvbnRleHRzTGlzdCA9IHsgb3VyczogW10gfTtcbiAgY29udGV4dHMkOiBCZWhhdmlvclN1YmplY3Q8Q29udGV4dHNMaXN0PiA9IG5ldyBCZWhhdmlvclN1YmplY3QoXG4gICAgdGhpcy5jb250ZXh0c0luaXRpYWxcbiAgKTtcblxuICBjaGFuZ2UkID0gbmV3IFJlcGxheVN1YmplY3Q8dm9pZD4oMSk7XG5cbiAgcHJpdmF0ZSBjaGFuZ2UkJDogU3Vic2NyaXB0aW9uO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBjb250ZXh0cygpOiBDb250ZXh0c0xpc3Qge1xuICAgIHJldHVybiB0aGlzLl9jb250ZXh0cztcbiAgfVxuICBzZXQgY29udGV4dHModmFsdWU6IENvbnRleHRzTGlzdCkge1xuICAgIHRoaXMuX2NvbnRleHRzID0gdmFsdWU7XG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5uZXh0KCk7XG4gIH1cbiAgcHJpdmF0ZSBfY29udGV4dHM6IENvbnRleHRzTGlzdCA9IHsgb3VyczogW10gfTtcblxuICBASW5wdXQoKVxuICBnZXQgc2VsZWN0ZWRDb250ZXh0KCk6IERldGFpbGVkQ29udGV4dCB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkQ29udGV4dDtcbiAgfVxuICBzZXQgc2VsZWN0ZWRDb250ZXh0KHZhbHVlOiBEZXRhaWxlZENvbnRleHQpIHtcbiAgICB0aGlzLl9zZWxlY3RlZENvbnRleHQgPSB2YWx1ZTtcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuICBwcml2YXRlIF9zZWxlY3RlZENvbnRleHQ6IERldGFpbGVkQ29udGV4dDtcblxuICBASW5wdXQoKVxuICBnZXQgbWFwKCk6IElnb01hcCB7XG4gICAgcmV0dXJuIHRoaXMuX21hcDtcbiAgfVxuICBzZXQgbWFwKHZhbHVlOiBJZ29NYXApIHtcbiAgICB0aGlzLl9tYXAgPSB2YWx1ZTtcbiAgfVxuICBwcml2YXRlIF9tYXA6IElnb01hcDtcblxuICBASW5wdXQoKVxuICBnZXQgZGVmYXVsdENvbnRleHRJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9kZWZhdWx0Q29udGV4dElkO1xuICB9XG4gIHNldCBkZWZhdWx0Q29udGV4dElkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9kZWZhdWx0Q29udGV4dElkID0gdmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSBfZGVmYXVsdENvbnRleHRJZDogc3RyaW5nO1xuXG4gIHB1YmxpYyBjb2xsYXBzZWQ6IHsgY29udGV4dFNjb3BlIH1bXSA9IFtdO1xuXG4gIEBPdXRwdXQoKSBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPERldGFpbGVkQ29udGV4dD4oKTtcbiAgQE91dHB1dCgpIHVuc2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxEZXRhaWxlZENvbnRleHQ+KCk7XG4gIEBPdXRwdXQoKSBlZGl0ID0gbmV3IEV2ZW50RW1pdHRlcjxEZXRhaWxlZENvbnRleHQ+KCk7XG4gIEBPdXRwdXQoKSBkZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPERldGFpbGVkQ29udGV4dD4oKTtcbiAgQE91dHB1dCgpIHNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPERldGFpbGVkQ29udGV4dD4oKTtcbiAgQE91dHB1dCgpIGNsb25lID0gbmV3IEV2ZW50RW1pdHRlcjxEZXRhaWxlZENvbnRleHQ+KCk7XG4gIEBPdXRwdXQoKSBjcmVhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgdGl0bGU6IHN0cmluZzsgZW1wdHk6IGJvb2xlYW4gfT4oKTtcbiAgQE91dHB1dCgpIGhpZGUgPSBuZXcgRXZlbnRFbWl0dGVyPERldGFpbGVkQ29udGV4dD4oKTtcbiAgQE91dHB1dCgpIHNob3cgPSBuZXcgRXZlbnRFbWl0dGVyPERldGFpbGVkQ29udGV4dD4oKTtcbiAgQE91dHB1dCgpIHNob3dIaWRkZW5Db250ZXh0cyA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIGZhdm9yaXRlID0gbmV3IEV2ZW50RW1pdHRlcjxEZXRhaWxlZENvbnRleHQ+KCk7XG4gIEBPdXRwdXQoKSBtYW5hZ2VQZXJtaXNzaW9ucyA9IG5ldyBFdmVudEVtaXR0ZXI8RGV0YWlsZWRDb250ZXh0PigpO1xuICBAT3V0cHV0KCkgbWFuYWdlVG9vbHMgPSBuZXcgRXZlbnRFbWl0dGVyPERldGFpbGVkQ29udGV4dD4oKTtcbiAgQE91dHB1dCgpIGZpbHRlclBlcm1pc3Npb25zQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgQ29udGV4dFVzZXJQZXJtaXNzaW9uW11cbiAgPigpO1xuXG4gIHB1YmxpYyB0aXRsZU1hcHBpbmcgPSB7XG4gICAgb3VyczogJ2lnby5jb250ZXh0LmNvbnRleHRNYW5hZ2VyLm91ckNvbnRleHRzJyxcbiAgICBzaGFyZWQ6ICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5zaGFyZWRDb250ZXh0cycsXG4gICAgcHVibGljOiAnaWdvLmNvbnRleHQuY29udGV4dE1hbmFnZXIucHVibGljQ29udGV4dHMnXG4gIH07XG5cbiAgcHVibGljIHVzZXJzOiBDb250ZXh0UHJvZmlsc1tdO1xuICBwdWJsaWMgcGVybWlzc2lvbnM6IENvbnRleHRVc2VyUGVybWlzc2lvbltdID0gW107XG5cbiAgcHVibGljIGFjdGlvblN0b3JlID0gbmV3IEFjdGlvblN0b3JlKFtdKTtcbiAgcHVibGljIGFjdGlvbmJhck1vZGUgPSBBY3Rpb25iYXJNb2RlLk92ZXJsYXk7XG5cbiAgcHVibGljIGNvbG9yID0gJ3ByaW1hcnknO1xuXG4gIHB1YmxpYyBzaG93SGlkZGVuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIENvbnRleHQgZmlsdGVyIHRlcm1cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCB0ZXJtKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl90ZXJtID0gdmFsdWU7XG4gICAgdGhpcy5uZXh0KCk7XG4gIH1cbiAgZ2V0IHRlcm0oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdGVybTtcbiAgfVxuICBwdWJsaWMgX3Rlcm06IHN0cmluZyA9ICcnO1xuXG4gIGdldCBzb3J0ZWRBbHBoYSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc29ydGVkQWxwaGE7XG4gIH1cbiAgc2V0IHNvcnRlZEFscGhhKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc29ydGVkQWxwaGEgPSB2YWx1ZTtcbiAgICB0aGlzLm5leHQoKTtcbiAgfVxuICBwcml2YXRlIF9zb3J0ZWRBbHBoYTogYm9vbGVhbiA9IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgc2hvd0NvbnRleHRGaWx0ZXIgPSBDb250ZXh0TGlzdENvbnRyb2xzRW51bS5hbHdheXM7XG5cbiAgcHVibGljIHRocmVzaG9sZFRvRmlsdGVyID0gNTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGNvbnRleHRTZXJ2aWNlOiBDb250ZXh0U2VydmljZSxcbiAgICBwdWJsaWMgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwdWJsaWMgYXV0aDogQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNoYW5nZSQkID0gdGhpcy5jaGFuZ2UkXG4gICAgICAucGlwZShcbiAgICAgICAgZGVib3VuY2UoKCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvbnRleHRzLm91cnMubGVuZ3RoID09PSAwID8gRU1QVFkgOiB0aW1lcig1MCk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jb250ZXh0cyQubmV4dCh0aGlzLmZpbHRlckNvbnRleHRzTGlzdCh0aGlzLmNvbnRleHRzKSk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuYWN0aW9uU3RvcmUubG9hZChbXG4gICAgICB7XG4gICAgICAgIGlkOiAnZW1wdHlDb250ZXh0JyxcbiAgICAgICAgdGl0bGU6IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5lbXB0eUNvbnRleHQnXG4gICAgICAgICksXG4gICAgICAgIGljb246ICdtYXAtb3V0bGluZScsXG4gICAgICAgIHRvb2x0aXA6IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5lbXB0eUNvbnRleHRUb29sdGlwJ1xuICAgICAgICApLFxuICAgICAgICBoYW5kbGVyOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jcmVhdGVDb250ZXh0KHRydWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpZDogJ2NvbnRleHRGcm9tTWFwJyxcbiAgICAgICAgdGl0bGU6IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5jb250ZXh0TWFwJ1xuICAgICAgICApLFxuICAgICAgICBpY29uOiAnbWFwLWNoZWNrJyxcbiAgICAgICAgdG9vbHRpcDogdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgJ2lnby5jb250ZXh0LmNvbnRleHRNYW5hZ2VyLmNvbnRleHRNYXBUb29sdGlwJ1xuICAgICAgICApLFxuICAgICAgICBoYW5kbGVyOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jcmVhdGVDb250ZXh0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF0pO1xuICB9XG5cbiAgcHJpdmF0ZSBuZXh0KCkge1xuICAgIHRoaXMuY2hhbmdlJC5uZXh0KCk7XG4gIH1cblxuICBwcml2YXRlIGZpbHRlckNvbnRleHRzTGlzdChjb250ZXh0czogQ29udGV4dHNMaXN0KSB7XG4gICAgaWYgKHRoaXMudGVybSA9PT0gJycpIHtcbiAgICAgIGlmICh0aGlzLnNvcnRlZEFscGhhKSB7XG4gICAgICAgIGNvbnRleHRzID0gdGhpcy5zb3J0Q29udGV4dHNMaXN0KGNvbnRleHRzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb250ZXh0cztcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgb3VycyA9IGNvbnRleHRzLm91cnMuZmlsdGVyKChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbHRlck5vcm1hbGl6ZWQgPSB0aGlzLnRlcm1cbiAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgIC5ub3JtYWxpemUoJ05GRCcpXG4gICAgICAgICAgLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csICcnKTtcbiAgICAgICAgY29uc3QgY29udGV4dFRpdGxlTm9ybWFsaXplZCA9IGNvbnRleHQudGl0bGVcbiAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgIC5ub3JtYWxpemUoJ05GRCcpXG4gICAgICAgICAgLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csICcnKTtcbiAgICAgICAgcmV0dXJuIGNvbnRleHRUaXRsZU5vcm1hbGl6ZWQuaW5jbHVkZXMoZmlsdGVyTm9ybWFsaXplZCk7XG4gICAgICB9KTtcblxuICAgICAgbGV0IHVwZGF0ZUNvbnRleHRzOiBDb250ZXh0c0xpc3QgPSB7XG4gICAgICAgIG91cnNcbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLmNvbnRleHRzLnB1YmxpYykge1xuICAgICAgICBjb25zdCBwdWJsaWNzID0gY29udGV4dHMucHVibGljLmZpbHRlcigoY29udGV4dCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGZpbHRlck5vcm1hbGl6ZWQgPSB0aGlzLnRlcm1cbiAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAubm9ybWFsaXplKCdORkQnKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csICcnKTtcbiAgICAgICAgICBjb25zdCBjb250ZXh0VGl0bGVOb3JtYWxpemVkID0gY29udGV4dC50aXRsZVxuICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgIC5ub3JtYWxpemUoJ05GRCcpXG4gICAgICAgICAgICAucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpO1xuICAgICAgICAgIHJldHVybiBjb250ZXh0VGl0bGVOb3JtYWxpemVkLmluY2x1ZGVzKGZpbHRlck5vcm1hbGl6ZWQpO1xuICAgICAgICB9KTtcbiAgICAgICAgdXBkYXRlQ29udGV4dHMucHVibGljID0gcHVibGljcztcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuY29udGV4dHMuc2hhcmVkKSB7XG4gICAgICAgIGNvbnN0IHNoYXJlZCA9IGNvbnRleHRzLnNoYXJlZC5maWx0ZXIoKGNvbnRleHQpID0+IHtcbiAgICAgICAgICBjb25zdCBmaWx0ZXJOb3JtYWxpemVkID0gdGhpcy50ZXJtXG4gICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgLm5vcm1hbGl6ZSgnTkZEJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJyk7XG4gICAgICAgICAgY29uc3QgY29udGV4dFRpdGxlTm9ybWFsaXplZCA9IGNvbnRleHQudGl0bGVcbiAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAubm9ybWFsaXplKCdORkQnKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csICcnKTtcbiAgICAgICAgICByZXR1cm4gY29udGV4dFRpdGxlTm9ybWFsaXplZC5pbmNsdWRlcyhmaWx0ZXJOb3JtYWxpemVkKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHVwZGF0ZUNvbnRleHRzLnNoYXJlZCA9IHNoYXJlZDtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuc29ydGVkQWxwaGEpIHtcbiAgICAgICAgdXBkYXRlQ29udGV4dHMgPSB0aGlzLnNvcnRDb250ZXh0c0xpc3QodXBkYXRlQ29udGV4dHMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVwZGF0ZUNvbnRleHRzO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuY2hhbmdlJCQudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93RmlsdGVyKCkge1xuICAgIHN3aXRjaCAodGhpcy5zaG93Q29udGV4dEZpbHRlcikge1xuICAgICAgY2FzZSBDb250ZXh0TGlzdENvbnRyb2xzRW51bS5hbHdheXM6XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgY2FzZSBDb250ZXh0TGlzdENvbnRyb2xzRW51bS5uZXZlcjpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgbGV0IHRvdGFsTGVuZ3RoID0gdGhpcy5jb250ZXh0cy5vdXJzLmxlbmd0aDtcbiAgICAgICAgdGhpcy5jb250ZXh0cy5wdWJsaWNcbiAgICAgICAgICA/ICh0b3RhbExlbmd0aCArPSB0aGlzLmNvbnRleHRzLnB1YmxpYy5sZW5ndGgpXG4gICAgICAgICAgOiAodG90YWxMZW5ndGggKz0gMCk7XG4gICAgICAgIHRoaXMuY29udGV4dHMuc2hhcmVkXG4gICAgICAgICAgPyAodG90YWxMZW5ndGggKz0gdGhpcy5jb250ZXh0cy5zaGFyZWQubGVuZ3RoKVxuICAgICAgICAgIDogKHRvdGFsTGVuZ3RoICs9IDApO1xuICAgICAgICBpZiAodG90YWxMZW5ndGggPj0gdGhpcy50aHJlc2hvbGRUb0ZpbHRlcikge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBzb3J0Q29udGV4dHNMaXN0KGNvbnRleHRzOiBDb250ZXh0c0xpc3QpIHtcbiAgICBpZiAoY29udGV4dHMpIHtcbiAgICAgIGNvbnN0IGNvbnRleHRzTGlzdCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoY29udGV4dHMpKTtcbiAgICAgIGNvbnRleHRzTGlzdC5vdXJzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgaWYgKHRoaXMubm9ybWFsaXplKGEudGl0bGUpIDwgdGhpcy5ub3JtYWxpemUoYi50aXRsZSkpIHtcbiAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubm9ybWFsaXplKGEudGl0bGUpID4gdGhpcy5ub3JtYWxpemUoYi50aXRsZSkpIHtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoY29udGV4dHNMaXN0LnNoYXJlZCkge1xuICAgICAgICBjb250ZXh0c0xpc3Quc2hhcmVkLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5ub3JtYWxpemUoYS50aXRsZSkgPCB0aGlzLm5vcm1hbGl6ZShiLnRpdGxlKSkge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5ub3JtYWxpemUoYS50aXRsZSkgPiB0aGlzLm5vcm1hbGl6ZShiLnRpdGxlKSkge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoY29udGV4dHNMaXN0LnB1YmxpYykge1xuICAgICAgICBjb250ZXh0c0xpc3QucHVibGljLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5ub3JtYWxpemUoYS50aXRsZSkgPCB0aGlzLm5vcm1hbGl6ZShiLnRpdGxlKSkge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5ub3JtYWxpemUoYS50aXRsZSkgPiB0aGlzLm5vcm1hbGl6ZShiLnRpdGxlKSkge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb250ZXh0c0xpc3Q7XG4gICAgfVxuICB9XG5cbiAgbm9ybWFsaXplKHN0cjogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN0clxuICAgICAgLm5vcm1hbGl6ZSgnTkZEJylcbiAgICAgIC5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJylcbiAgICAgIC50b0xvd2VyQ2FzZSgpO1xuICB9XG5cbiAgdG9nZ2xlU29ydChzb3J0QWxwaGE6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNvcnRlZEFscGhhID0gc29ydEFscGhhO1xuICB9XG5cbiAgY2xlYXJGaWx0ZXIoKSB7XG4gICAgdGhpcy50ZXJtID0gJyc7XG4gIH1cblxuICBjcmVhdGVDb250ZXh0KGVtcHR5PzogYm9vbGVhbikge1xuICAgIHRoaXMuZGlhbG9nXG4gICAgICAub3BlbihCb29rbWFya0RpYWxvZ0NvbXBvbmVudCwgeyBkaXNhYmxlQ2xvc2U6IGZhbHNlIH0pXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKHRpdGxlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKHRpdGxlKSB7XG4gICAgICAgICAgdGhpcy5jcmVhdGUuZW1pdCh7IHRpdGxlLCBlbXB0eSB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBnZXRQZXJtaXNzaW9uKHVzZXI/KTogQ29udGV4dFVzZXJQZXJtaXNzaW9uIHtcbiAgICBpZiAodXNlcikge1xuICAgICAgY29uc3QgcGVybWlzc2lvbiA9IHRoaXMucGVybWlzc2lvbnMuZmluZCgocCkgPT4gcC5uYW1lID09PSB1c2VyLm5hbWUpO1xuICAgICAgcmV0dXJuIHBlcm1pc3Npb247XG4gICAgfVxuICB9XG5cbiAgdXNlclNlbGVjdGlvbih1c2VyLCBwYXJlbnQ/KSB7XG4gICAgY29uc3QgcGVybWlzc2lvbiA9IHRoaXMuZ2V0UGVybWlzc2lvbih1c2VyKTtcbiAgICBpZiAocGVybWlzc2lvbikge1xuICAgICAgcGVybWlzc2lvbi5jaGVja2VkID0gIXBlcm1pc3Npb24uY2hlY2tlZDtcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0KFxuICAgICAgICAnY29udGV4dHMucGVybWlzc2lvbnMuJyArIHBlcm1pc3Npb24ubmFtZSxcbiAgICAgICAgcGVybWlzc2lvbi5jaGVja2VkXG4gICAgICApO1xuICAgICAgcGVybWlzc2lvbi5pbmRldGVybWluYXRlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgbGV0IGluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcblxuICAgICAgZm9yIChjb25zdCBjIG9mIHBhcmVudC5jaGlsZHMpIHtcbiAgICAgICAgY29uc3QgY1Blcm1pc3Npb24gPSB0aGlzLmdldFBlcm1pc3Npb24oYyk7XG4gICAgICAgIGlmIChjUGVybWlzc2lvbi5jaGVja2VkICE9PSBwZXJtaXNzaW9uLmNoZWNrZWQpIHtcbiAgICAgICAgICBpbmRldGVybWluYXRlID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3QgcGFyZW50UGVybWlzc2lvbiA9IHRoaXMuZ2V0UGVybWlzc2lvbihwYXJlbnQpO1xuICAgICAgaWYgKHBhcmVudFBlcm1pc3Npb24pIHtcbiAgICAgICAgcGFyZW50UGVybWlzc2lvbi5jaGVja2VkID0gcGVybWlzc2lvbi5jaGVja2VkO1xuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldChcbiAgICAgICAgICAnY29udGV4dHMucGVybWlzc2lvbnMuJyArIHBhcmVudFBlcm1pc3Npb24ubmFtZSxcbiAgICAgICAgICBwZXJtaXNzaW9uLmNoZWNrZWRcbiAgICAgICAgKTtcbiAgICAgICAgcGFyZW50UGVybWlzc2lvbi5pbmRldGVybWluYXRlID0gaW5kZXRlcm1pbmF0ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodXNlci5jaGlsZHMpIHtcbiAgICAgIGZvciAoY29uc3QgYyBvZiB1c2VyLmNoaWxkcykge1xuICAgICAgICBjb25zdCBjaGlsZHJlblBlcm1pc3Npb24gPSB0aGlzLmdldFBlcm1pc3Npb24oYyk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBjaGlsZHJlblBlcm1pc3Npb24gJiZcbiAgICAgICAgICBjaGlsZHJlblBlcm1pc3Npb24uY2hlY2tlZCAhPT0gcGVybWlzc2lvbi5jaGVja2VkXG4gICAgICAgICkge1xuICAgICAgICAgIGNoaWxkcmVuUGVybWlzc2lvbi5jaGVja2VkID0gcGVybWlzc2lvbi5jaGVja2VkO1xuICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0KFxuICAgICAgICAgICAgJ2NvbnRleHRzLnBlcm1pc3Npb25zLicgKyBjaGlsZHJlblBlcm1pc3Npb24ubmFtZSxcbiAgICAgICAgICAgIHBlcm1pc3Npb24uY2hlY2tlZFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmZpbHRlclBlcm1pc3Npb25zQ2hhbmdlZC5lbWl0KHRoaXMucGVybWlzc2lvbnMpO1xuICB9XG5cbiAgaGlkZUNvbnRleHQoY29udGV4dDogRGV0YWlsZWRDb250ZXh0KSB7XG4gICAgY29udGV4dC5oaWRkZW4gPSB0cnVlO1xuICAgIGlmICghdGhpcy5zaG93SGlkZGVuKSB7XG4gICAgICBjb25zdCBjb250ZXh0czogQ29udGV4dHNMaXN0ID0geyBvdXJzOiBbXSwgc2hhcmVkOiBbXSwgcHVibGljOiBbXSB9O1xuICAgICAgY29udGV4dHMub3VycyA9IHRoaXMuY29udGV4dHMub3Vycy5maWx0ZXIoKGMpID0+IGMuaWQgIT09IGNvbnRleHQuaWQpO1xuICAgICAgY29udGV4dHMuc2hhcmVkID0gdGhpcy5jb250ZXh0cy5zaGFyZWQuZmlsdGVyKChjKSA9PiBjLmlkICE9PSBjb250ZXh0LmlkKTtcbiAgICAgIGNvbnRleHRzLnB1YmxpYyA9IHRoaXMuY29udGV4dHMucHVibGljLmZpbHRlcigoYykgPT4gYy5pZCAhPT0gY29udGV4dC5pZCk7XG4gICAgICB0aGlzLmNvbnRleHRzID0gY29udGV4dHM7XG4gICAgfVxuICAgIHRoaXMuaGlkZS5lbWl0KGNvbnRleHQpO1xuICB9XG5cbiAgc2hvd0NvbnRleHQoY29udGV4dDogRGV0YWlsZWRDb250ZXh0KSB7XG4gICAgY29udGV4dC5oaWRkZW4gPSBmYWxzZTtcbiAgICB0aGlzLnNob3cuZW1pdChjb250ZXh0KTtcbiAgfVxufVxuIiwiPGlnby1saXN0IFtuYXZpZ2F0aW9uXT1cInRydWVcIj5cbiAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwic2hvd0ZpbHRlcigpXCIgW25nQ2xhc3NdPVwiYXV0aC5hdXRoZW50aWNhdGVkICYmIGNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCdjb250ZXh0JykgPyAnY29udGV4dC1maWx0ZXItbWluLXdpZHRoJyA6ICdjb250ZXh0LWZpbHRlci1tYXgtd2lkdGgnXCI+XG4gICAgPGlucHV0XG4gICAgICBtYXRJbnB1dFxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cIidpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5maWx0ZXJQbGFjZUhvbGRlcicgfCB0cmFuc2xhdGVcIlxuICAgICAgWyhuZ01vZGVsKV09XCJ0ZXJtXCI+XG4gICAgPGJ1dHRvblxuICAgICAgbWF0LWJ1dHRvblxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICBtYXRTdWZmaXhcbiAgICAgIGNsYXNzPVwiY2xlYXItYnV0dG9uXCJcbiAgICAgICpuZ0lmPVwidGVybS5sZW5ndGhcIlxuICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyXCJcbiAgICAgIGNvbG9yPVwid2FyblwiXG4gICAgICAoY2xpY2spPVwiY2xlYXJGaWx0ZXIoKVwiPlxuICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJjbG9zZVwiPjwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgPGJ1dHRvblxuICAqbmdJZj1cIiFzb3J0ZWRBbHBoYVwiXG4gIGNsYXNzPVwic29ydC1hbHBoYVwiXG4gIG1hdC1pY29uLWJ1dHRvblxuICBbbWF0VG9vbHRpcF09XCInaWdvLmNvbnRleHQuY29udGV4dE1hbmFnZXIuc29ydEFscGhhYmV0aWNhbGx5JyB8IHRyYW5zbGF0ZVwiXG4gIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAoY2xpY2spPVwidG9nZ2xlU29ydCh0cnVlKVwiPlxuICA8bWF0LWljb24gY29sb3I9XCJwcmltYXJ5XCIgc3ZnSWNvbj1cInNvcnQtYWxwaGFiZXRpY2FsLXZhcmlhbnRcIj48L21hdC1pY29uPlxuICA8L2J1dHRvbj5cbiAgPGJ1dHRvblxuICAgICpuZ0lmPVwic29ydGVkQWxwaGFcIlxuICAgIGNsYXNzPVwic29ydC1hbHBoYVwiXG4gICAgbWF0LWljb24tYnV0dG9uXG4gICAgW21hdFRvb2x0aXBdPVwiJ2lnby5jb250ZXh0LmNvbnRleHRNYW5hZ2VyLnNvcnRDb250ZXh0T3JkZXInIHwgdHJhbnNsYXRlXCJcbiAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgICAoY2xpY2spPVwidG9nZ2xlU29ydChmYWxzZSlcIj5cbiAgICA8bWF0LWljb24gY29sb3I9XCJ3YXJuXCIgc3ZnSWNvbj1cInNvcnQtdmFyaWFudC1yZW1vdmVcIj48L21hdC1pY29uPlxuICA8L2J1dHRvbj5cblxuICA8aWdvLWFjdGlvbmJhciAqbmdJZj1cImF1dGguYXV0aGVudGljYXRlZCAmJiBjb25maWdTZXJ2aWNlLmdldENvbmZpZygnY29udGV4dCcpXCJcbiAgICBjbGFzcz1cImFkZC1jb250ZXh0LWJ1dHRvblwiXG4gICAgW2ljb25Db2xvcl09XCJjb2xvclwiXG4gICAgW3N0b3JlXT1cImFjdGlvblN0b3JlXCJcbiAgICBbd2l0aEljb25dPVwidHJ1ZVwiXG4gICAgaWNvbj1cInBsdXNcIlxuICAgIFt3aXRoVGl0bGVdPVwiYWN0aW9uYmFyTW9kZSA9PT0gJ292ZXJsYXknXCJcbiAgICBbaG9yaXpvbnRhbF09XCJmYWxzZVwiXG4gICAgW21vZGVdPVwiYWN0aW9uYmFyTW9kZVwiPlxuICA8L2lnby1hY3Rpb25iYXI+XG5cbiAgPGJ1dHRvbiAqbmdJZj1cImF1dGguYXV0aGVudGljYXRlZCAmJiBjb25maWdTZXJ2aWNlLmdldENvbmZpZygnY29udGV4dCcpXCJcbiAgICBjbGFzcz1cInVzZXJzLWZpbHRlclwiXG4gICAgbWF0LWljb24tYnV0dG9uXG4gICAgW21hdFRvb2x0aXBdPVwiJ2lnby5jb250ZXh0LmNvbnRleHRNYW5hZ2VyLmZpbHRlclVzZXInIHwgdHJhbnNsYXRlXCJcbiAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwiYWNjb3VudE1lbnVcIj5cbiAgICA8bWF0LWljb24gY29sb3I9XCJwcmltYXJ5XCIgc3ZnSWNvbj1cImZpbHRlci1tZW51XCI+PC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG5cbiAgPG1hdC1tZW51ICNhY2NvdW50TWVudT1cIm1hdE1lbnVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB1c2VyIG9mIHVzZXJzXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInByb2ZpbHNNZW51XCI+XG4gICAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgICBjbGFzcz1cIm1hdC1tZW51LWl0ZW1cIlxuICAgICAgICAgIFtjaGVja2VkXT1cImdldFBlcm1pc3Npb24odXNlcikuY2hlY2tlZFwiXG4gICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiZ2V0UGVybWlzc2lvbih1c2VyKS5pbmRldGVybWluYXRlXCJcbiAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAoY2hhbmdlKT1cInVzZXJTZWxlY3Rpb24odXNlcilcIj5cbiAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJ1c2VyLmNoaWxkc1wiXG4gICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cInN1YkFjY291bnRNZW51XCJcbiAgICAgICAgICBtYXQtbWVudS1pdGVtPlxuICAgICAgICAgIHt7dXNlci50aXRsZX19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICpuZ0lmPVwiIXVzZXIuY2hpbGRzXCI+XG4gICAgICAgICAge3t1c2VyLnRpdGxlfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDxtYXQtbWVudSAjc3ViQWNjb3VudE1lbnU9XCJtYXRNZW51XCI+XG4gICAgICAgIDxtYXQtY2hlY2tib3ggKm5nRm9yPVwibGV0IGNoaWxkIG9mIHVzZXIuY2hpbGRzXCJcbiAgICAgICAgICBjbGFzcz1cIm1hdC1tZW51LWl0ZW1cIlxuICAgICAgICAgIFtjaGVja2VkXT1cImdldFBlcm1pc3Npb24oY2hpbGQpLmNoZWNrZWRcIlxuICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgIChjaGFuZ2UpPVwidXNlclNlbGVjdGlvbihjaGlsZCwgdXNlcilcIj5cbiAgICAgICAgICB7e2NoaWxkLnRpdGxlfX1cbiAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICA8L21hdC1tZW51PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPHNwYW4gY2xhc3M9XCJwcm9maWxzTWVudVwiPlxuICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICBjbGFzcz1cIm1hdC1tZW51LWl0ZW1cIlxuICAgICAgICBbY2hlY2tlZF09XCJzaG93SGlkZGVuXCJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIChjaGFuZ2UpPVwic2hvd0hpZGRlbkNvbnRleHRzLmVtaXQoKVwiPlxuICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0+XG4gICAgICAgIHt7ICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5zaG93SGlkZGVuJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9zcGFuPlxuICA8L21hdC1tZW51PlxuXG4gIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtZ3JvdXBDb250ZXh0cyBbbmdGb3JPZl09XCJjb250ZXh0cyQgfCBhc3luYyB8IGtleXZhbHVlXCI+XG5cbiAgICA8aWdvLWNvbGxhcHNpYmxlICpuZ0lmPVwiZ3JvdXBDb250ZXh0cy52YWx1ZS5sZW5ndGggJiYgYXV0aC5hdXRoZW50aWNhdGVkXCIgW3RpdGxlXT1cInRpdGxlTWFwcGluZ1tncm91cENvbnRleHRzLmtleV0gfCB0cmFuc2xhdGVcIlxuICAgICAgW2NvbGxhcHNlZF09XCJjb2xsYXBzZWRbdGl0bGVNYXBwaW5nW2dyb3VwQ29udGV4dHMua2V5XV1cIiAodG9nZ2xlKT1cImNvbGxhcHNlZFt0aXRsZU1hcHBpbmdbZ3JvdXBDb250ZXh0cy5rZXldXSA9ICRldmVudFwiPlxuXG4gICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LWNvbnRleHQgW25nRm9yT2ZdPVwiZ3JvdXBDb250ZXh0cy52YWx1ZVwiPlxuICAgICAgICA8aWdvLWNvbnRleHQtaXRlbVxuICAgICAgICAgIGlnb0xpc3RJdGVtXG4gICAgICAgICAgY29sb3I9XCJhY2NlbnRcIlxuICAgICAgICAgIFtzZWxlY3RlZF09XCJzZWxlY3RlZENvbnRleHQgJiYgc2VsZWN0ZWRDb250ZXh0LnVyaSA9PT0gY29udGV4dC51cmlcIlxuICAgICAgICAgIFtjb250ZXh0XT1cImNvbnRleHRcIlxuICAgICAgICAgIFtkZWZhdWx0XT1cImNvbnRleHQuaWQgJiYgdGhpcy5kZWZhdWx0Q29udGV4dElkICYmIHRoaXMuZGVmYXVsdENvbnRleHRJZCA9PT0gY29udGV4dC5pZFwiXG4gICAgICAgICAgKGVkaXQpPVwiZWRpdC5lbWl0KGNvbnRleHQpXCJcbiAgICAgICAgICAoZGVsZXRlKT1cImRlbGV0ZS5lbWl0KGNvbnRleHQpXCJcbiAgICAgICAgICAoY2xvbmUpPVwiY2xvbmUuZW1pdChjb250ZXh0KVwiXG4gICAgICAgICAgKHNhdmUpPVwic2F2ZS5lbWl0KGNvbnRleHQpXCJcbiAgICAgICAgICAoaGlkZSk9XCJoaWRlQ29udGV4dChjb250ZXh0KVwiXG4gICAgICAgICAgKHNob3cpPVwic2hvd0NvbnRleHQoY29udGV4dClcIlxuICAgICAgICAgIChmYXZvcml0ZSk9XCJmYXZvcml0ZS5lbWl0KGNvbnRleHQpXCJcbiAgICAgICAgICAobWFuYWdlVG9vbHMpPVwibWFuYWdlVG9vbHMuZW1pdChjb250ZXh0KVwiXG4gICAgICAgICAgKG1hbmFnZVBlcm1pc3Npb25zKT1cIm1hbmFnZVBlcm1pc3Npb25zLmVtaXQoY29udGV4dClcIlxuICAgICAgICAgIChzZWxlY3QpPVwic2VsZWN0LmVtaXQoY29udGV4dClcIlxuICAgICAgICAgICh1bnNlbGVjdCk9XCJ1bnNlbGVjdC5lbWl0KGNvbnRleHQpXCI+XG4gICAgICAgIDwvaWdvLWNvbnRleHQtaXRlbT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8L2lnby1jb2xsYXBzaWJsZT5cblxuICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImdyb3VwQ29udGV4dHMudmFsdWUubGVuZ3RoICYmICFhdXRoLmF1dGhlbnRpY2F0ZWRcIiBuZ0ZvciBsZXQtY29udGV4dCBbbmdGb3JPZl09XCJncm91cENvbnRleHRzLnZhbHVlXCI+XG4gICAgICA8aWdvLWNvbnRleHQtaXRlbVxuICAgICAgICBpZ29MaXN0SXRlbVxuICAgICAgICBjb2xvcj1cImFjY2VudFwiXG4gICAgICAgIFtzZWxlY3RlZF09XCJzZWxlY3RlZENvbnRleHQgJiYgc2VsZWN0ZWRDb250ZXh0LnVyaSA9PT0gY29udGV4dC51cmlcIlxuICAgICAgICBbY29udGV4dF09XCJjb250ZXh0XCJcbiAgICAgICAgW2RlZmF1bHRdPVwidGhpcy5kZWZhdWx0Q29udGV4dElkID09PSBjb250ZXh0LmlkXCJcbiAgICAgICAgKHNlbGVjdCk9XCJzZWxlY3QuZW1pdChjb250ZXh0KVwiXG4gICAgICAgICh1bnNlbGVjdCk9XCJ1bnNlbGVjdC5lbWl0KGNvbnRleHQpXCI+XG4gICAgICA8L2lnby1jb250ZXh0LWl0ZW0+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICA8L25nLXRlbXBsYXRlPlxuPC9pZ28tbGlzdD5cbiJdfQ==