ng-miam 9.2.0 → 9.2.2

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 (104) hide show
  1. package/bundles/ng-miam.umd.js +927 -634
  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/accordion/accordion.component.js +2 -2
  6. package/esm2015/lib/_components/addon-link/addon-link.component.js +3 -3
  7. package/esm2015/lib/_components/counter-input/counter-input.component.js +14 -12
  8. package/esm2015/lib/_components/guests-dropdown/guests-dropdown.component.js +8 -5
  9. package/esm2015/lib/_components/icon/icon.component.js +2 -2
  10. package/esm2015/lib/_components/like-button/like-button.component.js +6 -5
  11. package/esm2015/lib/_components/modal/modal.component.js +39 -36
  12. package/esm2015/lib/_components/no-pos-selected/no-pos-selected.component.js +2 -2
  13. package/esm2015/lib/_components/product-card/out-of-stock-overlay/out-of-stock-overlay.component.js +15 -6
  14. package/esm2015/lib/_components/product-card/product-card-skeleton/product-card-skeleton.component.js +1 -1
  15. package/esm2015/lib/_components/product-card/product-card.component.js +25 -7
  16. package/esm2015/lib/_components/products-picker/products-picker.component.js +2 -2
  17. package/esm2015/lib/_components/recipe-promotion-badge/recipe-promotion-badge.component.js +2 -2
  18. package/esm2015/lib/_components/sponsor-blocks/sponsor-image-and-text-block/sponsor-image-and-text-block.component.js +4 -4
  19. package/esm2015/lib/_components/sponsor-blocks/sponsor-logo-block/sponsor-logo-block.component.js +4 -4
  20. package/esm2015/lib/_components/sponsor-blocks/sponsor-picture-block/sponsor-picture-block.component.js +3 -3
  21. package/esm2015/lib/_components/sponsor-blocks/sponsor-small-picture-block/sponsor-small-picture-block.component.js +3 -3
  22. package/esm2015/lib/_components/sponsor-blocks/sponsor-text-and-image-block/sponsor-text-and-image-block.component.js +4 -4
  23. package/esm2015/lib/_models/basket-actions/basket-action.js +2 -2
  24. package/esm2015/lib/_services/basket-recipe-cleanup.service.js +62 -0
  25. package/esm2015/lib/_services/basket-transfer.service.js +3 -2
  26. package/esm2015/lib/_services/baskets-synchronizing/baskets-synchronizer.service.js +9 -3
  27. package/esm2015/lib/_services/context.service.js +17 -13
  28. package/esm2015/lib/_services/interceptor.service.js +10 -3
  29. package/esm2015/lib/_services/recipe-details.service.js +22 -7
  30. package/esm2015/lib/_services/recipes.service.js +5 -5
  31. package/esm2015/lib/_services/store-locator.service.js +10 -3
  32. package/esm2015/lib/_services/store-out-of-stock.service.js +57 -0
  33. package/esm2015/lib/_services/user.service.js +3 -3
  34. package/esm2015/lib/_types/builded/mealz-interface.js +1 -1
  35. package/esm2015/lib/_web-components/basket-preview/basket-preview-block/basket-preview-block.component.js +3 -2
  36. package/esm2015/lib/_web-components/basket-preview/basket-preview-line/basket-preview-line.component.js +130 -122
  37. package/esm2015/lib/_web-components/basket-preview/basket-preview-product/basket-preview-product.component.js +44 -34
  38. package/esm2015/lib/_web-components/basket-preview/replace-item/replace-item.component.js +14 -7
  39. package/esm2015/lib/_web-components/list-scan/files-inputs/files-inputs.component.js +2 -2
  40. package/esm2015/lib/_web-components/meals-planner/meals-planner-form/meals-planner-form.component.js +13 -13
  41. package/esm2015/lib/_web-components/no-supplier-onboarding/no-supplier-onboarding.component.js +8 -12
  42. package/esm2015/lib/_web-components/preferences/preferences-search/preferences-search.component.js +2 -2
  43. package/esm2015/lib/_web-components/preferences/preferences.component.js +28 -28
  44. package/esm2015/lib/_web-components/recipe-cards/recipe-card/recipe-card.component.js +118 -97
  45. package/esm2015/lib/_web-components/recipe-cards/recipe-card-cta/recipe-card-cta.component.js +21 -14
  46. package/esm2015/lib/_web-components/recipe-catalog/catalog-article-card/catalog-article-card.component.js +9 -8
  47. package/esm2015/lib/_web-components/recipe-catalog/catalog-category/catalog-category.component.js +10 -8
  48. package/esm2015/lib/_web-components/recipe-catalog/catalog-header/catalog-header.component.js +3 -3
  49. package/esm2015/lib/_web-components/recipe-catalog/catalog-toolbar/catalog-toolbar.component.js +14 -10
  50. package/esm2015/lib/_web-components/recipe-catalog/recipe-catalog.component.js +42 -37
  51. package/esm2015/lib/_web-components/recipe-details/last-order-modal/last-order-modal.component.js +2 -2
  52. package/esm2015/lib/_web-components/recipe-details/recipe-addon/recipe-addon.component.js +4 -3
  53. package/esm2015/lib/_web-components/recipe-details/recipe-details-infos/recipe-details-infos.component.js +16 -13
  54. package/esm2015/lib/_web-components/recipe-details/recipe-details-ingredients/recipe-details-ingredients.component.js +4 -3
  55. package/esm2015/lib/_web-components/recipe-details/recipe-details.component.js +98 -103
  56. package/esm2015/lib/_web-components/recipe-details/store-locator-link/store-locator-link.component.js +8 -7
  57. package/esm2015/lib/_web-components/recipe-modal/recipe-modal.component.js +7 -2
  58. package/esm2015/lib/environments/environment.js +2 -2
  59. package/esm2015/lib/environments/environment.prod.js +2 -2
  60. package/esm2015/lib/environments/version.js +2 -2
  61. package/esm2015/lib/ng-miam.module.js +4 -1
  62. package/fesm2015/ng-miam.js +882 -627
  63. package/fesm2015/ng-miam.js.map +1 -1
  64. package/lib/_components/components.module.d.ts +2 -1
  65. package/lib/_components/components.module.d.ts.map +1 -1
  66. package/lib/_components/product-card/out-of-stock-overlay/out-of-stock-overlay.component.d.ts +7 -3
  67. package/lib/_components/product-card/out-of-stock-overlay/out-of-stock-overlay.component.d.ts.map +1 -1
  68. package/lib/_components/product-card/product-card.component.d.ts +2 -0
  69. package/lib/_components/product-card/product-card.component.d.ts.map +1 -1
  70. package/lib/_models/basket-actions/basket-action.d.ts.map +1 -1
  71. package/lib/_services/basket-recipe-cleanup.service.d.ts +21 -0
  72. package/lib/_services/basket-recipe-cleanup.service.d.ts.map +1 -0
  73. package/lib/_services/basket-transfer.service.d.ts.map +1 -1
  74. package/lib/_services/baskets-synchronizing/baskets-synchronizer.service.d.ts +1 -1
  75. package/lib/_services/baskets-synchronizing/baskets-synchronizer.service.d.ts.map +1 -1
  76. package/lib/_services/context.service.d.ts +3 -1
  77. package/lib/_services/context.service.d.ts.map +1 -1
  78. package/lib/_services/interceptor.service.d.ts +1 -0
  79. package/lib/_services/interceptor.service.d.ts.map +1 -1
  80. package/lib/_services/recipe-details.service.d.ts +8 -2
  81. package/lib/_services/recipe-details.service.d.ts.map +1 -1
  82. package/lib/_services/recipes.service.d.ts +2 -6
  83. package/lib/_services/recipes.service.d.ts.map +1 -1
  84. package/lib/_services/store-locator.service.d.ts +1 -0
  85. package/lib/_services/store-locator.service.d.ts.map +1 -1
  86. package/lib/_services/store-out-of-stock.service.d.ts +13 -0
  87. package/lib/_services/store-out-of-stock.service.d.ts.map +1 -0
  88. package/lib/_services/user.service.d.ts +2 -2
  89. package/lib/_services/user.service.d.ts.map +1 -1
  90. package/lib/_types/builded/mealz-interface.d.ts +4 -0
  91. package/lib/_types/builded/mealz-interface.d.ts.map +1 -1
  92. package/lib/_web-components/basket-preview/replace-item/replace-item.component.d.ts +1 -0
  93. package/lib/_web-components/basket-preview/replace-item/replace-item.component.d.ts.map +1 -1
  94. package/lib/_web-components/recipe-cards/recipe-card/recipe-card.component.d.ts +1 -0
  95. package/lib/_web-components/recipe-cards/recipe-card/recipe-card.component.d.ts.map +1 -1
  96. package/lib/_web-components/recipe-cards/recipe-card-cta/recipe-card-cta.component.d.ts +1 -1
  97. package/lib/_web-components/recipe-cards/recipe-card-cta/recipe-card-cta.component.d.ts.map +1 -1
  98. package/lib/_web-components/recipe-details/recipe-details.component.d.ts +1 -1
  99. package/lib/_web-components/recipe-details/recipe-details.component.d.ts.map +1 -1
  100. package/lib/_web-components/recipe-modal/recipe-modal.component.d.ts.map +1 -1
  101. package/lib/environments/version.d.ts +1 -1
  102. package/lib/ng-miam.module.d.ts.map +1 -1
  103. package/miam-style.css +1 -1
  104. package/package.json +1 -1
@@ -14,40 +14,38 @@ import * as i5 from "../../../_components/recipe-promotion-badge/recipe-promotio
14
14
  import * as i6 from "../../recipe-pricing/recipe-pricing.component";
15
15
  import * as i7 from "../recipe-card-cta/recipe-card-cta.component";
16
16
  import * as i8 from "../../../_components/icon/icon.component";
17
- function RecipeCardComponent_div_1_div_7_ng_template_1_ng_miam_like_button_0_Template(rf, ctx) { if (rf & 1) {
18
- i0.ɵɵelement(0, "ng-miam-like-button", 32);
17
+ function RecipeCardComponent_div_1_div_7_ng_miam_like_button_1_Template(rf, ctx) { if (rf & 1) {
18
+ i0.ɵɵelement(0, "ng-miam-like-button", 31);
19
19
  } if (rf & 2) {
20
- const ctx_r15 = i0.ɵɵnextContext(4);
21
- i0.ɵɵproperty("recipe", ctx_r15.recipe)("originTrace", ctx_r15.eventTrace);
22
- } }
23
- function RecipeCardComponent_div_1_div_7_ng_template_1_Template(rf, ctx) { if (rf & 1) {
24
- i0.ɵɵtemplate(0, RecipeCardComponent_div_1_div_7_ng_template_1_ng_miam_like_button_0_Template, 1, 2, "ng-miam-like-button", 26);
25
- i0.ɵɵpipe(1, "async");
26
- } if (rf & 2) {
27
- const ctx_r14 = i0.ɵɵnextContext(3);
28
- i0.ɵɵproperty("ngIf", !ctx_r14.displayLikesBottom && i0.ɵɵpipeBind1(1, 1, ctx_r14.userService.isLogged$));
20
+ const ctx_r13 = i0.ɵɵnextContext(3);
21
+ i0.ɵɵproperty("recipe", ctx_r13.recipe)("originTrace", ctx_r13.eventTrace);
29
22
  } }
30
23
  function RecipeCardComponent_div_1_div_7_Template(rf, ctx) { if (rf & 1) {
31
24
  i0.ɵɵelementStart(0, "div", 30);
32
- i0.ɵɵtemplate(1, RecipeCardComponent_div_1_div_7_ng_template_1_Template, 2, 3, "ng-template", null, 31, i0.ɵɵtemplateRefExtractor);
25
+ i0.ɵɵtemplate(1, RecipeCardComponent_div_1_div_7_ng_miam_like_button_1_Template, 1, 2, "ng-miam-like-button", 26);
26
+ i0.ɵɵpipe(2, "async");
33
27
  i0.ɵɵelementEnd();
28
+ } if (rf & 2) {
29
+ const ctx_r2 = i0.ɵɵnextContext(2);
30
+ i0.ɵɵadvance(1);
31
+ i0.ɵɵproperty("ngIf", !ctx_r2.displayLikesBottom && i0.ɵɵpipeBind1(2, 1, ctx_r2.userService.isLogged$));
34
32
  } }
35
33
  function RecipeCardComponent_div_1_div_8_ng_miam_recipe_promotion_badge_1_Template(rf, ctx) { if (rf & 1) {
36
34
  i0.ɵɵelement(0, "ng-miam-recipe-promotion-badge");
37
35
  } }
38
36
  function RecipeCardComponent_div_1_div_8_div_2_Template(rf, ctx) { if (rf & 1) {
39
- i0.ɵɵelementStart(0, "div", 36);
40
- i0.ɵɵelement(1, "img", 37);
37
+ i0.ɵɵelementStart(0, "div", 35);
38
+ i0.ɵɵelement(1, "img", 36);
41
39
  i0.ɵɵelementEnd();
42
40
  } if (rf & 2) {
43
- const ctx_r17 = i0.ɵɵnextContext(3);
41
+ const ctx_r15 = i0.ɵɵnextContext(3);
44
42
  i0.ɵɵadvance(1);
45
- i0.ɵɵproperty("src", ctx_r17.recipe.sponsorLogoUrl, i0.ɵɵsanitizeUrl);
43
+ i0.ɵɵproperty("src", ctx_r15.recipe.sponsorLogoUrl, i0.ɵɵsanitizeUrl)("alt", "Logo du sponsor " + ctx_r15.recipe.sponsorName);
46
44
  } }
47
45
  function RecipeCardComponent_div_1_div_8_Template(rf, ctx) { if (rf & 1) {
48
- i0.ɵɵelementStart(0, "div", 33);
49
- i0.ɵɵtemplate(1, RecipeCardComponent_div_1_div_8_ng_miam_recipe_promotion_badge_1_Template, 1, 0, "ng-miam-recipe-promotion-badge", 34);
50
- i0.ɵɵtemplate(2, RecipeCardComponent_div_1_div_8_div_2_Template, 2, 1, "div", 35);
46
+ i0.ɵɵelementStart(0, "div", 32);
47
+ i0.ɵɵtemplate(1, RecipeCardComponent_div_1_div_8_ng_miam_recipe_promotion_badge_1_Template, 1, 0, "ng-miam-recipe-promotion-badge", 33);
48
+ i0.ɵɵtemplate(2, RecipeCardComponent_div_1_div_8_div_2_Template, 2, 2, "div", 34);
51
49
  i0.ɵɵelementEnd();
52
50
  } if (rf & 2) {
53
51
  const ctx_r3 = i0.ɵɵnextContext(2);
@@ -60,16 +58,16 @@ function RecipeCardComponent_div_1_div_9_ng_miam_recipe_promotion_badge_1_Templa
60
58
  i0.ɵɵelement(0, "ng-miam-recipe-promotion-badge");
61
59
  } }
62
60
  function RecipeCardComponent_div_1_div_9_img_2_Template(rf, ctx) { if (rf & 1) {
63
- i0.ɵɵelement(0, "img", 41);
61
+ i0.ɵɵelement(0, "img", 40);
64
62
  } }
65
63
  function RecipeCardComponent_div_1_div_9_img_3_Template(rf, ctx) { if (rf & 1) {
66
- i0.ɵɵelement(0, "img", 42);
64
+ i0.ɵɵelement(0, "img", 41);
67
65
  } }
68
66
  function RecipeCardComponent_div_1_div_9_Template(rf, ctx) { if (rf & 1) {
69
- i0.ɵɵelementStart(0, "div", 38);
70
- i0.ɵɵtemplate(1, RecipeCardComponent_div_1_div_9_ng_miam_recipe_promotion_badge_1_Template, 1, 0, "ng-miam-recipe-promotion-badge", 34);
71
- i0.ɵɵtemplate(2, RecipeCardComponent_div_1_div_9_img_2_Template, 1, 0, "img", 39);
72
- i0.ɵɵtemplate(3, RecipeCardComponent_div_1_div_9_img_3_Template, 1, 0, "img", 40);
67
+ i0.ɵɵelementStart(0, "div", 37);
68
+ i0.ɵɵtemplate(1, RecipeCardComponent_div_1_div_9_ng_miam_recipe_promotion_badge_1_Template, 1, 0, "ng-miam-recipe-promotion-badge", 33);
69
+ i0.ɵɵtemplate(2, RecipeCardComponent_div_1_div_9_img_2_Template, 1, 0, "img", 38);
70
+ i0.ɵɵtemplate(3, RecipeCardComponent_div_1_div_9_img_3_Template, 1, 0, "img", 39);
73
71
  i0.ɵɵelementEnd();
74
72
  } if (rf & 2) {
75
73
  const ctx_r4 = i0.ɵɵnextContext(2);
@@ -82,66 +80,69 @@ function RecipeCardComponent_div_1_div_9_Template(rf, ctx) { if (rf & 1) {
82
80
  i0.ɵɵproperty("ngIf", ctx_r4.isDrink);
83
81
  } }
84
82
  function RecipeCardComponent_div_1_div_19_div_5_Template(rf, ctx) { if (rf & 1) {
85
- i0.ɵɵelementStart(0, "div", 48);
83
+ i0.ɵɵelementStart(0, "div", 46);
86
84
  i0.ɵɵtext(1);
87
85
  i0.ɵɵelementEnd();
88
86
  } if (rf & 2) {
89
- const ctx_r21 = i0.ɵɵnextContext(3);
87
+ const ctx_r19 = i0.ɵɵnextContext(3);
90
88
  i0.ɵɵadvance(1);
91
- i0.ɵɵtextInterpolate1(" + ", ctx_r21.recipe.modifiedIngredients.length - 2, " ");
89
+ i0.ɵɵtextInterpolate1(" + ", ctx_r19.recipe.modifiedIngredients.length - 2, " ");
92
90
  } }
93
91
  function RecipeCardComponent_div_1_div_19_Template(rf, ctx) { if (rf & 1) {
94
- const _r23 = i0.ɵɵgetCurrentView();
95
- i0.ɵɵelementStart(0, "div", 43);
96
- i0.ɵɵelementStart(1, "div", 44);
97
- i0.ɵɵelementStart(2, "img", 45);
98
- i0.ɵɵlistener("error", function RecipeCardComponent_div_1_div_19_Template_img_error_2_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r22 = i0.ɵɵnextContext(2); return ($event.target["src"] = ctx_r22.contextService.defaultIngredientPicture); });
92
+ const _r21 = i0.ɵɵgetCurrentView();
93
+ i0.ɵɵelementStart(0, "div", 42);
94
+ i0.ɵɵelementStart(1, "div", 43);
95
+ i0.ɵɵelementStart(2, "img", 44);
96
+ i0.ɵɵlistener("error", function RecipeCardComponent_div_1_div_19_Template_img_error_2_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r20 = i0.ɵɵnextContext(2); return ($event.target["src"] = ctx_r20.contextService.defaultIngredientPicture); });
99
97
  i0.ɵɵelementEnd();
100
98
  i0.ɵɵelementEnd();
101
- i0.ɵɵelementStart(3, "div", 44);
102
- i0.ɵɵelementStart(4, "img", 46);
103
- i0.ɵɵlistener("error", function RecipeCardComponent_div_1_div_19_Template_img_error_4_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r24 = i0.ɵɵnextContext(2); return ($event.target["src"] = ctx_r24.contextService.defaultIngredientPicture); });
99
+ i0.ɵɵelementStart(3, "div", 43);
100
+ i0.ɵɵelementStart(4, "img", 44);
101
+ i0.ɵɵlistener("error", function RecipeCardComponent_div_1_div_19_Template_img_error_4_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r22 = i0.ɵɵnextContext(2); return ($event.target["src"] = ctx_r22.contextService.defaultIngredientPicture); });
104
102
  i0.ɵɵelementEnd();
105
103
  i0.ɵɵelementEnd();
106
- i0.ɵɵtemplate(5, RecipeCardComponent_div_1_div_19_div_5_Template, 2, 1, "div", 47);
104
+ i0.ɵɵtemplate(5, RecipeCardComponent_div_1_div_19_div_5_Template, 2, 1, "div", 45);
107
105
  i0.ɵɵelementEnd();
108
106
  } if (rf & 2) {
109
107
  const ctx_r5 = i0.ɵɵnextContext(2);
108
+ i0.ɵɵattribute("aria-label", ctx_r5.getIngredientsAriaLabel());
110
109
  i0.ɵɵadvance(2);
111
- i0.ɵɵproperty("src", ctx_r5.ingredientPicture(ctx_r5.recipe.modifiedIngredients[0]), i0.ɵɵsanitizeUrl);
110
+ i0.ɵɵproperty("src", ctx_r5.ingredientPicture(ctx_r5.recipe.modifiedIngredients[0]), i0.ɵɵsanitizeUrl)("alt", "");
112
111
  i0.ɵɵadvance(2);
113
- i0.ɵɵproperty("src", ctx_r5.ingredientPicture(ctx_r5.recipe.modifiedIngredients[1]), i0.ɵɵsanitizeUrl);
112
+ i0.ɵɵproperty("src", ctx_r5.ingredientPicture(ctx_r5.recipe.modifiedIngredients[1]), i0.ɵɵsanitizeUrl)("alt", "");
114
113
  i0.ɵɵadvance(1);
115
114
  i0.ɵɵproperty("ngIf", ctx_r5.recipe.modifiedIngredients.length > 2);
116
115
  } }
117
116
  function RecipeCardComponent_div_1_div_22_div_1_Template(rf, ctx) { if (rf & 1) {
118
- i0.ɵɵelementStart(0, "div", 52);
119
- i0.ɵɵelement(1, "img", 53);
120
- i0.ɵɵelementStart(2, "span", 54);
117
+ i0.ɵɵelementStart(0, "div", 50);
118
+ i0.ɵɵelement(1, "img", 51);
119
+ i0.ɵɵelementStart(2, "span", 52);
121
120
  i0.ɵɵtext(3);
122
121
  i0.ɵɵelementEnd();
123
122
  i0.ɵɵelementEnd();
124
123
  } if (rf & 2) {
125
- const ctx_r25 = i0.ɵɵnextContext(3);
124
+ const ctx_r23 = i0.ɵɵnextContext(3);
125
+ i0.ɵɵattribute("aria-label", "Difficult\u00E9: " + ctx_r23.recipeService.difficultyLevels[ctx_r23.recipe.difficulty - 1].label);
126
126
  i0.ɵɵadvance(3);
127
- i0.ɵɵtextInterpolate(ctx_r25.recipeService.difficultyLevels[ctx_r25.recipe.difficulty - 1].label);
127
+ i0.ɵɵtextInterpolate(ctx_r23.recipeService.difficultyLevels[ctx_r23.recipe.difficulty - 1].label);
128
128
  } }
129
129
  function RecipeCardComponent_div_1_div_22_div_2_Template(rf, ctx) { if (rf & 1) {
130
- i0.ɵɵelementStart(0, "div", 55);
131
- i0.ɵɵelement(1, "img", 56);
132
- i0.ɵɵelementStart(2, "span", 54);
130
+ i0.ɵɵelementStart(0, "div", 53);
131
+ i0.ɵɵelement(1, "img", 54);
132
+ i0.ɵɵelementStart(2, "span", 52);
133
133
  i0.ɵɵtext(3);
134
134
  i0.ɵɵelementEnd();
135
135
  i0.ɵɵelementEnd();
136
136
  } if (rf & 2) {
137
- const ctx_r26 = i0.ɵɵnextContext(3);
137
+ const ctx_r24 = i0.ɵɵnextContext(3);
138
+ i0.ɵɵattribute("aria-label", "Temps de pr\u00E9paration: " + ctx_r24.recipe.totalTime);
138
139
  i0.ɵɵadvance(3);
139
- i0.ɵɵtextInterpolate(ctx_r26.recipe.totalTime);
140
+ i0.ɵɵtextInterpolate(ctx_r24.recipe.totalTime);
140
141
  } }
141
142
  function RecipeCardComponent_div_1_div_22_Template(rf, ctx) { if (rf & 1) {
142
- i0.ɵɵelementStart(0, "div", 49);
143
- i0.ɵɵtemplate(1, RecipeCardComponent_div_1_div_22_div_1_Template, 4, 1, "div", 50);
144
- i0.ɵɵtemplate(2, RecipeCardComponent_div_1_div_22_div_2_Template, 4, 1, "div", 51);
143
+ i0.ɵɵelementStart(0, "div", 47);
144
+ i0.ɵɵtemplate(1, RecipeCardComponent_div_1_div_22_div_1_Template, 4, 2, "div", 48);
145
+ i0.ɵɵtemplate(2, RecipeCardComponent_div_1_div_22_div_2_Template, 4, 2, "div", 49);
145
146
  i0.ɵɵelementEnd();
146
147
  } if (rf & 2) {
147
148
  const ctx_r6 = i0.ɵɵnextContext(2);
@@ -151,13 +152,13 @@ function RecipeCardComponent_div_1_div_22_Template(rf, ctx) { if (rf & 1) {
151
152
  i0.ɵɵproperty("ngIf", ctx_r6.recipe.totalTime);
152
153
  } }
153
154
  function RecipeCardComponent_div_1_ng_miam_recipe_promotion_badge_24_Template(rf, ctx) { if (rf & 1) {
154
- i0.ɵɵelement(0, "ng-miam-recipe-promotion-badge", 57);
155
+ i0.ɵɵelement(0, "ng-miam-recipe-promotion-badge", 55);
155
156
  } }
156
157
  function RecipeCardComponent_div_1_div_25_Template(rf, ctx) { if (rf & 1) {
157
- const _r28 = i0.ɵɵgetCurrentView();
158
- i0.ɵɵelementStart(0, "div", 58);
159
- i0.ɵɵelementStart(1, "ng-miam-recipe-pricing", 59);
160
- i0.ɵɵlistener("priceSet", function RecipeCardComponent_div_1_div_25_Template_ng_miam_recipe_pricing_priceSet_1_listener($event) { i0.ɵɵrestoreView(_r28); const ctx_r27 = i0.ɵɵnextContext(2); return ctx_r27.updateIsInPromotion($event); });
158
+ const _r26 = i0.ɵɵgetCurrentView();
159
+ i0.ɵɵelementStart(0, "div", 56);
160
+ i0.ɵɵelementStart(1, "ng-miam-recipe-pricing", 57);
161
+ i0.ɵɵlistener("priceSet", function RecipeCardComponent_div_1_div_25_Template_ng_miam_recipe_pricing_priceSet_1_listener($event) { i0.ɵɵrestoreView(_r26); const ctx_r25 = i0.ɵɵnextContext(2); return ctx_r25.updateIsInPromotion($event); });
161
162
  i0.ɵɵelementEnd();
162
163
  i0.ɵɵelementEnd();
163
164
  } if (rf & 2) {
@@ -166,32 +167,32 @@ function RecipeCardComponent_div_1_div_25_Template(rf, ctx) { if (rf & 1) {
166
167
  i0.ɵɵproperty("recipeId", ctx_r8.recipe.id)("serves", ctx_r8.recipe.modifiedGuests || +ctx_r8.recipe.guests)("inViewport", ctx_r8.inViewport);
167
168
  } }
168
169
  function RecipeCardComponent_div_1_ng_miam_like_button_27_Template(rf, ctx) { if (rf & 1) {
169
- i0.ɵɵelement(0, "ng-miam-like-button", 32);
170
+ i0.ɵɵelement(0, "ng-miam-like-button", 31);
170
171
  } if (rf & 2) {
171
172
  const ctx_r9 = i0.ɵɵnextContext(2);
172
173
  i0.ɵɵproperty("recipe", ctx_r9.recipe)("originTrace", ctx_r9.eventTrace);
173
174
  } }
174
175
  function RecipeCardComponent_div_1_ng_miam_recipe_card_cta_29_Template(rf, ctx) { if (rf & 1) {
175
- const _r30 = i0.ɵɵgetCurrentView();
176
- i0.ɵɵelementStart(0, "ng-miam-recipe-card-cta", 60);
177
- i0.ɵɵlistener("displayed", function RecipeCardComponent_div_1_ng_miam_recipe_card_cta_29_Template_ng_miam_recipe_card_cta_displayed_0_listener() { i0.ɵɵrestoreView(_r30); const ctx_r29 = i0.ɵɵnextContext(2); return ctx_r29.displayed.emit(); })("clicked", function RecipeCardComponent_div_1_ng_miam_recipe_card_cta_29_Template_ng_miam_recipe_card_cta_clicked_0_listener($event) { i0.ɵɵrestoreView(_r30); const ctx_r31 = i0.ɵɵnextContext(2); return ctx_r31.primaryButtonClicked$.emit($event); });
176
+ const _r28 = i0.ɵɵgetCurrentView();
177
+ i0.ɵɵelementStart(0, "ng-miam-recipe-card-cta", 58);
178
+ i0.ɵɵlistener("displayed", function RecipeCardComponent_div_1_ng_miam_recipe_card_cta_29_Template_ng_miam_recipe_card_cta_displayed_0_listener() { i0.ɵɵrestoreView(_r28); const ctx_r27 = i0.ɵɵnextContext(2); return ctx_r27.displayed.emit(); })("clicked", function RecipeCardComponent_div_1_ng_miam_recipe_card_cta_29_Template_ng_miam_recipe_card_cta_clicked_0_listener($event) { i0.ɵɵrestoreView(_r28); const ctx_r29 = i0.ɵɵnextContext(2); return ctx_r29.primaryButtonClicked$.emit($event); });
178
179
  i0.ɵɵelementEnd();
179
180
  } if (rf & 2) {
180
181
  const ctx_r10 = i0.ɵɵnextContext(2);
181
182
  i0.ɵɵproperty("recipe", ctx_r10.recipe)("previewAllowed", ctx_r10.previewAllowed)("displayGuests", ctx_r10.displayGuests)("helpButtonAllowed", ctx_r10.helpButtonAllowed)("originTrace", ctx_r10.eventTrace);
182
183
  } }
183
184
  function RecipeCardComponent_div_1_div_30_Template(rf, ctx) { if (rf & 1) {
184
- const _r33 = i0.ɵɵgetCurrentView();
185
- i0.ɵɵelementStart(0, "div", 61);
186
- i0.ɵɵelementStart(1, "button", 62);
187
- i0.ɵɵlistener("click", function RecipeCardComponent_div_1_div_30_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r33); const ctx_r32 = i0.ɵɵnextContext(2); return ctx_r32.openCatalog.emit(); });
185
+ const _r31 = i0.ɵɵgetCurrentView();
186
+ i0.ɵɵelementStart(0, "div", 59);
187
+ i0.ɵɵelementStart(1, "button", 60);
188
+ i0.ɵɵlistener("click", function RecipeCardComponent_div_1_div_30_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r31); const ctx_r30 = i0.ɵɵnextContext(2); return ctx_r30.openCatalog.emit(); });
188
189
  i0.ɵɵelementStart(2, "span");
189
- i0.ɵɵi18n(3, 63);
190
+ i0.ɵɵi18n(3, 61);
190
191
  i0.ɵɵelementEnd();
191
192
  i0.ɵɵelementEnd();
192
- i0.ɵɵelementStart(4, "button", 64);
193
- i0.ɵɵlistener("click", function RecipeCardComponent_div_1_div_30_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r33); const ctx_r34 = i0.ɵɵnextContext(2); return ctx_r34.removeFromMealsPlanner.emit(); });
194
- i0.ɵɵelement(5, "ng-miam-icon", 65);
193
+ i0.ɵɵelementStart(4, "button", 62);
194
+ i0.ɵɵlistener("click", function RecipeCardComponent_div_1_div_30_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r31); const ctx_r32 = i0.ɵɵnextContext(2); return ctx_r32.removeFromMealsPlanner.emit(); });
195
+ i0.ɵɵelement(5, "ng-miam-icon", 63);
195
196
  i0.ɵɵelementEnd();
196
197
  i0.ɵɵelementEnd();
197
198
  } if (rf & 2) {
@@ -200,29 +201,29 @@ function RecipeCardComponent_div_1_div_30_Template(rf, ctx) { if (rf & 1) {
200
201
  i0.ɵɵproperty("iconName", ctx_r11.icon.Trash);
201
202
  } }
202
203
  function RecipeCardComponent_div_1_button_31_Template(rf, ctx) { if (rf & 1) {
203
- const _r36 = i0.ɵɵgetCurrentView();
204
- i0.ɵɵelementStart(0, "button", 62);
205
- i0.ɵɵlistener("click", function RecipeCardComponent_div_1_button_31_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r36); const ctx_r35 = i0.ɵɵnextContext(2); return ctx_r35.addToMealsPlanner.emit(ctx_r35.recipe); });
204
+ const _r34 = i0.ɵɵgetCurrentView();
205
+ i0.ɵɵelementStart(0, "button", 60);
206
+ i0.ɵɵlistener("click", function RecipeCardComponent_div_1_button_31_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r34); const ctx_r33 = i0.ɵɵnextContext(2); return ctx_r33.addToMealsPlanner.emit(ctx_r33.recipe); });
206
207
  i0.ɵɵelementStart(1, "span");
207
- i0.ɵɵi18n(2, 66);
208
+ i0.ɵɵi18n(2, 64);
208
209
  i0.ɵɵelementEnd();
209
210
  i0.ɵɵelementEnd();
210
211
  } }
211
212
  function RecipeCardComponent_div_1_Template(rf, ctx) { if (rf & 1) {
212
- const _r38 = i0.ɵɵgetCurrentView();
213
+ const _r36 = i0.ɵɵgetCurrentView();
213
214
  i0.ɵɵelementStart(0, "div", 2);
214
- i0.ɵɵlistener("inViewport", function RecipeCardComponent_div_1_Template_div_inViewport_0_listener() { i0.ɵɵrestoreView(_r38); const ctx_r37 = i0.ɵɵnextContext(); return ctx_r37.cardInViewport(); });
215
+ i0.ɵɵlistener("inViewport", function RecipeCardComponent_div_1_Template_div_inViewport_0_listener() { i0.ɵɵrestoreView(_r36); const ctx_r35 = i0.ɵɵnextContext(); return ctx_r35.cardInViewport(); });
215
216
  i0.ɵɵelementStart(1, "div", 3);
216
- i0.ɵɵlistener("click", function RecipeCardComponent_div_1_Template_div_click_1_listener() { i0.ɵɵrestoreView(_r38); const ctx_r39 = i0.ɵɵnextContext(); return ctx_r39.openRecipe(); });
217
+ i0.ɵɵlistener("click", function RecipeCardComponent_div_1_Template_div_click_1_listener() { i0.ɵɵrestoreView(_r36); const ctx_r37 = i0.ɵɵnextContext(); return ctx_r37.openRecipe(); });
217
218
  i0.ɵɵelementStart(2, "div", 4);
218
219
  i0.ɵɵelementStart(3, "img", 5);
219
- i0.ɵɵlistener("error", function RecipeCardComponent_div_1_Template_img_error_3_listener($event) { i0.ɵɵrestoreView(_r38); const ctx_r40 = i0.ɵɵnextContext(); return ($event.target["src"] = ctx_r40.contextService.defaultRecipePicture); });
220
+ i0.ɵɵlistener("error", function RecipeCardComponent_div_1_Template_img_error_3_listener($event) { i0.ɵɵrestoreView(_r36); const ctx_r38 = i0.ɵɵnextContext(); return ($event.target["src"] = ctx_r38.contextService.defaultRecipePicture); });
220
221
  i0.ɵɵelementEnd();
221
222
  i0.ɵɵelementEnd();
222
223
  i0.ɵɵelement(4, "div", 6);
223
224
  i0.ɵɵelementStart(5, "div", 7);
224
225
  i0.ɵɵelementStart(6, "div", 8);
225
- i0.ɵɵtemplate(7, RecipeCardComponent_div_1_div_7_Template, 3, 0, "div", 9);
226
+ i0.ɵɵtemplate(7, RecipeCardComponent_div_1_div_7_Template, 3, 3, "div", 9);
226
227
  i0.ɵɵtemplate(8, RecipeCardComponent_div_1_div_8_Template, 3, 2, "div", 10);
227
228
  i0.ɵɵtemplate(9, RecipeCardComponent_div_1_div_9_Template, 4, 4, "div", 11);
228
229
  i0.ɵɵelementEnd();
@@ -242,8 +243,8 @@ function RecipeCardComponent_div_1_Template(rf, ctx) { if (rf & 1) {
242
243
  i0.ɵɵelementEnd();
243
244
  i0.ɵɵelementEnd();
244
245
  i0.ɵɵelementStart(18, "div", 17);
245
- i0.ɵɵlistener("click", function RecipeCardComponent_div_1_Template_div_click_18_listener() { i0.ɵɵrestoreView(_r38); const ctx_r41 = i0.ɵɵnextContext(); return ctx_r41.openRecipe(); });
246
- i0.ɵɵtemplate(19, RecipeCardComponent_div_1_div_19_Template, 6, 3, "div", 18);
246
+ i0.ɵɵlistener("click", function RecipeCardComponent_div_1_Template_div_click_18_listener() { i0.ɵɵrestoreView(_r36); const ctx_r39 = i0.ɵɵnextContext(); return ctx_r39.openRecipe(); });
247
+ i0.ɵɵtemplate(19, RecipeCardComponent_div_1_div_19_Template, 6, 6, "div", 18);
247
248
  i0.ɵɵelementStart(20, "div", 19);
248
249
  i0.ɵɵelementStart(21, "div", 20);
249
250
  i0.ɵɵtemplate(22, RecipeCardComponent_div_1_div_22_Template, 3, 2, "div", 21);
@@ -266,7 +267,7 @@ function RecipeCardComponent_div_1_Template(rf, ctx) { if (rf & 1) {
266
267
  const ctx_r0 = i0.ɵɵnextContext();
267
268
  i0.ɵɵproperty("threshold", 0)("debounceTime", 0);
268
269
  i0.ɵɵadvance(3);
269
- i0.ɵɵproperty("src", ctx_r0.recipe == null ? null : ctx_r0.recipe.attributes["media-url"], i0.ɵɵsanitizeUrl)("alt", (ctx_r0.recipe == null ? null : ctx_r0.recipe.attributes.title) + " picture");
270
+ i0.ɵɵproperty("src", ctx_r0.recipe == null ? null : ctx_r0.recipe.attributes["media-url"], i0.ɵɵsanitizeUrl)("alt", "Photo de la recette " + (ctx_r0.recipe == null ? null : ctx_r0.recipe.attributes.title));
270
271
  i0.ɵɵadvance(4);
271
272
  i0.ɵɵproperty("ngIf", !(ctx_r0.displayBadge && ctx_r0.recipe.sponsorLogoUrl));
272
273
  i0.ɵɵadvance(1);
@@ -275,7 +276,9 @@ function RecipeCardComponent_div_1_Template(rf, ctx) { if (rf & 1) {
275
276
  i0.ɵɵproperty("ngIf", ctx_r0.displayBadge);
276
277
  i0.ɵɵadvance(4);
277
278
  i0.ɵɵtextInterpolate(ctx_r0.recipe.attributes["title"]);
278
- i0.ɵɵadvance(3);
279
+ i0.ɵɵadvance(1);
280
+ i0.ɵɵattribute("aria-label", "Pour " + (ctx_r0.recipe.modifiedGuests || ctx_r0.recipe.guests) + " personnes");
281
+ i0.ɵɵadvance(2);
279
282
  i0.ɵɵtextInterpolate(ctx_r0.recipe.modifiedGuests || ctx_r0.recipe.guests);
280
283
  i0.ɵɵadvance(3);
281
284
  i0.ɵɵproperty("ngIf", ctx_r0.contextService.displayIngredientPicturesOnRecipeCards && (ctx_r0.recipe == null ? null : ctx_r0.recipe.modifiedIngredients == null ? null : ctx_r0.recipe.modifiedIngredients.length) > 1);
@@ -286,7 +289,7 @@ function RecipeCardComponent_div_1_Template(rf, ctx) { if (rf & 1) {
286
289
  i0.ɵɵadvance(1);
287
290
  i0.ɵɵproperty("ngIf", ctx_r0.recipe && ctx_r0.displayPricing);
288
291
  i0.ɵɵadvance(2);
289
- i0.ɵɵproperty("ngIf", ctx_r0.displayLikesBottom && i0.ɵɵpipeBind1(28, 17, ctx_r0.userService.isLogged$));
292
+ i0.ɵɵproperty("ngIf", ctx_r0.displayLikesBottom && i0.ɵɵpipeBind1(28, 18, ctx_r0.userService.isLogged$));
290
293
  i0.ɵɵadvance(2);
291
294
  i0.ɵɵproperty("ngIf", ctx_r0.previewAllowed && !ctx_r0.addRecipeMode && !ctx_r0.replaceMode);
292
295
  i0.ɵɵadvance(1);
@@ -295,27 +298,30 @@ function RecipeCardComponent_div_1_Template(rf, ctx) { if (rf & 1) {
295
298
  i0.ɵɵproperty("ngIf", ctx_r0.addRecipeMode);
296
299
  } }
297
300
  function RecipeCardComponent_div_2_Template(rf, ctx) { if (rf & 1) {
298
- const _r43 = i0.ɵɵgetCurrentView();
301
+ const _r41 = i0.ɵɵgetCurrentView();
299
302
  i0.ɵɵelementStart(0, "div", 2);
300
- i0.ɵɵlistener("inViewport", function RecipeCardComponent_div_2_Template_div_inViewport_0_listener() { i0.ɵɵrestoreView(_r43); const ctx_r42 = i0.ɵɵnextContext(); return ctx_r42.cardInViewport(); });
301
- i0.ɵɵelementStart(1, "div", 67);
302
- i0.ɵɵelement(2, "img", 68);
303
- i0.ɵɵelementStart(3, "div", 69);
304
- i0.ɵɵelementStart(4, "div", 70);
303
+ i0.ɵɵlistener("inViewport", function RecipeCardComponent_div_2_Template_div_inViewport_0_listener() { i0.ɵɵrestoreView(_r41); const ctx_r40 = i0.ɵɵnextContext(); return ctx_r40.cardInViewport(); });
304
+ i0.ɵɵelementStart(1, "a", 65);
305
+ i0.ɵɵelement(2, "img", 66);
306
+ i0.ɵɵelementStart(3, "div", 67);
307
+ i0.ɵɵelementStart(4, "div", 68);
305
308
  i0.ɵɵelementStart(5, "span");
306
- i0.ɵɵi18n(6, 71);
309
+ i0.ɵɵi18n(6, 69);
307
310
  i0.ɵɵelementEnd();
308
311
  i0.ɵɵelementEnd();
309
- i0.ɵɵelementStart(7, "button", 72);
312
+ i0.ɵɵelementStart(7, "button", 70);
310
313
  i0.ɵɵelementStart(8, "span");
311
- i0.ɵɵi18n(9, 73);
314
+ i0.ɵɵi18n(9, 71);
312
315
  i0.ɵɵelementEnd();
313
316
  i0.ɵɵelementEnd();
314
317
  i0.ɵɵelementEnd();
315
318
  i0.ɵɵelementEnd();
316
319
  i0.ɵɵelementEnd();
317
320
  } if (rf & 2) {
321
+ const ctx_r1 = i0.ɵɵnextContext();
318
322
  i0.ɵɵproperty("threshold", 0)("debounceTime", 0);
323
+ i0.ɵɵadvance(1);
324
+ i0.ɵɵproperty("href", ctx_r1.contextService.catalogUrl, i0.ɵɵsanitizeUrl);
319
325
  } }
320
326
  const _c8 = function (a0, a1, a2, a3, a4) { return { "variant-1": a0, "variant-2": a1, "variant-3": a2, "in-basket": a3, "redirect-card": a4 }; };
321
327
  const recipeIncludes = ['recipe-provider', 'sponsors', 'tags'];
@@ -435,6 +441,21 @@ export class RecipeCardComponent extends EventTracerComponent {
435
441
  ingredientPicture(ingredient) {
436
442
  return ingredient.picture || this.contextService.defaultIngredientPicture;
437
443
  }
444
+ // Helper method for accessibility
445
+ getIngredientsAriaLabel() {
446
+ var _a;
447
+ if (!((_a = this.recipe) === null || _a === void 0 ? void 0 : _a.modifiedIngredients) || this.recipe.modifiedIngredients.length === 0) {
448
+ return '';
449
+ }
450
+ const firstTwo = this.recipe.modifiedIngredients.slice(0, 2).map(i => i.name).join(', ');
451
+ if (this.recipe.modifiedIngredients.length <= 2) {
452
+ return 'Ingrédients principaux: ' + firstTwo;
453
+ }
454
+ else {
455
+ const othersCount = this.recipe.modifiedIngredients.length - 2;
456
+ return 'Ingrédients principaux: ' + firstTwo + ' et ' + othersCount + ' autres';
457
+ }
458
+ }
438
459
  // //////////////////////////////////////// SHOW EVENT //////////////////////////////////////// //
439
460
  sendShowEvent() {
440
461
  this.analyticsService.sendEvent('recipe.show', this.path, {
@@ -551,11 +572,11 @@ RecipeCardComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeCardComponent,
551
572
  }
552
573
  else {
553
574
  i18n_6 = $localize `:␟f51693cf087a834d433fa3835d7b64905fdc57ee␟9008711340501624723:Découvrez nos recettes`;
554
- } return [["ngMiamInViewport", "", 1, "miam-recipe-card", 3, "condition", "ngClass", "inViewport"], ["class", "miam-recipe-card__container", "ngMiamInViewport", "", 3, "threshold", "debounceTime", "inViewport", 4, "ngIf"], ["ngMiamInViewport", "", 1, "miam-recipe-card__container", 3, "threshold", "debounceTime", "inViewport"], [1, "miam-recipe-card__top", 3, "click"], [1, "miam-recipe-card__picture"], ["loading", "lazy", "aria-hidden", "true", 3, "src", "alt", "error"], [1, "miam-recipe-card__gradient"], [1, "miam-recipe-card__content"], [1, "miam-recipe-card__top-container"], ["class", "miam-recipe-card__like", 4, "ngIf"], ["class", "miam-recipe-card_sponso_and_promo_badge", 4, "ngIf"], ["class", "miam-recipe-card__badge-container", 3, "ngClass", 4, "ngIf"], [1, "miam-recipe-card__picture__bottom"], [1, "miam-recipe-card__title", "miam-ds-text", "weight-xxl", "size-m"], [1, "miam-recipe-card__counter"], [1, "miam-ds-text", "weight-xxl", "size-m"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/recipe-counter.svg", "alt", "people"], [1, "miam-recipe-card__bottom", 3, "click"], ["class", "miam-recipe-card__ingredients__pictures", 4, "ngIf"], [1, "miam-recipe-card__actions"], [1, "miam-recipe-card__infos"], ["class", "miam-recipe-card__difficulty-and-time", 4, "ngIf"], [1, "miam-recipe-card__price-and-promotion"], ["class", "miam-recipe-card__bottom-promotion", 4, "ngIf"], ["class", "miam-recipe-card__price", 4, "ngIf"], [1, "miam-recipe-card__cta"], ["class", "miam-recipe-card__actions__icon", 3, "recipe", "originTrace", 4, "ngIf"], [3, "recipe", "previewAllowed", "displayGuests", "helpButtonAllowed", "originTrace", "displayed", "clicked", 4, "ngIf"], ["class", "miam-recipe-card__actions__replace", 4, "ngIf"], ["class", "miam-ds-button ghost", 3, "click", 4, "ngIf"], [1, "miam-recipe-card__like"], ["like", ""], [1, "miam-recipe-card__actions__icon", 3, "recipe", "originTrace"], [1, "miam-recipe-card_sponso_and_promo_badge"], [4, "ngIf"], ["class", "miam-recipe-card__sponsor-container", 4, "ngIf"], [1, "miam-recipe-card__sponsor-container"], ["alt", "sponsor picture", 1, "miam-recipe-card__sponsor-picture", 3, "src"], [1, "miam-recipe-card__badge-container", 3, "ngClass"], ["class", "miam-recipe-card__badge", "src", "https://storage.googleapis.com/assets.miam.tech/generic/images/recipe_card-badge.svg", "alt", "recipe badge", 4, "ngIf"], ["class", "miam-recipe-card__badge", "src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/9.0/recipe-card-badge-drinks.svg", "alt", "drink badge", 4, "ngIf"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/images/recipe_card-badge.svg", "alt", "recipe badge", 1, "miam-recipe-card__badge"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/9.0/recipe-card-badge-drinks.svg", "alt", "drink badge", 1, "miam-recipe-card__badge"], [1, "miam-recipe-card__ingredients__pictures"], [1, "miam-recipe-card__ingredients__picture"], ["alt", "first ingredient picture", 3, "src", "error"], ["alt", "second ingredient picture", 3, "src", "error"], ["class", "miam-recipe-card__ingredients__more", 4, "ngIf"], [1, "miam-recipe-card__ingredients__more"], [1, "miam-recipe-card__difficulty-and-time"], ["class", "miam-recipe-card__difficulty", 4, "ngIf"], ["class", "miam-recipe-card__time", 4, "ngIf"], [1, "miam-recipe-card__difficulty"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/ChefHat.svg", "alt", "difficulty"], [1, "miam-ds-text", "size-s", "weight-m"], [1, "miam-recipe-card__time"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/Clock.svg", "alt", "time"], [1, "miam-recipe-card__bottom-promotion"], [1, "miam-recipe-card__price"], [1, "miam-ds-text", "weight-xxl", 3, "recipeId", "serves", "inViewport", "priceSet"], [3, "recipe", "previewAllowed", "displayGuests", "helpButtonAllowed", "originTrace", "displayed", "clicked"], [1, "miam-recipe-card__actions__replace"], [1, "miam-ds-button", "ghost", 3, "click"], i18n_0, [1, "miam-ds-button", "ghost", "square", 3, "click"], ["primaryColor", "var(--m-color-primary)", 3, "iconName"], i18n_2, [1, "miam-recipe-card__redirect"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/images/Suggestion_Redirect_Background.png"], [1, "miam-recipe-card__redirect__footer"], [1, "miam-recipe-card__redirect__title", "miam-ds-text", "size-l", "weight-xxl"], i18n_4, [1, "miam-recipe-card__redirect__button", "miam-ds-button", "primary"], i18n_6]; }, template: function RecipeCardComponent_Template(rf, ctx) { if (rf & 1) {
575
+ } return [["ngMiamInViewport", "", 1, "miam-recipe-card", 3, "condition", "ngClass", "inViewport"], ["class", "miam-recipe-card__container", "ngMiamInViewport", "", 3, "threshold", "debounceTime", "inViewport", 4, "ngIf"], ["ngMiamInViewport", "", 1, "miam-recipe-card__container", 3, "threshold", "debounceTime", "inViewport"], [1, "miam-recipe-card__top", 3, "click"], [1, "miam-recipe-card__picture"], ["loading", "lazy", 3, "src", "alt", "error"], ["aria-hidden", "true", 1, "miam-recipe-card__gradient"], [1, "miam-recipe-card__content"], [1, "miam-recipe-card__top-container"], ["class", "miam-recipe-card__like", 4, "ngIf"], ["class", "miam-recipe-card_sponso_and_promo_badge", 4, "ngIf"], ["class", "miam-recipe-card__badge-container", 3, "ngClass", 4, "ngIf"], [1, "miam-recipe-card__picture__bottom"], [1, "miam-recipe-card__title", "miam-ds-text", "weight-xxl", "size-m"], [1, "miam-recipe-card__counter"], [1, "miam-ds-text", "weight-xxl", "size-m"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/recipe-counter.svg", "alt", "", "aria-hidden", "true"], [1, "miam-recipe-card__bottom", 3, "click"], ["class", "miam-recipe-card__ingredients__pictures", 4, "ngIf"], [1, "miam-recipe-card__actions"], [1, "miam-recipe-card__infos"], ["class", "miam-recipe-card__difficulty-and-time", 4, "ngIf"], [1, "miam-recipe-card__price-and-promotion"], ["class", "miam-recipe-card__bottom-promotion", 4, "ngIf"], ["class", "miam-recipe-card__price", 4, "ngIf"], [1, "miam-recipe-card__cta"], ["class", "miam-recipe-card__actions__icon", 3, "recipe", "originTrace", 4, "ngIf"], [3, "recipe", "previewAllowed", "displayGuests", "helpButtonAllowed", "originTrace", "displayed", "clicked", 4, "ngIf"], ["class", "miam-recipe-card__actions__replace", 4, "ngIf"], ["class", "miam-ds-button ghost", 3, "click", 4, "ngIf"], [1, "miam-recipe-card__like"], [1, "miam-recipe-card__actions__icon", 3, "recipe", "originTrace"], [1, "miam-recipe-card_sponso_and_promo_badge"], [4, "ngIf"], ["class", "miam-recipe-card__sponsor-container", 4, "ngIf"], [1, "miam-recipe-card__sponsor-container"], [1, "miam-recipe-card__sponsor-picture", 3, "src", "alt"], [1, "miam-recipe-card__badge-container", 3, "ngClass"], ["class", "miam-recipe-card__badge", "src", "https://storage.googleapis.com/assets.miam.tech/generic/images/recipe_card-badge.svg", "alt", "", "aria-hidden", "true", 4, "ngIf"], ["class", "miam-recipe-card__badge", "src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/9.0/recipe-card-badge-drinks.svg", "alt", "", "aria-hidden", "true", 4, "ngIf"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/images/recipe_card-badge.svg", "alt", "", "aria-hidden", "true", 1, "miam-recipe-card__badge"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/9.0/recipe-card-badge-drinks.svg", "alt", "", "aria-hidden", "true", 1, "miam-recipe-card__badge"], [1, "miam-recipe-card__ingredients__pictures"], [1, "miam-recipe-card__ingredients__picture"], ["aria-hidden", "true", 3, "src", "alt", "error"], ["class", "miam-recipe-card__ingredients__more", 4, "ngIf"], [1, "miam-recipe-card__ingredients__more"], [1, "miam-recipe-card__difficulty-and-time"], ["class", "miam-recipe-card__difficulty", 4, "ngIf"], ["class", "miam-recipe-card__time", 4, "ngIf"], [1, "miam-recipe-card__difficulty"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/ChefHat.svg", "alt", "", "aria-hidden", "true"], [1, "miam-ds-text", "size-s", "weight-m"], [1, "miam-recipe-card__time"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/Clock.svg", "alt", "", "aria-hidden", "true"], [1, "miam-recipe-card__bottom-promotion"], [1, "miam-recipe-card__price"], [1, "miam-ds-text", "weight-xxl", 3, "recipeId", "serves", "inViewport", "priceSet"], [3, "recipe", "previewAllowed", "displayGuests", "helpButtonAllowed", "originTrace", "displayed", "clicked"], [1, "miam-recipe-card__actions__replace"], [1, "miam-ds-button", "ghost", 3, "click"], i18n_0, ["aria-label", "Supprimer la recette", 1, "miam-ds-button", "ghost", "square", 3, "click"], ["primaryColor", "var(--m-color-primary)", 3, "iconName"], i18n_2, [1, "miam-recipe-card__redirect", 3, "href"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/images/Suggestion_Redirect_Background.png", "alt", "D\u00E9couvrez nos recettes"], [1, "miam-recipe-card__redirect__footer"], [1, "miam-recipe-card__redirect__title", "miam-ds-text", "size-l", "weight-xxl"], i18n_4, [1, "miam-recipe-card__redirect__button", "miam-ds-button", "primary"], i18n_6]; }, template: function RecipeCardComponent_Template(rf, ctx) { if (rf & 1) {
555
576
  i0.ɵɵelementStart(0, "div", 0);
556
577
  i0.ɵɵlistener("inViewport", function RecipeCardComponent_Template_div_inViewport_0_listener() { return ctx.sendShowEvent(); });
557
- i0.ɵɵtemplate(1, RecipeCardComponent_div_1_Template, 32, 19, "div", 1);
558
- i0.ɵɵtemplate(2, RecipeCardComponent_div_2_Template, 10, 2, "div", 1);
578
+ i0.ɵɵtemplate(1, RecipeCardComponent_div_1_Template, 32, 20, "div", 1);
579
+ i0.ɵɵtemplate(2, RecipeCardComponent_div_2_Template, 10, 3, "div", 1);
559
580
  i0.ɵɵelementEnd();
560
581
  } if (rf & 2) {
561
582
  i0.ɵɵproperty("condition", !!ctx.recipe)("ngClass", i0.ɵɵpureFunction5(4, _c8, ctx.displayVariant !== 2 && ctx.displayVariant !== 3, ctx.displayVariant === 2, ctx.displayVariant === 3, ctx.inBasket, ctx.isloaded && !ctx.recipe));
@@ -563,7 +584,7 @@ RecipeCardComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeCardComponent,
563
584
  i0.ɵɵproperty("ngIf", ctx.recipe);
564
585
  i0.ɵɵadvance(1);
565
586
  i0.ɵɵproperty("ngIf", ctx.isloaded && !ctx.recipe);
566
- } }, directives: [i2.InViewportDirective, i3.NgClass, i3.NgIf, i4.LikeButtonComponent, i5.RecipePromotionBadgeComponent, i6.RecipePricingComponent, i7.RecipeCardCtaComponent, i8.IconComponent], pipes: [i3.AsyncPipe], styles: [".miam-recipe-card{position:relative;display:flex;width:var(--m-catalog-card-width,308px);height:500px;flex-direction:column;align-items:flex-start;flex-shrink:0;border-radius:8px;overflow:hidden;cursor:pointer}.miam-recipe-card .miam-recipe-card__container{display:flex;flex-direction:column;height:100%;width:100%;flex-shrink:0;align-self:stretch}.miam-recipe-card .miam-recipe-card__container:hover .miam-recipe-card__top .miam-recipe-card__picture img{transform:scale(1.1)}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top{position:relative;flex:1;height:calc(100% - 72px)}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__picture{width:100%;height:100%;overflow:hidden}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__picture img{display:block;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;transition:transform .2s}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__gradient{position:absolute;width:100%;height:100%;top:0;left:0;background:linear-gradient(180deg,transparent 43.67%,rgba(0,0,0,.4) 91.33%)}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content{position:absolute;width:100%;height:100%;top:0;left:0;display:flex;flex-direction:column;justify-content:space-between;align-items:stretch}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__picture__bottom{width:100%;display:flex;justify-content:space-between;align-items:flex-end;padding:12px;box-sizing:border-box}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__picture__bottom .miam-recipe-card__title{color:var(--miam-ds-color-neutral-white,#fff);text-shadow:0 2px 8px rgba(0,0,0,.15);text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__picture__bottom .miam-recipe-card__counter{display:flex;padding:4px 8px;align-items:center;gap:4px;border-radius:100px;background:var(--miam-ds-color-neutral-white,#fff);color:var(--miam-color-neutral-black);height:-moz-fit-content;height:fit-content;flex-shrink:0}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__picture__bottom .miam-recipe-card__counter span{line-height:100%}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__picture__bottom .miam-recipe-card__counter img{width:16px;height:16px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__top-container{display:flex;flex-direction:row-reverse;justify-content:space-between;margin:12px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__top-container .miam-recipe-card__sponsor-container{display:flex;padding:8px 12px;background-color:#fff;border-radius:100px;width:auto;height:auto;box-sizing:border-box}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__top-container .miam-recipe-card__sponsor-container .miam-recipe-card__sponsor-picture{width:auto;height:auto;max-width:80px;max-height:40px;-o-object-fit:contain;object-fit:contain}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__top-container .miam-recipe-card__badge-container,.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__top-container .miam-recipe-card_sponso_and_promo_badge{display:flex;flex-direction:column;align-items:flex-start}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__top-container .miam-recipe-card__badge-container>:not(:last-child),.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__top-container .miam-recipe-card_sponso_and_promo_badge>:not(:last-child){margin-bottom:4px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__top-container .miam-recipe-card__like .miam-like-button{border-radius:48px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__top-container .miam-recipe-card__like .miam-like-button.miam-ds-button.primary.reverse.square.small .miam-like-button__icon{height:16px;width:16px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom{display:flex;width:100%;height:72px;flex-direction:column;align-items:flex-start;justify-content:center;box-sizing:border-box;padding:12px;border-radius:0 0 8px 8px;background-color:var(--miam-ds-color-neutral-white,#fff);border-right:1px solid var(--m-color-neutral-200,#d9dde1);border-bottom:1px solid var(--m-color-neutral-200,#d9dde1);border-left:1px solid var(--m-color-neutral-200,#d9dde1)}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions{display:flex;gap:8px;justify-content:space-between;align-items:center;align-self:stretch}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions .miam-recipe-card__infos{display:flex;flex-direction:column;align-items:flex-start}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions .miam-recipe-card__infos .miam-recipe-card__price-and-promotion .miam-recipe-card__bottom-promotion{display:none}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions .miam-recipe-card__cta{display:flex;flex-direction:row;gap:16px;align-items:center}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions .miam-recipe-card__difficulty-and-time{display:flex;flex-direction:row;color:var(--miam-ds-color-text-disabled);gap:12px;margin-bottom:4px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions .miam-recipe-card__difficulty-and-time .miam-recipe-card__difficulty,.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions .miam-recipe-card__difficulty-and-time .miam-recipe-card__time{display:flex}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions .miam-recipe-card__difficulty-and-time .miam-recipe-card__difficulty img,.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions .miam-recipe-card__difficulty-and-time .miam-recipe-card__time img{margin-right:4px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions .miam-recipe-card__price{color:var(--miam-ds-color-primary);line-height:100%;margin-right:4px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions .miam-recipe-card__price .miam-recipe-pricing{max-width:70px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions .miam-recipe-card__price .miam-recipe-pricing .miam-recipe-pricing__wrapper .miam-recipe-pricing__wrapper__subline{color:rgba(31,53,67,.5);font-weight:500;line-height:100%}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions .miam-recipe-card__actions__replace{display:flex;flex:1;justify-content:space-between;align-items:center}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__redirect{display:flex;flex-direction:column;justify-content:flex-end;flex:1;border-radius:8px;border:1px solid var(--m-color-neutral-200,#d9dde1);box-sizing:border-box}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__redirect img{height:100%;-o-object-fit:cover;object-fit:cover}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__redirect .miam-recipe-card__redirect__footer{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:16px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__redirect .miam-recipe-card__redirect__footer .miam-recipe-card__redirect__button{margin-top:16px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__redirect .miam-recipe-card__redirect__footer .miam-recipe-card__redirect__button span{font-size:14px;font-weight:700;line-height:16px}@media (max-width:1023px){.miam-recipe-card.redirect-card{width:80vw;height:188px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__redirect{flex-direction:row;height:100%}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__redirect img{content:url(https://storage.googleapis.com/assets.miam.tech/generic/images/Suggestion_Redirect_Background_Mobile.png);height:136%;margin:-22px -16px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__redirect .miam-recipe-card__redirect__footer{min-width:156px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__redirect .miam-recipe-card__redirect__footer .miam-recipe-card__redirect__title{font-size:16px}}"], encapsulation: 2, changeDetection: 0 });
587
+ } }, directives: [i2.InViewportDirective, i3.NgClass, i3.NgIf, i4.LikeButtonComponent, i5.RecipePromotionBadgeComponent, i6.RecipePricingComponent, i7.RecipeCardCtaComponent, i8.IconComponent], pipes: [i3.AsyncPipe], styles: [".miam-recipe-card{position:relative;display:flex;width:var(--m-catalog-card-width,308px);height:500px;flex-direction:column;align-items:flex-start;flex-shrink:0;border-radius:8px;overflow:hidden;cursor:pointer}.miam-recipe-card .miam-recipe-card__container{display:flex;flex-direction:column;height:100%;width:100%;flex-shrink:0;align-self:stretch}.miam-recipe-card .miam-recipe-card__container:hover .miam-recipe-card__top .miam-recipe-card__picture img{transform:scale(1.1)}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top{position:relative;flex:1;height:calc(100% - 72px)}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__picture{width:100%;height:100%;overflow:hidden}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__picture img{display:block;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;transition:transform .2s}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__gradient{position:absolute;width:100%;height:100%;top:0;left:0;background:linear-gradient(180deg,transparent 43.67%,rgba(0,0,0,.4) 91.33%)}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content{position:absolute;width:100%;height:100%;top:0;left:0;display:flex;flex-direction:column;justify-content:space-between;align-items:stretch}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__picture__bottom{width:100%;display:flex;justify-content:space-between;align-items:flex-end;padding:12px;box-sizing:border-box}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__picture__bottom .miam-recipe-card__title{color:var(--miam-ds-color-neutral-white,#fff);text-shadow:0 2px 8px rgba(0,0,0,.15);text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__picture__bottom .miam-recipe-card__counter{display:flex;padding:4px 8px;align-items:center;gap:4px;border-radius:100px;background:var(--miam-ds-color-neutral-white,#fff);color:var(--miam-color-neutral-black);height:-moz-fit-content;height:fit-content;flex-shrink:0}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__picture__bottom .miam-recipe-card__counter span{line-height:100%}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__picture__bottom .miam-recipe-card__counter img{width:16px;height:16px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__top-container{display:flex;flex-direction:row-reverse;justify-content:space-between;margin:12px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__top-container .miam-recipe-card__sponsor-container{display:flex;padding:8px 12px;background-color:#fff;border-radius:100px;width:auto;height:auto;box-sizing:border-box}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__top-container .miam-recipe-card__sponsor-container .miam-recipe-card__sponsor-picture{width:auto;height:auto;max-width:80px;max-height:40px;-o-object-fit:contain;object-fit:contain}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__top-container .miam-recipe-card__badge-container,.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__top-container .miam-recipe-card_sponso_and_promo_badge{display:flex;flex-direction:column;align-items:flex-start}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__top-container .miam-recipe-card__badge-container>:not(:last-child),.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__top-container .miam-recipe-card_sponso_and_promo_badge>:not(:last-child){margin-bottom:4px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__top-container .miam-recipe-card__like .miam-like-button{border-radius:48px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__top-container .miam-recipe-card__like .miam-like-button.miam-ds-button.primary.reverse.square.small .miam-like-button__icon{height:16px;width:16px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom{display:flex;width:100%;height:72px;flex-direction:column;align-items:flex-start;justify-content:center;box-sizing:border-box;padding:12px;border-radius:0 0 8px 8px;background-color:var(--miam-ds-color-neutral-white,#fff);border-right:1px solid var(--m-color-neutral-200,#d9dde1);border-bottom:1px solid var(--m-color-neutral-200,#d9dde1);border-left:1px solid var(--m-color-neutral-200,#d9dde1)}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions{display:flex;gap:8px;justify-content:space-between;align-items:center;align-self:stretch}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions .miam-recipe-card__infos{display:flex;flex-direction:column;align-items:flex-start}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions .miam-recipe-card__infos .miam-recipe-card__price-and-promotion .miam-recipe-card__bottom-promotion{display:none}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions .miam-recipe-card__cta{display:flex;flex-direction:row;gap:16px;align-items:center}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions .miam-recipe-card__difficulty-and-time{display:flex;flex-direction:row;color:var(--miam-ds-color-text-disabled);gap:12px;margin-bottom:4px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions .miam-recipe-card__difficulty-and-time .miam-recipe-card__difficulty,.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions .miam-recipe-card__difficulty-and-time .miam-recipe-card__time{display:flex}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions .miam-recipe-card__difficulty-and-time .miam-recipe-card__difficulty img,.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions .miam-recipe-card__difficulty-and-time .miam-recipe-card__time img{margin-right:4px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions .miam-recipe-card__price{color:var(--miam-ds-color-primary);line-height:100%;margin-right:4px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions .miam-recipe-card__price .miam-recipe-pricing{max-width:70px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions .miam-recipe-card__price .miam-recipe-pricing .miam-recipe-pricing__wrapper .miam-recipe-pricing__wrapper__subline{color:rgba(31,53,67,.5);font-weight:500;line-height:100%}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions .miam-recipe-card__actions__replace{display:flex;flex:1;justify-content:space-between;align-items:center}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__redirect{display:flex;flex-direction:column;justify-content:flex-end;flex:1;border-radius:8px;border:1px solid var(--m-color-neutral-200,#d9dde1);box-sizing:border-box;text-decoration:unset}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__redirect img{height:100%;-o-object-fit:cover;object-fit:cover}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__redirect .miam-recipe-card__redirect__footer{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:16px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__redirect .miam-recipe-card__redirect__footer .miam-recipe-card__redirect__button{margin-top:16px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__redirect .miam-recipe-card__redirect__footer .miam-recipe-card__redirect__button span{font-size:14px;font-weight:700;line-height:16px}@media (max-width:1023px){.miam-recipe-card.redirect-card{width:80vw;height:188px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__redirect{flex-direction:row;height:100%}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__redirect img{content:url(https://storage.googleapis.com/assets.miam.tech/generic/images/Suggestion_Redirect_Background_Mobile.png);height:136%;margin:-22px -16px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__redirect .miam-recipe-card__redirect__footer{min-width:156px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__redirect .miam-recipe-card__redirect__footer .miam-recipe-card__redirect__title{font-size:16px}}"], encapsulation: 2, changeDetection: 0 });
567
588
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(RecipeCardComponent, [{
568
589
  type: Component,
569
590
  args: [{
@@ -612,4 +633,4 @@ RecipeCardComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeCardComponent,
612
633
  }], hide: [{
613
634
  type: Output
614
635
  }] }); })();
615
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlLWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWlhbS9zcmMvbGliL193ZWItY29tcG9uZW50cy9yZWNpcGUtY2FyZHMvcmVjaXBlLWNhcmQvcmVjaXBlLWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWlhbS9zcmMvbGliL193ZWItY29tcG9uZW50cy9yZWNpcGUtY2FyZHMvcmVjaXBlLWNhcmQvcmVjaXBlLWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFFTixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFjLEVBQUUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDN0YsT0FBTyxFQUFFLE1BQU0sRUFBd0IsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkgsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7OztJQ1NuQywwQ0FLc0I7OztJQUZwQix1Q0FBaUIsbUNBQUE7OztJQUhuQiwrSEFLc0I7Ozs7SUFKbkIseUdBQTREOzs7SUFIbkUsK0JBQXFGO0lBQ25GLGtJQU9jO0lBQ2hCLGlCQUFNOzs7SUFHSixpREFBd0c7OztJ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QWM7a0JBQXRCLEtBQUs7WUFDRyxpQkFBaUI7a0JBQXpCLEtBQUs7WUFDRyxZQUFZO2tCQUFwQixLQUFLO1lBQ0csY0FBYztrQkFBdEIsS0FBSztZQUNHLGFBQWE7a0JBQXJCLEtBQUs7WUFDRyxhQUFhO2tCQUFyQixLQUFLO1lBQ0csV0FBVztrQkFBbkIsS0FBSztZQUNHLGNBQWM7a0JBQXRCLEtBQUs7WUFDRyxNQUFNO2tCQUFkLEtBQUs7WUFDSSxtQkFBbUI7a0JBQTVCLE1BQU07WUFDRyxTQUFTO2tCQUFsQixNQUFNO1lBQ0csc0JBQXNCO2tCQUEvQixNQUFNO1lBQ0csaUJBQWlCO2tCQUExQixNQUFNO1lBQ0csV0FBVztrQkFBcEIsTUFBTTtZQUNHLElBQUk7a0JBQWIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgc2tpcFdoaWxlLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRXZlbnRUcmFjZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9fY29tcG9uZW50cy9hYnN0cmFjdHMvZXZlbnQtdHJhY2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZWNpcGUsIFNpbXBsaWZpZWRJbmdyZWRpZW50IH0gZnJvbSAnLi4vLi4vLi4vX21vZGVscyc7XG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlLCBCYXNrZXRzU2VydmljZSwgQ29udGV4dFNlcnZpY2UsIFJlY2lwZXNTZXJ2aWNlLCBVc2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19zZXJ2aWNlcyc7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSAnLi4vLi4vLi4vX3R5cGVzL2ljb24uZW51bSc7XG5pbXBvcnQgeyBSZWNpcGVQcmljaW5nIH0gZnJvbSAnLi4vLi4vLi4vX21vZGVscy9yZWNpcGUtcHJpY2luZyc7XG5cbmNvbnN0IHJlY2lwZUluY2x1ZGVzID0gWydyZWNpcGUtcHJvdmlkZXInLCAnc3BvbnNvcnMnLCAndGFncyddO1xuY29uc3QgcmVjaXBlU3BhcnNlRmllbGRzID0ge1xuICByZWNpcGVzOiBbJ3RpdGxlJywgJ251bWJlci1vZi1ndWVzdHMnLCAnbWVkaWEtdXJsJywgJ3ZpZGVvLWlkJywgJ2ZpbGlncmFuZS1sb2dvLXVybCcsICdkaWZmaWN1bHR5JywgJ3ByZXBhcmF0aW9uLXRpbWUnLCAnY29va2luZy10aW1lJyxcbiAgICAncmVzdGluZy10aW1lJywgLi4ucmVjaXBlSW5jbHVkZXNdLFxuICBzcG9uc29yczogWydsb2dvLXVybCddLFxuICB0YWdzOiBbJ3RhZy10eXBlLWlkJ10sXG4gICdyZWNpcGUtcHJvdmlkZXInOiBbJ25hbWUnXVxufTtcblxuLyoqXG4gKiBUaGlzIGlzIGFuIGFuZ3VsYXIgY29tcG9uZW50IGRlc2lnbiB0byBiZSBhIHdlYiBjb21wb25lbnRcbiAqIHRoYXQncyB3aHkgd2UgdXNlIG9uUHVzaFN0cmF0ZWdpZSB3aXRoIHRoZSBjaGFuZ2VEZXRldGVjdG9yUmVmXG4gKiB0byBhdm9pZCBjb21tb24gaXNzdWVcbiAqIGd1aWRlIC0+IGh0dHBzOi8vbmV0YmFzYWwuY29tL2EtY29tcHJlaGVuc2l2ZS1ndWlkZS10by1hbmd1bGFyLW9ucHVzaC1jaGFuZ2UtZGV0ZWN0aW9uLXN0cmF0ZWd5LTViYWM0OTMwNzRhNFxuICogYW5kIGFsc293IHdlIHVzZSBTaGFkb3dEb20gdG8gcHJvdGVjdCBzdHlsZSBvZiBvdXIgY29tcG9uZW50XG4gKiBhbmQgYWxzb3cgc3R5bGUgb2YgdGhlIHBhcmVudCBhcGxpY2F0aW9uIHRoYXQgd2lsbCB1c2UgaXRcbiAqIGRvYyAtPiBodHRwczovL2FuZ3VsYXIuaW8vYXBpL2NvcmUvVmlld0VuY2Fwc3VsYXRpb25cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctbWlhbS1yZWNpcGUtY2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZWNpcGUtY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JlY2lwZS1jYXJkLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuXG5leHBvcnQgY2xhc3MgUmVjaXBlQ2FyZENvbXBvbmVudCBleHRlbmRzIEV2ZW50VHJhY2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHJlY2lwZUlkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHJlY2lwZTogUmVjaXBlO1xuICBASW5wdXQoKSByYW5kb21Nb2RlRW5hYmxlOiBib29sZWFuO1xuICBASW5wdXQoKSBwcm9kdWN0SWRzOiB7IGlkOiBzdHJpbmc7IGhhc0hpZ2hXZWlnaHQ/OiBib29sZWFuIH1bXTtcbiAgQElucHV0KCkgcHJldmlld0FsbG93ZWQgPSB0cnVlO1xuICBASW5wdXQoKSBoZWxwQnV0dG9uQWxsb3dlZCA9IHRydWU7XG4gIEBJbnB1dCgpIGRpc3BsYXlJbmZvcyA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNwbGF5UHJpY2luZyA9IHRydWU7XG4gIEBJbnB1dCgpIGRpc3BsYXlHdWVzdHMgPSB0cnVlO1xuICBASW5wdXQoKSBhZGRSZWNpcGVNb2RlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJlcGxhY2VNb2RlID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc3BsYXlWYXJpYW50ID0gMTtcbiAgQElucHV0KCkgc2VydmVzPzogbnVtYmVyOyAvLyBvdmVycmlkZSB0aGUgZGVmYXVsdCBudW1iZXIgb2Ygc2VydmluZ3Mgb2YgdGhlIHJlY2lwZVxuICBAT3V0cHV0KCkgcmVtb3ZlZEZyb21GYXZvcml0ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBkaXNwbGF5ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSByZW1vdmVGcm9tTWVhbHNQbGFubmVyID0gbmV3IEV2ZW50RW1pdHRlcjxudWxsPigpO1xuICBAT3V0cHV0KCkgYWRkVG9NZWFsc1BsYW5uZXIgPSBuZXcgRXZlbnRFbWl0dGVyPFJlY2lwZT4oKTtcbiAgQE91dHB1dCgpIG9wZW5DYXRhbG9nID0gbmV3IEV2ZW50RW1pdHRlcjxudWxsPigpO1xuICBAT3V0cHV0KCkgaGlkZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBpY29uID0gSWNvbjtcbiAgYWN0aW9uc09wZW5lZCA9IGZhbHNlO1xuICBpc2xvYWRlZCA9IGZhbHNlO1xuICBpbkJhc2tldCA9IGZhbHNlO1xuICBpblZpZXdwb3J0ID0gZmFsc2U7XG4gIGlzRHJpbmsgPSBmYWxzZTtcbiAgaXNJblByb21vdGlvbiA9IGZhbHNlO1xuXG4gIGRpc3BsYXlMaWtlc0JvdHRvbSA9IGZhbHNlO1xuICBkaXNwbGF5QmFkZ2UgPSBmYWxzZTtcblxuICBwcml2YXRlIGJhc2tldFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcm90ZWN0ZWQgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW107XG4gIHByaW1hcnlCdXR0b25DbGlja2VkJCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlLFxuICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHB1YmxpYyByZWNpcGVTZXJ2aWNlOiBSZWNpcGVzU2VydmljZSxcbiAgICBwdWJsaWMgYmFza2V0c1NlcnZpY2U6IEJhc2tldHNTZXJ2aWNlLFxuICAgIHB1YmxpYyB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHVibGljIGNvbnRleHRTZXJ2aWNlOiBDb250ZXh0U2VydmljZSxcbiAgICBwdWJsaWMgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgKSB7XG4gICAgc3VwZXIoYW5hbHl0aWNzU2VydmljZSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zID0gW107XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnJlY2lwZVNlcnZpY2UuZGlzcGxheWVkUmVjaXBlQ2hhbmdlZCQuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKSkpO1xuICB9XG5cbiAgY3VycmVudFBhdGgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhzaW1wbGVDaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVEaXNwbGF5VmFyaWFudCgpO1xuICAgIGlmICh0aGlzLnJlY2lwZSkge1xuICAgICAgdGhpcy5hZnRlclJlY2lwZUxvYWQodGhpcy5yZWNpcGUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5yZWNpcGVJZCkge1xuICAgICAgdGhpcy5sb2FkUmVjaXBlRnJvbUlkKCk7XG4gICAgfSBlbHNlIGlmIChzaW1wbGVDaGFuZ2VzLnByb2R1Y3RJZHMgJiYgIXRoaXMucmFuZG9tTW9kZUVuYWJsZSkge1xuICAgICAgdGhpcy5sb2FkUmVjaXBlRnJvbUNvbnRleHQoKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5iYXNrZXRzU2VydmljZS5iYXNrZXQkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCkpKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnJlY2lwZVNlcnZpY2UucmVsb2FkUmVjaXBlcyQuc3Vic2NyaWJlKHNob3VsZFJlbG9hZCA9PiB7XG4gICAgICBpZiAoc2hvdWxkUmVsb2FkKSB7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWIgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyBDSEVDSyBESVNQTEFZIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gLy9cblxuICB1cGRhdGVEaXNwbGF5VmFyaWFudCgpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHRoaXMuZGlzcGxheVZhcmlhbnQpIHtcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgdGhpcy5kaXNwbGF5QmFkZ2UgPSB0cnVlO1xuICAgICAgICB0aGlzLmRpc3BsYXlMaWtlc0JvdHRvbSA9IGZhbHNlO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAzOlxuICAgICAgICB0aGlzLmRpc3BsYXlCYWRnZSA9IHRydWU7XG4gICAgICAgIHRoaXMuZGlzcGxheUxpa2VzQm90dG9tID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuZGlzcGxheUJhZGdlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZGlzcGxheUxpa2VzQm90dG9tID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gRElTUExBWSBSRUNJUEUgREVUQUlMUyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vIC8vXG5cbiAgb3BlblJlY2lwZSgpOiB2b2lkIHtcbiAgICAvLyBjb25zdCB2aWRlb0V2ZW50ID0gdGhpcy5jb250ZXh0U2VydmljZS52aWRlb1JlY2lwZXNFbmFibGVkICYmIHRoaXMucmVjaXBlLnZpZGVvSWQ7XG4gICAgdGhpcy5yZWNpcGVTZXJ2aWNlLmRpc3BsYXlPYmplY3QoXG4gICAgICB0aGlzLnJlY2lwZSxcbiAgICAgIHtcbiAgICAgICAgcHJldmlld0FsbG93ZWQ6IHRoaXMucHJldmlld0FsbG93ZWQsXG4gICAgICAgIGd1ZXN0czogdGhpcy5yZWNpcGUubW9kaWZpZWRHdWVzdHMsXG4gICAgICAgIGRpc3BsYXlHdWVzdHM6IHRoaXMuZGlzcGxheUd1ZXN0cyxcbiAgICAgICAgaGVscEJ1dHRvbkFsbG93ZWQ6IHRoaXMuaGVscEJ1dHRvbkFsbG93ZWRcbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMuZGlzcGxheWVkLmVtaXQoKTtcbiAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2Uuc2VuZEV2ZW50KFxuICAgICAgJ3JlY2lwZS5kaXNwbGF5JyxcbiAgICAgIHRoaXMucGF0aCxcbiAgICAgIHtcbiAgICAgICAgcmVjaXBlX2lkOiB0aGlzLnJlY2lwZS5pZCxcbiAgICAgICAgY2F0ZWdvcnlfaWQ6IHRoaXMub3JpZ2luVHJhY2UucHJvcHMuY2F0ZWdvcnlfaWRcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyBESVNQTEFZIFJFQ0lQRSBERVRBSUxTIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gLy9cblxuICBpbmdyZWRpZW50UGljdHVyZShpbmdyZWRpZW50OiBTaW1wbGlmaWVkSW5ncmVkaWVudCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGluZ3JlZGllbnQucGljdHVyZSB8fCB0aGlzLmNvbnRleHRTZXJ2aWNlLmRlZmF1bHRJbmdyZWRpZW50UGljdHVyZTtcbiAgfVxuXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gU0hPVyBFVkVOVCAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vIC8vXG5cbiAgc2VuZFNob3dFdmVudCgpOiB2b2lkIHtcbiAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2Uuc2VuZEV2ZW50KFxuICAgICAgJ3JlY2lwZS5zaG93JyxcbiAgICAgIHRoaXMucGF0aCxcbiAgICAgIHtcbiAgICAgICAgcmVjaXBlX2lkOiB0aGlzLnJlY2lwZS5pZCxcbiAgICAgICAgY2F0ZWdvcnlfaWQ6IHRoaXMub3JpZ2luVHJhY2UucHJvcHMuY2F0ZWdvcnlfaWRcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgY2FyZEluVmlld3BvcnQoKTogdm9pZCB7XG4gICAgdGhpcy5pblZpZXdwb3J0ID0gdHJ1ZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICB1cGRhdGVJc0luUHJvbW90aW9uKGZldGNoZWRQcmljZTogUmVjaXBlUHJpY2luZykge1xuICAgIHRoaXMuaXNJblByb21vdGlvbiA9IGZldGNoZWRQcmljZVsnZGlzY291bnRlZC1pbmdyZWRpZW50cy1jb3VudCddID4gMDtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vIEZFVENIIFRIRSBSRUNJUEUgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyAvL1xuXG4gIC8qKlxuICAgKiBGZXRjaCBhIHJlY2lwZSBmcm9tIGl0cyBpZC5cbiAgICogSGlkZSB0aGUgY2FyZCBpZiBub25lIGlzIHJldHVybmVkIChjb3VsZCBiZSBiZWNhdXNlIGl0IGRvZXMgbm90IGV4aXN0cyBvciBpdCBpcyBub3Qgc2hhcmVkIHdpdGggdGhlIHN1cHBsaWVyKVxuICAgKi9cbiAgcHJpdmF0ZSBsb2FkUmVjaXBlRnJvbUlkKCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5yZWNpcGVTZXJ2aWNlLmdldCh0aGlzLnJlY2lwZUlkLCB7IGluY2x1ZGU6IHJlY2lwZUluY2x1ZGVzLCBmaWVsZHM6IHJlY2lwZVNwYXJzZUZpZWxkcyB9KS5waXBlKFxuICAgICAgICBza2lwV2hpbGUocmVzdWx0ID0+IHJlc3VsdC5pc19sb2FkaW5nKSxcbiAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICAgIHRoaXMuaGlkZS5lbWl0KCk7XG4gICAgICAgICAgcmV0dXJuIG9mKGVycik7XG4gICAgICAgIH0pXG4gICAgICApLnN1YnNjcmliZSgocmVzdWx0OiBSZWNpcGUpID0+IHtcbiAgICAgICAgdGhpcy5hZnRlclJlY2lwZUxvYWQocmVzdWx0KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBzdWdnZXN0aW9uIGJhc2VkIG9uIGNvbnRleHQgKGVpdGhlciBwcm9kdWN0SWRzIG9yIHJhbmRvbU1vZGUpLiBIaWRlIHRoZSBjYXJkIGlmIG5vbmUgaXMgcmV0dXJuZWRcbiAgICovXG4gIHByaXZhdGUgbG9hZFJlY2lwZUZyb21Db250ZXh0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5mZXRjaFN1Z2dlc3Rpb25PclJhbmRvbSgpLnBpcGUoXG4gICAgICAgIHNraXBXaGlsZShyZXN1bHRzID0+ICFyZXN1bHRzKSxcbiAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICAgIHRoaXMuaGlkZS5lbWl0KCk7XG4gICAgICAgICAgcmV0dXJuIG9mKGVycik7XG4gICAgICAgIH0pXG4gICAgICApLnN1YnNjcmliZSgocmVzdWx0czogUmVjaXBlW10pID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLmFmdGVyUmVjaXBlTG9hZChyZXN1bHRzWzBdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmlzbG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmhpZGUuZW1pdCgpO1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhZnRlclJlY2lwZUxvYWQocmVzdWx0OiBSZWNpcGUpOiB2b2lkIHtcbiAgICB0aGlzLnJlY2lwZSA9IHJlc3VsdDtcbiAgICB0aGlzLnVwZGF0ZUd1ZXN0c0lmTmVjZXNzYXJ5KCk7XG4gICAgdGhpcy5jaGVja1JlY2lwZUluQmFza2V0KCk7XG4gICAgdGhpcy5jaGVja0lzRHJpbmsoKTtcbiAgICB0aGlzLmlzbG9hZGVkID0gdHJ1ZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGZldGNoU3VnZ2VzdGlvbk9yUmFuZG9tKCk6IE9ic2VydmFibGU8UmVjaXBlW10+IHtcbiAgICBpZiAodGhpcy5yYW5kb21Nb2RlRW5hYmxlKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWNpcGVTZXJ2aWNlLmdldFJhbmRvbShyZWNpcGVJbmNsdWRlcywgcmVjaXBlU3BhcnNlRmllbGRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucmVjaXBlU2VydmljZS5nZXRTdWdnZXN0aW9uKHRoaXMucHJvZHVjdElkcywgcmVjaXBlSW5jbHVkZXMsIHJlY2lwZVNwYXJzZUZpZWxkcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBndWVzdHMgZnJvbSB0aGUgdmFsdWUgaW4gdGhlIGJhc2tldCBpZiB0aGUgcmVjaXBlIGlzIGluIHRoZSBiYXNrZXRcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlR3Vlc3RzSWZOZWNlc3NhcnkoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5iYXNrZXRzU2VydmljZS5yZWNpcGVJc0luQmFza2V0KHRoaXMucmVjaXBlLmlkKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZShpc0luTGlzdCA9PiB7XG4gICAgICBpZiAoaXNJbkxpc3QgJiYgIXRoaXMucmVjaXBlLm1vZGlmaWVkR3Vlc3RzKSB7XG4gICAgICAgIHRoaXMucmVjaXBlLm1vZGlmaWVkR3Vlc3RzID0gdGhpcy5zZXJ2ZXMgfHwgdGhpcy5iYXNrZXRzU2VydmljZS5ndWVzdHNGb3JSZWNpcGUodGhpcy5yZWNpcGUuaWQpIHx8ICt0aGlzLnJlY2lwZS5ndWVzdHM7XG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLnJlY2lwZS5tb2RpZmllZEd1ZXN0cykge1xuICAgICAgICB0aGlzLnJlY2lwZS5tb2RpZmllZEd1ZXN0cyA9IHRoaXMuc2VydmVzIHx8ICt0aGlzLnJlY2lwZS5ndWVzdHM7XG4gICAgICB9XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja1JlY2lwZUluQmFza2V0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5iYXNrZXRTdWJzY3JpcHRpb24gJiYgdGhpcy5yZWNpcGUpIHtcbiAgICAgIHRoaXMuYmFza2V0U3Vic2NyaXB0aW9uID0gdGhpcy5iYXNrZXRzU2VydmljZS5yZWNpcGVJc0luQmFza2V0KHRoaXMucmVjaXBlLmlkKS5zdWJzY3JpYmUoaW5CYXNrZXQgPT4ge1xuICAgICAgICB0aGlzLmluQmFza2V0ID0gaW5CYXNrZXQ7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5iYXNrZXRTdWJzY3JpcHRpb24pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tJc0RyaW5rKCk6IHZvaWQge1xuICAgIGNvbnN0IHRhZ3MgPSB0aGlzLnJlY2lwZT8ucmVsYXRpb25zaGlwcy50YWdzPy5kYXRhIHx8IFtdO1xuICAgIHRoaXMuaXNEcmluayA9IHRhZ3Muc29tZSh0YWcgPT4gWydtZWFsX3R5cGVfYm9pc3NvbicsICdtZWFsX3R5cGVfY29ja3RhaWwnXS5pbmNsdWRlcyh0YWcuaWQpKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRcIiBuZ01pYW1JblZpZXdwb3J0IFtjb25kaXRpb25dPVwiISFyZWNpcGVcIiAoaW5WaWV3cG9ydCk9XCJzZW5kU2hvd0V2ZW50KClcIlxuICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAndmFyaWFudC0xJzogKGRpc3BsYXlWYXJpYW50ICE9PSAyICYmIGRpc3BsYXlWYXJpYW50ICE9PSAzKSxcbiAgICAgICd2YXJpYW50LTInOiAoZGlzcGxheVZhcmlhbnQgPT09IDIpLFxuICAgICAgJ3ZhcmlhbnQtMyc6IChkaXNwbGF5VmFyaWFudCA9PT0gMyksXG4gICAgICAnaW4tYmFza2V0JzogaW5CYXNrZXQsXG4gICAgICAncmVkaXJlY3QtY2FyZCc6IGlzbG9hZGVkICYmICFyZWNpcGVcbiAgICAgIH1cIj5cbiAgPCEtLSBNQUlOIENPTlRBSU5FUiAtLT5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2NvbnRhaW5lclwiICpuZ0lmPVwicmVjaXBlXCJcbiAgICAgICBuZ01pYW1JblZpZXdwb3J0IFt0aHJlc2hvbGRdPVwiMFwiIFtkZWJvdW5jZVRpbWVdPVwiMFwiIChpblZpZXdwb3J0KT1cImNhcmRJblZpZXdwb3J0KClcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fdG9wXCIgKGNsaWNrKT1cIm9wZW5SZWNpcGUoKVwiPlxuICAgICAgPCEtLSBQSUNUVVJFIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX3BpY3R1cmVcIj5cbiAgICAgICAgPGltZ1xuICAgICAgICAgIFtzcmNdPVwicmVjaXBlPy5hdHRyaWJ1dGVzWydtZWRpYS11cmwnXVwiXG4gICAgICAgICAgKGVycm9yKT1cIiRldmVudC50YXJnZXRbJ3NyYyddID0gY29udGV4dFNlcnZpY2UuZGVmYXVsdFJlY2lwZVBpY3R1cmVcIlxuICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcbiAgICAgICAgICBbYWx0XT1cInJlY2lwZT8uYXR0cmlidXRlcy50aXRsZSArICcgcGljdHVyZSdcIlxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgID5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSBHUkFESUVOVCAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19ncmFkaWVudFwiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2NvbnRlbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX3RvcC1jb250YWluZXJcIj5cbiAgICAgICAgICA8IS0tIExJS0UgQlVUVE9OIC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19saWtlXCIgKm5nSWY9XCIhKGRpc3BsYXlCYWRnZSAmJiByZWNpcGUuc3BvbnNvckxvZ29VcmwpXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2xpa2U+XG4gICAgICAgICAgICAgIDxuZy1taWFtLWxpa2UtYnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhZGlzcGxheUxpa2VzQm90dG9tICYmICh1c2VyU2VydmljZS5pc0xvZ2dlZCQgfCBhc3luYylcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fYWN0aW9uc19faWNvblwiXG4gICAgICAgICAgICAgICAgW3JlY2lwZV09J3JlY2lwZSdcbiAgICAgICAgICAgICAgICBbb3JpZ2luVHJhY2VdPVwiZXZlbnRUcmFjZVwiPlxuICAgICAgICAgICAgICA8L25nLW1pYW0tbGlrZS1idXR0b24+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCIoIWRpc3BsYXlCYWRnZSAmJiBpc0luUHJvbW90aW9uKSB8fCByZWNpcGUuc3BvbnNvckxvZ29VcmxcIlxuICAgICAgICAgICAgICAgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX3Nwb25zb19hbmRfcHJvbW9fYmFkZ2VcIj5cbiAgICAgICAgICAgIDxuZy1taWFtLXJlY2lwZS1wcm9tb3Rpb24tYmFkZ2UgKm5nSWY9XCIhZGlzcGxheUJhZGdlICYmIGlzSW5Qcm9tb3Rpb25cIj48L25nLW1pYW0tcmVjaXBlLXByb21vdGlvbi1iYWRnZT5cbiAgICAgICAgICAgIDwhLS0gU1BPTlNPUiAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyZWNpcGUuc3BvbnNvckxvZ29VcmxcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX3Nwb25zb3ItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19zcG9uc29yLXBpY3R1cmVcIiBbc3JjXT1cInJlY2lwZS5zcG9uc29yTG9nb1VybFwiIGFsdD1cInNwb25zb3IgcGljdHVyZVwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPCEtLSBNRUFMIC8gRFJJTksgSURFQSBCQURHRSAtLT5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGlzcGxheUJhZGdlXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19iYWRnZS1jb250YWluZXJcIiBbbmdDbGFzc109XCJpc0RyaW5rID8gJ2RyaW5rJyA6ICdmb29kJ1wiPlxuICAgICAgICAgICAgPG5nLW1pYW0tcmVjaXBlLXByb21vdGlvbi1iYWRnZSAqbmdJZj1cImlzSW5Qcm9tb3Rpb25cIj48L25nLW1pYW0tcmVjaXBlLXByb21vdGlvbi1iYWRnZT5cbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCIhaXNEcmlua1wiIGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fYmFkZ2VcIlxuICAgICAgICAgICAgICAgICBzcmM9XCJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vYXNzZXRzLm1pYW0udGVjaC9nZW5lcmljL2ltYWdlcy9yZWNpcGVfY2FyZC1iYWRnZS5zdmdcIlxuICAgICAgICAgICAgICAgICBhbHQ9XCJyZWNpcGUgYmFkZ2VcIj5cbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJpc0RyaW5rXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19iYWRnZVwiXG4gICAgICAgICAgICAgICAgIHNyYz1cImh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9hc3NldHMubWlhbS50ZWNoL2dlbmVyaWMvaWNvbnMvOS4wL3JlY2lwZS1jYXJkLWJhZGdlLWRyaW5rcy5zdmdcIlxuICAgICAgICAgICAgICAgICBhbHQ9XCJkcmluayBiYWRnZVwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX3BpY3R1cmVfX2JvdHRvbVwiPlxuICAgICAgICAgIDwhLS0gVElUTEUgLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX3RpdGxlIG1pYW0tZHMtdGV4dCB3ZWlnaHQteHhsIHNpemUtbVwiPlxuICAgICAgICAgICAgPHNwYW4+e3sgcmVjaXBlLmF0dHJpYnV0ZXNbJ3RpdGxlJ10gfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPCEtLSBDT1VOVEVSIC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19jb3VudGVyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1pYW0tZHMtdGV4dCB3ZWlnaHQteHhsIHNpemUtbVwiPnt7IHJlY2lwZS5tb2RpZmllZEd1ZXN0cyB8fCByZWNpcGUuZ3Vlc3RzIH19PC9zcGFuPlxuICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vYXNzZXRzLm1pYW0udGVjaC9nZW5lcmljL2ljb25zL3JlY2lwZS1jb3VudGVyLnN2Z1wiIGFsdD1cInBlb3BsZVwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDwhLS0gQ0FSRCBGT09URVIgLS0+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2JvdHRvbVwiIChjbGljayk9XCJvcGVuUmVjaXBlKClcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJjb250ZXh0U2VydmljZS5kaXNwbGF5SW5ncmVkaWVudFBpY3R1cmVzT25SZWNpcGVDYXJkcyAmJiByZWNpcGU/Lm1vZGlmaWVkSW5ncmVkaWVudHM/Lmxlbmd0aCA+IDFcIlxuICAgICAgICBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2luZ3JlZGllbnRzX19waWN0dXJlc1wiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmdyZWRpZW50c19fcGljdHVyZVwiPlxuICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgIFtzcmNdPVwiaW5ncmVkaWVudFBpY3R1cmUocmVjaXBlLm1vZGlmaWVkSW5ncmVkaWVudHNbMF0pXCJcbiAgICAgICAgICAgIGFsdD1cImZpcnN0IGluZ3JlZGllbnQgcGljdHVyZVwiXG4gICAgICAgICAgICAoZXJyb3IpPVwiJGV2ZW50LnRhcmdldFsnc3JjJ10gPSBjb250ZXh0U2VydmljZS5kZWZhdWx0SW5ncmVkaWVudFBpY3R1cmVcIlxuICAgICAgICAgID5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmdyZWRpZW50c19fcGljdHVyZVwiPlxuICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgIFtzcmNdPVwiaW5ncmVkaWVudFBpY3R1cmUocmVjaXBlLm1vZGlmaWVkSW5ncmVkaWVudHNbMV0pXCJcbiAgICAgICAgICAgIGFsdD1cInNlY29uZCBpbmdyZWRpZW50IHBpY3R1cmVcIlxuICAgICAgICAgICAgKGVycm9yKT1cIiRldmVudC50YXJnZXRbJ3NyYyddID0gY29udGV4dFNlcnZpY2UuZGVmYXVsdEluZ3JlZGllbnRQaWN0dXJlXCJcbiAgICAgICAgICA+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9faW5ncmVkaWVudHNfX21vcmVcIiAqbmdJZj1cInJlY2lwZS5tb2RpZmllZEluZ3JlZGllbnRzLmxlbmd0aCA+IDJcIj5cbiAgICAgICAgICArIHt7IHJlY2lwZS5tb2RpZmllZEluZ3JlZGllbnRzLmxlbmd0aCAtIDIgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19hY3Rpb25zXCI+XG4gICAgICAgIDwhLS0gSU5GT1MgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmZvc1wiPlxuICAgICAgICAgIDwhLS0gVElNRSBBTkQgRElGRklDVUxUWSAtLT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cImRpc3BsYXlJbmZvcyAmJiAocmVjaXBlLmRpZmZpY3VsdHkgfHwgcmVjaXBlLnRvdGFsVGltZSlcIlxuICAgICAgICAgICAgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19kaWZmaWN1bHR5LWFuZC10aW1lXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicmVjaXBlLmRpZmZpY3VsdHlcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2RpZmZpY3VsdHlcIj5cbiAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vYXNzZXRzLm1pYW0udGVjaC9nZW5lcmljL2ljb25zL0NoZWZIYXQuc3ZnXCIgYWx0PVwiZGlmZmljdWx0eVwiPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWlhbS1kcy10ZXh0IHNpemUtcyB3ZWlnaHQtbVwiPnt7IHJlY2lwZVNlcnZpY2UuZGlmZmljdWx0eUxldmVsc1tyZWNpcGUuZGlmZmljdWx0eSAtIDFdLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicmVjaXBlLnRvdGFsVGltZVwiIGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fdGltZVwiPlxuICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9hc3NldHMubWlhbS50ZWNoL2dlbmVyaWMvaWNvbnMvQ2xvY2suc3ZnXCIgYWx0PVwidGltZVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1pYW0tZHMtdGV4dCBzaXplLXMgd2VpZ2h0LW1cIj57eyByZWNpcGUudG90YWxUaW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX3ByaWNlLWFuZC1wcm9tb3Rpb25cIj5cbiAgICAgICAgICAgIDxuZy1taWFtLXJlY2lwZS1wcm9tb3Rpb24tYmFkZ2UgKm5nSWY9XCJpc0luUHJvbW90aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19ib3R0b20tcHJvbW90aW9uXCI+PC9uZy1taWFtLXJlY2lwZS1wcm9tb3Rpb24tYmFkZ2U+XG4gICAgICAgICAgICA8IS0tIFBSSUNFIC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInJlY2lwZSAmJiBkaXNwbGF5UHJpY2luZ1wiIGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fcHJpY2VcIj5cbiAgICAgICAgICAgICAgPG5nLW1pYW0tcmVjaXBlLXByaWNpbmdcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1pYW0tZHMtdGV4dCB3ZWlnaHQteHhsXCJcbiAgICAgICAgICAgICAgICBbcmVjaXBlSWRdPVwicmVjaXBlLmlkXCJcbiAgICAgICAgICAgICAgICBbc2VydmVzXT1cInJlY2lwZS5tb2RpZmllZEd1ZXN0cyB8fCArcmVjaXBlLmd1ZXN0c1wiXG4gICAgICAgICAgICAgICAgW2luVmlld3BvcnRdPVwiaW5WaWV3cG9ydFwiXG4gICAgICAgICAgICAgICAgKHByaWNlU2V0KT1cInVwZGF0ZUlzSW5Qcm9tb3Rpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9uZy1taWFtLXJlY2lwZS1wcmljaW5nPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIENUQSAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2N0YVwiPlxuICAgICAgICAgIDxuZy1taWFtLWxpa2UtYnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImRpc3BsYXlMaWtlc0JvdHRvbSAmJiAodXNlclNlcnZpY2UuaXNMb2dnZWQkIHwgYXN5bmMpXCJcbiAgICAgICAgICAgIGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fYWN0aW9uc19faWNvblwiXG4gICAgICAgICAgICBbcmVjaXBlXT0ncmVjaXBlJ1xuICAgICAgICAgICAgW29yaWdpblRyYWNlXT1cImV2ZW50VHJhY2VcIj5cbiAgICAgICAgICA8L25nLW1pYW0tbGlrZS1idXR0b24+XG4gICAgICAgICAgPG5nLW1pYW0tcmVjaXBlLWNhcmQtY3RhXG4gICAgICAgICAgICAqbmdJZj1cInByZXZpZXdBbGxvd2VkICYmICFhZGRSZWNpcGVNb2RlICYmICFyZXBsYWNlTW9kZVwiXG4gICAgICAgICAgICBbcmVjaXBlXT1cInJlY2lwZVwiXG4gICAgICAgICAgICBbcHJldmlld0FsbG93ZWRdPVwicHJldmlld0FsbG93ZWRcIlxuICAgICAgICAgICAgW2Rpc3BsYXlHdWVzdHNdPVwiZGlzcGxheUd1ZXN0c1wiXG4gICAgICAgICAgICBbaGVscEJ1dHRvbkFsbG93ZWRdPVwiaGVscEJ1dHRvbkFsbG93ZWRcIlxuICAgICAgICAgICAgW29yaWdpblRyYWNlXT1cImV2ZW50VHJhY2VcIlxuICAgICAgICAgICAgKGRpc3BsYXllZCk9XCJkaXNwbGF5ZWQuZW1pdCgpXCJcbiAgICAgICAgICAgIChjbGlja2VkKT1cInByaW1hcnlCdXR0b25DbGlja2VkJC5lbWl0KCRldmVudClcIj5cbiAgICAgICAgICA8L25nLW1pYW0tcmVjaXBlLWNhcmQtY3RhPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSBPUFRJT05OQUwgQ1RBUyAtLT5cbiAgICAgICAgPGRpdiAqbmdJZj1cInJlcGxhY2VNb2RlXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19hY3Rpb25zX19yZXBsYWNlXCI+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1pYW0tZHMtYnV0dG9uIGdob3N0XCIgKGNsaWNrKT1cIm9wZW5DYXRhbG9nLmVtaXQoKVwiPlxuICAgICAgICAgICAgPHNwYW4gaTE4bj5DaGFuZ2VyPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtaWFtLWRzLWJ1dHRvbiBnaG9zdCBzcXVhcmVcIiAoY2xpY2spPVwicmVtb3ZlRnJvbU1lYWxzUGxhbm5lci5lbWl0KClcIj5cbiAgICAgICAgICAgIDxuZy1taWFtLWljb24gW2ljb25OYW1lXT1cImljb24uVHJhc2hcIiBwcmltYXJ5Q29sb3I9XCJ2YXIoLS1tLWNvbG9yLXByaW1hcnkpXCI+PC9uZy1taWFtLWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYWRkUmVjaXBlTW9kZVwiIGNsYXNzPVwibWlhbS1kcy1idXR0b24gZ2hvc3RcIiAoY2xpY2spPVwiYWRkVG9NZWFsc1BsYW5uZXIuZW1pdChyZWNpcGUpXCI+XG4gICAgICAgICAgPHNwYW4gaTE4bj5Bam91dGVyPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPCEtLSBHRU5FUklDIENBUkQgLS0+XG4gIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19jb250YWluZXJcIiAqbmdJZj1cImlzbG9hZGVkICYmICFyZWNpcGVcIlxuICAgICAgIG5nTWlhbUluVmlld3BvcnQgW3RocmVzaG9sZF09XCIwXCIgW2RlYm91bmNlVGltZV09XCIwXCIgKGluVmlld3BvcnQpPVwiY2FyZEluVmlld3BvcnQoKVwiPlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19yZWRpcmVjdFwiPlxuICAgICAgPGltZyBzcmM9XCJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vYXNzZXRzLm1pYW0udGVjaC9nZW5lcmljL2ltYWdlcy9TdWdnZXN0aW9uX1JlZGlyZWN0X0JhY2tncm91bmQucG5nXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fcmVkaXJlY3RfX2Zvb3RlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fcmVkaXJlY3RfX3RpdGxlIG1pYW0tZHMtdGV4dCBzaXplLWwgd2VpZ2h0LXh4bFwiPlxuICAgICAgICAgIDxzcGFuIGkxOG4+QmVzb2luIGQnaW5zcGlyYXRpb24gPzwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19yZWRpcmVjdF9fYnV0dG9uIG1pYW0tZHMtYnV0dG9uIHByaW1hcnlcIj5cbiAgICAgICAgICA8c3BhbiBpMThuPkTDqWNvdXZyZXogbm9zIHJlY2V0dGVzPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
636
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlLWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWlhbS9zcmMvbGliL193ZWItY29tcG9uZW50cy9yZWNpcGUtY2FyZHMvcmVjaXBlLWNhcmQvcmVjaXBlLWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWlhbS9zcmMvbGliL193ZWItY29tcG9uZW50cy9yZWNpcGUtY2FyZHMvcmVjaXBlLWNhcmQvcmVjaXBlLWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFFTixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFjLEVBQUUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDN0YsT0FBTyxFQUFFLE1BQU0sRUFBd0IsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkgsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7OztJQ09uQywwQ0FLc0I7OztJQUZwQix1Q0FBaUIsbUNBQUE7OztJQUp2QiwrQkFBcUY7SUFDakYsaUhBS3NCOztJQUMxQixpQkFBTTs7O0lBTEMsZUFBNEQ7SUFBNUQsdUdBQTREOzs7SUFRakUsaURBQXdHOzs7SUFF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QU07WUFDRyxTQUFTO2tCQUFsQixNQUFNO1lBQ0csc0JBQXNCO2tCQUEvQixNQUFNO1lBQ0csaUJBQWlCO2tCQUExQixNQUFNO1lBQ0csV0FBVztrQkFBcEIsTUFBTTtZQUNHLElBQUk7a0JBQWIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgc2tpcFdoaWxlLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRXZlbnRUcmFjZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9fY29tcG9uZW50cy9hYnN0cmFjdHMvZXZlbnQtdHJhY2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZWNpcGUsIFNpbXBsaWZpZWRJbmdyZWRpZW50IH0gZnJvbSAnLi4vLi4vLi4vX21vZGVscyc7XG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlLCBCYXNrZXRzU2VydmljZSwgQ29udGV4dFNlcnZpY2UsIFJlY2lwZXNTZXJ2aWNlLCBVc2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19zZXJ2aWNlcyc7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSAnLi4vLi4vLi4vX3R5cGVzL2ljb24uZW51bSc7XG5pbXBvcnQgeyBSZWNpcGVQcmljaW5nIH0gZnJvbSAnLi4vLi4vLi4vX21vZGVscy9yZWNpcGUtcHJpY2luZyc7XG5cbmNvbnN0IHJlY2lwZUluY2x1ZGVzID0gWydyZWNpcGUtcHJvdmlkZXInLCAnc3BvbnNvcnMnLCAndGFncyddO1xuY29uc3QgcmVjaXBlU3BhcnNlRmllbGRzID0ge1xuICByZWNpcGVzOiBbJ3RpdGxlJywgJ251bWJlci1vZi1ndWVzdHMnLCAnbWVkaWEtdXJsJywgJ3ZpZGVvLWlkJywgJ2ZpbGlncmFuZS1sb2dvLXVybCcsICdkaWZmaWN1bHR5JywgJ3ByZXBhcmF0aW9uLXRpbWUnLCAnY29va2luZy10aW1lJyxcbiAgICAncmVzdGluZy10aW1lJywgLi4ucmVjaXBlSW5jbHVkZXNdLFxuICBzcG9uc29yczogWydsb2dvLXVybCddLFxuICB0YWdzOiBbJ3RhZy10eXBlLWlkJ10sXG4gICdyZWNpcGUtcHJvdmlkZXInOiBbJ25hbWUnXVxufTtcblxuLyoqXG4gKiBUaGlzIGlzIGFuIGFuZ3VsYXIgY29tcG9uZW50IGRlc2lnbiB0byBiZSBhIHdlYiBjb21wb25lbnRcbiAqIHRoYXQncyB3aHkgd2UgdXNlIG9uUHVzaFN0cmF0ZWdpZSB3aXRoIHRoZSBjaGFuZ2VEZXRldGVjdG9yUmVmXG4gKiB0byBhdm9pZCBjb21tb24gaXNzdWVcbiAqIGd1aWRlIC0+IGh0dHBzOi8vbmV0YmFzYWwuY29tL2EtY29tcHJlaGVuc2l2ZS1ndWlkZS10by1hbmd1bGFyLW9ucHVzaC1jaGFuZ2UtZGV0ZWN0aW9uLXN0cmF0ZWd5LTViYWM0OTMwNzRhNFxuICogYW5kIGFsc293IHdlIHVzZSBTaGFkb3dEb20gdG8gcHJvdGVjdCBzdHlsZSBvZiBvdXIgY29tcG9uZW50XG4gKiBhbmQgYWxzb3cgc3R5bGUgb2YgdGhlIHBhcmVudCBhcGxpY2F0aW9uIHRoYXQgd2lsbCB1c2UgaXRcbiAqIGRvYyAtPiBodHRwczovL2FuZ3VsYXIuaW8vYXBpL2NvcmUvVmlld0VuY2Fwc3VsYXRpb25cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctbWlhbS1yZWNpcGUtY2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZWNpcGUtY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JlY2lwZS1jYXJkLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuXG5leHBvcnQgY2xhc3MgUmVjaXBlQ2FyZENvbXBvbmVudCBleHRlbmRzIEV2ZW50VHJhY2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHJlY2lwZUlkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHJlY2lwZTogUmVjaXBlO1xuICBASW5wdXQoKSByYW5kb21Nb2RlRW5hYmxlOiBib29sZWFuO1xuICBASW5wdXQoKSBwcm9kdWN0SWRzOiB7IGlkOiBzdHJpbmc7IGhhc0hpZ2hXZWlnaHQ/OiBib29sZWFuIH1bXTtcbiAgQElucHV0KCkgcHJldmlld0FsbG93ZWQgPSB0cnVlO1xuICBASW5wdXQoKSBoZWxwQnV0dG9uQWxsb3dlZCA9IHRydWU7XG4gIEBJbnB1dCgpIGRpc3BsYXlJbmZvcyA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNwbGF5UHJpY2luZyA9IHRydWU7XG4gIEBJbnB1dCgpIGRpc3BsYXlHdWVzdHMgPSB0cnVlO1xuICBASW5wdXQoKSBhZGRSZWNpcGVNb2RlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJlcGxhY2VNb2RlID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc3BsYXlWYXJpYW50ID0gMTtcbiAgQElucHV0KCkgc2VydmVzPzogbnVtYmVyOyAvLyBvdmVycmlkZSB0aGUgZGVmYXVsdCBudW1iZXIgb2Ygc2VydmluZ3Mgb2YgdGhlIHJlY2lwZVxuICBAT3V0cHV0KCkgcmVtb3ZlZEZyb21GYXZvcml0ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBkaXNwbGF5ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSByZW1vdmVGcm9tTWVhbHNQbGFubmVyID0gbmV3IEV2ZW50RW1pdHRlcjxudWxsPigpO1xuICBAT3V0cHV0KCkgYWRkVG9NZWFsc1BsYW5uZXIgPSBuZXcgRXZlbnRFbWl0dGVyPFJlY2lwZT4oKTtcbiAgQE91dHB1dCgpIG9wZW5DYXRhbG9nID0gbmV3IEV2ZW50RW1pdHRlcjxudWxsPigpO1xuICBAT3V0cHV0KCkgaGlkZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBpY29uID0gSWNvbjtcbiAgYWN0aW9uc09wZW5lZCA9IGZhbHNlO1xuICBpc2xvYWRlZCA9IGZhbHNlO1xuICBpbkJhc2tldCA9IGZhbHNlO1xuICBpblZpZXdwb3J0ID0gZmFsc2U7XG4gIGlzRHJpbmsgPSBmYWxzZTtcbiAgaXNJblByb21vdGlvbiA9IGZhbHNlO1xuXG4gIGRpc3BsYXlMaWtlc0JvdHRvbSA9IGZhbHNlO1xuICBkaXNwbGF5QmFkZ2UgPSBmYWxzZTtcblxuICBwcml2YXRlIGJhc2tldFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcm90ZWN0ZWQgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW107XG4gIHByaW1hcnlCdXR0b25DbGlja2VkJCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlLFxuICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHB1YmxpYyByZWNpcGVTZXJ2aWNlOiBSZWNpcGVzU2VydmljZSxcbiAgICBwdWJsaWMgYmFza2V0c1NlcnZpY2U6IEJhc2tldHNTZXJ2aWNlLFxuICAgIHB1YmxpYyB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHVibGljIGNvbnRleHRTZXJ2aWNlOiBDb250ZXh0U2VydmljZSxcbiAgICBwdWJsaWMgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgKSB7XG4gICAgc3VwZXIoYW5hbHl0aWNzU2VydmljZSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zID0gW107XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnJlY2lwZVNlcnZpY2UuZGlzcGxheWVkUmVjaXBlQ2hhbmdlZCQuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKSkpO1xuICB9XG5cbiAgY3VycmVudFBhdGgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhzaW1wbGVDaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVEaXNwbGF5VmFyaWFudCgpO1xuICAgIGlmICh0aGlzLnJlY2lwZSkge1xuICAgICAgdGhpcy5hZnRlclJlY2lwZUxvYWQodGhpcy5yZWNpcGUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5yZWNpcGVJZCkge1xuICAgICAgdGhpcy5sb2FkUmVjaXBlRnJvbUlkKCk7XG4gICAgfSBlbHNlIGlmIChzaW1wbGVDaGFuZ2VzLnByb2R1Y3RJZHMgJiYgIXRoaXMucmFuZG9tTW9kZUVuYWJsZSkge1xuICAgICAgdGhpcy5sb2FkUmVjaXBlRnJvbUNvbnRleHQoKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5iYXNrZXRzU2VydmljZS5iYXNrZXQkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCkpKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnJlY2lwZVNlcnZpY2UucmVsb2FkUmVjaXBlcyQuc3Vic2NyaWJlKHNob3VsZFJlbG9hZCA9PiB7XG4gICAgICBpZiAoc2hvdWxkUmVsb2FkKSB7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWIgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyBDSEVDSyBESVNQTEFZIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gLy9cblxuICB1cGRhdGVEaXNwbGF5VmFyaWFudCgpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHRoaXMuZGlzcGxheVZhcmlhbnQpIHtcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgdGhpcy5kaXNwbGF5QmFkZ2UgPSB0cnVlO1xuICAgICAgICB0aGlzLmRpc3BsYXlMaWtlc0JvdHRvbSA9IGZhbHNlO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAzOlxuICAgICAgICB0aGlzLmRpc3BsYXlCYWRnZSA9IHRydWU7XG4gICAgICAgIHRoaXMuZGlzcGxheUxpa2VzQm90dG9tID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuZGlzcGxheUJhZGdlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZGlzcGxheUxpa2VzQm90dG9tID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gRElTUExBWSBSRUNJUEUgREVUQUlMUyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vIC8vXG5cbiAgb3BlblJlY2lwZSgpOiB2b2lkIHtcbiAgICAvLyBjb25zdCB2aWRlb0V2ZW50ID0gdGhpcy5jb250ZXh0U2VydmljZS52aWRlb1JlY2lwZXNFbmFibGVkICYmIHRoaXMucmVjaXBlLnZpZGVvSWQ7XG4gICAgdGhpcy5yZWNpcGVTZXJ2aWNlLmRpc3BsYXlPYmplY3QoXG4gICAgICB0aGlzLnJlY2lwZSxcbiAgICAgIHtcbiAgICAgICAgcHJldmlld0FsbG93ZWQ6IHRoaXMucHJldmlld0FsbG93ZWQsXG4gICAgICAgIGd1ZXN0czogdGhpcy5yZWNpcGUubW9kaWZpZWRHdWVzdHMsXG4gICAgICAgIGRpc3BsYXlHdWVzdHM6IHRoaXMuZGlzcGxheUd1ZXN0cyxcbiAgICAgICAgaGVscEJ1dHRvbkFsbG93ZWQ6IHRoaXMuaGVscEJ1dHRvbkFsbG93ZWRcbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMuZGlzcGxheWVkLmVtaXQoKTtcbiAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2Uuc2VuZEV2ZW50KFxuICAgICAgJ3JlY2lwZS5kaXNwbGF5JyxcbiAgICAgIHRoaXMucGF0aCxcbiAgICAgIHtcbiAgICAgICAgcmVjaXBlX2lkOiB0aGlzLnJlY2lwZS5pZCxcbiAgICAgICAgY2F0ZWdvcnlfaWQ6IHRoaXMub3JpZ2luVHJhY2UucHJvcHMuY2F0ZWdvcnlfaWRcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyBESVNQTEFZIFJFQ0lQRSBERVRBSUxTIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gLy9cblxuICBpbmdyZWRpZW50UGljdHVyZShpbmdyZWRpZW50OiBTaW1wbGlmaWVkSW5ncmVkaWVudCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGluZ3JlZGllbnQucGljdHVyZSB8fCB0aGlzLmNvbnRleHRTZXJ2aWNlLmRlZmF1bHRJbmdyZWRpZW50UGljdHVyZTtcbiAgfVxuXG4gIC8vIEhlbHBlciBtZXRob2QgZm9yIGFjY2Vzc2liaWxpdHlcbiAgZ2V0SW5ncmVkaWVudHNBcmlhTGFiZWwoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMucmVjaXBlPy5tb2RpZmllZEluZ3JlZGllbnRzIHx8IHRoaXMucmVjaXBlLm1vZGlmaWVkSW5ncmVkaWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IGZpcnN0VHdvID0gdGhpcy5yZWNpcGUubW9kaWZpZWRJbmdyZWRpZW50cy5zbGljZSgwLCAyKS5tYXAoaSA9PiBpLm5hbWUpLmpvaW4oJywgJyk7XG5cbiAgICBpZiAodGhpcy5yZWNpcGUubW9kaWZpZWRJbmdyZWRpZW50cy5sZW5ndGggPD0gMikge1xuICAgICAgcmV0dXJuICdJbmdyw6lkaWVudHMgcHJpbmNpcGF1eDogJyArIGZpcnN0VHdvO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBvdGhlcnNDb3VudCA9IHRoaXMucmVjaXBlLm1vZGlmaWVkSW5ncmVkaWVudHMubGVuZ3RoIC0gMjtcbiAgICAgIHJldHVybiAnSW5ncsOpZGllbnRzIHByaW5jaXBhdXg6ICcgKyBmaXJzdFR3byArICcgZXQgJyArIG90aGVyc0NvdW50ICsgJyBhdXRyZXMnO1xuICAgIH1cbiAgfVxuXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gU0hPVyBFVkVOVCAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vIC8vXG5cbiAgc2VuZFNob3dFdmVudCgpOiB2b2lkIHtcbiAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2Uuc2VuZEV2ZW50KFxuICAgICAgJ3JlY2lwZS5zaG93JyxcbiAgICAgIHRoaXMucGF0aCxcbiAgICAgIHtcbiAgICAgICAgcmVjaXBlX2lkOiB0aGlzLnJlY2lwZS5pZCxcbiAgICAgICAgY2F0ZWdvcnlfaWQ6IHRoaXMub3JpZ2luVHJhY2UucHJvcHMuY2F0ZWdvcnlfaWRcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgY2FyZEluVmlld3BvcnQoKTogdm9pZCB7XG4gICAgdGhpcy5pblZpZXdwb3J0ID0gdHJ1ZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICB1cGRhdGVJc0luUHJvbW90aW9uKGZldGNoZWRQcmljZTogUmVjaXBlUHJpY2luZykge1xuICAgIHRoaXMuaXNJblByb21vdGlvbiA9IGZldGNoZWRQcmljZVsnZGlzY291bnRlZC1pbmdyZWRpZW50cy1jb3VudCddID4gMDtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vIEZFVENIIFRIRSBSRUNJUEUgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyAvL1xuXG4gIC8qKlxuICAgKiBGZXRjaCBhIHJlY2lwZSBmcm9tIGl0cyBpZC5cbiAgICogSGlkZSB0aGUgY2FyZCBpZiBub25lIGlzIHJldHVybmVkIChjb3VsZCBiZSBiZWNhdXNlIGl0IGRvZXMgbm90IGV4aXN0cyBvciBpdCBpcyBub3Qgc2hhcmVkIHdpdGggdGhlIHN1cHBsaWVyKVxuICAgKi9cbiAgcHJpdmF0ZSBsb2FkUmVjaXBlRnJvbUlkKCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5yZWNpcGVTZXJ2aWNlLmdldCh0aGlzLnJlY2lwZUlkLCB7IGluY2x1ZGU6IHJlY2lwZUluY2x1ZGVzLCBmaWVsZHM6IHJlY2lwZVNwYXJzZUZpZWxkcyB9KS5waXBlKFxuICAgICAgICBza2lwV2hpbGUocmVzdWx0ID0+IHJlc3VsdC5pc19sb2FkaW5nKSxcbiAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICAgIHRoaXMuaGlkZS5lbWl0KCk7XG4gICAgICAgICAgcmV0dXJuIG9mKGVycik7XG4gICAgICAgIH0pXG4gICAgICApLnN1YnNjcmliZSgocmVzdWx0OiBSZWNpcGUpID0+IHtcbiAgICAgICAgdGhpcy5hZnRlclJlY2lwZUxvYWQocmVzdWx0KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBzdWdnZXN0aW9uIGJhc2VkIG9uIGNvbnRleHQgKGVpdGhlciBwcm9kdWN0SWRzIG9yIHJhbmRvbU1vZGUpLiBIaWRlIHRoZSBjYXJkIGlmIG5vbmUgaXMgcmV0dXJuZWRcbiAgICovXG4gIHByaXZhdGUgbG9hZFJlY2lwZUZyb21Db250ZXh0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5mZXRjaFN1Z2dlc3Rpb25PclJhbmRvbSgpLnBpcGUoXG4gICAgICAgIHNraXBXaGlsZShyZXN1bHRzID0+ICFyZXN1bHRzKSxcbiAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICAgIHRoaXMuaGlkZS5lbWl0KCk7XG4gICAgICAgICAgcmV0dXJuIG9mKGVycik7XG4gICAgICAgIH0pXG4gICAgICApLnN1YnNjcmliZSgocmVzdWx0czogUmVjaXBlW10pID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLmFmdGVyUmVjaXBlTG9hZChyZXN1bHRzWzBdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmlzbG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmhpZGUuZW1pdCgpO1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhZnRlclJlY2lwZUxvYWQocmVzdWx0OiBSZWNpcGUpOiB2b2lkIHtcbiAgICB0aGlzLnJlY2lwZSA9IHJlc3VsdDtcbiAgICB0aGlzLnVwZGF0ZUd1ZXN0c0lmTmVjZXNzYXJ5KCk7XG4gICAgdGhpcy5jaGVja1JlY2lwZUluQmFza2V0KCk7XG4gICAgdGhpcy5jaGVja0lzRHJpbmsoKTtcbiAgICB0aGlzLmlzbG9hZGVkID0gdHJ1ZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGZldGNoU3VnZ2VzdGlvbk9yUmFuZG9tKCk6IE9ic2VydmFibGU8UmVjaXBlW10+IHtcbiAgICBpZiAodGhpcy5yYW5kb21Nb2RlRW5hYmxlKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWNpcGVTZXJ2aWNlLmdldFJhbmRvbShyZWNpcGVJbmNsdWRlcywgcmVjaXBlU3BhcnNlRmllbGRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucmVjaXBlU2VydmljZS5nZXRTdWdnZXN0aW9uKHRoaXMucHJvZHVjdElkcywgcmVjaXBlSW5jbHVkZXMsIHJlY2lwZVNwYXJzZUZpZWxkcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBndWVzdHMgZnJvbSB0aGUgdmFsdWUgaW4gdGhlIGJhc2tldCBpZiB0aGUgcmVjaXBlIGlzIGluIHRoZSBiYXNrZXRcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlR3Vlc3RzSWZOZWNlc3NhcnkoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5iYXNrZXRzU2VydmljZS5yZWNpcGVJc0luQmFza2V0KHRoaXMucmVjaXBlLmlkKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZShpc0luTGlzdCA9PiB7XG4gICAgICBpZiAoaXNJbkxpc3QgJiYgIXRoaXMucmVjaXBlLm1vZGlmaWVkR3Vlc3RzKSB7XG4gICAgICAgIHRoaXMucmVjaXBlLm1vZGlmaWVkR3Vlc3RzID0gdGhpcy5zZXJ2ZXMgfHwgdGhpcy5iYXNrZXRzU2VydmljZS5ndWVzdHNGb3JSZWNpcGUodGhpcy5yZWNpcGUuaWQpIHx8ICt0aGlzLnJlY2lwZS5ndWVzdHM7XG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLnJlY2lwZS5tb2RpZmllZEd1ZXN0cykge1xuICAgICAgICB0aGlzLnJlY2lwZS5tb2RpZmllZEd1ZXN0cyA9IHRoaXMuc2VydmVzIHx8ICt0aGlzLnJlY2lwZS5ndWVzdHM7XG4gICAgICB9XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja1JlY2lwZUluQmFza2V0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5iYXNrZXRTdWJzY3JpcHRpb24gJiYgdGhpcy5yZWNpcGUpIHtcbiAgICAgIHRoaXMuYmFza2V0U3Vic2NyaXB0aW9uID0gdGhpcy5iYXNrZXRzU2VydmljZS5yZWNpcGVJc0luQmFza2V0KHRoaXMucmVjaXBlLmlkKS5zdWJzY3JpYmUoaW5CYXNrZXQgPT4ge1xuICAgICAgICB0aGlzLmluQmFza2V0ID0gaW5CYXNrZXQ7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5iYXNrZXRTdWJzY3JpcHRpb24pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tJc0RyaW5rKCk6IHZvaWQge1xuICAgIGNvbnN0IHRhZ3MgPSB0aGlzLnJlY2lwZT8ucmVsYXRpb25zaGlwcy50YWdzPy5kYXRhIHx8IFtdO1xuICAgIHRoaXMuaXNEcmluayA9IHRhZ3Muc29tZSh0YWcgPT4gWydtZWFsX3R5cGVfYm9pc3NvbicsICdtZWFsX3R5cGVfY29ja3RhaWwnXS5pbmNsdWRlcyh0YWcuaWQpKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRcIiBuZ01pYW1JblZpZXdwb3J0IFtjb25kaXRpb25dPVwiISFyZWNpcGVcIiAoaW5WaWV3cG9ydCk9XCJzZW5kU2hvd0V2ZW50KClcIlxuICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAndmFyaWFudC0xJzogKGRpc3BsYXlWYXJpYW50ICE9PSAyICYmIGRpc3BsYXlWYXJpYW50ICE9PSAzKSxcbiAgICAgICd2YXJpYW50LTInOiAoZGlzcGxheVZhcmlhbnQgPT09IDIpLFxuICAgICAgJ3ZhcmlhbnQtMyc6IChkaXNwbGF5VmFyaWFudCA9PT0gMyksXG4gICAgICAnaW4tYmFza2V0JzogaW5CYXNrZXQsXG4gICAgICAncmVkaXJlY3QtY2FyZCc6IGlzbG9hZGVkICYmICFyZWNpcGVcbiAgICAgIH1cIj5cbiAgPCEtLSBNQUlOIENPTlRBSU5FUiAtLT5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2NvbnRhaW5lclwiICpuZ0lmPVwicmVjaXBlXCJcbiAgICAgICBuZ01pYW1JblZpZXdwb3J0IFt0aHJlc2hvbGRdPVwiMFwiIFtkZWJvdW5jZVRpbWVdPVwiMFwiIChpblZpZXdwb3J0KT1cImNhcmRJblZpZXdwb3J0KClcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fdG9wXCIgKGNsaWNrKT1cIm9wZW5SZWNpcGUoKVwiPlxuICAgICAgPCEtLSBQSUNUVVJFIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX3BpY3R1cmVcIj5cbiAgICAgICAgPGltZ1xuICAgICAgICAgIFtzcmNdPVwicmVjaXBlPy5hdHRyaWJ1dGVzWydtZWRpYS11cmwnXVwiXG4gICAgICAgICAgKGVycm9yKT1cIiRldmVudC50YXJnZXRbJ3NyYyddID0gY29udGV4dFNlcnZpY2UuZGVmYXVsdFJlY2lwZVBpY3R1cmVcIlxuICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcbiAgICAgICAgICBbYWx0XT1cIidQaG90byBkZSBsYSByZWNldHRlICcgKyByZWNpcGU/LmF0dHJpYnV0ZXMudGl0bGVcIlxuICAgICAgICA+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwhLS0gR1JBRElFTlQgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fZ3JhZGllbnRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19jb250ZW50XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX190b3AtY29udGFpbmVyXCI+XG4gICAgICAgICAgPCEtLSBMSUtFIEJVVFRPTiAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fbGlrZVwiICpuZ0lmPVwiIShkaXNwbGF5QmFkZ2UgJiYgcmVjaXBlLnNwb25zb3JMb2dvVXJsKVwiPlxuICAgICAgICAgICAgICA8bmctbWlhbS1saWtlLWJ1dHRvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWRpc3BsYXlMaWtlc0JvdHRvbSAmJiAodXNlclNlcnZpY2UuaXNMb2dnZWQkIHwgYXN5bmMpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2FjdGlvbnNfX2ljb25cIlxuICAgICAgICAgICAgICAgIFtyZWNpcGVdPSdyZWNpcGUnXG4gICAgICAgICAgICAgICAgW29yaWdpblRyYWNlXT1cImV2ZW50VHJhY2VcIj5cbiAgICAgICAgICAgICAgPC9uZy1taWFtLWxpa2UtYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCIoIWRpc3BsYXlCYWRnZSAmJiBpc0luUHJvbW90aW9uKSB8fCByZWNpcGUuc3BvbnNvckxvZ29VcmxcIlxuICAgICAgICAgICAgICAgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX3Nwb25zb19hbmRfcHJvbW9fYmFkZ2VcIj5cbiAgICAgICAgICAgIDxuZy1taWFtLXJlY2lwZS1wcm9tb3Rpb24tYmFkZ2UgKm5nSWY9XCIhZGlzcGxheUJhZGdlICYmIGlzSW5Qcm9tb3Rpb25cIj48L25nLW1pYW0tcmVjaXBlLXByb21vdGlvbi1iYWRnZT5cbiAgICAgICAgICAgIDwhLS0gU1BPTlNPUiAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyZWNpcGUuc3BvbnNvckxvZ29VcmxcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX3Nwb25zb3ItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19zcG9uc29yLXBpY3R1cmVcIiBbc3JjXT1cInJlY2lwZS5zcG9uc29yTG9nb1VybFwiIFthbHRdPVwiJ0xvZ28gZHUgc3BvbnNvciAnICsgcmVjaXBlLnNwb25zb3JOYW1lXCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tIE1FQUwgLyBEUklOSyBJREVBIEJBREdFIC0tPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJkaXNwbGF5QmFkZ2VcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2JhZGdlLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cImlzRHJpbmsgPyAnZHJpbmsnIDogJ2Zvb2QnXCI+XG4gICAgICAgICAgICA8bmctbWlhbS1yZWNpcGUtcHJvbW90aW9uLWJhZGdlICpuZ0lmPVwiaXNJblByb21vdGlvblwiPjwvbmctbWlhbS1yZWNpcGUtcHJvbW90aW9uLWJhZGdlPlxuICAgICAgICAgICAgPGltZyAqbmdJZj1cIiFpc0RyaW5rXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19iYWRnZVwiXG4gICAgICAgICAgICAgICAgIHNyYz1cImh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9hc3NldHMubWlhbS50ZWNoL2dlbmVyaWMvaW1hZ2VzL3JlY2lwZV9jYXJkLWJhZGdlLnN2Z1wiXG4gICAgICAgICAgICAgICAgIGFsdD1cIlwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPGltZyAqbmdJZj1cImlzRHJpbmtcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2JhZGdlXCJcbiAgICAgICAgICAgICAgICAgc3JjPVwiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Fzc2V0cy5taWFtLnRlY2gvZ2VuZXJpYy9pY29ucy85LjAvcmVjaXBlLWNhcmQtYmFkZ2UtZHJpbmtzLnN2Z1wiXG4gICAgICAgICAgICAgICAgIGFsdD1cIlwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX3BpY3R1cmVfX2JvdHRvbVwiPlxuICAgICAgICAgIDwhLS0gVElUTEUgLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX3RpdGxlIG1pYW0tZHMtdGV4dCB3ZWlnaHQteHhsIHNpemUtbVwiPlxuICAgICAgICAgICAgPHNwYW4+e3sgcmVjaXBlLmF0dHJpYnV0ZXNbJ3RpdGxlJ10gfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPCEtLSBDT1VOVEVSIC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19jb3VudGVyXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInUG91ciAnICsgKHJlY2lwZS5tb2RpZmllZEd1ZXN0cyB8fCByZWNpcGUuZ3Vlc3RzKSArICcgcGVyc29ubmVzJ1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLWRzLXRleHQgd2VpZ2h0LXh4bCBzaXplLW1cIj57eyByZWNpcGUubW9kaWZpZWRHdWVzdHMgfHwgcmVjaXBlLmd1ZXN0cyB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Fzc2V0cy5taWFtLnRlY2gvZ2VuZXJpYy9pY29ucy9yZWNpcGUtY291bnRlci5zdmdcIiBhbHQ9XCJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIENBUkQgRk9PVEVSIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19ib3R0b21cIiAoY2xpY2spPVwib3BlblJlY2lwZSgpXCI+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiY29udGV4dFNlcnZpY2UuZGlzcGxheUluZ3JlZGllbnRQaWN0dXJlc09uUmVjaXBlQ2FyZHMgJiYgcmVjaXBlPy5tb2RpZmllZEluZ3JlZGllbnRzPy5sZW5ndGggPiAxXCJcbiAgICAgICAgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmdyZWRpZW50c19fcGljdHVyZXNcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImdldEluZ3JlZGllbnRzQXJpYUxhYmVsKClcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9faW5ncmVkaWVudHNfX3BpY3R1cmVcIj5cbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICBbc3JjXT1cImluZ3JlZGllbnRQaWN0dXJlKHJlY2lwZS5tb2RpZmllZEluZ3JlZGllbnRzWzBdKVwiXG4gICAgICAgICAgICBbYWx0XT1cIicnXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgIChlcnJvcik9XCIkZXZlbnQudGFyZ2V0WydzcmMnXSA9IGNvbnRleHRTZXJ2aWNlLmRlZmF1bHRJbmdyZWRpZW50UGljdHVyZVwiXG4gICAgICAgICAgPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2luZ3JlZGllbnRzX19waWN0dXJlXCI+XG4gICAgICAgICAgPGltZ1xuICAgICAgICAgICAgW3NyY109XCJpbmdyZWRpZW50UGljdHVyZShyZWNpcGUubW9kaWZpZWRJbmdyZWRpZW50c1sxXSlcIlxuICAgICAgICAgICAgW2FsdF09XCInJ1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAoZXJyb3IpPVwiJGV2ZW50LnRhcmdldFsnc3JjJ10gPSBjb250ZXh0U2VydmljZS5kZWZhdWx0SW5ncmVkaWVudFBpY3R1cmVcIlxuICAgICAgICAgID5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmdyZWRpZW50c19fbW9yZVwiICpuZ0lmPVwicmVjaXBlLm1vZGlmaWVkSW5ncmVkaWVudHMubGVuZ3RoID4gMlwiPlxuICAgICAgICAgICsge3sgcmVjaXBlLm1vZGlmaWVkSW5ncmVkaWVudHMubGVuZ3RoIC0gMiB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2FjdGlvbnNcIj5cbiAgICAgICAgPCEtLSBJTkZPUyAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2luZm9zXCI+XG4gICAgICAgICAgPCEtLSBUSU1FIEFORCBESUZGSUNVTFRZIC0tPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwiZGlzcGxheUluZm9zICYmIChyZWNpcGUuZGlmZmljdWx0eSB8fCByZWNpcGUudG90YWxUaW1lKVwiXG4gICAgICAgICAgICBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2RpZmZpY3VsdHktYW5kLXRpbWVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyZWNpcGUuZGlmZmljdWx0eVwiIGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fZGlmZmljdWx0eVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0RpZmZpY3VsdMOpOiAnICsgcmVjaXBlU2VydmljZS5kaWZmaWN1bHR5TGV2ZWxzW3JlY2lwZS5kaWZmaWN1bHR5IC0gMV0ubGFiZWxcIj5cbiAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vYXNzZXRzLm1pYW0udGVjaC9nZW5lcmljL2ljb25zL0NoZWZIYXQuc3ZnXCIgYWx0PVwiXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtaWFtLWRzLXRleHQgc2l6ZS1zIHdlaWdodC1tXCI+e3sgcmVjaXBlU2VydmljZS5kaWZmaWN1bHR5TGV2ZWxzW3JlY2lwZS5kaWZmaWN1bHR5IC0gMV0ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyZWNpcGUudG90YWxUaW1lXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX190aW1lXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInVGVtcHMgZGUgcHLDqXBhcmF0aW9uOiAnICsgcmVjaXBlLnRvdGFsVGltZVwiPlxuICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9hc3NldHMubWlhbS50ZWNoL2dlbmVyaWMvaWNvbnMvQ2xvY2suc3ZnXCIgYWx0PVwiXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWlhbS1kcy10ZXh0IHNpemUtcyB3ZWlnaHQtbVwiPnt7IHJlY2lwZS50b3RhbFRpbWUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fcHJpY2UtYW5kLXByb21vdGlvblwiPlxuICAgICAgICAgICAgPG5nLW1pYW0tcmVjaXBlLXByb21vdGlvbi1iYWRnZSAqbmdJZj1cImlzSW5Qcm9tb3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2JvdHRvbS1wcm9tb3Rpb25cIj48L25nLW1pYW0tcmVjaXBlLXByb21vdGlvbi1iYWRnZT5cbiAgICAgICAgICAgIDwhLS0gUFJJQ0UgLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicmVjaXBlICYmIGRpc3BsYXlQcmljaW5nXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19wcmljZVwiPlxuICAgICAgICAgICAgICA8bmctbWlhbS1yZWNpcGUtcHJpY2luZ1xuICAgICAgICAgICAgICAgIGNsYXNzPVwibWlhbS1kcy10ZXh0IHdlaWdodC14eGxcIlxuICAgICAgICAgICAgICAgIFtyZWNpcGVJZF09XCJyZWNpcGUuaWRcIlxuICAgICAgICAgICAgICAgIFtzZXJ2ZXNdPVwicmVjaXBlLm1vZGlmaWVkR3Vlc3RzIHx8ICtyZWNpcGUuZ3Vlc3RzXCJcbiAgICAgICAgICAgICAgICBbaW5WaWV3cG9ydF09XCJpblZpZXdwb3J0XCJcbiAgICAgICAgICAgICAgICAocHJpY2VTZXQpPVwidXBkYXRlSXNJblByb21vdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L25nLW1pYW0tcmVjaXBlLXByaWNpbmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gQ1RBIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fY3RhXCI+XG4gICAgICAgICAgPG5nLW1pYW0tbGlrZS1idXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiZGlzcGxheUxpa2VzQm90dG9tICYmICh1c2VyU2VydmljZS5pc0xvZ2dlZCQgfCBhc3luYylcIlxuICAgICAgICAgICAgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19hY3Rpb25zX19pY29uXCJcbiAgICAgICAgICAgIFtyZWNpcGVdPSdyZWNpcGUnXG4gICAgICAgICAgICBbb3JpZ2luVHJhY2VdPVwiZXZlbnRUcmFjZVwiPlxuICAgICAgICAgIDwvbmctbWlhbS1saWtlLWJ1dHRvbj5cbiAgICAgICAgICA8bmctbWlhbS1yZWNpcGUtY2FyZC1jdGFcbiAgICAgICAgICAgICpuZ0lmPVwicHJldmlld0FsbG93ZWQgJiYgIWFkZFJlY2lwZU1vZGUgJiYgIXJlcGxhY2VNb2RlXCJcbiAgICAgICAgICAgIFtyZWNpcGVdPVwicmVjaXBlXCJcbiAgICAgICAgICAgIFtwcmV2aWV3QWxsb3dlZF09XCJwcmV2aWV3QWxsb3dlZFwiXG4gICAgICAgICAgICBbZGlzcGxheUd1ZXN0c109XCJkaXNwbGF5R3Vlc3RzXCJcbiAgICAgICAgICAgIFtoZWxwQnV0dG9uQWxsb3dlZF09XCJoZWxwQnV0dG9uQWxsb3dlZFwiXG4gICAgICAgICAgICBbb3JpZ2luVHJhY2VdPVwiZXZlbnRUcmFjZVwiXG4gICAgICAgICAgICAoZGlzcGxheWVkKT1cImRpc3BsYXllZC5lbWl0KClcIlxuICAgICAgICAgICAgKGNsaWNrZWQpPVwicHJpbWFyeUJ1dHRvbkNsaWNrZWQkLmVtaXQoJGV2ZW50KVwiPlxuICAgICAgICAgIDwvbmctbWlhbS1yZWNpcGUtY2FyZC1jdGE+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIE9QVElPTk5BTCBDVEFTIC0tPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwicmVwbGFjZU1vZGVcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2FjdGlvbnNfX3JlcGxhY2VcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWlhbS1kcy1idXR0b24gZ2hvc3RcIiAoY2xpY2spPVwib3BlbkNhdGFsb2cuZW1pdCgpXCI+XG4gICAgICAgICAgICA8c3BhbiBpMThuPkNoYW5nZXI8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1pYW0tZHMtYnV0dG9uIGdob3N0IHNxdWFyZVwiIChjbGljayk9XCJyZW1vdmVGcm9tTWVhbHNQbGFubmVyLmVtaXQoKVwiIGFyaWEtbGFiZWw9XCJTdXBwcmltZXIgbGEgcmVjZXR0ZVwiPlxuICAgICAgICAgICAgPG5nLW1pYW0taWNvbiBbaWNvbk5hbWVdPVwiaWNvbi5UcmFzaFwiIHByaW1hcnlDb2xvcj1cInZhcigtLW0tY29sb3ItcHJpbWFyeSlcIj48L25nLW1pYW0taWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJhZGRSZWNpcGVNb2RlXCIgY2xhc3M9XCJtaWFtLWRzLWJ1dHRvbiBnaG9zdFwiIChjbGljayk9XCJhZGRUb01lYWxzUGxhbm5lci5lbWl0KHJlY2lwZSlcIj5cbiAgICAgICAgICA8c3BhbiBpMThuPkFqb3V0ZXI8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8IS0tIEdFTkVSSUMgQ0FSRCAtLT5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2NvbnRhaW5lclwiICpuZ0lmPVwiaXNsb2FkZWQgJiYgIXJlY2lwZVwiXG4gICAgICAgbmdNaWFtSW5WaWV3cG9ydCBbdGhyZXNob2xkXT1cIjBcIiBbZGVib3VuY2VUaW1lXT1cIjBcIiAoaW5WaWV3cG9ydCk9XCJjYXJkSW5WaWV3cG9ydCgpXCI+XG4gICAgPGEgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19yZWRpcmVjdFwiIFtocmVmXT1cImNvbnRleHRTZXJ2aWNlLmNhdGFsb2dVcmxcIj5cbiAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Fzc2V0cy5taWFtLnRlY2gvZ2VuZXJpYy9pbWFnZXMvU3VnZ2VzdGlvbl9SZWRpcmVjdF9CYWNrZ3JvdW5kLnBuZ1wiIGFsdD1cIkTDqWNvdXZyZXogbm9zIHJlY2V0dGVzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fcmVkaXJlY3RfX2Zvb3RlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fcmVkaXJlY3RfX3RpdGxlIG1pYW0tZHMtdGV4dCBzaXplLWwgd2VpZ2h0LXh4bFwiPlxuICAgICAgICAgIDxzcGFuIGkxOG4+QmVzb2luIGQnaW5zcGlyYXRpb24gPzwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19yZWRpcmVjdF9fYnV0dG9uIG1pYW0tZHMtYnV0dG9uIHByaW1hcnlcIj5cbiAgICAgICAgICA8c3BhbiBpMThuPkTDqWNvdXZyZXogbm9zIHJlY2V0dGVzPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvYT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==