ng-miam 3.7.3 → 3.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -72,70 +72,83 @@ function ListInputComponent_ul_4_ng_container_1_Template(rf, ctx) { if (rf & 1)
72
72
  i0.ɵɵadvance(1);
73
73
  i0.ɵɵproperty("ngForOf", ctx_r4.list.controls)("ngForTrackBy", ctx_r4.trackByIndex);
74
74
  } }
75
+ function ListInputComponent_ul_4_ng_template_2_li_0_option_9_Template(rf, ctx) { if (rf & 1) {
76
+ i0.ɵɵelement(0, "option", 37);
77
+ i0.ɵɵpipe(1, "capitalizeFirstLetter");
78
+ } if (rf & 2) {
79
+ const ing_r26 = ctx.$implicit;
80
+ i0.ɵɵproperty("value", i0.ɵɵpipeBind1(1, 1, ing_r26));
81
+ } }
82
+ function ListInputComponent_ul_4_ng_template_2_li_0_option_14_Template(rf, ctx) { if (rf & 1) {
83
+ i0.ɵɵelement(0, "option", 37);
84
+ } if (rf & 2) {
85
+ const unit_r27 = ctx.$implicit;
86
+ i0.ɵɵproperty("value", unit_r27);
87
+ } }
75
88
  const _c0 = function (a0) { return { clickable: a0 }; };
76
- function ListInputComponent_ul_4_ng_template_2_li_0_label_12_img_1_Template(rf, ctx) { if (rf & 1) {
77
- i0.ɵɵelement(0, "img", 39);
89
+ function ListInputComponent_ul_4_ng_template_2_li_0_label_16_img_1_Template(rf, ctx) { if (rf & 1) {
90
+ i0.ɵɵelement(0, "img", 41);
78
91
  } if (rf & 2) {
79
92
  const row_r18 = i0.ɵɵnextContext(2).$implicit;
80
- const ctx_r24 = i0.ɵɵnextContext(3);
81
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(2, _c0, ctx_r24.ingredientsPictures.editable))("src", row_r18.controls.attributes.controls["picture-url"].value, i0.ɵɵsanitizeUrl);
93
+ const ctx_r28 = i0.ɵɵnextContext(3);
94
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(2, _c0, ctx_r28.ingredientsPictures.editable))("src", row_r18.controls.attributes.controls["picture-url"].value, i0.ɵɵsanitizeUrl);
82
95
  } }
83
- function ListInputComponent_ul_4_ng_template_2_li_0_label_12_ng_miam_icon_2_Template(rf, ctx) { if (rf & 1) {
84
- i0.ɵɵelement(0, "ng-miam-icon", 40);
96
+ function ListInputComponent_ul_4_ng_template_2_li_0_label_16_ng_miam_icon_2_Template(rf, ctx) { if (rf & 1) {
97
+ i0.ɵɵelement(0, "ng-miam-icon", 42);
85
98
  } if (rf & 2) {
86
- const ctx_r25 = i0.ɵɵnextContext(5);
87
- i0.ɵɵproperty("iconName", ctx_r25.icon.Picture);
99
+ const ctx_r29 = i0.ɵɵnextContext(5);
100
+ i0.ɵɵproperty("iconName", ctx_r29.icon.Picture);
88
101
  } }
89
- function ListInputComponent_ul_4_ng_template_2_li_0_label_12_Template(rf, ctx) { if (rf & 1) {
90
- i0.ɵɵelementStart(0, "label", 36);
91
- i0.ɵɵtemplate(1, ListInputComponent_ul_4_ng_template_2_li_0_label_12_img_1_Template, 1, 4, "img", 37);
92
- i0.ɵɵtemplate(2, ListInputComponent_ul_4_ng_template_2_li_0_label_12_ng_miam_icon_2_Template, 1, 1, "ng-miam-icon", 38);
102
+ function ListInputComponent_ul_4_ng_template_2_li_0_label_16_Template(rf, ctx) { if (rf & 1) {
103
+ i0.ɵɵelementStart(0, "label", 38);
104
+ i0.ɵɵtemplate(1, ListInputComponent_ul_4_ng_template_2_li_0_label_16_img_1_Template, 1, 4, "img", 39);
105
+ i0.ɵɵtemplate(2, ListInputComponent_ul_4_ng_template_2_li_0_label_16_ng_miam_icon_2_Template, 1, 1, "ng-miam-icon", 40);
93
106
  i0.ɵɵelementEnd();
94
107
  } if (rf & 2) {
95
- const ctx_r27 = i0.ɵɵnextContext();
96
- const i_r19 = ctx_r27.index;
97
- const row_r18 = ctx_r27.$implicit;
98
- const ctx_r20 = i0.ɵɵnextContext(3);
108
+ const ctx_r31 = i0.ɵɵnextContext();
109
+ const i_r19 = ctx_r31.index;
110
+ const row_r18 = ctx_r31.$implicit;
111
+ const ctx_r22 = i0.ɵɵnextContext(3);
99
112
  i0.ɵɵpropertyInterpolate1("for", "ing-picture-", i_r19, "");
100
113
  i0.ɵɵadvance(1);
101
114
  i0.ɵɵproperty("ngIf", row_r18.controls.attributes.controls["picture-url"] == null ? null : row_r18.controls.attributes.controls["picture-url"].value);
102
115
  i0.ɵɵadvance(1);
103
- i0.ɵɵproperty("ngIf", !(row_r18.controls.attributes.controls["picture-url"] == null ? null : row_r18.controls.attributes.controls["picture-url"].value) && ctx_r20.ingredientsPictures.editable);
116
+ i0.ɵɵproperty("ngIf", !(row_r18.controls.attributes.controls["picture-url"] == null ? null : row_r18.controls.attributes.controls["picture-url"].value) && ctx_r22.ingredientsPictures.editable);
104
117
  } }
105
- function ListInputComponent_ul_4_ng_template_2_li_0_input_13_Template(rf, ctx) { if (rf & 1) {
106
- const _r29 = i0.ɵɵgetCurrentView();
107
- i0.ɵɵelementStart(0, "input", 41);
108
- i0.ɵɵlistener("change", function ListInputComponent_ul_4_ng_template_2_li_0_input_13_Template_input_change_0_listener($event) { i0.ɵɵrestoreView(_r29); const row_r18 = i0.ɵɵnextContext().$implicit; const ctx_r28 = i0.ɵɵnextContext(3); return ctx_r28.uploadIngredientPicture($event.target.files, row_r18.controls.attributes.controls["picture-url"]); });
118
+ function ListInputComponent_ul_4_ng_template_2_li_0_input_17_Template(rf, ctx) { if (rf & 1) {
119
+ const _r33 = i0.ɵɵgetCurrentView();
120
+ i0.ɵɵelementStart(0, "input", 43);
121
+ i0.ɵɵlistener("change", function ListInputComponent_ul_4_ng_template_2_li_0_input_17_Template_input_change_0_listener($event) { i0.ɵɵrestoreView(_r33); const row_r18 = i0.ɵɵnextContext().$implicit; const ctx_r32 = i0.ɵɵnextContext(3); return ctx_r32.uploadIngredientPicture($event.target.files, row_r18.controls.attributes.controls["picture-url"]); });
109
122
  i0.ɵɵelementEnd();
110
123
  } if (rf & 2) {
111
124
  const i_r19 = i0.ɵɵnextContext().index;
112
125
  i0.ɵɵpropertyInterpolate1("id", "ing-picture-", i_r19, "");
113
126
  } }
114
- function ListInputComponent_ul_4_ng_template_2_li_0_div_15_Template(rf, ctx) { if (rf & 1) {
127
+ function ListInputComponent_ul_4_ng_template_2_li_0_div_19_Template(rf, ctx) { if (rf & 1) {
115
128
  i0.ɵɵelement(0, "div", 23);
116
129
  } }
117
- function ListInputComponent_ul_4_ng_template_2_li_0_div_16_Template(rf, ctx) { if (rf & 1) {
130
+ function ListInputComponent_ul_4_ng_template_2_li_0_div_20_Template(rf, ctx) { if (rf & 1) {
118
131
  i0.ɵɵelementStart(0, "div", 24);
119
- i0.ɵɵelement(1, "ng-miam-icon", 42);
120
- i0.ɵɵelementStart(2, "span", 43);
132
+ i0.ɵɵelement(1, "ng-miam-icon", 44);
133
+ i0.ɵɵelementStart(2, "span", 45);
121
134
  i0.ɵɵtext(3);
122
135
  i0.ɵɵpipe(4, "capitalizeFirstLetter");
123
136
  i0.ɵɵelementEnd();
124
- i0.ɵɵelementStart(5, "span", 43);
137
+ i0.ɵɵelementStart(5, "span", 45);
125
138
  i0.ɵɵtext(6);
126
139
  i0.ɵɵelementEnd();
127
- i0.ɵɵelementStart(7, "span", 43);
140
+ i0.ɵɵelementStart(7, "span", 45);
128
141
  i0.ɵɵtext(8);
129
142
  i0.ɵɵelementEnd();
130
143
  i0.ɵɵelementEnd();
131
144
  } if (rf & 2) {
132
145
  const row_r18 = i0.ɵɵnextContext().$implicit;
133
- const ctx_r23 = i0.ɵɵnextContext(3);
146
+ const ctx_r25 = i0.ɵɵnextContext(3);
134
147
  var tmp_1_0 = null;
135
148
  var tmp_2_0 = null;
136
149
  var tmp_3_0 = null;
137
150
  i0.ɵɵadvance(1);
138
- i0.ɵɵproperty("iconName", ctx_r23.icon.Grip);
151
+ i0.ɵɵproperty("iconName", ctx_r25.icon.Grip);
139
152
  i0.ɵɵadvance(2);
140
153
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 4, row_r18 == null ? null : (tmp_1_0 = row_r18.get("attributes")) == null ? null : tmp_1_0.get("name").value));
141
154
  i0.ɵɵadvance(3);
@@ -144,7 +157,7 @@ function ListInputComponent_ul_4_ng_template_2_li_0_div_16_Template(rf, ctx) { i
144
157
  i0.ɵɵtextInterpolate(row_r18 == null ? null : (tmp_3_0 = row_r18.get("attributes")) == null ? null : tmp_3_0.get("unit").value);
145
158
  } }
146
159
  function ListInputComponent_ul_4_ng_template_2_li_0_Template(rf, ctx) { if (rf & 1) {
147
- const _r34 = i0.ɵɵgetCurrentView();
160
+ const _r38 = i0.ɵɵgetCurrentView();
148
161
  i0.ɵɵelementStart(0, "li", 14);
149
162
  i0.ɵɵelementStart(1, "div", 27);
150
163
  i0.ɵɵelementStart(2, "div", 28);
@@ -154,21 +167,27 @@ function ListInputComponent_ul_4_ng_template_2_li_0_Template(rf, ctx) { if (rf &
154
167
  i0.ɵɵelement(5, "input", 30);
155
168
  i0.ɵɵpipe(6, "async");
156
169
  i0.ɵɵpipe(7, "capitalizeFirstLetter");
157
- i0.ɵɵelementStart(8, "input", 31);
158
- i0.ɵɵlistener("ngModelChange", function ListInputComponent_ul_4_ng_template_2_li_0_Template_input_ngModelChange_8_listener($event) { i0.ɵɵrestoreView(_r34); const i_r19 = ctx.index; const ctx_r33 = i0.ɵɵnextContext(3); return ctx_r33.updateQuantityValue($event, i_r19); });
170
+ i0.ɵɵelementStart(8, "datalist");
171
+ i0.ɵɵtemplate(9, ListInputComponent_ul_4_ng_template_2_li_0_option_9_Template, 2, 3, "option", 31);
172
+ i0.ɵɵelementEnd();
173
+ i0.ɵɵelementStart(10, "input", 32);
174
+ i0.ɵɵlistener("ngModelChange", function ListInputComponent_ul_4_ng_template_2_li_0_Template_input_ngModelChange_10_listener($event) { i0.ɵɵrestoreView(_r38); const i_r19 = ctx.index; const ctx_r37 = i0.ɵɵnextContext(3); return ctx_r37.updateQuantityValue($event, i_r19); });
159
175
  i0.ɵɵelementEnd();
160
- i0.ɵɵelement(9, "input", 32);
161
- i0.ɵɵpipe(10, "async");
176
+ i0.ɵɵelement(11, "input", 33);
177
+ i0.ɵɵpipe(12, "async");
178
+ i0.ɵɵelementStart(13, "datalist");
179
+ i0.ɵɵtemplate(14, ListInputComponent_ul_4_ng_template_2_li_0_option_14_Template, 1, 1, "option", 31);
162
180
  i0.ɵɵelementEnd();
163
181
  i0.ɵɵelementEnd();
164
- i0.ɵɵelementStart(11, "div", 33);
165
- i0.ɵɵtemplate(12, ListInputComponent_ul_4_ng_template_2_li_0_label_12_Template, 3, 3, "label", 34);
166
- i0.ɵɵtemplate(13, ListInputComponent_ul_4_ng_template_2_li_0_input_13_Template, 1, 1, "input", 35);
167
- i0.ɵɵelementStart(14, "ng-miam-icon", 20);
168
- i0.ɵɵlistener("click", function ListInputComponent_ul_4_ng_template_2_li_0_Template_ng_miam_icon_click_14_listener() { i0.ɵɵrestoreView(_r34); const i_r19 = ctx.index; const ctx_r35 = i0.ɵɵnextContext(3); return ctx_r35.delete(i_r19); });
169
182
  i0.ɵɵelementEnd();
170
- i0.ɵɵtemplate(15, ListInputComponent_ul_4_ng_template_2_li_0_div_15_Template, 1, 0, "div", 21);
171
- i0.ɵɵtemplate(16, ListInputComponent_ul_4_ng_template_2_li_0_div_16_Template, 9, 6, "div", 22);
183
+ i0.ɵɵelementStart(15, "div", 34);
184
+ i0.ɵɵtemplate(16, ListInputComponent_ul_4_ng_template_2_li_0_label_16_Template, 3, 3, "label", 35);
185
+ i0.ɵɵtemplate(17, ListInputComponent_ul_4_ng_template_2_li_0_input_17_Template, 1, 1, "input", 36);
186
+ i0.ɵɵelementStart(18, "ng-miam-icon", 20);
187
+ i0.ɵɵlistener("click", function ListInputComponent_ul_4_ng_template_2_li_0_Template_ng_miam_icon_click_18_listener() { i0.ɵɵrestoreView(_r38); const i_r19 = ctx.index; const ctx_r39 = i0.ɵɵnextContext(3); return ctx_r39.delete(i_r19); });
188
+ i0.ɵɵelementEnd();
189
+ i0.ɵɵtemplate(19, ListInputComponent_ul_4_ng_template_2_li_0_div_19_Template, 1, 0, "div", 21);
190
+ i0.ɵɵtemplate(20, ListInputComponent_ul_4_ng_template_2_li_0_div_20_Template, 9, 6, "div", 22);
172
191
  i0.ɵɵelementEnd();
173
192
  i0.ɵɵelementEnd();
174
193
  } if (rf & 2) {
@@ -180,12 +199,22 @@ function ListInputComponent_ul_4_ng_template_2_li_0_Template(rf, ctx) { if (rf &
180
199
  i0.ɵɵadvance(2);
181
200
  i0.ɵɵproperty("iconName", ctx_r17.icon.Grip);
182
201
  i0.ɵɵadvance(2);
183
- i0.ɵɵproperty("ngClass", i0.ɵɵpipeBind1(6, 12, ctx_r17.isIngredientReviewed(row_r18["controls"]["attributes"]["controls"]["name"].value)) ? "alert-success" : "alert-danger")("ngModel", i0.ɵɵpipeBind1(7, 14, row_r18["controls"]["attributes"]["controls"]["name"].value))("formControl", row_r18["controls"]["attributes"]["controls"]["name"]);
202
+ i0.ɵɵproperty("ngClass", i0.ɵɵpipeBind1(6, 18, ctx_r17.isIngredientReviewed(row_r18["controls"]["attributes"]["controls"]["name"].value)) ? "alert-success" : "alert-danger")("ngModel", i0.ɵɵpipeBind1(7, 20, row_r18["controls"]["attributes"]["controls"]["name"].value))("formControl", row_r18["controls"]["attributes"]["controls"]["name"]);
203
+ i0.ɵɵattribute("list", "miam-list-input-dropdown-ingredients-id" + i_r19);
184
204
  i0.ɵɵadvance(3);
205
+ i0.ɵɵattribute("id", "miam-list-input-dropdown-ingredients-id" + i_r19);
206
+ i0.ɵɵadvance(1);
207
+ i0.ɵɵproperty("ngForOf", ctx_r17.getFilteredNameFromIndex(i_r19));
208
+ i0.ɵɵadvance(1);
185
209
  i0.ɵɵproperty("ngModel", row_r18["controls"]["attributes"]["controls"]["quantity"].value)("formControl", row_r18["controls"]["attributes"]["controls"]["quantity"]);
186
210
  i0.ɵɵadvance(1);
187
- i0.ɵɵproperty("ngClass", i0.ɵɵpipeBind1(10, 16, ctx_r17.isQuantityReviewed(row_r18["controls"]["attributes"]["controls"]["unit"].value)) ? "alert-success" : "alert-danger")("formControl", row_r18["controls"]["attributes"]["controls"]["unit"]);
188
- i0.ɵɵadvance(3);
211
+ i0.ɵɵproperty("ngClass", i0.ɵɵpipeBind1(12, 22, ctx_r17.isQuantityReviewed(row_r18["controls"]["attributes"]["controls"]["unit"].value)) ? "alert-success" : "alert-danger")("formControl", row_r18["controls"]["attributes"]["controls"]["unit"]);
212
+ i0.ɵɵattribute("list", "miam-list-input-dropdown-units-id" + i_r19);
213
+ i0.ɵɵadvance(2);
214
+ i0.ɵɵattribute("id", "miam-list-input-dropdown-units-id" + i_r19);
215
+ i0.ɵɵadvance(1);
216
+ i0.ɵɵproperty("ngForOf", ctx_r17.getFilteredUnitsFromIndex(i_r19));
217
+ i0.ɵɵadvance(2);
189
218
  i0.ɵɵproperty("ngIf", ctx_r17.ingredientsPictures.visible);
190
219
  i0.ɵɵadvance(1);
191
220
  i0.ɵɵproperty("ngIf", ctx_r17.ingredientsPictures.visible && ctx_r17.ingredientsPictures.editable);
@@ -193,15 +222,15 @@ function ListInputComponent_ul_4_ng_template_2_li_0_Template(rf, ctx) { if (rf &
193
222
  i0.ɵɵproperty("iconName", ctx_r17.icon.Trash);
194
223
  } }
195
224
  function ListInputComponent_ul_4_ng_template_2_Template(rf, ctx) { if (rf & 1) {
196
- i0.ɵɵtemplate(0, ListInputComponent_ul_4_ng_template_2_li_0_Template, 17, 18, "li", 13);
225
+ i0.ɵɵtemplate(0, ListInputComponent_ul_4_ng_template_2_li_0_Template, 21, 24, "li", 13);
197
226
  } if (rf & 2) {
198
227
  const ctx_r6 = i0.ɵɵnextContext(2);
199
228
  i0.ɵɵproperty("ngForOf", ctx_r6.list.controls)("ngForTrackBy", ctx_r6.trackByIndex);
200
229
  } }
201
230
  function ListInputComponent_ul_4_Template(rf, ctx) { if (rf & 1) {
202
- const _r37 = i0.ɵɵgetCurrentView();
231
+ const _r41 = i0.ɵɵgetCurrentView();
203
232
  i0.ɵɵelementStart(0, "ul", 10);
204
- i0.ɵɵlistener("cdkDropListDropped", function ListInputComponent_ul_4_Template_ul_cdkDropListDropped_0_listener($event) { i0.ɵɵrestoreView(_r37); const ctx_r36 = i0.ɵɵnextContext(); return ctx_r36.drop($event); });
233
+ i0.ɵɵlistener("cdkDropListDropped", function ListInputComponent_ul_4_Template_ul_cdkDropListDropped_0_listener($event) { i0.ɵɵrestoreView(_r41); const ctx_r40 = i0.ɵɵnextContext(); return ctx_r40.drop($event); });
205
234
  i0.ɵɵtemplate(1, ListInputComponent_ul_4_ng_container_1_Template, 2, 2, "ng-container", 11);
206
235
  i0.ɵɵtemplate(2, ListInputComponent_ul_4_ng_template_2_Template, 1, 2, "ng-template", null, 12, i0.ɵɵtemplateRefExtractor);
207
236
  i0.ɵɵelementEnd();
@@ -212,9 +241,9 @@ function ListInputComponent_ul_4_Template(rf, ctx) { if (rf & 1) {
212
241
  i0.ɵɵproperty("ngIf", !ctx_r0.ingredientMode)("ngIfElse", _r5);
213
242
  } }
214
243
  function ListInputComponent_ng_template_5_Template(rf, ctx) { if (rf & 1) {
215
- i0.ɵɵelementStart(0, "div", 44);
216
- i0.ɵɵelement(1, "ng-miam-icon", 45);
217
- i0.ɵɵelementStart(2, "span", 46);
244
+ i0.ɵɵelementStart(0, "div", 46);
245
+ i0.ɵɵelement(1, "ng-miam-icon", 47);
246
+ i0.ɵɵelementStart(2, "span", 48);
218
247
  i0.ɵɵtext(3);
219
248
  i0.ɵɵelementEnd();
220
249
  i0.ɵɵelementEnd();
@@ -226,7 +255,7 @@ function ListInputComponent_ng_template_5_Template(rf, ctx) { if (rf & 1) {
226
255
  i0.ɵɵtextInterpolate1("Oups... c\u2019est vide, commencez \u00E0 ajouter des ", ctx_r2.hint, " !");
227
256
  } }
228
257
  function ListInputComponent_div_13_Template(rf, ctx) { if (rf & 1) {
229
- i0.ɵɵelementStart(0, "div", 47);
258
+ i0.ɵɵelementStart(0, "div", 49);
230
259
  i0.ɵɵtext(1);
231
260
  i0.ɵɵelementEnd();
232
261
  } if (rf & 2) {
@@ -247,6 +276,7 @@ export class ListInputComponent {
247
276
  this.deleteId = new EventEmitter();
248
277
  this.orderHasChanged = new EventEmitter();
249
278
  this.previousQuantities = [];
279
+ this.maxSelectionNumber = 5;
250
280
  }
251
281
  delete(index) {
252
282
  var _a;
@@ -348,9 +378,47 @@ export class ListInputComponent {
348
378
  this.cdr.detectChanges();
349
379
  };
350
380
  }
381
+ /**
382
+ * filter using the input the possible ingredient name the user might want
383
+ * @param index
384
+ */
385
+ getFilteredNameFromIndex(index) {
386
+ const input = this.list.controls[index].value.attributes.name.toLowerCase();
387
+ const possibleSelection = this.ingredientService.getReviewedNames();
388
+ return this.filterPossibleSelectionFromInput(input, possibleSelection);
389
+ }
390
+ /**
391
+ * filter using the input the possible unit the user might want
392
+ * @param index
393
+ */
394
+ getFilteredUnitsFromIndex(index) {
395
+ const input = this.list.controls[index].value.attributes.unit.toLowerCase();
396
+ const possibleSelection = this.ingredientService.getReviewedUnits();
397
+ return this.filterPossibleSelectionFromInput(input, possibleSelection);
398
+ }
399
+ /**
400
+ * Generic method to filter the name and the unit
401
+ * @param input user input
402
+ * @param possibleSelection possible selection to display to the user
403
+ * @private
404
+ */
405
+ filterPossibleSelectionFromInput(input, possibleSelection) {
406
+ const filteredSelection = [];
407
+ const inputLC = input.toLowerCase();
408
+ for (const selection of possibleSelection) {
409
+ const selectionLC = selection.toLowerCase();
410
+ if (selectionLC.includes(inputLC) && selectionLC !== inputLC) {
411
+ filteredSelection.push(selection);
412
+ }
413
+ if (filteredSelection.length >= this.maxSelectionNumber) {
414
+ break;
415
+ }
416
+ }
417
+ return filteredSelection;
418
+ }
351
419
  }
352
420
  ListInputComponent.ɵfac = function ListInputComponent_Factory(t) { return new (t || ListInputComponent)(i0.ɵɵdirectiveInject(i1.IngredientsService), i0.ɵɵdirectiveInject(i2.FormBuilder), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
353
- ListInputComponent.ɵcmp = i0.ɵɵdefineComponent({ type: ListInputComponent, selectors: [["ng-miam-list-input"]], inputs: { hint: "hint", placeholder: "placeholder", label: "label", instructions: "instructions", ingredientMode: "ingredientMode", list: "list", ingredientsPictures: "ingredientsPictures" }, outputs: { deleteId: "deleteId", orderHasChanged: "orderHasChanged" }, decls: 14, vars: 7, consts: [[1, "miam-list-input"], [1, "miam-list-input__list", 3, "formGroup"], [1, "miam-list-input__list__label"], ["class", "miam-list-input__container m-default-card", "cdkDropList", "", 3, "cdkDropListDropped", 4, "ngIf", "ngIfElse"], ["hintPlaceholder", ""], [1, "miam-list-input__actions"], ["matInput", "", "cdkTextareaAutosize", "", "cdkAutosizeMinRows", "4", "cdkAutosizeMaxRows", "4", 1, "m-input", 3, "formControl", "keydown.enter"], [1, "m-button-primary", 3, "mousedown", "mouseup"], [1, "miam-list-input__instructions__direction"], ["class", "miam-list-input__actions__instructions", 4, "ngIf"], ["cdkDropList", "", 1, "miam-list-input__container", "m-default-card", 3, "cdkDropListDropped"], [4, "ngIf", "ngIfElse"], ["ingredientRow", ""], ["cdkDrag", "", 4, "ngFor", "ngForOf", "ngForTrackBy"], ["cdkDrag", ""], [3, "formGroup"], [1, "miam-list-input__container__row", "m-default-card"], ["primaryColor", "var(--m-color-grey05)", "cdkDragHandle", "", 1, "miam-list-input__row__grip", 3, "iconName"], ["cdkTextareaAutosize", "true", "cdkAutosizeMinRows", "1", "cdkAutosizeMaxRows", "50", "formControlName", "description", 1, "m-input", 3, "blur"], ["autosize", "cdkTextareaAutosize"], ["primaryColor", "var(--m-color-grey05)", 1, "miam-list-input__row__trash", 3, "iconName", "click"], ["class", "miam-list-input__row__placeholder", 4, "cdkDragPlaceholder"], ["class", "miam-list-input__row__preview m-default-card", 4, "cdkDragPreview"], [1, "miam-list-input__row__placeholder"], [1, "miam-list-input__row__preview", "m-default-card"], ["primaryColor", "var(--m-color-grey05)", "cdkDragHandle", "", 3, "iconName"], [1, "miam-list-input__preview__text", "m-body-typo"], [1, "miam-list-input__container__row", "m-default-card", 3, "formGroupName"], [1, "miam-list-input__row__left"], [1, "miam-list-input__row__right"], [1, "m-input", 3, "ngClass", "ngModel", "formControl"], ["maxSize", "4", "autoWidthInput", "", 1, "m-input", 3, "ngModel", "formControl", "ngModelChange"], ["maxSize", "8", "autoWidthInput", "", 1, "m-input", 3, "ngClass", "formControl"], [1, "miam-list-input__row__controls"], [3, "for", 4, "ngIf"], ["type", "file", "accept", "image/jpeg, image/png, image/webp", 3, "id", "change", 4, "ngIf"], [3, "for"], ["class", "miam-list-input__row__picture", 3, "ngClass", "src", 4, "ngIf"], ["class", "miam-list-input__row__trash", "primaryColor", "var(--m-color-grey05)", 3, "iconName", 4, "ngIf"], [1, "miam-list-input__row__picture", 3, "ngClass", "src"], ["primaryColor", "var(--m-color-grey05)", 1, "miam-list-input__row__trash", 3, "iconName"], ["type", "file", "accept", "image/jpeg, image/png, image/webp", 3, "id", "change"], ["primaryColor", "var(--m-color-grey-text-dark)", "cdkDragHandle", "", 3, "iconName"], [1, "m-body-typo"], [1, "miam-list-input__placeholder", "miam-list-input__container", "m-default-card"], ["primaryColor", "var(--m-color-grey-text-dark)", 3, "width", "height", "iconName"], [1, "miam-list-input__placeholder__hint", "m-body-typo"], [1, "miam-list-input__actions__instructions"]], template: function ListInputComponent_Template(rf, ctx) { if (rf & 1) {
421
+ ListInputComponent.ɵcmp = i0.ɵɵdefineComponent({ type: ListInputComponent, selectors: [["ng-miam-list-input"]], inputs: { hint: "hint", placeholder: "placeholder", label: "label", instructions: "instructions", ingredientMode: "ingredientMode", list: "list", ingredientsPictures: "ingredientsPictures" }, outputs: { deleteId: "deleteId", orderHasChanged: "orderHasChanged" }, decls: 14, vars: 7, consts: [[1, "miam-list-input"], [1, "miam-list-input__list", 3, "formGroup"], [1, "miam-list-input__list__label"], ["class", "miam-list-input__container m-default-card", "cdkDropList", "", 3, "cdkDropListDropped", 4, "ngIf", "ngIfElse"], ["hintPlaceholder", ""], [1, "miam-list-input__actions"], ["matInput", "", "cdkTextareaAutosize", "", "cdkAutosizeMinRows", "4", "cdkAutosizeMaxRows", "4", 1, "m-input", 3, "formControl", "keydown.enter"], [1, "m-button-primary", 3, "mousedown", "mouseup"], [1, "miam-list-input__instructions__direction"], ["class", "miam-list-input__actions__instructions", 4, "ngIf"], ["cdkDropList", "", 1, "miam-list-input__container", "m-default-card", 3, "cdkDropListDropped"], [4, "ngIf", "ngIfElse"], ["ingredientRow", ""], ["cdkDrag", "", 4, "ngFor", "ngForOf", "ngForTrackBy"], ["cdkDrag", ""], [3, "formGroup"], [1, "miam-list-input__container__row", "m-default-card"], ["primaryColor", "var(--m-color-grey05)", "cdkDragHandle", "", 1, "miam-list-input__row__grip", 3, "iconName"], ["cdkTextareaAutosize", "true", "cdkAutosizeMinRows", "1", "cdkAutosizeMaxRows", "50", "formControlName", "description", 1, "m-input", 3, "blur"], ["autosize", "cdkTextareaAutosize"], ["primaryColor", "var(--m-color-grey05)", 1, "miam-list-input__row__trash", 3, "iconName", "click"], ["class", "miam-list-input__row__placeholder", 4, "cdkDragPlaceholder"], ["class", "miam-list-input__row__preview m-default-card", 4, "cdkDragPreview"], [1, "miam-list-input__row__placeholder"], [1, "miam-list-input__row__preview", "m-default-card"], ["primaryColor", "var(--m-color-grey05)", "cdkDragHandle", "", 3, "iconName"], [1, "miam-list-input__preview__text", "m-body-typo"], [1, "miam-list-input__container__row", "m-default-card", 3, "formGroupName"], [1, "miam-list-input__row__left"], [1, "miam-list-input__row__right"], [1, "m-input", 3, "ngClass", "ngModel", "formControl"], [3, "value", 4, "ngFor", "ngForOf"], ["maxSize", "4", "autoWidthInput", "", 1, "m-input", 3, "ngModel", "formControl", "ngModelChange"], ["maxSize", "8", "autoWidthInput", "", 1, "m-input", 3, "ngClass", "formControl"], [1, "miam-list-input__row__controls"], [3, "for", 4, "ngIf"], ["type", "file", "accept", "image/jpeg, image/png, image/webp", 3, "id", "change", 4, "ngIf"], [3, "value"], [3, "for"], ["class", "miam-list-input__row__picture", 3, "ngClass", "src", 4, "ngIf"], ["class", "miam-list-input__row__trash", "primaryColor", "var(--m-color-grey05)", 3, "iconName", 4, "ngIf"], [1, "miam-list-input__row__picture", 3, "ngClass", "src"], ["primaryColor", "var(--m-color-grey05)", 1, "miam-list-input__row__trash", 3, "iconName"], ["type", "file", "accept", "image/jpeg, image/png, image/webp", 3, "id", "change"], ["primaryColor", "var(--m-color-grey-text-dark)", "cdkDragHandle", "", 3, "iconName"], [1, "m-body-typo"], [1, "miam-list-input__placeholder", "miam-list-input__container", "m-default-card"], ["primaryColor", "var(--m-color-grey-text-dark)", 3, "width", "height", "iconName"], [1, "miam-list-input__placeholder__hint", "m-body-typo"], [1, "miam-list-input__actions__instructions"]], template: function ListInputComponent_Template(rf, ctx) { if (rf & 1) {
354
422
  i0.ɵɵelementStart(0, "div", 0);
355
423
  i0.ɵɵelementStart(1, "div", 1);
356
424
  i0.ɵɵelementStart(2, "div", 2);
@@ -386,7 +454,7 @@ ListInputComponent.ɵcmp = i0.ɵɵdefineComponent({ type: ListInputComponent, se
386
454
  i0.ɵɵattribute("placeholder", ctx.placeholder);
387
455
  i0.ɵɵadvance(5);
388
456
  i0.ɵɵproperty("ngIf", ctx.instructions);
389
- } }, directives: [i2.NgControlStatusGroup, i2.FormGroupDirective, i3.NgIf, i4.CdkTextareaAutosize, i2.DefaultValueAccessor, i2.NgControlStatus, i2.FormControlDirective, i5.CdkDropList, i3.NgForOf, i5.CdkDrag, i6.IconComponent, i5.CdkDragHandle, i2.FormControlName, i5.CdkDragPlaceholder, i5.CdkDragPreview, i2.FormGroupName, i3.NgClass, i7.AutowidthInputDirective], pipes: [i3.AsyncPipe, i8.CapitalizeFirstLetterPipe], styles: [".miam-list-input[_ngcontent-%COMP%]{padding:8px}@media (min-width:1024px){.miam-list-input[_ngcontent-%COMP%]{width:calc(100% - 16px)}}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%]{margin-top:50px;position:relative}@media (min-width:1024px){.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%]{width:55%}}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] .miam-list-input__list__label[_ngcontent-%COMP%]{background-color:var(--m-color-secondary-light);border-radius:8px 8px 0 0;color:var(--m-color-secondary);font-weight:700;left:0;padding:8px 24px;position:absolute;top:-33px;width:200px;z-index:0}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] .miam-list-input__container[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:400px;margin-bottom:32px;overflow-x:hidden;overflow-y:auto;position:inherit;z-index:1}@media (max-width:1023px){.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] .miam-list-input__container[_ngcontent-%COMP%]{height:55vh;margin-bottom:16px;width:unset}}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] .miam-list-input__container[_ngcontent-%COMP%]::-webkit-scrollbar-button{height:20px}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] .miam-list-input__container[_ngcontent-%COMP%]::-webkit-scrollbar-track{background:var(--m-color-grey)}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] .miam-list-input__container[_ngcontent-%COMP%]::-webkit-scrollbar{cursor:-webkit-grab;height:7px;width:5px}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] .miam-list-input__container[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:var(--m-color-primary);border-radius:5px}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;row-gap:8px}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{-moz-column-gap:16px;align-items:center;column-gap:16px;display:flex;list-style:none}@media (max-width:1023px){.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{-moz-column-gap:0;column-gap:0}}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%]{-moz-user-select:none;-webkit-touch-callout:none;-webkit-user-select:none;align-items:center;display:flex;flex:1;flex-direction:row;gap:16px;user-select:none}@media (max-width:1023px){.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%]{margin-right:4px}}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]{max-width:unset;padding:inherit}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%] .m-input[_ngcontent-%COMP%]{margin:unset;max-width:unset;min-width:unset}@media (max-width:359px){.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%] .m-input[_ngcontent-%COMP%]{max-width:60vw}}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%] .miam-list-input__row__left[_ngcontent-%COMP%]{align-items:center;display:flex;flex-direction:row}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%] .miam-list-input__row__left[_ngcontent-%COMP%] .miam-list-input__row__grip[_ngcontent-%COMP%]{cursor:move}@media (max-width:1023px){.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%] .miam-list-input__row__left[_ngcontent-%COMP%] .miam-list-input__row__grip[_ngcontent-%COMP%]{margin-left:4px}}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%] .miam-list-input__row__left[_ngcontent-%COMP%] .m-input[_ngcontent-%COMP%]{margin-left:8px;margin-right:8px;width:200px}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%] .miam-list-input__row__right[_ngcontent-%COMP%]{align-items:center;display:flex;flex:1;flex-direction:row}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%] .miam-list-input__row__right[_ngcontent-%COMP%] .m-input[_ngcontent-%COMP%]{margin-right:8px;width:80px}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%] .miam-list-input__row__right[_ngcontent-%COMP%] .m-input[_ngcontent-%COMP%]:first-child{flex:1}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%] .miam-list-input__row__right[_ngcontent-%COMP%] .m-input[_ngcontent-%COMP%]:last-child{margin-right:0;text-align:right}@media (max-width:1023px){.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%] .miam-list-input__row__right[_ngcontent-%COMP%]{flex-wrap:wrap}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%] .miam-list-input__row__right[_ngcontent-%COMP%] .m-input[_ngcontent-%COMP%]{flex:1;margin-bottom:8px;margin-right:4px}}@media (max-width:359px){.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%] .miam-list-input__row__right[_ngcontent-%COMP%]{max-width:60vw}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%] .miam-list-input__row__right[_ngcontent-%COMP%] .m-input[_ngcontent-%COMP%]{max-width:58vw}}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%] .miam-list-input__row__right[_ngcontent-%COMP%] .alert-success[_ngcontent-%COMP%]{background:var(--m-color-white);border:1px solid var(--m-color-success);border-radius:8px;box-shadow:0 0 4px var(--m-color-success)}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%] .miam-list-input__row__right[_ngcontent-%COMP%] .alert-danger[_ngcontent-%COMP%]{background:var(--m-color-white);border:1px solid var(--m-color-danger);border-radius:8px;box-shadow:0 0 4px var(--m-color-danger)}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__row__controls[_ngcontent-%COMP%]{align-items:center;display:flex;gap:8px;justify-content:space-between}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__row__controls[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{display:flex;justify-content:center;width:50px}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__row__controls[_ngcontent-%COMP%] label[_ngcontent-%COMP%] .miam-list-input__row__picture[_ngcontent-%COMP%]{-webkit-tap-highlight-color:transparent;width:50px}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__row__controls[_ngcontent-%COMP%] label[_ngcontent-%COMP%] .miam-list-input__row__picture.clickable[_ngcontent-%COMP%]{cursor:pointer}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__row__controls[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{display:none}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__row__controls[_ngcontent-%COMP%] .miam-list-input__row__trash[_ngcontent-%COMP%]{-webkit-tap-highlight-color:transparent;cursor:pointer}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]{border-radius:var(--m-border-radius);flex:1;margin:0;max-width:none;outline:none;padding:5px;resize:none}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] textarea.warnning[_ngcontent-%COMP%]{background-color:var(--m-color-secondary-light);color:var(--m-color-secondary)}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] textarea.error[_ngcontent-%COMP%]{background-color:var(--m-color-danger);color:var(--m-color-danger-text)}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] textarea[cdktextareaautosize][_ngcontent-%COMP%]{overflow:hidden}.miam-list-input[_ngcontent-%COMP%] .hint[_ngcontent-%COMP%]{border-radius:var(--m-border-radius);flex:1;font-size:12px;font-weight:600;padding-bottom:10px}.miam-list-input[_ngcontent-%COMP%] .hint.warnning[_ngcontent-%COMP%]{color:var(--m-color-secondary)}.miam-list-input[_ngcontent-%COMP%] .hint.error[_ngcontent-%COMP%]{color:var(--m-color-danger)}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__placeholder[_ngcontent-%COMP%]{align-items:center;justify-content:center}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__placeholder[_ngcontent-%COMP%] .miam-list-input__placeholder__hint[_ngcontent-%COMP%]{color:var(--m-color-secondary);margin-top:40px;opacity:.5;text-align:center}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__actions[_ngcontent-%COMP%]{-moz-column-gap:32px;column-gap:32px;display:flex;justify-content:space-between}@media (min-width:1024px){.miam-list-input[_ngcontent-%COMP%] .miam-list-input__actions[_ngcontent-%COMP%]{width:calc(45% - 32px)}}@media (max-width:1023px){.miam-list-input[_ngcontent-%COMP%] .miam-list-input__actions[_ngcontent-%COMP%]{flex-direction:column}}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__actions[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]{flex:1;margin-top:0;outline:none;resize:none}@media (max-width:1023px){.miam-list-input[_ngcontent-%COMP%] .miam-list-input__actions[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]{width:90vw}}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__actions[_ngcontent-%COMP%] .miam-list-input__actions__instructions[_ngcontent-%COMP%]{background-color:var(--m-color-info);border-radius:8px;color:var(--m-color-info-text);max-width:calc(98vw - 776px);padding:8px;position:absolute;top:315px;white-space:pre-line;width:400px}@media (max-width:1023px){.miam-list-input[_ngcontent-%COMP%] .miam-list-input__actions[_ngcontent-%COMP%] .miam-list-input__actions__instructions[_ngcontent-%COMP%]{margin-top:16px;max-width:unset;position:unset;width:unset}}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__actions[_ngcontent-%COMP%] .miam-list-input__instructions__direction[_ngcontent-%COMP%]{margin-left:4px}@media (max-width:1023px){.miam-list-input[_ngcontent-%COMP%] .miam-list-input__actions[_ngcontent-%COMP%] .miam-list-input__instructions__direction[_ngcontent-%COMP%]{display:none}}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{height:-webkit-fit-content;height:-moz-fit-content;height:fit-content}.miam-list-input__row__preview[_ngcontent-%COMP%]{align-items:center;display:flex;width:530px}@media (max-width:1023px){.miam-list-input__row__preview[_ngcontent-%COMP%]{flex-wrap:wrap;width:80vw}}.miam-list-input__row__preview[_ngcontent-%COMP%] .miam-list-input__preview__text[_ngcontent-%COMP%]{padding:5px}.miam-list-input__row__preview[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:first-of-type{flex:1;flex-shrink:1;margin-left:8px}.miam-list-input__row__preview[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:nth-of-type(2n){margin-right:8px}.miam-list-input__row__placeholder[_ngcontent-%COMP%]{-moz-user-select:none;-webkit-touch-callout:none;-webkit-user-select:none;background:var(--m-color-grey07);border-radius:8px;margin-right:24px;min-height:60px;user-select:none}.cdk-drag-animating[_ngcontent-%COMP%], .miam-list-input__row__placeholder[_ngcontent-%COMP%], ul.cdk-drop-list-dragging[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}"] });
457
+ } }, directives: [i2.NgControlStatusGroup, i2.FormGroupDirective, i3.NgIf, i4.CdkTextareaAutosize, i2.DefaultValueAccessor, i2.NgControlStatus, i2.FormControlDirective, i5.CdkDropList, i3.NgForOf, i5.CdkDrag, i6.IconComponent, i5.CdkDragHandle, i2.FormControlName, i5.CdkDragPlaceholder, i5.CdkDragPreview, i2.FormGroupName, i3.NgClass, i7.AutowidthInputDirective, i2.NgSelectOption, i2.ɵangular_packages_forms_forms_x], pipes: [i3.AsyncPipe, i8.CapitalizeFirstLetterPipe], styles: [".miam-list-input[_ngcontent-%COMP%]{padding:8px}@media (min-width:1024px){.miam-list-input[_ngcontent-%COMP%]{width:calc(100% - 16px)}}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%]{margin-top:50px;position:relative}@media (min-width:1024px){.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%]{width:55%}}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] .miam-list-input__list__label[_ngcontent-%COMP%]{background-color:var(--m-color-secondary-light);border-radius:8px 8px 0 0;color:var(--m-color-secondary);font-weight:700;left:0;padding:8px 24px;position:absolute;top:-33px;width:200px;z-index:0}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] .miam-list-input__container[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:400px;margin-bottom:32px;overflow-x:hidden;overflow-y:auto;position:inherit;z-index:1}@media (max-width:1023px){.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] .miam-list-input__container[_ngcontent-%COMP%]{height:55vh;margin-bottom:16px;width:unset}}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] .miam-list-input__container[_ngcontent-%COMP%]::-webkit-scrollbar-button{height:20px}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] .miam-list-input__container[_ngcontent-%COMP%]::-webkit-scrollbar-track{background:var(--m-color-grey)}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] .miam-list-input__container[_ngcontent-%COMP%]::-webkit-scrollbar{cursor:-webkit-grab;height:7px;width:5px}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] .miam-list-input__container[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:var(--m-color-primary);border-radius:5px}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;row-gap:8px}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{-moz-column-gap:16px;align-items:center;column-gap:16px;display:flex;list-style:none}@media (max-width:1023px){.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{-moz-column-gap:0;column-gap:0}}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%]{-moz-user-select:none;-webkit-touch-callout:none;-webkit-user-select:none;align-items:center;display:flex;flex:1;flex-direction:row;gap:16px;user-select:none}@media (max-width:1023px){.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%]{margin-right:4px}}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]{max-width:unset;padding:inherit}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%] .m-input[_ngcontent-%COMP%]{margin:unset;max-width:unset;min-width:unset}@media (max-width:359px){.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%] .m-input[_ngcontent-%COMP%]{max-width:60vw}}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%] .miam-list-input__row__left[_ngcontent-%COMP%]{align-items:center;display:flex;flex-direction:row}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%] .miam-list-input__row__left[_ngcontent-%COMP%] .miam-list-input__row__grip[_ngcontent-%COMP%]{cursor:move}@media (max-width:1023px){.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%] .miam-list-input__row__left[_ngcontent-%COMP%] .miam-list-input__row__grip[_ngcontent-%COMP%]{margin-left:4px}}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%] .miam-list-input__row__left[_ngcontent-%COMP%] .m-input[_ngcontent-%COMP%]{margin-left:8px;margin-right:8px;width:200px}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%] .miam-list-input__row__right[_ngcontent-%COMP%]{align-items:center;display:flex;flex:1;flex-direction:row}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%] .miam-list-input__row__right[_ngcontent-%COMP%] .m-input[_ngcontent-%COMP%]{margin-right:8px;width:80px}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%] .miam-list-input__row__right[_ngcontent-%COMP%] .m-input[_ngcontent-%COMP%]:first-child{flex:1}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%] .miam-list-input__row__right[_ngcontent-%COMP%] .m-input[_ngcontent-%COMP%]:last-child{margin-right:0;text-align:right}@media (max-width:1023px){.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%] .miam-list-input__row__right[_ngcontent-%COMP%]{flex-wrap:wrap}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%] .miam-list-input__row__right[_ngcontent-%COMP%] .m-input[_ngcontent-%COMP%]{flex:1;margin-bottom:8px;margin-right:4px}}@media (max-width:359px){.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%] .miam-list-input__row__right[_ngcontent-%COMP%]{max-width:60vw}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%] .miam-list-input__row__right[_ngcontent-%COMP%] .m-input[_ngcontent-%COMP%]{max-width:58vw}}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%] .miam-list-input__row__right[_ngcontent-%COMP%] .alert-success[_ngcontent-%COMP%]{background:var(--m-color-white);border:1px solid var(--m-color-success);border-radius:8px;box-shadow:0 0 4px var(--m-color-success)}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__container__row[_ngcontent-%COMP%] .miam-list-input__row__right[_ngcontent-%COMP%] .alert-danger[_ngcontent-%COMP%]{background:var(--m-color-white);border:1px solid var(--m-color-danger);border-radius:8px;box-shadow:0 0 4px var(--m-color-danger)}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__row__controls[_ngcontent-%COMP%]{align-items:center;display:flex;gap:8px;justify-content:space-between}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__row__controls[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{display:flex;justify-content:center;width:50px}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__row__controls[_ngcontent-%COMP%] label[_ngcontent-%COMP%] .miam-list-input__row__picture[_ngcontent-%COMP%]{-webkit-tap-highlight-color:transparent;width:50px}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__row__controls[_ngcontent-%COMP%] label[_ngcontent-%COMP%] .miam-list-input__row__picture.clickable[_ngcontent-%COMP%]{cursor:pointer}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__row__controls[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{display:none}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .miam-list-input__row__controls[_ngcontent-%COMP%] .miam-list-input__row__trash[_ngcontent-%COMP%]{-webkit-tap-highlight-color:transparent;cursor:pointer}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]{border-radius:var(--m-border-radius);flex:1;margin:0;max-width:none;outline:none;padding:5px;resize:none}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] textarea.warnning[_ngcontent-%COMP%]{background-color:var(--m-color-secondary-light);color:var(--m-color-secondary)}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] textarea.error[_ngcontent-%COMP%]{background-color:var(--m-color-danger);color:var(--m-color-danger-text)}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__list[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] textarea[cdktextareaautosize][_ngcontent-%COMP%]{overflow:hidden}.miam-list-input[_ngcontent-%COMP%] .hint[_ngcontent-%COMP%]{border-radius:var(--m-border-radius);flex:1;font-size:12px;font-weight:600;padding-bottom:10px}.miam-list-input[_ngcontent-%COMP%] .hint.warnning[_ngcontent-%COMP%]{color:var(--m-color-secondary)}.miam-list-input[_ngcontent-%COMP%] .hint.error[_ngcontent-%COMP%]{color:var(--m-color-danger)}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__placeholder[_ngcontent-%COMP%]{align-items:center;justify-content:center}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__placeholder[_ngcontent-%COMP%] .miam-list-input__placeholder__hint[_ngcontent-%COMP%]{color:var(--m-color-secondary);margin-top:40px;opacity:.5;text-align:center}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__actions[_ngcontent-%COMP%]{-moz-column-gap:32px;column-gap:32px;display:flex;justify-content:space-between}@media (min-width:1024px){.miam-list-input[_ngcontent-%COMP%] .miam-list-input__actions[_ngcontent-%COMP%]{width:calc(45% - 32px)}}@media (max-width:1023px){.miam-list-input[_ngcontent-%COMP%] .miam-list-input__actions[_ngcontent-%COMP%]{flex-direction:column}}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__actions[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]{flex:1;margin-top:0;outline:none;resize:none}@media (max-width:1023px){.miam-list-input[_ngcontent-%COMP%] .miam-list-input__actions[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]{width:90vw}}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__actions[_ngcontent-%COMP%] .miam-list-input__actions__instructions[_ngcontent-%COMP%]{background-color:var(--m-color-info);border-radius:8px;color:var(--m-color-info-text);max-width:calc(98vw - 776px);padding:8px;position:absolute;top:315px;white-space:pre-line;width:400px}@media (max-width:1023px){.miam-list-input[_ngcontent-%COMP%] .miam-list-input__actions[_ngcontent-%COMP%] .miam-list-input__actions__instructions[_ngcontent-%COMP%]{margin-top:16px;max-width:unset;position:unset;width:unset}}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__actions[_ngcontent-%COMP%] .miam-list-input__instructions__direction[_ngcontent-%COMP%]{margin-left:4px}@media (max-width:1023px){.miam-list-input[_ngcontent-%COMP%] .miam-list-input__actions[_ngcontent-%COMP%] .miam-list-input__instructions__direction[_ngcontent-%COMP%]{display:none}}.miam-list-input[_ngcontent-%COMP%] .miam-list-input__actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{height:-webkit-fit-content;height:-moz-fit-content;height:fit-content}.miam-list-input__row__preview[_ngcontent-%COMP%]{align-items:center;display:flex;width:530px}@media (max-width:1023px){.miam-list-input__row__preview[_ngcontent-%COMP%]{flex-wrap:wrap;width:80vw}}.miam-list-input__row__preview[_ngcontent-%COMP%] .miam-list-input__preview__text[_ngcontent-%COMP%]{padding:5px}.miam-list-input__row__preview[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:first-of-type{flex:1;flex-shrink:1;margin-left:8px}.miam-list-input__row__preview[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:nth-of-type(2n){margin-right:8px}.miam-list-input__row__placeholder[_ngcontent-%COMP%]{-moz-user-select:none;-webkit-touch-callout:none;-webkit-user-select:none;background:var(--m-color-grey07);border-radius:8px;margin-right:24px;min-height:60px;user-select:none}.cdk-drag-animating[_ngcontent-%COMP%], .miam-list-input__row__placeholder[_ngcontent-%COMP%], ul.cdk-drop-list-dragging[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}"] });
390
458
  /*@__PURE__*/ (function () { i0.ɵsetClassMetadata(ListInputComponent, [{
391
459
  type: Component,
392
460
  args: [{
@@ -413,4 +481,4 @@ ListInputComponent.ɵcmp = i0.ɵɵdefineComponent({ type: ListInputComponent, se
413
481
  }], orderHasChanged: [{
414
482
  type: Output
415
483
  }] }); })();
416
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2J1aWxkcy9taWFtL25nLW1pYW0tc2RrL3Byb2plY3RzL25nLW1pYW0vc3JjLyIsInNvdXJjZXMiOlsibGliL19jb21wb25lbnRzL2xpc3QtaW5wdXQvbGlzdC1pbnB1dC5jb21wb25lbnQudHMiLCJsaWIvX2NvbXBvbmVudHMvbGlzdC1pbnB1dC9saXN0LWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFlLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7OztJQ1N2QywwQkFBeUU7OztJQUN6RSwrQkFDRTtJQUFBLG1DQUF1RztJQUN2RyxnQ0FBeUQ7SUFBQSxZQUFvRDtJQUFBLGlCQUFPO0lBQ3RILGlCQUFNOzs7OztJQUYrQyxlQUFzQjtJQUF0Qiw0Q0FBc0I7SUFDaEIsZUFBb0Q7SUFBcEQsb0lBQW9EOzs7O0lBWnJILDhCQUNFO0lBQUEsaUNBQ0U7SUFBQSxpQ0FDRTtJQUFBLCtCQUNBO0lBQUEsbUNBQTJJO0lBQzNJLHdDQUMwRztJQURwQyx1T0FBb0I7SUFDSyxpQkFBVztJQUMxRyxpQkFBTTtJQUNOLHdDQUFrSjtJQUFoRywyT0FBbUI7SUFBOEQsaUJBQWU7SUFDbEosNkZBQW1FO0lBQ25FLDZGQUNF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QUFBLGdDQUF1RDtRQUFBLG1CQUFFO1FBQUEsaUJBQU87UUFDMUUsaUJBQVM7UUFDVCxxRUFBeUU7UUFDM0UsaUJBQU07UUFDUixpQkFBTTs7O1FBbEcrQixlQUFrQjtRQUFsQixvQ0FBa0I7UUFDVCxlQUFTO1FBQVQsK0JBQVM7UUFDL0MsZUFBc0Q7UUFBdEQsd0ZBQXNELGlCQUFBO1FBMEZ4RCxlQUE2QjtRQUE3QiwrQ0FBNkI7UUFBQyw4Q0FBa0M7UUFJN0QsZUFBb0I7UUFBcEIsdUNBQW9COztrRERuRmhCLGtCQUFrQjtjQUw5QixTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsV0FBVyxFQUFFLDZCQUE2QjtnQkFDMUMsU0FBUyxFQUFFLENBQUMsNkJBQTZCLENBQUM7YUFDM0M7K0hBR1UsSUFBSTtrQkFBWixLQUFLO1lBQ0csV0FBVztrQkFBbkIsS0FBSztZQUNHLEtBQUs7a0JBQWIsS0FBSztZQUNHLFlBQVk7a0JBQXBCLEtBQUs7WUFDRyxjQUFjO2tCQUF0QixLQUFLO1lBQ0csSUFBSTtrQkFBWixLQUFLO1lBQ0csbUJBQW1CO2tCQUEzQixLQUFLO1lBRUksUUFBUTtrQkFBakIsTUFBTTtZQUNHLGVBQWU7a0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gJy4uLy4uL190eXBlcy9pY29uLmVudW0nO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEluZ3JlZGllbnRzU2VydmljZSB9IGZyb20gJy4uLy4uL19zZXJ2aWNlcyc7XG5pbXBvcnQgeyBJbmdyZWRpZW50IH0gZnJvbSAnLi4vLi4vX21vZGVscy9pbmdyZWRpZW50JztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctbWlhbS1saXN0LWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xpc3QtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9saXN0LWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIExpc3RJbnB1dENvbXBvbmVudCB7XG5cbiAgQElucHV0KCkgaGludDogc3RyaW5nO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xuICBASW5wdXQoKSBpbnN0cnVjdGlvbnM6IHN0cmluZztcbiAgQElucHV0KCkgaW5ncmVkaWVudE1vZGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGxpc3Q6IEZvcm1BcnJheSA9IG5ldyBGb3JtQXJyYXkoW10pO1xuICBASW5wdXQoKSBpbmdyZWRpZW50c1BpY3R1cmVzOiB7IHZpc2libGU6IGJvb2xlYW4sIGVkaXRhYmxlOiBib29sZWFuIH0gPSB7IHZpc2libGU6IGZhbHNlLCBlZGl0YWJsZTogZmFsc2UgfTtcblxuICBAT3V0cHV0KCkgZGVsZXRlSWQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+O1xuICBAT3V0cHV0KCkgb3JkZXJIYXNDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8dm9pZD47XG5cbiAgaWNvbiA9IEljb247XG4gIGhpZGVFcnJvcnM6IGJvb2xlYW47XG4gIGZpbGxMaXN0SW5wdXQ6IEZvcm1Db250cm9sO1xuICBtb3Vzc2VEb3duT25CdXR0b246IGJvb2xlYW47XG4gIHByaXZhdGUgcHJldmlvdXNRdWFudGl0aWVzOiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluZ3JlZGllbnRTZXJ2aWNlOiBJbmdyZWRpZW50c1NlcnZpY2UsIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLCBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICB0aGlzLmZpbGxMaXN0SW5wdXQgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuICAgIHRoaXMuZGVsZXRlSWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5vcmRlckhhc0NoYW5nZWQgID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIHRoaXMucHJldmlvdXNRdWFudGl0aWVzID0gW107XG4gIH1cblxuICBkZWxldGUoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLmxpc3QuY29udHJvbHNbaW5kZXhdW2Bjb250cm9sc2BdLmlkPy52YWx1ZSkge1xuICAgICAgdGhpcy5kZWxldGVJZC5lbWl0KHRoaXMubGlzdC5jb250cm9sc1tpbmRleF1bYGNvbnRyb2xzYF0uaWQudmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLmxpc3QucmVtb3ZlQXQoaW5kZXgpO1xuICAgIHRoaXMubGlzdC5tYXJrQXNEaXJ0eSgpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHN1Ym1pdCgpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLmZpbGxMaXN0SW5wdXQudmFsdWU/LnRyaW1FbmQoKS5zcGxpdCgnXFxuJyk7XG5cbiAgICBpZiAodmFsdWVzICYmIHZhbHVlcy5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAodGhpcy5pbmdyZWRpZW50TW9kZSkge1xuICAgICAgICB0aGlzLmluZ3JlZGllbnRTZXJ2aWNlLmZvcm1hdEluZ3JlZGllbnRzKHZhbHVlcykucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKGluZ3JlZGllbnRzOiBJbmdyZWRpZW50W10pID0+IHtcbiAgICAgICAgICBpbmdyZWRpZW50cy5mb3JFYWNoKGluZyA9PiB7XG4gICAgICAgICAgICBpbmcuYXR0cmlidXRlcy5xdWFudGl0eSA9IHBhcnNlRmxvYXQoaW5nLmF0dHJpYnV0ZXMucXVhbnRpdHkpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB0aGlzLmxpc3QucHVzaCh0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICAgICAgaWQ6IG5ldyBGb3JtQ29udHJvbChpbmcuaWQgIT09ICctMScgPyBpbmcuaWQgOiBudWxsKSxcbiAgICAgICAgICAgICAgYXR0cmlidXRlczogdGhpcy5mYi5ncm91cCh7XG4gICAgICAgICAgICAgICAgcXVhbnRpdHk6IG5ldyBGb3JtQ29udHJvbChpbmcuYXR0cmlidXRlcy5xdWFudGl0eSwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgICAgICAgICAgdW5pdDogbmV3IEZvcm1Db250cm9sKGluZy5hdHRyaWJ1dGVzLnVuaXQsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICAgICAgICAgIG5hbWU6IG5ldyBGb3JtQ29udHJvbChpbmcuYXR0cmlidXRlcy5uYW1lLCBWYWxpZGF0b3JzLnJlcXVpcmVkKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgdGhpcy5wcmV2aW91c1F1YW50aXRpZXMucHVzaChpbmcuYXR0cmlidXRlcy5xdWFudGl0eSk7XG4gICAgICAgICAgICB0aGlzLmxpc3QubWFya0FzRGlydHkoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZXMuZm9yRWFjaCgoZWxlbWVudDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgaWYgKGVsZW1lbnQudHJpbSgpKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3QucHVzaCh0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICAgICAgYXR0cmlidXRlczogdGhpcy5mYi5ncm91cCh7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IG5ldyBGb3JtQ29udHJvbChlbGVtZW50KVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLmxpc3QubWFya0FzRGlydHkoKTtcbiAgICB9XG5cbiAgICB0aGlzLmZpbGxMaXN0SW5wdXQucmVzZXQoKTtcbiAgICB0aGlzLm1vdXNzZURvd25PbkJ1dHRvbiA9IGZhbHNlO1xuICB9XG5cbiAgY2hlY2tSb3coaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5saXN0LmNvbnRyb2xzW2luZGV4XS5nZXQoJ2F0dHJpYnV0ZXMnKS5nZXQoJ2Rlc2NyaXB0aW9uJykudmFsdWUgfHwgIXRoaXMubGlzdC5jb250cm9sc1tpbmRleF0uZ2V0KCdhdHRyaWJ1dGVzJykuZ2V0KCdkZXNjcmlwdGlvbicpLnZhbHVlLnRyaW0oKSkge1xuICAgICAgdGhpcy5kZWxldGUoaW5kZXgpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVF1YW50aXR5VmFsdWUoZXZlbnQsIGluZGV4KSB7XG4gICAgaWYgKE51bWJlci5pc05hTigrZXZlbnQpKXtcbiAgICAgIHRoaXMubGlzdC5jb250cm9sc1tpbmRleF1bJ2NvbnRyb2xzJ11bJ2F0dHJpYnV0ZXMnXVsnY29udHJvbHMnXVsncXVhbnRpdHknXS52YWx1ZSA9IHRoaXMucHJldmlvdXNRdWFudGl0aWVzW2luZGV4XTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTsgLy8gTmVjZXNzYXJ5IHRvIHVwZGF0ZSB0aGUgdmlldyB3aXRoIHRoZSBwcmV2aW91cyB2YWx1ZVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMucHJldmlvdXNRdWFudGl0aWVzW2luZGV4XSA9IGV2ZW50OyAvLyBObyB1cGRhdGUgb2YgdGhlIHZpZXcgc28gbm8gY2RyLmRldGVjdENoYW5nZXMoKVxuICAgIH1cbiAgfVxuXG4gIGRyYWcoKSB7XG4gICAgdGhpcy5oaWRlRXJyb3JzID0gdHJ1ZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxzdHJpbmdbXT4pOiB2b2lkIHtcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5saXN0LmNvbnRyb2xzLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIC8vIGlmIHlvdSByZW9yZGVyZWQgdGhlIGxpc3QgYmUgc3VyZSB0aGUgcHJldmlvdXMgcXVhbnRpdGllcyBjaGFuZ2VzIGFjY29yZGluZ2x5XG4gICAgaWYgKHRoaXMuaW5ncmVkaWVudE1vZGUpIHtcbiAgICAgIHRoaXMucHJldmlvdXNRdWFudGl0aWVzID0gW107XG4gICAgICB0aGlzLmxpc3QuY29udHJvbHMuZm9yRWFjaChpID0+IHtcbiAgICAgICAgdGhpcy5wcmV2aW91c1F1YW50aXRpZXMucHVzaChpWydjb250cm9scyddWydhdHRyaWJ1dGVzJ11bJ2NvbnRyb2xzJ11bJ3F1YW50aXR5J10udmFsdWUpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMubGlzdC5tYXJrQXNEaXJ0eSgpO1xuICAgIHRoaXMuaGlkZUVycm9ycyA9IGZhbHNlO1xuICAgIHRoaXMub3JkZXJIYXNDaGFuZ2VkLmVtaXQoKTtcbiAgfVxuXG4gIGlzSW5ncmVkaWVudFJldmlld2VkKGluZ3JlZGllbnROYW1lKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaW5ncmVkaWVudFNlcnZpY2UuaXNSZXZpZXdlZE5hbWUoaW5ncmVkaWVudE5hbWUudG9Mb3dlckNhc2UoKSk7XG4gIH1cblxuICBpc1F1YW50aXR5UmV2aWV3ZWQodW5pdE5hbWUpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5pbmdyZWRpZW50U2VydmljZS5pc1Jldmlld2VkVW5pdCh1bml0TmFtZS50b0xvd2VyQ2FzZSgpKTtcbiAgfVxuXG4gIHRyYWNrQnlJbmRleChpbmRleDogbnVtYmVyLCBlbDogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gZWw7XG4gIH1cblxuICAvLyBUT0RPOiBzaXplIGNoZWNrXG4gIHVwbG9hZEluZ3JlZGllbnRQaWN0dXJlKGZpbGVzLCBpbmdGb3JtKTogdm9pZCB7XG4gICAgaWYgKCFmaWxlc1swXSB8fCAhaW5nRm9ybSkgeyByZXR1cm47IH1cblxuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZXNbMF0pO1xuICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICBpbmdGb3JtLnBhdGNoVmFsdWUocmVhZGVyLnJlc3VsdCk7XG4gICAgICB0aGlzLmxpc3QubWFya0FzRGlydHkoKTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9O1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibWlhbS1saXN0LWlucHV0XCI+XG4gIDxkaXYgY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX2xpc3RcIiBbZm9ybUdyb3VwXT1cImxpc3RcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1saXN0LWlucHV0X19saXN0X19sYWJlbFwiPnt7bGFiZWx9fTwvZGl2PlxuICAgIDx1bCAqbmdJZj0nbGlzdC5jb250cm9scz8ubGVuZ3RoID4gMCBlbHNlIGhpbnRQbGFjZWhvbGRlcicgY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX2NvbnRhaW5lciBtLWRlZmF1bHQtY2FyZFwiIGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPSchaW5ncmVkaWVudE1vZGUgZWxzZSBpbmdyZWRpZW50Um93Jz5cbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCByb3cgb2YgbGlzdC5jb250cm9sczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeUluZGV4XCIgIGNka0RyYWc+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwXT1cInJvd1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwXT1cInJvdz8uZ2V0KCdhdHRyaWJ1dGVzJylcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fY29udGFpbmVyX19yb3cgIG0tZGVmYXVsdC1jYXJkXCI+XG4gICAgICAgICAgICAgIDxuZy1taWFtLWljb24gcHJpbWFyeUNvbG9yPVwidmFyKC0tbS1jb2xvci1ncmV5MDUpXCIgY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX3Jvd19fZ3JpcFwiICBbaWNvbk5hbWVdPVwiaWNvbi5HcmlwXCIgY2RrRHJhZ0hhbmRsZT48L25nLW1pYW0taWNvbj5cbiAgICAgICAgICAgICAgPHRleHRhcmVhICBjZGtUZXh0YXJlYUF1dG9zaXplPSd0cnVlJyAjYXV0b3NpemU9XCJjZGtUZXh0YXJlYUF1dG9zaXplXCIgKGJsdXIpPSdjaGVja1JvdyhpKSdcbiAgICAgICAgICAgICAgICBjZGtBdXRvc2l6ZU1pblJvd3M9XCIxXCIgY2RrQXV0b3NpemVNYXhSb3dzPVwiNTBcIiBjbGFzcz1cIm0taW5wdXRcIiBmb3JtQ29udHJvbE5hbWU9J2Rlc2NyaXB0aW9uJz48L3RleHRhcmVhPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPG5nLW1pYW0taWNvbiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fcm93X190cmFzaFwiIChjbGljayk9XCJkZWxldGUoaSlcIiBwcmltYXJ5Q29sb3I9XCJ2YXIoLS1tLWNvbG9yLWdyZXkwNSlcIiBbaWNvbk5hbWVdPVwiaWNvbi5UcmFzaFwiPjwvbmctbWlhbS1pY29uPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1saXN0LWlucHV0X19yb3dfX3BsYWNlaG9sZGVyXCIgKmNka0RyYWdQbGFjZWhvbGRlcj48L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fcm93X19wcmV2aWV3IG0tZGVmYXVsdC1jYXJkXCIgKmNka0RyYWdQcmV2aWV3PlxuICAgICAgICAgICAgICAgIDxuZy1taWFtLWljb24gcHJpbWFyeUNvbG9yPVwidmFyKC0tbS1jb2xvci1ncmV5MDUpXCIgW2ljb25OYW1lXT1cImljb24uR3JpcFwiIGNka0RyYWdIYW5kbGU+PC9uZy1taWFtLWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX3ByZXZpZXdfX3RleHQgbS1ib2R5LXR5cG9cIj57e3Jvdz8uZ2V0KCdhdHRyaWJ1dGVzJyk/LmdldCgnZGVzY3JpcHRpb24nKS52YWx1ZX19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2xpPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2luZ3JlZGllbnRSb3c+XG4gICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCByb3cgb2YgbGlzdC5jb250cm9sczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeUluZGV4XCIgY2RrRHJhZz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX2NvbnRhaW5lcl9fcm93IG0tZGVmYXVsdC1jYXJkXCIgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1saXN0LWlucHV0X19yb3dfX2xlZnRcIj5cbiAgICAgICAgICAgICAgICA8bmctbWlhbS1pY29uIHByaW1hcnlDb2xvcj1cInZhcigtLW0tY29sb3ItZ3JleTA1KVwiIGNsYXNzPVwibWlhbS1saXN0LWlucHV0X19yb3dfX2dyaXBcIlxuICAgICAgICAgICAgICAgIFtpY29uTmFtZV09XCJpY29uLkdyaXBcIiBjZGtEcmFnSGFuZGxlPjwvbmctbWlhbS1pY29uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fcm93X19yaWdodFwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cIm0taW5wdXRcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIihpc0luZ3JlZGllbnRSZXZpZXdlZChyb3dbJ2NvbnRyb2xzJ11bJ2F0dHJpYnV0ZXMnXVsnY29udHJvbHMnXVsnbmFtZSddLnZhbHVlKSB8IGFzeW5jICkgPyAnYWxlcnQtc3VjY2VzcycgOiAnYWxlcnQtZGFuZ2VyJ1wiIFxuICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInJvd1snY29udHJvbHMnXVsnYXR0cmlidXRlcyddWydjb250cm9scyddWyduYW1lJ10udmFsdWUgfCBjYXBpdGFsaXplRmlyc3RMZXR0ZXJcIlxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJyb3dbJ2NvbnRyb2xzJ11bJ2F0dHJpYnV0ZXMnXVsnY29udHJvbHMnXVsnbmFtZSddXCIvPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cIm0taW5wdXRcIiBbbmdNb2RlbF09XCJyb3dbJ2NvbnRyb2xzJ11bJ2F0dHJpYnV0ZXMnXVsnY29udHJvbHMnXVsncXVhbnRpdHknXS52YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZVF1YW50aXR5VmFsdWUoJGV2ZW50LCBpKVwiXG4gICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwicm93Wydjb250cm9scyddWydhdHRyaWJ1dGVzJ11bJ2NvbnRyb2xzJ11bJ3F1YW50aXR5J11cIiBtYXhTaXplPTQgIGF1dG9XaWR0aElucHV0IC8+XG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwibS1pbnB1dFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiKGlzUXVhbnRpdHlSZXZpZXdlZChyb3dbJ2NvbnRyb2xzJ11bJ2F0dHJpYnV0ZXMnXVsnY29udHJvbHMnXVsndW5pdCddLnZhbHVlKSB8IGFzeW5jICkgPyAnYWxlcnQtc3VjY2VzcycgOiAnYWxlcnQtZGFuZ2VyJ1wiIFxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJyb3dbJ2NvbnRyb2xzJ11bJ2F0dHJpYnV0ZXMnXVsnY29udHJvbHMnXVsndW5pdCddXCIgIG1heFNpemU9OCBhdXRvV2lkdGhJbnB1dC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1saXN0LWlucHV0X19yb3dfX2NvbnRyb2xzXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJpbmctcGljdHVyZS17e2l9fVwiICpuZ0lmPVwiaW5ncmVkaWVudHNQaWN0dXJlcy52aXNpYmxlXCI+XG4gICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJyb3cuY29udHJvbHMuYXR0cmlidXRlcy5jb250cm9sc1sncGljdHVyZS11cmwnXT8udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBjbGlja2FibGU6IGluZ3JlZGllbnRzUGljdHVyZXMuZWRpdGFibGUgfVwiXG4gICAgICAgICAgICAgICAgICBbc3JjXT1cInJvdy5jb250cm9scy5hdHRyaWJ1dGVzLmNvbnRyb2xzWydwaWN0dXJlLXVybCddLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWlhbS1saXN0LWlucHV0X19yb3dfX3BpY3R1cmVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctbWlhbS1pY29uXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIiFyb3cuY29udHJvbHMuYXR0cmlidXRlcy5jb250cm9sc1sncGljdHVyZS11cmwnXT8udmFsdWUgJiYgaW5ncmVkaWVudHNQaWN0dXJlcy5lZGl0YWJsZVwiXG4gICAgICAgICAgICAgICAgICBbaWNvbk5hbWVdPVwiaWNvbi5QaWN0dXJlXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWlhbS1saXN0LWlucHV0X19yb3dfX3RyYXNoXCJcbiAgICAgICAgICAgICAgICAgIHByaW1hcnlDb2xvcj1cInZhcigtLW0tY29sb3ItZ3JleTA1KVwiXG4gICAgICAgICAgICAgICAgPjwvbmctbWlhbS1pY29uPlxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAqbmdJZj1cImluZ3JlZGllbnRzUGljdHVyZXMudmlzaWJsZSAmJiBpbmdyZWRpZW50c1BpY3R1cmVzLmVkaXRhYmxlXCJcbiAgICAgICAgICAgICAgICBpZD1cImluZy1waWN0dXJlLXt7aX19XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICAgICAgYWNjZXB0PVwiaW1hZ2UvanBlZywgaW1hZ2UvcG5nLCBpbWFnZS93ZWJwXCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInVwbG9hZEluZ3JlZGllbnRQaWN0dXJlKCRldmVudC50YXJnZXQuZmlsZXMsIHJvdy5jb250cm9scy5hdHRyaWJ1dGVzLmNvbnRyb2xzWydwaWN0dXJlLXVybCddKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLW1pYW0taWNvbiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fcm93X190cmFzaFwiIChjbGljayk9XCJkZWxldGUoaSlcIiBwcmltYXJ5Q29sb3I9XCJ2YXIoLS1tLWNvbG9yLWdyZXkwNSlcIiBbaWNvbk5hbWVdPVwiaWNvbi5UcmFzaFwiPjwvbmctbWlhbS1pY29uPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX3Jvd19fcGxhY2Vob2xkZXJcIiAqY2RrRHJhZ1BsYWNlaG9sZGVyPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX3Jvd19fcHJldmlldyBtLWRlZmF1bHQtY2FyZFwiICpjZGtEcmFnUHJldmlldz5cbiAgICAgICAgICAgICAgICAgIDxuZy1taWFtLWljb24gcHJpbWFyeUNvbG9yPVwidmFyKC0tbS1jb2xvci1ncmV5LXRleHQtZGFyaylcIiBcbiAgICAgICAgICAgICAgICAgICAgW2ljb25OYW1lXT1cImljb24uR3JpcFwiIGNka0RyYWdIYW5kbGU+PC9uZy1taWFtLWljb24+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm0tYm9keS10eXBvXCI+e3tyb3c/LmdldCgnYXR0cmlidXRlcycpPy5nZXQoJ25hbWUnKS52YWx1ZSB8IGNhcGl0YWxpemVGaXJzdExldHRlcn19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtLWJvZHktdHlwb1wiPnt7cm93Py5nZXQoJ2F0dHJpYnV0ZXMnKT8uZ2V0KCdxdWFudGl0eScpLnZhbHVlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm0tYm9keS10eXBvXCI+e3tyb3c/LmdldCgnYXR0cmlidXRlcycpPy5nZXQoJ3VuaXQnKS52YWx1ZX19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPCEtLSBpbmZvcm1hdGlvbiBtZXNzYWdlIC0tPlxuICAgICAgICAgICAgPCEtLSA8c3BhbiAqbmdJZj1cInJvdz8uZ2V0KCdhdHRyaWJ1dGVzJylbJ2lzTm90UmV2aWV3ZWRJbmdyZWRpZW50TmFtZSddICYmICFyb3cuaW52YWxpZCAmJiAhaGlkZUVycm9yc1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiaGludCB3YXJubmluZ1wiPk5vdXMgbmUgY29ubmFpc3NvbnMgcGFzIGVuY29yZSBjZXQgaW5ncsOpZGllbnQ8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJvdy5pbnZhbGlkICYmICFoaWRlRXJyb3JzXCIgY2xhc3M9XCJoaW50IGVycm9yXCI+TGUgbm9tIGRlIGwnaW5ncsOpZGllbnQgbmUgcGV1dCBwYXMgw6p0cmVcbiAgICAgICAgICAgICAgdmlkZTwvc3Bhbj4gLS0+XG4gICAgICAgICAgPC9saT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC91bD5cbiAgPC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSAjaGludFBsYWNlaG9sZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX3BsYWNlaG9sZGVyIG1pYW0tbGlzdC1pbnB1dF9fY29udGFpbmVyIG0tZGVmYXVsdC1jYXJkXCI+XG4gICAgICA8bmctbWlhbS1pY29uIHByaW1hcnlDb2xvcj1cInZhcigtLW0tY29sb3ItZ3JleS10ZXh0LWRhcmspXCIgW3dpZHRoXT1cIjE1MlwiIFtoZWlnaHRdPVwiMTU3XCIgW2ljb25OYW1lXT1cImljb24uRW1wdHlcIj5cbiAgICAgIDwvbmctbWlhbS1pY29uPlxuICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX3BsYWNlaG9sZGVyX19oaW50IG0tYm9keS10eXBvXCI+T3Vwcy4uLiBj4oCZZXN0IHZpZGUsIGNvbW1lbmNleiDDoCBham91dGVyIGRlcyB7eyBoaW50IH19ICE8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX2FjdGlvbnNcIj5cbiAgICA8dGV4dGFyZWEgbWF0SW5wdXQgY2xhc3M9XCJtLWlucHV0XCIgY2RrVGV4dGFyZWFBdXRvc2l6ZSAgY2RrQXV0b3NpemVNaW5Sb3dzPVwiNFwiXG4gICAgICBjZGtBdXRvc2l6ZU1heFJvd3M9XCI0XCIgKGtleWRvd24uZW50ZXIpPSdtb3Vzc2VEb3duT25CdXR0b24gPSB0cnVlJyBcbiAgICAgIFtmb3JtQ29udHJvbF09XCJmaWxsTGlzdElucHV0XCIgYXR0ci5wbGFjZWhvbGRlcj1cInt7cGxhY2Vob2xkZXJ9fVwiPjwvdGV4dGFyZWE+XG4gICAgPGJ1dHRvbiBjbGFzcz1cIm0tYnV0dG9uLXByaW1hcnlcIiAobW91c2Vkb3duKT0nbW91c3NlRG93bk9uQnV0dG9uID0gdHJ1ZScgKG1vdXNldXApPVwic3VibWl0KClcIj5cbiAgICAgIEFqb3V0ZXIgPHNwYW4gY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX2luc3RydWN0aW9uc19fZGlyZWN0aW9uXCI+Pj48L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPGRpdiAqbmdJZj1cImluc3RydWN0aW9uc1wiIGNsYXNzPVwibWlhbS1saXN0LWlucHV0X19hY3Rpb25zX19pbnN0cnVjdGlvbnNcIj57e2luc3RydWN0aW9uc319PC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+Il19
484
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2J1aWxkcy9taWFtL25nLW1pYW0tc2RrL3Byb2plY3RzL25nLW1pYW0vc3JjLyIsInNvdXJjZXMiOlsibGliL19jb21wb25lbnRzL2xpc3QtaW5wdXQvbGlzdC1pbnB1dC5jb21wb25lbnQudHMiLCJsaWIvX2NvbXBvbmVudHMvbGlzdC1pbnB1dC9saXN0LWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFlLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7OztJQ1N2QywwQkFBeUU7OztJQUN6RSwrQkFDRTtJQUFBLG1DQUF1RztJQUN2RyxnQ0FBeUQ7SUFBQSxZQUFvRDtJQUFBLGlCQUFPO0lBQ3RILGlCQUFNOzs7OztJQUYrQyxlQUFzQjtJQUF0Qiw0Q0FBc0I7SUFDaEIsZUFBb0Q7SUFBcEQsb0lBQW9EOzs7O0lBWnJILDhCQUNFO0lBQUEsaUNBQ0U7SUFBQSxpQ0FDRTtJQUFBLCtCQUNBO0lBQUEsbUNBQTJJO0lBQzNJLHdDQUMwRztJQURwQyx1T0FBb0I7SUFDSyxpQkFBVztJQUMxRyxpQkFBTTtJQUNOLHdDQUFrSjtJQUFoRywyT0FBbUI7SUFBOEQsaUJBQWU7SUFDbEosNkZBQW1FO0lBQ25FLDZGQUNF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O1lBQ0csZUFBZTtrQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSAnLi4vLi4vX3R5cGVzL2ljb24uZW51bSc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSW5ncmVkaWVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vX3NlcnZpY2VzJztcbmltcG9ydCB7IEluZ3JlZGllbnQgfSBmcm9tICcuLi8uLi9fbW9kZWxzL2luZ3JlZGllbnQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZy1taWFtLWxpc3QtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpc3QtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTGlzdElucHV0Q29tcG9uZW50IHtcblxuICBASW5wdXQoKSBoaW50OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJyc7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGluc3RydWN0aW9uczogc3RyaW5nO1xuICBASW5wdXQoKSBpbmdyZWRpZW50TW9kZTogYm9vbGVhbjtcbiAgQElucHV0KCkgbGlzdDogRm9ybUFycmF5ID0gbmV3IEZvcm1BcnJheShbXSk7XG4gIEBJbnB1dCgpIGluZ3JlZGllbnRzUGljdHVyZXM6IHsgdmlzaWJsZTogYm9vbGVhbiwgZWRpdGFibGU6IGJvb2xlYW4gfSA9IHsgdmlzaWJsZTogZmFsc2UsIGVkaXRhYmxlOiBmYWxzZSB9O1xuXG4gIEBPdXRwdXQoKSBkZWxldGVJZDogRXZlbnRFbWl0dGVyPHN0cmluZz47XG4gIEBPdXRwdXQoKSBvcmRlckhhc0NoYW5nZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPjtcblxuICBpY29uID0gSWNvbjtcbiAgaGlkZUVycm9yczogYm9vbGVhbjtcbiAgZmlsbExpc3RJbnB1dDogRm9ybUNvbnRyb2w7XG4gIG1vdXNzZURvd25PbkJ1dHRvbjogYm9vbGVhbjtcbiAgcHJpdmF0ZSBwcmV2aW91c1F1YW50aXRpZXM6IHN0cmluZ1tdO1xuICBwcml2YXRlIHJlYWRvbmx5IG1heFNlbGVjdGlvbk51bWJlcjogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5ncmVkaWVudFNlcnZpY2U6IEluZ3JlZGllbnRzU2VydmljZSwgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHRoaXMuZmlsbExpc3RJbnB1dCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG4gICAgdGhpcy5kZWxldGVJZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICB0aGlzLm9yZGVySGFzQ2hhbmdlZCAgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5wcmV2aW91c1F1YW50aXRpZXMgPSBbXTtcbiAgICB0aGlzLm1heFNlbGVjdGlvbk51bWJlciA9IDU7XG4gIH1cblxuICBkZWxldGUoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLmxpc3QuY29udHJvbHNbaW5kZXhdW2Bjb250cm9sc2BdLmlkPy52YWx1ZSkge1xuICAgICAgdGhpcy5kZWxldGVJZC5lbWl0KHRoaXMubGlzdC5jb250cm9sc1tpbmRleF1bYGNvbnRyb2xzYF0uaWQudmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLmxpc3QucmVtb3ZlQXQoaW5kZXgpO1xuICAgIHRoaXMubGlzdC5tYXJrQXNEaXJ0eSgpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHN1Ym1pdCgpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLmZpbGxMaXN0SW5wdXQudmFsdWU/LnRyaW1FbmQoKS5zcGxpdCgnXFxuJyk7XG5cbiAgICBpZiAodmFsdWVzICYmIHZhbHVlcy5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAodGhpcy5pbmdyZWRpZW50TW9kZSkge1xuICAgICAgICB0aGlzLmluZ3JlZGllbnRTZXJ2aWNlLmZvcm1hdEluZ3JlZGllbnRzKHZhbHVlcykucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKGluZ3JlZGllbnRzOiBJbmdyZWRpZW50W10pID0+IHtcbiAgICAgICAgICBpbmdyZWRpZW50cy5mb3JFYWNoKGluZyA9PiB7XG4gICAgICAgICAgICBpbmcuYXR0cmlidXRlcy5xdWFudGl0eSA9IHBhcnNlRmxvYXQoaW5nLmF0dHJpYnV0ZXMucXVhbnRpdHkpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB0aGlzLmxpc3QucHVzaCh0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICAgICAgaWQ6IG5ldyBGb3JtQ29udHJvbChpbmcuaWQgIT09ICctMScgPyBpbmcuaWQgOiBudWxsKSxcbiAgICAgICAgICAgICAgYXR0cmlidXRlczogdGhpcy5mYi5ncm91cCh7XG4gICAgICAgICAgICAgICAgcXVhbnRpdHk6IG5ldyBGb3JtQ29udHJvbChpbmcuYXR0cmlidXRlcy5xdWFudGl0eSwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgICAgICAgICAgdW5pdDogbmV3IEZvcm1Db250cm9sKGluZy5hdHRyaWJ1dGVzLnVuaXQsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICAgICAgICAgIG5hbWU6IG5ldyBGb3JtQ29udHJvbChpbmcuYXR0cmlidXRlcy5uYW1lLCBWYWxpZGF0b3JzLnJlcXVpcmVkKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgdGhpcy5wcmV2aW91c1F1YW50aXRpZXMucHVzaChpbmcuYXR0cmlidXRlcy5xdWFudGl0eSk7XG4gICAgICAgICAgICB0aGlzLmxpc3QubWFya0FzRGlydHkoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZXMuZm9yRWFjaCgoZWxlbWVudDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgaWYgKGVsZW1lbnQudHJpbSgpKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3QucHVzaCh0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICAgICAgYXR0cmlidXRlczogdGhpcy5mYi5ncm91cCh7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IG5ldyBGb3JtQ29udHJvbChlbGVtZW50KVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLmxpc3QubWFya0FzRGlydHkoKTtcbiAgICB9XG5cbiAgICB0aGlzLmZpbGxMaXN0SW5wdXQucmVzZXQoKTtcbiAgICB0aGlzLm1vdXNzZURvd25PbkJ1dHRvbiA9IGZhbHNlO1xuICB9XG5cbiAgY2hlY2tSb3coaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5saXN0LmNvbnRyb2xzW2luZGV4XS5nZXQoJ2F0dHJpYnV0ZXMnKS5nZXQoJ2Rlc2NyaXB0aW9uJykudmFsdWUgfHwgIXRoaXMubGlzdC5jb250cm9sc1tpbmRleF0uZ2V0KCdhdHRyaWJ1dGVzJykuZ2V0KCdkZXNjcmlwdGlvbicpLnZhbHVlLnRyaW0oKSkge1xuICAgICAgdGhpcy5kZWxldGUoaW5kZXgpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVF1YW50aXR5VmFsdWUoZXZlbnQsIGluZGV4KSB7XG4gICAgaWYgKE51bWJlci5pc05hTigrZXZlbnQpKXtcbiAgICAgIHRoaXMubGlzdC5jb250cm9sc1tpbmRleF1bJ2NvbnRyb2xzJ11bJ2F0dHJpYnV0ZXMnXVsnY29udHJvbHMnXVsncXVhbnRpdHknXS52YWx1ZSA9IHRoaXMucHJldmlvdXNRdWFudGl0aWVzW2luZGV4XTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTsgLy8gTmVjZXNzYXJ5IHRvIHVwZGF0ZSB0aGUgdmlldyB3aXRoIHRoZSBwcmV2aW91cyB2YWx1ZVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMucHJldmlvdXNRdWFudGl0aWVzW2luZGV4XSA9IGV2ZW50OyAvLyBObyB1cGRhdGUgb2YgdGhlIHZpZXcgc28gbm8gY2RyLmRldGVjdENoYW5nZXMoKVxuICAgIH1cbiAgfVxuXG4gIGRyYWcoKSB7XG4gICAgdGhpcy5oaWRlRXJyb3JzID0gdHJ1ZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxzdHJpbmdbXT4pOiB2b2lkIHtcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5saXN0LmNvbnRyb2xzLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIC8vIGlmIHlvdSByZW9yZGVyZWQgdGhlIGxpc3QgYmUgc3VyZSB0aGUgcHJldmlvdXMgcXVhbnRpdGllcyBjaGFuZ2VzIGFjY29yZGluZ2x5XG4gICAgaWYgKHRoaXMuaW5ncmVkaWVudE1vZGUpIHtcbiAgICAgIHRoaXMucHJldmlvdXNRdWFudGl0aWVzID0gW107XG4gICAgICB0aGlzLmxpc3QuY29udHJvbHMuZm9yRWFjaChpID0+IHtcbiAgICAgICAgdGhpcy5wcmV2aW91c1F1YW50aXRpZXMucHVzaChpWydjb250cm9scyddWydhdHRyaWJ1dGVzJ11bJ2NvbnRyb2xzJ11bJ3F1YW50aXR5J10udmFsdWUpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMubGlzdC5tYXJrQXNEaXJ0eSgpO1xuICAgIHRoaXMuaGlkZUVycm9ycyA9IGZhbHNlO1xuICAgIHRoaXMub3JkZXJIYXNDaGFuZ2VkLmVtaXQoKTtcbiAgfVxuXG4gIGlzSW5ncmVkaWVudFJldmlld2VkKGluZ3JlZGllbnROYW1lKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaW5ncmVkaWVudFNlcnZpY2UuaXNSZXZpZXdlZE5hbWUoaW5ncmVkaWVudE5hbWUudG9Mb3dlckNhc2UoKSk7XG4gIH1cblxuICBpc1F1YW50aXR5UmV2aWV3ZWQodW5pdE5hbWUpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5pbmdyZWRpZW50U2VydmljZS5pc1Jldmlld2VkVW5pdCh1bml0TmFtZS50b0xvd2VyQ2FzZSgpKTtcbiAgfVxuXG4gIHRyYWNrQnlJbmRleChpbmRleDogbnVtYmVyLCBlbDogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gZWw7XG4gIH1cblxuICAvLyBUT0RPOiBzaXplIGNoZWNrXG4gIHVwbG9hZEluZ3JlZGllbnRQaWN0dXJlKGZpbGVzLCBpbmdGb3JtKTogdm9pZCB7XG4gICAgaWYgKCFmaWxlc1swXSB8fCAhaW5nRm9ybSkgeyByZXR1cm47IH1cblxuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZXNbMF0pO1xuICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICBpbmdGb3JtLnBhdGNoVmFsdWUocmVhZGVyLnJlc3VsdCk7XG4gICAgICB0aGlzLmxpc3QubWFya0FzRGlydHkoKTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIGZpbHRlciB1c2luZyB0aGUgaW5wdXQgdGhlIHBvc3NpYmxlIGluZ3JlZGllbnQgbmFtZSB0aGUgdXNlciBtaWdodCB3YW50XG4gICAqIEBwYXJhbSBpbmRleFxuICAgKi9cbiAgcHVibGljIGdldEZpbHRlcmVkTmFtZUZyb21JbmRleChpbmRleDogbnVtYmVyKTogQXJyYXk8c3RyaW5nPntcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMubGlzdC5jb250cm9sc1tpbmRleF0udmFsdWUuYXR0cmlidXRlcy5uYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgcG9zc2libGVTZWxlY3Rpb24gPSB0aGlzLmluZ3JlZGllbnRTZXJ2aWNlLmdldFJldmlld2VkTmFtZXMoKTtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJQb3NzaWJsZVNlbGVjdGlvbkZyb21JbnB1dChpbnB1dCwgcG9zc2libGVTZWxlY3Rpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIGZpbHRlciB1c2luZyB0aGUgaW5wdXQgdGhlIHBvc3NpYmxlIHVuaXQgdGhlIHVzZXIgbWlnaHQgd2FudFxuICAgKiBAcGFyYW0gaW5kZXhcbiAgICovXG4gIHB1YmxpYyBnZXRGaWx0ZXJlZFVuaXRzRnJvbUluZGV4KGluZGV4OiBudW1iZXIpOiBBcnJheTxzdHJpbmc+e1xuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5saXN0LmNvbnRyb2xzW2luZGV4XS52YWx1ZS5hdHRyaWJ1dGVzLnVuaXQudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBwb3NzaWJsZVNlbGVjdGlvbiA9IHRoaXMuaW5ncmVkaWVudFNlcnZpY2UuZ2V0UmV2aWV3ZWRVbml0cygpO1xuICAgIHJldHVybiB0aGlzLmZpbHRlclBvc3NpYmxlU2VsZWN0aW9uRnJvbUlucHV0KGlucHV0LCBwb3NzaWJsZVNlbGVjdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJpYyBtZXRob2QgdG8gZmlsdGVyIHRoZSBuYW1lIGFuZCB0aGUgdW5pdFxuICAgKiBAcGFyYW0gaW5wdXQgdXNlciBpbnB1dFxuICAgKiBAcGFyYW0gcG9zc2libGVTZWxlY3Rpb24gcG9zc2libGUgc2VsZWN0aW9uIHRvIGRpc3BsYXkgdG8gdGhlIHVzZXJcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgZmlsdGVyUG9zc2libGVTZWxlY3Rpb25Gcm9tSW5wdXQoaW5wdXQ6IHN0cmluZywgcG9zc2libGVTZWxlY3Rpb246IEFycmF5PHN0cmluZz4pe1xuICAgIGNvbnN0IGZpbHRlcmVkU2VsZWN0aW9uID0gW107XG4gICAgY29uc3QgaW5wdXRMQyA9IGlucHV0LnRvTG93ZXJDYXNlKCk7XG4gICAgZm9yIChjb25zdCBzZWxlY3Rpb24gb2YgcG9zc2libGVTZWxlY3Rpb24pe1xuICAgICAgY29uc3Qgc2VsZWN0aW9uTEMgPSBzZWxlY3Rpb24udG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmIChzZWxlY3Rpb25MQy5pbmNsdWRlcyhpbnB1dExDKSAmJiBzZWxlY3Rpb25MQyAhPT0gaW5wdXRMQykgeyBmaWx0ZXJlZFNlbGVjdGlvbi5wdXNoKHNlbGVjdGlvbik7IH1cbiAgICAgIGlmIChmaWx0ZXJlZFNlbGVjdGlvbi5sZW5ndGggPj0gdGhpcy5tYXhTZWxlY3Rpb25OdW1iZXIpIHsgYnJlYWs7IH1cbiAgICB9XG4gICAgcmV0dXJuIGZpbHRlcmVkU2VsZWN0aW9uO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibWlhbS1saXN0LWlucHV0XCI+XG4gIDxkaXYgY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX2xpc3RcIiBbZm9ybUdyb3VwXT1cImxpc3RcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1saXN0LWlucHV0X19saXN0X19sYWJlbFwiPnt7bGFiZWx9fTwvZGl2PlxuICAgIDx1bCAqbmdJZj0nbGlzdC5jb250cm9scz8ubGVuZ3RoID4gMCBlbHNlIGhpbnRQbGFjZWhvbGRlcicgY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX2NvbnRhaW5lciBtLWRlZmF1bHQtY2FyZFwiIGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPSchaW5ncmVkaWVudE1vZGUgZWxzZSBpbmdyZWRpZW50Um93Jz5cbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCByb3cgb2YgbGlzdC5jb250cm9sczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeUluZGV4XCIgIGNka0RyYWc+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwXT1cInJvd1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwXT1cInJvdz8uZ2V0KCdhdHRyaWJ1dGVzJylcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fY29udGFpbmVyX19yb3cgIG0tZGVmYXVsdC1jYXJkXCI+XG4gICAgICAgICAgICAgIDxuZy1taWFtLWljb24gcHJpbWFyeUNvbG9yPVwidmFyKC0tbS1jb2xvci1ncmV5MDUpXCIgY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX3Jvd19fZ3JpcFwiICBbaWNvbk5hbWVdPVwiaWNvbi5HcmlwXCIgY2RrRHJhZ0hhbmRsZT48L25nLW1pYW0taWNvbj5cbiAgICAgICAgICAgICAgPHRleHRhcmVhICBjZGtUZXh0YXJlYUF1dG9zaXplPSd0cnVlJyAjYXV0b3NpemU9XCJjZGtUZXh0YXJlYUF1dG9zaXplXCIgKGJsdXIpPSdjaGVja1JvdyhpKSdcbiAgICAgICAgICAgICAgICBjZGtBdXRvc2l6ZU1pblJvd3M9XCIxXCIgY2RrQXV0b3NpemVNYXhSb3dzPVwiNTBcIiBjbGFzcz1cIm0taW5wdXRcIiBmb3JtQ29udHJvbE5hbWU9J2Rlc2NyaXB0aW9uJz48L3RleHRhcmVhPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPG5nLW1pYW0taWNvbiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fcm93X190cmFzaFwiIChjbGljayk9XCJkZWxldGUoaSlcIiBwcmltYXJ5Q29sb3I9XCJ2YXIoLS1tLWNvbG9yLWdyZXkwNSlcIiBbaWNvbk5hbWVdPVwiaWNvbi5UcmFzaFwiPjwvbmctbWlhbS1pY29uPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1saXN0LWlucHV0X19yb3dfX3BsYWNlaG9sZGVyXCIgKmNka0RyYWdQbGFjZWhvbGRlcj48L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fcm93X19wcmV2aWV3IG0tZGVmYXVsdC1jYXJkXCIgKmNka0RyYWdQcmV2aWV3PlxuICAgICAgICAgICAgICAgIDxuZy1taWFtLWljb24gcHJpbWFyeUNvbG9yPVwidmFyKC0tbS1jb2xvci1ncmV5MDUpXCIgW2ljb25OYW1lXT1cImljb24uR3JpcFwiIGNka0RyYWdIYW5kbGU+PC9uZy1taWFtLWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX3ByZXZpZXdfX3RleHQgbS1ib2R5LXR5cG9cIj57e3Jvdz8uZ2V0KCdhdHRyaWJ1dGVzJyk/LmdldCgnZGVzY3JpcHRpb24nKS52YWx1ZX19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2xpPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2luZ3JlZGllbnRSb3c+XG4gICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCByb3cgb2YgbGlzdC5jb250cm9sczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeUluZGV4XCIgY2RrRHJhZz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX2NvbnRhaW5lcl9fcm93IG0tZGVmYXVsdC1jYXJkXCIgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1saXN0LWlucHV0X19yb3dfX2xlZnRcIj5cbiAgICAgICAgICAgICAgICA8bmctbWlhbS1pY29uIHByaW1hcnlDb2xvcj1cInZhcigtLW0tY29sb3ItZ3JleTA1KVwiIGNsYXNzPVwibWlhbS1saXN0LWlucHV0X19yb3dfX2dyaXBcIlxuICAgICAgICAgICAgICAgIFtpY29uTmFtZV09XCJpY29uLkdyaXBcIiBjZGtEcmFnSGFuZGxlPjwvbmctbWlhbS1pY29uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fcm93X19yaWdodFwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBbYXR0ci5saXN0XT1cIidtaWFtLWxpc3QtaW5wdXQtZHJvcGRvd24taW5ncmVkaWVudHMtaWQnICsgaVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIihpc0luZ3JlZGllbnRSZXZpZXdlZChyb3dbJ2NvbnRyb2xzJ11bJ2F0dHJpYnV0ZXMnXVsnY29udHJvbHMnXVsnbmFtZSddLnZhbHVlKSB8IGFzeW5jICkgPyAnYWxlcnQtc3VjY2VzcycgOiAnYWxlcnQtZGFuZ2VyJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInJvd1snY29udHJvbHMnXVsnYXR0cmlidXRlcyddWydjb250cm9scyddWyduYW1lJ10udmFsdWUgfCBjYXBpdGFsaXplRmlyc3RMZXR0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwicm93Wydjb250cm9scyddWydhdHRyaWJ1dGVzJ11bJ2NvbnRyb2xzJ11bJ25hbWUnXVwiXG4gICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1pbnB1dFwiLz5cbiAgICAgICAgICAgICAgICA8ZGF0YWxpc3QgW2F0dHIuaWRdPVwiJ21pYW0tbGlzdC1pbnB1dC1kcm9wZG93bi1pbmdyZWRpZW50cy1pZCcgKyBpXCI+XG4gICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBpbmcgb2YgZ2V0RmlsdGVyZWROYW1lRnJvbUluZGV4KGkpO1wiIFt2YWx1ZV09XCJpbmcgfCBjYXBpdGFsaXplRmlyc3RMZXR0ZXJcIj48L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8L2RhdGFsaXN0PlxuXG4gICAgICAgICAgICAgICAgPGlucHV0IFtuZ01vZGVsXT1cInJvd1snY29udHJvbHMnXVsnYXR0cmlidXRlcyddWydjb250cm9scyddWydxdWFudGl0eSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlUXVhbnRpdHlWYWx1ZSgkZXZlbnQsIGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInJvd1snY29udHJvbHMnXVsnYXR0cmlidXRlcyddWydjb250cm9scyddWydxdWFudGl0eSddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLWlucHV0XCIgbWF4U2l6ZT00ICBhdXRvV2lkdGhJbnB1dCAvPlxuXG4gICAgICAgICAgICAgICAgPGlucHV0IFthdHRyLmxpc3RdPVwiJ21pYW0tbGlzdC1pbnB1dC1kcm9wZG93bi11bml0cy1pZCcgKyBpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiKGlzUXVhbnRpdHlSZXZpZXdlZChyb3dbJ2NvbnRyb2xzJ11bJ2F0dHJpYnV0ZXMnXVsnY29udHJvbHMnXVsndW5pdCddLnZhbHVlKSB8IGFzeW5jICkgPyAnYWxlcnQtc3VjY2VzcycgOiAnYWxlcnQtZGFuZ2VyJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJyb3dbJ2NvbnRyb2xzJ11bJ2F0dHJpYnV0ZXMnXVsnY29udHJvbHMnXVsndW5pdCddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLWlucHV0XCIgbWF4U2l6ZT04IGF1dG9XaWR0aElucHV0Lz5cbiAgICAgICAgICAgICAgICA8ZGF0YWxpc3QgW2F0dHIuaWRdPVwiJ21pYW0tbGlzdC1pbnB1dC1kcm9wZG93bi11bml0cy1pZCcgKyBpXCI+XG4gICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCB1bml0IG9mIGdldEZpbHRlcmVkVW5pdHNGcm9tSW5kZXgoaSk7XCIgW3ZhbHVlXT1cInVuaXRcIj48L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8L2RhdGFsaXN0PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fcm93X19jb250cm9sc1wiPlxuICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiaW5nLXBpY3R1cmUte3tpfX1cIiAqbmdJZj1cImluZ3JlZGllbnRzUGljdHVyZXMudmlzaWJsZVwiPlxuICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwicm93LmNvbnRyb2xzLmF0dHJpYnV0ZXMuY29udHJvbHNbJ3BpY3R1cmUtdXJsJ10/LnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgY2xpY2thYmxlOiBpbmdyZWRpZW50c1BpY3R1cmVzLmVkaXRhYmxlIH1cIlxuICAgICAgICAgICAgICAgICAgW3NyY109XCJyb3cuY29udHJvbHMuYXR0cmlidXRlcy5jb250cm9sc1sncGljdHVyZS11cmwnXS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fcm93X19waWN0dXJlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLW1pYW0taWNvblxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhcm93LmNvbnRyb2xzLmF0dHJpYnV0ZXMuY29udHJvbHNbJ3BpY3R1cmUtdXJsJ10/LnZhbHVlICYmIGluZ3JlZGllbnRzUGljdHVyZXMuZWRpdGFibGVcIlxuICAgICAgICAgICAgICAgICAgW2ljb25OYW1lXT1cImljb24uUGljdHVyZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fcm93X190cmFzaFwiXG4gICAgICAgICAgICAgICAgICBwcmltYXJ5Q29sb3I9XCJ2YXIoLS1tLWNvbG9yLWdyZXkwNSlcIlxuICAgICAgICAgICAgICAgID48L25nLW1pYW0taWNvbj5cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpbmdyZWRpZW50c1BpY3R1cmVzLnZpc2libGUgJiYgaW5ncmVkaWVudHNQaWN0dXJlcy5lZGl0YWJsZVwiXG4gICAgICAgICAgICAgICAgaWQ9XCJpbmctcGljdHVyZS17e2l9fVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgICAgICAgIGFjY2VwdD1cImltYWdlL2pwZWcsIGltYWdlL3BuZywgaW1hZ2Uvd2VicFwiXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ1cGxvYWRJbmdyZWRpZW50UGljdHVyZSgkZXZlbnQudGFyZ2V0LmZpbGVzLCByb3cuY29udHJvbHMuYXR0cmlidXRlcy5jb250cm9sc1sncGljdHVyZS11cmwnXSlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1taWFtLWljb24gY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX3Jvd19fdHJhc2hcIiAoY2xpY2spPVwiZGVsZXRlKGkpXCIgcHJpbWFyeUNvbG9yPVwidmFyKC0tbS1jb2xvci1ncmV5MDUpXCIgW2ljb25OYW1lXT1cImljb24uVHJhc2hcIj48L25nLW1pYW0taWNvbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1saXN0LWlucHV0X19yb3dfX3BsYWNlaG9sZGVyXCIgKmNka0RyYWdQbGFjZWhvbGRlcj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1saXN0LWlucHV0X19yb3dfX3ByZXZpZXcgbS1kZWZhdWx0LWNhcmRcIiAqY2RrRHJhZ1ByZXZpZXc+XG4gICAgICAgICAgICAgICAgICA8bmctbWlhbS1pY29uIHByaW1hcnlDb2xvcj1cInZhcigtLW0tY29sb3ItZ3JleS10ZXh0LWRhcmspXCJcbiAgICAgICAgICAgICAgICAgICAgW2ljb25OYW1lXT1cImljb24uR3JpcFwiIGNka0RyYWdIYW5kbGU+PC9uZy1taWFtLWljb24+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm0tYm9keS10eXBvXCI+e3tyb3c/LmdldCgnYXR0cmlidXRlcycpPy5nZXQoJ25hbWUnKS52YWx1ZSB8IGNhcGl0YWxpemVGaXJzdExldHRlcn19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtLWJvZHktdHlwb1wiPnt7cm93Py5nZXQoJ2F0dHJpYnV0ZXMnKT8uZ2V0KCdxdWFudGl0eScpLnZhbHVlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm0tYm9keS10eXBvXCI+e3tyb3c/LmdldCgnYXR0cmlidXRlcycpPy5nZXQoJ3VuaXQnKS52YWx1ZX19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPCEtLSBpbmZvcm1hdGlvbiBtZXNzYWdlIC0tPlxuICAgICAgICAgICAgPCEtLSA8c3BhbiAqbmdJZj1cInJvdz8uZ2V0KCdhdHRyaWJ1dGVzJylbJ2lzTm90UmV2aWV3ZWRJbmdyZWRpZW50TmFtZSddICYmICFyb3cuaW52YWxpZCAmJiAhaGlkZUVycm9yc1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiaGludCB3YXJubmluZ1wiPk5vdXMgbmUgY29ubmFpc3NvbnMgcGFzIGVuY29yZSBjZXQgaW5ncsOpZGllbnQ8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJvdy5pbnZhbGlkICYmICFoaWRlRXJyb3JzXCIgY2xhc3M9XCJoaW50IGVycm9yXCI+TGUgbm9tIGRlIGwnaW5ncsOpZGllbnQgbmUgcGV1dCBwYXMgw6p0cmVcbiAgICAgICAgICAgICAgdmlkZTwvc3Bhbj4gLS0+XG4gICAgICAgICAgPC9saT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC91bD5cbiAgPC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSAjaGludFBsYWNlaG9sZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX3BsYWNlaG9sZGVyIG1pYW0tbGlzdC1pbnB1dF9fY29udGFpbmVyIG0tZGVmYXVsdC1jYXJkXCI+XG4gICAgICA8bmctbWlhbS1pY29uIHByaW1hcnlDb2xvcj1cInZhcigtLW0tY29sb3ItZ3JleS10ZXh0LWRhcmspXCIgW3dpZHRoXT1cIjE1MlwiIFtoZWlnaHRdPVwiMTU3XCIgW2ljb25OYW1lXT1cImljb24uRW1wdHlcIj5cbiAgICAgIDwvbmctbWlhbS1pY29uPlxuICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX3BsYWNlaG9sZGVyX19oaW50IG0tYm9keS10eXBvXCI+T3Vwcy4uLiBj4oCZZXN0IHZpZGUsIGNvbW1lbmNleiDDoCBham91dGVyIGRlcyB7eyBoaW50IH19ICE8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX2FjdGlvbnNcIj5cbiAgICA8dGV4dGFyZWEgbWF0SW5wdXQgY2xhc3M9XCJtLWlucHV0XCIgY2RrVGV4dGFyZWFBdXRvc2l6ZSAgY2RrQXV0b3NpemVNaW5Sb3dzPVwiNFwiXG4gICAgICBjZGtBdXRvc2l6ZU1heFJvd3M9XCI0XCIgKGtleWRvd24uZW50ZXIpPSdtb3Vzc2VEb3duT25CdXR0b24gPSB0cnVlJ1xuICAgICAgW2Zvcm1Db250cm9sXT1cImZpbGxMaXN0SW5wdXRcIiBhdHRyLnBsYWNlaG9sZGVyPVwie3twbGFjZWhvbGRlcn19XCI+PC90ZXh0YXJlYT5cbiAgICA8YnV0dG9uIGNsYXNzPVwibS1idXR0b24tcHJpbWFyeVwiIChtb3VzZWRvd24pPSdtb3Vzc2VEb3duT25CdXR0b24gPSB0cnVlJyAobW91c2V1cCk9XCJzdWJtaXQoKVwiPlxuICAgICAgQWpvdXRlciA8c3BhbiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9faW5zdHJ1Y3Rpb25zX19kaXJlY3Rpb25cIj4+Pjwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8ZGl2ICpuZ0lmPVwiaW5zdHJ1Y3Rpb25zXCIgY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX2FjdGlvbnNfX2luc3RydWN0aW9uc1wiPnt7aW5zdHJ1Y3Rpb25zfX08L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==