@tilde-nlp/ngx-menu 6.1.36 → 6.1.37

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.
@@ -35,148 +35,145 @@ function SideNavMenuComponent_a_14_Template(rf, ctx) { if (rf & 1) {
35
35
  i0.ɵɵadvance(2);
36
36
  i0.ɵɵtextInterpolate1(" ", ctx_r2.productName, " ");
37
37
  } }
38
- function SideNavMenuComponent_button_25_ng_container_4_mat_icon_3_Template(rf, ctx) { if (rf & 1) {
39
- i0.ɵɵelementStart(0, "mat-icon", 26);
38
+ function SideNavMenuComponent_Conditional_28_Template(rf, ctx) { if (rf & 1) {
39
+ i0.ɵɵtext(0);
40
+ } if (rf & 2) {
41
+ const ctx_r2 = i0.ɵɵnextContext();
42
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.userInitials, " ");
43
+ } }
44
+ function SideNavMenuComponent_Conditional_29_Template(rf, ctx) { if (rf & 1) {
45
+ i0.ɵɵelementStart(0, "mat-icon");
46
+ i0.ɵɵtext(1, "person");
47
+ i0.ɵɵelementEnd();
48
+ } }
49
+ function SideNavMenuComponent_ng_container_30_mat_icon_4_Template(rf, ctx) { if (rf & 1) {
50
+ i0.ɵɵelementStart(0, "mat-icon", 25);
40
51
  i0.ɵɵtext(1);
41
52
  i0.ɵɵelementEnd();
42
53
  } if (rf & 2) {
43
54
  i0.ɵɵadvance();
44
55
  i0.ɵɵtextInterpolate("keyboard_arrow_down");
45
56
  } }
46
- function SideNavMenuComponent_button_25_ng_container_4_ng_template_4_Template(rf, ctx) { if (rf & 1) {
47
- i0.ɵɵelementStart(0, "mat-icon", 26);
57
+ function SideNavMenuComponent_ng_container_30_ng_template_5_Template(rf, ctx) { if (rf & 1) {
58
+ i0.ɵɵelementStart(0, "mat-icon", 25);
48
59
  i0.ɵɵtext(1);
49
60
  i0.ɵɵelementEnd();
50
61
  } if (rf & 2) {
51
62
  i0.ɵɵadvance();
52
63
  i0.ɵɵtextInterpolate("keyboard_arrow_up");
53
64
  } }
54
- function SideNavMenuComponent_button_25_ng_container_4_Template(rf, ctx) { if (rf & 1) {
65
+ function SideNavMenuComponent_ng_container_30_Template(rf, ctx) { if (rf & 1) {
55
66
  i0.ɵɵelementContainerStart(0);
56
- i0.ɵɵelementStart(1, "span", 24);
67
+ i0.ɵɵelementStart(1, "span", 23);
57
68
  i0.ɵɵtext(2);
69
+ i0.ɵɵpipe(3, "translate");
58
70
  i0.ɵɵelementEnd();
59
- i0.ɵɵtemplate(3, SideNavMenuComponent_button_25_ng_container_4_mat_icon_3_Template, 2, 1, "mat-icon", 25)(4, SideNavMenuComponent_button_25_ng_container_4_ng_template_4_Template, 2, 1, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
71
+ i0.ɵɵtemplate(4, SideNavMenuComponent_ng_container_30_mat_icon_4_Template, 2, 1, "mat-icon", 24)(5, SideNavMenuComponent_ng_container_30_ng_template_5_Template, 2, 1, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
60
72
  i0.ɵɵelementContainerEnd();
61
73
  } if (rf & 2) {
62
- const iconDown_r4 = i0.ɵɵreference(5);
63
- i0.ɵɵnextContext();
64
- const state_r5 = i0.ɵɵreference(1);
74
+ let tmp_5_0;
75
+ const iconDown_r4 = i0.ɵɵreference(6);
65
76
  const ctx_r2 = i0.ɵɵnextContext();
77
+ const state_r5 = i0.ɵɵreference(26);
78
+ i0.ɵɵadvance(2);
79
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 3, (tmp_5_0 = ctx_r2.username) !== null && tmp_5_0 !== undefined ? tmp_5_0 : "MENU.ANONYMOUS"), " ");
66
80
  i0.ɵɵadvance(2);
67
- i0.ɵɵtextInterpolate1(" ", ctx_r2.username, " ");
68
- i0.ɵɵadvance();
69
81
  i0.ɵɵproperty("ngIf", state_r5.menuOpen)("ngIfElse", iconDown_r4);
70
82
  } }
71
- function SideNavMenuComponent_button_25_Template(rf, ctx) { if (rf & 1) {
72
- i0.ɵɵelementStart(0, "button", 21, 2)(2, "div", 22);
73
- i0.ɵɵtext(3);
74
- i0.ɵɵelementEnd();
75
- i0.ɵɵtemplate(4, SideNavMenuComponent_button_25_ng_container_4_Template, 6, 3, "ng-container", 23);
76
- i0.ɵɵelementEnd();
77
- } if (rf & 2) {
78
- const ctx_r2 = i0.ɵɵnextContext();
79
- const menu_r6 = i0.ɵɵreference(27);
80
- i0.ɵɵproperty("matMenuTriggerFor", menu_r6);
81
- i0.ɵɵadvance(3);
82
- i0.ɵɵtextInterpolate1(" ", ctx_r2.userInitials, " ");
83
- i0.ɵɵadvance();
84
- i0.ɵɵproperty("ngIf", !ctx_r2.collapsed);
85
- } }
86
- function SideNavMenuComponent_For_29_Conditional_0_Conditional_0_ng_container_1_Template(rf, ctx) { if (rf & 1) {
83
+ function SideNavMenuComponent_For_34_Conditional_0_Conditional_0_ng_container_1_Template(rf, ctx) { if (rf & 1) {
87
84
  i0.ɵɵelementContainer(0);
88
85
  } }
89
- function SideNavMenuComponent_For_29_Conditional_0_Conditional_0_Template(rf, ctx) { if (rf & 1) {
90
- const _r7 = i0.ɵɵgetCurrentView();
91
- i0.ɵɵelementStart(0, "a", 30);
92
- i0.ɵɵlistener("click", function SideNavMenuComponent_For_29_Conditional_0_Conditional_0_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r7); const item_r8 = i0.ɵɵnextContext(2).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.linkCallback(item_r8.link)); });
93
- i0.ɵɵtemplate(1, SideNavMenuComponent_For_29_Conditional_0_Conditional_0_ng_container_1_Template, 1, 0, "ng-container", 31);
86
+ function SideNavMenuComponent_For_34_Conditional_0_Conditional_0_Template(rf, ctx) { if (rf & 1) {
87
+ const _r6 = i0.ɵɵgetCurrentView();
88
+ i0.ɵɵelementStart(0, "a", 29);
89
+ i0.ɵɵlistener("click", function SideNavMenuComponent_For_34_Conditional_0_Conditional_0_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r6); const item_r7 = i0.ɵɵnextContext(2).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.linkCallback(item_r7.link)); });
90
+ i0.ɵɵtemplate(1, SideNavMenuComponent_For_34_Conditional_0_Conditional_0_ng_container_1_Template, 1, 0, "ng-container", 30);
94
91
  i0.ɵɵelementEnd();
95
92
  } if (rf & 2) {
96
- const item_r8 = i0.ɵɵnextContext(2).$implicit;
93
+ const item_r7 = i0.ɵɵnextContext(2).$implicit;
97
94
  i0.ɵɵnextContext();
98
- const profileMenuItem_r9 = i0.ɵɵreference(31);
99
- i0.ɵɵproperty("href", item_r8.link.href, i0.ɵɵsanitizeUrl);
95
+ const profileMenuItem_r8 = i0.ɵɵreference(36);
96
+ i0.ɵɵproperty("href", item_r7.link.href, i0.ɵɵsanitizeUrl);
100
97
  i0.ɵɵadvance();
101
- i0.ɵɵproperty("ngTemplateOutlet", profileMenuItem_r9)("ngTemplateOutletContext", i0.ɵɵpureFunction2(3, _c0, item_r8.icon, item_r8.label));
98
+ i0.ɵɵproperty("ngTemplateOutlet", profileMenuItem_r8)("ngTemplateOutletContext", i0.ɵɵpureFunction2(3, _c0, item_r7.icon, item_r7.label));
102
99
  } }
103
- function SideNavMenuComponent_For_29_Conditional_0_Conditional_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
100
+ function SideNavMenuComponent_For_34_Conditional_0_Conditional_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
104
101
  i0.ɵɵelementContainer(0);
105
102
  } }
106
- function SideNavMenuComponent_For_29_Conditional_0_Conditional_1_Template(rf, ctx) { if (rf & 1) {
107
- const _r10 = i0.ɵɵgetCurrentView();
108
- i0.ɵɵelementStart(0, "a", 32);
109
- i0.ɵɵlistener("click", function SideNavMenuComponent_For_29_Conditional_0_Conditional_1_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r10); const item_r8 = i0.ɵɵnextContext(2).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.linkCallback(item_r8.link)); });
110
- i0.ɵɵtemplate(1, SideNavMenuComponent_For_29_Conditional_0_Conditional_1_ng_container_1_Template, 1, 0, "ng-container", 31);
103
+ function SideNavMenuComponent_For_34_Conditional_0_Conditional_1_Template(rf, ctx) { if (rf & 1) {
104
+ const _r9 = i0.ɵɵgetCurrentView();
105
+ i0.ɵɵelementStart(0, "a", 31);
106
+ i0.ɵɵlistener("click", function SideNavMenuComponent_For_34_Conditional_0_Conditional_1_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r9); const item_r7 = i0.ɵɵnextContext(2).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.linkCallback(item_r7.link)); });
107
+ i0.ɵɵtemplate(1, SideNavMenuComponent_For_34_Conditional_0_Conditional_1_ng_container_1_Template, 1, 0, "ng-container", 30);
111
108
  i0.ɵɵelementEnd();
112
109
  } if (rf & 2) {
113
- const item_r8 = i0.ɵɵnextContext(2).$implicit;
110
+ const item_r7 = i0.ɵɵnextContext(2).$implicit;
114
111
  i0.ɵɵnextContext();
115
- const profileMenuItem_r9 = i0.ɵɵreference(31);
116
- i0.ɵɵproperty("routerLink", item_r8.link.href);
112
+ const profileMenuItem_r8 = i0.ɵɵreference(36);
113
+ i0.ɵɵproperty("routerLink", item_r7.link.href);
117
114
  i0.ɵɵadvance();
118
- i0.ɵɵproperty("ngTemplateOutlet", profileMenuItem_r9)("ngTemplateOutletContext", i0.ɵɵpureFunction2(3, _c0, item_r8.icon, item_r8.label));
115
+ i0.ɵɵproperty("ngTemplateOutlet", profileMenuItem_r8)("ngTemplateOutletContext", i0.ɵɵpureFunction2(3, _c0, item_r7.icon, item_r7.label));
119
116
  } }
120
- function SideNavMenuComponent_For_29_Conditional_0_Template(rf, ctx) { if (rf & 1) {
121
- i0.ɵɵtemplate(0, SideNavMenuComponent_For_29_Conditional_0_Conditional_0_Template, 2, 6, "a", 28)(1, SideNavMenuComponent_For_29_Conditional_0_Conditional_1_Template, 2, 6, "a", 29);
117
+ function SideNavMenuComponent_For_34_Conditional_0_Template(rf, ctx) { if (rf & 1) {
118
+ i0.ɵɵtemplate(0, SideNavMenuComponent_For_34_Conditional_0_Conditional_0_Template, 2, 6, "a", 27)(1, SideNavMenuComponent_For_34_Conditional_0_Conditional_1_Template, 2, 6, "a", 28);
122
119
  } if (rf & 2) {
123
- const item_r8 = i0.ɵɵnextContext().$implicit;
124
- i0.ɵɵconditional(item_r8.link.isExternal ? 0 : 1);
120
+ const item_r7 = i0.ɵɵnextContext().$implicit;
121
+ i0.ɵɵconditional(item_r7.link.isExternal ? 0 : 1);
125
122
  } }
126
- function SideNavMenuComponent_For_29_Conditional_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
123
+ function SideNavMenuComponent_For_34_Conditional_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
127
124
  i0.ɵɵelementContainer(0);
128
125
  } }
129
- function SideNavMenuComponent_For_29_Conditional_1_Template(rf, ctx) { if (rf & 1) {
130
- const _r11 = i0.ɵɵgetCurrentView();
131
- i0.ɵɵelementStart(0, "button", 33);
132
- i0.ɵɵlistener("click", function SideNavMenuComponent_For_29_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const item_r8 = i0.ɵɵnextContext().$implicit; return i0.ɵɵresetView(item_r8.button == null ? null : item_r8.button.callback()); });
133
- i0.ɵɵtemplate(1, SideNavMenuComponent_For_29_Conditional_1_ng_container_1_Template, 1, 0, "ng-container", 31);
126
+ function SideNavMenuComponent_For_34_Conditional_1_Template(rf, ctx) { if (rf & 1) {
127
+ const _r10 = i0.ɵɵgetCurrentView();
128
+ i0.ɵɵelementStart(0, "button", 32);
129
+ i0.ɵɵlistener("click", function SideNavMenuComponent_For_34_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r10); const item_r7 = i0.ɵɵnextContext().$implicit; return i0.ɵɵresetView(item_r7.button == null ? null : item_r7.button.callback()); });
130
+ i0.ɵɵtemplate(1, SideNavMenuComponent_For_34_Conditional_1_ng_container_1_Template, 1, 0, "ng-container", 30);
134
131
  i0.ɵɵelementEnd();
135
132
  } if (rf & 2) {
136
- const item_r8 = i0.ɵɵnextContext().$implicit;
133
+ const item_r7 = i0.ɵɵnextContext().$implicit;
137
134
  i0.ɵɵnextContext();
138
- const profileMenuItem_r9 = i0.ɵɵreference(31);
135
+ const profileMenuItem_r8 = i0.ɵɵreference(36);
139
136
  i0.ɵɵadvance();
140
- i0.ɵɵproperty("ngTemplateOutlet", profileMenuItem_r9)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c0, item_r8.icon, item_r8.label));
137
+ i0.ɵɵproperty("ngTemplateOutlet", profileMenuItem_r8)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c0, item_r7.icon, item_r7.label));
141
138
  } }
142
- function SideNavMenuComponent_For_29_Template(rf, ctx) { if (rf & 1) {
143
- i0.ɵɵtemplate(0, SideNavMenuComponent_For_29_Conditional_0_Template, 2, 1)(1, SideNavMenuComponent_For_29_Conditional_1_Template, 2, 5, "button", 27);
139
+ function SideNavMenuComponent_For_34_Template(rf, ctx) { if (rf & 1) {
140
+ i0.ɵɵtemplate(0, SideNavMenuComponent_For_34_Conditional_0_Template, 2, 1)(1, SideNavMenuComponent_For_34_Conditional_1_Template, 2, 5, "button", 26);
144
141
  } if (rf & 2) {
145
- const item_r8 = ctx.$implicit;
146
- i0.ɵɵconditional(item_r8.link ? 0 : 1);
142
+ const item_r7 = ctx.$implicit;
143
+ i0.ɵɵconditional(item_r7.link ? 0 : 1);
147
144
  } }
148
- function SideNavMenuComponent_ng_template_30_Conditional_0_Conditional_0_Template(rf, ctx) { if (rf & 1) {
149
- i0.ɵɵelementStart(0, "span", 36);
145
+ function SideNavMenuComponent_ng_template_35_Conditional_0_Conditional_0_Template(rf, ctx) { if (rf & 1) {
146
+ i0.ɵɵelementStart(0, "span", 35);
150
147
  i0.ɵɵtext(1);
151
148
  i0.ɵɵelementEnd();
152
149
  } if (rf & 2) {
153
- const icon_r12 = i0.ɵɵnextContext(2).icon;
154
- i0.ɵɵclassProp("material-icons-outlined", icon_r12 == null ? null : icon_r12.isOutlined);
150
+ const icon_r11 = i0.ɵɵnextContext(2).icon;
151
+ i0.ɵɵclassProp("material-icons-outlined", icon_r11 == null ? null : icon_r11.isOutlined);
155
152
  i0.ɵɵadvance();
156
- i0.ɵɵtextInterpolate1(" ", icon_r12 == null ? null : icon_r12.name, " ");
153
+ i0.ɵɵtextInterpolate1(" ", icon_r11 == null ? null : icon_r11.name, " ");
157
154
  } }
158
- function SideNavMenuComponent_ng_template_30_Conditional_0_Conditional_1_Template(rf, ctx) { if (rf & 1) {
159
- i0.ɵɵelement(0, "mat-icon", 35);
155
+ function SideNavMenuComponent_ng_template_35_Conditional_0_Conditional_1_Template(rf, ctx) { if (rf & 1) {
156
+ i0.ɵɵelement(0, "mat-icon", 34);
160
157
  } if (rf & 2) {
161
- const icon_r12 = i0.ɵɵnextContext(2).icon;
162
- i0.ɵɵproperty("svgIcon", icon_r12 == null ? null : icon_r12.name);
158
+ const icon_r11 = i0.ɵɵnextContext(2).icon;
159
+ i0.ɵɵproperty("svgIcon", icon_r11 == null ? null : icon_r11.name);
163
160
  } }
164
- function SideNavMenuComponent_ng_template_30_Conditional_0_Template(rf, ctx) { if (rf & 1) {
165
- i0.ɵɵtemplate(0, SideNavMenuComponent_ng_template_30_Conditional_0_Conditional_0_Template, 2, 3, "span", 34)(1, SideNavMenuComponent_ng_template_30_Conditional_0_Conditional_1_Template, 1, 1, "mat-icon", 35);
161
+ function SideNavMenuComponent_ng_template_35_Conditional_0_Template(rf, ctx) { if (rf & 1) {
162
+ i0.ɵɵtemplate(0, SideNavMenuComponent_ng_template_35_Conditional_0_Conditional_0_Template, 2, 3, "span", 33)(1, SideNavMenuComponent_ng_template_35_Conditional_0_Conditional_1_Template, 1, 1, "mat-icon", 34);
166
163
  } if (rf & 2) {
167
- const icon_r12 = i0.ɵɵnextContext().icon;
168
- i0.ɵɵconditional(!(icon_r12 == null ? null : icon_r12.isCustom) ? 0 : 1);
164
+ const icon_r11 = i0.ɵɵnextContext().icon;
165
+ i0.ɵɵconditional(!(icon_r11 == null ? null : icon_r11.isCustom) ? 0 : 1);
169
166
  } }
170
- function SideNavMenuComponent_ng_template_30_Template(rf, ctx) { if (rf & 1) {
171
- i0.ɵɵtemplate(0, SideNavMenuComponent_ng_template_30_Conditional_0_Template, 2, 1);
167
+ function SideNavMenuComponent_ng_template_35_Template(rf, ctx) { if (rf & 1) {
168
+ i0.ɵɵtemplate(0, SideNavMenuComponent_ng_template_35_Conditional_0_Template, 2, 1);
172
169
  i0.ɵɵtext(1);
173
170
  i0.ɵɵpipe(2, "translate");
174
171
  } if (rf & 2) {
175
- const icon_r12 = ctx.icon;
176
- const label_r13 = ctx.label;
177
- i0.ɵɵconditional(icon_r12 ? 0 : -1);
172
+ const icon_r11 = ctx.icon;
173
+ const label_r12 = ctx.label;
174
+ i0.ɵɵconditional(icon_r11 ? 0 : -1);
178
175
  i0.ɵɵadvance();
179
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, label_r13), " ");
176
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, label_r12), " ");
180
177
  } }
181
178
  export class SideNavMenuComponent extends NavBaseComponent {
182
179
  #username;
@@ -270,7 +267,7 @@ export class SideNavMenuComponent extends NavBaseComponent {
270
267
  this.userInitials = splittedUsername[0][0] + splittedUsername[1][0];
271
268
  }
272
269
  static { this.ɵfac = function SideNavMenuComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SideNavMenuComponent)(i0.ɵɵdirectiveInject(i1.StrapiLinkService), i0.ɵɵdirectiveInject(i2.DOMService), i0.ɵɵdirectiveInject(i3.MenuItemsService)); }; }
273
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SideNavMenuComponent, selectors: [["lib-side-nav-menu"]], inputs: { username: "username", menuSettings: "menuSettings", productName: "productName" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 32, vars: 31, consts: [["menu", "matMenu"], ["profileMenuItem", ""], ["state", "matMenuTrigger"], ["iconDown", ""], ["fxHide.gt-xs", ""], [1, "mobile-header", 3, "fxHide"], ["fxFlex", "3.125em", "fxLayoutAlign", "start center", 3, "click", "libPlausibleEvent", "href"], ["height", "40", "width", "40", "alt", "logo", 1, "menu-logo", 3, "src"], [1, "menu-product-name"], ["mat-icon-button", "", 1, "toggler", 3, "click", "libPlausibleEvent"], ["fxLayout", "column", 1, "menu-container", 3, "ngClass.lt-sm"], ["fxLayout", "column", "fxFlexFill", "", 1, "content"], ["fxLayout", "row", 1, "menu-container-header", 3, "fxLayoutAlign"], ["fxFlex", "3.125em", "fxLayoutAlign", "start center", 3, "libPlausibleEvent", "href", "click", 4, "ngIf"], ["mat-icon-button", "", 1, "toggler", 3, "click", "libPlausibleEvent", "matTooltip"], ["fxHide.lt-sm", ""], ["fxLayout", "column", 1, "menu-wrapper"], ["role", "navigation", 3, "toggleCollapseEvent", "direction", "isOpen", "active"], [1, "profile"], ["class", "profile-wrapper", 3, "matMenuTriggerFor", 4, "ngIf"], [1, "profile-menu"], [1, "profile-wrapper", 3, "matMenuTriggerFor"], [1, "profile-icon"], [4, "ngIf"], [1, "profile-name"], ["class", "profile-arrow spin", 4, "ngIf", "ngIfElse"], [1, "profile-arrow", "spin"], ["mat-menu-item", "", 1, "profile-option"], ["target", "_blank", 1, "mat-mdc-menu-item", 3, "href"], [1, "mat-mdc-menu-item", 3, "routerLink"], ["target", "_blank", 1, "mat-mdc-menu-item", 3, "click", "href"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "mat-mdc-menu-item", 3, "click", "routerLink"], ["mat-menu-item", "", 1, "profile-option", 3, "click"], [1, "material-icons", "profile-option-icon", 3, "material-icons-outlined"], [1, "profile-option-icon", 3, "svgIcon"], [1, "material-icons", "profile-option-icon"]], template: function SideNavMenuComponent_Template(rf, ctx) { if (rf & 1) {
270
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SideNavMenuComponent, selectors: [["lib-side-nav-menu"]], inputs: { username: "username", menuSettings: "menuSettings", productName: "productName" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 37, vars: 33, consts: [["state", "matMenuTrigger"], ["menu", "matMenu"], ["profileMenuItem", ""], ["iconDown", ""], ["fxHide.gt-xs", ""], [1, "mobile-header", 3, "fxHide"], ["fxFlex", "3.125em", "fxLayoutAlign", "start center", 3, "click", "libPlausibleEvent", "href"], ["height", "40", "width", "40", "alt", "logo", 1, "menu-logo", 3, "src"], [1, "menu-product-name"], ["mat-icon-button", "", 1, "toggler", 3, "click", "libPlausibleEvent"], ["fxLayout", "column", 1, "menu-container", 3, "ngClass.lt-sm"], ["fxLayout", "column", "fxFlexFill", "", 1, "content"], ["fxLayout", "row", 1, "menu-container-header", 3, "fxLayoutAlign"], ["fxFlex", "3.125em", "fxLayoutAlign", "start center", 3, "libPlausibleEvent", "href", "click", 4, "ngIf"], ["mat-icon-button", "", 1, "toggler", 3, "click", "libPlausibleEvent", "matTooltip"], ["fxHide.lt-sm", ""], ["fxLayout", "column", 1, "menu-wrapper"], ["role", "navigation", 3, "toggleCollapseEvent", "direction", "isOpen", "active"], [1, "profile"], [1, "profile-wrapper", 3, "matMenuTriggerFor"], [1, "profile-icon"], [4, "ngIf"], [1, "profile-menu"], [1, "profile-name"], ["class", "profile-arrow spin", 4, "ngIf", "ngIfElse"], [1, "profile-arrow", "spin"], ["mat-menu-item", "", 1, "profile-option"], ["target", "_blank", 1, "mat-mdc-menu-item", 3, "href"], [1, "mat-mdc-menu-item", 3, "routerLink"], ["target", "_blank", 1, "mat-mdc-menu-item", 3, "click", "href"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "mat-mdc-menu-item", 3, "click", "routerLink"], ["mat-menu-item", "", 1, "profile-option", 3, "click"], [1, "material-icons", "profile-option-icon", 3, "material-icons-outlined"], [1, "profile-option-icon", 3, "svgIcon"], [1, "material-icons", "profile-option-icon"]], template: function SideNavMenuComponent_Template(rf, ctx) { if (rf & 1) {
274
271
  const _r1 = i0.ɵɵgetCurrentView();
275
272
  i0.ɵɵelementStart(0, "div", 4)(1, "div", 5)(2, "a", 6);
276
273
  i0.ɵɵpipe(3, "translate");
@@ -300,26 +297,30 @@ export class SideNavMenuComponent extends NavBaseComponent {
300
297
  i0.ɵɵelementStart(22, "div", 16)(23, "menu-columns", 17);
301
298
  i0.ɵɵlistener("toggleCollapseEvent", function SideNavMenuComponent_Template_menu_columns_toggleCollapseEvent_23_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.toggleCollapse()); });
302
299
  i0.ɵɵelementEnd()();
303
- i0.ɵɵelementStart(24, "div", 18);
304
- i0.ɵɵtemplate(25, SideNavMenuComponent_button_25_Template, 5, 3, "button", 19);
305
- i0.ɵɵelementStart(26, "mat-menu", 20, 0);
306
- i0.ɵɵrepeaterCreate(28, SideNavMenuComponent_For_29_Template, 2, 1, null, null, _forTrack0);
300
+ i0.ɵɵelementStart(24, "div", 18)(25, "button", 19, 0)(27, "div", 20);
301
+ i0.ɵɵtemplate(28, SideNavMenuComponent_Conditional_28_Template, 1, 1)(29, SideNavMenuComponent_Conditional_29_Template, 2, 0, "mat-icon");
302
+ i0.ɵɵelementEnd();
303
+ i0.ɵɵtemplate(30, SideNavMenuComponent_ng_container_30_Template, 7, 5, "ng-container", 21);
304
+ i0.ɵɵelementEnd();
305
+ i0.ɵɵelementStart(31, "mat-menu", 22, 1);
306
+ i0.ɵɵrepeaterCreate(33, SideNavMenuComponent_For_34_Template, 2, 1, null, null, _forTrack0);
307
307
  i0.ɵɵelementEnd()();
308
- i0.ɵɵtemplate(30, SideNavMenuComponent_ng_template_30_Template, 3, 4, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
308
+ i0.ɵɵtemplate(35, SideNavMenuComponent_ng_template_35_Template, 3, 4, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
309
309
  i0.ɵɵelementEnd()();
310
310
  } if (rf & 2) {
311
+ const menu_r13 = i0.ɵɵreference(32);
311
312
  i0.ɵɵadvance();
312
313
  i0.ɵɵproperty("fxHide", !ctx.collapsed);
313
314
  i0.ɵɵadvance();
314
315
  i0.ɵɵproperty("libPlausibleEvent", ctx.LOGOCLICK_PLAUSIBLE_EVENT)("href", ctx.baseUrl, i0.ɵɵsanitizeUrl);
315
- i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(3, 23, "MENU.ARIA_LABELS.LOGO"));
316
+ i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(3, 25, "MENU.ARIA_LABELS.LOGO"));
316
317
  i0.ɵɵadvance(2);
317
318
  i0.ɵɵproperty("src", ctx.menuLogoImage, i0.ɵɵsanitizeUrl);
318
319
  i0.ɵɵadvance(2);
319
320
  i0.ɵɵtextInterpolate1(" ", ctx.productName, " ");
320
321
  i0.ɵɵadvance();
321
322
  i0.ɵɵproperty("libPlausibleEvent", ctx.collapsed ? ctx.EXPAND_PLAUSIBLE_EVENT : ctx.COLLAPSE_PLAUSIBLE_EVENT);
322
- i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(8, 25, "ARIA_LABELS.MENU_TOGGLER"));
323
+ i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(8, 27, "ARIA_LABELS.MENU_TOGGLER"));
323
324
  i0.ɵɵadvance(4);
324
325
  i0.ɵɵstyleProp("width", ctx.sideNavWidth);
325
326
  i0.ɵɵclassProp("collapsed", ctx.collapsed);
@@ -329,21 +330,25 @@ export class SideNavMenuComponent extends NavBaseComponent {
329
330
  i0.ɵɵadvance();
330
331
  i0.ɵɵproperty("ngIf", !ctx.collapsed);
331
332
  i0.ɵɵadvance();
332
- i0.ɵɵproperty("libPlausibleEvent", ctx.collapsed ? ctx.EXPAND_PLAUSIBLE_EVENT : ctx.COLLAPSE_PLAUSIBLE_EVENT)("matTooltip", i0.ɵɵpipeBind1(16, 27, ctx.collapsed ? "MENU.EXPAND" : "MENU.COLLAPSE"));
333
- i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(17, 29, "ARIA_LABELS.MENU_TOGGLER"));
333
+ i0.ɵɵproperty("libPlausibleEvent", ctx.collapsed ? ctx.EXPAND_PLAUSIBLE_EVENT : ctx.COLLAPSE_PLAUSIBLE_EVENT)("matTooltip", i0.ɵɵpipeBind1(16, 29, ctx.collapsed ? "MENU.EXPAND" : "MENU.COLLAPSE"));
334
+ i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(17, 31, "ARIA_LABELS.MENU_TOGGLER"));
334
335
  i0.ɵɵadvance(6);
335
336
  i0.ɵɵtextInterpolate(ctx.collapsed ? "keyboard_double_arrow_right" : "keyboard_double_arrow_left");
336
337
  i0.ɵɵadvance(2);
337
338
  i0.ɵɵproperty("direction", ctx.direction)("isOpen", !ctx.collapsed)("active", ctx.active);
338
339
  i0.ɵɵadvance(2);
339
- i0.ɵɵproperty("ngIf", ctx.userInitials);
340
+ i0.ɵɵproperty("matMenuTriggerFor", menu_r13);
341
+ i0.ɵɵadvance(3);
342
+ i0.ɵɵconditional(ctx.userInitials ? 28 : 29);
343
+ i0.ɵɵadvance(2);
344
+ i0.ɵɵproperty("ngIf", !ctx.collapsed);
340
345
  i0.ɵɵadvance(3);
341
346
  i0.ɵɵrepeater(ctx.menuSettings.userOptions);
342
- } }, dependencies: [i4.DefaultLayoutDirective, i4.DefaultLayoutAlignDirective, i4.FlexFillDirective, i4.DefaultFlexDirective, i5.DefaultShowHideDirective, i5.DefaultClassDirective, i6.RouterLink, i7.NgIf, i7.NgTemplateOutlet, i8.MatTooltip, i9.MatIcon, i10.MatIconButton, i11.MatMenu, i11.MatMenuItem, i11.MatMenuTrigger, i2.PlausibleEventDirective, i12.MenuColumnsComponent, i13.TranslatePipe], styles: ["a[_ngcontent-%COMP%]{text-decoration:none}.mobile-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;padding:23px 27px;background-color:#fcfcfc;border:1px solid var(--base-70)}.mobile.menu-container.collapsed[_ngcontent-%COMP%]{display:none!important}.mobile.menu-container[_ngcontent-%COMP%]:not(.collapsed){display:block!important;position:fixed;min-width:100vw;min-height:100dvh;z-index:1000}.mobile[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%]{position:relative}.mobile[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:absolute!important;right:0}.menu-product-name[_ngcontent-%COMP%]{white-space:nowrap;margin-left:12px;font-weight:600;color:var(--primary-accent-darker)}.menu-container[_ngcontent-%COMP%]{max-height:100dvh;white-space:nowrap;height:100%;transition:width .2s ease;min-height:100dvh;overflow:auto;background:var(--base-100);border-right:2px solid var(--base-95)}.menu-container[_ngcontent-%COMP%] .menu-container-header[_ngcontent-%COMP%]{margin:24px 0;max-height:40px}.menu-container.collapsed[_ngcontent-%COMP%] .menu-container-header[_ngcontent-%COMP%]{margin:24px 0 32px!important}.menu-container[_ngcontent-%COMP%] .content[_ngcontent-%COMP%]:not(.collapsed){overflow-x:hidden;padding:0 12px}.menu-container[_ngcontent-%COMP%] .content[_ngcontent-%COMP%]:not(.collapsed) .menu-logo[_ngcontent-%COMP%]{margin-left:16px;max-width:100%}.menu-container[_ngcontent-%COMP%] .divider[_ngcontent-%COMP%]{width:100%}.menu-container[_ngcontent-%COMP%] .profile[_ngcontent-%COMP%]{position:relative;height:100%;margin-top:100px}.menu-container[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%]{background:none;color:var(--base-30);display:flex;align-items:center;justify-content:start;width:100%;position:absolute;bottom:0;margin:32px 16px}.menu-container[_ngcontent-%COMP%] .profile-icon[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;min-width:40px;height:40px;border-radius:100%;color:var(--base-0);background-color:var(--base-70);font-size:16px;font-weight:600}.menu-container[_ngcontent-%COMP%] .profile-name[_ngcontent-%COMP%]{max-width:145px;overflow:hidden;margin-left:12px;text-overflow:ellipsis}.collapsed[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%]{margin:36px 0!important}.mobile[_ngcontent-%COMP%] .profile-name[_ngcontent-%COMP%]{max-width:60vw}.profile-option-icon[_ngcontent-%COMP%]{vertical-align:middle;margin:0 5px 5px 0}[_nghost-%COMP%] .menu-item{display:flex;padding:16px!important;border-radius:4px!important}[_nghost-%COMP%] .child-list .menu-item{padding:8px 46px!important}[_nghost-%COMP%] .collapsed .menu-item{padding:0!important;width:40px;height:40px;border-radius:50%!important}[_nghost-%COMP%] .active-menu-item{background-color:var(--base-95)!important}[_nghost-%COMP%] .menu-item-title{margin-left:12px}tld-menu-icon[_ngcontent-%COMP%]{margin-right:10px}.profile-arrow[_ngcontent-%COMP%]{position:absolute;right:3px;margin-right:20px}.spin[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_spinArrow .3s forwards}[_nghost-%COMP%] button.collapse-btn .mat-mdc-button-persistent-ripple, [_nghost-%COMP%] button.toggler .mat-mdc-button-persistent-ripple{display:none}[_nghost-%COMP%] .mobile .child-list .menu-item{padding:8px 54px!important} .cdk-overlay-container .profile-menu{margin:10px 0!important} .mat-mdc-menu-item .mat-icon{margin-right:5px!important} .collapsed .profile-wrapper{justify-content:center!important} .profile-menu a{font-weight:400!important;display:flex;align-items:center;gap:5px} .profile-menu a:hover{color:var(--mat-menu-item-label-text-color, var(--mat-app-on-surface))!important;text-decoration:inherit}@keyframes _ngcontent-%COMP%_spinArrow{to{transform:rotate(180deg)}}"] }); }
347
+ } }, dependencies: [i4.DefaultLayoutDirective, i4.DefaultLayoutAlignDirective, i4.FlexFillDirective, i4.DefaultFlexDirective, i5.DefaultShowHideDirective, i5.DefaultClassDirective, i6.RouterLink, i7.NgIf, i7.NgTemplateOutlet, i8.MatTooltip, i9.MatIcon, i10.MatIconButton, i11.MatMenu, i11.MatMenuItem, i11.MatMenuTrigger, i2.PlausibleEventDirective, i12.MenuColumnsComponent, i13.TranslatePipe], styles: ["a[_ngcontent-%COMP%]{text-decoration:none}.mobile-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;padding:23px 27px;background-color:#fcfcfc;border:1px solid var(--base-70)}.mobile.menu-container.collapsed[_ngcontent-%COMP%]{display:none!important}.mobile.menu-container[_ngcontent-%COMP%]:not(.collapsed){display:block!important;position:fixed;min-width:100vw;min-height:100dvh;z-index:1000}.mobile[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%]{position:relative}.mobile[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:absolute!important;right:0}.menu-product-name[_ngcontent-%COMP%]{white-space:nowrap;margin-left:12px;font-weight:600;color:var(--base-10)}.menu-container[_ngcontent-%COMP%]{max-height:100dvh;white-space:nowrap;height:100%;transition:width .2s ease;min-height:100dvh;overflow:auto;background:var(--base-100);border-right:2px solid var(--base-95)}.menu-container[_ngcontent-%COMP%] .menu-container-header[_ngcontent-%COMP%]{margin:24px 0;max-height:40px}.menu-container.collapsed[_ngcontent-%COMP%] .menu-container-header[_ngcontent-%COMP%]{margin:24px 0 32px!important}.menu-container[_ngcontent-%COMP%] .content[_ngcontent-%COMP%]:not(.collapsed){overflow-x:hidden;padding:0 12px}.menu-container[_ngcontent-%COMP%] .content[_ngcontent-%COMP%]:not(.collapsed) .menu-logo[_ngcontent-%COMP%]{margin-left:16px;max-width:100%}.menu-container[_ngcontent-%COMP%] .divider[_ngcontent-%COMP%]{width:100%}.menu-container[_ngcontent-%COMP%] .profile[_ngcontent-%COMP%]{position:relative;height:100%;margin-top:100px}.menu-container[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%]{background:none;color:var(--base-30);display:flex;align-items:center;justify-content:start;width:100%;position:absolute;bottom:0;margin:32px 16px}.menu-container[_ngcontent-%COMP%] .profile-icon[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;min-width:40px;height:40px;border-radius:100%;color:var(--base-0);background-color:var(--base-70);font-size:16px;font-weight:600}.menu-container[_ngcontent-%COMP%] .profile-name[_ngcontent-%COMP%]{max-width:145px;overflow:hidden;margin-left:12px;text-overflow:ellipsis}.collapsed[_ngcontent-%COMP%] .profile-wrapper[_ngcontent-%COMP%]{margin:36px 0!important}.mobile[_ngcontent-%COMP%] .profile-name[_ngcontent-%COMP%]{max-width:60vw}.profile-option-icon[_ngcontent-%COMP%]{vertical-align:middle;margin:0 5px 5px 0}[_nghost-%COMP%] .menu-item{display:flex;padding:16px!important;border-radius:4px!important}[_nghost-%COMP%] .child-list .menu-item{padding:8px 46px!important}[_nghost-%COMP%] .collapsed .menu-item{padding:0!important;width:40px;height:40px;border-radius:50%!important}[_nghost-%COMP%] .active-menu-item{background-color:var(--base-95)!important}[_nghost-%COMP%] .menu-item-title{margin-left:12px}tld-menu-icon[_ngcontent-%COMP%]{margin-right:10px}.profile-arrow[_ngcontent-%COMP%]{position:absolute;right:3px;margin-right:20px}.spin[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_spinArrow .3s forwards}[_nghost-%COMP%] button.collapse-btn .mat-mdc-button-persistent-ripple, [_nghost-%COMP%] button.toggler .mat-mdc-button-persistent-ripple{display:none}[_nghost-%COMP%] .mobile .child-list .menu-item{padding:8px 54px!important} .cdk-overlay-container .profile-menu{margin:10px 0!important} .mat-mdc-menu-item .mat-icon{margin-right:5px!important} .collapsed .profile-wrapper{justify-content:center!important} .profile-menu a{font-weight:400!important;display:flex;align-items:center;gap:5px} .profile-menu a:hover{color:var(--mat-menu-item-label-text-color, var(--mat-app-on-surface))!important;text-decoration:inherit}@keyframes _ngcontent-%COMP%_spinArrow{to{transform:rotate(180deg)}}"] }); }
343
348
  }
344
349
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SideNavMenuComponent, [{
345
350
  type: Component,
346
- args: [{ selector: 'lib-side-nav-menu', template: "<div fxHide.gt-xs>\r\n <div [fxHide]=\"!collapsed\" class=\"mobile-header\">\r\n <a [libPlausibleEvent]=\"LOGOCLICK_PLAUSIBLE_EVENT\" fxFlex=\"3.125em\" [href]=\"baseUrl\"\r\n [attr.aria-label]=\"'MENU.ARIA_LABELS.LOGO' | translate\" (click)=\"logoClick($event)\" fxLayoutAlign=\"start center\"\r\n >\r\n <img height=\"40\" width=\"40\" class=\"menu-logo\" [src]=\"menuLogoImage\" alt=\"logo\" />\r\n <span class=\"menu-product-name\">\r\n {{ productName }}\r\n </span>\r\n </a>\r\n\r\n <button\r\n mat-icon-button\r\n class=\"toggler\"\r\n [attr.aria-label]=\"'ARIA_LABELS.MENU_TOGGLER' | translate\"\r\n [libPlausibleEvent]=\"collapsed ? EXPAND_PLAUSIBLE_EVENT : COLLAPSE_PLAUSIBLE_EVENT\"\r\n (click)=\"toggleCollapse()\"\r\n >\r\n <mat-icon>menu</mat-icon>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<div [ngClass.lt-sm]=\"'mobile'\" class=\"menu-container\" [style.width]=\"sideNavWidth\" fxLayout=\"column\" [class.collapsed]=\"collapsed\">\r\n <div class=\"content\" fxLayout=\"column\" fxFlexFill>\r\n <div class=\"menu-container-header\" fxLayout=\"row\" [fxLayoutAlign]=\"collapsed ? 'center center' : 'space-between center'\">\r\n <a *ngIf=\"!collapsed\" [libPlausibleEvent]=\"LOGOCLICK_PLAUSIBLE_EVENT\" fxFlex=\"3.125em\" [href]=\"baseUrl\"\r\n [attr.aria-label]=\"'MENU.ARIA_LABELS.LOGO' | translate\" (click)=\"logoClick($event)\" fxLayoutAlign=\"start center\"\r\n >\r\n <img height=\"40\" width=\"40\" class=\"menu-logo\" [src]=\"menuLogoImage\" alt=\"logo\" />\r\n <span class=\"menu-product-name\">\r\n {{ productName }}\r\n </span>\r\n </a>\r\n\r\n <button\r\n mat-icon-button\r\n class=\"toggler\"\r\n [attr.aria-label]=\"'ARIA_LABELS.MENU_TOGGLER' | translate\"\r\n [libPlausibleEvent]=\"collapsed ? EXPAND_PLAUSIBLE_EVENT : COLLAPSE_PLAUSIBLE_EVENT\"\r\n [matTooltip]=\"(collapsed ? 'MENU.EXPAND' : 'MENU.COLLAPSE') | translate\"\r\n (click)=\"toggleCollapse()\"\r\n >\r\n <mat-icon fxHide.gt-xs>close</mat-icon>\r\n <mat-icon fxHide.lt-sm>{{ collapsed ? 'keyboard_double_arrow_right' : 'keyboard_double_arrow_left' }}</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"menu-wrapper\" fxLayout=\"column\">\r\n <menu-columns (toggleCollapseEvent)=\"toggleCollapse()\" [direction]=\"direction\" role=\"navigation\" [isOpen]=\"!collapsed\"\r\n [active]=\"active\"></menu-columns>\r\n </div>\r\n\r\n <div class=\"profile\">\r\n <button *ngIf=\"userInitials\" #state=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\" class=\"profile-wrapper\">\r\n <div class=\"profile-icon\">\r\n {{userInitials}}\r\n </div>\r\n\r\n <ng-container *ngIf=\"!collapsed\">\r\n <span class=\"profile-name\">\r\n {{ username }}\r\n </span>\r\n\r\n <mat-icon *ngIf=\"state.menuOpen; else iconDown\" class=\"profile-arrow spin\">{{\"keyboard_arrow_down\"}}</mat-icon>\r\n\r\n <ng-template #iconDown>\r\n <mat-icon class=\"profile-arrow spin\">{{\"keyboard_arrow_up\" }}</mat-icon>\r\n </ng-template>\r\n </ng-container>\r\n </button>\r\n\r\n <mat-menu #menu=\"matMenu\" class=\"profile-menu\">\r\n @for (item of menuSettings.userOptions; track item.label) {\r\n @if (item.link) {\r\n @if (item.link.isExternal) {\r\n <a class=\"mat-mdc-menu-item\" [href]=\"item.link.href\" target=\"_blank\" (click)=\"linkCallback(item.link)\">\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </a>\r\n } @else {\r\n <a class=\"mat-mdc-menu-item\" [routerLink]=\"item.link.href\" (click)=\"linkCallback(item.link)\">\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </a>\r\n }\r\n } @else {\r\n <button\r\n mat-menu-item\r\n class=\"profile-option\"\r\n (click)=\"item.button?.callback()\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </button>\r\n }\r\n }\r\n </mat-menu>\r\n </div>\r\n\r\n <ng-template #profileMenuItem let-icon=\"icon\" let-label=\"label\">\r\n @if (icon) {\r\n @if (!icon?.isCustom) {\r\n <span class=\"material-icons profile-option-icon\" [class.material-icons-outlined]=\"icon?.isOutlined\">\r\n {{icon?.name}}\r\n </span>\r\n } @else {\r\n <mat-icon class=\"profile-option-icon\" [svgIcon]=\"icon?.name\"></mat-icon>\r\n }\r\n }\r\n {{ label | translate }}\r\n </ng-template>\r\n</div>\r\n", styles: ["a{text-decoration:none}.mobile-header{display:flex;justify-content:space-between;padding:23px 27px;background-color:#fcfcfc;border:1px solid var(--base-70)}.mobile.menu-container.collapsed{display:none!important}.mobile.menu-container:not(.collapsed){display:block!important;position:fixed;min-width:100vw;min-height:100dvh;z-index:1000}.mobile .profile-wrapper{position:relative}.mobile .profile-wrapper mat-icon{position:absolute!important;right:0}.menu-product-name{white-space:nowrap;margin-left:12px;font-weight:600;color:var(--primary-accent-darker)}.menu-container{max-height:100dvh;white-space:nowrap;height:100%;transition:width .2s ease;min-height:100dvh;overflow:auto;background:var(--base-100);border-right:2px solid var(--base-95)}.menu-container .menu-container-header{margin:24px 0;max-height:40px}.menu-container.collapsed .menu-container-header{margin:24px 0 32px!important}.menu-container .content:not(.collapsed){overflow-x:hidden;padding:0 12px}.menu-container .content:not(.collapsed) .menu-logo{margin-left:16px;max-width:100%}.menu-container .divider{width:100%}.menu-container .profile{position:relative;height:100%;margin-top:100px}.menu-container .profile-wrapper{background:none;color:var(--base-30);display:flex;align-items:center;justify-content:start;width:100%;position:absolute;bottom:0;margin:32px 16px}.menu-container .profile-icon{display:flex;justify-content:center;align-items:center;min-width:40px;height:40px;border-radius:100%;color:var(--base-0);background-color:var(--base-70);font-size:16px;font-weight:600}.menu-container .profile-name{max-width:145px;overflow:hidden;margin-left:12px;text-overflow:ellipsis}.collapsed .profile-wrapper{margin:36px 0!important}.mobile .profile-name{max-width:60vw}.profile-option-icon{vertical-align:middle;margin:0 5px 5px 0}:host ::ng-deep .menu-item{display:flex;padding:16px!important;border-radius:4px!important}:host ::ng-deep .child-list .menu-item{padding:8px 46px!important}:host ::ng-deep .collapsed .menu-item{padding:0!important;width:40px;height:40px;border-radius:50%!important}:host ::ng-deep .active-menu-item{background-color:var(--base-95)!important}:host ::ng-deep .menu-item-title{margin-left:12px}tld-menu-icon{margin-right:10px}.profile-arrow{position:absolute;right:3px;margin-right:20px}.spin{animation:spinArrow .3s forwards}:host::ng-deep button.collapse-btn .mat-mdc-button-persistent-ripple,:host::ng-deep button.toggler .mat-mdc-button-persistent-ripple{display:none}:host ::ng-deep .mobile .child-list .menu-item{padding:8px 54px!important}::ng-deep .cdk-overlay-container .profile-menu{margin:10px 0!important}::ng-deep .mat-mdc-menu-item .mat-icon{margin-right:5px!important}::ng-deep .collapsed .profile-wrapper{justify-content:center!important}::ng-deep .profile-menu a{font-weight:400!important;display:flex;align-items:center;gap:5px}::ng-deep .profile-menu a:hover{color:var(--mat-menu-item-label-text-color, var(--mat-app-on-surface))!important;text-decoration:inherit}@keyframes spinArrow{to{transform:rotate(180deg)}}\n"] }]
351
+ args: [{ selector: 'lib-side-nav-menu', template: "<div fxHide.gt-xs>\r\n <div [fxHide]=\"!collapsed\" class=\"mobile-header\">\r\n <a [libPlausibleEvent]=\"LOGOCLICK_PLAUSIBLE_EVENT\" fxFlex=\"3.125em\" [href]=\"baseUrl\"\r\n [attr.aria-label]=\"'MENU.ARIA_LABELS.LOGO' | translate\" (click)=\"logoClick($event)\" fxLayoutAlign=\"start center\"\r\n >\r\n <img height=\"40\" width=\"40\" class=\"menu-logo\" [src]=\"menuLogoImage\" alt=\"logo\" />\r\n <span class=\"menu-product-name\">\r\n {{ productName }}\r\n </span>\r\n </a>\r\n\r\n <button\r\n mat-icon-button\r\n class=\"toggler\"\r\n [attr.aria-label]=\"'ARIA_LABELS.MENU_TOGGLER' | translate\"\r\n [libPlausibleEvent]=\"collapsed ? EXPAND_PLAUSIBLE_EVENT : COLLAPSE_PLAUSIBLE_EVENT\"\r\n (click)=\"toggleCollapse()\"\r\n >\r\n <mat-icon>menu</mat-icon>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<div [ngClass.lt-sm]=\"'mobile'\" class=\"menu-container\" [style.width]=\"sideNavWidth\" fxLayout=\"column\" [class.collapsed]=\"collapsed\">\r\n <div class=\"content\" fxLayout=\"column\" fxFlexFill>\r\n <div class=\"menu-container-header\" fxLayout=\"row\" [fxLayoutAlign]=\"collapsed ? 'center center' : 'space-between center'\">\r\n <a *ngIf=\"!collapsed\" [libPlausibleEvent]=\"LOGOCLICK_PLAUSIBLE_EVENT\" fxFlex=\"3.125em\" [href]=\"baseUrl\"\r\n [attr.aria-label]=\"'MENU.ARIA_LABELS.LOGO' | translate\" (click)=\"logoClick($event)\" fxLayoutAlign=\"start center\"\r\n >\r\n <img height=\"40\" width=\"40\" class=\"menu-logo\" [src]=\"menuLogoImage\" alt=\"logo\" />\r\n <span class=\"menu-product-name\">\r\n {{ productName }}\r\n </span>\r\n </a>\r\n\r\n <button\r\n mat-icon-button\r\n class=\"toggler\"\r\n [attr.aria-label]=\"'ARIA_LABELS.MENU_TOGGLER' | translate\"\r\n [libPlausibleEvent]=\"collapsed ? EXPAND_PLAUSIBLE_EVENT : COLLAPSE_PLAUSIBLE_EVENT\"\r\n [matTooltip]=\"(collapsed ? 'MENU.EXPAND' : 'MENU.COLLAPSE') | translate\"\r\n (click)=\"toggleCollapse()\"\r\n >\r\n <mat-icon fxHide.gt-xs>close</mat-icon>\r\n <mat-icon fxHide.lt-sm>{{ collapsed ? 'keyboard_double_arrow_right' : 'keyboard_double_arrow_left' }}</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"menu-wrapper\" fxLayout=\"column\">\r\n <menu-columns (toggleCollapseEvent)=\"toggleCollapse()\" [direction]=\"direction\" role=\"navigation\" [isOpen]=\"!collapsed\"\r\n [active]=\"active\"></menu-columns>\r\n </div>\r\n\r\n <div class=\"profile\">\r\n <button #state=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\" class=\"profile-wrapper\">\r\n <div class=\"profile-icon\">\r\n @if (userInitials) {\r\n {{userInitials}}\r\n } @else {\r\n <mat-icon>person</mat-icon>\r\n }\r\n </div>\r\n\r\n <ng-container *ngIf=\"!collapsed\">\r\n <span class=\"profile-name\">\r\n {{ username ?? 'MENU.ANONYMOUS' | translate }}\r\n </span>\r\n\r\n <mat-icon *ngIf=\"state.menuOpen; else iconDown\" class=\"profile-arrow spin\">{{\"keyboard_arrow_down\"}}</mat-icon>\r\n\r\n <ng-template #iconDown>\r\n <mat-icon class=\"profile-arrow spin\">{{\"keyboard_arrow_up\" }}</mat-icon>\r\n </ng-template>\r\n </ng-container>\r\n </button>\r\n\r\n <mat-menu #menu=\"matMenu\" class=\"profile-menu\">\r\n @for (item of menuSettings.userOptions; track item.label) {\r\n @if (item.link) {\r\n @if (item.link.isExternal) {\r\n <a class=\"mat-mdc-menu-item\" [href]=\"item.link.href\" target=\"_blank\" (click)=\"linkCallback(item.link)\">\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </a>\r\n } @else {\r\n <a class=\"mat-mdc-menu-item\" [routerLink]=\"item.link.href\" (click)=\"linkCallback(item.link)\">\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </a>\r\n }\r\n } @else {\r\n <button\r\n mat-menu-item\r\n class=\"profile-option\"\r\n (click)=\"item.button?.callback()\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </button>\r\n }\r\n }\r\n </mat-menu>\r\n </div>\r\n\r\n <ng-template #profileMenuItem let-icon=\"icon\" let-label=\"label\">\r\n @if (icon) {\r\n @if (!icon?.isCustom) {\r\n <span class=\"material-icons profile-option-icon\" [class.material-icons-outlined]=\"icon?.isOutlined\">\r\n {{icon?.name}}\r\n </span>\r\n } @else {\r\n <mat-icon class=\"profile-option-icon\" [svgIcon]=\"icon?.name\"></mat-icon>\r\n }\r\n }\r\n {{ label | translate }}\r\n </ng-template>\r\n</div>\r\n", styles: ["a{text-decoration:none}.mobile-header{display:flex;justify-content:space-between;padding:23px 27px;background-color:#fcfcfc;border:1px solid var(--base-70)}.mobile.menu-container.collapsed{display:none!important}.mobile.menu-container:not(.collapsed){display:block!important;position:fixed;min-width:100vw;min-height:100dvh;z-index:1000}.mobile .profile-wrapper{position:relative}.mobile .profile-wrapper mat-icon{position:absolute!important;right:0}.menu-product-name{white-space:nowrap;margin-left:12px;font-weight:600;color:var(--base-10)}.menu-container{max-height:100dvh;white-space:nowrap;height:100%;transition:width .2s ease;min-height:100dvh;overflow:auto;background:var(--base-100);border-right:2px solid var(--base-95)}.menu-container .menu-container-header{margin:24px 0;max-height:40px}.menu-container.collapsed .menu-container-header{margin:24px 0 32px!important}.menu-container .content:not(.collapsed){overflow-x:hidden;padding:0 12px}.menu-container .content:not(.collapsed) .menu-logo{margin-left:16px;max-width:100%}.menu-container .divider{width:100%}.menu-container .profile{position:relative;height:100%;margin-top:100px}.menu-container .profile-wrapper{background:none;color:var(--base-30);display:flex;align-items:center;justify-content:start;width:100%;position:absolute;bottom:0;margin:32px 16px}.menu-container .profile-icon{display:flex;justify-content:center;align-items:center;min-width:40px;height:40px;border-radius:100%;color:var(--base-0);background-color:var(--base-70);font-size:16px;font-weight:600}.menu-container .profile-name{max-width:145px;overflow:hidden;margin-left:12px;text-overflow:ellipsis}.collapsed .profile-wrapper{margin:36px 0!important}.mobile .profile-name{max-width:60vw}.profile-option-icon{vertical-align:middle;margin:0 5px 5px 0}:host ::ng-deep .menu-item{display:flex;padding:16px!important;border-radius:4px!important}:host ::ng-deep .child-list .menu-item{padding:8px 46px!important}:host ::ng-deep .collapsed .menu-item{padding:0!important;width:40px;height:40px;border-radius:50%!important}:host ::ng-deep .active-menu-item{background-color:var(--base-95)!important}:host ::ng-deep .menu-item-title{margin-left:12px}tld-menu-icon{margin-right:10px}.profile-arrow{position:absolute;right:3px;margin-right:20px}.spin{animation:spinArrow .3s forwards}:host::ng-deep button.collapse-btn .mat-mdc-button-persistent-ripple,:host::ng-deep button.toggler .mat-mdc-button-persistent-ripple{display:none}:host ::ng-deep .mobile .child-list .menu-item{padding:8px 54px!important}::ng-deep .cdk-overlay-container .profile-menu{margin:10px 0!important}::ng-deep .mat-mdc-menu-item .mat-icon{margin-right:5px!important}::ng-deep .collapsed .profile-wrapper{justify-content:center!important}::ng-deep .profile-menu a{font-weight:400!important;display:flex;align-items:center;gap:5px}::ng-deep .profile-menu a:hover{color:var(--mat-menu-item-label-text-color, var(--mat-app-on-surface))!important;text-decoration:inherit}@keyframes spinArrow{to{transform:rotate(180deg)}}\n"] }]
347
352
  }], () => [{ type: i1.StrapiLinkService }, { type: i2.DOMService }, { type: i3.MenuItemsService }], { username: [{
348
353
  type: Input
349
354
  }], menuSettings: [{
@@ -352,4 +357,4 @@ export class SideNavMenuComponent extends NavBaseComponent {
352
357
  type: Input
353
358
  }] }); })();
354
359
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SideNavMenuComponent, { className: "SideNavMenuComponent", filePath: "lib\\components\\side-nav-menu\\side-nav-menu.component.ts", lineNumber: 15 }); })();
355
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXYtbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWVudS9zcmMvbGliL2NvbXBvbmVudHMvc2lkZS1uYXYtbWVudS9zaWRlLW5hdi1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tZW51L3NyYy9saWIvY29tcG9uZW50cy9zaWRlLW5hdi1tZW51L3NpZGUtbmF2LW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBOEIsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVyRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ3VCNUQsNEJBRUM7O0lBRHlELGdMQUFTLHdCQUFpQixLQUFDO0lBRW5GLHlCQUFpRjtJQUNqRiwrQkFBZ0M7SUFDOUIsWUFDRjtJQUNGLEFBREUsaUJBQU8sRUFDTDs7O0lBUG1GLEFBQWpFLG9FQUErQywwQ0FBa0M7O0lBR3ZELGVBQXFCO0lBQXJCLDREQUFxQjtJQUVqRSxlQUNGO0lBREUsbURBQ0Y7OztJQWdDQSxvQ0FBMkU7SUFBQSxZQUF5QjtJQUFBLGlCQUFXOztJQUFwQyxjQUF5QjtJQUF6QiwyQ0FBeUI7OztJQUdsRyxvQ0FBcUM7SUFBQSxZQUF3QjtJQUFBLGlCQUFXOztJQUFuQyxjQUF3QjtJQUF4Qix5Q0FBd0I7OztJQVJqRSw2QkFBaUM7SUFDL0IsZ0NBQTJCO0lBQ3pCLFlBQ0Y7SUFBQSxpQkFBTztJQUlQLEFBRkEseUdBQTJFLGtJQUVwRDs7Ozs7OztJQUxyQixlQUNGO0lBREUsZ0RBQ0Y7SUFFVyxjQUFzQjtJQUFBLEFBQXRCLHdDQUFzQix5QkFBYTs7O0lBVGhE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QUlaLGVBQWtCO1lBQWxCLHVDQUFrQjtZQW1CekIsZUEwQkM7WUExQkQsMkNBMEJDOzs7aUZEckZNLG9CQUFvQjtjQUxoQyxTQUFTOzJCQUNFLG1CQUFtQjswR0FPaEIsUUFBUTtrQkFBcEIsS0FBSztZQU1HLFlBQVk7a0JBQXBCLEtBQUs7WUFRRyxXQUFXO2tCQUFuQixLQUFLOztrRkFqQkssb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRE9NU2VydmljZSwgUGxhdXNpYmxlRXZlbnQsIFJlc29sdXRpb25IZWxwZXIgfSBmcm9tICdAdGlsZGUtbmxwL25neC1jb21tb24nO1xyXG5pbXBvcnQgeyBTdHJhcGlMaW5rU2VydmljZSB9IGZyb20gJ0B0aWxkZS1ubHAvbmd4LXN0cmFwaSc7XHJcbmltcG9ydCB7IE5hdkJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9uYXYtYmFzZS9uYXYtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTaWRlTmF2U2V0dGluZ3MgfSBmcm9tICcuL21vZGVscy9zaWRlLW5hdi1zZXR0aW5ncy5tb2RlbCc7XHJcbmltcG9ydCB7IE1lbnVJdGVtc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tZW51LWl0ZW1zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyTWVudU9wdGlvbkxpbmsgfSBmcm9tICcuL21vZGVscy91c2VyLW1lbnUtb3B0aW9uLWxpbmsubW9kZWwnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXNpZGUtbmF2LW1lbnUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zaWRlLW5hdi1tZW51LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zaWRlLW5hdi1tZW51LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFNpZGVOYXZNZW51Q29tcG9uZW50IGV4dGVuZHMgTmF2QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAjdXNlcm5hbWUhOiBzdHJpbmc7XHJcbiAgZ2V0IHVzZXJuYW1lKCkgeyByZXR1cm4gdGhpcy4jdXNlcm5hbWU7IH1cclxuICBASW5wdXQoKSBzZXQgdXNlcm5hbWUodmFsdWUpIHtcclxuICAgIC8vIGlmIHVzZXJuYW1lIGlzIHBhc3NlZCB3aGl0aCB3aGl0ZXNwYWNlIGluIGJlZ2dpbmluaW5nLCBpdCBicmVha3MgVUksIHNvIHRyaW0gaXQgZm9yIHNhZmV0eS5cclxuICAgIHRoaXMuI3VzZXJuYW1lID0gdmFsdWUudHJpbSgpO1xyXG4gICAgdGhpcy5zZXRVc2VySW5pdGlhbHMoKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIG1lbnVTZXR0aW5nczogU2lkZU5hdlNldHRpbmdzID0ge1xyXG4gICAgZXhwYW5kZWRXaWR0aDogJzI0MXB4JyxcclxuICAgIGNvbGxhcHNlZFdpZHRoOiAnNTZweCcsXHJcbiAgICBtZW51TG9nbzogJycsXHJcbiAgICBtZW51TG9nb0NvbGxhcHNlZDogJycsXHJcbiAgICBkaXNhYmxlU3RyYXBpOiBmYWxzZVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgcHJvZHVjdE5hbWUhOiBzdHJpbmc7XHJcblxyXG4gIHVzZXJJbml0aWFscyE6IHN0cmluZztcclxuICBjb2xsYXBzZWQgPSBmYWxzZTtcclxuXHJcbiAgcmVhZG9ubHkgQ09MTEFQU0VEX0xPQ0FMX1NUT1JBR0VfS0VZID0gXCJUTERfTUVOVV9TSURFX05BVl9DT0xMQVBTRURcIjtcclxuXHJcbiAgLy8jcmVnaW9uIFBsYXVzaWJsZSBldmVudCB2YXJpYWJsZXMgZm9yIGNvbGxhcHNlIGJ1dHRvblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgQ09MTEFQU0VfUExBVVNJQkxFX0VWRU5UX0lEID0gXCJjb2xsYXBzZU1lbnVcIjtcclxuICBwcml2YXRlIHJlYWRvbmx5IENPTExBUFNFX1BMQVVTSUJMRV9BQ1RJT05fS0VZID0gXCJhY3Rpb25cIjtcclxuICBwcml2YXRlIHJlYWRvbmx5IExPR09DTElDS19QTEFVU0lCTEVfQUNUSU9OX0lEID0gXCJ0aWxkZV9sb2dvX2NsaWNrXCJcclxuXHJcbiAgcmVhZG9ubHkgTE9HT0NMSUNLX1BMQVVTSUJMRV9FVkVOVDogUGxhdXNpYmxlRXZlbnQgPSB7XHJcbiAgICBldmVudElkOiB0aGlzLkxPR09DTElDS19QTEFVU0lCTEVfQUNUSU9OX0lELFxyXG4gICAgcHJvcGVydGllczogW11cclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IEVYUEFORF9QTEFVU0lCTEVfRVZFTlQ6IFBsYXVzaWJsZUV2ZW50ID0ge1xyXG4gICAgZXZlbnRJZDogdGhpcy5DT0xMQVBTRV9QTEFVU0lCTEVfRVZFTlRfSUQsXHJcbiAgICBwcm9wZXJ0aWVzOiBbeyBrZXk6IHRoaXMuQ09MTEFQU0VfUExBVVNJQkxFX0FDVElPTl9LRVksIHZhbHVlOiBcImV4cGFuZFwiIH1dXHJcbiAgfVxyXG5cclxuICByZWFkb25seSBDT0xMQVBTRV9QTEFVU0lCTEVfRVZFTlQ6IFBsYXVzaWJsZUV2ZW50ID0ge1xyXG4gICAgZXZlbnRJZDogdGhpcy5DT0xMQVBTRV9QTEFVU0lCTEVfRVZFTlRfSUQsXHJcbiAgICBwcm9wZXJ0aWVzOiBbeyBrZXk6IHRoaXMuQ09MTEFQU0VfUExBVVNJQkxFX0FDVElPTl9LRVksIHZhbHVlOiBcImNvbGxhcHNlXCIgfV1cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIHJlYWRvbmx5IGJhc2VVcmw6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuXHJcbiAgZ2V0IG1lbnVMb2dvSW1hZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNvbGxhcHNlZFxyXG4gICAgICA/IHRoaXMubWVudVNldHRpbmdzLm1lbnVMb2dvQ29sbGFwc2VkID8/IHRoaXMubWVudVNldHRpbmdzLm1lbnVMb2dvXHJcbiAgICAgIDogdGhpcy5tZW51U2V0dGluZ3MubWVudUxvZ287XHJcbiAgfVxyXG5cclxuICBnZXQgc2lkZU5hdldpZHRoKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5jb2xsYXBzZWQgPyB0aGlzLm1lbnVTZXR0aW5ncy5jb2xsYXBzZWRXaWR0aCA6IHRoaXMubWVudVNldHRpbmdzLmV4cGFuZGVkV2lkdGg7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBzdHJhcGlMaW5rU2VydmljZTogU3RyYXBpTGlua1NlcnZpY2UsXHJcbiAgICByZWFkb25seSBkb21TZXJ2aWNlOiBET01TZXJ2aWNlLFxyXG4gICAgcmVhZG9ubHkgbWVudUl0ZW1zOiBNZW51SXRlbXNTZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgc3VwZXIobWVudUl0ZW1zKTtcclxuICAgIHRoaXMuYmFzZVVybCA9IG1lbnVJdGVtcy5tZW51U2hhcmVkQ29uZmlnLmJhc2VVcmwgfHwgJyc7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB0aGlzLmdldENvbGFwc2VkRnJvbUxvY2FsU3RvcmFnZSgpO1xyXG4gICAgdGhpcy5zZXRVc2VySW5pdGlhbHMoKTtcclxuICB9XHJcblxyXG4gIGxvZ29DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdHJhcGlMaW5rU2VydmljZS5zdHJhcGlMaW5rQ2xpY2soZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQ29sbGFwc2UoKSB7XHJcbiAgICB0aGlzLmNvbGxhcHNlZCA9ICF0aGlzLmNvbGxhcHNlZDtcclxuICAgIHRoaXMuc2V0Q29sYXBzZWRGcm9tTG9jYWxTdG9yYWdlKCk7XHJcbiAgfVxyXG5cclxuICBsaW5rQ2FsbGJhY2sobGluazogVXNlck1lbnVPcHRpb25MaW5rKSB7XHJcbiAgICBpZiAobGluay5jYWxsYmFjaykge1xyXG4gICAgICBsaW5rLmNhbGxiYWNrKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENvbGFwc2VkRnJvbUxvY2FsU3RvcmFnZSgpIHtcclxuICAgIGlmICghdGhpcy5kb21TZXJ2aWNlLmxvY2FsU3RvcmFnZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jb2xsYXBzZWQgPSAodGhpcy5kb21TZXJ2aWNlLmxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuQ09MTEFQU0VEX0xPQ0FMX1NUT1JBR0VfS0VZKSA9PSAndHJ1ZScgfHwgUmVzb2x1dGlvbkhlbHBlci5pc01vYmlsZVJlcygpKSA/IHRydWUgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Q29sYXBzZWRGcm9tTG9jYWxTdG9yYWdlKCkge1xyXG4gICAgaWYgKCF0aGlzLmRvbVNlcnZpY2UubG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuZG9tU2VydmljZS5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLkNPTExBUFNFRF9MT0NBTF9TVE9SQUdFX0tFWSwgdGhpcy5jb2xsYXBzZWQudG9TdHJpbmcoKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFVzZXJJbml0aWFscygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy51c2VybmFtZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZGlzcGxheWluZyBmaXJzdCBsZXR0ZXJzIG9mIG5hbWUgYW5kIHN1cm5hbWVcclxuICAgIGNvbnN0IHNwbGl0dGVkVXNlcm5hbWUgPSB0aGlzLnVzZXJuYW1lLnNwbGl0KCcgJyk7XHJcbiAgICBpZiAoc3BsaXR0ZWRVc2VybmFtZS5sZW5ndGggPT09IDEpIHtcclxuICAgICAgLy8gSWYgdGhlcmUncyBvbmx5IG9uZSB3b3JkLCB1c2UgdGhlIGZpcnN0IGxldHRlclxyXG4gICAgICB0aGlzLnVzZXJJbml0aWFscyA9IHNwbGl0dGVkVXNlcm5hbWVbMF1bMF07XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vIElmIHRoZXJlIGFyZSBtb3JlIHRoYW4gb25lIHdvcmQsIHVzZSB0aGUgZmlyc3QgbGV0dGVyIG9mIHRoZSBmaXJzdCB0d28gbmFtZXNcclxuICAgIHRoaXMudXNlckluaXRpYWxzID0gc3BsaXR0ZWRVc2VybmFtZVswXVswXSArIHNwbGl0dGVkVXNlcm5hbWVbMV1bMF07XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgZnhIaWRlLmd0LXhzPlxyXG4gIDxkaXYgW2Z4SGlkZV09XCIhY29sbGFwc2VkXCIgY2xhc3M9XCJtb2JpbGUtaGVhZGVyXCI+XHJcbiAgICA8YSBbbGliUGxhdXNpYmxlRXZlbnRdPVwiTE9HT0NMSUNLX1BMQVVTSUJMRV9FVkVOVFwiIGZ4RmxleD1cIjMuMTI1ZW1cIiBbaHJlZl09XCJiYXNlVXJsXCJcclxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInTUVOVS5BUklBX0xBQkVMUy5MT0dPJyB8IHRyYW5zbGF0ZVwiIChjbGljayk9XCJsb2dvQ2xpY2soJGV2ZW50KVwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIlxyXG4gICAgPlxyXG4gICAgICA8aW1nIGhlaWdodD1cIjQwXCIgd2lkdGg9XCI0MFwiIGNsYXNzPVwibWVudS1sb2dvXCIgW3NyY109XCJtZW51TG9nb0ltYWdlXCIgYWx0PVwibG9nb1wiIC8+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1wcm9kdWN0LW5hbWVcIj5cclxuICAgICAgICB7eyBwcm9kdWN0TmFtZSB9fVxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2E+XHJcblxyXG4gICAgPGJ1dHRvblxyXG4gICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgY2xhc3M9XCJ0b2dnbGVyXCJcclxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQVJJQV9MQUJFTFMuTUVOVV9UT0dHTEVSJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgIFtsaWJQbGF1c2libGVFdmVudF09XCJjb2xsYXBzZWQgPyBFWFBBTkRfUExBVVNJQkxFX0VWRU5UIDogQ09MTEFQU0VfUExBVVNJQkxFX0VWRU5UXCJcclxuICAgICAgKGNsaWNrKT1cInRvZ2dsZUNvbGxhcHNlKClcIlxyXG4gICAgPlxyXG4gICAgICA8bWF0LWljb24+bWVudTwvbWF0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IFtuZ0NsYXNzLmx0LXNtXT1cIidtb2JpbGUnXCIgY2xhc3M9XCJtZW51LWNvbnRhaW5lclwiIFtzdHlsZS53aWR0aF09XCJzaWRlTmF2V2lkdGhcIiBmeExheW91dD1cImNvbHVtblwiIFtjbGFzcy5jb2xsYXBzZWRdPVwiY29sbGFwc2VkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIiBmeExheW91dD1cImNvbHVtblwiIGZ4RmxleEZpbGw+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWVudS1jb250YWluZXItaGVhZGVyXCIgZnhMYXlvdXQ9XCJyb3dcIiBbZnhMYXlvdXRBbGlnbl09XCJjb2xsYXBzZWQgPyAnY2VudGVyIGNlbnRlcicgOiAnc3BhY2UtYmV0d2VlbiBjZW50ZXInXCI+XHJcbiAgICAgIDxhICpuZ0lmPVwiIWNvbGxhcHNlZFwiIFtsaWJQbGF1c2libGVFdmVudF09XCJMT0dPQ0xJQ0tfUExBVVNJQkxFX0VWRU5UXCIgZnhGbGV4PVwiMy4xMjVlbVwiIFtocmVmXT1cImJhc2VVcmxcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01FTlUuQVJJQV9MQUJFTFMuTE9HTycgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwibG9nb0NsaWNrKCRldmVudClcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpbWcgaGVpZ2h0PVwiNDBcIiB3aWR0aD1cIjQwXCIgY2xhc3M9XCJtZW51LWxvZ29cIiBbc3JjXT1cIm1lbnVMb2dvSW1hZ2VcIiBhbHQ9XCJsb2dvXCIgLz5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtcHJvZHVjdC1uYW1lXCI+XHJcbiAgICAgICAgICB7eyBwcm9kdWN0TmFtZSB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9hPlxyXG5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwidG9nZ2xlclwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQVJJQV9MQUJFTFMuTUVOVV9UT0dHTEVSJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgW2xpYlBsYXVzaWJsZUV2ZW50XT1cImNvbGxhcHNlZCA/IEVYUEFORF9QTEFVU0lCTEVfRVZFTlQgOiBDT0xMQVBTRV9QTEFVU0lCTEVfRVZFTlRcIlxyXG4gICAgICAgIFttYXRUb29sdGlwXT1cIihjb2xsYXBzZWQgPyAnTUVOVS5FWFBBTkQnIDogJ01FTlUuQ09MTEFQU0UnKSB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNvbGxhcHNlKClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG1hdC1pY29uIGZ4SGlkZS5ndC14cz5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgPG1hdC1pY29uIGZ4SGlkZS5sdC1zbT57eyBjb2xsYXBzZWQgPyAna2V5Ym9hcmRfZG91YmxlX2Fycm93X3JpZ2h0JyA6ICdrZXlib2FyZF9kb3VibGVfYXJyb3dfbGVmdCcgfX08L21hdC1pY29uPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJtZW51LXdyYXBwZXJcIiBmeExheW91dD1cImNvbHVtblwiPlxyXG4gICAgICA8bWVudS1jb2x1bW5zICh0b2dnbGVDb2xsYXBzZUV2ZW50KT1cInRvZ2dsZUNvbGxhcHNlKClcIiBbZGlyZWN0aW9uXT1cImRpcmVjdGlvblwiIHJvbGU9XCJuYXZpZ2F0aW9uXCIgW2lzT3Blbl09XCIhY29sbGFwc2VkXCJcclxuICAgICAgICBbYWN0aXZlXT1cImFjdGl2ZVwiPjwvbWVudS1jb2x1bW5zPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJwcm9maWxlXCI+XHJcbiAgICA8YnV0dG9uICpuZ0lmPVwidXNlckluaXRpYWxzXCIgI3N0YXRlPVwibWF0TWVudVRyaWdnZXJcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIGNsYXNzPVwicHJvZmlsZS13cmFwcGVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlLWljb25cIj5cclxuICAgICAgICB7e3VzZXJJbml0aWFsc319XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2xsYXBzZWRcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInByb2ZpbGUtbmFtZVwiPlxyXG4gICAgICAgICAge3sgdXNlcm5hbWUgfX1cclxuICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInN0YXRlLm1lbnVPcGVuOyBlbHNlIGljb25Eb3duXCIgY2xhc3M9XCJwcm9maWxlLWFycm93IHNwaW5cIj57e1wia2V5Ym9hcmRfYXJyb3dfZG93blwifX08L21hdC1pY29uPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI2ljb25Eb3duPlxyXG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwicHJvZmlsZS1hcnJvdyBzcGluXCI+e3tcImtleWJvYXJkX2Fycm93X3VwXCIgfX08L21hdC1pY29uPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiIGNsYXNzPVwicHJvZmlsZS1tZW51XCI+XHJcbiAgICAgIEBmb3IgKGl0ZW0gb2YgbWVudVNldHRpbmdzLnVzZXJPcHRpb25zOyB0cmFjayBpdGVtLmxhYmVsKSB7XHJcbiAgICAgICAgQGlmIChpdGVtLmxpbmspIHtcclxuICAgICAgICAgIEBpZiAoaXRlbS5saW5rLmlzRXh0ZXJuYWwpIHtcclxuICAgICAgICAgICAgPGEgY2xhc3M9XCJtYXQtbWRjLW1lbnUtaXRlbVwiIFtocmVmXT1cIml0ZW0ubGluay5ocmVmXCIgdGFyZ2V0PVwiX2JsYW5rXCIgKGNsaWNrKT1cImxpbmtDYWxsYmFjayhpdGVtLmxpbmspXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcm9maWxlTWVudUl0ZW07IGNvbnRleHQ6IHsgaWNvbjogaXRlbS5pY29uLCBsYWJlbDogaXRlbS5sYWJlbCB9XCI+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICA8YSBjbGFzcz1cIm1hdC1tZGMtbWVudS1pdGVtXCIgW3JvdXRlckxpbmtdPVwiaXRlbS5saW5rLmhyZWZcIiAoY2xpY2spPVwibGlua0NhbGxiYWNrKGl0ZW0ubGluaylcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInByb2ZpbGVNZW51SXRlbTsgY29udGV4dDogeyBpY29uOiBpdGVtLmljb24sIGxhYmVsOiBpdGVtLmxhYmVsIH1cIj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBtYXQtbWVudS1pdGVtXHJcbiAgICAgICAgICAgIGNsYXNzPVwicHJvZmlsZS1vcHRpb25cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiaXRlbS5idXR0b24/LmNhbGxiYWNrKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcm9maWxlTWVudUl0ZW07IGNvbnRleHQ6IHsgaWNvbjogaXRlbS5pY29uLCBsYWJlbDogaXRlbS5sYWJlbCB9XCI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIDwvbWF0LW1lbnU+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjcHJvZmlsZU1lbnVJdGVtIGxldC1pY29uPVwiaWNvblwiIGxldC1sYWJlbD1cImxhYmVsXCI+XHJcbiAgICBAaWYgKGljb24pIHtcclxuICAgICAgQGlmICghaWNvbj8uaXNDdXN0b20pIHtcclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zIHByb2ZpbGUtb3B0aW9uLWljb25cIiBbY2xhc3MubWF0ZXJpYWwtaWNvbnMtb3V0bGluZWRdPVwiaWNvbj8uaXNPdXRsaW5lZFwiPlxyXG4gICAgICAgICAge3tpY29uPy5uYW1lfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInByb2ZpbGUtb3B0aW9uLWljb25cIiBbc3ZnSWNvbl09XCJpY29uPy5uYW1lXCI+PC9tYXQtaWNvbj5cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAge3sgbGFiZWwgfCB0cmFuc2xhdGUgfX1cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L2Rpdj5cclxuIl19
360
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXYtbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWVudS9zcmMvbGliL2NvbXBvbmVudHMvc2lkZS1uYXYtbWVudS9zaWRlLW5hdi1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tZW51L3NyYy9saWIvY29tcG9uZW50cy9zaWRlLW5hdi1tZW51L3NpZGUtbmF2LW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBOEIsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVyRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ3VCNUQsNEJBRUM7O0lBRHlELGdMQUFTLHdCQUFpQixLQUFDO0lBRW5GLHlCQUFpRjtJQUNqRiwrQkFBZ0M7SUFDOUIsWUFDRjtJQUNGLEFBREUsaUJBQU8sRUFDTDs7O0lBUG1GLEFBQWpFLG9FQUErQywwQ0FBa0M7O0lBR3ZELGVBQXFCO0lBQXJCLDREQUFxQjtJQUVqRSxlQUNGO0lBREUsbURBQ0Y7OztJQXlCRSxZQUNGOzs7SUFERSxvREFDRjs7O0lBQ0UsZ0NBQVU7SUFBQSxzQkFBTTtJQUFBLGlCQUFXOzs7SUFTN0Isb0NBQTJFO0lBQUEsWUFBeUI7SUFBQSxpQkFBVzs7SUFBcEMsY0FBeUI7SUFBekIsMkNBQXlCOzs7SUFHbEcsb0NBQXFDO0lBQUEsWUFBd0I7SUFBQSxpQkFBVzs7SUFBbkMsY0FBd0I7SUFBeEIseUNBQXdCOzs7SUFSakUsNkJBQWlDO0lBQy9CLGdDQUEyQjtJQUN6QixZQUNGOztJQUFBLGlCQUFPO0lBSVAsQUFGQSxnR0FBMkUseUhBRXBEOzs7Ozs7O0lB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QTBCO1lBQTFCLDRDQUEwQjtZQUV0RCxlQUlDO1lBSkQsNENBSUM7WUFHWSxlQUFnQjtZQUFoQixxQ0FBZ0I7WUFjL0IsZUEwQkM7WUExQkQsMkNBMEJDOzs7aUZEekZNLG9CQUFvQjtjQUxoQyxTQUFTOzJCQUNFLG1CQUFtQjswR0FPaEIsUUFBUTtrQkFBcEIsS0FBSztZQU1HLFlBQVk7a0JBQXBCLEtBQUs7WUFRRyxXQUFXO2tCQUFuQixLQUFLOztrRkFqQkssb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRE9NU2VydmljZSwgUGxhdXNpYmxlRXZlbnQsIFJlc29sdXRpb25IZWxwZXIgfSBmcm9tICdAdGlsZGUtbmxwL25neC1jb21tb24nO1xyXG5pbXBvcnQgeyBTdHJhcGlMaW5rU2VydmljZSB9IGZyb20gJ0B0aWxkZS1ubHAvbmd4LXN0cmFwaSc7XHJcbmltcG9ydCB7IE5hdkJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9uYXYtYmFzZS9uYXYtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTaWRlTmF2U2V0dGluZ3MgfSBmcm9tICcuL21vZGVscy9zaWRlLW5hdi1zZXR0aW5ncy5tb2RlbCc7XHJcbmltcG9ydCB7IE1lbnVJdGVtc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tZW51LWl0ZW1zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyTWVudU9wdGlvbkxpbmsgfSBmcm9tICcuL21vZGVscy91c2VyLW1lbnUtb3B0aW9uLWxpbmsubW9kZWwnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXNpZGUtbmF2LW1lbnUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zaWRlLW5hdi1tZW51LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zaWRlLW5hdi1tZW51LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFNpZGVOYXZNZW51Q29tcG9uZW50IGV4dGVuZHMgTmF2QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAjdXNlcm5hbWUhOiBzdHJpbmc7XHJcbiAgZ2V0IHVzZXJuYW1lKCkgeyByZXR1cm4gdGhpcy4jdXNlcm5hbWU7IH1cclxuICBASW5wdXQoKSBzZXQgdXNlcm5hbWUodmFsdWUpIHtcclxuICAgIC8vIGlmIHVzZXJuYW1lIGlzIHBhc3NlZCB3aGl0aCB3aGl0ZXNwYWNlIGluIGJlZ2dpbmluaW5nLCBpdCBicmVha3MgVUksIHNvIHRyaW0gaXQgZm9yIHNhZmV0eS5cclxuICAgIHRoaXMuI3VzZXJuYW1lID0gdmFsdWUudHJpbSgpO1xyXG4gICAgdGhpcy5zZXRVc2VySW5pdGlhbHMoKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIG1lbnVTZXR0aW5nczogU2lkZU5hdlNldHRpbmdzID0ge1xyXG4gICAgZXhwYW5kZWRXaWR0aDogJzI0MXB4JyxcclxuICAgIGNvbGxhcHNlZFdpZHRoOiAnNTZweCcsXHJcbiAgICBtZW51TG9nbzogJycsXHJcbiAgICBtZW51TG9nb0NvbGxhcHNlZDogJycsXHJcbiAgICBkaXNhYmxlU3RyYXBpOiBmYWxzZVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgcHJvZHVjdE5hbWUhOiBzdHJpbmc7XHJcblxyXG4gIHVzZXJJbml0aWFscyE6IHN0cmluZztcclxuICBjb2xsYXBzZWQgPSBmYWxzZTtcclxuXHJcbiAgcmVhZG9ubHkgQ09MTEFQU0VEX0xPQ0FMX1NUT1JBR0VfS0VZID0gXCJUTERfTUVOVV9TSURFX05BVl9DT0xMQVBTRURcIjtcclxuXHJcbiAgLy8jcmVnaW9uIFBsYXVzaWJsZSBldmVudCB2YXJpYWJsZXMgZm9yIGNvbGxhcHNlIGJ1dHRvblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgQ09MTEFQU0VfUExBVVNJQkxFX0VWRU5UX0lEID0gXCJjb2xsYXBzZU1lbnVcIjtcclxuICBwcml2YXRlIHJlYWRvbmx5IENPTExBUFNFX1BMQVVTSUJMRV9BQ1RJT05fS0VZID0gXCJhY3Rpb25cIjtcclxuICBwcml2YXRlIHJlYWRvbmx5IExPR09DTElDS19QTEFVU0lCTEVfQUNUSU9OX0lEID0gXCJ0aWxkZV9sb2dvX2NsaWNrXCJcclxuXHJcbiAgcmVhZG9ubHkgTE9HT0NMSUNLX1BMQVVTSUJMRV9FVkVOVDogUGxhdXNpYmxlRXZlbnQgPSB7XHJcbiAgICBldmVudElkOiB0aGlzLkxPR09DTElDS19QTEFVU0lCTEVfQUNUSU9OX0lELFxyXG4gICAgcHJvcGVydGllczogW11cclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IEVYUEFORF9QTEFVU0lCTEVfRVZFTlQ6IFBsYXVzaWJsZUV2ZW50ID0ge1xyXG4gICAgZXZlbnRJZDogdGhpcy5DT0xMQVBTRV9QTEFVU0lCTEVfRVZFTlRfSUQsXHJcbiAgICBwcm9wZXJ0aWVzOiBbeyBrZXk6IHRoaXMuQ09MTEFQU0VfUExBVVNJQkxFX0FDVElPTl9LRVksIHZhbHVlOiBcImV4cGFuZFwiIH1dXHJcbiAgfVxyXG5cclxuICByZWFkb25seSBDT0xMQVBTRV9QTEFVU0lCTEVfRVZFTlQ6IFBsYXVzaWJsZUV2ZW50ID0ge1xyXG4gICAgZXZlbnRJZDogdGhpcy5DT0xMQVBTRV9QTEFVU0lCTEVfRVZFTlRfSUQsXHJcbiAgICBwcm9wZXJ0aWVzOiBbeyBrZXk6IHRoaXMuQ09MTEFQU0VfUExBVVNJQkxFX0FDVElPTl9LRVksIHZhbHVlOiBcImNvbGxhcHNlXCIgfV1cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIHJlYWRvbmx5IGJhc2VVcmw6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuXHJcbiAgZ2V0IG1lbnVMb2dvSW1hZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNvbGxhcHNlZFxyXG4gICAgICA/IHRoaXMubWVudVNldHRpbmdzLm1lbnVMb2dvQ29sbGFwc2VkID8/IHRoaXMubWVudVNldHRpbmdzLm1lbnVMb2dvXHJcbiAgICAgIDogdGhpcy5tZW51U2V0dGluZ3MubWVudUxvZ287XHJcbiAgfVxyXG5cclxuICBnZXQgc2lkZU5hdldpZHRoKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5jb2xsYXBzZWQgPyB0aGlzLm1lbnVTZXR0aW5ncy5jb2xsYXBzZWRXaWR0aCA6IHRoaXMubWVudVNldHRpbmdzLmV4cGFuZGVkV2lkdGg7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBzdHJhcGlMaW5rU2VydmljZTogU3RyYXBpTGlua1NlcnZpY2UsXHJcbiAgICByZWFkb25seSBkb21TZXJ2aWNlOiBET01TZXJ2aWNlLFxyXG4gICAgcmVhZG9ubHkgbWVudUl0ZW1zOiBNZW51SXRlbXNTZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgc3VwZXIobWVudUl0ZW1zKTtcclxuICAgIHRoaXMuYmFzZVVybCA9IG1lbnVJdGVtcy5tZW51U2hhcmVkQ29uZmlnLmJhc2VVcmwgfHwgJyc7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB0aGlzLmdldENvbGFwc2VkRnJvbUxvY2FsU3RvcmFnZSgpO1xyXG4gICAgdGhpcy5zZXRVc2VySW5pdGlhbHMoKTtcclxuICB9XHJcblxyXG4gIGxvZ29DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdHJhcGlMaW5rU2VydmljZS5zdHJhcGlMaW5rQ2xpY2soZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQ29sbGFwc2UoKSB7XHJcbiAgICB0aGlzLmNvbGxhcHNlZCA9ICF0aGlzLmNvbGxhcHNlZDtcclxuICAgIHRoaXMuc2V0Q29sYXBzZWRGcm9tTG9jYWxTdG9yYWdlKCk7XHJcbiAgfVxyXG5cclxuICBsaW5rQ2FsbGJhY2sobGluazogVXNlck1lbnVPcHRpb25MaW5rKSB7XHJcbiAgICBpZiAobGluay5jYWxsYmFjaykge1xyXG4gICAgICBsaW5rLmNhbGxiYWNrKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENvbGFwc2VkRnJvbUxvY2FsU3RvcmFnZSgpIHtcclxuICAgIGlmICghdGhpcy5kb21TZXJ2aWNlLmxvY2FsU3RvcmFnZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jb2xsYXBzZWQgPSAodGhpcy5kb21TZXJ2aWNlLmxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuQ09MTEFQU0VEX0xPQ0FMX1NUT1JBR0VfS0VZKSA9PSAndHJ1ZScgfHwgUmVzb2x1dGlvbkhlbHBlci5pc01vYmlsZVJlcygpKSA/IHRydWUgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Q29sYXBzZWRGcm9tTG9jYWxTdG9yYWdlKCkge1xyXG4gICAgaWYgKCF0aGlzLmRvbVNlcnZpY2UubG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuZG9tU2VydmljZS5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLkNPTExBUFNFRF9MT0NBTF9TVE9SQUdFX0tFWSwgdGhpcy5jb2xsYXBzZWQudG9TdHJpbmcoKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFVzZXJJbml0aWFscygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy51c2VybmFtZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZGlzcGxheWluZyBmaXJzdCBsZXR0ZXJzIG9mIG5hbWUgYW5kIHN1cm5hbWVcclxuICAgIGNvbnN0IHNwbGl0dGVkVXNlcm5hbWUgPSB0aGlzLnVzZXJuYW1lLnNwbGl0KCcgJyk7XHJcbiAgICBpZiAoc3BsaXR0ZWRVc2VybmFtZS5sZW5ndGggPT09IDEpIHtcclxuICAgICAgLy8gSWYgdGhlcmUncyBvbmx5IG9uZSB3b3JkLCB1c2UgdGhlIGZpcnN0IGxldHRlclxyXG4gICAgICB0aGlzLnVzZXJJbml0aWFscyA9IHNwbGl0dGVkVXNlcm5hbWVbMF1bMF07XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vIElmIHRoZXJlIGFyZSBtb3JlIHRoYW4gb25lIHdvcmQsIHVzZSB0aGUgZmlyc3QgbGV0dGVyIG9mIHRoZSBmaXJzdCB0d28gbmFtZXNcclxuICAgIHRoaXMudXNlckluaXRpYWxzID0gc3BsaXR0ZWRVc2VybmFtZVswXVswXSArIHNwbGl0dGVkVXNlcm5hbWVbMV1bMF07XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgZnhIaWRlLmd0LXhzPlxyXG4gIDxkaXYgW2Z4SGlkZV09XCIhY29sbGFwc2VkXCIgY2xhc3M9XCJtb2JpbGUtaGVhZGVyXCI+XHJcbiAgICA8YSBbbGliUGxhdXNpYmxlRXZlbnRdPVwiTE9HT0NMSUNLX1BMQVVTSUJMRV9FVkVOVFwiIGZ4RmxleD1cIjMuMTI1ZW1cIiBbaHJlZl09XCJiYXNlVXJsXCJcclxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInTUVOVS5BUklBX0xBQkVMUy5MT0dPJyB8IHRyYW5zbGF0ZVwiIChjbGljayk9XCJsb2dvQ2xpY2soJGV2ZW50KVwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIlxyXG4gICAgPlxyXG4gICAgICA8aW1nIGhlaWdodD1cIjQwXCIgd2lkdGg9XCI0MFwiIGNsYXNzPVwibWVudS1sb2dvXCIgW3NyY109XCJtZW51TG9nb0ltYWdlXCIgYWx0PVwibG9nb1wiIC8+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1wcm9kdWN0LW5hbWVcIj5cclxuICAgICAgICB7eyBwcm9kdWN0TmFtZSB9fVxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2E+XHJcblxyXG4gICAgPGJ1dHRvblxyXG4gICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgY2xhc3M9XCJ0b2dnbGVyXCJcclxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQVJJQV9MQUJFTFMuTUVOVV9UT0dHTEVSJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgIFtsaWJQbGF1c2libGVFdmVudF09XCJjb2xsYXBzZWQgPyBFWFBBTkRfUExBVVNJQkxFX0VWRU5UIDogQ09MTEFQU0VfUExBVVNJQkxFX0VWRU5UXCJcclxuICAgICAgKGNsaWNrKT1cInRvZ2dsZUNvbGxhcHNlKClcIlxyXG4gICAgPlxyXG4gICAgICA8bWF0LWljb24+bWVudTwvbWF0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IFtuZ0NsYXNzLmx0LXNtXT1cIidtb2JpbGUnXCIgY2xhc3M9XCJtZW51LWNvbnRhaW5lclwiIFtzdHlsZS53aWR0aF09XCJzaWRlTmF2V2lkdGhcIiBmeExheW91dD1cImNvbHVtblwiIFtjbGFzcy5jb2xsYXBzZWRdPVwiY29sbGFwc2VkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIiBmeExheW91dD1cImNvbHVtblwiIGZ4RmxleEZpbGw+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWVudS1jb250YWluZXItaGVhZGVyXCIgZnhMYXlvdXQ9XCJyb3dcIiBbZnhMYXlvdXRBbGlnbl09XCJjb2xsYXBzZWQgPyAnY2VudGVyIGNlbnRlcicgOiAnc3BhY2UtYmV0d2VlbiBjZW50ZXInXCI+XHJcbiAgICAgIDxhICpuZ0lmPVwiIWNvbGxhcHNlZFwiIFtsaWJQbGF1c2libGVFdmVudF09XCJMT0dPQ0xJQ0tfUExBVVNJQkxFX0VWRU5UXCIgZnhGbGV4PVwiMy4xMjVlbVwiIFtocmVmXT1cImJhc2VVcmxcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01FTlUuQVJJQV9MQUJFTFMuTE9HTycgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwibG9nb0NsaWNrKCRldmVudClcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpbWcgaGVpZ2h0PVwiNDBcIiB3aWR0aD1cIjQwXCIgY2xhc3M9XCJtZW51LWxvZ29cIiBbc3JjXT1cIm1lbnVMb2dvSW1hZ2VcIiBhbHQ9XCJsb2dvXCIgLz5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtcHJvZHVjdC1uYW1lXCI+XHJcbiAgICAgICAgICB7eyBwcm9kdWN0TmFtZSB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9hPlxyXG5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwidG9nZ2xlclwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQVJJQV9MQUJFTFMuTUVOVV9UT0dHTEVSJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgW2xpYlBsYXVzaWJsZUV2ZW50XT1cImNvbGxhcHNlZCA/IEVYUEFORF9QTEFVU0lCTEVfRVZFTlQgOiBDT0xMQVBTRV9QTEFVU0lCTEVfRVZFTlRcIlxyXG4gICAgICAgIFttYXRUb29sdGlwXT1cIihjb2xsYXBzZWQgPyAnTUVOVS5FWFBBTkQnIDogJ01FTlUuQ09MTEFQU0UnKSB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNvbGxhcHNlKClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG1hdC1pY29uIGZ4SGlkZS5ndC14cz5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgPG1hdC1pY29uIGZ4SGlkZS5sdC1zbT57eyBjb2xsYXBzZWQgPyAna2V5Ym9hcmRfZG91YmxlX2Fycm93X3JpZ2h0JyA6ICdrZXlib2FyZF9kb3VibGVfYXJyb3dfbGVmdCcgfX08L21hdC1pY29uPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJtZW51LXdyYXBwZXJcIiBmeExheW91dD1cImNvbHVtblwiPlxyXG4gICAgICA8bWVudS1jb2x1bW5zICh0b2dnbGVDb2xsYXBzZUV2ZW50KT1cInRvZ2dsZUNvbGxhcHNlKClcIiBbZGlyZWN0aW9uXT1cImRpcmVjdGlvblwiIHJvbGU9XCJuYXZpZ2F0aW9uXCIgW2lzT3Blbl09XCIhY29sbGFwc2VkXCJcclxuICAgICAgICBbYWN0aXZlXT1cImFjdGl2ZVwiPjwvbWVudS1jb2x1bW5zPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJwcm9maWxlXCI+XHJcbiAgICA8YnV0dG9uICNzdGF0ZT1cIm1hdE1lbnVUcmlnZ2VyXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiBjbGFzcz1cInByb2ZpbGUtd3JhcHBlclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS1pY29uXCI+XHJcbiAgICAgICAgQGlmICh1c2VySW5pdGlhbHMpIHtcclxuICAgICAgICAgIHt7dXNlckluaXRpYWxzfX1cclxuICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgIDxtYXQtaWNvbj5wZXJzb248L21hdC1pY29uPlxyXG4gICAgICAgIH1cclxuICAgIDwvZGl2PlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2xsYXBzZWRcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInByb2ZpbGUtbmFtZVwiPlxyXG4gICAgICAgICAge3sgdXNlcm5hbWUgPz8gJ01FTlUuQU5PTllNT1VTJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwic3RhdGUubWVudU9wZW47IGVsc2UgaWNvbkRvd25cIiBjbGFzcz1cInByb2ZpbGUtYXJyb3cgc3BpblwiPnt7XCJrZXlib2FyZF9hcnJvd19kb3duXCJ9fTwvbWF0LWljb24+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjaWNvbkRvd24+XHJcbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJwcm9maWxlLWFycm93IHNwaW5cIj57e1wia2V5Ym9hcmRfYXJyb3dfdXBcIiB9fTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCIgY2xhc3M9XCJwcm9maWxlLW1lbnVcIj5cclxuICAgICAgQGZvciAoaXRlbSBvZiBtZW51U2V0dGluZ3MudXNlck9wdGlvbnM7IHRyYWNrIGl0ZW0ubGFiZWwpIHtcclxuICAgICAgICBAaWYgKGl0ZW0ubGluaykge1xyXG4gICAgICAgICAgQGlmIChpdGVtLmxpbmsuaXNFeHRlcm5hbCkge1xyXG4gICAgICAgICAgICA8YSBjbGFzcz1cIm1hdC1tZGMtbWVudS1pdGVtXCIgW2hyZWZdPVwiaXRlbS5saW5rLmhyZWZcIiB0YXJnZXQ9XCJfYmxhbmtcIiAoY2xpY2spPVwibGlua0NhbGxiYWNrKGl0ZW0ubGluaylcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInByb2ZpbGVNZW51SXRlbTsgY29udGV4dDogeyBpY29uOiBpdGVtLmljb24sIGxhYmVsOiBpdGVtLmxhYmVsIH1cIj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgIDxhIGNsYXNzPVwibWF0LW1kYy1tZW51LWl0ZW1cIiBbcm91dGVyTGlua109XCJpdGVtLmxpbmsuaHJlZlwiIChjbGljayk9XCJsaW5rQ2FsbGJhY2soaXRlbS5saW5rKVwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJvZmlsZU1lbnVJdGVtOyBjb250ZXh0OiB7IGljb246IGl0ZW0uaWNvbiwgbGFiZWw6IGl0ZW0ubGFiZWwgfVwiPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cclxuICAgICAgICAgICAgY2xhc3M9XCJwcm9maWxlLW9wdGlvblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJpdGVtLmJ1dHRvbj8uY2FsbGJhY2soKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInByb2ZpbGVNZW51SXRlbTsgY29udGV4dDogeyBpY29uOiBpdGVtLmljb24sIGxhYmVsOiBpdGVtLmxhYmVsIH1cIj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgPC9tYXQtbWVudT5cclxuICA8L2Rpdj5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNwcm9maWxlTWVudUl0ZW0gbGV0LWljb249XCJpY29uXCIgbGV0LWxhYmVsPVwibGFiZWxcIj5cclxuICAgIEBpZiAoaWNvbikge1xyXG4gICAgICBAaWYgKCFpY29uPy5pc0N1c3RvbSkge1xyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgcHJvZmlsZS1vcHRpb24taWNvblwiIFtjbGFzcy5tYXRlcmlhbC1pY29ucy1vdXRsaW5lZF09XCJpY29uPy5pc091dGxpbmVkXCI+XHJcbiAgICAgICAgICB7e2ljb24/Lm5hbWV9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwicHJvZmlsZS1vcHRpb24taWNvblwiIFtzdmdJY29uXT1cImljb24/Lm5hbWVcIj48L21hdC1pY29uPlxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB7eyBsYWJlbCB8IHRyYW5zbGF0ZSB9fVxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvZGl2PlxyXG4iXX0=