ng-miam 6.4.13 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/bundles/ng-miam.umd.js +8539 -10855
  2. package/bundles/ng-miam.umd.js.map +1 -1
  3. package/bundles/ng-miam.umd.min.js +2 -2
  4. package/bundles/ng-miam.umd.min.js.map +1 -1
  5. package/esm2015/lib/_components/abstracts/event-tracer.component.js +3 -2
  6. package/esm2015/lib/_components/accordion/accordion.component.js +75 -0
  7. package/esm2015/lib/_components/components.module.js +27 -21
  8. package/esm2015/lib/_components/counter-input/counter-input.component.js +86 -76
  9. package/esm2015/lib/_components/icon/icon.component.js +1 -1
  10. package/esm2015/lib/_components/index.js +5 -5
  11. package/esm2015/lib/_components/like-button/like-button.component.js +1 -1
  12. package/esm2015/lib/_components/list-input/list-input.component.js +5 -5
  13. package/esm2015/lib/_components/loader/loader.component.js +1 -1
  14. package/esm2015/lib/_components/meals-planner-link/meals-planner-link.component.js +3 -3
  15. package/esm2015/lib/_components/modal/modal.component.js +155 -137
  16. package/esm2015/lib/_components/product-card/product-card.component.js +333 -0
  17. package/esm2015/lib/_components/products-picker/products-picker.component.js +155 -0
  18. package/esm2015/lib/_components/progress-tracker/progress-tracker.component.js +1 -1
  19. package/esm2015/lib/_components/recipe-filters/recipe-filters.component.js +166 -217
  20. package/esm2015/lib/_components/recipe-pricing/recipe-pricing.component.js +55 -35
  21. package/esm2015/lib/_components/slider-tabs/slider-tabs.component.js +84 -0
  22. package/esm2015/lib/_components/sponsor-blocks/sponsor-image-and-text-block/sponsor-image-and-text-block.component.js +1 -1
  23. package/esm2015/lib/_components/sponsor-blocks/sponsor-text-and-image-block/sponsor-text-and-image-block.component.js +1 -1
  24. package/esm2015/lib/_components/tabs/tabs.component.js +48 -88
  25. package/esm2015/lib/_components/toaster/toaster.component.js +48 -84
  26. package/esm2015/lib/_components/tooltipable-content/tooltipable-content.component.js +1 -1
  27. package/esm2015/lib/_models/basket-entry.js +33 -49
  28. package/esm2015/lib/_models/basket-preview-line.js +5 -5
  29. package/esm2015/lib/_models/basket.js +15 -12
  30. package/esm2015/lib/_models/item.js +2 -2
  31. package/esm2015/lib/_models/recipe.js +2 -15
  32. package/esm2015/lib/_models/user.js +1 -1
  33. package/esm2015/lib/_services/analytics.service.js +24 -5
  34. package/esm2015/lib/_services/baskets-synchronizing/baskets-comparator.service.js +1 -10
  35. package/esm2015/lib/_services/baskets-synchronizing/baskets-synchronizer.service.js +15 -15
  36. package/esm2015/lib/_services/baskets.service.js +478 -60
  37. package/esm2015/lib/_services/context.service.js +22 -35
  38. package/esm2015/lib/_services/index.js +3 -5
  39. package/esm2015/lib/_services/interceptor.service.js +2 -2
  40. package/esm2015/lib/_services/items.service.js +27 -4
  41. package/esm2015/lib/_services/recipe-details.service.js +198 -0
  42. package/esm2015/lib/_services/recipe-likes.service.js +1 -1
  43. package/esm2015/lib/_services/recipes.service.js +24 -53
  44. package/esm2015/lib/_services/scrolling.service.js +17 -0
  45. package/esm2015/lib/_services/toaster.service.js +4 -5
  46. package/esm2015/lib/_services/user.service.js +2 -2
  47. package/esm2015/lib/_types/basket-action-type.enum.js +11 -0
  48. package/esm2015/lib/_types/basket-action.js +2 -0
  49. package/esm2015/lib/_types/basket-stats.js +2 -0
  50. package/esm2015/lib/_types/builded/miam-interface.js +1 -1
  51. package/esm2015/lib/_types/event-trace.js +5 -0
  52. package/esm2015/lib/_types/items-comparator.js +1 -10
  53. package/esm2015/lib/_types/recipe-filters.js +1 -1
  54. package/esm2015/lib/_types/toaster.js +1 -1
  55. package/esm2015/lib/_utils/directives/index.js +2 -1
  56. package/esm2015/lib/_utils/directives/reach-top.directive.js +33 -0
  57. package/esm2015/lib/_utils/pipes/readable-float-number/readable-float-number.pipe.js +8 -2
  58. package/esm2015/lib/_utils/utils.module.js +12 -8
  59. package/esm2015/lib/_web-components/basket-preview/basket-preview-block/basket-preview-block.component.js +140 -118
  60. package/esm2015/lib/_web-components/basket-preview/basket-preview-disabled/basket-preview-disabled.component.js +2 -2
  61. package/esm2015/lib/_web-components/basket-preview/basket-preview-line/basket-preview-line.component.js +125 -444
  62. package/esm2015/lib/_web-components/basket-preview/replace-item/replace-item.component.js +211 -108
  63. package/esm2015/lib/_web-components/index.js +1 -4
  64. package/esm2015/lib/_web-components/list-scan/basket-preview/basket-preview.component.js +11 -14
  65. package/esm2015/lib/_web-components/list-scan/files-inputs/files-inputs.component.js +13 -13
  66. package/esm2015/lib/_web-components/list-scan/ingredients-list/ingredients-list.component.js +6 -6
  67. package/esm2015/lib/_web-components/list-scan/list-scan.component.js +10 -10
  68. package/esm2015/lib/_web-components/list-scan/overlay-button/overlay-button.component.js +23 -11
  69. package/esm2015/lib/_web-components/meals-planner/meals-planner-basket-confirmation/meals-planner-basket-confirmation.component.js +1 -1
  70. package/esm2015/lib/_web-components/meals-planner/meals-planner-catalog/meals-planner-catalog.component.js +1 -1
  71. package/esm2015/lib/_web-components/meals-planner/meals-planner-form/meals-planner-form.component.js +7 -7
  72. package/esm2015/lib/_web-components/meals-planner/meals-planner-result/meals-planner-result.component.js +5 -5
  73. package/esm2015/lib/_web-components/meals-planner/meals-planner.component.js +16 -20
  74. package/esm2015/lib/_web-components/planner-side-menu/planner-side-menu.component.js +4 -53
  75. package/esm2015/lib/_web-components/recipe-cards/add-recipe-card/add-recipe-card.component.js +1 -1
  76. package/esm2015/lib/_web-components/recipe-cards/index.js +1 -3
  77. package/esm2015/lib/_web-components/recipe-cards/recipe-card/recipe-card.component.js +326 -404
  78. package/esm2015/lib/_web-components/recipe-cards/recipe-card-cta/recipe-card-cta.component.js +50 -146
  79. package/esm2015/lib/_web-components/recipe-cards/recipe-cards.module.js +3 -15
  80. package/esm2015/lib/_web-components/recipe-catalog/catalog-article-card/catalog-article-card.component.js +1 -1
  81. package/esm2015/lib/_web-components/recipe-catalog/catalog-category/catalog-category.component.js +35 -29
  82. package/esm2015/lib/_web-components/recipe-catalog/catalog-header/catalog-header.component.js +1 -1
  83. package/esm2015/lib/_web-components/recipe-catalog/catalog-list/catalog-list.component.js +27 -31
  84. package/esm2015/lib/_web-components/recipe-catalog/recipe-catalog.component.js +98 -100
  85. package/esm2015/lib/_web-components/recipe-creation/recipe-form/recipe-form.component.js +2 -2
  86. package/esm2015/lib/_web-components/recipe-creation/recipe-stepper/recipe-stepper.component.js +7 -7
  87. package/esm2015/lib/_web-components/recipe-creation/tags-creator/tags-creator.component.js +4 -4
  88. package/esm2015/lib/_web-components/recipe-creation/tags-selector/tags-selector.component.js +8 -8
  89. package/esm2015/lib/_web-components/recipe-details/recipe-addon/recipe-addon.component.js +7 -3
  90. package/esm2015/lib/_web-components/recipe-details/recipe-details-infos/recipe-details-infos.component.js +57 -358
  91. package/esm2015/lib/_web-components/recipe-details/recipe-details-ingredients/recipe-details-ingredients.component.js +59 -122
  92. package/esm2015/lib/_web-components/recipe-details/recipe-details-steps/recipe-details-steps.component.js +51 -72
  93. package/esm2015/lib/_web-components/recipe-details/recipe-details.component.js +313 -363
  94. package/esm2015/lib/_web-components/recipe-details/recipe-details.module.js +8 -4
  95. package/esm2015/lib/_web-components/recipe-details/sponsor-storytelling/sponsor-storytelling.component.js +1 -1
  96. package/esm2015/lib/_web-components/recipe-helper/recipe-helper.component.js +89 -113
  97. package/esm2015/lib/_web-components/recipe-modal/recipe-modal.component.js +78 -69
  98. package/esm2015/lib/_web-components/recipe-tags/recipe-tags.component.js +5 -5
  99. package/esm2015/lib/_web-components/toaster-stack/toaster-stack.component.js +8 -4
  100. package/esm2015/lib/_web-components/web-components.module.js +3 -19
  101. package/esm2015/lib/ng-miam.module.js +5 -7
  102. package/fesm2015/ng-miam.js +5165 -6973
  103. package/fesm2015/ng-miam.js.map +1 -1
  104. package/lib/_components/abstracts/event-tracer.component.d.ts +2 -1
  105. package/lib/_components/accordion/accordion.component.d.ts +23 -0
  106. package/lib/_components/components.module.d.ts +38 -36
  107. package/lib/_components/counter-input/counter-input.component.d.ts +12 -14
  108. package/lib/_components/index.d.ts +4 -4
  109. package/lib/_components/modal/modal.component.d.ts +18 -18
  110. package/lib/_components/product-card/product-card.component.d.ts +40 -0
  111. package/lib/_components/products-picker/products-picker.component.d.ts +17 -0
  112. package/lib/_components/recipe-pricing/recipe-pricing.component.d.ts +12 -8
  113. package/lib/_components/slider-tabs/slider-tabs.component.d.ts +16 -0
  114. package/lib/_components/tabs/tabs.component.d.ts +11 -11
  115. package/lib/_components/toaster/toaster.component.d.ts +4 -2
  116. package/lib/_models/basket-entry.d.ts +16 -20
  117. package/lib/_models/basket-preview-line.d.ts +1 -0
  118. package/lib/_models/basket.d.ts +12 -5
  119. package/lib/_models/item.d.ts +1 -1
  120. package/lib/_models/recipe.d.ts +0 -5
  121. package/lib/_models/user.d.ts +0 -1
  122. package/lib/_services/analytics.service.d.ts +8 -22
  123. package/lib/_services/baskets-synchronizing/baskets-comparator.service.d.ts +0 -5
  124. package/lib/_services/baskets-synchronizing/baskets-synchronizer.service.d.ts +3 -6
  125. package/lib/_services/baskets.service.d.ts +137 -18
  126. package/lib/_services/context.service.d.ts +2 -4
  127. package/lib/_services/index.d.ts +2 -4
  128. package/lib/_services/items.service.d.ts +9 -2
  129. package/lib/_services/recipe-details.service.d.ts +84 -0
  130. package/lib/_services/recipe-likes.service.d.ts +2 -1
  131. package/lib/_services/recipes.service.d.ts +10 -14
  132. package/lib/_services/scrolling.service.d.ts +8 -0
  133. package/lib/_services/toaster.service.d.ts +1 -1
  134. package/lib/_types/basket-action-type.enum.d.ts +9 -0
  135. package/lib/_types/basket-action.d.ts +14 -0
  136. package/lib/_types/basket-stats.d.ts +5 -0
  137. package/lib/_types/builded/miam-interface.d.ts +16 -25
  138. package/lib/_types/event-trace.d.ts +22 -0
  139. package/lib/_types/items-comparator.d.ts +0 -5
  140. package/lib/_types/recipe-filters.d.ts +0 -2
  141. package/lib/_types/toaster.d.ts +1 -1
  142. package/lib/_utils/directives/index.d.ts +1 -0
  143. package/lib/_utils/directives/reach-top.directive.d.ts +13 -0
  144. package/lib/_utils/pipes/readable-float-number/readable-float-number.pipe.d.ts +1 -1
  145. package/lib/_utils/utils.module.d.ts +2 -2
  146. package/lib/_web-components/basket-preview/basket-preview-block/basket-preview-block.component.d.ts +9 -8
  147. package/lib/_web-components/basket-preview/basket-preview-line/basket-preview-line.component.d.ts +11 -9
  148. package/lib/_web-components/basket-preview/replace-item/replace-item.component.d.ts +27 -20
  149. package/lib/_web-components/index.d.ts +0 -3
  150. package/lib/_web-components/list-scan/basket-preview/basket-preview.component.d.ts +1 -2
  151. package/lib/_web-components/list-scan/files-inputs/files-inputs.component.d.ts +6 -5
  152. package/lib/_web-components/list-scan/ingredients-list/ingredients-list.component.d.ts +3 -3
  153. package/lib/_web-components/list-scan/list-scan.component.d.ts +3 -3
  154. package/lib/_web-components/list-scan/overlay-button/overlay-button.component.d.ts +8 -6
  155. package/lib/_web-components/meals-planner/meals-planner.component.d.ts +2 -3
  156. package/lib/_web-components/recipe-cards/index.d.ts +0 -2
  157. package/lib/_web-components/recipe-cards/recipe-card/recipe-card.component.d.ts +58 -17
  158. package/lib/_web-components/recipe-cards/recipe-card-cta/recipe-card-cta.component.d.ts +5 -12
  159. package/lib/_web-components/recipe-cards/recipe-cards.module.d.ts +7 -9
  160. package/lib/_web-components/recipe-catalog/catalog-category/catalog-category.component.d.ts +8 -6
  161. package/lib/_web-components/recipe-catalog/catalog-list/catalog-list.component.d.ts +7 -4
  162. package/lib/_web-components/recipe-catalog/recipe-catalog.component.d.ts +2 -3
  163. package/lib/_web-components/recipe-details/recipe-addon/recipe-addon.component.d.ts +5 -2
  164. package/lib/_web-components/recipe-details/recipe-details-infos/recipe-details-infos.component.d.ts +6 -18
  165. package/lib/_web-components/recipe-details/recipe-details-ingredients/recipe-details-ingredients.component.d.ts +6 -13
  166. package/lib/_web-components/recipe-details/recipe-details-steps/recipe-details-steps.component.d.ts +2 -10
  167. package/lib/_web-components/recipe-details/recipe-details.component.d.ts +29 -36
  168. package/lib/_web-components/recipe-details/recipe-details.module.d.ts +2 -1
  169. package/lib/_web-components/recipe-helper/recipe-helper.component.d.ts +2 -6
  170. package/lib/_web-components/recipe-modal/recipe-modal.component.d.ts +11 -9
  171. package/lib/_web-components/toaster-stack/toaster-stack.component.d.ts +5 -2
  172. package/lib/_web-components/web-components.module.d.ts +23 -29
  173. package/miam-style.css +1 -1
  174. package/package.json +1 -1
  175. package/esm2015/lib/_components/abstracts/abstract-recipe-card.component.js +0 -130
  176. package/esm2015/lib/_components/skeleton/skeleton.component.js +0 -70
  177. package/esm2015/lib/_components/tabs/tab-body.component.js +0 -30
  178. package/esm2015/lib/_components/tabs/tab-item.component.js +0 -36
  179. package/esm2015/lib/_components/tabs/tab-label.component.js +0 -30
  180. package/esm2015/lib/_models/groceries-entry.js +0 -42
  181. package/esm2015/lib/_models/groceries-list.js +0 -36
  182. package/esm2015/lib/_services/counter.service.js +0 -20
  183. package/esm2015/lib/_services/groceries-entries.service.js +0 -21
  184. package/esm2015/lib/_services/groceries-lists.service.js +0 -240
  185. package/esm2015/lib/_services/recipe-events.service.js +0 -63
  186. package/esm2015/lib/_types/skeleton.enum.js +0 -7
  187. package/esm2015/lib/_web-components/drawer/drawer.component.js +0 -273
  188. package/esm2015/lib/_web-components/pos-card/pos-card.component.js +0 -207
  189. package/esm2015/lib/_web-components/pos-selection/pos-selection.component.js +0 -283
  190. package/esm2015/lib/_web-components/recipe-cards/catalog-recipe-card/catalog-recipe-card.component.js +0 -632
  191. package/esm2015/lib/_web-components/recipe-cards/suggestion-card/suggestion-card.component.js +0 -144
  192. package/lib/_components/abstracts/abstract-recipe-card.component.d.ts +0 -49
  193. package/lib/_components/skeleton/skeleton.component.d.ts +0 -11
  194. package/lib/_components/tabs/tab-body.component.d.ts +0 -8
  195. package/lib/_components/tabs/tab-item.component.d.ts +0 -11
  196. package/lib/_components/tabs/tab-label.component.d.ts +0 -8
  197. package/lib/_models/groceries-entry.d.ts +0 -20
  198. package/lib/_models/groceries-list.d.ts +0 -30
  199. package/lib/_services/counter.service.d.ts +0 -10
  200. package/lib/_services/groceries-entries.service.d.ts +0 -10
  201. package/lib/_services/groceries-lists.service.d.ts +0 -68
  202. package/lib/_services/recipe-events.service.d.ts +0 -23
  203. package/lib/_types/skeleton.enum.d.ts +0 -5
  204. package/lib/_web-components/drawer/drawer.component.d.ts +0 -37
  205. package/lib/_web-components/pos-card/pos-card.component.d.ts +0 -24
  206. package/lib/_web-components/pos-selection/pos-selection.component.d.ts +0 -38
  207. package/lib/_web-components/recipe-cards/catalog-recipe-card/catalog-recipe-card.component.d.ts +0 -49
  208. package/lib/_web-components/recipe-cards/suggestion-card/suggestion-card.component.d.ts +0 -42
@@ -1,6 +1,5 @@
1
1
  import { Component, Input, ViewEncapsulation, ChangeDetectionStrategy, ChangeDetectorRef, Output, EventEmitter, ViewChildren, QueryList } from '@angular/core';
2
2
  import { BehaviorSubject } from 'rxjs';
3
- import { GroceriesListsService } from '../../../_services/groceries-lists.service';
4
3
  import { BasketsService } from '../../../_services/baskets.service';
5
4
  import { skipWhile, tap, map, switchMap, take } from 'rxjs/operators';
6
5
  import remove from 'lodash-es/remove';
@@ -12,113 +11,125 @@ import { MediaMatcher } from '@angular/cdk/layout';
12
11
  import { AnalyticsService } from '../../../_services/analytics.service';
13
12
  import { EventTracerComponent } from '../../../_components/abstracts/event-tracer.component';
14
13
  import * as i0 from "@angular/core";
15
- import * as i1 from "../../../_services/groceries-lists.service";
16
- import * as i2 from "../../../_services/point-of-sales.service";
17
- import * as i3 from "../../../_services/context.service";
18
- import * as i4 from "../../../_services/baskets.service";
19
- import * as i5 from "@angular/cdk/layout";
20
- import * as i6 from "../../../_services/analytics.service";
21
- import * as i7 from "@angular/common";
22
- import * as i8 from "../basket-preview-line/basket-preview-line.component";
23
- import * as i9 from "../replace-item/replace-item.component";
24
- import * as i10 from "../../../_components/loader/loader.component";
25
- import * as i11 from "../../../_components/cors-overlay/cors-overlay.component";
26
- const _c0 = function (a0) { return { "display": a0 }; };
27
- function BasketPreviewBlockComponent_div_2_ng_container_1_div_1_ng_miam_basket_preview_line_1_Template(rf, ctx) { if (rf & 1) {
14
+ import * as i1 from "../../../_services/point-of-sales.service";
15
+ import * as i2 from "../../../_services/context.service";
16
+ import * as i3 from "../../../_services/baskets.service";
17
+ import * as i4 from "@angular/cdk/layout";
18
+ import * as i5 from "../../../_services/analytics.service";
19
+ import * as i6 from "@angular/common";
20
+ import * as i7 from "../basket-preview-line/basket-preview-line.component";
21
+ import * as i8 from "../replace-item/replace-item.component";
22
+ import * as i9 from "../../../_components/loader/loader.component";
23
+ import * as i10 from "../../../_components/cors-overlay/cors-overlay.component";
24
+ function BasketPreviewBlockComponent_div_2_ng_container_1_div_1_Template(rf, ctx) { if (rf & 1) {
25
+ i0.ɵɵelementStart(0, "div", 13);
26
+ i0.ɵɵelementStart(1, "span");
27
+ i0.ɵɵi18n(2, 14);
28
+ i0.ɵɵelementEnd();
29
+ i0.ɵɵelementStart(3, "span", 15);
30
+ i0.ɵɵtext(4);
31
+ i0.ɵɵelementEnd();
32
+ i0.ɵɵelementStart(5, "span");
33
+ i0.ɵɵi18n(6, 16);
34
+ i0.ɵɵelementEnd();
35
+ i0.ɵɵelementEnd();
36
+ } if (rf & 2) {
37
+ const ctx_r7 = i0.ɵɵnextContext(3);
38
+ i0.ɵɵadvance(4);
39
+ i0.ɵɵtextInterpolate(ctx_r7.lines.length);
40
+ } }
41
+ const _c4 = function (a0) { return { "display": a0 }; };
42
+ function BasketPreviewBlockComponent_div_2_ng_container_1_ng_miam_basket_preview_line_3_Template(rf, ctx) { if (rf & 1) {
28
43
  const _r14 = i0.ɵɵgetCurrentView();
29
- i0.ɵɵelementStart(0, "ng-miam-basket-preview-line", 13);
30
- i0.ɵɵlistener("removed", function BasketPreviewBlockComponent_div_2_ng_container_1_div_1_ng_miam_basket_preview_line_1_Template_ng_miam_basket_preview_line_removed_0_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r13 = i0.ɵɵnextContext(4); return ctx_r13.removeRecipe($event); })("countChanged", function BasketPreviewBlockComponent_div_2_ng_container_1_div_1_ng_miam_basket_preview_line_1_Template_ng_miam_basket_preview_line_countChanged_0_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r15 = i0.ɵɵnextContext(4); return ctx_r15.updateRecipe($event); })("replaceItem", function BasketPreviewBlockComponent_div_2_ng_container_1_div_1_ng_miam_basket_preview_line_1_Template_ng_miam_basket_preview_line_replaceItem_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r16 = i0.ɵɵnextContext(4); const _r0 = i0.ɵɵreference(1); return ctx_r16.scrolltop(_r0); });
44
+ i0.ɵɵelementStart(0, "ng-miam-basket-preview-line", 17);
45
+ i0.ɵɵlistener("removed", function BasketPreviewBlockComponent_div_2_ng_container_1_ng_miam_basket_preview_line_3_Template_ng_miam_basket_preview_line_removed_0_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r13 = i0.ɵɵnextContext(3); return ctx_r13.removeRecipe($event); })("countChanged", function BasketPreviewBlockComponent_div_2_ng_container_1_ng_miam_basket_preview_line_3_Template_ng_miam_basket_preview_line_countChanged_0_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r15 = i0.ɵɵnextContext(3); return ctx_r15.updateRecipe($event); })("replaceItem", function BasketPreviewBlockComponent_div_2_ng_container_1_ng_miam_basket_preview_line_3_Template_ng_miam_basket_preview_line_replaceItem_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r16 = i0.ɵɵnextContext(3); const _r0 = i0.ɵɵreference(1); return ctx_r16.scrolltop(_r0); });
31
46
  i0.ɵɵelementEnd();
32
47
  } if (rf & 2) {
33
48
  const line_r12 = ctx.$implicit;
34
- const ctx_r9 = i0.ɵɵnextContext(4);
35
- i0.ɵɵproperty("line", line_r12)("blockStates", ctx_r9.blockStates)("recipesAlwaysExpanded", ctx_r9.recipesAlwaysExpanded)("itemsAlwaysExpanded", ctx_r9.itemsAlwaysExpanded)("displayItemsUnitaryPrice", ctx_r9.displayItemsUnitaryPrice)("originTrace", ctx_r9.eventTrace())("ngStyle", i0.ɵɵpureFunction1(7, _c0, (ctx_r9.blockStates == null ? null : ctx_r9.blockStates.value == null ? null : ctx_r9.blockStates.value.overlayOpen) ? "none" : "block"));
49
+ const ctx_r8 = i0.ɵɵnextContext(3);
50
+ i0.ɵɵproperty("line", line_r12)("blockStates", ctx_r8.blockStates)("recipesAlwaysExpanded", ctx_r8.recipesAlwaysExpanded)("itemsAlwaysExpanded", ctx_r8.itemsAlwaysExpanded)("displayItemsUnitaryPrice", ctx_r8.displayItemsUnitaryPrice)("originTrace", ctx_r8.eventTrace())("ngStyle", i0.ɵɵpureFunction1(7, _c4, (ctx_r8.blockStates == null ? null : ctx_r8.blockStates.value == null ? null : ctx_r8.blockStates.value.overlayOpen) ? "none" : "block"));
36
51
  } }
37
- function BasketPreviewBlockComponent_div_2_ng_container_1_div_1_ng_miam_replace_item_2_Template(rf, ctx) { if (rf & 1) {
52
+ function BasketPreviewBlockComponent_div_2_ng_container_1_ng_miam_replace_item_4_Template(rf, ctx) { if (rf & 1) {
38
53
  const _r18 = i0.ɵɵgetCurrentView();
39
- i0.ɵɵelementStart(0, "ng-miam-replace-item", 14);
40
- i0.ɵɵlistener("selected", function BasketPreviewBlockComponent_div_2_ng_container_1_div_1_ng_miam_replace_item_2_Template_ng_miam_replace_item_selected_0_listener($event) { i0.ɵɵrestoreView(_r18); const ctx_r17 = i0.ɵɵnextContext(4); return ctx_r17.blockStates == null ? null : ctx_r17.blockStates.value == null ? null : ctx_r17.blockStates.value.lineComponent.productChosen($event); });
54
+ i0.ɵɵelementStart(0, "ng-miam-replace-item", 18);
55
+ i0.ɵɵlistener("selected", function BasketPreviewBlockComponent_div_2_ng_container_1_ng_miam_replace_item_4_Template_ng_miam_replace_item_selected_0_listener($event) { i0.ɵɵrestoreView(_r18); const ctx_r17 = i0.ɵɵnextContext(3); return ctx_r17.blockStates == null ? null : ctx_r17.blockStates.value == null ? null : ctx_r17.blockStates.value.lineComponent.productChosen($event); });
41
56
  i0.ɵɵelementEnd();
42
57
  } if (rf & 2) {
43
- const ctx_r10 = i0.ɵɵnextContext(4);
44
- i0.ɵɵproperty("line", ctx_r10.blockStates == null ? null : ctx_r10.blockStates.value == null ? null : ctx_r10.blockStates.value.lineComponent.line)("originTrace", ctx_r10.eventTrace());
58
+ const ctx_r9 = i0.ɵɵnextContext(3);
59
+ i0.ɵɵproperty("basketEntry", ctx_r9.blockStates == null ? null : ctx_r9.blockStates.value == null ? null : ctx_r9.blockStates.value.lineComponent.line.record)("originTrace", ctx_r9.eventTrace());
45
60
  } }
46
- function BasketPreviewBlockComponent_div_2_ng_container_1_div_1_div_3_p_4_Template(rf, ctx) { if (rf & 1) {
61
+ function BasketPreviewBlockComponent_div_2_ng_container_1_div_5_p_4_Template(rf, ctx) { if (rf & 1) {
47
62
  i0.ɵɵelementStart(0, "p");
48
- i0.ɵɵi18n(1, 18);
63
+ i0.ɵɵi18n(1, 22);
49
64
  i0.ɵɵelementEnd();
50
65
  } }
51
- function BasketPreviewBlockComponent_div_2_ng_container_1_div_1_div_3_Template(rf, ctx) { if (rf & 1) {
52
- i0.ɵɵelementStart(0, "div", 15);
66
+ function BasketPreviewBlockComponent_div_2_ng_container_1_div_5_Template(rf, ctx) { if (rf & 1) {
67
+ i0.ɵɵelementStart(0, "div", 19);
53
68
  i0.ɵɵelementStart(1, "p");
54
69
  i0.ɵɵelementStart(2, "b");
55
- i0.ɵɵi18n(3, 16);
70
+ i0.ɵɵi18n(3, 20);
56
71
  i0.ɵɵelementEnd();
57
72
  i0.ɵɵelementEnd();
58
- i0.ɵɵtemplate(4, BasketPreviewBlockComponent_div_2_ng_container_1_div_1_div_3_p_4_Template, 2, 0, "p", 17);
73
+ i0.ɵɵtemplate(4, BasketPreviewBlockComponent_div_2_ng_container_1_div_5_p_4_Template, 2, 0, "p", 21);
59
74
  i0.ɵɵelementEnd();
60
75
  } if (rf & 2) {
61
- const ctx_r11 = i0.ɵɵnextContext(4);
76
+ const ctx_r10 = i0.ɵɵnextContext(3);
62
77
  i0.ɵɵadvance(4);
63
- i0.ɵɵproperty("ngIf", ctx_r11.showNotice);
78
+ i0.ɵɵproperty("ngIf", ctx_r10.showNotice);
64
79
  } }
65
- function BasketPreviewBlockComponent_div_2_ng_container_1_div_1_Template(rf, ctx) { if (rf & 1) {
66
- i0.ɵɵelementStart(0, "div", 9);
67
- i0.ɵɵtemplate(1, BasketPreviewBlockComponent_div_2_ng_container_1_div_1_ng_miam_basket_preview_line_1_Template, 1, 9, "ng-miam-basket-preview-line", 10);
68
- i0.ɵɵtemplate(2, BasketPreviewBlockComponent_div_2_ng_container_1_div_1_ng_miam_replace_item_2_Template, 1, 2, "ng-miam-replace-item", 11);
69
- i0.ɵɵtemplate(3, BasketPreviewBlockComponent_div_2_ng_container_1_div_1_div_3_Template, 5, 1, "div", 12);
70
- i0.ɵɵpipe(4, "async");
71
- i0.ɵɵelementEnd();
72
- } if (rf & 2) {
73
- const ctx_r7 = i0.ɵɵnextContext(3);
74
- i0.ɵɵadvance(1);
75
- i0.ɵɵproperty("ngForOf", ctx_r7.lines);
76
- i0.ɵɵadvance(1);
77
- i0.ɵɵproperty("ngIf", ctx_r7.blockStates == null ? null : ctx_r7.blockStates.value == null ? null : ctx_r7.blockStates.value.overlayOpen);
78
- i0.ɵɵadvance(1);
79
- i0.ɵɵproperty("ngIf", !i0.ɵɵpipeBind1(4, 3, ctx_r7.loading) && (!ctx_r7.lines || ctx_r7.lines.length === 0));
80
- } }
81
- function BasketPreviewBlockComponent_div_2_ng_container_1_div_2_span_3_Template(rf, ctx) { if (rf & 1) {
80
+ function BasketPreviewBlockComponent_div_2_ng_container_1_div_7_span_3_Template(rf, ctx) { if (rf & 1) {
82
81
  i0.ɵɵelementStart(0, "span");
83
- i0.ɵɵi18n(1, 20);
82
+ i0.ɵɵi18n(1, 24);
84
83
  i0.ɵɵelementEnd();
85
84
  } }
86
- function BasketPreviewBlockComponent_div_2_ng_container_1_div_2_span_4_Template(rf, ctx) { if (rf & 1) {
85
+ function BasketPreviewBlockComponent_div_2_ng_container_1_div_7_span_4_Template(rf, ctx) { if (rf & 1) {
87
86
  i0.ɵɵelementStart(0, "span");
88
- i0.ɵɵi18n(1, 21);
87
+ i0.ɵɵi18n(1, 25);
89
88
  i0.ɵɵelementEnd();
90
89
  } }
91
- function BasketPreviewBlockComponent_div_2_ng_container_1_div_2_Template(rf, ctx) { if (rf & 1) {
92
- i0.ɵɵelementStart(0, "div", 19);
90
+ function BasketPreviewBlockComponent_div_2_ng_container_1_div_7_Template(rf, ctx) { if (rf & 1) {
91
+ i0.ɵɵelementStart(0, "div", 23);
93
92
  i0.ɵɵelement(1, "ng-miam-loader");
94
93
  i0.ɵɵelementStart(2, "div");
95
- i0.ɵɵtemplate(3, BasketPreviewBlockComponent_div_2_ng_container_1_div_2_span_3_Template, 2, 0, "span", 17);
96
- i0.ɵɵtemplate(4, BasketPreviewBlockComponent_div_2_ng_container_1_div_2_span_4_Template, 2, 0, "span", 17);
94
+ i0.ɵɵtemplate(3, BasketPreviewBlockComponent_div_2_ng_container_1_div_7_span_3_Template, 2, 0, "span", 21);
95
+ i0.ɵɵtemplate(4, BasketPreviewBlockComponent_div_2_ng_container_1_div_7_span_4_Template, 2, 0, "span", 21);
97
96
  i0.ɵɵelementEnd();
98
97
  i0.ɵɵelementEnd();
99
98
  } if (rf & 2) {
100
- const ctx_r8 = i0.ɵɵnextContext(3);
99
+ const ctx_r11 = i0.ɵɵnextContext(3);
101
100
  i0.ɵɵadvance(3);
102
- i0.ɵɵproperty("ngIf", ctx_r8.recipeId);
101
+ i0.ɵɵproperty("ngIf", ctx_r11.recipeId);
103
102
  i0.ɵɵadvance(1);
104
- i0.ɵɵproperty("ngIf", !ctx_r8.recipeId);
103
+ i0.ɵɵproperty("ngIf", !ctx_r11.recipeId);
105
104
  } }
106
105
  function BasketPreviewBlockComponent_div_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
107
106
  i0.ɵɵelementContainerStart(0);
108
- i0.ɵɵtemplate(1, BasketPreviewBlockComponent_div_2_ng_container_1_div_1_Template, 5, 5, "div", 7);
109
- i0.ɵɵtemplate(2, BasketPreviewBlockComponent_div_2_ng_container_1_div_2_Template, 5, 2, "div", 8);
110
- i0.ɵɵpipe(3, "async");
107
+ i0.ɵɵtemplate(1, BasketPreviewBlockComponent_div_2_ng_container_1_div_1_Template, 7, 1, "div", 7);
108
+ i0.ɵɵelementStart(2, "div", 8);
109
+ i0.ɵɵtemplate(3, BasketPreviewBlockComponent_div_2_ng_container_1_ng_miam_basket_preview_line_3_Template, 1, 9, "ng-miam-basket-preview-line", 9);
110
+ i0.ɵɵtemplate(4, BasketPreviewBlockComponent_div_2_ng_container_1_ng_miam_replace_item_4_Template, 1, 2, "ng-miam-replace-item", 10);
111
+ i0.ɵɵtemplate(5, BasketPreviewBlockComponent_div_2_ng_container_1_div_5_Template, 5, 1, "div", 11);
112
+ i0.ɵɵpipe(6, "async");
113
+ i0.ɵɵelementEnd();
114
+ i0.ɵɵtemplate(7, BasketPreviewBlockComponent_div_2_ng_container_1_div_7_Template, 5, 2, "div", 12);
115
+ i0.ɵɵpipe(8, "async");
111
116
  i0.ɵɵelementContainerEnd();
112
117
  } if (rf & 2) {
113
118
  const ctx_r6 = i0.ɵɵnextContext(2);
114
119
  i0.ɵɵadvance(1);
115
- i0.ɵɵproperty("ngIf", ctx_r6.showLines);
120
+ i0.ɵɵproperty("ngIf", (ctx_r6.lines == null ? null : ctx_r6.lines.length) > 0);
121
+ i0.ɵɵadvance(2);
122
+ i0.ɵɵproperty("ngForOf", ctx_r6.lines);
116
123
  i0.ɵɵadvance(1);
117
- i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(3, 2, ctx_r6.loading));
124
+ i0.ɵɵproperty("ngIf", ctx_r6.blockStates == null ? null : ctx_r6.blockStates.value == null ? null : ctx_r6.blockStates.value.overlayOpen);
125
+ i0.ɵɵadvance(1);
126
+ i0.ɵɵproperty("ngIf", !i0.ɵɵpipeBind1(6, 5, ctx_r6.loading) && (!ctx_r6.lines || ctx_r6.lines.length === 0));
127
+ i0.ɵɵadvance(2);
128
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(8, 7, ctx_r6.loading));
118
129
  } }
119
130
  function BasketPreviewBlockComponent_div_2_Template(rf, ctx) { if (rf & 1) {
120
131
  i0.ɵɵelementStart(0, "div", 5);
121
- i0.ɵɵtemplate(1, BasketPreviewBlockComponent_div_2_ng_container_1_Template, 4, 4, "ng-container", 6);
132
+ i0.ɵɵtemplate(1, BasketPreviewBlockComponent_div_2_ng_container_1_Template, 9, 9, "ng-container", 6);
122
133
  i0.ɵɵpipe(2, "async");
123
134
  i0.ɵɵelementEnd();
124
135
  } if (rf & 2) {
@@ -131,21 +142,20 @@ function BasketPreviewBlockComponent_ng_template_3_Template(rf, ctx) { if (rf &
131
142
  i0.ɵɵelement(0, "ng-miam-cors-overlay");
132
143
  } }
133
144
  function BasketPreviewBlockComponent_ng_template_5_Template(rf, ctx) { if (rf & 1) {
134
- i0.ɵɵelementStart(0, "div", 22);
145
+ i0.ɵɵelementStart(0, "div", 26);
135
146
  i0.ɵɵelementStart(1, "span");
136
- i0.ɵɵi18n(2, 23);
147
+ i0.ɵɵi18n(2, 27);
137
148
  i0.ɵɵelementEnd();
138
149
  i0.ɵɵelement(3, "br");
139
150
  i0.ɵɵelementStart(4, "span");
140
- i0.ɵɵi18n(5, 24);
151
+ i0.ɵɵi18n(5, 28);
141
152
  i0.ɵɵelementEnd();
142
153
  i0.ɵɵelementEnd();
143
154
  } }
144
155
  export class BasketPreviewBlockComponent extends EventTracerComponent {
145
- constructor(cdr, listsService, posService, contextService, basketsService, mediaMatcher, analyticsService) {
156
+ constructor(cdr, posService, contextService, basketsService, mediaMatcher, analyticsService) {
146
157
  super(analyticsService);
147
158
  this.cdr = cdr;
148
- this.listsService = listsService;
149
159
  this.posService = posService;
150
160
  this.contextService = contextService;
151
161
  this.basketsService = basketsService;
@@ -159,7 +169,6 @@ export class BasketPreviewBlockComponent extends EventTracerComponent {
159
169
  this.statsUpdated = new EventEmitter();
160
170
  this.guestCountChanged = new EventEmitter();
161
171
  this.loading = new BehaviorSubject(true);
162
- this.showLines = true;
163
172
  this.corsIssues = false;
164
173
  this.icon = Icon;
165
174
  this.isMobile = false;
@@ -169,25 +178,13 @@ export class BasketPreviewBlockComponent extends EventTracerComponent {
169
178
  }
170
179
  ngOnInit() {
171
180
  this.blockStates = new BehaviorSubject({ currentOpenLine: null, overlayOpen: false, lineComponent: null });
181
+ this.loadPreviewWhenBasketIsReady();
172
182
  this.subscriptions = [
173
183
  this.contextService.getCORSIssuesState().subscribe(res => {
174
184
  this.corsIssues = res;
175
185
  this.cdr.detectChanges();
176
186
  }),
177
187
  this.blockStates.subscribe(() => this.handelblockState()),
178
- this.listsService.takeFirstList().pipe(switchMap(list => {
179
- return this.basketsService.basketPreview$.pipe(
180
- // skipWhile(preview => !preview || preview.length === 0 || preview.length !== list.recipeInfos.length),
181
- skipWhile(preview => !preview || preview.length !== list.recipeInfos.length), map(previewLines => {
182
- if (this.recipesIds.length === 0) {
183
- return previewLines;
184
- }
185
- return previewLines.filter(line => this.recipesIds.includes(line.id));
186
- }), tap(preview => this.refreshPreview([...preview].reverse())));
187
- })).subscribe(() => {
188
- this.loading.next(false);
189
- this.cdr.detectChanges();
190
- }),
191
188
  this.basketsService.basketStats$.pipe(skipWhile(stats => !stats), tap(stats => this.statsUpdated.emit(stats))).subscribe(),
192
189
  this.posService.isPosValid().subscribe(() => {
193
190
  this.cdr.detectChanges();
@@ -214,13 +211,26 @@ export class BasketPreviewBlockComponent extends EventTracerComponent {
214
211
  currentPath() {
215
212
  return 'basket-preview';
216
213
  }
217
- toggleLines() {
218
- this.showLines = !this.showLines;
219
- this.cdr.detectChanges();
214
+ loadPreviewWhenBasketIsReady() {
215
+ this.subscriptions.push(
216
+ // If recipes are being added we wait for them before loading the preview
217
+ this.basketsService.recipesWillBeAdded().pipe(skipWhile(added => added), take(1)).pipe(switchMap(() => this.basketsService.waitForBasket), switchMap(basket => this.loadPreview(basket))).subscribe());
218
+ }
219
+ loadPreview(basket) {
220
+ return this.basketsService.basketPreview$.pipe(skipWhile(preview => !preview || preview.length !== basket.recipeInfos.length), map(previewLines => {
221
+ if (this.recipesIds.length === 0) {
222
+ return previewLines;
223
+ }
224
+ return previewLines.filter(line => this.recipesIds.includes(line.id));
225
+ }), tap(preview => {
226
+ this.refreshPreview(preview);
227
+ this.loading.next(false);
228
+ this.cdr.detectChanges();
229
+ }));
220
230
  }
221
231
  removeRecipe(line) {
222
- this.listsService.removeRecipeFromList(line.id, this.eventTrace());
223
- this.listsService.recipesToRemove.pipe(skipWhile(toRemove => toRemove.map(i => i.id).includes(line.id)), take(1)).subscribe(() => {
232
+ this.basketsService.removeRecipesFromBasket([line.id], this.eventTrace());
233
+ this.basketsService.recipeWillBeRemoved(line.id).pipe(skipWhile(willBeRemoved => willBeRemoved), take(1)).subscribe(() => {
224
234
  const recipeIndex = this.recipesIds.findIndex(recipeId => recipeId === line.id);
225
235
  if (recipeIndex >= 0) {
226
236
  this.recipesIds.splice(recipeIndex, 1);
@@ -228,7 +238,7 @@ export class BasketPreviewBlockComponent extends EventTracerComponent {
228
238
  });
229
239
  }
230
240
  updateRecipe(line) {
231
- this.listsService.updateRecipeGuests(line.id, line.count, this.eventTrace()).subscribe();
241
+ this.basketsService.updateRecipesInBasket([line.id], line.count, this.eventTrace());
232
242
  this.guestCountChanged.emit(line.count);
233
243
  }
234
244
  closeOverlay() {
@@ -274,18 +284,18 @@ export class BasketPreviewBlockComponent extends EventTracerComponent {
274
284
  Object.assign(existingLine, line);
275
285
  // Mark basket lines component for check
276
286
  const existingComp = this.lineComponents.find(comp => comp.line.id === line.id);
277
- existingComp.cdr.markForCheck();
287
+ existingComp === null || existingComp === void 0 ? void 0 : existingComp.cdr.markForCheck();
278
288
  // Force reload the basket entries if their quantities or selected items have changed
279
289
  const entries = line.entries.found.sort(e => parseInt(e.id, 10));
280
290
  const hash = entries.map(e => e.attributes['selected-item-id'] + '-' + e.attributes.quantity).join('/');
281
- if (hash !== this.linesHashes[line.id] && existingComp.entriesLines$.value) {
291
+ if (hash !== this.linesHashes[line.id] && (existingComp === null || existingComp === void 0 ? void 0 : existingComp.entriesLines$.value)) {
282
292
  existingComp.buildEntriesLines();
283
293
  this.linesHashes[line.id] = hash;
284
294
  }
285
295
  }
286
296
  else {
287
- // Push the new line to the array
288
- this.lines.push(line);
297
+ // Push the new line to the beggining of the array
298
+ this.lines.unshift(line);
289
299
  }
290
300
  });
291
301
  // Remove deleted lines
@@ -303,7 +313,7 @@ export class BasketPreviewBlockComponent extends EventTracerComponent {
303
313
  }
304
314
  }
305
315
  }
306
- BasketPreviewBlockComponent.ɵfac = function BasketPreviewBlockComponent_Factory(t) { return new (t || BasketPreviewBlockComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.GroceriesListsService), i0.ɵɵdirectiveInject(i2.PointOfSalesService), i0.ɵɵdirectiveInject(i3.ContextService), i0.ɵɵdirectiveInject(i4.BasketsService), i0.ɵɵdirectiveInject(i5.MediaMatcher), i0.ɵɵdirectiveInject(i6.AnalyticsService)); };
316
+ BasketPreviewBlockComponent.ɵfac = function BasketPreviewBlockComponent_Factory(t) { return new (t || BasketPreviewBlockComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.PointOfSalesService), i0.ɵɵdirectiveInject(i2.ContextService), i0.ɵɵdirectiveInject(i3.BasketsService), i0.ɵɵdirectiveInject(i4.MediaMatcher), i0.ɵɵdirectiveInject(i5.AnalyticsService)); };
307
317
  BasketPreviewBlockComponent.ɵcmp = i0.ɵɵdefineComponent({ type: BasketPreviewBlockComponent, selectors: [["ng-miam-basket-preview-block"]], viewQuery: function BasketPreviewBlockComponent_Query(rf, ctx) { if (rf & 1) {
308
318
  i0.ɵɵviewQuery(BasketPreviewLineComponent, true);
309
319
  i0.ɵɵviewQuery(BasketPreviewLineComponent, true);
@@ -311,43 +321,55 @@ BasketPreviewBlockComponent.ɵcmp = i0.ɵɵdefineComponent({ type: BasketPreview
311
321
  var _t;
312
322
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.lineComponents = _t);
313
323
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.basketPreviewRecipeRows = _t);
314
- } }, inputs: { recipeId: "recipeId", showNotice: "showNotice", recipesAlwaysExpanded: "recipesAlwaysExpanded", itemsAlwaysExpanded: "itemsAlwaysExpanded", displayItemsUnitaryPrice: "displayItemsUnitaryPrice", recipesIds: "recipesIds" }, outputs: { statsUpdated: "statsUpdated", guestCountChanged: "guestCountChanged", loading: "loading" }, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 7, vars: 2, consts: function () { var i18n_1; if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
315
- const MSG_EXTERNAL_288551008191807939$$LIB__WEB_COMPONENTS_BASKET_PREVIEW_BASKET_PREVIEW_BLOCK_BASKET_PREVIEW_BLOCK_COMPONENT_TS_____2 = goog.getMsg("Vous n'avez pas encore s\u00E9lectionn\u00E9 de repas.");
316
- i18n_1 = MSG_EXTERNAL_288551008191807939$$LIB__WEB_COMPONENTS_BASKET_PREVIEW_BASKET_PREVIEW_BLOCK_BASKET_PREVIEW_BLOCK_COMPONENT_TS_____2;
324
+ } }, inputs: { recipeId: "recipeId", showNotice: "showNotice", recipesAlwaysExpanded: "recipesAlwaysExpanded", itemsAlwaysExpanded: "itemsAlwaysExpanded", displayItemsUnitaryPrice: "displayItemsUnitaryPrice", recipesIds: "recipesIds" }, outputs: { statsUpdated: "statsUpdated", guestCountChanged: "guestCountChanged", loading: "loading" }, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 7, vars: 2, consts: function () { var i18n_0; if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
325
+ const MSG_EXTERNAL_4502109196981158790$$LIB__WEB_COMPONENTS_BASKET_PREVIEW_BASKET_PREVIEW_BLOCK_BASKET_PREVIEW_BLOCK_COMPONENT_TS____1 = goog.getMsg("Vous avez");
326
+ i18n_0 = MSG_EXTERNAL_4502109196981158790$$LIB__WEB_COMPONENTS_BASKET_PREVIEW_BASKET_PREVIEW_BLOCK_BASKET_PREVIEW_BLOCK_COMPONENT_TS____1;
317
327
  }
318
328
  else {
319
- i18n_1 = $localize `:␟93545d51c80c9c31f09ed7ebf3bd9f3a7a8faac4288551008191807939:Vous n'avez pas encore sélectionné de repas.`;
320
- } var i18n_3; if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
321
- const MSG_EXTERNAL_4236077440019410708$$LIB__WEB_COMPONENTS_BASKET_PREVIEW_BASKET_PREVIEW_BLOCK_BASKET_PREVIEW_BLOCK_COMPONENT_TS______4 = goog.getMsg("Naviguez vers la page d'une recette, puis cliquez sur \"Commander les ingr\u00E9dients\".");
322
- i18n_3 = MSG_EXTERNAL_4236077440019410708$$LIB__WEB_COMPONENTS_BASKET_PREVIEW_BASKET_PREVIEW_BLOCK_BASKET_PREVIEW_BLOCK_COMPONENT_TS______4;
329
+ i18n_0 = $localize `:␟1b003330a38ca49b68845074c5a1d3975e4bb5464502109196981158790:Vous avez`;
330
+ } var i18n_2; if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
331
+ const MSG_EXTERNAL_9113580200567550319$$LIB__WEB_COMPONENTS_BASKET_PREVIEW_BASKET_PREVIEW_BLOCK_BASKET_PREVIEW_BLOCK_COMPONENT_TS____3 = goog.getMsg("repas dans votre panier");
332
+ i18n_2 = MSG_EXTERNAL_9113580200567550319$$LIB__WEB_COMPONENTS_BASKET_PREVIEW_BASKET_PREVIEW_BLOCK_BASKET_PREVIEW_BLOCK_COMPONENT_TS____3;
323
333
  }
324
334
  else {
325
- i18n_3 = $localize `:␟f2dbdf98d72d476636f801e65966528b783d16884236077440019410708:Naviguez vers la page d'une recette, puis cliquez sur "Commander les ingrédients".`;
335
+ i18n_2 = $localize `:␟b925ed1ff7370deb1c9d7c752727b9b3b9d032d29113580200567550319:repas dans votre panier`;
326
336
  } var i18n_5; if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
327
- const MSG_EXTERNAL_5143648071312042408$$LIB__WEB_COMPONENTS_BASKET_PREVIEW_BASKET_PREVIEW_BLOCK_BASKET_PREVIEW_BLOCK_COMPONENT_TS_____6 = goog.getMsg("Chargement du repas...");
328
- i18n_5 = MSG_EXTERNAL_5143648071312042408$$LIB__WEB_COMPONENTS_BASKET_PREVIEW_BASKET_PREVIEW_BLOCK_BASKET_PREVIEW_BLOCK_COMPONENT_TS_____6;
337
+ const MSG_EXTERNAL_288551008191807939$$LIB__WEB_COMPONENTS_BASKET_PREVIEW_BASKET_PREVIEW_BLOCK_BASKET_PREVIEW_BLOCK_COMPONENT_TS____6 = goog.getMsg("Vous n'avez pas encore s\u00E9lectionn\u00E9 de repas.");
338
+ i18n_5 = MSG_EXTERNAL_288551008191807939$$LIB__WEB_COMPONENTS_BASKET_PREVIEW_BASKET_PREVIEW_BLOCK_BASKET_PREVIEW_BLOCK_COMPONENT_TS____6;
329
339
  }
330
340
  else {
331
- i18n_5 = $localize `:␟523c6748d32ce2079498ff4de01387f2d6515c445143648071312042408:Chargement du repas...`;
341
+ i18n_5 = $localize `:␟93545d51c80c9c31f09ed7ebf3bd9f3a7a8faac4288551008191807939:Vous n'avez pas encore sélectionné de repas.`;
332
342
  } var i18n_7; if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
333
- const MSG_EXTERNAL_6011677334812397725$$LIB__WEB_COMPONENTS_BASKET_PREVIEW_BASKET_PREVIEW_BLOCK_BASKET_PREVIEW_BLOCK_COMPONENT_TS_____8 = goog.getMsg("Chargement des repas...");
334
- i18n_7 = MSG_EXTERNAL_6011677334812397725$$LIB__WEB_COMPONENTS_BASKET_PREVIEW_BASKET_PREVIEW_BLOCK_BASKET_PREVIEW_BLOCK_COMPONENT_TS_____8;
343
+ const MSG_EXTERNAL_4236077440019410708$$LIB__WEB_COMPONENTS_BASKET_PREVIEW_BASKET_PREVIEW_BLOCK_BASKET_PREVIEW_BLOCK_COMPONENT_TS_____8 = goog.getMsg("Naviguez vers la page d'une recette, puis cliquez sur \"Commander les ingr\u00E9dients\".");
344
+ i18n_7 = MSG_EXTERNAL_4236077440019410708$$LIB__WEB_COMPONENTS_BASKET_PREVIEW_BASKET_PREVIEW_BLOCK_BASKET_PREVIEW_BLOCK_COMPONENT_TS_____8;
335
345
  }
336
346
  else {
337
- i18n_7 = $localize `:␟424117ab4a286734aad0d346b2d892aebddb59276011677334812397725:Chargement des repas...`;
347
+ i18n_7 = $localize `:␟f2dbdf98d72d476636f801e65966528b783d16884236077440019410708:Naviguez vers la page d'une recette, puis cliquez sur "Commander les ingrédients".`;
338
348
  } var i18n_9; if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
339
- const MSG_EXTERNAL_4182983336835891106$$LIB__WEB_COMPONENTS_BASKET_PREVIEW_BASKET_PREVIEW_BLOCK_BASKET_PREVIEW_BLOCK_COMPONENT_TS__10 = goog.getMsg("D\u00E9sol\u00E9, ce magasin ne permet pas de s\u00E9lectionner des repas.");
340
- i18n_9 = MSG_EXTERNAL_4182983336835891106$$LIB__WEB_COMPONENTS_BASKET_PREVIEW_BASKET_PREVIEW_BLOCK_BASKET_PREVIEW_BLOCK_COMPONENT_TS__10;
349
+ const MSG_EXTERNAL_5143648071312042408$$LIB__WEB_COMPONENTS_BASKET_PREVIEW_BASKET_PREVIEW_BLOCK_BASKET_PREVIEW_BLOCK_COMPONENT_TS_____10 = goog.getMsg("Chargement du repas...");
350
+ i18n_9 = MSG_EXTERNAL_5143648071312042408$$LIB__WEB_COMPONENTS_BASKET_PREVIEW_BASKET_PREVIEW_BLOCK_BASKET_PREVIEW_BLOCK_COMPONENT_TS_____10;
341
351
  }
342
352
  else {
343
- i18n_9 = $localize `:␟df6602bf298f29976aa1fc43e12e25e9a677a51d4182983336835891106:Désolé, ce magasin ne permet pas de sélectionner des repas.`;
353
+ i18n_9 = $localize `:␟523c6748d32ce2079498ff4de01387f2d6515c445143648071312042408:Chargement du repas...`;
344
354
  } var i18n_11; if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
345
- const MSG_EXTERNAL_5055873666849956816$$LIB__WEB_COMPONENTS_BASKET_PREVIEW_BASKET_PREVIEW_BLOCK_BASKET_PREVIEW_BLOCK_COMPONENT_TS__12 = goog.getMsg("Veuillez s\u00E9lectionner un autre magasin");
346
- i18n_11 = MSG_EXTERNAL_5055873666849956816$$LIB__WEB_COMPONENTS_BASKET_PREVIEW_BASKET_PREVIEW_BLOCK_BASKET_PREVIEW_BLOCK_COMPONENT_TS__12;
355
+ const MSG_EXTERNAL_6011677334812397725$$LIB__WEB_COMPONENTS_BASKET_PREVIEW_BASKET_PREVIEW_BLOCK_BASKET_PREVIEW_BLOCK_COMPONENT_TS_____12 = goog.getMsg("Chargement des repas...");
356
+ i18n_11 = MSG_EXTERNAL_6011677334812397725$$LIB__WEB_COMPONENTS_BASKET_PREVIEW_BASKET_PREVIEW_BLOCK_BASKET_PREVIEW_BLOCK_COMPONENT_TS_____12;
357
+ }
358
+ else {
359
+ i18n_11 = $localize `:␟424117ab4a286734aad0d346b2d892aebddb5927␟6011677334812397725:Chargement des repas...`;
360
+ } var i18n_13; if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
361
+ const MSG_EXTERNAL_4182983336835891106$$LIB__WEB_COMPONENTS_BASKET_PREVIEW_BASKET_PREVIEW_BLOCK_BASKET_PREVIEW_BLOCK_COMPONENT_TS__14 = goog.getMsg("D\u00E9sol\u00E9, ce magasin ne permet pas de s\u00E9lectionner des repas.");
362
+ i18n_13 = MSG_EXTERNAL_4182983336835891106$$LIB__WEB_COMPONENTS_BASKET_PREVIEW_BASKET_PREVIEW_BLOCK_BASKET_PREVIEW_BLOCK_COMPONENT_TS__14;
363
+ }
364
+ else {
365
+ i18n_13 = $localize `:␟df6602bf298f29976aa1fc43e12e25e9a677a51d␟4182983336835891106:Désolé, ce magasin ne permet pas de sélectionner des repas.`;
366
+ } var i18n_15; if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
367
+ const MSG_EXTERNAL_5055873666849956816$$LIB__WEB_COMPONENTS_BASKET_PREVIEW_BASKET_PREVIEW_BLOCK_BASKET_PREVIEW_BLOCK_COMPONENT_TS__16 = goog.getMsg("Veuillez s\u00E9lectionner un autre magasin");
368
+ i18n_15 = MSG_EXTERNAL_5055873666849956816$$LIB__WEB_COMPONENTS_BASKET_PREVIEW_BASKET_PREVIEW_BLOCK_BASKET_PREVIEW_BLOCK_COMPONENT_TS__16;
347
369
  }
348
370
  else {
349
- i18n_11 = $localize `:␟bbc408c854684447d02f0dd5b027598d8d31ab18␟5055873666849956816:Veuillez sélectionner un autre magasin`;
350
- } return [[1, "miam-basket-preview-block__anchor"], ["previewBlockTop", ""], ["class", "miam-basket-preview-block", 4, "ngIf", "ngIfElse"], ["cors", ""], ["noPos", ""], [1, "miam-basket-preview-block"], [4, "ngIf", "ngIfElse"], ["class", "miam-basket-preview-block__lines", 4, "ngIf"], ["class", "miam-basket-preview-block__lines__loader", 4, "ngIf"], [1, "miam-basket-preview-block__lines"], [3, "line", "blockStates", "recipesAlwaysExpanded", "itemsAlwaysExpanded", "displayItemsUnitaryPrice", "originTrace", "ngStyle", "removed", "countChanged", "replaceItem", 4, "ngFor", "ngForOf"], [3, "line", "originTrace", "selected", 4, "ngIf"], ["class", "miam-basket-preview-block__lines__not-found", 4, "ngIf"], [3, "line", "blockStates", "recipesAlwaysExpanded", "itemsAlwaysExpanded", "displayItemsUnitaryPrice", "originTrace", "ngStyle", "removed", "countChanged", "replaceItem"], [3, "line", "originTrace", "selected"], [1, "miam-basket-preview-block__lines__not-found"], i18n_1, [4, "ngIf"], i18n_3, [1, "miam-basket-preview-block__lines__loader"], i18n_5, i18n_7, [1, "miam-basket-preview-block__noPos"], i18n_9, i18n_11]; }, template: function BasketPreviewBlockComponent_Template(rf, ctx) { if (rf & 1) {
371
+ i18n_15 = $localize `:␟bbc408c854684447d02f0dd5b027598d8d31ab18␟5055873666849956816:Veuillez sélectionner un autre magasin`;
372
+ } return [[1, "miam-basket-preview-block__anchor"], ["previewBlockTop", ""], ["class", "miam-basket-preview-block", 4, "ngIf", "ngIfElse"], ["cors", ""], ["noPos", ""], [1, "miam-basket-preview-block"], [4, "ngIf", "ngIfElse"], ["class", "miam-basket-preview-block__title miam-ds-text weight-xxl size-l", 4, "ngIf"], [1, "miam-basket-preview-block__lines"], [3, "line", "blockStates", "recipesAlwaysExpanded", "itemsAlwaysExpanded", "displayItemsUnitaryPrice", "originTrace", "ngStyle", "removed", "countChanged", "replaceItem", 4, "ngFor", "ngForOf"], [3, "basketEntry", "originTrace", "selected", 4, "ngIf"], ["class", "miam-basket-preview-block__lines__not-found", 4, "ngIf"], ["class", "miam-basket-preview-block__lines__loader", 4, "ngIf"], [1, "miam-basket-preview-block__title", "miam-ds-text", "weight-xxl", "size-l"], i18n_0, [1, "number"], i18n_2, [3, "line", "blockStates", "recipesAlwaysExpanded", "itemsAlwaysExpanded", "displayItemsUnitaryPrice", "originTrace", "ngStyle", "removed", "countChanged", "replaceItem"], [3, "basketEntry", "originTrace", "selected"], [1, "miam-basket-preview-block__lines__not-found"], i18n_5, [4, "ngIf"], i18n_7, [1, "miam-basket-preview-block__lines__loader"], i18n_9, i18n_11, [1, "miam-basket-preview-block__noPos"], i18n_13, i18n_15]; }, template: function BasketPreviewBlockComponent_Template(rf, ctx) { if (rf & 1) {
351
373
  i0.ɵɵelement(0, "div", 0, 1);
352
374
  i0.ɵɵtemplate(2, BasketPreviewBlockComponent_div_2_Template, 3, 4, "div", 2);
353
375
  i0.ɵɵtemplate(3, BasketPreviewBlockComponent_ng_template_3_Template, 1, 0, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
@@ -356,7 +378,7 @@ BasketPreviewBlockComponent.ɵcmp = i0.ɵɵdefineComponent({ type: BasketPreview
356
378
  const _r2 = i0.ɵɵreference(4);
357
379
  i0.ɵɵadvance(2);
358
380
  i0.ɵɵproperty("ngIf", !ctx.corsIssues)("ngIfElse", _r2);
359
- } }, directives: [i7.NgIf, i7.NgForOf, i8.BasketPreviewLineComponent, i7.NgStyle, i9.ReplaceItemComponent, i10.LoaderComponent, i11.CORSOverlayComponent], pipes: [i7.AsyncPipe], styles: [":host ::-webkit-scrollbar{cursor:-webkit-grab;height:7px;width:5px}:host ::-webkit-scrollbar-track{background:var(--m-color-grey)}:host ::-webkit-scrollbar-thumb{background:var(--m-color-primary);border-radius:5px}.miam-basket-preview-block{height:100%;position:relative}.miam-basket-preview-block .miam-basket-preview-block__recipe__link{-webkit-tap-highlight-color:transparent;color:var(--m-color-grey-text);cursor:pointer;position:absolute;right:300px;text-decoration:underline;top:60px;transition:var(--m-default-transition)}@media (min-width:1022px){.miam-basket-preview-block .miam-basket-preview-block__recipe__link:hover{color:var(--m-color-primary)}}.miam-basket-preview-block .miam-basket-preview-block__header{display:flex;justify-content:space-between;margin-bottom:0;padding-bottom:10px}.miam-basket-preview-block .miam-basket-preview-block__header .miam-basket-preview-block__header__actions{align-items:center;display:flex}.miam-basket-preview-block .miam-basket-preview-block__header .miam-basket-preview-block__header__actions .miam-basket-preview-block__header__empty-basket{margin-right:20px}.miam-basket-preview-block .miam-basket-preview-block__header .miam-basket-preview-block__header__actions .miam-basket-preview-block__header__empty-basket .fa-trash-alt{margin-right:8px;margin-top:-1px;width:13px}.miam-basket-preview-block .miam-basket-preview-block__header .miam-basket-preview-block__header__actions .miam-basket-preview-block__header__chevron{cursor:pointer;transition-duration:.5s}.miam-basket-preview-block .miam-basket-preview-block__header .miam-basket-preview-block__header__actions .miam-basket-preview-block__header__chevron svg{width:18px}.miam-basket-preview-block .miam-basket-preview-block__header .miam-basket-preview-block__header__actions .miam-basket-preview-block__chevron__down{transform:rotate(-180deg)}.miam-basket-preview-block .miam-basket-preview-block__lines{transition:height .3s}.miam-basket-preview-block .miam-basket-preview-block__lines .miam-basket-preview-block__lines__not-found{margin-left:20px;margin-top:15px}.miam-basket-preview-block .miam-basket-preview-block__lines .miam-basket-preview-block__lines__loader,.miam-basket-preview-block .miam-basket-preview-block__lines__loader{align-items:center;display:flex;flex-direction:column;justify-content:center}.miam-basket-preview-block .miam-basket-preview-block__lines__loader{padding:10px}.miam-basket-preview-block .miam-basket-preview-block__noPos{font-size:17px}"], encapsulation: 2, changeDetection: 0 });
381
+ } }, directives: [i6.NgIf, i6.NgForOf, i7.BasketPreviewLineComponent, i6.NgStyle, i8.ReplaceItemComponent, i9.LoaderComponent, i10.CORSOverlayComponent], pipes: [i6.AsyncPipe], styles: [":host ::-webkit-scrollbar{cursor:-webkit-grab;height:7px;width:5px}:host ::-webkit-scrollbar-track{background:var(--m-color-grey)}:host ::-webkit-scrollbar-thumb{background:var(--m-color-primary);border-radius:5px}.miam-basket-preview-block{height:100%;position:relative}.miam-basket-preview-block .miam-basket-preview-block__title{padding:8px 0 24px}.miam-basket-preview-block .miam-basket-preview-block__title span.number{margin:0 6px}.miam-basket-preview-block .miam-basket-preview-block__recipe__link{-webkit-tap-highlight-color:transparent;color:var(--m-color-grey-text);cursor:pointer;position:absolute;right:300px;text-decoration:underline;top:60px;transition:var(--m-default-transition)}@media (min-width:1022px){.miam-basket-preview-block .miam-basket-preview-block__recipe__link:hover{color:var(--m-color-primary)}}.miam-basket-preview-block .miam-basket-preview-block__header{display:flex;justify-content:space-between;margin-bottom:0;padding-bottom:10px}.miam-basket-preview-block .miam-basket-preview-block__header .miam-basket-preview-block__header__actions{align-items:center;display:flex}.miam-basket-preview-block .miam-basket-preview-block__header .miam-basket-preview-block__header__actions .miam-basket-preview-block__header__empty-basket{margin-right:20px}.miam-basket-preview-block .miam-basket-preview-block__header .miam-basket-preview-block__header__actions .miam-basket-preview-block__header__empty-basket .fa-trash-alt{margin-right:8px;margin-top:-1px;width:13px}.miam-basket-preview-block .miam-basket-preview-block__header .miam-basket-preview-block__header__actions .miam-basket-preview-block__header__chevron{cursor:pointer;transition-duration:.5s}.miam-basket-preview-block .miam-basket-preview-block__header .miam-basket-preview-block__header__actions .miam-basket-preview-block__header__chevron svg{width:18px}.miam-basket-preview-block .miam-basket-preview-block__header .miam-basket-preview-block__header__actions .miam-basket-preview-block__chevron__down{transform:rotate(-180deg)}.miam-basket-preview-block .miam-basket-preview-block__lines{display:flex;flex-direction:column;gap:8px;transition:height .3s}.miam-basket-preview-block .miam-basket-preview-block__lines .miam-basket-preview-block__lines__not-found{margin-left:20px;margin-top:15px}.miam-basket-preview-block .miam-basket-preview-block__lines .miam-basket-preview-block__lines__loader,.miam-basket-preview-block .miam-basket-preview-block__lines__loader{align-items:center;display:flex;flex-direction:column;justify-content:center}.miam-basket-preview-block .miam-basket-preview-block__lines__loader{padding:10px}.miam-basket-preview-block .miam-basket-preview-block__noPos{font-size:17px}"], encapsulation: 2, changeDetection: 0 });
360
382
  /*@__PURE__*/ (function () { i0.ɵsetClassMetadata(BasketPreviewBlockComponent, [{
361
383
  type: Component,
362
384
  args: [{
@@ -366,7 +388,7 @@ BasketPreviewBlockComponent.ɵcmp = i0.ɵɵdefineComponent({ type: BasketPreview
366
388
  encapsulation: ViewEncapsulation.None,
367
389
  changeDetection: ChangeDetectionStrategy.OnPush
368
390
  }]
369
- }], function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.GroceriesListsService }, { type: i2.PointOfSalesService }, { type: i3.ContextService }, { type: i4.BasketsService }, { type: i5.MediaMatcher }, { type: i6.AnalyticsService }]; }, { recipeId: [{
391
+ }], function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.PointOfSalesService }, { type: i2.ContextService }, { type: i3.BasketsService }, { type: i4.MediaMatcher }, { type: i5.AnalyticsService }]; }, { recipeId: [{
370
392
  type: Input
371
393
  }], showNotice: [{
372
394
  type: Input
@@ -391,4 +413,4 @@ BasketPreviewBlockComponent.ɵcmp = i0.ɵɵdefineComponent({ type: BasketPreview
391
413
  type: ViewChildren,
392
414
  args: [BasketPreviewLineComponent]
393
415
  }] }); })();
394
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFza2V0LXByZXZpZXctYmxvY2suY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fd2ViLWNvbXBvbmVudHMvYmFza2V0LXByZXZpZXcvYmFza2V0LXByZXZpZXctYmxvY2svYmFza2V0LXByZXZpZXctYmxvY2suY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy9iYXNrZXQtcHJldmlldy9iYXNrZXQtcHJldmlldy1ibG9jay9iYXNrZXQtcHJldmlldy1ibG9jay5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBYSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUMvSCxZQUFZLEVBQTJDLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsY0FBYyxFQUFlLE1BQU0sb0NBQW9DLENBQUM7QUFFakYsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLE1BQU0sTUFBTSxrQkFBa0IsQ0FBQztBQUN0QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNsRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNoRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pELE9BQU8s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LFlBQVk7a0JBQXJCLE1BQU07WUFDRyxpQkFBaUI7a0JBQTFCLE1BQU07WUFDRyxPQUFPO2tCQUFoQixNQUFNO1lBRW1DLGNBQWM7a0JBQXZELFlBQVk7bUJBQUMsMEJBQTBCO1lBQ0UsdUJBQXVCO2tCQUFoRSxZQUFZO21CQUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT25EZXN0cm95LCBWaWV3RW5jYXBzdWxhdGlvbiwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBPdXRwdXQsIEV2ZW50RW1pdHRlcixcbiAgVmlld0NoaWxkcmVuLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIEFmdGVyVmlld0luaXQsIFF1ZXJ5TGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEdyb2Nlcmllc0xpc3RzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19zZXJ2aWNlcy9ncm9jZXJpZXMtbGlzdHMuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNrZXRzU2VydmljZSwgQmFza2V0U3RhdHMgfSBmcm9tICcuLi8uLi8uLi9fc2VydmljZXMvYmFza2V0cy5zZXJ2aWNlJztcbmltcG9ydCB7IEJhc2tldFByZXZpZXdMaW5lIH0gZnJvbSAnLi4vLi4vLi4vX21vZGVscy9iYXNrZXQtcHJldmlldy1saW5lJztcbmltcG9ydCB7IHNraXBXaGlsZSwgdGFwLCBtYXAsIHN3aXRjaE1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCByZW1vdmUgZnJvbSAnbG9kYXNoLWVzL3JlbW92ZSc7XG5pbXBvcnQgeyBCYXNrZXRQcmV2aWV3TGluZUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2tldC1wcmV2aWV3LWxpbmUvYmFza2V0LXByZXZpZXctbGluZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9pbnRPZlNhbGVzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19zZXJ2aWNlcy9wb2ludC1vZi1zYWxlcy5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX3NlcnZpY2VzL2NvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSAnLi4vLi4vLi4vX3R5cGVzL2ljb24uZW51bSc7XG5pbXBvcnQgeyBNZWRpYU1hdGNoZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UsIEN1c3RvbVByb3BlcnRpZXMgfSBmcm9tICcuLi8uLi8uLi9fc2VydmljZXMvYW5hbHl0aWNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgRXZlbnRUcmFjZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9fY29tcG9uZW50cy9hYnN0cmFjdHMvZXZlbnQtdHJhY2VyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nLW1pYW0tYmFza2V0LXByZXZpZXctYmxvY2snLFxuICB0ZW1wbGF0ZVVybDogJy4vYmFza2V0LXByZXZpZXctYmxvY2suY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9iYXNrZXQtcHJldmlldy1ibG9jay5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBCYXNrZXRQcmV2aWV3QmxvY2tDb21wb25lbnQgZXh0ZW5kcyBFdmVudFRyYWNlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSByZWNpcGVJZDogc3RyaW5nO1xuICBASW5wdXQoKSBzaG93Tm90aWNlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJlY2lwZXNBbHdheXNFeHBhbmRlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBpdGVtc0Fsd2F5c0V4cGFuZGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc3BsYXlJdGVtc1VuaXRhcnlQcmljZSA9IGZhbHNlO1xuICBASW5wdXQoKSByZWNpcGVzSWRzID0gW107XG4gIEBPdXRwdXQoKSBzdGF0c1VwZGF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEJhc2tldFN0YXRzPigpO1xuICBAT3V0cHV0KCkgZ3Vlc3RDb3VudENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgQE91dHB1dCgpIGxvYWRpbmcgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRydWUpO1xuXG4gIEBWaWV3Q2hpbGRyZW4oQmFza2V0UHJldmlld0xpbmVDb21wb25lbnQpIGxpbmVDb21wb25lbnRzOiBCYXNrZXRQcmV2aWV3TGluZUNvbXBvbmVudFtdO1xuICBAVmlld0NoaWxkcmVuKEJhc2tldFByZXZpZXdMaW5lQ29tcG9uZW50KSBiYXNrZXRQcmV2aWV3UmVjaXBlUm93czogUXVlcnlMaXN0PEJhc2tldFByZXZpZXdMaW5lQ29tcG9uZW50PjtcblxuICBwdWJsaWMgc2hvd0xpbmVzID0gdHJ1ZTtcbiAgcHVibGljIGxpbmVzOiBCYXNrZXRQcmV2aWV3TGluZVtdO1xuICBjb3JzSXNzdWVzID0gZmFsc2U7XG4gIGljb24gPSBJY29uO1xuICBpc01vYmlsZSA9IGZhbHNlO1xuXG4gIGJsb2NrU3RhdGVzOiBCZWhhdmlvclN1YmplY3Q8eyBjdXJyZW50T3BlbkxpbmU6IHN0cmluZzsgb3ZlcmxheU9wZW46IGJvb2xlYW47IGxpbmVDb21wb25lbnQ6IEJhc2tldFByZXZpZXdMaW5lQ29tcG9uZW50IH0+O1xuXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9ucyA9IFtdO1xuICBwcml2YXRlIGxpbmVzSGFzaGVzID0ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHB1YmxpYyBsaXN0c1NlcnZpY2U6IEdyb2Nlcmllc0xpc3RzU2VydmljZSxcbiAgICBwdWJsaWMgcG9zU2VydmljZTogUG9pbnRPZlNhbGVzU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRleHRTZXJ2aWNlOiBDb250ZXh0U2VydmljZSxcbiAgICBwdWJsaWMgYmFza2V0c1NlcnZpY2U6IEJhc2tldHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgbWVkaWFNYXRjaGVyOiBNZWRpYU1hdGNoZXIsXG4gICAgcHJvdGVjdGVkIGFuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljc1NlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoYW5hbHl0aWNzU2VydmljZSk7XG4gICAgdGhpcy5pc01vYmlsZSA9IHRoaXMubWVkaWFNYXRjaGVyLm1hdGNoTWVkaWEoJyhtYXgtd2lkdGg6IDEwMjNweCknKS5tYXRjaGVzO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5ibG9ja1N0YXRlcyA9IG5ldyBCZWhhdmlvclN1YmplY3QoeyBjdXJyZW50T3BlbkxpbmU6IG51bGwsIG92ZXJsYXlPcGVuOiBmYWxzZSwgbGluZUNvbXBvbmVudDogbnVsbCB9KTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBbXG4gICAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLmdldENPUlNJc3N1ZXNTdGF0ZSgpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICB0aGlzLmNvcnNJc3N1ZXMgPSByZXM7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pLFxuICAgICAgdGhpcy5ibG9ja1N0YXRlcy5zdWJzY3JpYmUoKCkgPT4gdGhpcy5oYW5kZWxibG9ja1N0YXRlKCkpLFxuICAgICAgdGhpcy5saXN0c1NlcnZpY2UudGFrZUZpcnN0TGlzdCgpLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChsaXN0ID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5iYXNrZXRzU2VydmljZS5iYXNrZXRQcmV2aWV3JC5waXBlKFxuICAgICAgICAgICAgLy8gc2tpcFdoaWxlKHByZXZpZXcgPT4gIXByZXZpZXcgfHwgcHJldmlldy5sZW5ndGggPT09IDAgfHwgcHJldmlldy5sZW5ndGggIT09IGxpc3QucmVjaXBlSW5mb3MubGVuZ3RoKSxcbiAgICAgICAgICAgIHNraXBXaGlsZShwcmV2aWV3ID0+ICFwcmV2aWV3IHx8IHByZXZpZXcubGVuZ3RoICE9PSBsaXN0LnJlY2lwZUluZm9zLmxlbmd0aCksXG4gICAgICAgICAgICBtYXAocHJldmlld0xpbmVzID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMucmVjaXBlc0lkcy5sZW5ndGggPT09IDApIHsgcmV0dXJuIHByZXZpZXdMaW5lczsgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBwcmV2aWV3TGluZXMuZmlsdGVyKGxpbmUgPT4gdGhpcy5yZWNpcGVzSWRzLmluY2x1ZGVzKGxpbmUuaWQpKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFwKHByZXZpZXcgPT4gdGhpcy5yZWZyZXNoUHJldmlldyhbLi4ucHJldmlld10ucmV2ZXJzZSgpKSlcbiAgICAgICAgICApO1xuICAgICAgICB9KVxuICAgICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmcubmV4dChmYWxzZSk7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pLFxuICAgICAgdGhpcy5iYXNrZXRzU2VydmljZS5iYXNrZXRTdGF0cyQucGlwZShcbiAgICAgICAgc2tpcFdoaWxlKHN0YXRzID0+ICFzdGF0cyksXG4gICAgICAgIHRhcChzdGF0cyA9PiB0aGlzLnN0YXRzVXBkYXRlZC5lbWl0KHN0YXRzKSlcbiAgICAgICkuc3Vic2NyaWJlKCksXG4gICAgICB0aGlzLnBvc1NlcnZpY2UuaXNQb3NWYWxpZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pXG4gICAgXTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoT2JqZWN0LmtleXMoY2hhbmdlcykuaW5jbHVkZXMoJ3JlY2lwZUlkJykpIHtcbiAgICAgIHRoaXMubG9hZGluZy5uZXh0KHRydWUpO1xuICAgIH1cbiAgICB0aGlzLnBhZ2V2aWV3KCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKXtcbiAgICBpZiAodGhpcy5iYXNrZXRQcmV2aWV3UmVjaXBlUm93cyAmJiB0aGlzLnJlY2lwZUlkICl7XG4gICAgICB0aGlzLmZpbmRBbmRGb2N1c0N1cnJlbnRSZWNpcGUoIHRoaXMuYmFza2V0UHJldmlld1JlY2lwZVJvd3MudG9BcnJheSgpKTtcbiAgICB9XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmJhc2tldFByZXZpZXdSZWNpcGVSb3dzLmNoYW5nZXMuc3Vic2NyaWJlKChicHJyczogQmFza2V0UHJldmlld0xpbmVDb21wb25lbnRbXSkgPT4ge1xuICAgICAgICB0aGlzLmZpbmRBbmRGb2N1c0N1cnJlbnRSZWNpcGUoYnBycnMpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHN1YjogU3Vic2NyaXB0aW9uKSA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBjdXJyZW50UGF0aCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnYmFza2V0LXByZXZpZXcnO1xuICB9XG5cbiAgdG9nZ2xlTGluZXMoKSB7XG4gICAgdGhpcy5zaG93TGluZXMgPSAhdGhpcy5zaG93TGluZXM7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcmVtb3ZlUmVjaXBlKGxpbmU6IEJhc2tldFByZXZpZXdMaW5lKSB7XG4gICAgdGhpcy5saXN0c1NlcnZpY2UucmVtb3ZlUmVjaXBlRnJvbUxpc3QobGluZS5pZCwgdGhpcy5ldmVudFRyYWNlKCkpO1xuICAgIHRoaXMubGlzdHNTZXJ2aWNlLnJlY2lwZXNUb1JlbW92ZS5waXBlKFxuICAgICAgc2tpcFdoaWxlKHRvUmVtb3ZlID0+IHRvUmVtb3ZlLm1hcChpID0+IGkuaWQpLmluY2x1ZGVzKGxpbmUuaWQpKSxcbiAgICAgIHRha2UoMSlcbiAgICApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBjb25zdCByZWNpcGVJbmRleCA9IHRoaXMucmVjaXBlc0lkcy5maW5kSW5kZXgocmVjaXBlSWQgPT4gcmVjaXBlSWQgPT09IGxpbmUuaWQpO1xuICAgICAgaWYgKHJlY2lwZUluZGV4ID49IDApIHtcbiAgICAgICAgdGhpcy5yZWNpcGVzSWRzLnNwbGljZShyZWNpcGVJbmRleCwgMSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVSZWNpcGUobGluZTogQmFza2V0UHJldmlld0xpbmUpIHtcbiAgICB0aGlzLmxpc3RzU2VydmljZS51cGRhdGVSZWNpcGVHdWVzdHMobGluZS5pZCwgbGluZS5jb3VudCwgdGhpcy5ldmVudFRyYWNlKCkpLnN1YnNjcmliZSgpO1xuICAgIHRoaXMuZ3Vlc3RDb3VudENoYW5nZWQuZW1pdChsaW5lLmNvdW50KTtcbiAgfVxuXG4gIGNsb3NlT3ZlcmxheSgpIHtcbiAgICBpZiAodGhpcy5ibG9ja1N0YXRlcy5nZXRWYWx1ZSgpICYmIHRoaXMuYmxvY2tTdGF0ZXMuZ2V0VmFsdWUoKS5saW5lQ29tcG9uZW50KSB7XG4gICAgICB0aGlzLmJsb2NrU3RhdGVzLnZhbHVlLmxpbmVDb21wb25lbnQucHJvZHVjdENob3NlbigpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRlbGJsb2NrU3RhdGUoKSB7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgc2Nyb2xsdG9wKGVsZW1lbnQ6IEVsZW1lbnQpe1xuICAgIC8vIHNjcm9sbCB0b3AgYmFzZSBvbiBtb2RhbCBjb250YWluZXJcbiAgICBpZiAodGhpcy5pc01vYmlsZSkge1xuICAgICAgY29uc3QgbW9kYWxDb250YWluZXIgPSAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbWlhbS13cmFwcGVyLXByZXZpZXcnKVswXTtcbiAgICAgIGlmIChtb2RhbENvbnRhaW5lcikge1xuICAgICAgICBtb2RhbENvbnRhaW5lci5zY3JvbGxUb3AgPSAwO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBlbGVtZW50LnNjcm9sbEludG9WaWV3KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gc2Nyb2xsIGJhc2Ugb24gZ2xvYmFsIHdpbmRvd1xuICAgIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjdXJyZW50UHJvcHMoKTogQ3VzdG9tUHJvcGVydGllcyB7XG4gICAgaWYgKHRoaXMucmVjaXBlSWQpIHsgcmV0dXJuIHsgcmVjaXBlX2lkOiB0aGlzLnJlY2lwZUlkIH07IH1cbiAgICByZXR1cm4ge307XG4gIH1cblxuICBwcml2YXRlIHJlZnJlc2hQcmV2aWV3KG5ld0xpbmVzOiBCYXNrZXRQcmV2aWV3TGluZVtdKSB7XG4gICAgaWYgKCF0aGlzLmxpbmVzKSB7XG4gICAgICAvLyBGaXJzdCBsb2FkXG4gICAgICB0aGlzLmxpbmVzID0gbmV3TGluZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG5ld0xpbmVzSWRzID0gW107XG4gICAgICBuZXdMaW5lcy5mb3JFYWNoKChsaW5lOiBCYXNrZXRQcmV2aWV3TGluZSkgPT4ge1xuICAgICAgICBuZXdMaW5lc0lkcy5wdXNoKGxpbmUuaWQpO1xuICAgICAgICBjb25zdCBleGlzdGluZ0xpbmUgPSB0aGlzLmxpbmVzLmZpbmQobCA9PiBsLmlkID09PSBsaW5lLmlkKTtcbiAgICAgICAgaWYgKGV4aXN0aW5nTGluZSkge1xuICAgICAgICAgIC8vIFVwZGF0ZSBleGlzdGluZyBvYmplY3Qgd2l0aCBpdHMgbmV3IHZhbHVlc1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24oZXhpc3RpbmdMaW5lLCBsaW5lKTtcblxuICAgICAgICAgIC8vIE1hcmsgYmFza2V0IGxpbmVzIGNvbXBvbmVudCBmb3IgY2hlY2tcbiAgICAgICAgICBjb25zdCBleGlzdGluZ0NvbXAgPSB0aGlzLmxpbmVDb21wb25lbnRzLmZpbmQoY29tcCA9PiBjb21wLmxpbmUuaWQgPT09IGxpbmUuaWQpO1xuICAgICAgICAgIGV4aXN0aW5nQ29tcC5jZHIubWFya0ZvckNoZWNrKCk7XG5cbiAgICAgICAgICAvLyBGb3JjZSByZWxvYWQgdGhlIGJhc2tldCBlbnRyaWVzIGlmIHRoZWlyIHF1YW50aXRpZXMgb3Igc2VsZWN0ZWQgaXRlbXMgaGF2ZSBjaGFuZ2VkXG4gICAgICAgICAgY29uc3QgZW50cmllcyA9IGxpbmUuZW50cmllcy5mb3VuZC5zb3J0KGUgPT4gcGFyc2VJbnQoZS5pZCwgMTApKTtcbiAgICAgICAgICBjb25zdCBoYXNoID0gZW50cmllcy5tYXAoZSA9PiBlLmF0dHJpYnV0ZXNbJ3NlbGVjdGVkLWl0ZW0taWQnXSArICctJyArIGUuYXR0cmlidXRlcy5xdWFudGl0eSkuam9pbignLycpO1xuICAgICAgICAgIGlmIChoYXNoICE9PSB0aGlzLmxpbmVzSGFzaGVzW2xpbmUuaWRdICYmIGV4aXN0aW5nQ29tcC5lbnRyaWVzTGluZXMkLnZhbHVlKSB7XG4gICAgICAgICAgICBleGlzdGluZ0NvbXAuYnVpbGRFbnRyaWVzTGluZXMoKTtcbiAgICAgICAgICAgIHRoaXMubGluZXNIYXNoZXNbbGluZS5pZF0gPSBoYXNoO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBQdXNoIHRoZSBuZXcgbGluZSB0byB0aGUgYXJyYXlcbiAgICAgICAgICB0aGlzLmxpbmVzLnB1c2gobGluZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgLy8gUmVtb3ZlIGRlbGV0ZWQgbGluZXNcbiAgICAgIHJlbW92ZSh0aGlzLmxpbmVzLCBsID0+ICFuZXdMaW5lc0lkcy5pbmNsdWRlcyhsLmlkKSk7XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZEFuZEZvY3VzQ3VycmVudFJlY2lwZShyZWNpcGVSb3dzOiBCYXNrZXRQcmV2aWV3TGluZUNvbXBvbmVudFtdKXtcblxuICAgIGNvbnN0IHJlY2lwZVJvd0VsZW1lbnQgPSByZWNpcGVSb3dzLmZpbmQoIGJwcnIgPT4gYnByci5saW5lLmlkID09PSB0aGlzLnJlY2lwZUlkKTtcbiAgICBpZiAocmVjaXBlUm93RWxlbWVudCkge1xuICAgICAgcmVjaXBlUm93RWxlbWVudC5leHBhbmRlZCA9IHRydWU7XG4gICAgICByZWNpcGVSb3dFbGVtZW50LmJ1aWxkRW50cmllc0xpbmVzKCk7XG4gICAgICByZWNpcGVSb3dFbGVtZW50LmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAocmVjaXBlUm93RWxlbWVudC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgRWxlbWVudCkuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgI3ByZXZpZXdCbG9ja1RvcCBjbGFzcz1cIm1pYW0tYmFza2V0LXByZXZpZXctYmxvY2tfX2FuY2hvclwiPjwvZGl2PlxuPGRpdiAqbmdJZj0nIWNvcnNJc3N1ZXMgZWxzZSBjb3JzJyBjbGFzcz1cIm1pYW0tYmFza2V0LXByZXZpZXctYmxvY2tcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihwb3NTZXJ2aWNlLmlzUG9zVmFsaWQoKSB8IGFzeW5jKSBlbHNlIG5vUG9zXCI+XG4gIFxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLWJhc2tldC1wcmV2aWV3LWJsb2NrX19saW5lc1wiICpuZ0lmPVwic2hvd0xpbmVzXCI+XG4gICAgICAgIDxuZy1taWFtLWJhc2tldC1wcmV2aWV3LWxpbmVcbiAgICAgICAgKm5nRm9yPVwibGV0IGxpbmUgb2YgbGluZXNcIlxuICAgICAgICBbbGluZV09XCJsaW5lXCJcbiAgICAgICAgW2Jsb2NrU3RhdGVzXT1cImJsb2NrU3RhdGVzXCJcbiAgICAgICAgW3JlY2lwZXNBbHdheXNFeHBhbmRlZF09XCJyZWNpcGVzQWx3YXlzRXhwYW5kZWRcIlxuICAgICAgICBbaXRlbXNBbHdheXNFeHBhbmRlZF09XCJpdGVtc0Fsd2F5c0V4cGFuZGVkXCJcbiAgICAgICAgW2Rpc3BsYXlJdGVtc1VuaXRhcnlQcmljZV09XCJkaXNwbGF5SXRlbXNVbml0YXJ5UHJpY2VcIlxuICAgICAgICBbb3JpZ2luVHJhY2VdPVwiZXZlbnRUcmFjZSgpXCJcbiAgICAgICAgKHJlbW92ZWQpPVwicmVtb3ZlUmVjaXBlKCRldmVudClcIlxuICAgICAgICAoY291bnRDaGFuZ2VkKT1cInVwZGF0ZVJlY2lwZSgkZXZlbnQpXCJcbiAgICAgICAgKHJlcGxhY2VJdGVtKT0nc2Nyb2xsdG9wKHByZXZpZXdCbG9ja1RvcCknXG4gICAgICAgIFtuZ1N0eWxlXT1cInsnZGlzcGxheSc6IGJsb2NrU3RhdGVzPy52YWx1ZT8ub3ZlcmxheU9wZW4gPyAnbm9uZScgOiAnYmxvY2snfSBcIlxuICAgICAgPjwvbmctbWlhbS1iYXNrZXQtcHJldmlldy1saW5lPlxuICAgICAgPG5nLW1pYW0tcmVwbGFjZS1pdGVtICpuZ0lmPVwiIGJsb2NrU3RhdGVzPy52YWx1ZT8ub3ZlcmxheU9wZW4gXCIgXG4gICAgICAgIFtsaW5lXT1cImJsb2NrU3RhdGVzPy52YWx1ZT8ubGluZUNvbXBvbmVudC5saW5lXCJcbiAgICAgICAgW29yaWdpblRyYWNlXT1cImV2ZW50VHJhY2UoKVwiXG4gICAgICAgIChzZWxlY3RlZCk9XCJibG9ja1N0YXRlcz8udmFsdWU/LmxpbmVDb21wb25lbnQucHJvZHVjdENob3NlbigkZXZlbnQpXCI+XG4gICAgICA8L25nLW1pYW0tcmVwbGFjZS1pdGVtPlxuICAgICAgPGRpdiAqbmdJZj1cIiEobG9hZGluZyB8IGFzeW5jKSAmJiAoIWxpbmVzIHx8IGxpbmVzLmxlbmd0aCA9PT0gMClcIiBjbGFzcz1cIm1pYW0tYmFza2V0LXByZXZpZXctYmxvY2tfX2xpbmVzX19ub3QtZm91bmRcIj5cbiAgICAgICAgPHA+PGIgaTE4bj5Wb3VzIG4nYXZleiBwYXMgZW5jb3JlIHPDqWxlY3Rpb25uw6kgZGUgcmVwYXMuPC9iPjwvcD5cbiAgICAgICAgPHAgaTE4biAqbmdJZj1cInNob3dOb3RpY2VcIj5OYXZpZ3VleiB2ZXJzIGxhIHBhZ2UgZCd1bmUgcmVjZXR0ZSwgcHVpcyBjbGlxdWV6IHN1ciBcIkNvbW1hbmRlciBsZXMgaW5ncsOpZGllbnRzXCIuPC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIFxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLWJhc2tldC1wcmV2aWV3LWJsb2NrX19saW5lc19fbG9hZGVyXCIgKm5nSWY9XCIobG9hZGluZyB8IGFzeW5jKVwiPlxuICAgICAgPG5nLW1pYW0tbG9hZGVyPjwvbmctbWlhbS1sb2FkZXI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8c3BhbiBpMThuICpuZ0lmPVwicmVjaXBlSWRcIj5DaGFyZ2VtZW50IGR1IHJlcGFzLi4uPC9zcGFuPlxuICAgICAgICA8c3BhbiBpMThuICpuZ0lmPVwiIXJlY2lwZUlkXCI+Q2hhcmdlbWVudCBkZXMgcmVwYXMuLi48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjY29ycz5cbjxuZy1taWFtLWNvcnMtb3ZlcmxheT48L25nLW1pYW0tY29ycy1vdmVybGF5PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjbm9Qb3M+XG4gIDxkaXYgY2xhc3M9XCJtaWFtLWJhc2tldC1wcmV2aWV3LWJsb2NrX19ub1Bvc1wiPlxuICAgIDxzcGFuIGkxOG4+RMOpc29sw6ksIGNlIG1hZ2FzaW4gbmUgcGVybWV0IHBhcyBkZSBzw6lsZWN0aW9ubmVyIGRlcyByZXBhcy48L3NwYW4+XG4gICAgPGJyPlxuICAgIDxzcGFuIGkxOG4+VmV1aWxsZXogc8OpbGVjdGlvbm5lciB1biBhdXRyZSBtYWdhc2luPC9zcGFuPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
416
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFza2V0LXByZXZpZXctYmxvY2suY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fd2ViLWNvbXBvbmVudHMvYmFza2V0LXByZXZpZXcvYmFza2V0LXByZXZpZXctYmxvY2svYmFza2V0LXByZXZpZXctYmxvY2suY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy9iYXNrZXQtcHJldmlldy9iYXNrZXQtcHJldmlldy1ibG9jay9iYXNrZXQtcHJldmlldy1ibG9jay5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBYSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUMvSCxZQUFZLEVBQTJDLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQWdCLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLE1BQU0sTUFBTSxrQkFBa0IsQ0FBQztBQUN0QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNsRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNoRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVB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QUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtnQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07YUFDaEQ7ME5BRVUsUUFBUTtrQkFBaEIsS0FBSztZQUNHLFVBQVU7a0JBQWxCLEtBQUs7WUFDRyxxQkFBcUI7a0JBQTdCLEtBQUs7WUFDRyxtQkFBbUI7a0JBQTNCLEtBQUs7WUFDRyx3QkFBd0I7a0JBQWhDLEtBQUs7WUFDRyxVQUFVO2tCQUFsQixLQUFLO1lBQ0ksWUFBWTtrQkFBckIsTUFBTTtZQUNHLGlCQUFpQjtrQkFBMUIsTUFBTTtZQUNHLE9BQU87a0JBQWhCLE1BQU07WUFFbUMsY0FBYztrQkFBdkQsWUFBWTttQkFBQywwQkFBMEI7WUFDRSx1QkFBdUI7a0JBQWhFLFlBQVk7bUJBQUMsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPbkRlc3Ryb3ksIFZpZXdFbmNhcHN1bGF0aW9uLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIE91dHB1dCwgRXZlbnRFbWl0dGVyLFxuICBWaWV3Q2hpbGRyZW4sIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQmFza2V0c1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fc2VydmljZXMvYmFza2V0cy5zZXJ2aWNlJztcbmltcG9ydCB7IEJhc2tldFByZXZpZXdMaW5lIH0gZnJvbSAnLi4vLi4vLi4vX21vZGVscy9iYXNrZXQtcHJldmlldy1saW5lJztcbmltcG9ydCB7IHNraXBXaGlsZSwgdGFwLCBtYXAsIHN3aXRjaE1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCByZW1vdmUgZnJvbSAnbG9kYXNoLWVzL3JlbW92ZSc7XG5pbXBvcnQgeyBCYXNrZXRQcmV2aWV3TGluZUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2tldC1wcmV2aWV3LWxpbmUvYmFza2V0LXByZXZpZXctbGluZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9pbnRPZlNhbGVzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19zZXJ2aWNlcy9wb2ludC1vZi1zYWxlcy5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX3NlcnZpY2VzL2NvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSAnLi4vLi4vLi4vX3R5cGVzL2ljb24uZW51bSc7XG5pbXBvcnQgeyBNZWRpYU1hdGNoZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fc2VydmljZXMvYW5hbHl0aWNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgRXZlbnRUcmFjZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9fY29tcG9uZW50cy9hYnN0cmFjdHMvZXZlbnQtdHJhY2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCYXNrZXQgfSBmcm9tICcuLi8uLi8uLi9fbW9kZWxzJztcbmltcG9ydCB7IEJhc2tldFN0YXRzIH0gZnJvbSAnLi4vLi4vLi4vX3R5cGVzL2Jhc2tldC1zdGF0cyc7XG5pbXBvcnQgeyBDdXN0b21Qcm9wZXJ0aWVzIH0gZnJvbSAnLi4vLi4vLi4vX3R5cGVzL2V2ZW50LXRyYWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctbWlhbS1iYXNrZXQtcHJldmlldy1ibG9jaycsXG4gIHRlbXBsYXRlVXJsOiAnLi9iYXNrZXQtcHJldmlldy1ibG9jay5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Jhc2tldC1wcmV2aWV3LWJsb2NrLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEJhc2tldFByZXZpZXdCbG9ja0NvbXBvbmVudCBleHRlbmRzIEV2ZW50VHJhY2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIHJlY2lwZUlkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNob3dOb3RpY2UgPSBmYWxzZTtcbiAgQElucHV0KCkgcmVjaXBlc0Fsd2F5c0V4cGFuZGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGl0ZW1zQWx3YXlzRXhwYW5kZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgZGlzcGxheUl0ZW1zVW5pdGFyeVByaWNlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJlY2lwZXNJZHMgPSBbXTtcbiAgQE91dHB1dCgpIHN0YXRzVXBkYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8QmFza2V0U3RhdHM+KCk7XG4gIEBPdXRwdXQoKSBndWVzdENvdW50Q2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICBAT3V0cHV0KCkgbG9hZGluZyA9IG5ldyBCZWhhdmlvclN1YmplY3QodHJ1ZSk7XG5cbiAgQFZpZXdDaGlsZHJlbihCYXNrZXRQcmV2aWV3TGluZUNvbXBvbmVudCkgbGluZUNvbXBvbmVudHM6IEJhc2tldFByZXZpZXdMaW5lQ29tcG9uZW50W107XG4gIEBWaWV3Q2hpbGRyZW4oQmFza2V0UHJldmlld0xpbmVDb21wb25lbnQpIGJhc2tldFByZXZpZXdSZWNpcGVSb3dzOiBRdWVyeUxpc3Q8QmFza2V0UHJldmlld0xpbmVDb21wb25lbnQ+O1xuXG4gIGxpbmVzOiBCYXNrZXRQcmV2aWV3TGluZVtdO1xuICBjb3JzSXNzdWVzID0gZmFsc2U7XG4gIGljb24gPSBJY29uO1xuICBpc01vYmlsZSA9IGZhbHNlO1xuXG4gIGJsb2NrU3RhdGVzOiBCZWhhdmlvclN1YmplY3Q8eyBjdXJyZW50T3BlbkxpbmU6IHN0cmluZzsgb3ZlcmxheU9wZW46IGJvb2xlYW47IGxpbmVDb21wb25lbnQ6IEJhc2tldFByZXZpZXdMaW5lQ29tcG9uZW50IH0+O1xuXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9ucyA9IFtdO1xuICBwcml2YXRlIGxpbmVzSGFzaGVzID0ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHB1YmxpYyBwb3NTZXJ2aWNlOiBQb2ludE9mU2FsZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICAgIHB1YmxpYyBiYXNrZXRzU2VydmljZTogQmFza2V0c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZWRpYU1hdGNoZXI6IE1lZGlhTWF0Y2hlcixcbiAgICBwcm90ZWN0ZWQgYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZVxuICApIHtcbiAgICBzdXBlcihhbmFseXRpY3NTZXJ2aWNlKTtcbiAgICB0aGlzLmlzTW9iaWxlID0gdGhpcy5tZWRpYU1hdGNoZXIubWF0Y2hNZWRpYSgnKG1heC13aWR0aDogMTAyM3B4KScpLm1hdGNoZXM7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmJsb2NrU3RhdGVzID0gbmV3IEJlaGF2aW9yU3ViamVjdCh7IGN1cnJlbnRPcGVuTGluZTogbnVsbCwgb3ZlcmxheU9wZW46IGZhbHNlLCBsaW5lQ29tcG9uZW50OiBudWxsIH0pO1xuICAgIHRoaXMubG9hZFByZXZpZXdXaGVuQmFza2V0SXNSZWFkeSgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IFtcbiAgICAgIHRoaXMuY29udGV4dFNlcnZpY2UuZ2V0Q09SU0lzc3Vlc1N0YXRlKCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIHRoaXMuY29yc0lzc3VlcyA9IHJlcztcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSksXG4gICAgICB0aGlzLmJsb2NrU3RhdGVzLnN1YnNjcmliZSgoKSA9PiB0aGlzLmhhbmRlbGJsb2NrU3RhdGUoKSksXG4gICAgICB0aGlzLmJhc2tldHNTZXJ2aWNlLmJhc2tldFN0YXRzJC5waXBlKFxuICAgICAgICBza2lwV2hpbGUoc3RhdHMgPT4gIXN0YXRzKSxcbiAgICAgICAgdGFwKHN0YXRzID0+IHRoaXMuc3RhdHNVcGRhdGVkLmVtaXQoc3RhdHMpKVxuICAgICAgKS5zdWJzY3JpYmUoKSxcbiAgICAgIHRoaXMucG9zU2VydmljZS5pc1Bvc1ZhbGlkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSlcbiAgICBdO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChPYmplY3Qua2V5cyhjaGFuZ2VzKS5pbmNsdWRlcygncmVjaXBlSWQnKSkge1xuICAgICAgdGhpcy5sb2FkaW5nLm5leHQodHJ1ZSk7XG4gICAgfVxuICAgIHRoaXMucGFnZXZpZXcoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpe1xuICAgIGlmICh0aGlzLmJhc2tldFByZXZpZXdSZWNpcGVSb3dzICYmIHRoaXMucmVjaXBlSWQgKXtcbiAgICAgIHRoaXMuZmluZEFuZEZvY3VzQ3VycmVudFJlY2lwZSggdGhpcy5iYXNrZXRQcmV2aWV3UmVjaXBlUm93cy50b0FycmF5KCkpO1xuICAgIH1cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuYmFza2V0UHJldmlld1JlY2lwZVJvd3MuY2hhbmdlcy5zdWJzY3JpYmUoKGJwcnJzOiBCYXNrZXRQcmV2aWV3TGluZUNvbXBvbmVudFtdKSA9PiB7XG4gICAgICAgIHRoaXMuZmluZEFuZEZvY3VzQ3VycmVudFJlY2lwZShicHJycyk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc3ViOiBTdWJzY3JpcHRpb24pID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIGN1cnJlbnRQYXRoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdiYXNrZXQtcHJldmlldyc7XG4gIH1cblxuICBsb2FkUHJldmlld1doZW5CYXNrZXRJc1JlYWR5KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgLy8gSWYgcmVjaXBlcyBhcmUgYmVpbmcgYWRkZWQgd2Ugd2FpdCBmb3IgdGhlbSBiZWZvcmUgbG9hZGluZyB0aGUgcHJldmlld1xuICAgICAgdGhpcy5iYXNrZXRzU2VydmljZS5yZWNpcGVzV2lsbEJlQWRkZWQoKS5waXBlKFxuICAgICAgICBza2lwV2hpbGUoYWRkZWQgPT4gYWRkZWQpLFxuICAgICAgICB0YWtlKDEpXG4gICAgICApLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmJhc2tldHNTZXJ2aWNlLndhaXRGb3JCYXNrZXQpLFxuICAgICAgICBzd2l0Y2hNYXAoYmFza2V0ID0+IHRoaXMubG9hZFByZXZpZXcoYmFza2V0KSlcbiAgICAgICkuc3Vic2NyaWJlKClcbiAgICApO1xuICB9XG5cbiAgbG9hZFByZXZpZXcoYmFza2V0OiBCYXNrZXQpOiBPYnNlcnZhYmxlPEJhc2tldFByZXZpZXdMaW5lW10+IHtcbiAgICByZXR1cm4gdGhpcy5iYXNrZXRzU2VydmljZS5iYXNrZXRQcmV2aWV3JC5waXBlKFxuICAgICAgc2tpcFdoaWxlKHByZXZpZXcgPT4gIXByZXZpZXcgfHwgcHJldmlldy5sZW5ndGggIT09IGJhc2tldC5yZWNpcGVJbmZvcy5sZW5ndGgpLFxuICAgICAgbWFwKHByZXZpZXdMaW5lcyA9PiB7XG4gICAgICAgIGlmICh0aGlzLnJlY2lwZXNJZHMubGVuZ3RoID09PSAwKSB7IHJldHVybiBwcmV2aWV3TGluZXM7IH1cblxuICAgICAgICByZXR1cm4gcHJldmlld0xpbmVzLmZpbHRlcihsaW5lID0+IHRoaXMucmVjaXBlc0lkcy5pbmNsdWRlcyhsaW5lLmlkKSk7XG4gICAgICB9KSxcbiAgICAgIHRhcChwcmV2aWV3ID0+IHtcbiAgICAgICAgdGhpcy5yZWZyZXNoUHJldmlldyhwcmV2aWV3KTtcbiAgICAgICAgdGhpcy5sb2FkaW5nLm5leHQoZmFsc2UpO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICByZW1vdmVSZWNpcGUobGluZTogQmFza2V0UHJldmlld0xpbmUpIHtcbiAgICB0aGlzLmJhc2tldHNTZXJ2aWNlLnJlbW92ZVJlY2lwZXNGcm9tQmFza2V0KFtsaW5lLmlkXSwgdGhpcy5ldmVudFRyYWNlKCkpO1xuICAgIHRoaXMuYmFza2V0c1NlcnZpY2UucmVjaXBlV2lsbEJlUmVtb3ZlZChsaW5lLmlkKS5waXBlKHNraXBXaGlsZSh3aWxsQmVSZW1vdmVkID0+IHdpbGxCZVJlbW92ZWQpLCB0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3QgcmVjaXBlSW5kZXggPSB0aGlzLnJlY2lwZXNJZHMuZmluZEluZGV4KHJlY2lwZUlkID0+IHJlY2lwZUlkID09PSBsaW5lLmlkKTtcbiAgICAgIGlmIChyZWNpcGVJbmRleCA+PSAwKSB7XG4gICAgICAgIHRoaXMucmVjaXBlc0lkcy5zcGxpY2UocmVjaXBlSW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlUmVjaXBlKGxpbmU6IEJhc2tldFByZXZpZXdMaW5lKSB7XG4gICAgdGhpcy5iYXNrZXRzU2VydmljZS51cGRhdGVSZWNpcGVzSW5CYXNrZXQoW2xpbmUuaWRdLCBsaW5lLmNvdW50LCB0aGlzLmV2ZW50VHJhY2UoKSk7XG4gICAgdGhpcy5ndWVzdENvdW50Q2hhbmdlZC5lbWl0KGxpbmUuY291bnQpO1xuICB9XG5cbiAgY2xvc2VPdmVybGF5KCkge1xuICAgIGlmICh0aGlzLmJsb2NrU3RhdGVzLmdldFZhbHVlKCkgJiYgdGhpcy5ibG9ja1N0YXRlcy5nZXRWYWx1ZSgpLmxpbmVDb21wb25lbnQpIHtcbiAgICAgIHRoaXMuYmxvY2tTdGF0ZXMudmFsdWUubGluZUNvbXBvbmVudC5wcm9kdWN0Q2hvc2VuKCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGVsYmxvY2tTdGF0ZSgpIHtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBzY3JvbGx0b3AoZWxlbWVudDogRWxlbWVudCl7XG4gICAgLy8gc2Nyb2xsIHRvcCBiYXNlIG9uIG1vZGFsIGNvbnRhaW5lclxuICAgIGlmICh0aGlzLmlzTW9iaWxlKSB7XG4gICAgICBjb25zdCBtb2RhbENvbnRhaW5lciA9ICBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdtaWFtLXdyYXBwZXItcHJldmlldycpWzBdO1xuICAgICAgaWYgKG1vZGFsQ29udGFpbmVyKSB7XG4gICAgICAgIG1vZGFsQ29udGFpbmVyLnNjcm9sbFRvcCA9IDA7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBzY3JvbGwgYmFzZSBvbiBnbG9iYWwgd2luZG93XG4gICAgZWxlbWVudC5zY3JvbGxJbnRvVmlldygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGN1cnJlbnRQcm9wcygpOiBDdXN0b21Qcm9wZXJ0aWVzIHtcbiAgICBpZiAodGhpcy5yZWNpcGVJZCkgeyByZXR1cm4geyByZWNpcGVfaWQ6IHRoaXMucmVjaXBlSWQgfTsgfVxuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIHByaXZhdGUgcmVmcmVzaFByZXZpZXcobmV3TGluZXM6IEJhc2tldFByZXZpZXdMaW5lW10pIHtcbiAgICBpZiAoIXRoaXMubGluZXMpIHtcbiAgICAgIC8vIEZpcnN0IGxvYWRcbiAgICAgIHRoaXMubGluZXMgPSBuZXdMaW5lcztcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbmV3TGluZXNJZHMgPSBbXTtcbiAgICAgIG5ld0xpbmVzLmZvckVhY2goKGxpbmU6IEJhc2tldFByZXZpZXdMaW5lKSA9PiB7XG4gICAgICAgIG5ld0xpbmVzSWRzLnB1c2gobGluZS5pZCk7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nTGluZSA9IHRoaXMubGluZXMuZmluZChsID0+IGwuaWQgPT09IGxpbmUuaWQpO1xuICAgICAgICBpZiAoZXhpc3RpbmdMaW5lKSB7XG4gICAgICAgICAgLy8gVXBkYXRlIGV4aXN0aW5nIG9iamVjdCB3aXRoIGl0cyBuZXcgdmFsdWVzXG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihleGlzdGluZ0xpbmUsIGxpbmUpO1xuXG4gICAgICAgICAgLy8gTWFyayBiYXNrZXQgbGluZXMgY29tcG9uZW50IGZvciBjaGVja1xuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nQ29tcCA9IHRoaXMubGluZUNvbXBvbmVudHMuZmluZChjb21wID0+IGNvbXAubGluZS5pZCA9PT0gbGluZS5pZCk7XG4gICAgICAgICAgZXhpc3RpbmdDb21wPy5jZHIubWFya0ZvckNoZWNrKCk7XG5cbiAgICAgICAgICAvLyBGb3JjZSByZWxvYWQgdGhlIGJhc2tldCBlbnRyaWVzIGlmIHRoZWlyIHF1YW50aXRpZXMgb3Igc2VsZWN0ZWQgaXRlbXMgaGF2ZSBjaGFuZ2VkXG4gICAgICAgICAgY29uc3QgZW50cmllcyA9IGxpbmUuZW50cmllcy5mb3VuZC5zb3J0KGUgPT4gcGFyc2VJbnQoZS5pZCwgMTApKTtcbiAgICAgICAgICBjb25zdCBoYXNoID0gZW50cmllcy5tYXAoZSA9PiBlLmF0dHJpYnV0ZXNbJ3NlbGVjdGVkLWl0ZW0taWQnXSArICctJyArIGUuYXR0cmlidXRlcy5xdWFudGl0eSkuam9pbignLycpO1xuICAgICAgICAgIGlmIChoYXNoICE9PSB0aGlzLmxpbmVzSGFzaGVzW2xpbmUuaWRdICYmIGV4aXN0aW5nQ29tcD8uZW50cmllc0xpbmVzJC52YWx1ZSkge1xuICAgICAgICAgICAgZXhpc3RpbmdDb21wLmJ1aWxkRW50cmllc0xpbmVzKCk7XG4gICAgICAgICAgICB0aGlzLmxpbmVzSGFzaGVzW2xpbmUuaWRdID0gaGFzaDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gUHVzaCB0aGUgbmV3IGxpbmUgdG8gdGhlIGJlZ2dpbmluZyBvZiB0aGUgYXJyYXlcbiAgICAgICAgICB0aGlzLmxpbmVzLnVuc2hpZnQobGluZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgLy8gUmVtb3ZlIGRlbGV0ZWQgbGluZXNcbiAgICAgIHJlbW92ZSh0aGlzLmxpbmVzLCBsID0+ICFuZXdMaW5lc0lkcy5pbmNsdWRlcyhsLmlkKSk7XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZEFuZEZvY3VzQ3VycmVudFJlY2lwZShyZWNpcGVSb3dzOiBCYXNrZXRQcmV2aWV3TGluZUNvbXBvbmVudFtdKXtcblxuICAgIGNvbnN0IHJlY2lwZVJvd0VsZW1lbnQgPSByZWNpcGVSb3dzLmZpbmQoIGJwcnIgPT4gYnByci5saW5lLmlkID09PSB0aGlzLnJlY2lwZUlkKTtcbiAgICBpZiAocmVjaXBlUm93RWxlbWVudCkge1xuICAgICAgcmVjaXBlUm93RWxlbWVudC5leHBhbmRlZCA9IHRydWU7XG4gICAgICByZWNpcGVSb3dFbGVtZW50LmJ1aWxkRW50cmllc0xpbmVzKCk7XG4gICAgICByZWNpcGVSb3dFbGVtZW50LmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAocmVjaXBlUm93RWxlbWVudC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgRWxlbWVudCkuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgI3ByZXZpZXdCbG9ja1RvcCBjbGFzcz1cIm1pYW0tYmFza2V0LXByZXZpZXctYmxvY2tfX2FuY2hvclwiPjwvZGl2PlxuPGRpdiAqbmdJZj0nIWNvcnNJc3N1ZXMgZWxzZSBjb3JzJyBjbGFzcz1cIm1pYW0tYmFza2V0LXByZXZpZXctYmxvY2tcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihwb3NTZXJ2aWNlLmlzUG9zVmFsaWQoKSB8IGFzeW5jKSBlbHNlIG5vUG9zXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tYmFza2V0LXByZXZpZXctYmxvY2tfX3RpdGxlIG1pYW0tZHMtdGV4dCB3ZWlnaHQteHhsIHNpemUtbFwiICpuZ0lmPVwibGluZXM/Lmxlbmd0aCA+IDBcIj5cbiAgICAgIDxzcGFuIGkxOG4+Vm91cyBhdmV6PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJudW1iZXJcIj57e2xpbmVzLmxlbmd0aH19PC9zcGFuPlxuICAgICAgPHNwYW4gaTE4bj5yZXBhcyBkYW5zIHZvdHJlIHBhbmllcjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1iYXNrZXQtcHJldmlldy1ibG9ja19fbGluZXNcIj5cbiAgICAgIDxuZy1taWFtLWJhc2tldC1wcmV2aWV3LWxpbmVcbiAgICAgICAgKm5nRm9yPVwibGV0IGxpbmUgb2YgbGluZXNcIlxuICAgICAgICBbbGluZV09XCJsaW5lXCJcbiAgICAgICAgW2Jsb2NrU3RhdGVzXT1cImJsb2NrU3RhdGVzXCJcbiAgICAgICAgW3JlY2lwZXNBbHdheXNFeHBhbmRlZF09XCJyZWNpcGVzQWx3YXlzRXhwYW5kZWRcIlxuICAgICAgICBbaXRlbXNBbHdheXNFeHBhbmRlZF09XCJpdGVtc0Fsd2F5c0V4cGFuZGVkXCJcbiAgICAgICAgW2Rpc3BsYXlJdGVtc1VuaXRhcnlQcmljZV09XCJkaXNwbGF5SXRlbXNVbml0YXJ5UHJpY2VcIlxuICAgICAgICBbb3JpZ2luVHJhY2VdPVwiZXZlbnRUcmFjZSgpXCJcbiAgICAgICAgKHJlbW92ZWQpPVwicmVtb3ZlUmVjaXBlKCRldmVudClcIlxuICAgICAgICAoY291bnRDaGFuZ2VkKT1cInVwZGF0ZVJlY2lwZSgkZXZlbnQpXCJcbiAgICAgICAgKHJlcGxhY2VJdGVtKT0nc2Nyb2xsdG9wKHByZXZpZXdCbG9ja1RvcCknXG4gICAgICAgIFtuZ1N0eWxlXT1cInsnZGlzcGxheSc6IGJsb2NrU3RhdGVzPy52YWx1ZT8ub3ZlcmxheU9wZW4gPyAnbm9uZScgOiAnYmxvY2snfSBcIlxuICAgICAgPjwvbmctbWlhbS1iYXNrZXQtcHJldmlldy1saW5lPlxuICAgICAgPG5nLW1pYW0tcmVwbGFjZS1pdGVtXG4gICAgICAgICpuZ0lmPVwiIGJsb2NrU3RhdGVzPy52YWx1ZT8ub3ZlcmxheU9wZW4gXCJcbiAgICAgICAgW2Jhc2tldEVudHJ5XT1cImJsb2NrU3RhdGVzPy52YWx1ZT8ubGluZUNvbXBvbmVudC5saW5lLnJlY29yZFwiXG4gICAgICAgIFtvcmlnaW5UcmFjZV09XCJldmVudFRyYWNlKClcIlxuICAgICAgICAoc2VsZWN0ZWQpPVwiYmxvY2tTdGF0ZXM/LnZhbHVlPy5saW5lQ29tcG9uZW50LnByb2R1Y3RDaG9zZW4oJGV2ZW50KVwiPlxuICAgICAgPC9uZy1taWFtLXJlcGxhY2UtaXRlbT5cbiAgICAgIDxkaXYgKm5nSWY9XCIhKGxvYWRpbmcgfCBhc3luYykgJiYgKCFsaW5lcyB8fCBsaW5lcy5sZW5ndGggPT09IDApXCIgY2xhc3M9XCJtaWFtLWJhc2tldC1wcmV2aWV3LWJsb2NrX19saW5lc19fbm90LWZvdW5kXCI+XG4gICAgICAgIDxwPjxiIGkxOG4+Vm91cyBuJ2F2ZXogcGFzIGVuY29yZSBzw6lsZWN0aW9ubsOpIGRlIHJlcGFzLjwvYj48L3A+XG4gICAgICAgIDxwIGkxOG4gKm5nSWY9XCJzaG93Tm90aWNlXCI+TmF2aWd1ZXogdmVycyBsYSBwYWdlIGQndW5lIHJlY2V0dGUsIHB1aXMgY2xpcXVleiBzdXIgXCJDb21tYW5kZXIgbGVzIGluZ3LDqWRpZW50c1wiLjwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tYmFza2V0LXByZXZpZXctYmxvY2tfX2xpbmVzX19sb2FkZXJcIiAqbmdJZj1cIihsb2FkaW5nIHwgYXN5bmMpXCI+XG4gICAgICA8bmctbWlhbS1sb2FkZXI+PC9uZy1taWFtLWxvYWRlcj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxzcGFuIGkxOG4gKm5nSWY9XCJyZWNpcGVJZFwiPkNoYXJnZW1lbnQgZHUgcmVwYXMuLi48L3NwYW4+XG4gICAgICAgIDxzcGFuIGkxOG4gKm5nSWY9XCIhcmVjaXBlSWRcIj5DaGFyZ2VtZW50IGRlcyByZXBhcy4uLjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNjb3JzPlxuPG5nLW1pYW0tY29ycy1vdmVybGF5PjwvbmctbWlhbS1jb3JzLW92ZXJsYXk+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNub1Bvcz5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tYmFza2V0LXByZXZpZXctYmxvY2tfX25vUG9zXCI+XG4gICAgPHNwYW4gaTE4bj5Ew6lzb2zDqSwgY2UgbWFnYXNpbiBuZSBwZXJtZXQgcGFzIGRlIHPDqWxlY3Rpb25uZXIgZGVzIHJlcGFzLjwvc3Bhbj5cbiAgICA8YnI+XG4gICAgPHNwYW4gaTE4bj5WZXVpbGxleiBzw6lsZWN0aW9ubmVyIHVuIGF1dHJlIG1hZ2FzaW48L3NwYW4+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==