ng-miam 6.3.2 → 6.3.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.
Files changed (30) hide show
  1. package/bundles/ng-miam.umd.js +410 -273
  2. package/bundles/ng-miam.umd.js.map +1 -1
  3. package/bundles/ng-miam.umd.min.js +1 -1
  4. package/bundles/ng-miam.umd.min.js.map +1 -1
  5. package/esm2015/lib/_components/meals-planner-link/meals-planner-link.component.js +6 -19
  6. package/esm2015/lib/_services/analytics.service.js +2 -1
  7. package/esm2015/lib/_services/groceries-lists.service.js +2 -2
  8. package/esm2015/lib/_services/interceptor.service.js +2 -2
  9. package/esm2015/lib/_web-components/meals-planner/meals-planner-basket-confirmation/meals-planner-basket-confirmation.component.js +14 -7
  10. package/esm2015/lib/_web-components/meals-planner/meals-planner-basket-preview/meals-planner-basket-preview.component.js +83 -54
  11. package/esm2015/lib/_web-components/meals-planner/meals-planner-catalog/meals-planner-catalog.component.js +21 -10
  12. package/esm2015/lib/_web-components/meals-planner/meals-planner-form/meals-planner-form.component.js +84 -62
  13. package/esm2015/lib/_web-components/meals-planner/meals-planner-result/meals-planner-result.component.js +18 -10
  14. package/esm2015/lib/_web-components/meals-planner/meals-planner.component.js +77 -31
  15. package/esm2015/lib/_web-components/recipe-cards/suggestion-card/suggestion-card.component.js +5 -7
  16. package/esm2015/lib/_web-components/recipe-catalog/catalog-list/catalog-list.component.js +31 -19
  17. package/esm2015/lib/_web-components/recipe-catalog/recipe-catalog.component.js +3 -3
  18. package/fesm2015/ng-miam.js +322 -206
  19. package/fesm2015/ng-miam.js.map +1 -1
  20. package/lib/_components/meals-planner-link/meals-planner-link.component.d.ts +2 -4
  21. package/lib/_services/analytics.service.d.ts +7 -0
  22. package/lib/_web-components/meals-planner/meals-planner-basket-confirmation/meals-planner-basket-confirmation.component.d.ts +8 -4
  23. package/lib/_web-components/meals-planner/meals-planner-basket-preview/meals-planner-basket-preview.component.d.ts +12 -6
  24. package/lib/_web-components/meals-planner/meals-planner-catalog/meals-planner-catalog.component.d.ts +8 -4
  25. package/lib/_web-components/meals-planner/meals-planner-form/meals-planner-form.component.d.ts +8 -4
  26. package/lib/_web-components/meals-planner/meals-planner-result/meals-planner-result.component.d.ts +8 -4
  27. package/lib/_web-components/meals-planner/meals-planner.component.d.ts +9 -1
  28. package/lib/_web-components/recipe-cards/suggestion-card/suggestion-card.component.d.ts +1 -0
  29. package/lib/_web-components/recipe-catalog/catalog-list/catalog-list.component.d.ts +2 -1
  30. package/package.json +1 -1
@@ -28,7 +28,7 @@ function MealsPlannerComponent_div_15_ng_miam_meals_planner_form_1_Template(rf,
28
28
  i0.ɵɵelementEnd();
29
29
  } if (rf & 2) {
30
30
  const ctx_r2 = i0.ɵɵnextContext(2);
31
- i0.ɵɵproperty("reduced", ctx_r2.budgettedRecipes.length > 0)("form", ctx_r2.form)("ngClass", i0.ɵɵpureFunction1(3, _c5, ctx_r2.budgettedRecipes.length > 0));
31
+ i0.ɵɵproperty("originTrace", ctx_r2.eventTrace())("reduced", ctx_r2.budgettedRecipes.length > 0)("form", ctx_r2.form)("loading", ctx_r2.loading)("ngClass", i0.ɵɵpureFunction1(5, _c5, ctx_r2.budgettedRecipes.length > 0));
32
32
  } }
33
33
  function MealsPlannerComponent_div_15_ng_miam_meals_planner_result_2_Template(rf, ctx) { if (rf & 1) {
34
34
  const _r10 = i0.ɵɵgetCurrentView();
@@ -37,7 +37,7 @@ function MealsPlannerComponent_div_15_ng_miam_meals_planner_result_2_Template(rf
37
37
  i0.ɵɵelementEnd();
38
38
  } if (rf & 2) {
39
39
  const ctx_r3 = i0.ɵɵnextContext(2);
40
- i0.ɵɵproperty("recipes", ctx_r3.budgettedRecipes)("usedBudget", ctx_r3.usedBudget)("maxBudget", ctx_r3.maxBudget)("loading", ctx_r3.loading);
40
+ i0.ɵɵproperty("originTrace", ctx_r3.eventTrace())("recipes", ctx_r3.budgettedRecipes)("usedBudget", ctx_r3.usedBudget)("maxBudget", ctx_r3.maxBudget)("loading", ctx_r3.loading);
41
41
  } }
42
42
  function MealsPlannerComponent_div_15_ng_miam_meals_planner_basket_preview_3_Template(rf, ctx) { if (rf & 1) {
43
43
  const _r14 = i0.ɵɵgetCurrentView();
@@ -46,7 +46,7 @@ function MealsPlannerComponent_div_15_ng_miam_meals_planner_basket_preview_3_Tem
46
46
  i0.ɵɵelementEnd();
47
47
  } if (rf & 2) {
48
48
  const ctx_r4 = i0.ɵɵnextContext(2);
49
- i0.ɵɵproperty("recipesIds", ctx_r4.addedRecipesIds)("usedBudget", ctx_r4.usedBudget)("maxBudget", ctx_r4.maxBudget)("ngClass", i0.ɵɵpureFunction1(4, _c5, ctx_r4.addedRecipesIds.length === 0 && !ctx_r4.catalogMode && !ctx_r4.basketConfirmed));
49
+ i0.ɵɵproperty("recipesIds", ctx_r4.addedRecipesIds)("usedBudget", ctx_r4.usedBudget)("maxBudget", ctx_r4.maxBudget)("ingredientsRegrouped", ctx_r4.ingredientsRegrouped)("originTrace", ctx_r4.eventTrace())("ngClass", i0.ɵɵpureFunction1(6, _c5, ctx_r4.addedRecipesIds.length === 0 && !ctx_r4.catalogMode && !ctx_r4.basketConfirmed));
50
50
  } }
51
51
  function MealsPlannerComponent_div_15_ng_miam_meals_planner_catalog_4_Template(rf, ctx) { if (rf & 1) {
52
52
  const _r16 = i0.ɵɵgetCurrentView();
@@ -55,21 +55,21 @@ function MealsPlannerComponent_div_15_ng_miam_meals_planner_catalog_4_Template(r
55
55
  i0.ɵɵelementEnd();
56
56
  } if (rf & 2) {
57
57
  const ctx_r5 = i0.ɵɵnextContext(2);
58
- i0.ɵɵproperty("modifiedGuests", ctx_r5.form.value.guestsCount)("remainingBudget", ctx_r5.remainingBudget)("remainingRecipesNumber", ctx_r5.remainingRecipesNumber);
58
+ i0.ɵɵproperty("modifiedGuests", ctx_r5.form.value.guestsCount)("originTrace", ctx_r5.eventTrace())("remainingBudget", ctx_r5.remainingBudget)("remainingRecipesNumber", ctx_r5.remainingRecipesNumber)("excludedRecipesIds", ctx_r5.excludedRecipesIds);
59
59
  } }
60
60
  function MealsPlannerComponent_div_15_ng_miam_meals_planner_basket_confirmation_5_Template(rf, ctx) { if (rf & 1) {
61
61
  i0.ɵɵelement(0, "ng-miam-meals-planner-basket-confirmation", 23);
62
62
  } if (rf & 2) {
63
63
  const ctx_r6 = i0.ɵɵnextContext(2);
64
- i0.ɵɵproperty("recipesIds", ctx_r6.addedRecipesIds)("budget", ctx_r6.usedBudget);
64
+ i0.ɵɵproperty("recipesIds", ctx_r6.addedRecipesIds)("originTrace", ctx_r6.eventTrace())("budget", ctx_r6.usedBudget);
65
65
  } }
66
66
  function MealsPlannerComponent_div_15_Template(rf, ctx) { if (rf & 1) {
67
67
  i0.ɵɵelementStart(0, "div", 13);
68
- i0.ɵɵtemplate(1, MealsPlannerComponent_div_15_ng_miam_meals_planner_form_1_Template, 1, 5, "ng-miam-meals-planner-form", 14);
69
- i0.ɵɵtemplate(2, MealsPlannerComponent_div_15_ng_miam_meals_planner_result_2_Template, 1, 4, "ng-miam-meals-planner-result", 15);
70
- i0.ɵɵtemplate(3, MealsPlannerComponent_div_15_ng_miam_meals_planner_basket_preview_3_Template, 1, 6, "ng-miam-meals-planner-basket-preview", 16);
71
- i0.ɵɵtemplate(4, MealsPlannerComponent_div_15_ng_miam_meals_planner_catalog_4_Template, 1, 3, "ng-miam-meals-planner-catalog", 17);
72
- i0.ɵɵtemplate(5, MealsPlannerComponent_div_15_ng_miam_meals_planner_basket_confirmation_5_Template, 1, 2, "ng-miam-meals-planner-basket-confirmation", 18);
68
+ i0.ɵɵtemplate(1, MealsPlannerComponent_div_15_ng_miam_meals_planner_form_1_Template, 1, 7, "ng-miam-meals-planner-form", 14);
69
+ i0.ɵɵtemplate(2, MealsPlannerComponent_div_15_ng_miam_meals_planner_result_2_Template, 1, 5, "ng-miam-meals-planner-result", 15);
70
+ i0.ɵɵtemplate(3, MealsPlannerComponent_div_15_ng_miam_meals_planner_basket_preview_3_Template, 1, 8, "ng-miam-meals-planner-basket-preview", 16);
71
+ i0.ɵɵtemplate(4, MealsPlannerComponent_div_15_ng_miam_meals_planner_catalog_4_Template, 1, 5, "ng-miam-meals-planner-catalog", 17);
72
+ i0.ɵɵtemplate(5, MealsPlannerComponent_div_15_ng_miam_meals_planner_basket_confirmation_5_Template, 1, 3, "ng-miam-meals-planner-basket-confirmation", 18);
73
73
  i0.ɵɵelementEnd();
74
74
  } if (rf & 2) {
75
75
  const ctx_r1 = i0.ɵɵnextContext();
@@ -78,7 +78,7 @@ function MealsPlannerComponent_div_15_Template(rf, ctx) { if (rf & 1) {
78
78
  i0.ɵɵadvance(1);
79
79
  i0.ɵɵproperty("ngIf", ctx_r1.budgettedRecipes.length > 0 && ctx_r1.addedRecipesIds.length === 0 && !ctx_r1.catalogMode && !ctx_r1.basketConfirmed);
80
80
  i0.ɵɵadvance(1);
81
- i0.ɵɵproperty("ngIf", !ctx_r1.basketConfirmed);
81
+ i0.ɵɵproperty("ngIf", ctx_r1.addedRecipesIds.length > 0 && !ctx_r1.catalogMode && !ctx_r1.basketConfirmed);
82
82
  i0.ɵɵadvance(1);
83
83
  i0.ɵɵproperty("ngIf", ctx_r1.catalogMode && !ctx_r1.basketConfirmed);
84
84
  i0.ɵɵadvance(1);
@@ -88,7 +88,7 @@ const _c6 = function (a0) { return { "hidden": a0 }; };
88
88
  const recipeIncludes = ['recipe-provider', 'sponsors'];
89
89
  const recipeSparseFields = {
90
90
  recipes: ['title', 'number-of-guests', 'media-url', 'video-id', 'filigrane-logo-url', 'difficulty', 'preparation-time', 'cooking-time',
91
- 'resting-time', 'computed-cost', ...recipeIncludes],
91
+ 'resting-time', ...recipeIncludes],
92
92
  sponsors: ['logo-url'],
93
93
  ['recipe-provider']: ['name']
94
94
  };
@@ -104,11 +104,14 @@ export class MealsPlannerComponent extends EventTracerComponent {
104
104
  this.basketsService = basketsService;
105
105
  this.posService = posService;
106
106
  this.budgettedRecipes = [];
107
+ this.budgettedRecipesPrices = {};
107
108
  this.addedRecipesIds = [];
108
109
  this.icon = Icon;
109
110
  this.catalogMode = false;
110
111
  this.basketConfirmed = false;
111
112
  this.loading = false;
113
+ this.ingredientsRegrouped = false;
114
+ this.timeOnStart = Date.now();
112
115
  // Progress bar
113
116
  this.usedBudget = 0;
114
117
  this.maxBudget = 0;
@@ -116,6 +119,7 @@ export class MealsPlannerComponent extends EventTracerComponent {
116
119
  }
117
120
  ngOnInit() {
118
121
  this.initForm();
122
+ this.pageview();
119
123
  this.subscriptions.push(this.initRecipesPricing());
120
124
  }
121
125
  ngOnChanges() {
@@ -140,7 +144,10 @@ export class MealsPlannerComponent extends EventTracerComponent {
140
144
  this.recipesService.plan(inputs.budget, inputs.guestsCount, inputs.recipesCount, recipeIncludes, recipeSparseFields).pipe(switchMap(recipes => {
141
145
  this.budgettedRecipes = []; // Refresh the result view
142
146
  this.cdr.detectChanges();
143
- this.budgettedRecipes = recipes;
147
+ this.budgettedRecipes = recipes.map(r => {
148
+ r.modifiedGuests = inputs.guestsCount;
149
+ return r;
150
+ });
144
151
  this.loading = false;
145
152
  this.cdr.detectChanges();
146
153
  return this.fetchRecipesPricing();
@@ -155,23 +162,37 @@ export class MealsPlannerComponent extends EventTracerComponent {
155
162
  ngOnDestroy() {
156
163
  this.subscriptions.forEach(s => s.unsubscribe());
157
164
  }
158
- currentPath() { return 'miam/meals-planner'; }
165
+ currentPath() { return 'miam/recipes/meals-planner'; }
159
166
  addRecipes() {
160
167
  this.loading = true;
161
168
  this.cdr.detectChanges();
169
+ const previousUsedBudget = this.usedBudget;
170
+ let basketInitialized = false;
162
171
  this.subscriptions.push(this.groceriesListsService.appendRecipesToList(this.budgettedRecipes.filter(r => r === null || r === void 0 ? void 0 : r.id).map(r => ({ id: r.id, guests: r.modifiedGuests })), // remove empty recipes
163
172
  this.eventTrace()).pipe(take(1), switchMap(() => {
164
173
  this.addedRecipesIds = this.budgettedRecipes.filter(r => r === null || r === void 0 ? void 0 : r.id).map(r => r.id);
174
+ return this.basketsService.basketPreview$.pipe(take(2));
175
+ }), switchMap(basketPreviewLines => {
176
+ if (basketInitialized) {
177
+ this.fetchBasketPreviewPricing(basketPreviewLines);
178
+ this.ingredientsRegrouped = previousUsedBudget !== this.usedBudget;
179
+ return this.basketsService.basketPreview$;
180
+ }
181
+ basketInitialized = true;
182
+ return of(null);
183
+ }), switchMap(basketPreviewLines => {
184
+ if (basketPreviewLines !== null) {
185
+ if (!this.containsSomeAddedRecipe(basketPreviewLines)) {
186
+ return this.fetchBudgetValues();
187
+ }
188
+ return of(this.fetchBasketPreviewPricing(basketPreviewLines));
189
+ }
190
+ return of(null);
191
+ })).subscribe(() => {
165
192
  this.scrollToTop();
166
193
  this.loading = false;
167
194
  this.cdr.detectChanges();
168
- return this.basketsService.basketPreview$;
169
- }), switchMap(basketPreviewLines => {
170
- if (!this.containsSomeAddedRecipe(basketPreviewLines)) {
171
- return this.fetchBudgetValues();
172
- }
173
- return of(this.fetchBasketPreviewPricing(basketPreviewLines));
174
- })).subscribe());
195
+ }));
175
196
  }
176
197
  containsSomeAddedRecipe(basketPreviewLines) {
177
198
  let containsSomeAddedRecipeId = false;
@@ -190,6 +211,7 @@ export class MealsPlannerComponent extends EventTracerComponent {
190
211
  this.usedBudget += +basketPreviewLine.price;
191
212
  }
192
213
  });
214
+ this.usedBudget = Math.round(this.usedBudget * 100) / 100;
193
215
  this.cdr.detectChanges();
194
216
  }
195
217
  initRecipesPricing() {
@@ -203,9 +225,10 @@ export class MealsPlannerComponent extends EventTracerComponent {
203
225
  return of([]);
204
226
  }
205
227
  const requests = [];
228
+ this.budgettedRecipesPrices = {};
206
229
  this.budgettedRecipes.forEach(recipe => {
207
230
  if (recipe) {
208
- requests.push(this.recipesService.getPricing(recipe.id, this.pos.id, this.pricebookKey, this.form.value.guestsCount).pipe(skipWhile(result => !(result === null || result === void 0 ? void 0 : result.price))));
231
+ requests.push(this.recipesService.getPricing(recipe.id, this.pos.id, this.pricebookKey, this.form.value.guestsCount).pipe(skipWhile(result => !(result === null || result === void 0 ? void 0 : result.price)), tap(pricing => this.budgettedRecipesPrices[recipe.id] = pricing.price)));
209
232
  }
210
233
  });
211
234
  return requests.length > 0 ? forkJoin(requests) : of([]);
@@ -241,22 +264,42 @@ export class MealsPlannerComponent extends EventTracerComponent {
241
264
  openBasketConfirmation() {
242
265
  this.recipeToChangeIndex = null;
243
266
  this.basketConfirmed = true;
267
+ this.sendConfirmationEvent();
244
268
  this.scrollToTop();
245
269
  this.cdr.detectChanges();
246
270
  }
271
+ sendConfirmationEvent() {
272
+ this.analyticsService.sendEventWhenReady(this.analyticsService.EVENT_MEALS_PLANNER_CONFIRMED, this.path(), {
273
+ budget_user: this.form.get('budget').value,
274
+ budget_planner: this.usedBudget,
275
+ recipes_count: this.form.get('recipesCount').value,
276
+ guests: this.form.get('guestsCount').value,
277
+ uses_count: this.updateUsesCount(),
278
+ time_passed: (Date.now() - this.timeOnStart) / 1000
279
+ });
280
+ }
281
+ updateUsesCount() {
282
+ const oldCount = parseInt(localStorage.getItem('miam-meals-planner-uses-count'));
283
+ const newCount = Number.isNaN(oldCount) ? 1 : oldCount + 1;
284
+ localStorage.setItem('miam-meals-planner-uses-count', newCount.toString());
285
+ return newCount;
286
+ }
247
287
  scrollToTop() {
248
288
  if (this.topAnchor) {
249
289
  this.topAnchor.nativeElement.scrollIntoView();
250
290
  }
251
291
  }
252
292
  get remainingBudget() {
253
- return this.budgettedRecipes.reduce((acc, recipe, i) => {
254
- // Don't count null recipes and currently replacing recipe
255
- if (recipe && i !== this.recipeToChangeIndex) {
256
- return acc - recipe.attributes['computed-cost'] * this.form.value.guestsCount;
257
- }
258
- return acc;
259
- }, this.form.value.budget);
293
+ var _a;
294
+ const recipeToChangeId = (_a = this.budgettedRecipes[this.recipeToChangeIndex]) === null || _a === void 0 ? void 0 : _a.id;
295
+ let remainingBudget = this.maxBudget - this.usedBudget;
296
+ if (recipeToChangeId) {
297
+ remainingBudget += this.budgettedRecipesPrices[recipeToChangeId];
298
+ }
299
+ if (remainingBudget > 0) {
300
+ return remainingBudget;
301
+ }
302
+ return 0;
260
303
  }
261
304
  get remainingRecipesNumber() {
262
305
  return this.budgettedRecipes.reduce((acc, recipe, i) => {
@@ -264,6 +307,9 @@ export class MealsPlannerComponent extends EventTracerComponent {
264
307
  return recipe && i !== this.recipeToChangeIndex ? acc : acc + 1;
265
308
  }, 0);
266
309
  }
310
+ get excludedRecipesIds() {
311
+ return this.budgettedRecipes.filter(recipe => recipe).map(recipe => recipe.id);
312
+ }
267
313
  }
268
314
  MealsPlannerComponent.ɵfac = function MealsPlannerComponent_Factory(t) { return new (t || MealsPlannerComponent)(i0.ɵɵdirectiveInject(i1.FormBuilder), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i2.AnalyticsService), i0.ɵɵdirectiveInject(i3.ContextService), i0.ɵɵdirectiveInject(i4.GroceriesListsService), i0.ɵɵdirectiveInject(i4.RecipesService), i0.ɵɵdirectiveInject(i4.BasketsService), i0.ɵɵdirectiveInject(i4.PointOfSalesService)); };
269
315
  MealsPlannerComponent.ɵcmp = i0.ɵɵdefineComponent({ type: MealsPlannerComponent, selectors: [["ng-miam-meals-planner"]], viewQuery: function MealsPlannerComponent_Query(rf, ctx) { if (rf & 1) {
@@ -283,7 +329,7 @@ MealsPlannerComponent.ɵcmp = i0.ɵɵdefineComponent({ type: MealsPlannerCompone
283
329
  }
284
330
  else {
285
331
  i18n_3 = $localize `:␟1699ac3b921e6d286c72605705ac342f122b2652␟406825433402702343:Planifier mes repas`;
286
- } return [[1, "miam-meals-planner-anchor"], ["miamMealsPlannerTopAnchor", ""], [1, "miam-meals-planner"], [1, "miam-meals-planner__header"], [1, "miam-meals-planner__header__breadcrumb", 3, "ngClass"], ["href", "/"], ["width", "18", "height", "18", "primaryColor", "#1F3543", 3, "iconName"], ["width", "24", "height", "24", 1, "chevron-right", 3, "iconName"], [1, "inactive", 3, "href"], i18n_1, ["href", "javascript:void(0)", 1, "active"], i18n_3, ["class", "miam-meals-planner__content", 4, "ngIf"], [1, "miam-meals-planner__content"], [3, "reduced", "form", "ngClass", "submitted", 4, "ngIf"], [3, "recipes", "usedBudget", "maxBudget", "loading", "recipeRemoval", "confirmed", "openCatalog", 4, "ngIf"], [3, "recipesIds", "usedBudget", "maxBudget", "ngClass", "closed", 4, "ngIf"], [3, "modifiedGuests", "remainingBudget", "remainingRecipesNumber", "editRecipe", "canceled", 4, "ngIf"], [3, "recipesIds", "budget", 4, "ngIf"], [3, "reduced", "form", "ngClass", "submitted"], [3, "recipes", "usedBudget", "maxBudget", "loading", "recipeRemoval", "confirmed", "openCatalog"], [3, "recipesIds", "usedBudget", "maxBudget", "ngClass", "closed"], [3, "modifiedGuests", "remainingBudget", "remainingRecipesNumber", "editRecipe", "canceled"], [3, "recipesIds", "budget"]]; }, template: function MealsPlannerComponent_Template(rf, ctx) { if (rf & 1) {
332
+ } return [[1, "miam-meals-planner-anchor"], ["miamMealsPlannerTopAnchor", ""], [1, "miam-meals-planner"], [1, "miam-meals-planner__header"], [1, "miam-meals-planner__header__breadcrumb", 3, "ngClass"], ["href", "/"], ["width", "18", "height", "18", "primaryColor", "#1F3543", 3, "iconName"], ["width", "24", "height", "24", 1, "chevron-right", 3, "iconName"], [1, "inactive", 3, "href"], i18n_1, ["href", "javascript:void(0)", 1, "active"], i18n_3, ["class", "miam-meals-planner__content", 4, "ngIf"], [1, "miam-meals-planner__content"], [3, "originTrace", "reduced", "form", "loading", "ngClass", "submitted", 4, "ngIf"], [3, "originTrace", "recipes", "usedBudget", "maxBudget", "loading", "recipeRemoval", "confirmed", "openCatalog", 4, "ngIf"], [3, "recipesIds", "usedBudget", "maxBudget", "ingredientsRegrouped", "originTrace", "ngClass", "closed", 4, "ngIf"], [3, "modifiedGuests", "originTrace", "remainingBudget", "remainingRecipesNumber", "excludedRecipesIds", "editRecipe", "canceled", 4, "ngIf"], [3, "recipesIds", "originTrace", "budget", 4, "ngIf"], [3, "originTrace", "reduced", "form", "loading", "ngClass", "submitted"], [3, "originTrace", "recipes", "usedBudget", "maxBudget", "loading", "recipeRemoval", "confirmed", "openCatalog"], [3, "recipesIds", "usedBudget", "maxBudget", "ingredientsRegrouped", "originTrace", "ngClass", "closed"], [3, "modifiedGuests", "originTrace", "remainingBudget", "remainingRecipesNumber", "excludedRecipesIds", "editRecipe", "canceled"], [3, "recipesIds", "originTrace", "budget"]]; }, template: function MealsPlannerComponent_Template(rf, ctx) { if (rf & 1) {
287
333
  i0.ɵɵelement(0, "div", 0, 1);
288
334
  i0.ɵɵelementStart(2, "div", 2);
289
335
  i0.ɵɵelementStart(3, "div", 3);
@@ -334,4 +380,4 @@ MealsPlannerComponent.ɵcmp = i0.ɵɵdefineComponent({ type: MealsPlannerCompone
334
380
  type: ViewChild,
335
381
  args: ['miamMealsPlannerTopAnchor']
336
382
  }] }); })();
337
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhbHMtcGxhbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2J1aWxkcy9taWFtL25nLW1pYW0tc2RrL3Byb2plY3RzL25nLW1pYW0vc3JjLyIsInNvdXJjZXMiOlsibGliL193ZWItY29tcG9uZW50cy9tZWFscy1wbGFubmVyL21lYWxzLXBsYW5uZXIuY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy9tZWFscy1wbGFubmVyL21lYWxzLXBsYW5uZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBYSxpQkFBaUIsRUFBcUIsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5SixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMxRixPQUFPLEVBQTRCLGFBQWEsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVqRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RyxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDYzdELHNEQUVzRjtJQUQ5QixrUUFBa0M7SUFDakMsaUJBQTZCOzs7SUFEcEYsNERBQXVDLHFCQUFBLDJF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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgT25EZXN0cm95LCBDaGFuZ2VEZXRlY3RvclJlZiwgT25Jbml0LCBPbkNoYW5nZXMsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBFdmVudFRyYWNlckNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9fY29tcG9uZW50cy9hYnN0cmFjdHMvZXZlbnQtdHJhY2VyLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBjb21iaW5lTGF0ZXN0LCBmb3JrSm9pbiwgb2YgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSB9IGZyb20gXCIuLi8uLi9fc2VydmljZXMvYW5hbHl0aWNzLnNlcnZpY2VcIjtcbmltcG9ydCB7IENvbnRleHRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL19zZXJ2aWNlcy9jb250ZXh0LnNlcnZpY2VcIjtcbmltcG9ydCB7IEJhc2tldFByZXZpZXdMaW5lLCBQb2ludE9mU2FsZSwgUmVjaXBlIH0gZnJvbSBcIi4uLy4uL19tb2RlbHNcIjtcbmltcG9ydCB7IEljb24gfSBmcm9tIFwiLi4vLi4vX3R5cGVzL2ljb24uZW51bVwiO1xuaW1wb3J0IHsgQmFza2V0c1NlcnZpY2UsIEdyb2Nlcmllc0xpc3RzU2VydmljZSwgUG9pbnRPZlNhbGVzU2VydmljZSwgUmVjaXBlc1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vX3NlcnZpY2VzXCI7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgc2tpcFdoaWxlLCBzd2l0Y2hNYXAsIHRha2UsIHRhcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgUmVjaXBlUHJpY2luZyB9IGZyb20gXCIuLi8uLi9fbW9kZWxzL3JlY2lwZS1wcmljaW5nXCI7XG5cbmNvbnN0IHJlY2lwZUluY2x1ZGVzID0gWydyZWNpcGUtcHJvdmlkZXInLCAnc3BvbnNvcnMnXTtcbmNvbnN0IHJlY2lwZVNwYXJzZUZpZWxkcyA9IHtcbiAgcmVjaXBlczogWyd0aXRsZScsICdudW1iZXItb2YtZ3Vlc3RzJywgJ21lZGlhLXVybCcsICd2aWRlby1pZCcsICdmaWxpZ3JhbmUtbG9nby11cmwnLCAnZGlmZmljdWx0eScsICdwcmVwYXJhdGlvbi10aW1lJywgJ2Nvb2tpbmctdGltZScsXG4gICAgICAgICAgICAncmVzdGluZy10aW1lJywgJ2NvbXB1dGVkLWNvc3QnLCAuLi5yZWNpcGVJbmNsdWRlc10sXG4gIHNwb25zb3JzOiBbJ2xvZ28tdXJsJ10sXG4gIFsncmVjaXBlLXByb3ZpZGVyJ106IFsnbmFtZSddXG59O1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nLW1pYW0tbWVhbHMtcGxhbm5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZWFscy1wbGFubmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWVhbHMtcGxhbm5lci5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcblxuZXhwb3J0IGNsYXNzIE1lYWxzUGxhbm5lckNvbXBvbmVudCBleHRlbmRzIEV2ZW50VHJhY2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBWaWV3Q2hpbGQoJ21pYW1NZWFsc1BsYW5uZXJUb3BBbmNob3InKSB0b3BBbmNob3I6IEVsZW1lbnRSZWY7XG5cbiAgYnVkZ2V0dGVkUmVjaXBlczogUmVjaXBlW10gPSBbXTtcbiAgYWRkZWRSZWNpcGVzSWRzOiBzdHJpbmdbXSA9IFtdO1xuICBpY29uID0gSWNvbjtcbiAgZm9ybTogRm9ybUdyb3VwO1xuICBjYXRhbG9nTW9kZSA9IGZhbHNlO1xuICByZWNpcGVUb0NoYW5nZUluZGV4OiBudW1iZXI7XG4gIGJhc2tldENvbmZpcm1lZCA9IGZhbHNlO1xuICBsb2FkaW5nID0gZmFsc2U7XG5cbiAgLy8gUHJvZ3Jlc3MgYmFyXG4gIHVzZWRCdWRnZXQgPSAwO1xuICBtYXhCdWRnZXQgPSAwO1xuXG4gIHByaXZhdGUgcG9zOiBQb2ludE9mU2FsZTtcbiAgcHJpdmF0ZSBwcmljZWJvb2tLZXk6IHN0cmluZztcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByb3RlY3RlZCBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlLFxuICAgIHB1YmxpYyBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHVibGljIGdyb2Nlcmllc0xpc3RzU2VydmljZTogR3JvY2VyaWVzTGlzdHNTZXJ2aWNlLFxuICAgIHB1YmxpYyByZWNpcGVzU2VydmljZTogUmVjaXBlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYXNrZXRzU2VydmljZTogQmFza2V0c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBwb3NTZXJ2aWNlOiBQb2ludE9mU2FsZXNTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGFuYWx5dGljc1NlcnZpY2UpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0Rm9ybSgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuaW5pdFJlY2lwZXNQcmljaW5nKCkpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgaW5pdEZvcm0oKSB7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBidWRnZXQ6IG5ldyBGb3JtQ29udHJvbCh1bmRlZmluZWQsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbigxKV0pLFxuICAgICAgZ3Vlc3RzQ291bnQ6IG5ldyBGb3JtQ29udHJvbCgwLCBWYWxpZGF0b3JzLm1pbigxKSksXG4gICAgICByZWNpcGVzQ291bnQ6IG5ldyBGb3JtQ29udHJvbCh0aGlzLmNvbnRleHRTZXJ2aWNlLmFudGlJbmZsYXRpb24gPyAwIDogNCwgVmFsaWRhdG9ycy5taW4oMSkpXG4gICAgfSk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZmV0Y2hSZWNpcGVzKGlucHV0czogeyBidWRnZXQ6IG51bWJlciwgZ3Vlc3RzQ291bnQ6IG51bWJlciwgcmVjaXBlc0NvdW50OiBudW1iZXIgfSkge1xuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIGlmICh0aGlzLmNvbnRleHRTZXJ2aWNlLmRpc3BsYXlJbmdyZWRpZW50UGljdHVyZXNPblJlY2lwZUNhcmRzICYmICFyZWNpcGVJbmNsdWRlcy5pbmNsdWRlcygnaW5ncmVkaWVudHMnKSkge1xuICAgICAgcmVjaXBlSW5jbHVkZXMucHVzaCgnaW5ncmVkaWVudHMnKTtcbiAgICAgIHJlY2lwZVNwYXJzZUZpZWxkcy5yZWNpcGVzLnB1c2goJ2luZ3JlZGllbnRzJyk7XG4gICAgICByZWNpcGVTcGFyc2VGaWVsZHNbJ2luZ3JlZGllbnRzJ10gPSBbJ25hbWUnLCAncXVhbnRpdHknLCAndW5pdCcsICdhY3RpdmUnLCAnZm9yY2VkLWVhbnMnLCAncGljdHVyZS11cmwnLCAncG9zaXRpb24nXTtcbiAgICB9XG4gICAgdGhpcy5yZWNpcGVzU2VydmljZS5wbGFuKFxuICAgICAgaW5wdXRzLmJ1ZGdldCwgaW5wdXRzLmd1ZXN0c0NvdW50LCBpbnB1dHMucmVjaXBlc0NvdW50LCByZWNpcGVJbmNsdWRlcywgcmVjaXBlU3BhcnNlRmllbGRzXG4gICAgKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKHJlY2lwZXMgPT4ge1xuICAgICAgICB0aGlzLmJ1ZGdldHRlZFJlY2lwZXMgPSBbXTsgLy8gUmVmcmVzaCB0aGUgcmVzdWx0IHZpZXdcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLmJ1ZGdldHRlZFJlY2lwZXMgPSByZWNpcGVzO1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICByZXR1cm4gdGhpcy5mZXRjaFJlY2lwZXNQcmljaW5nKCk7XG4gICAgICB9KVxuICAgICkuc3Vic2NyaWJlKHByaWNpbmdzID0+IHtcbiAgICAgIHRoaXMudXNlZEJ1ZGdldCA9IHByaWNpbmdzLnJlZHVjZSgoYWNjLCBwcmljaW5nKSA9PiBhY2MgKyBwcmljaW5nLnByaWNlLCAwKTtcbiAgICAgIHRoaXMudXNlZEJ1ZGdldCA9IE1hdGgucm91bmQodGhpcy51c2VkQnVkZ2V0ICogMTAwKSAvIDEwMDtcbiAgICAgIHRoaXMubWF4QnVkZ2V0ID0gdGhpcy5mb3JtLnZhbHVlLmJ1ZGdldDtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIHRoaXMuc2Nyb2xsVG9Ub3AoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIGN1cnJlbnRQYXRoKCk6IHN0cmluZyB7IHJldHVybiAnbWlhbS9tZWFscy1wbGFubmVyJzsgfVxuXG4gIGFkZFJlY2lwZXMoKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmdyb2Nlcmllc0xpc3RzU2VydmljZS5hcHBlbmRSZWNpcGVzVG9MaXN0KFxuICAgICAgICB0aGlzLmJ1ZGdldHRlZFJlY2lwZXMuZmlsdGVyKHIgPT4gcj8uaWQpLm1hcChyID0+ICh7IGlkOiByLmlkLCBndWVzdHM6IHIubW9kaWZpZWRHdWVzdHMgfSkpLCAvLyByZW1vdmUgZW1wdHkgcmVjaXBlc1xuICAgICAgICB0aGlzLmV2ZW50VHJhY2UoKVxuICAgICAgKS5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuYWRkZWRSZWNpcGVzSWRzID0gdGhpcy5idWRnZXR0ZWRSZWNpcGVzLmZpbHRlcihyID0+IHI/LmlkKS5tYXAociA9PiByLmlkKTtcbiAgICAgICAgICB0aGlzLnNjcm9sbFRvVG9wKCk7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIHJldHVybiB0aGlzLmJhc2tldHNTZXJ2aWNlLmJhc2tldFByZXZpZXckO1xuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKGJhc2tldFByZXZpZXdMaW5lcyA9PiB7XG4gICAgICAgICAgaWYgKCF0aGlzLmNvbnRhaW5zU29tZUFkZGVkUmVjaXBlKGJhc2tldFByZXZpZXdMaW5lcykpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZldGNoQnVkZ2V0VmFsdWVzKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBvZih0aGlzLmZldGNoQmFza2V0UHJldmlld1ByaWNpbmcoYmFza2V0UHJldmlld0xpbmVzKSk7XG4gICAgICAgIH0pXG4gICAgICApLnN1YnNjcmliZSgpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY29udGFpbnNTb21lQWRkZWRSZWNpcGUoYmFza2V0UHJldmlld0xpbmVzOiBCYXNrZXRQcmV2aWV3TGluZVtdKSB7XG4gICAgbGV0IGNvbnRhaW5zU29tZUFkZGVkUmVjaXBlSWQgPSBmYWxzZTtcbiAgICB0aGlzLmFkZGVkUmVjaXBlc0lkcy5mb3JFYWNoKHJlY2lwZUlkID0+IHtcbiAgICAgIGlmIChiYXNrZXRQcmV2aWV3TGluZXMuc29tZShsaW5lID0+IGxpbmUuaWQgPT09IHJlY2lwZUlkKSkge1xuICAgICAgICBjb250YWluc1NvbWVBZGRlZFJlY2lwZUlkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gY29udGFpbnNTb21lQWRkZWRSZWNpcGVJZDtcbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hCYXNrZXRQcmV2aWV3UHJpY2luZyhiYXNrZXRQcmV2aWV3TGluZXM6IEJhc2tldFByZXZpZXdMaW5lW10pIHtcbiAgICB0aGlzLnVzZWRCdWRnZXQgPSAwO1xuICAgIHRoaXMuYWRkZWRSZWNpcGVzSWRzLmZvckVhY2gocmVjaXBlSWQgPT4ge1xuICAgICAgY29uc3QgYmFza2V0UHJldmlld0xpbmUgPSBiYXNrZXRQcmV2aWV3TGluZXMuZmluZChsaW5lID0+IGxpbmUuaWQgPT09IHJlY2lwZUlkKTtcbiAgICAgIGlmIChiYXNrZXRQcmV2aWV3TGluZSkge1xuICAgICAgICB0aGlzLnVzZWRCdWRnZXQgKz0gK2Jhc2tldFByZXZpZXdMaW5lLnByaWNlO1xuICAgICAgfVxuICAgIH0pXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0UmVjaXBlc1ByaWNpbmcoKTogU3Vic2NyaXB0aW9uIHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbdGhpcy5wb3NTZXJ2aWNlLnBvcyQsIHRoaXMuYmFza2V0c1NlcnZpY2UuYmFza2V0JF0pLnBpcGUoXG4gICAgICBza2lwV2hpbGUocmVzdWx0ID0+ICFyZXN1bHRbMF0gfHwgIXJlc3VsdFsxXSlcbiAgICApLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgdGhpcy5wb3MgPSByZXN1bHRbMF07XG4gICAgICB0aGlzLnByaWNlYm9va0tleSA9IHJlc3VsdFsxXS5wcmljZWJvb2tLZXk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGZldGNoUmVjaXBlc1ByaWNpbmcoKTogT2JzZXJ2YWJsZTxSZWNpcGVQcmljaW5nW10+IHtcbiAgICBpZiAodGhpcy5idWRnZXR0ZWRSZWNpcGVzLmxlbmd0aCA9PT0gMCB8fCAhdGhpcy5wb3MgfHwgIXRoaXMuZm9ybS52YWx1ZS5ndWVzdHNDb3VudCkge1xuICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICB9XG4gICAgY29uc3QgcmVxdWVzdHM6IE9ic2VydmFibGU8UmVjaXBlUHJpY2luZz5bXSA9IFtdO1xuICAgIHRoaXMuYnVkZ2V0dGVkUmVjaXBlcy5mb3JFYWNoKHJlY2lwZSA9PiB7XG4gICAgICBpZiAocmVjaXBlKSB7XG4gICAgICAgIHJlcXVlc3RzLnB1c2godGhpcy5yZWNpcGVzU2VydmljZS5nZXRQcmljaW5nKHJlY2lwZS5pZCwgdGhpcy5wb3MuaWQsIHRoaXMucHJpY2Vib29rS2V5LCB0aGlzLmZvcm0udmFsdWUuZ3Vlc3RzQ291bnQpLnBpcGUoXG4gICAgICAgICAgc2tpcFdoaWxlKHJlc3VsdCA9PiAhcmVzdWx0Py5wcmljZSlcbiAgICAgICAgKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlcXVlc3RzLmxlbmd0aCA+IDAgPyBmb3JrSm9pbihyZXF1ZXN0cykgOiBvZihbXSk7XG4gIH1cblxuICB1cGRhdGVCdWRnZXRWYWx1ZXMoKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5mZXRjaEJ1ZGdldFZhbHVlcygpLnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hCdWRnZXRWYWx1ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmV0Y2hSZWNpcGVzUHJpY2luZygpLnBpcGUodGFwKHByaWNpbmdzID0+IHtcbiAgICAgIHRoaXMudXNlZEJ1ZGdldCA9IHByaWNpbmdzLmxlbmd0aCA+IDAgPyBwcmljaW5ncy5yZWR1Y2UoKGFjYywgcHJpY2luZykgPT4gYWNjICsgcHJpY2luZy5wcmljZSwgMCkgOiAwO1xuICAgICAgdGhpcy51c2VkQnVkZ2V0ID0gTWF0aC5yb3VuZCh0aGlzLnVzZWRCdWRnZXQgKiAxMDApIC8gMTAwO1xuICAgICAgdGhpcy5tYXhCdWRnZXQgPSB0aGlzLmZvcm0udmFsdWUuYnVkZ2V0O1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pKVxuICB9XG5cbiAgb3BlbkNhdGFsb2cocmVjaXBlVG9DaGFuZ2VJbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5yZWNpcGVUb0NoYW5nZUluZGV4ID0gcmVjaXBlVG9DaGFuZ2VJbmRleDtcbiAgICB0aGlzLmNhdGFsb2dNb2RlID0gdHJ1ZTtcbiAgICB0aGlzLnNjcm9sbFRvVG9wKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgY2xvc2VDYXRhbG9nKCkge1xuICAgIHRoaXMucmVjaXBlVG9DaGFuZ2VJbmRleCA9IG51bGw7XG4gICAgdGhpcy5jYXRhbG9nTW9kZSA9IGZhbHNlO1xuICAgIHRoaXMuc2Nyb2xsVG9Ub3AoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBlZGl0UmVjaXBlKHJlY2lwZTogUmVjaXBlKSB7XG4gICAgdGhpcy5idWRnZXR0ZWRSZWNpcGVzW3RoaXMucmVjaXBlVG9DaGFuZ2VJbmRleF0gPSByZWNpcGU7XG4gICAgdGhpcy51cGRhdGVCdWRnZXRWYWx1ZXMoKTtcbiAgICB0aGlzLmNsb3NlQ2F0YWxvZygpO1xuICB9XG5cbiAgb3BlbkJhc2tldENvbmZpcm1hdGlvbigpIHtcbiAgICB0aGlzLnJlY2lwZVRvQ2hhbmdlSW5kZXggPSBudWxsO1xuICAgIHRoaXMuYmFza2V0Q29uZmlybWVkID0gdHJ1ZTtcbiAgICB0aGlzLnNjcm9sbFRvVG9wKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgc2Nyb2xsVG9Ub3AoKSB7XG4gICAgaWYgKHRoaXMudG9wQW5jaG9yKSB7XG4gICAgICB0aGlzLnRvcEFuY2hvci5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHJlbWFpbmluZ0J1ZGdldCgpIHtcbiAgICByZXR1cm4gdGhpcy5idWRnZXR0ZWRSZWNpcGVzLnJlZHVjZSgoYWNjLCByZWNpcGUsIGkpID0+IHtcbiAgICAgICAgLy8gRG9uJ3QgY291bnQgbnVsbCByZWNpcGVzIGFuZCBjdXJyZW50bHkgcmVwbGFjaW5nIHJlY2lwZVxuICAgICAgICBpZiAocmVjaXBlICYmIGkgIT09IHRoaXMucmVjaXBlVG9DaGFuZ2VJbmRleCkge1xuICAgICAgICAgIHJldHVybiBhY2MgLSByZWNpcGUuYXR0cmlidXRlc1snY29tcHV0ZWQtY29zdCddICogdGhpcy5mb3JtLnZhbHVlLmd1ZXN0c0NvdW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LFxuICAgICAgdGhpcy5mb3JtLnZhbHVlLmJ1ZGdldFxuICAgICk7XG4gIH1cblxuICBnZXQgcmVtYWluaW5nUmVjaXBlc051bWJlcigpIHtcbiAgICByZXR1cm4gdGhpcy5idWRnZXR0ZWRSZWNpcGVzLnJlZHVjZSgoYWNjLCByZWNpcGUsIGkpID0+IHtcbiAgICAgIC8vIERvbid0IGNvdW50IG51bGwgcmVjaXBlcyBhbmQgY3VycmVudGx5IHJlcGxhY2luZyByZWNpcGVcbiAgICAgIHJldHVybiByZWNpcGUgJiYgaSAhPT0gdGhpcy5yZWNpcGVUb0NoYW5nZUluZGV4ID8gYWNjIDogYWNjICsgMTtcbiAgICB9LCAwKTtcbiAgfVxufVxuIiwiPGRpdiAjbWlhbU1lYWxzUGxhbm5lclRvcEFuY2hvciBjbGFzcz1cIm1pYW0tbWVhbHMtcGxhbm5lci1hbmNob3JcIj48L2Rpdj5cbjxkaXYgY2xhc3M9XCJtaWFtLW1lYWxzLXBsYW5uZXJcIj5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tbWVhbHMtcGxhbm5lcl9faGVhZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tbWVhbHMtcGxhbm5lcl9faGVhZGVyX19icmVhZGNydW1iXCIgW25nQ2xhc3NdPVwieyAnaGlkZGVuJzogYnVkZ2V0dGVkUmVjaXBlcy5sZW5ndGggPT09IDAgfVwiPlxuICAgICAgPGEgaHJlZj1cIi9cIj5cbiAgICAgICAgPG5nLW1pYW0taWNvblxuICAgICAgICAgIFtpY29uTmFtZV09XCJpY29uLkhvbWVcIlxuICAgICAgICAgIHdpZHRoPVwiMThcIlxuICAgICAgICAgIGhlaWdodD1cIjE4XCJcbiAgICAgICAgICBwcmltYXJ5Q29sb3I9XCIjMUYzNTQzXCJcbiAgICAgICAgPjwvbmctbWlhbS1pY29uPlxuICAgICAgPC9hPlxuICAgICAgPG5nLW1pYW0taWNvbiBbaWNvbk5hbWVdPVwiaWNvbi5DaGV2cm9uRG93blwiIGNsYXNzPVwiY2hldnJvbi1yaWdodFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPjwvbmctbWlhbS1pY29uPlxuICAgICAgPGEgW2hyZWZdPVwiY29udGV4dFNlcnZpY2UuY2F0YWxvZ1VybFwiIGNsYXNzPVwiaW5hY3RpdmVcIj5cbiAgICAgICAgPHNwYW4gaTE4bj5JZMOpZXMgcmVwYXM8L3NwYW4+XG4gICAgICA8L2E+XG4gICAgICA8bmctbWlhbS1pY29uIFtpY29uTmFtZV09XCJpY29uLkNoZXZyb25Eb3duXCIgY2xhc3M9XCJjaGV2cm9uLXJpZ2h0XCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+PC9uZy1taWFtLWljb24+XG4gICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgY2xhc3M9XCJhY3RpdmVcIj5cbiAgICAgICAgPHNwYW4gaTE4bj5QbGFuaWZpZXIgbWVzIHJlcGFzPC9zcGFuPlxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tbWVhbHMtcGxhbm5lcl9fY29udGVudFwiICpuZ0lmPVwiZm9ybVwiPlxuICAgIDxuZy1taWFtLW1lYWxzLXBsYW5uZXItZm9ybSAqbmdJZj1cImFkZGVkUmVjaXBlc0lkcy5sZW5ndGggPT09IDAgJiYgIWNhdGFsb2dNb2RlICYmICFiYXNrZXRDb25maXJtZWRcIlxuICAgICAgW3JlZHVjZWRdPVwiYnVkZ2V0dGVkUmVjaXBlcy5sZW5ndGggPiAwXCIgW2Zvcm1dPVwiZm9ybVwiIChzdWJtaXR0ZWQpPVwiZmV0Y2hSZWNpcGVzKCRldmVudClcIlxuICAgICAgW25nQ2xhc3NdPVwieyAncmVkdWNlZCc6IGJ1ZGdldHRlZFJlY2lwZXMubGVuZ3RoID4gMCB9XCI+PC9uZy1taWFtLW1lYWxzLXBsYW5uZXItZm9ybT5cbiAgICA8bmctbWlhbS1tZWFscy1wbGFubmVyLXJlc3VsdCAqbmdJZj1cImJ1ZGdldHRlZFJlY2lwZXMubGVuZ3RoID4gMCAmJiBhZGRlZFJlY2lwZXNJZHMubGVuZ3RoID09PSAwICYmICFjYXRhbG9nTW9kZSAmJiAhYmFza2V0Q29uZmlybWVkXCJcbiAgICAgIFtyZWNpcGVzXT1cImJ1ZGdldHRlZFJlY2lwZXNcIiBbdXNlZEJ1ZGdldF09XCJ1c2VkQnVkZ2V0XCIgW21heEJ1ZGdldF09XCJtYXhCdWRnZXRcIiBbbG9hZGluZ109XCJsb2FkaW5nXCIgKHJlY2lwZVJlbW92YWwpPVwidXBkYXRlQnVkZ2V0VmFsdWVzKClcIlxuICAgICAgKGNvbmZpcm1lZCk9XCJhZGRSZWNpcGVzKClcIiAob3BlbkNhdGFsb2cpPVwib3BlbkNhdGFsb2coJGV2ZW50KVwiPjwvbmctbWlhbS1tZWFscy1wbGFubmVyLXJlc3VsdD5cbiAgICA8bmctbWlhbS1tZWFscy1wbGFubmVyLWJhc2tldC1wcmV2aWV3ICpuZ0lmPVwiIWJhc2tldENvbmZpcm1lZFwiIFtyZWNpcGVzSWRzXT1cImFkZGVkUmVjaXBlc0lkc1wiIFt1c2VkQnVkZ2V0XT1cInVzZWRCdWRnZXRcIiBbbWF4QnVkZ2V0XT1cIm1heEJ1ZGdldFwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdyZWR1Y2VkJzogYWRkZWRSZWNpcGVzSWRzLmxlbmd0aCA9PT0gMCAmJiAhY2F0YWxvZ01vZGUgJiYgIWJhc2tldENvbmZpcm1lZH1cIiAoY2xvc2VkKT1cIm9wZW5CYXNrZXRDb25maXJtYXRpb24oKVwiPlxuICAgIDwvbmctbWlhbS1tZWFscy1wbGFubmVyLWJhc2tldC1wcmV2aWV3PlxuICAgIDxuZy1taWFtLW1lYWxzLXBsYW5uZXItY2F0YWxvZ1xuICAgICAgKm5nSWY9XCJjYXRhbG9nTW9kZSAmJiAhYmFza2V0Q29uZmlybWVkXCJcbiAgICAgIFttb2RpZmllZEd1ZXN0c109XCJmb3JtLnZhbHVlLmd1ZXN0c0NvdW50XCJcbiAgICAgIFtyZW1haW5pbmdCdWRnZXRdPVwicmVtYWluaW5nQnVkZ2V0XCJcbiAgICAgIFtyZW1haW5pbmdSZWNpcGVzTnVtYmVyXT1cInJlbWFpbmluZ1JlY2lwZXNOdW1iZXJcIlxuICAgICAgKGVkaXRSZWNpcGUpPVwiZWRpdFJlY2lwZSgkZXZlbnQpXCJcbiAgICAgIChjYW5jZWxlZCk9XCJjbG9zZUNhdGFsb2coKVwiPlxuICAgIDwvbmctbWlhbS1tZWFscy1wbGFubmVyLWNhdGFsb2c+XG4gICAgPG5nLW1pYW0tbWVhbHMtcGxhbm5lci1iYXNrZXQtY29uZmlybWF0aW9uXG4gICAgICAqbmdJZj1cImJhc2tldENvbmZpcm1lZFwiXG4gICAgICBbcmVjaXBlc0lkc109XCJhZGRlZFJlY2lwZXNJZHNcIlxuICAgICAgW2J1ZGdldF09XCJ1c2VkQnVkZ2V0XCI+XG4gICAgPC9uZy1taWFtLW1lYWxzLXBsYW5uZXItYmFza2V0LWNvbmZpcm1hdGlvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
383
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhbHMtcGxhbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2J1aWxkcy9taWFtL25nLW1pYW0tc2RrL3Byb2plY3RzL25nLW1pYW0vc3JjLyIsInNvdXJjZXMiOlsibGliL193ZWItY29tcG9uZW50cy9tZWFscy1wbGFubmVyL21lYWxzLXBsYW5uZXIuY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy9tZWFscy1wbGFubmVyL21lYWxzLXBsYW5uZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBYSxpQkFBaUIsRUFBcUIsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5SixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMxRixPQUFPLEVBQTRCLGFBQWEsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVqRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RyxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDYzdELHNEQUVzRjtJQURWLGtRQUFrQztJQUNyRCxpQkFBNkI7OztJQUZlLGlEQUE0QiwrQ0FBQSxxQkFB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Q0FBZ0M7Z0JBQzdDLFNBQVMsRUFBRSxDQUFDLGdDQUFnQyxDQUFDO2dCQUM3QyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtnQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07YUFDaEQ7MFJBR3lDLFNBQVM7a0JBQWhELFNBQVM7bUJBQUMsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIE9uRGVzdHJveSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIE9uSW5pdCwgT25DaGFuZ2VzLCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRXZlbnRUcmFjZXJDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vX2NvbXBvbmVudHMvYWJzdHJhY3RzL2V2ZW50LXRyYWNlci5jb21wb25lbnRcIjtcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgY29tYmluZUxhdGVzdCwgZm9ya0pvaW4sIG9mIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vX3NlcnZpY2VzL2FuYWx5dGljcy5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBDb250ZXh0U2VydmljZSB9IGZyb20gXCIuLi8uLi9fc2VydmljZXMvY29udGV4dC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBCYXNrZXRQcmV2aWV3TGluZSwgUG9pbnRPZlNhbGUsIFJlY2lwZSB9IGZyb20gXCIuLi8uLi9fbW9kZWxzXCI7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSBcIi4uLy4uL190eXBlcy9pY29uLmVudW1cIjtcbmltcG9ydCB7IEJhc2tldHNTZXJ2aWNlLCBHcm9jZXJpZXNMaXN0c1NlcnZpY2UsIFBvaW50T2ZTYWxlc1NlcnZpY2UsIFJlY2lwZXNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL19zZXJ2aWNlc1wiO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IHNraXBXaGlsZSwgc3dpdGNoTWFwLCB0YWtlLCB0YXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IFJlY2lwZVByaWNpbmcgfSBmcm9tIFwiLi4vLi4vX21vZGVscy9yZWNpcGUtcHJpY2luZ1wiO1xuXG5jb25zdCByZWNpcGVJbmNsdWRlcyA9IFsncmVjaXBlLXByb3ZpZGVyJywgJ3Nwb25zb3JzJ107XG5jb25zdCByZWNpcGVTcGFyc2VGaWVsZHMgPSB7XG4gIHJlY2lwZXM6IFsndGl0bGUnLCAnbnVtYmVyLW9mLWd1ZXN0cycsICdtZWRpYS11cmwnLCAndmlkZW8taWQnLCAnZmlsaWdyYW5lLWxvZ28tdXJsJywgJ2RpZmZpY3VsdHknLCAncHJlcGFyYXRpb24tdGltZScsICdjb29raW5nLXRpbWUnLFxuICAgICAgICAgICAgJ3Jlc3RpbmctdGltZScsIC4uLnJlY2lwZUluY2x1ZGVzXSxcbiAgc3BvbnNvcnM6IFsnbG9nby11cmwnXSxcbiAgWydyZWNpcGUtcHJvdmlkZXInXTogWyduYW1lJ11cbn07XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctbWlhbS1tZWFscy1wbGFubmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lYWxzLXBsYW5uZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tZWFscy1wbGFubmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuXG5leHBvcnQgY2xhc3MgTWVhbHNQbGFubmVyQ29tcG9uZW50IGV4dGVuZHMgRXZlbnRUcmFjZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQFZpZXdDaGlsZCgnbWlhbU1lYWxzUGxhbm5lclRvcEFuY2hvcicpIHRvcEFuY2hvcjogRWxlbWVudFJlZjtcblxuICBidWRnZXR0ZWRSZWNpcGVzOiBSZWNpcGVbXSA9IFtdO1xuICBidWRnZXR0ZWRSZWNpcGVzUHJpY2VzOiB7XG4gICAgW3JlY2lwZUlkOiBzdHJpbmddOiBudW1iZXJcbiAgfSA9IHt9O1xuICBhZGRlZFJlY2lwZXNJZHM6IHN0cmluZ1tdID0gW107XG4gIGljb24gPSBJY29uO1xuICBmb3JtOiBGb3JtR3JvdXA7XG4gIGNhdGFsb2dNb2RlID0gZmFsc2U7XG4gIHJlY2lwZVRvQ2hhbmdlSW5kZXg6IG51bWJlcjtcbiAgYmFza2V0Q29uZmlybWVkID0gZmFsc2U7XG4gIGxvYWRpbmcgPSBmYWxzZTtcbiAgaW5ncmVkaWVudHNSZWdyb3VwZWQgPSBmYWxzZTtcbiAgdGltZU9uU3RhcnQgPSBEYXRlLm5vdygpO1xuXG4gIC8vIFByb2dyZXNzIGJhclxuICB1c2VkQnVkZ2V0ID0gMDtcbiAgbWF4QnVkZ2V0ID0gMDtcblxuICBwcml2YXRlIHBvczogUG9pbnRPZlNhbGU7XG4gIHByaXZhdGUgcHJpY2Vib29rS2V5OiBzdHJpbmc7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcm90ZWN0ZWQgYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZSxcbiAgICBwdWJsaWMgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICAgIHB1YmxpYyBncm9jZXJpZXNMaXN0c1NlcnZpY2U6IEdyb2Nlcmllc0xpc3RzU2VydmljZSxcbiAgICBwdWJsaWMgcmVjaXBlc1NlcnZpY2U6IFJlY2lwZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgYmFza2V0c1NlcnZpY2U6IEJhc2tldHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcG9zU2VydmljZTogUG9pbnRPZlNhbGVzU2VydmljZVxuICApIHtcbiAgICBzdXBlcihhbmFseXRpY3NTZXJ2aWNlKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdEZvcm0oKTtcbiAgICB0aGlzLnBhZ2V2aWV3KCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5pbml0UmVjaXBlc1ByaWNpbmcoKSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBpbml0Rm9ybSgpIHtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGJ1ZGdldDogbmV3IEZvcm1Db250cm9sKHVuZGVmaW5lZCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluKDEpXSksXG4gICAgICBndWVzdHNDb3VudDogbmV3IEZvcm1Db250cm9sKDAsIFZhbGlkYXRvcnMubWluKDEpKSxcbiAgICAgIHJlY2lwZXNDb3VudDogbmV3IEZvcm1Db250cm9sKHRoaXMuY29udGV4dFNlcnZpY2UuYW50aUluZmxhdGlvbiA/IDAgOiA0LCBWYWxpZGF0b3JzLm1pbigxKSlcbiAgICB9KTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBmZXRjaFJlY2lwZXMoaW5wdXRzOiB7IGJ1ZGdldDogbnVtYmVyLCBndWVzdHNDb3VudDogbnVtYmVyLCByZWNpcGVzQ291bnQ6IG51bWJlciB9KSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgaWYgKHRoaXMuY29udGV4dFNlcnZpY2UuZGlzcGxheUluZ3JlZGllbnRQaWN0dXJlc09uUmVjaXBlQ2FyZHMgJiYgIXJlY2lwZUluY2x1ZGVzLmluY2x1ZGVzKCdpbmdyZWRpZW50cycpKSB7XG4gICAgICByZWNpcGVJbmNsdWRlcy5wdXNoKCdpbmdyZWRpZW50cycpO1xuICAgICAgcmVjaXBlU3BhcnNlRmllbGRzLnJlY2lwZXMucHVzaCgnaW5ncmVkaWVudHMnKTtcbiAgICAgIHJlY2lwZVNwYXJzZUZpZWxkc1snaW5ncmVkaWVudHMnXSA9IFsnbmFtZScsICdxdWFudGl0eScsICd1bml0JywgJ2FjdGl2ZScsICdmb3JjZWQtZWFucycsICdwaWN0dXJlLXVybCcsICdwb3NpdGlvbiddO1xuICAgIH1cbiAgICB0aGlzLnJlY2lwZXNTZXJ2aWNlLnBsYW4oXG4gICAgICBpbnB1dHMuYnVkZ2V0LCBpbnB1dHMuZ3Vlc3RzQ291bnQsIGlucHV0cy5yZWNpcGVzQ291bnQsIHJlY2lwZUluY2x1ZGVzLCByZWNpcGVTcGFyc2VGaWVsZHNcbiAgICApLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAocmVjaXBlcyA9PiB7XG4gICAgICAgIHRoaXMuYnVkZ2V0dGVkUmVjaXBlcyA9IFtdOyAvLyBSZWZyZXNoIHRoZSByZXN1bHQgdmlld1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMuYnVkZ2V0dGVkUmVjaXBlcyA9IHJlY2lwZXMubWFwKHIgPT4ge1xuICAgICAgICAgIHIubW9kaWZpZWRHdWVzdHMgPSBpbnB1dHMuZ3Vlc3RzQ291bnQ7XG4gICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICByZXR1cm4gdGhpcy5mZXRjaFJlY2lwZXNQcmljaW5nKCk7XG4gICAgICB9KVxuICAgICkuc3Vic2NyaWJlKHByaWNpbmdzID0+IHtcbiAgICAgIHRoaXMudXNlZEJ1ZGdldCA9IHByaWNpbmdzLnJlZHVjZSgoYWNjLCBwcmljaW5nKSA9PiBhY2MgKyBwcmljaW5nLnByaWNlLCAwKTtcbiAgICAgIHRoaXMudXNlZEJ1ZGdldCA9IE1hdGgucm91bmQodGhpcy51c2VkQnVkZ2V0ICogMTAwKSAvIDEwMDtcbiAgICAgIHRoaXMubWF4QnVkZ2V0ID0gdGhpcy5mb3JtLnZhbHVlLmJ1ZGdldDtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIHRoaXMuc2Nyb2xsVG9Ub3AoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIGN1cnJlbnRQYXRoKCk6IHN0cmluZyB7IHJldHVybiAnbWlhbS9yZWNpcGVzL21lYWxzLXBsYW5uZXInOyB9XG5cbiAgYWRkUmVjaXBlcygpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICBjb25zdCBwcmV2aW91c1VzZWRCdWRnZXQgPSB0aGlzLnVzZWRCdWRnZXQ7XG4gICAgbGV0IGJhc2tldEluaXRpYWxpemVkID0gZmFsc2U7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmdyb2Nlcmllc0xpc3RzU2VydmljZS5hcHBlbmRSZWNpcGVzVG9MaXN0KFxuICAgICAgICB0aGlzLmJ1ZGdldHRlZFJlY2lwZXMuZmlsdGVyKHIgPT4gcj8uaWQpLm1hcChyID0+ICh7IGlkOiByLmlkLCBndWVzdHM6IHIubW9kaWZpZWRHdWVzdHMgfSkpLCAvLyByZW1vdmUgZW1wdHkgcmVjaXBlc1xuICAgICAgICB0aGlzLmV2ZW50VHJhY2UoKVxuICAgICAgKS5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuYWRkZWRSZWNpcGVzSWRzID0gdGhpcy5idWRnZXR0ZWRSZWNpcGVzLmZpbHRlcihyID0+IHI/LmlkKS5tYXAociA9PiByLmlkKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5iYXNrZXRzU2VydmljZS5iYXNrZXRQcmV2aWV3JC5waXBlKHRha2UoMikpO1xuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKGJhc2tldFByZXZpZXdMaW5lcyA9PiB7XG4gICAgICAgICAgaWYgKGJhc2tldEluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICB0aGlzLmZldGNoQmFza2V0UHJldmlld1ByaWNpbmcoYmFza2V0UHJldmlld0xpbmVzKVxuICAgICAgICAgICAgdGhpcy5pbmdyZWRpZW50c1JlZ3JvdXBlZCA9IHByZXZpb3VzVXNlZEJ1ZGdldCAhPT0gdGhpcy51c2VkQnVkZ2V0O1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYmFza2V0c1NlcnZpY2UuYmFza2V0UHJldmlldyQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJhc2tldEluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgIH0pLFxuICAgICAgICBzd2l0Y2hNYXAoYmFza2V0UHJldmlld0xpbmVzID0+IHtcbiAgICAgICAgICBpZiAoYmFza2V0UHJldmlld0xpbmVzICE9PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuY29udGFpbnNTb21lQWRkZWRSZWNpcGUoYmFza2V0UHJldmlld0xpbmVzKSkge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mZXRjaEJ1ZGdldFZhbHVlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG9mKHRoaXMuZmV0Y2hCYXNrZXRQcmV2aWV3UHJpY2luZyhiYXNrZXRQcmV2aWV3TGluZXMpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9KVxuICAgICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnNjcm9sbFRvVG9wKCk7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNvbnRhaW5zU29tZUFkZGVkUmVjaXBlKGJhc2tldFByZXZpZXdMaW5lczogQmFza2V0UHJldmlld0xpbmVbXSkge1xuICAgIGxldCBjb250YWluc1NvbWVBZGRlZFJlY2lwZUlkID0gZmFsc2U7XG4gICAgdGhpcy5hZGRlZFJlY2lwZXNJZHMuZm9yRWFjaChyZWNpcGVJZCA9PiB7XG4gICAgICBpZiAoYmFza2V0UHJldmlld0xpbmVzLnNvbWUobGluZSA9PiBsaW5lLmlkID09PSByZWNpcGVJZCkpIHtcbiAgICAgICAgY29udGFpbnNTb21lQWRkZWRSZWNpcGVJZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGNvbnRhaW5zU29tZUFkZGVkUmVjaXBlSWQ7XG4gIH1cblxuICBwcml2YXRlIGZldGNoQmFza2V0UHJldmlld1ByaWNpbmcoYmFza2V0UHJldmlld0xpbmVzOiBCYXNrZXRQcmV2aWV3TGluZVtdKSB7XG4gICAgdGhpcy51c2VkQnVkZ2V0ID0gMDtcbiAgICB0aGlzLmFkZGVkUmVjaXBlc0lkcy5mb3JFYWNoKHJlY2lwZUlkID0+IHtcbiAgICAgIGNvbnN0IGJhc2tldFByZXZpZXdMaW5lID0gYmFza2V0UHJldmlld0xpbmVzLmZpbmQobGluZSA9PiBsaW5lLmlkID09PSByZWNpcGVJZCk7XG4gICAgICBpZiAoYmFza2V0UHJldmlld0xpbmUpIHtcbiAgICAgICAgdGhpcy51c2VkQnVkZ2V0ICs9ICtiYXNrZXRQcmV2aWV3TGluZS5wcmljZTtcbiAgICAgIH1cbiAgICB9KVxuICAgIHRoaXMudXNlZEJ1ZGdldCA9IE1hdGgucm91bmQodGhpcy51c2VkQnVkZ2V0ICogMTAwKSAvIDEwMDtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRSZWNpcGVzUHJpY2luZygpOiBTdWJzY3JpcHRpb24ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLnBvc1NlcnZpY2UucG9zJCwgdGhpcy5iYXNrZXRzU2VydmljZS5iYXNrZXQkXSkucGlwZShcbiAgICAgIHNraXBXaGlsZShyZXN1bHQgPT4gIXJlc3VsdFswXSB8fCAhcmVzdWx0WzFdKVxuICAgICkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICB0aGlzLnBvcyA9IHJlc3VsdFswXTtcbiAgICAgIHRoaXMucHJpY2Vib29rS2V5ID0gcmVzdWx0WzFdLnByaWNlYm9va0tleTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hSZWNpcGVzUHJpY2luZygpOiBPYnNlcnZhYmxlPFJlY2lwZVByaWNpbmdbXT4ge1xuICAgIGlmICh0aGlzLmJ1ZGdldHRlZFJlY2lwZXMubGVuZ3RoID09PSAwIHx8ICF0aGlzLnBvcyB8fCAhdGhpcy5mb3JtLnZhbHVlLmd1ZXN0c0NvdW50KSB7XG4gICAgICByZXR1cm4gb2YoW10pO1xuICAgIH1cbiAgICBjb25zdCByZXF1ZXN0czogT2JzZXJ2YWJsZTxSZWNpcGVQcmljaW5nPltdID0gW107XG4gICAgdGhpcy5idWRnZXR0ZWRSZWNpcGVzUHJpY2VzID0ge307XG4gICAgdGhpcy5idWRnZXR0ZWRSZWNpcGVzLmZvckVhY2gocmVjaXBlID0+IHtcbiAgICAgIGlmIChyZWNpcGUpIHtcbiAgICAgICAgcmVxdWVzdHMucHVzaCh0aGlzLnJlY2lwZXNTZXJ2aWNlLmdldFByaWNpbmcocmVjaXBlLmlkLCB0aGlzLnBvcy5pZCwgdGhpcy5wcmljZWJvb2tLZXksIHRoaXMuZm9ybS52YWx1ZS5ndWVzdHNDb3VudCkucGlwZShcbiAgICAgICAgICBza2lwV2hpbGUocmVzdWx0ID0+ICFyZXN1bHQ/LnByaWNlKSxcbiAgICAgICAgICB0YXAocHJpY2luZyA9PiB0aGlzLmJ1ZGdldHRlZFJlY2lwZXNQcmljZXNbcmVjaXBlLmlkXSA9IHByaWNpbmcucHJpY2UpXG4gICAgICAgICkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXF1ZXN0cy5sZW5ndGggPiAwID8gZm9ya0pvaW4ocmVxdWVzdHMpIDogb2YoW10pO1xuICB9XG5cbiAgdXBkYXRlQnVkZ2V0VmFsdWVzKCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuZmV0Y2hCdWRnZXRWYWx1ZXMoKS5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBwcml2YXRlIGZldGNoQnVkZ2V0VmFsdWVzKCkge1xuICAgIHJldHVybiB0aGlzLmZldGNoUmVjaXBlc1ByaWNpbmcoKS5waXBlKHRhcChwcmljaW5ncyA9PiB7XG4gICAgICB0aGlzLnVzZWRCdWRnZXQgPSBwcmljaW5ncy5sZW5ndGggPiAwID8gcHJpY2luZ3MucmVkdWNlKChhY2MsIHByaWNpbmcpID0+IGFjYyArIHByaWNpbmcucHJpY2UsIDApIDogMDtcbiAgICAgIHRoaXMudXNlZEJ1ZGdldCA9IE1hdGgucm91bmQodGhpcy51c2VkQnVkZ2V0ICogMTAwKSAvIDEwMDtcbiAgICAgIHRoaXMubWF4QnVkZ2V0ID0gdGhpcy5mb3JtLnZhbHVlLmJ1ZGdldDtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KSlcbiAgfVxuXG4gIG9wZW5DYXRhbG9nKHJlY2lwZVRvQ2hhbmdlSW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMucmVjaXBlVG9DaGFuZ2VJbmRleCA9IHJlY2lwZVRvQ2hhbmdlSW5kZXg7XG4gICAgdGhpcy5jYXRhbG9nTW9kZSA9IHRydWU7XG4gICAgdGhpcy5zY3JvbGxUb1RvcCgpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGNsb3NlQ2F0YWxvZygpIHtcbiAgICB0aGlzLnJlY2lwZVRvQ2hhbmdlSW5kZXggPSBudWxsO1xuICAgIHRoaXMuY2F0YWxvZ01vZGUgPSBmYWxzZTtcbiAgICB0aGlzLnNjcm9sbFRvVG9wKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZWRpdFJlY2lwZShyZWNpcGU6IFJlY2lwZSkge1xuICAgIHRoaXMuYnVkZ2V0dGVkUmVjaXBlc1t0aGlzLnJlY2lwZVRvQ2hhbmdlSW5kZXhdID0gcmVjaXBlO1xuICAgIHRoaXMudXBkYXRlQnVkZ2V0VmFsdWVzKCk7XG4gICAgdGhpcy5jbG9zZUNhdGFsb2coKTtcbiAgfVxuXG4gIG9wZW5CYXNrZXRDb25maXJtYXRpb24oKSB7XG4gICAgdGhpcy5yZWNpcGVUb0NoYW5nZUluZGV4ID0gbnVsbDtcbiAgICB0aGlzLmJhc2tldENvbmZpcm1lZCA9IHRydWU7XG4gICAgdGhpcy5zZW5kQ29uZmlybWF0aW9uRXZlbnQoKTtcbiAgICB0aGlzLnNjcm9sbFRvVG9wKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgc2VuZENvbmZpcm1hdGlvbkV2ZW50KCkge1xuICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5zZW5kRXZlbnRXaGVuUmVhZHkoXG4gICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UuRVZFTlRfTUVBTFNfUExBTk5FUl9DT05GSVJNRUQsXG4gICAgICB0aGlzLnBhdGgoKSxcbiAgICAgIHtcbiAgICAgICAgYnVkZ2V0X3VzZXI6IHRoaXMuZm9ybS5nZXQoJ2J1ZGdldCcpLnZhbHVlLFxuICAgICAgICBidWRnZXRfcGxhbm5lcjogdGhpcy51c2VkQnVkZ2V0LFxuICAgICAgICByZWNpcGVzX2NvdW50OiB0aGlzLmZvcm0uZ2V0KCdyZWNpcGVzQ291bnQnKS52YWx1ZSxcbiAgICAgICAgZ3Vlc3RzOiB0aGlzLmZvcm0uZ2V0KCdndWVzdHNDb3VudCcpLnZhbHVlLFxuICAgICAgICB1c2VzX2NvdW50OiB0aGlzLnVwZGF0ZVVzZXNDb3VudCgpLFxuICAgICAgICB0aW1lX3Bhc3NlZDogKERhdGUubm93KCkgLSB0aGlzLnRpbWVPblN0YXJ0KSAvIDEwMDBcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgdXBkYXRlVXNlc0NvdW50KCk6IG51bWJlciB7XG4gICAgY29uc3Qgb2xkQ291bnQgPSBwYXJzZUludChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbWlhbS1tZWFscy1wbGFubmVyLXVzZXMtY291bnQnKSk7XG4gICAgY29uc3QgbmV3Q291bnQgPSBOdW1iZXIuaXNOYU4ob2xkQ291bnQpID8gMSA6IG9sZENvdW50ICsgMTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbWlhbS1tZWFscy1wbGFubmVyLXVzZXMtY291bnQnLCBuZXdDb3VudC50b1N0cmluZygpKTtcbiAgICByZXR1cm4gbmV3Q291bnQ7XG4gIH1cblxuICBzY3JvbGxUb1RvcCgpIHtcbiAgICBpZiAodGhpcy50b3BBbmNob3IpIHtcbiAgICAgIHRoaXMudG9wQW5jaG9yLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgcmVtYWluaW5nQnVkZ2V0KCkge1xuICAgIGNvbnN0IHJlY2lwZVRvQ2hhbmdlSWQgPSB0aGlzLmJ1ZGdldHRlZFJlY2lwZXNbdGhpcy5yZWNpcGVUb0NoYW5nZUluZGV4XT8uaWQ7XG4gICAgbGV0IHJlbWFpbmluZ0J1ZGdldCA9IHRoaXMubWF4QnVkZ2V0IC0gdGhpcy51c2VkQnVkZ2V0O1xuICAgIGlmIChyZWNpcGVUb0NoYW5nZUlkKSB7XG4gICAgICByZW1haW5pbmdCdWRnZXQgKz0gdGhpcy5idWRnZXR0ZWRSZWNpcGVzUHJpY2VzW3JlY2lwZVRvQ2hhbmdlSWRdO1xuICAgIH1cbiAgICBpZiAocmVtYWluaW5nQnVkZ2V0ID4gMCkge1xuICAgICAgcmV0dXJuIHJlbWFpbmluZ0J1ZGdldDtcbiAgICB9XG4gICAgcmV0dXJuIDBcbiAgfVxuXG4gIGdldCByZW1haW5pbmdSZWNpcGVzTnVtYmVyKCkge1xuICAgIHJldHVybiB0aGlzLmJ1ZGdldHRlZFJlY2lwZXMucmVkdWNlKChhY2MsIHJlY2lwZSwgaSkgPT4ge1xuICAgICAgLy8gRG9uJ3QgY291bnQgbnVsbCByZWNpcGVzIGFuZCBjdXJyZW50bHkgcmVwbGFjaW5nIHJlY2lwZVxuICAgICAgcmV0dXJuIHJlY2lwZSAmJiBpICE9PSB0aGlzLnJlY2lwZVRvQ2hhbmdlSW5kZXggPyBhY2MgOiBhY2MgKyAxO1xuICAgIH0sIDApO1xuICB9XG5cbiAgZ2V0IGV4Y2x1ZGVkUmVjaXBlc0lkcygpIHtcbiAgICByZXR1cm4gdGhpcy5idWRnZXR0ZWRSZWNpcGVzLmZpbHRlcihyZWNpcGUgPT4gcmVjaXBlKS5tYXAocmVjaXBlID0+IHJlY2lwZS5pZCk7XG4gIH1cbn1cbiIsIjxkaXYgI21pYW1NZWFsc1BsYW5uZXJUb3BBbmNob3IgY2xhc3M9XCJtaWFtLW1lYWxzLXBsYW5uZXItYW5jaG9yXCI+PC9kaXY+XG48ZGl2IGNsYXNzPVwibWlhbS1tZWFscy1wbGFubmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJtaWFtLW1lYWxzLXBsYW5uZXJfX2hlYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLW1lYWxzLXBsYW5uZXJfX2hlYWRlcl9fYnJlYWRjcnVtYlwiIFtuZ0NsYXNzXT1cInsgJ2hpZGRlbic6IGJ1ZGdldHRlZFJlY2lwZXMubGVuZ3RoID09PSAwIH1cIj5cbiAgICAgIDxhIGhyZWY9XCIvXCI+XG4gICAgICAgIDxuZy1taWFtLWljb25cbiAgICAgICAgICBbaWNvbk5hbWVdPVwiaWNvbi5Ib21lXCJcbiAgICAgICAgICB3aWR0aD1cIjE4XCJcbiAgICAgICAgICBoZWlnaHQ9XCIxOFwiXG4gICAgICAgICAgcHJpbWFyeUNvbG9yPVwiIzFGMzU0M1wiXG4gICAgICAgID48L25nLW1pYW0taWNvbj5cbiAgICAgIDwvYT5cbiAgICAgIDxuZy1taWFtLWljb24gW2ljb25OYW1lXT1cImljb24uQ2hldnJvbkRvd25cIiBjbGFzcz1cImNoZXZyb24tcmlnaHRcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj48L25nLW1pYW0taWNvbj5cbiAgICAgIDxhIFtocmVmXT1cImNvbnRleHRTZXJ2aWNlLmNhdGFsb2dVcmxcIiBjbGFzcz1cImluYWN0aXZlXCI+XG4gICAgICAgIDxzcGFuIGkxOG4+SWTDqWVzIHJlcGFzPC9zcGFuPlxuICAgICAgPC9hPlxuICAgICAgPG5nLW1pYW0taWNvbiBbaWNvbk5hbWVdPVwiaWNvbi5DaGV2cm9uRG93blwiIGNsYXNzPVwiY2hldnJvbi1yaWdodFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPjwvbmctbWlhbS1pY29uPlxuICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwiYWN0aXZlXCI+XG4gICAgICAgIDxzcGFuIGkxOG4+UGxhbmlmaWVyIG1lcyByZXBhczwvc3Bhbj5cbiAgICAgIDwvYT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJtaWFtLW1lYWxzLXBsYW5uZXJfX2NvbnRlbnRcIiAqbmdJZj1cImZvcm1cIj5cbiAgICA8bmctbWlhbS1tZWFscy1wbGFubmVyLWZvcm0gKm5nSWY9XCJhZGRlZFJlY2lwZXNJZHMubGVuZ3RoID09PSAwICYmICFjYXRhbG9nTW9kZSAmJiAhYmFza2V0Q29uZmlybWVkXCIgW29yaWdpblRyYWNlXT1cImV2ZW50VHJhY2UoKVwiXG4gICAgICBbcmVkdWNlZF09XCJidWRnZXR0ZWRSZWNpcGVzLmxlbmd0aCA+IDBcIiBbZm9ybV09XCJmb3JtXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIChzdWJtaXR0ZWQpPVwiZmV0Y2hSZWNpcGVzKCRldmVudClcIlxuICAgICAgW25nQ2xhc3NdPVwieyAncmVkdWNlZCc6IGJ1ZGdldHRlZFJlY2lwZXMubGVuZ3RoID4gMCB9XCI+PC9uZy1taWFtLW1lYWxzLXBsYW5uZXItZm9ybT5cbiAgICA8bmctbWlhbS1tZWFscy1wbGFubmVyLXJlc3VsdCAqbmdJZj1cImJ1ZGdldHRlZFJlY2lwZXMubGVuZ3RoID4gMCAmJiBhZGRlZFJlY2lwZXNJZHMubGVuZ3RoID09PSAwICYmICFjYXRhbG9nTW9kZSAmJiAhYmFza2V0Q29uZmlybWVkXCIgW29yaWdpblRyYWNlXT1cImV2ZW50VHJhY2UoKVwiXG4gICAgICBbcmVjaXBlc109XCJidWRnZXR0ZWRSZWNpcGVzXCIgW3VzZWRCdWRnZXRdPVwidXNlZEJ1ZGdldFwiIFttYXhCdWRnZXRdPVwibWF4QnVkZ2V0XCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIChyZWNpcGVSZW1vdmFsKT1cInVwZGF0ZUJ1ZGdldFZhbHVlcygpXCJcbiAgICAgIChjb25maXJtZWQpPVwiYWRkUmVjaXBlcygpXCIgKG9wZW5DYXRhbG9nKT1cIm9wZW5DYXRhbG9nKCRldmVudClcIj48L25nLW1pYW0tbWVhbHMtcGxhbm5lci1yZXN1bHQ+XG4gICAgPG5nLW1pYW0tbWVhbHMtcGxhbm5lci1iYXNrZXQtcHJldmlldyBcbiAgICAgICpuZ0lmPVwiYWRkZWRSZWNpcGVzSWRzLmxlbmd0aCA+IDAgJiYgIWNhdGFsb2dNb2RlICYmICFiYXNrZXRDb25maXJtZWRcIlxuICAgICAgW3JlY2lwZXNJZHNdPVwiYWRkZWRSZWNpcGVzSWRzXCJcbiAgICAgIFt1c2VkQnVkZ2V0XT1cInVzZWRCdWRnZXRcIlxuICAgICAgW21heEJ1ZGdldF09XCJtYXhCdWRnZXRcIlxuICAgICAgW2luZ3JlZGllbnRzUmVncm91cGVkXT1cImluZ3JlZGllbnRzUmVncm91cGVkXCJcbiAgICAgIFtvcmlnaW5UcmFjZV09XCJldmVudFRyYWNlKClcIlxuICAgICAgW25nQ2xhc3NdPVwieyAncmVkdWNlZCc6IGFkZGVkUmVjaXBlc0lkcy5sZW5ndGggPT09IDAgJiYgIWNhdGFsb2dNb2RlICYmICFiYXNrZXRDb25maXJtZWR9XCJcbiAgICAgIChjbG9zZWQpPVwib3BlbkJhc2tldENvbmZpcm1hdGlvbigpXCI+XG4gICAgPC9uZy1taWFtLW1lYWxzLXBsYW5uZXItYmFza2V0LXByZXZpZXc+XG4gICAgPG5nLW1pYW0tbWVhbHMtcGxhbm5lci1jYXRhbG9nXG4gICAgICAqbmdJZj1cImNhdGFsb2dNb2RlICYmICFiYXNrZXRDb25maXJtZWRcIlxuICAgICAgW21vZGlmaWVkR3Vlc3RzXT1cImZvcm0udmFsdWUuZ3Vlc3RzQ291bnRcIlxuICAgICAgW29yaWdpblRyYWNlXT1cImV2ZW50VHJhY2UoKVwiXG4gICAgICBbcmVtYWluaW5nQnVkZ2V0XT1cInJlbWFpbmluZ0J1ZGdldFwiXG4gICAgICBbcmVtYWluaW5nUmVjaXBlc051bWJlcl09XCJyZW1haW5pbmdSZWNpcGVzTnVtYmVyXCJcbiAgICAgIFtleGNsdWRlZFJlY2lwZXNJZHNdPVwiZXhjbHVkZWRSZWNpcGVzSWRzXCJcbiAgICAgIChlZGl0UmVjaXBlKT1cImVkaXRSZWNpcGUoJGV2ZW50KVwiXG4gICAgICAoY2FuY2VsZWQpPVwiY2xvc2VDYXRhbG9nKClcIj5cbiAgICA8L25nLW1pYW0tbWVhbHMtcGxhbm5lci1jYXRhbG9nPlxuICAgIDxuZy1taWFtLW1lYWxzLXBsYW5uZXItYmFza2V0LWNvbmZpcm1hdGlvblxuICAgICAgKm5nSWY9XCJiYXNrZXRDb25maXJtZWRcIlxuICAgICAgW3JlY2lwZXNJZHNdPVwiYWRkZWRSZWNpcGVzSWRzXCJcbiAgICAgIFtvcmlnaW5UcmFjZV09XCJldmVudFRyYWNlKClcIlxuICAgICAgW2J1ZGdldF09XCJ1c2VkQnVkZ2V0XCI+XG4gICAgPC9uZy1taWFtLW1lYWxzLXBsYW5uZXItYmFza2V0LWNvbmZpcm1hdGlvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -58,6 +58,10 @@ export class SuggestionCardComponent extends AbstractRecipeCardComponent {
58
58
  this.loadRecipe();
59
59
  }
60
60
  }
61
+ // Only send show event if the recipe has changed while the card was in viewport
62
+ sendShowEvent() {
63
+ return false;
64
+ }
61
65
  // If recipe already in basket, update the number of guests so that the pricing gets updated as well
62
66
  // (display = false so that the recipe details don't show up)
63
67
  guestsChanged() {
@@ -89,10 +93,8 @@ export class SuggestionCardComponent extends AbstractRecipeCardComponent {
89
93
  // If the recipe is in basket, will show number of guests as defined in the basket
90
94
  // Otherwise, will show default number of guests for the recipe
91
95
  processResults(recipes) {
92
- var _a, _b;
93
96
  this.isEmpty = (!recipes || recipes.length === 0);
94
97
  if (!this.isEmpty) {
95
- const recipeChanged = ((_a = this.recipe) === null || _a === void 0 ? void 0 : _a.id) !== ((_b = recipes[0]) === null || _b === void 0 ? void 0 : _b.id);
96
98
  // get the first recipe and shallow copy it to permit to send event and do not disturb any other component
97
99
  // if ressource is cached without copy another load will get the attributes
98
100
  this.recipe = recipes[0].shallowCopyWithEvents(this.recipeEventsService.ORIGIN_SUGGESTION, this.eventsGroupId);
@@ -104,10 +106,6 @@ export class SuggestionCardComponent extends AbstractRecipeCardComponent {
104
106
  }
105
107
  }));
106
108
  this.recipeCard.cdr.markForCheck();
107
- if (recipeChanged) {
108
- this.analyticsEventSent = false;
109
- this.sendShowEvent();
110
- }
111
109
  }
112
110
  else {
113
111
  this.hide.emit();
@@ -161,4 +159,4 @@ SuggestionCardComponent.ɵcmp = i0.ɵɵdefineComponent({ type: SuggestionCardCom
161
159
  type: ViewChild,
162
160
  args: ['recipeCard']
163
161
  }] }); })();
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VnZ2VzdGlvbi1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvYnVpbGRzL21pYW0vbmctbWlhbS1zZGsvcHJvamVjdHMvbmctbWlhbS9zcmMvIiwic291cmNlcyI6WyJsaWIvX3dlYi1jb21wb25lbnRzL3JlY2lwZS1jYXJkcy9zdWdnZXN0aW9uLWNhcmQvc3VnZ2VzdGlvbi1jYXJkLmNvbXBvbmVudC50cyIsImxpYi9fd2ViLWNvbXBvbmVudHMvcmVjaXBlLWNhcmRzL3N1Z2dlc3Rpb24tY2FyZC9zdWdnZXN0aW9uLWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxLQUFLLEVBQTRCLE1BQU0sRUFBRSxTQUFTLEVBQ2xJLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUM1RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNoRixPQUFPLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFFLHFCQUFxQixFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU3SCxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7Ozs7Ozs7OztJQ1hwRSxp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O3NCQWFJLE1BQU07dUJBQUMsaUJBQWlCOztzQkFDeEIsTUFBTTt1QkFBQyxjQUFjOztzQkFDckIsTUFBTTt1QkFBQyxxQkFBcUI7O3NCQUM1QixNQUFNO3VCQUFDLFdBQVc7O3NCQUNsQixNQUFNO3VCQUFDLG1CQUFtQjs7c0JBQzFCLE1BQU07dUJBQUMsY0FBYzsrSUFmZixnQkFBZ0I7a0JBQXhCLEtBQUs7WUFDRyxVQUFVO2tCQUFsQixLQUFLO1lBTW1CLFVBQVU7a0JBQWxDLFNBQVM7bUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHtDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uLCBDaGFuZ2VEZXRlY3RvclJlZiwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIEluamVjdCwgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdFJlY2lwZUNhcmRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9fY29tcG9uZW50cy9hYnN0cmFjdHMvYWJzdHJhY3QtcmVjaXBlLWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IFBvaW50T2ZTYWxlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fc2VydmljZXMvcG9pbnQtb2Ytc2FsZXMuc2VydmljZSc7XG5pbXBvcnQgeyBSZWNpcGVzU2VydmljZSwgUmVjaXBlRXZlbnRzU2VydmljZSwgR3JvY2VyaWVzTGlzdHNTZXJ2aWNlLCBDb250ZXh0U2VydmljZSwgVXNlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fc2VydmljZXMnO1xuaW1wb3J0IHsgUmVjaXBlIH0gZnJvbSAnLi4vLi4vLi4vX21vZGVscy9yZWNpcGUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHNraXBXaGlsZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUmVjaXBlQ2FyZENvbXBvbmVudCB9IGZyb20gJy4uL3JlY2lwZS1jYXJkL3JlY2lwZS1jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX3NlcnZpY2VzL2FuYWx5dGljcy5zZXJ2aWNlJztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgVG9hc3RlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fc2VydmljZXMvdG9hc3Rlci5zZXJ2aWNlJztcblxuY29uc3QgcmVjaXBlSW5jbHVkZXMgPSBbJ3JlY2lwZS1wcm92aWRlcicsICdzcG9uc29ycyddO1xuY29uc3QgcmVjaXBlU3BhcnNlRmllbGRzID0ge1xuICByZWNpcGVzOiBbJ3RpdGxlJywgJ251bWJlci1vZi1ndWVzdHMnLCAnbWVkaWEtdXJsJywgJ3ZpZGVvLWlkJywgJ2ZpbGlncmFuZS1sb2dvLXVybCcsICdkaWZmaWN1bHR5JywgJ3ByZXBhcmF0aW9uLXRpbWUnLCAnY29va2luZy10aW1lJyxcbiAgICAgICAgICAgICdyZXN0aW5nLXRpbWUnLCAuLi5yZWNpcGVJbmNsdWRlc10sXG4gIHNwb25zb3JzOiBbJ2xvZ28tdXJsJ10sXG4gIFsncmVjaXBlLXByb3ZpZGVyJ106IFsnbmFtZSddXG59O1xuXG5cbi8qKlxuICogVGhpcyBpcyBhbiBhbmd1bGFyIGNvbXBvbmVudCBkZXNpZ24gdG8gYmUgYSB3ZWIgY29tcG9uZW50XG4gKiB0aGF0J3Mgd2h5IHdlIHVzZSBvblB1c2hTdHJhdGVnaWUgd2l0aCB0aGUgY2hhbmdlRGV0ZXRlY3RvclJlZlxuICogdG8gYXZvaWQgY29tbW9uIGlzc3VlXG4gKiBndWlkZSAtPiBodHRwczovL25ldGJhc2FsLmNvbS9hLWNvbXByZWhlbnNpdmUtZ3VpZGUtdG8tYW5ndWxhci1vbnB1c2gtY2hhbmdlLWRldGVjdGlvbi1zdHJhdGVneS01YmFjNDkzMDc0YTRcbiAqIGFuZCBhbHNvdyB3ZSB1c2UgU2hhZG93RG9tIHRvIHByb3RlY3Qgc3R5bGUgb2Ygb3VyIGNvbXBvbmVudFxuICogYW5kIGFsc293IHN0eWxlIG9mIHRoZSBwYXJlbnQgYXBsaWNhdGlvbiB0aGF0IHdpbGwgdXNlIGl0XG4gKiBkb2MgLT4gaHR0cHM6Ly9hbmd1bGFyLmlvL2FwaS9jb3JlL1ZpZXdFbmNhcHN1bGF0aW9uXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nLW1pYW0tc3VnZ2VzdGlvbi1jYXJkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N1Z2dlc3Rpb24tY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N1Z2dlc3Rpb24tY2FyZC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcblxuZXhwb3J0IGNsYXNzIFN1Z2dlc3Rpb25DYXJkQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RSZWNpcGVDYXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgcmFuZG9tTW9kZUVuYWJsZTogYm9vbGVhbjtcbiAgQElucHV0KCkgcHJvZHVjdElkczoge2lkOiBzdHJpbmcsIGhhc0hpZ2hXZWlnaHQ/OiBib29sZWFufVtdO1xuICBpc0VtcHR5ID0gZmFsc2U7XG4gIHByaXZhdGUgZXZlbnRzR3JvdXBJZCA9IHV1aWR2NCgpO1xuICAvLyBhcyB0aGUgdGVtcGxhdGUgY3JlYXRlcyBhIHJlY2lwZSBjYXJkLCB0aGUgcmVjaXBlIGNhcmQgc2VuZCB0aGUgZXZlbnRzXG4gIHByb3RlY3RlZCBzZW5kU2hvd0V2ZW50T25TY3JvbGwgPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKCdyZWNpcGVDYXJkJykgcmVjaXBlQ2FyZDogUmVjaXBlQ2FyZENvbXBvbmVudDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KENoYW5nZURldGVjdG9yUmVmKSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBJbmplY3QoUmVjaXBlc1NlcnZpY2UpIHJlY2lwZVNlcnZpY2U6IFJlY2lwZXNTZXJ2aWNlLFxuICAgIEBJbmplY3QoR3JvY2VyaWVzTGlzdHNTZXJ2aWNlKSBncm9jZXJpZXNMaXN0c1NlcnZpY2U6IEdyb2Nlcmllc0xpc3RzU2VydmljZSxcbiAgICBASW5qZWN0KFVzZXJTZXJ2aWNlKSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgQEluamVjdChQb2ludE9mU2FsZXNTZXJ2aWNlKSBwb2ludE9mU2FsZXNTZXJ2aWNlOiBQb2ludE9mU2FsZXNTZXJ2aWNlLFxuICAgIEBJbmplY3QoQ29udGV4dFNlcnZpY2UpIGNvbnRleHRTZXJ2aWNlOiBDb250ZXh0U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZSxcbiAgICBwdWJsaWMgcmVjaXBlRXZlbnRzU2VydmljZTogUmVjaXBlRXZlbnRzU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgZWxlbWVudDogRWxlbWVudFJlZixcbiAgICBwcm90ZWN0ZWQgdG9hc3RlclNlcnZpY2U6IFRvYXN0ZXJTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGNkciwgcmVjaXBlU2VydmljZSwgcmVjaXBlRXZlbnRzU2VydmljZSwgZ3JvY2VyaWVzTGlzdHNTZXJ2aWNlLCB1c2VyU2VydmljZSwgcG9pbnRPZlNhbGVzU2VydmljZSwgY29udGV4dFNlcnZpY2UsXG4gICAgICBhbmFseXRpY3NTZXJ2aWNlLCBlbGVtZW50LCB0b2FzdGVyU2VydmljZSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhzaW1wbGVDaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKCggc2ltcGxlQ2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgncHJvZHVjdElkcycpICYmICF0aGlzLnJhbmRvbU1vZGVFbmFibGUpIHx8ICF0aGlzLnJlY2lwZSkge1xuICAgICAgdGhpcy5sb2FkUmVjaXBlKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgcmVjaXBlIGFscmVhZHkgaW4gYmFza2V0LCB1cGRhdGUgdGhlIG51bWJlciBvZiBndWVzdHMgc28gdGhhdCB0aGUgcHJpY2luZyBnZXRzIHVwZGF0ZWQgYXMgd2VsbFxuICAvLyAoZGlzcGxheSA9IGZhbHNlIHNvIHRoYXQgdGhlIHJlY2lwZSBkZXRhaWxzIGRvbid0IHNob3cgdXApXG4gIGd1ZXN0c0NoYW5nZWQoKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmdyb2Nlcmllc0xpc3RzU2VydmljZS5yZWNpcGVJc0luTGlzdCh0aGlzLnJlY2lwZS5pZCkuc3Vic2NyaWJlKHJlY2lwZUlzSW5MaXN0ID0+IHtcbiAgICAgICAgaWYgKHJlY2lwZUlzSW5MaXN0KXtcbiAgICAgICAgICB0aGlzLmFkZFJlY2lwZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZFJlY2lwZSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuZmV0Y2hSZWNpcGVzKCkucGlwZShcbiAgICAgICAgc2tpcFdoaWxlKHJlc3VsdHMgPT4gIXJlc3VsdHMpLFxuICAgICAgICBjYXRjaEVycm9yKCBlcnIgPT4ge1xuICAgICAgICAgIHRoaXMuaGlkZS5lbWl0KCk7XG4gICAgICAgICAgcmV0dXJuIG9mKGVycik7XG4gICAgICAgICAgfSksXG4gICAgICApLnN1YnNjcmliZShyZXN1bHRzID0+IHRoaXMucHJvY2Vzc1Jlc3VsdHMocmVzdWx0cykpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hSZWNpcGVzKCk6IE9ic2VydmFibGU8UmVjaXBlW10+IHtcbiAgICBpZiAodGhpcy5jb250ZXh0U2VydmljZS5kaXNwbGF5SW5ncmVkaWVudFBpY3R1cmVzT25SZWNpcGVDYXJkcyAmJiAhcmVjaXBlSW5jbHVkZXMuaW5jbHVkZXMoJ2luZ3JlZGllbnRzJykpIHtcbiAgICAgIHJlY2lwZUluY2x1ZGVzLnB1c2goJ2luZ3JlZGllbnRzJyk7XG4gICAgICByZWNpcGVTcGFyc2VGaWVsZHMucmVjaXBlcy5wdXNoKCdpbmdyZWRpZW50cycpO1xuICAgICAgcmVjaXBlU3BhcnNlRmllbGRzWydpbmdyZWRpZW50cyddID0gWyduYW1lJywgJ3F1YW50aXR5JywgJ3VuaXQnLCAnYWN0aXZlJywgJ2ZvcmNlZC1lYW5zJywgJ3BpY3R1cmUtdXJsJywgJ3Bvc2l0aW9uJ107XG4gICAgfVxuICAgIGlmICh0aGlzLnJhbmRvbU1vZGVFbmFibGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlY2lwZVNlcnZpY2UuZ2V0UmFuZG9tKHJlY2lwZUluY2x1ZGVzLCByZWNpcGVTcGFyc2VGaWVsZHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWNpcGVTZXJ2aWNlLmdldFN1Z2dlc3Rpb24odGhpcy5wcm9kdWN0SWRzLCB0aGlzLmV2ZW50c0dyb3VwSWQsIHJlY2lwZUluY2x1ZGVzLCByZWNpcGVTcGFyc2VGaWVsZHMpO1xuICAgIH1cbiAgfVxuXG4gIC8vIElmIHRoZSByZWNpcGUgaXMgaW4gYmFza2V0LCB3aWxsIHNob3cgbnVtYmVyIG9mIGd1ZXN0cyBhcyBkZWZpbmVkIGluIHRoZSBiYXNrZXRcbiAgLy8gT3RoZXJ3aXNlLCB3aWxsIHNob3cgZGVmYXVsdCBudW1iZXIgb2YgZ3Vlc3RzIGZvciB0aGUgcmVjaXBlXG4gIHByaXZhdGUgcHJvY2Vzc1Jlc3VsdHMocmVjaXBlczogUmVjaXBlW10pIHtcbiAgICB0aGlzLmlzRW1wdHkgPSAoIXJlY2lwZXMgfHwgcmVjaXBlcy5sZW5ndGggPT09IDApO1xuICAgIGlmICghdGhpcy5pc0VtcHR5KSB7XG4gICAgICBjb25zdCByZWNpcGVDaGFuZ2VkID0gdGhpcy5yZWNpcGU/LmlkICE9PSByZWNpcGVzWzBdPy5pZDtcbiAgICAgIC8vIGdldCB0aGUgZmlyc3QgcmVjaXBlIGFuZCBzaGFsbG93IGNvcHkgaXQgdG8gcGVybWl0IHRvIHNlbmQgZXZlbnQgYW5kIGRvIG5vdCBkaXN0dXJiIGFueSBvdGhlciBjb21wb25lbnRcbiAgICAgIC8vIGlmIHJlc3NvdXJjZSBpcyBjYWNoZWQgd2l0aG91dCBjb3B5IGFub3RoZXIgbG9hZCB3aWxsIGdldCB0aGUgYXR0cmlidXRlc1xuICAgICAgdGhpcy5yZWNpcGUgPSByZWNpcGVzWzBdLnNoYWxsb3dDb3B5V2l0aEV2ZW50cyh0aGlzLnJlY2lwZUV2ZW50c1NlcnZpY2UuT1JJR0lOX1NVR0dFU1RJT04sIHRoaXMuZXZlbnRzR3JvdXBJZCk7XG4gICAgICAvLyBVcGRhdGUgZ3Vlc3RzIGZyb20gbGlzdCBvbmx5IGlmIHJlY2lwZSBpcyBpbiBsaXN0XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmdyb2Nlcmllc0xpc3RzU2VydmljZS5yZWNpcGVJc0luTGlzdCh0aGlzLnJlY2lwZS5pZCkuc3Vic2NyaWJlKGlzSW5MaXN0ID0+IHtcbiAgICAgICAgaWYgKGlzSW5MaXN0KSB7XG4gICAgICAgICAgdGhpcy5yZWNpcGUubW9kaWZpZWRHdWVzdHMgPSB0aGlzLmdyb2Nlcmllc0xpc3RzU2VydmljZS5ndWVzdHNGb3JSZWNpcGUodGhpcy5yZWNpcGUpIHx8ICt0aGlzLnJlY2lwZS5ndWVzdHM7XG4gICAgICAgICAgdGhpcy5yZWNpcGVDYXJkLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgICAgdGhpcy5yZWNpcGVDYXJkLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIGlmIChyZWNpcGVDaGFuZ2VkKSB7XG4gICAgICAgIHRoaXMuYW5hbHl0aWNzRXZlbnRTZW50ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2VuZFNob3dFdmVudCgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhpZGUuZW1pdCgpO1xuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbn1cbiIsIjwhLS0gVE9ETyByZW5hbWUgbmctbWlhbS1yZWNpcGVDYXJkICAtLT4gXG48bmctbWlhbS1yZWNpcGUtY2FyZFxuICAjcmVjaXBlQ2FyZFxuICAqbmdJZj1cIiFpc0VtcHR5XCJcbiAgW3JlY2lwZV09XCJyZWNpcGVcIlxuICBbaGVhZGVyVGV4dF09J2hlYWRlclRleHQnXG4gIFtkaXNwbGF5UHJpY2luZ109XCJkaXNwbGF5UHJpY2luZ1wiXG4gIFtkaXNwbGF5QWRkZWRPblBpY3R1cmVdPVwiZGlzcGxheUFkZGVkT25QaWN0dXJlXCJcbiAgW29yaWdpblRyYWNlXT1cImV2ZW50VHJhY2UoKVwiXG4gIChndWVzdHNDaGFuZ2VkKT1cImd1ZXN0c0NoYW5nZWQoKVwiXG4+PC9uZy1taWFtLXJlY2lwZS1jYXJkPlxuIl19
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VnZ2VzdGlvbi1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvYnVpbGRzL21pYW0vbmctbWlhbS1zZGsvcHJvamVjdHMvbmctbWlhbS9zcmMvIiwic291cmNlcyI6WyJsaWIvX3dlYi1jb21wb25lbnRzL3JlY2lwZS1jYXJkcy9zdWdnZXN0aW9uLWNhcmQvc3VnZ2VzdGlvbi1jYXJkLmNvbXBvbmVudC50cyIsImxpYi9fd2ViLWNvbXBvbmVudHMvcmVjaXBlLWNhcmRzL3N1Z2dlc3Rpb24tY2FyZC9zdWdnZXN0aW9uLWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxLQUFLLEVBQTRCLE1BQU0sRUFBRSxTQUFTLEVBQ2xJLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUM1RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNoRixPQUFPLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFFLHFCQUFxQixFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU3SCxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7Ozs7Ozs7OztJQ1hwRSxp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QyxjQUFjOytJQWZmLGdCQUFnQjtrQkFBeEIsS0FBSztZQUNHLFVBQVU7a0JBQWxCLEtBQUs7WUFNbUIsVUFBVTtrQkFBbEMsU0FBUzttQkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQge0NvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24sIENoYW5nZURldGVjdG9yUmVmLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgSW5qZWN0LCBWaWV3Q2hpbGQsXG4gIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0UmVjaXBlQ2FyZENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL19jb21wb25lbnRzL2Fic3RyYWN0cy9hYnN0cmFjdC1yZWNpcGUtY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9pbnRPZlNhbGVzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19zZXJ2aWNlcy9wb2ludC1vZi1zYWxlcy5zZXJ2aWNlJztcbmltcG9ydCB7IFJlY2lwZXNTZXJ2aWNlLCBSZWNpcGVFdmVudHNTZXJ2aWNlLCBHcm9jZXJpZXNMaXN0c1NlcnZpY2UsIENvbnRleHRTZXJ2aWNlLCBVc2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19zZXJ2aWNlcyc7XG5pbXBvcnQgeyBSZWNpcGUgfSBmcm9tICcuLi8uLi8uLi9fbW9kZWxzL3JlY2lwZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgc2tpcFdoaWxlfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBSZWNpcGVDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi4vcmVjaXBlLWNhcmQvcmVjaXBlLWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fc2VydmljZXMvYW5hbHl0aWNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBUb2FzdGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19zZXJ2aWNlcy90b2FzdGVyLnNlcnZpY2UnO1xuXG5jb25zdCByZWNpcGVJbmNsdWRlcyA9IFsncmVjaXBlLXByb3ZpZGVyJywgJ3Nwb25zb3JzJ107XG5jb25zdCByZWNpcGVTcGFyc2VGaWVsZHMgPSB7XG4gIHJlY2lwZXM6IFsndGl0bGUnLCAnbnVtYmVyLW9mLWd1ZXN0cycsICdtZWRpYS11cmwnLCAndmlkZW8taWQnLCAnZmlsaWdyYW5lLWxvZ28tdXJsJywgJ2RpZmZpY3VsdHknLCAncHJlcGFyYXRpb24tdGltZScsICdjb29raW5nLXRpbWUnLFxuICAgICAgICAgICAgJ3Jlc3RpbmctdGltZScsIC4uLnJlY2lwZUluY2x1ZGVzXSxcbiAgc3BvbnNvcnM6IFsnbG9nby11cmwnXSxcbiAgWydyZWNpcGUtcHJvdmlkZXInXTogWyduYW1lJ11cbn07XG5cblxuLyoqXG4gKiBUaGlzIGlzIGFuIGFuZ3VsYXIgY29tcG9uZW50IGRlc2lnbiB0byBiZSBhIHdlYiBjb21wb25lbnRcbiAqIHRoYXQncyB3aHkgd2UgdXNlIG9uUHVzaFN0cmF0ZWdpZSB3aXRoIHRoZSBjaGFuZ2VEZXRldGVjdG9yUmVmXG4gKiB0byBhdm9pZCBjb21tb24gaXNzdWVcbiAqIGd1aWRlIC0+IGh0dHBzOi8vbmV0YmFzYWwuY29tL2EtY29tcHJlaGVuc2l2ZS1ndWlkZS10by1hbmd1bGFyLW9ucHVzaC1jaGFuZ2UtZGV0ZWN0aW9uLXN0cmF0ZWd5LTViYWM0OTMwNzRhNFxuICogYW5kIGFsc293IHdlIHVzZSBTaGFkb3dEb20gdG8gcHJvdGVjdCBzdHlsZSBvZiBvdXIgY29tcG9uZW50XG4gKiBhbmQgYWxzb3cgc3R5bGUgb2YgdGhlIHBhcmVudCBhcGxpY2F0aW9uIHRoYXQgd2lsbCB1c2UgaXRcbiAqIGRvYyAtPiBodHRwczovL2FuZ3VsYXIuaW8vYXBpL2NvcmUvVmlld0VuY2Fwc3VsYXRpb25cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctbWlhbS1zdWdnZXN0aW9uLWNhcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vc3VnZ2VzdGlvbi1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3VnZ2VzdGlvbi1jYXJkLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuXG5leHBvcnQgY2xhc3MgU3VnZ2VzdGlvbkNhcmRDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdFJlY2lwZUNhcmRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSByYW5kb21Nb2RlRW5hYmxlOiBib29sZWFuO1xuICBASW5wdXQoKSBwcm9kdWN0SWRzOiB7aWQ6IHN0cmluZywgaGFzSGlnaFdlaWdodD86IGJvb2xlYW59W107XG4gIGlzRW1wdHkgPSBmYWxzZTtcbiAgcHJpdmF0ZSBldmVudHNHcm91cElkID0gdXVpZHY0KCk7XG4gIC8vIGFzIHRoZSB0ZW1wbGF0ZSBjcmVhdGVzIGEgcmVjaXBlIGNhcmQsIHRoZSByZWNpcGUgY2FyZCBzZW5kIHRoZSBldmVudHNcbiAgcHJvdGVjdGVkIHNlbmRTaG93RXZlbnRPblNjcm9sbCA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoJ3JlY2lwZUNhcmQnKSByZWNpcGVDYXJkOiBSZWNpcGVDYXJkQ29tcG9uZW50O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQEluamVjdChSZWNpcGVzU2VydmljZSkgcmVjaXBlU2VydmljZTogUmVjaXBlc1NlcnZpY2UsXG4gICAgQEluamVjdChHcm9jZXJpZXNMaXN0c1NlcnZpY2UpIGdyb2Nlcmllc0xpc3RzU2VydmljZTogR3JvY2VyaWVzTGlzdHNTZXJ2aWNlLFxuICAgIEBJbmplY3QoVXNlclNlcnZpY2UpIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBASW5qZWN0KFBvaW50T2ZTYWxlc1NlcnZpY2UpIHBvaW50T2ZTYWxlc1NlcnZpY2U6IFBvaW50T2ZTYWxlc1NlcnZpY2UsXG4gICAgQEluamVjdChDb250ZXh0U2VydmljZSkgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlLFxuICAgIHB1YmxpYyByZWNpcGVFdmVudHNTZXJ2aWNlOiBSZWNpcGVFdmVudHNTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBlbGVtZW50OiBFbGVtZW50UmVmLFxuICAgIHByb3RlY3RlZCB0b2FzdGVyU2VydmljZTogVG9hc3RlclNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoY2RyLCByZWNpcGVTZXJ2aWNlLCByZWNpcGVFdmVudHNTZXJ2aWNlLCBncm9jZXJpZXNMaXN0c1NlcnZpY2UsIHVzZXJTZXJ2aWNlLCBwb2ludE9mU2FsZXNTZXJ2aWNlLCBjb250ZXh0U2VydmljZSxcbiAgICAgIGFuYWx5dGljc1NlcnZpY2UsIGVsZW1lbnQsIHRvYXN0ZXJTZXJ2aWNlKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKHNpbXBsZUNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoKCBzaW1wbGVDaGFuZ2VzLmhhc093blByb3BlcnR5KCdwcm9kdWN0SWRzJykgJiYgIXRoaXMucmFuZG9tTW9kZUVuYWJsZSkgfHwgIXRoaXMucmVjaXBlKSB7XG4gICAgICB0aGlzLmxvYWRSZWNpcGUoKTtcbiAgICB9XG4gIH1cblxuICAvLyBPbmx5IHNlbmQgc2hvdyBldmVudCBpZiB0aGUgcmVjaXBlIGhhcyBjaGFuZ2VkIHdoaWxlIHRoZSBjYXJkIHdhcyBpbiB2aWV3cG9ydFxuICBwdWJsaWMgc2VuZFNob3dFdmVudCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBJZiByZWNpcGUgYWxyZWFkeSBpbiBiYXNrZXQsIHVwZGF0ZSB0aGUgbnVtYmVyIG9mIGd1ZXN0cyBzbyB0aGF0IHRoZSBwcmljaW5nIGdldHMgdXBkYXRlZCBhcyB3ZWxsXG4gIC8vIChkaXNwbGF5ID0gZmFsc2Ugc28gdGhhdCB0aGUgcmVjaXBlIGRldGFpbHMgZG9uJ3Qgc2hvdyB1cClcbiAgZ3Vlc3RzQ2hhbmdlZCgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuZ3JvY2VyaWVzTGlzdHNTZXJ2aWNlLnJlY2lwZUlzSW5MaXN0KHRoaXMucmVjaXBlLmlkKS5zdWJzY3JpYmUocmVjaXBlSXNJbkxpc3QgPT4ge1xuICAgICAgICBpZiAocmVjaXBlSXNJbkxpc3Qpe1xuICAgICAgICAgIHRoaXMuYWRkUmVjaXBlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkUmVjaXBlKCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5mZXRjaFJlY2lwZXMoKS5waXBlKFxuICAgICAgICBza2lwV2hpbGUocmVzdWx0cyA9PiAhcmVzdWx0cyksXG4gICAgICAgIGNhdGNoRXJyb3IoIGVyciA9PiB7XG4gICAgICAgICAgdGhpcy5oaWRlLmVtaXQoKTtcbiAgICAgICAgICByZXR1cm4gb2YoZXJyKTtcbiAgICAgICAgICB9KSxcbiAgICAgICkuc3Vic2NyaWJlKHJlc3VsdHMgPT4gdGhpcy5wcm9jZXNzUmVzdWx0cyhyZXN1bHRzKSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmZXRjaFJlY2lwZXMoKTogT2JzZXJ2YWJsZTxSZWNpcGVbXT4ge1xuICAgIGlmICh0aGlzLmNvbnRleHRTZXJ2aWNlLmRpc3BsYXlJbmdyZWRpZW50UGljdHVyZXNPblJlY2lwZUNhcmRzICYmICFyZWNpcGVJbmNsdWRlcy5pbmNsdWRlcygnaW5ncmVkaWVudHMnKSkge1xuICAgICAgcmVjaXBlSW5jbHVkZXMucHVzaCgnaW5ncmVkaWVudHMnKTtcbiAgICAgIHJlY2lwZVNwYXJzZUZpZWxkcy5yZWNpcGVzLnB1c2goJ2luZ3JlZGllbnRzJyk7XG4gICAgICByZWNpcGVTcGFyc2VGaWVsZHNbJ2luZ3JlZGllbnRzJ10gPSBbJ25hbWUnLCAncXVhbnRpdHknLCAndW5pdCcsICdhY3RpdmUnLCAnZm9yY2VkLWVhbnMnLCAncGljdHVyZS11cmwnLCAncG9zaXRpb24nXTtcbiAgICB9XG4gICAgaWYgKHRoaXMucmFuZG9tTW9kZUVuYWJsZSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVjaXBlU2VydmljZS5nZXRSYW5kb20ocmVjaXBlSW5jbHVkZXMsIHJlY2lwZVNwYXJzZUZpZWxkcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnJlY2lwZVNlcnZpY2UuZ2V0U3VnZ2VzdGlvbih0aGlzLnByb2R1Y3RJZHMsIHRoaXMuZXZlbnRzR3JvdXBJZCwgcmVjaXBlSW5jbHVkZXMsIHJlY2lwZVNwYXJzZUZpZWxkcyk7XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgdGhlIHJlY2lwZSBpcyBpbiBiYXNrZXQsIHdpbGwgc2hvdyBudW1iZXIgb2YgZ3Vlc3RzIGFzIGRlZmluZWQgaW4gdGhlIGJhc2tldFxuICAvLyBPdGhlcndpc2UsIHdpbGwgc2hvdyBkZWZhdWx0IG51bWJlciBvZiBndWVzdHMgZm9yIHRoZSByZWNpcGVcbiAgcHJpdmF0ZSBwcm9jZXNzUmVzdWx0cyhyZWNpcGVzOiBSZWNpcGVbXSkge1xuICAgIHRoaXMuaXNFbXB0eSA9ICghcmVjaXBlcyB8fCByZWNpcGVzLmxlbmd0aCA9PT0gMCk7XG4gICAgaWYgKCF0aGlzLmlzRW1wdHkpIHtcbiAgICAgIC8vIGdldCB0aGUgZmlyc3QgcmVjaXBlIGFuZCBzaGFsbG93IGNvcHkgaXQgdG8gcGVybWl0IHRvIHNlbmQgZXZlbnQgYW5kIGRvIG5vdCBkaXN0dXJiIGFueSBvdGhlciBjb21wb25lbnRcbiAgICAgIC8vIGlmIHJlc3NvdXJjZSBpcyBjYWNoZWQgd2l0aG91dCBjb3B5IGFub3RoZXIgbG9hZCB3aWxsIGdldCB0aGUgYXR0cmlidXRlc1xuICAgICAgdGhpcy5yZWNpcGUgPSByZWNpcGVzWzBdLnNoYWxsb3dDb3B5V2l0aEV2ZW50cyh0aGlzLnJlY2lwZUV2ZW50c1NlcnZpY2UuT1JJR0lOX1NVR0dFU1RJT04sIHRoaXMuZXZlbnRzR3JvdXBJZCk7XG4gICAgICAvLyBVcGRhdGUgZ3Vlc3RzIGZyb20gbGlzdCBvbmx5IGlmIHJlY2lwZSBpcyBpbiBsaXN0XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmdyb2Nlcmllc0xpc3RzU2VydmljZS5yZWNpcGVJc0luTGlzdCh0aGlzLnJlY2lwZS5pZCkuc3Vic2NyaWJlKGlzSW5MaXN0ID0+IHtcbiAgICAgICAgaWYgKGlzSW5MaXN0KSB7XG4gICAgICAgICAgdGhpcy5yZWNpcGUubW9kaWZpZWRHdWVzdHMgPSB0aGlzLmdyb2Nlcmllc0xpc3RzU2VydmljZS5ndWVzdHNGb3JSZWNpcGUodGhpcy5yZWNpcGUpIHx8ICt0aGlzLnJlY2lwZS5ndWVzdHM7XG4gICAgICAgICAgdGhpcy5yZWNpcGVDYXJkLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgICAgdGhpcy5yZWNpcGVDYXJkLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oaWRlLmVtaXQoKTtcbiAgICB9XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG59XG4iLCI8IS0tIFRPRE8gcmVuYW1lIG5nLW1pYW0tcmVjaXBlQ2FyZCAgLS0+IFxuPG5nLW1pYW0tcmVjaXBlLWNhcmRcbiAgI3JlY2lwZUNhcmRcbiAgKm5nSWY9XCIhaXNFbXB0eVwiXG4gIFtyZWNpcGVdPVwicmVjaXBlXCJcbiAgW2hlYWRlclRleHRdPSdoZWFkZXJUZXh0J1xuICBbZGlzcGxheVByaWNpbmddPVwiZGlzcGxheVByaWNpbmdcIlxuICBbZGlzcGxheUFkZGVkT25QaWN0dXJlXT1cImRpc3BsYXlBZGRlZE9uUGljdHVyZVwiXG4gIFtvcmlnaW5UcmFjZV09XCJldmVudFRyYWNlKClcIlxuICAoZ3Vlc3RzQ2hhbmdlZCk9XCJndWVzdHNDaGFuZ2VkKClcIlxuPjwvbmctbWlhbS1yZWNpcGUtY2FyZD5cbiJdfQ==