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
@@ -42,12 +42,6 @@ export class Recipe extends Resource {
42
42
  this.finalTimer = this.attributes['preparation-time'] + this.attributes['preheating-time'] +
43
43
  this.attributes['cooking-time'] + this.attributes['resting-time'];
44
44
  }
45
- get eventsGroupId() {
46
- return this._eventsGroupId;
47
- }
48
- get eventOrigin() {
49
- return this._eventOrigin;
50
- }
51
45
  get title() {
52
46
  return this.attributes.title;
53
47
  }
@@ -143,7 +137,7 @@ export class Recipe extends Resource {
143
137
  return this.normalizedIngredients.map(ingredient => (Object.assign(Object.assign({}, ingredient), { qty: ingredient.qty * (this.modifiedGuests || +this.guests) })));
144
138
  }
145
139
  get normalizedIngredients() {
146
- if (!this._normalizedIngredients) {
140
+ if (!this._normalizedIngredients || this._normalizedIngredients.length === 0) {
147
141
  this._normalizedIngredients = this.ingredients.map((ingredient) => ({
148
142
  name: ingredient.attributes.name,
149
143
  qty: (+ingredient.quantity) / (+this.guests || 1),
@@ -162,13 +156,6 @@ export class Recipe extends Resource {
162
156
  set position(p) {
163
157
  this.attributes.position = p;
164
158
  }
165
- shallowCopyWithEvents(origin, groupId) {
166
- const res = new Recipe();
167
- Object.assign(res, this);
168
- res._eventOrigin = origin;
169
- res._eventsGroupId = groupId;
170
- return res;
171
- }
172
159
  formatDuration(duration) {
173
160
  if (!toMinutes(duration)) {
174
161
  return '-';
@@ -186,4 +173,4 @@ export class Recipe extends Resource {
186
173
  return formatedDuration;
187
174
  }
188
175
  }
189
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlLmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fbW9kZWxzL3JlY2lwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFZLE1BQU0sY0FBYyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFrQjdFLE1BQU0sT0FBTyxNQUFPLFNBQVEsUUFBUTtJQUFwQzs7UUFFRSxlQUFVLEdBQUc7WUFDWCxLQUFLLEVBQUUsRUFBRTtZQUNULFFBQVEsRUFBRSxFQUFFO1lBQ1osVUFBVSxFQUFFLEVBQUU7WUFDZCxXQUFXLEVBQUUsRUFBRTtZQUNmLGtCQUFrQixFQUFFLEVBQUU7WUFDdEIsa0JBQWtCLEVBQUUsRUFBRTtZQUN0QixpQkFBaUIsRUFBRSxFQUFFO1lBQ3JCLGNBQWMsRUFBRSxFQUFFO1lBQ2xCLGNBQWMsRUFBRSxFQUFFO1lBQ2xCLFdBQVcsRUFBRSxFQUFFO1lBQ2YsTUFBTSxFQUFFLEVBQUU7WUFDVix5QkFBeUIsRUFBRSxFQUFFO1lBQzdCLG9CQUFvQixFQUFFLEVBQUU7WUFDeEIsd0JBQXdCLEVBQUUsRUFBRTtZQUM1QixVQUFVLEVBQUUsQ0FBQztZQUNiLElBQUksRUFBRSxDQUFDO1lBQ1AsU0FBUyxFQUFFLEtBQUs7WUFDaEIsVUFBVSxFQUFFLENBQUM7WUFDYixVQUFVLEVBQUUsRUFBRTtZQUNkLFFBQVEsRUFBRSxLQUFLO1lBQ2YsTUFBTSxFQUFFLFlBQVk7WUFDcEIsUUFBUSxFQUFFLEtBQUs7WUFDZixRQUFRLEVBQUUsQ0FBQyxDQUFDO1NBQ2IsQ0FBQztRQUVGLGtCQUFhLEdBU1Q7WUFDQSxXQUFXLEVBQUUsSUFBSSxrQkFBa0IsRUFBYztZQUNqRCxjQUFjLEVBQUUsSUFBSSxrQkFBa0IsRUFBYztZQUNwRCxpQkFBaUIsRUFBRSxJQUFJLGdCQUFnQixFQUFrQjtZQUN6RCxlQUFlLEVBQUUsSUFBSSxnQkFBZ0IsRUFBZ0I7WUFDckQsSUFBSSxFQUFFLElBQUksa0JBQWtCLEVBQU87WUFDbkMsYUFBYSxFQUFFLElBQUksZ0JBQWdCLEVBQWM7WUFDakQsUUFBUSxFQUFFLElBQUksa0JBQWtCLEVBQVc7WUFDM0MsUUFBUSxFQUFFLElBQUksa0JBQWtCLEVBQVc7U0FDNUMsQ0FBQztRQUVKLFFBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxvQ0FBb0M7UUFHaEQsZUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDO1lBQ25GLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQW9MdEUsQ0FBQztJQTlLQyxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEtBQUssUUFBUSxDQUFDO0lBQzdDLENBQUM7SUFFRCxJQUFJLE1BQU0sQ0FBQyxRQUFpQjtRQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO0lBQzlELENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsRUFBRTtZQUN6QyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUM5QztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQztZQUMzQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ2hEO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFBSSxxQkFBcUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLFFBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUU7WUFDNUIsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDTixPQUFPLFFBQVEsQ0FBQzthQUNqQjtZQUNELEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ04sT0FBTyxPQUFPLENBQUM7YUFDaEI7WUFDRCxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNOLE9BQU8sT0FBTyxDQUFDO2FBQ2hCO1lBQ0QsT0FBTyxDQUFDLENBQUM7Z0JBQ1AsT0FBTyxPQUFPLENBQUM7YUFDaEI7U0FDRjtJQUNILENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFJLFVBQVUsQ0FBQyxDQUFTO1FBQ3RCLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FDNUIsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxFQUMxQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUN0QyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUN2QyxDQUFDLENBQUM7UUFFSCxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDNUIsT0FBTyxXQUFXLENBQUM7U0FDcEI7UUFFRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVELCtFQUErRTtJQUMvRSxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUk7YUFDdkMsTUFBTSxDQUFDLENBQUMsQ0FBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQzthQUM5QyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7WUFDZixNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUMzRixNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUMzRixPQUFPLENBQUMsVUFBVSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztRQUM1RixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxJQUFJLFFBQVE7O1FBQ1YsbUJBQU8sSUFBSSxDQUFDLGFBQWEsMENBQUUsUUFBUSwwQ0FBRSxJQUFJLENBQUM7SUFDNUMsQ0FBQztJQUNELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEksQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQy9HLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMzRyxDQUFDO0lBRUQsSUFBSSxtQkFBbUI7UUFDckIsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsaUNBQU0sVUFBVSxLQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBRyxDQUFDLENBQUM7SUFDeEksQ0FBQztJQUVELElBQUkscUJBQXFCO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDaEMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBc0IsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDOUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSTtnQkFDaEMsR0FBRyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO2dCQUNqRCxJQUFJLEVBQUUsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJO2dCQUNoQyxPQUFPLEVBQUUsVUFBVSxDQUFDLE9BQU87YUFDNUIsQ0FBQyxDQUFDLENBQUM7U0FDTDtRQUNELE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLENBQVM7UUFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxNQUFjLEVBQUUsT0FBZTtRQUNuRCxNQUFNLEdBQUcsR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ3pCLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3pCLEdBQUcsQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDO1FBQzFCLEdBQUcsQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDO1FBQzdCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVPLGNBQWMsQ0FBQyxRQUFrQjtRQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFDO1lBQ3ZCLE9BQU8sR0FBRyxDQUFDO1NBQ1o7UUFDRCxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUU7WUFBRSxRQUFRLENBQUMsS0FBSyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO1NBQUU7UUFFNUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUU7WUFDbkIsT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLE1BQU0sQ0FBQztTQUNsQztRQUNELElBQUksZ0JBQWdCLEdBQUcsR0FBRyxRQUFRLENBQUMsS0FBSyxJQUFJLENBQUM7UUFDN0MsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFO1lBQ3BCLGdCQUFnQixJQUFLLEdBQUcsUUFBUSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUNuRjtRQUNELE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3VtLCBub3JtYWxpemUsIHBhcnNlLCB0b01pbnV0ZXMsIER1cmF0aW9uIH0gZnJvbSAnZHVyYXRpb24tZm5zJztcbmltcG9ydCB7IERvY3VtZW50Q29sbGVjdGlvbiwgUmVzb3VyY2UsIERvY3VtZW50UmVzb3VyY2UgfSBmcm9tICduZ3gtanNvbmFwaSc7XG5pbXBvcnQgeyBJbmdyZWRpZW50IH0gZnJvbSAnLi9pbmdyZWRpZW50JztcbmltcG9ydCB7IFBhY2thZ2UgfSBmcm9tICcuL3BhY2thZ2UnO1xuaW1wb3J0IHsgUmVjaXBlUHJvdmlkZXIgfSBmcm9tICcuL3JlY2lwZS1wcm92aWRlcic7XG5pbXBvcnQgeyBSZWNpcGVTdGF0dXMgfSBmcm9tICcuL3JlY2lwZS1zdGF0dXMnO1xuaW1wb3J0IHsgUmVjaXBlU3RlcCB9IGZyb20gJy4vcmVjaXBlLXN0ZXAnO1xuaW1wb3J0IHsgUmVjaXBlVHlwZSB9IGZyb20gJy4vcmVjaXBlLXR5cGUnO1xuaW1wb3J0IHsgU3BvbnNvciB9IGZyb20gJy4vc3BvbnNvcic7XG5pbXBvcnQgeyBUYWcgfSBmcm9tICcuL3RhZyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2ltcGxpZmllZEluZ3JlZGllbnQge1xuICBuYW1lOiBzdHJpbmc7XG4gIHF0eTogbnVtYmVyO1xuICB1bml0OiBzdHJpbmc7XG4gIHBpY3R1cmU6IHN0cmluZztcbn1cblxuXG5leHBvcnQgY2xhc3MgUmVjaXBlIGV4dGVuZHMgUmVzb3VyY2Uge1xuXG4gIGF0dHJpYnV0ZXMgPSB7XG4gICAgdGl0bGU6ICcnLFxuICAgICdleHQtaWQnOiAnJyxcbiAgICAnZXh0LWxpbmsnOiAnJyxcbiAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgJ251bWJlci1vZi1ndWVzdHMnOiAnJyxcbiAgICAncHJlcGFyYXRpb24tdGltZSc6ICcnLFxuICAgICdwcmVoZWF0aW5nLXRpbWUnOiAnJyxcbiAgICAnY29va2luZy10aW1lJzogJycsXG4gICAgJ3Jlc3RpbmctdGltZSc6ICcnLFxuICAgICdtZWRpYS11cmwnOiAnJyxcbiAgICBzb3VyY2U6ICcnLFxuICAgICdpbmZvcm1hdGlvbmFsLXBhZ2UtaHRtbCc6ICcnLFxuICAgICdmaWxpZ3JhbmUtbG9nby11cmwnOiAnJyxcbiAgICAnaW5mb3JtYXRpb25hbC1zZW50ZW5jZSc6ICcnLFxuICAgIGRpZmZpY3VsdHk6IDEsXG4gICAgY29zdDogMSxcbiAgICBzdWdnZXN0ZWQ6IGZhbHNlLFxuICAgIHBvcHVsYXJpdHk6IDAsXG4gICAgJ3ZpZGVvLWlkJzogJycsXG4gICAgcHJvbW90ZWQ6IGZhbHNlLFxuICAgIHNoYXJlZDogJ25vdF9zaGFyZWQnLFxuICAgIGVkaXRhYmxlOiBmYWxzZSxcbiAgICBwb3NpdGlvbjogLTFcbiAgfTtcblxuICByZWxhdGlvbnNoaXBzOiB7XG4gICAgaW5ncmVkaWVudHM6IERvY3VtZW50Q29sbGVjdGlvbjxJbmdyZWRpZW50PjtcbiAgICAncmVjaXBlLXN0ZXBzJzogRG9jdW1lbnRDb2xsZWN0aW9uPFJlY2lwZVN0ZXA+O1xuICAgICdyZWNpcGUtcHJvdmlkZXInOiBEb2N1bWVudFJlc291cmNlPFJlY2lwZVByb3ZpZGVyPjtcbiAgICAncmVjaXBlLXN0YXR1cyc6IERvY3VtZW50UmVzb3VyY2U8UmVjaXBlU3RhdHVzPjtcbiAgICB0YWdzOiBEb2N1bWVudENvbGxlY3Rpb248VGFnPjtcbiAgICAncmVjaXBlLXR5cGUnOiBEb2N1bWVudFJlc291cmNlPFJlY2lwZVR5cGU+O1xuICAgIHNwb25zb3JzOiBEb2N1bWVudENvbGxlY3Rpb248U3BvbnNvcj47XG4gICAgcGFja2FnZXM6IERvY3VtZW50Q29sbGVjdGlvbjxQYWNrYWdlPjtcbiAgfSA9IHtcbiAgICAgIGluZ3JlZGllbnRzOiBuZXcgRG9jdW1lbnRDb2xsZWN0aW9uPEluZ3JlZGllbnQ+KCksXG4gICAgICAncmVjaXBlLXN0ZXBzJzogbmV3IERvY3VtZW50Q29sbGVjdGlvbjxSZWNpcGVTdGVwPigpLFxuICAgICAgJ3JlY2lwZS1wcm92aWRlcic6IG5ldyBEb2N1bWVudFJlc291cmNlPFJlY2lwZVByb3ZpZGVyPigpLFxuICAgICAgJ3JlY2lwZS1zdGF0dXMnOiBuZXcgRG9jdW1lbnRSZXNvdXJjZTxSZWNpcGVTdGF0dXM+KCksXG4gICAgICB0YWdzOiBuZXcgRG9jdW1lbnRDb2xsZWN0aW9uPFRhZz4oKSxcbiAgICAgICdyZWNpcGUtdHlwZSc6IG5ldyBEb2N1bWVudFJlc291cmNlPFJlY2lwZVR5cGU+KCksXG4gICAgICBzcG9uc29yczogbmV3IERvY3VtZW50Q29sbGVjdGlvbjxTcG9uc29yPigpLFxuICAgICAgcGFja2FnZXM6IG5ldyBEb2N1bWVudENvbGxlY3Rpb248UGFja2FnZT4oKVxuICAgIH07XG5cbiAgdHRsID0gMzYwMDsgLy8gcmVjaXBlcyB3aWxsIGJlIGNhY2hlZCBmb3IgMSBob3VyXG5cbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gIGZpbmFsVGltZXIgPSB0aGlzLmF0dHJpYnV0ZXNbJ3ByZXBhcmF0aW9uLXRpbWUnXSArIHRoaXMuYXR0cmlidXRlc1sncHJlaGVhdGluZy10aW1lJ10gK1xuICAgIHRoaXMuYXR0cmlidXRlc1snY29va2luZy10aW1lJ10gKyB0aGlzLmF0dHJpYnV0ZXNbJ3Jlc3RpbmctdGltZSddO1xuICBtb2RpZmllZEd1ZXN0czogbnVtYmVyO1xuICBwcml2YXRlIF9ldmVudHNHcm91cElkOiBzdHJpbmc7XG4gIHByaXZhdGUgX2V2ZW50T3JpZ2luOiBzdHJpbmc7XG4gIHByaXZhdGUgX25vcm1hbGl6ZWRJbmdyZWRpZW50czogU2ltcGxpZmllZEluZ3JlZGllbnRbXTtcblxuICBnZXQgZXZlbnRzR3JvdXBJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9ldmVudHNHcm91cElkO1xuICB9XG5cbiAgZ2V0IGV2ZW50T3JpZ2luKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50T3JpZ2luO1xuICB9XG5cbiAgZ2V0IHRpdGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYXR0cmlidXRlcy50aXRsZTtcbiAgfVxuXG4gIGdldCBwcm9tb3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hdHRyaWJ1dGVzLnByb21vdGVkO1xuICB9XG5cbiAgZ2V0IGd1ZXN0cygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbJ251bWJlci1vZi1ndWVzdHMnXTtcbiAgfVxuXG4gIGdldCBzaGFyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYXR0cmlidXRlcy5zaGFyZWQgPT09ICdzaGFyZWQnO1xuICB9XG5cbiAgc2V0IHNoYXJlZChpc1NoYXJlZDogYm9vbGVhbikge1xuICAgIHRoaXMuYXR0cmlidXRlcy5zaGFyZWQgPSBpc1NoYXJlZCA/ICdzaGFyZWQnIDogJ25vdF9zaGFyZWQnO1xuICB9XG5cbiAgZ2V0IGZpbGlncmFuZUxvZ29VcmwoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5hdHRyaWJ1dGVzWydmaWxpZ3JhbmUtbG9nby11cmwnXSkge1xuICAgICAgcmV0dXJuIHRoaXMuYXR0cmlidXRlc1snZmlsaWdyYW5lLWxvZ28tdXJsJ107XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0IHNwb25zb3JMb2dvVXJsKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuc3BvbnNvcnMubGVuZ3RoID4gMCl7XG4gICAgICByZXR1cm4gdGhpcy5zcG9uc29yc1swXS5hdHRyaWJ1dGVzWydsb2dvLXVybCddO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdldCBpbmZvcm1hdGlvbmFsU2VudGVuY2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hdHRyaWJ1dGVzWydpbmZvcm1hdGlvbmFsLXNlbnRlbmNlJ107XG4gIH1cblxuICBnZXQgY29zdExhYmVsKCk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLmF0dHJpYnV0ZXMuY29zdCkge1xuICAgICAgY2FzZSAxOiB7XG4gICAgICAgIHJldHVybiAnZmFpYmxlJztcbiAgICAgIH1cbiAgICAgIGNhc2UgMjoge1xuICAgICAgICByZXR1cm4gJ21veWVuJztcbiAgICAgIH1cbiAgICAgIGNhc2UgMzoge1xuICAgICAgICByZXR1cm4gJ8OpbGV2w6knO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICByZXR1cm4gJ21veWVuJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgZGlmZmljdWx0eSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXMuZGlmZmljdWx0eTtcbiAgfVxuXG4gIHNldCBkaWZmaWN1bHR5KGQ6IG51bWJlcikge1xuICAgIHRoaXMuYXR0cmlidXRlcy5kaWZmaWN1bHR5ID0gZDtcbiAgfVxuXG4gIGdldCB0b3RhbFRpbWUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBkdXJhdGlvbiA9IG5vcm1hbGl6ZShzdW0oXG4gICAgICBwYXJzZSh0aGlzLmF0dHJpYnV0ZXNbJ3ByZXBhcmF0aW9uLXRpbWUnXSksXG4gICAgICBwYXJzZSh0aGlzLmF0dHJpYnV0ZXNbJ2Nvb2tpbmctdGltZSddKSxcbiAgICAgIHBhcnNlKHRoaXMuYXR0cmlidXRlc1sncmVzdGluZy10aW1lJ10pXG4gICAgKSk7XG5cbiAgICBpZiAodG9NaW51dGVzKGR1cmF0aW9uKSA8IDEwKSB7XG4gICAgICByZXR1cm4gJyA8IDEwIG1pbic7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0RHVyYXRpb24oZHVyYXRpb24pO1xuICB9XG5cbiAgZ2V0IHByZXBhcmF0aW9uVGltZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZvcm1hdER1cmF0aW9uKG5vcm1hbGl6ZShwYXJzZSh0aGlzLmF0dHJpYnV0ZXNbJ3ByZXBhcmF0aW9uLXRpbWUnXSkpKTtcbiAgfVxuXG4gIGdldCBjb29raW5nVGltZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZvcm1hdER1cmF0aW9uKG5vcm1hbGl6ZShwYXJzZSh0aGlzLmF0dHJpYnV0ZXNbJ2Nvb2tpbmctdGltZSddKSkpO1xuICB9XG5cbiAgZ2V0IHJlc3RpbmdUaW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0RHVyYXRpb24obm9ybWFsaXplKHBhcnNlKHRoaXMuYXR0cmlidXRlc1sncmVzdGluZy10aW1lJ10pKSk7XG4gIH1cblxuICAvLyBSZXR1cm5zIGluZ3JlZGllbnRzLCBwdXR0aW5nIHRoZSBzcG9uc29yZWQgb25lcyBmaXJzdCBhbmQgc29ydGVkIGJ5IHBvc2l0aW9uXG4gIGdldCBpbmdyZWRpZW50cygpOiBJbmdyZWRpZW50W10ge1xuICAgIHJldHVybiB0aGlzLnJlbGF0aW9uc2hpcHMuaW5ncmVkaWVudHMuZGF0YVxuICAgICAgLmZpbHRlcigoaTogSW5ncmVkaWVudCkgPT4gaS5hdHRyaWJ1dGVzLmFjdGl2ZSlcbiAgICAgIC5zb3J0KChpMSwgaTIpID0+IHtcbiAgICAgICAgY29uc3QgaXNJMUZvcmNlZCA9IGkxLmF0dHJpYnV0ZXNbJ2ZvcmNlZC1lYW5zJ10gJiYgaTEuYXR0cmlidXRlc1snZm9yY2VkLWVhbnMnXS5sZW5ndGggPiAwO1xuICAgICAgICBjb25zdCBpc0kyRm9yY2VkID0gaTIuYXR0cmlidXRlc1snZm9yY2VkLWVhbnMnXSAmJiBpMi5hdHRyaWJ1dGVzWydmb3JjZWQtZWFucyddLmxlbmd0aCA+IDA7XG4gICAgICAgIHJldHVybiAoaXNJMUZvcmNlZCAmJiAhaXNJMkZvcmNlZCkgPyAtMSA6IGkxLmF0dHJpYnV0ZXMucG9zaXRpb24gLSBpMi5hdHRyaWJ1dGVzLnBvc2l0aW9uO1xuICAgICAgfSk7XG4gIH1cblxuICBnZXQgc3BvbnNvcnMoKTogU3BvbnNvcltdIHtcbiAgICByZXR1cm4gdGhpcy5yZWxhdGlvbnNoaXBzPy5zcG9uc29ycz8uZGF0YTtcbiAgfVxuICBnZXQgc3RlcHMoKTogUmVjaXBlU3RlcFtdIHtcbiAgICByZXR1cm4gdGhpcy5yZWxhdGlvbnNoaXBzWydyZWNpcGUtc3RlcHMnXS5kYXRhLnNvcnQoKGEsIGIpID0+IGEuYXR0cmlidXRlc1snc3RlcC1udW1iZXInXSA+IGIuYXR0cmlidXRlc1snc3RlcC1udW1iZXInXSA/IDEgOiAtMSk7XG4gIH1cblxuICBnZXQgc3RhdHVzKCk6IFJlY2lwZVN0YXR1cyB7XG4gICAgcmV0dXJuIHRoaXMucmVsYXRpb25zaGlwcyAmJiB0aGlzLnJlbGF0aW9uc2hpcHNbJ3JlY2lwZS1zdGF0dXMnXSAmJiB0aGlzLnJlbGF0aW9uc2hpcHNbJ3JlY2lwZS1zdGF0dXMnXS5kYXRhO1xuICB9XG5cbiAgZ2V0IHJlY2lwZVR5cGUoKTogUmVjaXBlVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMucmVsYXRpb25zaGlwcyAmJiB0aGlzLnJlbGF0aW9uc2hpcHNbJ3JlY2lwZS10eXBlJ10gJiYgdGhpcy5yZWxhdGlvbnNoaXBzWydyZWNpcGUtdHlwZSddLmRhdGE7XG4gIH1cblxuICBnZXQgbW9kaWZpZWRJbmdyZWRpZW50cygpOiBTaW1wbGlmaWVkSW5ncmVkaWVudFtdIHtcbiAgICByZXR1cm4gdGhpcy5ub3JtYWxpemVkSW5ncmVkaWVudHMubWFwKGluZ3JlZGllbnQgPT4gKHsgLi4uaW5ncmVkaWVudCwgcXR5OiBpbmdyZWRpZW50LnF0eSAqICh0aGlzLm1vZGlmaWVkR3Vlc3RzIHx8ICt0aGlzLmd1ZXN0cykgfSkpO1xuICB9XG5cbiAgZ2V0IG5vcm1hbGl6ZWRJbmdyZWRpZW50cygpOiBTaW1wbGlmaWVkSW5ncmVkaWVudFtdIHtcbiAgICBpZiAoIXRoaXMuX25vcm1hbGl6ZWRJbmdyZWRpZW50cykge1xuICAgICAgdGhpcy5fbm9ybWFsaXplZEluZ3JlZGllbnRzID0gdGhpcy5pbmdyZWRpZW50cy5tYXAoKGluZ3JlZGllbnQ6IEluZ3JlZGllbnQpID0+ICh7XG4gICAgICAgIG5hbWU6IGluZ3JlZGllbnQuYXR0cmlidXRlcy5uYW1lLFxuICAgICAgICBxdHk6ICgraW5ncmVkaWVudC5xdWFudGl0eSkgLyAoK3RoaXMuZ3Vlc3RzIHx8IDEpLFxuICAgICAgICB1bml0OiBpbmdyZWRpZW50LmF0dHJpYnV0ZXMudW5pdCxcbiAgICAgICAgcGljdHVyZTogaW5ncmVkaWVudC5waWN0dXJlXG4gICAgICB9KSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9ub3JtYWxpemVkSW5ncmVkaWVudHM7XG4gIH1cblxuICBnZXQgdmlkZW9JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbJ3ZpZGVvLWlkJ107XG4gIH1cblxuICBnZXQgcG9zaXRpb24oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5hdHRyaWJ1dGVzLnBvc2l0aW9uO1xuICB9XG5cbiAgc2V0IHBvc2l0aW9uKHA6IG51bWJlcikge1xuICAgIHRoaXMuYXR0cmlidXRlcy5wb3NpdGlvbiA9IHA7XG4gIH1cblxuICBzaGFsbG93Q29weVdpdGhFdmVudHMob3JpZ2luOiBzdHJpbmcsIGdyb3VwSWQ6IHN0cmluZyk6IFJlY2lwZSB7XG4gICAgY29uc3QgcmVzID0gbmV3IFJlY2lwZSgpO1xuICAgIE9iamVjdC5hc3NpZ24ocmVzLCB0aGlzKTtcbiAgICByZXMuX2V2ZW50T3JpZ2luID0gb3JpZ2luO1xuICAgIHJlcy5fZXZlbnRzR3JvdXBJZCA9IGdyb3VwSWQ7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0RHVyYXRpb24oZHVyYXRpb246IER1cmF0aW9uKTogc3RyaW5nIHtcbiAgICBpZiAoIXRvTWludXRlcyhkdXJhdGlvbikpe1xuICAgICAgcmV0dXJuICctJztcbiAgICB9XG4gICAgaWYgKGR1cmF0aW9uLmRheXMpIHsgZHVyYXRpb24uaG91cnMgKz0gMjQgKiBkdXJhdGlvbi5kYXlzOyB9XG5cbiAgICBpZiAoIWR1cmF0aW9uLmhvdXJzKSB7XG4gICAgICByZXR1cm4gYCR7ZHVyYXRpb24ubWludXRlc30gbWluYDtcbiAgICB9XG4gICAgbGV0IGZvcm1hdGVkRHVyYXRpb24gPSBgJHtkdXJhdGlvbi5ob3Vyc30gaGA7XG4gICAgaWYgKGR1cmF0aW9uLm1pbnV0ZXMpIHtcbiAgICAgIGZvcm1hdGVkRHVyYXRpb24gKz0gIGAke2R1cmF0aW9uLm1pbnV0ZXMgPCAxMCAgID8gJyAwJyA6ICcgJ30ke2R1cmF0aW9uLm1pbnV0ZXN9YDtcbiAgICB9XG4gICAgcmV0dXJuIGZvcm1hdGVkRHVyYXRpb247XG4gIH1cbn1cbiJdfQ==
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlLmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fbW9kZWxzL3JlY2lwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFZLE1BQU0sY0FBYyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFrQjdFLE1BQU0sT0FBTyxNQUFPLFNBQVEsUUFBUTtJQUFwQzs7UUFFRSxlQUFVLEdBQUc7WUFDWCxLQUFLLEVBQUUsRUFBRTtZQUNULFFBQVEsRUFBRSxFQUFFO1lBQ1osVUFBVSxFQUFFLEVBQUU7WUFDZCxXQUFXLEVBQUUsRUFBRTtZQUNmLGtCQUFrQixFQUFFLEVBQUU7WUFDdEIsa0JBQWtCLEVBQUUsRUFBRTtZQUN0QixpQkFBaUIsRUFBRSxFQUFFO1lBQ3JCLGNBQWMsRUFBRSxFQUFFO1lBQ2xCLGNBQWMsRUFBRSxFQUFFO1lBQ2xCLFdBQVcsRUFBRSxFQUFFO1lBQ2YsTUFBTSxFQUFFLEVBQUU7WUFDVix5QkFBeUIsRUFBRSxFQUFFO1lBQzdCLG9CQUFvQixFQUFFLEVBQUU7WUFDeEIsd0JBQXdCLEVBQUUsRUFBRTtZQUM1QixVQUFVLEVBQUUsQ0FBQztZQUNiLElBQUksRUFBRSxDQUFDO1lBQ1AsU0FBUyxFQUFFLEtBQUs7WUFDaEIsVUFBVSxFQUFFLENBQUM7WUFDYixVQUFVLEVBQUUsRUFBRTtZQUNkLFFBQVEsRUFBRSxLQUFLO1lBQ2YsTUFBTSxFQUFFLFlBQVk7WUFDcEIsUUFBUSxFQUFFLEtBQUs7WUFDZixRQUFRLEVBQUUsQ0FBQyxDQUFDO1NBQ2IsQ0FBQztRQUVGLGtCQUFhLEdBU1Q7WUFDQSxXQUFXLEVBQUUsSUFBSSxrQkFBa0IsRUFBYztZQUNqRCxjQUFjLEVB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U0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFDO1lBQ3ZCLE9BQU8sR0FBRyxDQUFDO1NBQ1o7UUFDRCxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUU7WUFBRSxRQUFRLENBQUMsS0FBSyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO1NBQUU7UUFFNUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUU7WUFDbkIsT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLE1BQU0sQ0FBQztTQUNsQztRQUNELElBQUksZ0JBQWdCLEdBQUcsR0FBRyxRQUFRLENBQUMsS0FBSyxJQUFJLENBQUM7UUFDN0MsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFO1lBQ3BCLGdCQUFnQixJQUFLLEdBQUcsUUFBUSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUNuRjtRQUNELE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3VtLCBub3JtYWxpemUsIHBhcnNlLCB0b01pbnV0ZXMsIER1cmF0aW9uIH0gZnJvbSAnZHVyYXRpb24tZm5zJztcbmltcG9ydCB7IERvY3VtZW50Q29sbGVjdGlvbiwgUmVzb3VyY2UsIERvY3VtZW50UmVzb3VyY2UgfSBmcm9tICduZ3gtanNvbmFwaSc7XG5pbXBvcnQgeyBJbmdyZWRpZW50IH0gZnJvbSAnLi9pbmdyZWRpZW50JztcbmltcG9ydCB7IFBhY2thZ2UgfSBmcm9tICcuL3BhY2thZ2UnO1xuaW1wb3J0IHsgUmVjaXBlUHJvdmlkZXIgfSBmcm9tICcuL3JlY2lwZS1wcm92aWRlcic7XG5pbXBvcnQgeyBSZWNpcGVTdGF0dXMgfSBmcm9tICcuL3JlY2lwZS1zdGF0dXMnO1xuaW1wb3J0IHsgUmVjaXBlU3RlcCB9IGZyb20gJy4vcmVjaXBlLXN0ZXAnO1xuaW1wb3J0IHsgUmVjaXBlVHlwZSB9IGZyb20gJy4vcmVjaXBlLXR5cGUnO1xuaW1wb3J0IHsgU3BvbnNvciB9IGZyb20gJy4vc3BvbnNvcic7XG5pbXBvcnQgeyBUYWcgfSBmcm9tICcuL3RhZyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2ltcGxpZmllZEluZ3JlZGllbnQge1xuICBuYW1lOiBzdHJpbmc7XG4gIHF0eTogbnVtYmVyO1xuICB1bml0OiBzdHJpbmc7XG4gIHBpY3R1cmU6IHN0cmluZztcbn1cblxuXG5leHBvcnQgY2xhc3MgUmVjaXBlIGV4dGVuZHMgUmVzb3VyY2Uge1xuXG4gIGF0dHJpYnV0ZXMgPSB7XG4gICAgdGl0bGU6ICcnLFxuICAgICdleHQtaWQnOiAnJyxcbiAgICAnZXh0LWxpbmsnOiAnJyxcbiAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgJ251bWJlci1vZi1ndWVzdHMnOiAnJyxcbiAgICAncHJlcGFyYXRpb24tdGltZSc6ICcnLFxuICAgICdwcmVoZWF0aW5nLXRpbWUnOiAnJyxcbiAgICAnY29va2luZy10aW1lJzogJycsXG4gICAgJ3Jlc3RpbmctdGltZSc6ICcnLFxuICAgICdtZWRpYS11cmwnOiAnJyxcbiAgICBzb3VyY2U6ICcnLFxuICAgICdpbmZvcm1hdGlvbmFsLXBhZ2UtaHRtbCc6ICcnLFxuICAgICdmaWxpZ3JhbmUtbG9nby11cmwnOiAnJyxcbiAgICAnaW5mb3JtYXRpb25hbC1zZW50ZW5jZSc6ICcnLFxuICAgIGRpZmZpY3VsdHk6IDEsXG4gICAgY29zdDogMSxcbiAgICBzdWdnZXN0ZWQ6IGZhbHNlLFxuICAgIHBvcHVsYXJpdHk6IDAsXG4gICAgJ3ZpZGVvLWlkJzogJycsXG4gICAgcHJvbW90ZWQ6IGZhbHNlLFxuICAgIHNoYXJlZDogJ25vdF9zaGFyZWQnLFxuICAgIGVkaXRhYmxlOiBmYWxzZSxcbiAgICBwb3NpdGlvbjogLTFcbiAgfTtcblxuICByZWxhdGlvbnNoaXBzOiB7XG4gICAgaW5ncmVkaWVudHM6IERvY3VtZW50Q29sbGVjdGlvbjxJbmdyZWRpZW50PjtcbiAgICAncmVjaXBlLXN0ZXBzJzogRG9jdW1lbnRDb2xsZWN0aW9uPFJlY2lwZVN0ZXA+O1xuICAgICdyZWNpcGUtcHJvdmlkZXInOiBEb2N1bWVudFJlc291cmNlPFJlY2lwZVByb3ZpZGVyPjtcbiAgICAncmVjaXBlLXN0YXR1cyc6IERvY3VtZW50UmVzb3VyY2U8UmVjaXBlU3RhdHVzPjtcbiAgICB0YWdzOiBEb2N1bWVudENvbGxlY3Rpb248VGFnPjtcbiAgICAncmVjaXBlLXR5cGUnOiBEb2N1bWVudFJlc291cmNlPFJlY2lwZVR5cGU+O1xuICAgIHNwb25zb3JzOiBEb2N1bWVudENvbGxlY3Rpb248U3BvbnNvcj47XG4gICAgcGFja2FnZXM6IERvY3VtZW50Q29sbGVjdGlvbjxQYWNrYWdlPjtcbiAgfSA9IHtcbiAgICAgIGluZ3JlZGllbnRzOiBuZXcgRG9jdW1lbnRDb2xsZWN0aW9uPEluZ3JlZGllbnQ+KCksXG4gICAgICAncmVjaXBlLXN0ZXBzJzogbmV3IERvY3VtZW50Q29sbGVjdGlvbjxSZWNpcGVTdGVwPigpLFxuICAgICAgJ3JlY2lwZS1wcm92aWRlcic6IG5ldyBEb2N1bWVudFJlc291cmNlPFJlY2lwZVByb3ZpZGVyPigpLFxuICAgICAgJ3JlY2lwZS1zdGF0dXMnOiBuZXcgRG9jdW1lbnRSZXNvdXJjZTxSZWNpcGVTdGF0dXM+KCksXG4gICAgICB0YWdzOiBuZXcgRG9jdW1lbnRDb2xsZWN0aW9uPFRhZz4oKSxcbiAgICAgICdyZWNpcGUtdHlwZSc6IG5ldyBEb2N1bWVudFJlc291cmNlPFJlY2lwZVR5cGU+KCksXG4gICAgICBzcG9uc29yczogbmV3IERvY3VtZW50Q29sbGVjdGlvbjxTcG9uc29yPigpLFxuICAgICAgcGFja2FnZXM6IG5ldyBEb2N1bWVudENvbGxlY3Rpb248UGFja2FnZT4oKVxuICAgIH07XG5cbiAgdHRsID0gMzYwMDsgLy8gcmVjaXBlcyB3aWxsIGJlIGNhY2hlZCBmb3IgMSBob3VyXG5cbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gIGZpbmFsVGltZXIgPSB0aGlzLmF0dHJpYnV0ZXNbJ3ByZXBhcmF0aW9uLXRpbWUnXSArIHRoaXMuYXR0cmlidXRlc1sncHJlaGVhdGluZy10aW1lJ10gK1xuICAgIHRoaXMuYXR0cmlidXRlc1snY29va2luZy10aW1lJ10gKyB0aGlzLmF0dHJpYnV0ZXNbJ3Jlc3RpbmctdGltZSddO1xuICBtb2RpZmllZEd1ZXN0czogbnVtYmVyO1xuICBwcml2YXRlIF9ub3JtYWxpemVkSW5ncmVkaWVudHM6IFNpbXBsaWZpZWRJbmdyZWRpZW50W107XG5cblxuICBnZXQgdGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hdHRyaWJ1dGVzLnRpdGxlO1xuICB9XG5cbiAgZ2V0IHByb21vdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXMucHJvbW90ZWQ7XG4gIH1cblxuICBnZXQgZ3Vlc3RzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYXR0cmlidXRlc1snbnVtYmVyLW9mLWd1ZXN0cyddO1xuICB9XG5cbiAgZ2V0IHNoYXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hdHRyaWJ1dGVzLnNoYXJlZCA9PT0gJ3NoYXJlZCc7XG4gIH1cblxuICBzZXQgc2hhcmVkKGlzU2hhcmVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5hdHRyaWJ1dGVzLnNoYXJlZCA9IGlzU2hhcmVkID8gJ3NoYXJlZCcgOiAnbm90X3NoYXJlZCc7XG4gIH1cblxuICBnZXQgZmlsaWdyYW5lTG9nb1VybCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmF0dHJpYnV0ZXNbJ2ZpbGlncmFuZS1sb2dvLXVybCddKSB7XG4gICAgICByZXR1cm4gdGhpcy5hdHRyaWJ1dGVzWydmaWxpZ3JhbmUtbG9nby11cmwnXTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBnZXQgc3BvbnNvckxvZ29VcmwoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5zcG9uc29ycy5sZW5ndGggPiAwKXtcbiAgICAgIHJldHVybiB0aGlzLnNwb25zb3JzWzBdLmF0dHJpYnV0ZXNbJ2xvZ28tdXJsJ107XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0IGluZm9ybWF0aW9uYWxTZW50ZW5jZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbJ2luZm9ybWF0aW9uYWwtc2VudGVuY2UnXTtcbiAgfVxuXG4gIGdldCBjb3N0TGFiZWwoKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHRoaXMuYXR0cmlidXRlcy5jb3N0KSB7XG4gICAgICBjYXNlIDE6IHtcbiAgICAgICAgcmV0dXJuICdmYWlibGUnO1xuICAgICAgfVxuICAgICAgY2FzZSAyOiB7XG4gICAgICAgIHJldHVybiAnbW95ZW4nO1xuICAgICAgfVxuICAgICAgY2FzZSAzOiB7XG4gICAgICAgIHJldHVybiAnw6lsZXbDqSc7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHJldHVybiAnbW95ZW4nO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBkaWZmaWN1bHR5KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYXR0cmlidXRlcy5kaWZmaWN1bHR5O1xuICB9XG5cbiAgc2V0IGRpZmZpY3VsdHkoZDogbnVtYmVyKSB7XG4gICAgdGhpcy5hdHRyaWJ1dGVzLmRpZmZpY3VsdHkgPSBkO1xuICB9XG5cbiAgZ2V0IHRvdGFsVGltZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGR1cmF0aW9uID0gbm9ybWFsaXplKHN1bShcbiAgICAgIHBhcnNlKHRoaXMuYXR0cmlidXRlc1sncHJlcGFyYXRpb24tdGltZSddKSxcbiAgICAgIHBhcnNlKHRoaXMuYXR0cmlidXRlc1snY29va2luZy10aW1lJ10pLFxuICAgICAgcGFyc2UodGhpcy5hdHRyaWJ1dGVzWydyZXN0aW5nLXRpbWUnXSlcbiAgICApKTtcblxuICAgIGlmICh0b01pbnV0ZXMoZHVyYXRpb24pIDwgMTApIHtcbiAgICAgIHJldHVybiAnIDwgMTAgbWluJztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5mb3JtYXREdXJhdGlvbihkdXJhdGlvbik7XG4gIH1cblxuICBnZXQgcHJlcGFyYXRpb25UaW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0RHVyYXRpb24obm9ybWFsaXplKHBhcnNlKHRoaXMuYXR0cmlidXRlc1sncHJlcGFyYXRpb24tdGltZSddKSkpO1xuICB9XG5cbiAgZ2V0IGNvb2tpbmdUaW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0RHVyYXRpb24obm9ybWFsaXplKHBhcnNlKHRoaXMuYXR0cmlidXRlc1snY29va2luZy10aW1lJ10pKSk7XG4gIH1cblxuICBnZXQgcmVzdGluZ1RpbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtYXREdXJhdGlvbihub3JtYWxpemUocGFyc2UodGhpcy5hdHRyaWJ1dGVzWydyZXN0aW5nLXRpbWUnXSkpKTtcbiAgfVxuXG4gIC8vIFJldHVybnMgaW5ncmVkaWVudHMsIHB1dHRpbmcgdGhlIHNwb25zb3JlZCBvbmVzIGZpcnN0IGFuZCBzb3J0ZWQgYnkgcG9zaXRpb25cbiAgZ2V0IGluZ3JlZGllbnRzKCk6IEluZ3JlZGllbnRbXSB7XG4gICAgcmV0dXJuIHRoaXMucmVsYXRpb25zaGlwcy5pbmdyZWRpZW50cy5kYXRhXG4gICAgICAuZmlsdGVyKChpOiBJbmdyZWRpZW50KSA9PiBpLmF0dHJpYnV0ZXMuYWN0aXZlKVxuICAgICAgLnNvcnQoKGkxLCBpMikgPT4ge1xuICAgICAgICBjb25zdCBpc0kxRm9yY2VkID0gaTEuYXR0cmlidXRlc1snZm9yY2VkLWVhbnMnXSAmJiBpMS5hdHRyaWJ1dGVzWydmb3JjZWQtZWFucyddLmxlbmd0aCA+IDA7XG4gICAgICAgIGNvbnN0IGlzSTJGb3JjZWQgPSBpMi5hdHRyaWJ1dGVzWydmb3JjZWQtZWFucyddICYmIGkyLmF0dHJpYnV0ZXNbJ2ZvcmNlZC1lYW5zJ10ubGVuZ3RoID4gMDtcbiAgICAgICAgcmV0dXJuIChpc0kxRm9yY2VkICYmICFpc0kyRm9yY2VkKSA/IC0xIDogaTEuYXR0cmlidXRlcy5wb3NpdGlvbiAtIGkyLmF0dHJpYnV0ZXMucG9zaXRpb247XG4gICAgICB9KTtcbiAgfVxuXG4gIGdldCBzcG9uc29ycygpOiBTcG9uc29yW10ge1xuICAgIHJldHVybiB0aGlzLnJlbGF0aW9uc2hpcHM/LnNwb25zb3JzPy5kYXRhO1xuICB9XG4gIGdldCBzdGVwcygpOiBSZWNpcGVTdGVwW10ge1xuICAgIHJldHVybiB0aGlzLnJlbGF0aW9uc2hpcHNbJ3JlY2lwZS1zdGVwcyddLmRhdGEuc29ydCgoYSwgYikgPT4gYS5hdHRyaWJ1dGVzWydzdGVwLW51bWJlciddID4gYi5hdHRyaWJ1dGVzWydzdGVwLW51bWJlciddID8gMSA6IC0xKTtcbiAgfVxuXG4gIGdldCBzdGF0dXMoKTogUmVjaXBlU3RhdHVzIHtcbiAgICByZXR1cm4gdGhpcy5yZWxhdGlvbnNoaXBzICYmIHRoaXMucmVsYXRpb25zaGlwc1sncmVjaXBlLXN0YXR1cyddICYmIHRoaXMucmVsYXRpb25zaGlwc1sncmVjaXBlLXN0YXR1cyddLmRhdGE7XG4gIH1cblxuICBnZXQgcmVjaXBlVHlwZSgpOiBSZWNpcGVUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5yZWxhdGlvbnNoaXBzICYmIHRoaXMucmVsYXRpb25zaGlwc1sncmVjaXBlLXR5cGUnXSAmJiB0aGlzLnJlbGF0aW9uc2hpcHNbJ3JlY2lwZS10eXBlJ10uZGF0YTtcbiAgfVxuXG4gIGdldCBtb2RpZmllZEluZ3JlZGllbnRzKCk6IFNpbXBsaWZpZWRJbmdyZWRpZW50W10ge1xuICAgIHJldHVybiB0aGlzLm5vcm1hbGl6ZWRJbmdyZWRpZW50cy5tYXAoaW5ncmVkaWVudCA9PiAoeyAuLi5pbmdyZWRpZW50LCBxdHk6IGluZ3JlZGllbnQucXR5ICogKHRoaXMubW9kaWZpZWRHdWVzdHMgfHwgK3RoaXMuZ3Vlc3RzKSB9KSk7XG4gIH1cblxuICBnZXQgbm9ybWFsaXplZEluZ3JlZGllbnRzKCk6IFNpbXBsaWZpZWRJbmdyZWRpZW50W10ge1xuICAgIGlmICghdGhpcy5fbm9ybWFsaXplZEluZ3JlZGllbnRzIHx8IHRoaXMuX25vcm1hbGl6ZWRJbmdyZWRpZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuX25vcm1hbGl6ZWRJbmdyZWRpZW50cyA9IHRoaXMuaW5ncmVkaWVudHMubWFwKChpbmdyZWRpZW50OiBJbmdyZWRpZW50KSA9PiAoe1xuICAgICAgICBuYW1lOiBpbmdyZWRpZW50LmF0dHJpYnV0ZXMubmFtZSxcbiAgICAgICAgcXR5OiAoK2luZ3JlZGllbnQucXVhbnRpdHkpIC8gKCt0aGlzLmd1ZXN0cyB8fCAxKSxcbiAgICAgICAgdW5pdDogaW5ncmVkaWVudC5hdHRyaWJ1dGVzLnVuaXQsXG4gICAgICAgIHBpY3R1cmU6IGluZ3JlZGllbnQucGljdHVyZVxuICAgICAgfSkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fbm9ybWFsaXplZEluZ3JlZGllbnRzO1xuICB9XG5cbiAgZ2V0IHZpZGVvSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hdHRyaWJ1dGVzWyd2aWRlby1pZCddO1xuICB9XG5cbiAgZ2V0IHBvc2l0aW9uKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYXR0cmlidXRlcy5wb3NpdGlvbjtcbiAgfVxuXG4gIHNldCBwb3NpdGlvbihwOiBudW1iZXIpIHtcbiAgICB0aGlzLmF0dHJpYnV0ZXMucG9zaXRpb24gPSBwO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXREdXJhdGlvbihkdXJhdGlvbjogRHVyYXRpb24pOiBzdHJpbmcge1xuICAgIGlmICghdG9NaW51dGVzKGR1cmF0aW9uKSl7XG4gICAgICByZXR1cm4gJy0nO1xuICAgIH1cbiAgICBpZiAoZHVyYXRpb24uZGF5cykgeyBkdXJhdGlvbi5ob3VycyArPSAyNCAqIGR1cmF0aW9uLmRheXM7IH1cblxuICAgIGlmICghZHVyYXRpb24uaG91cnMpIHtcbiAgICAgIHJldHVybiBgJHtkdXJhdGlvbi5taW51dGVzfSBtaW5gO1xuICAgIH1cbiAgICBsZXQgZm9ybWF0ZWREdXJhdGlvbiA9IGAke2R1cmF0aW9uLmhvdXJzfSBoYDtcbiAgICBpZiAoZHVyYXRpb24ubWludXRlcykge1xuICAgICAgZm9ybWF0ZWREdXJhdGlvbiArPSAgYCR7ZHVyYXRpb24ubWludXRlcyA8IDEwICAgPyAnIDAnIDogJyAnfSR7ZHVyYXRpb24ubWludXRlc31gO1xuICAgIH1cbiAgICByZXR1cm4gZm9ybWF0ZWREdXJhdGlvbjtcbiAgfVxufVxuIl19
@@ -13,4 +13,4 @@ export class User {
13
13
  return (_a = this.app_metadata.env[environment.env]) === null || _a === void 0 ? void 0 : _a.supplier_id;
14
14
  }
15
15
  }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5qcyIsInNvdXJjZVJvb3QiOiIvYnVpbGRzL21pYW0vbmctbWlhbS1zZGsvcHJvamVjdHMvbmctbWlhbS9zcmMvIiwic291cmNlcyI6WyJsaWIvX21vZGVscy91c2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUxRCxNQUFNLE9BQU8sSUFBSTtJQThCZixZQUFZLEtBQUssR0FBRyxFQUFFO1FBTnRCLGtCQUFhLEdBR1QsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDeEIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFHdEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksVUFBVTs7UUFDWixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxLQUFLLFNBQVMsRUFBRTtZQUFFLE9BQU8sSUFBSSxDQUFDO1NBQUU7UUFDekQsYUFBUSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUE2QiwwQ0FBRSxXQUFXLENBQUM7SUFDMUYsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICcuLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xuXG5leHBvcnQgY2xhc3MgVXNlciB7XG4gIGlkOiBzdHJpbmc7XG4gIGZpcnN0X25hbWU6IHN0cmluZztcbiAgbGFzdF9uYW1lOiBzdHJpbmc7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIHBpY3R1cmU6IHN0cmluZztcbiAgZnJvbV91c2VyX2lkOiBzdHJpbmc7XG4gIGFwcF9tZXRhZGF0YToge1xuICAgIGN1cnJlbnRfZ3JvY2VyaWVzX2xpc3RfaWQ6IHN0cmluZztcbiAgICByZWNpcGVfcHJvdmlkZXI6IHN0cmluZztcbiAgICBwZXJtaXNzaW9uczogc3RyaW5nW107XG4gICAgcm9sZXM6IHN0cmluZ1tdO1xuICAgIGVudjoge1xuICAgICAgZGV2OiB7XG4gICAgICAgIHN1cHBsaWVyX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgICAgdWF0OiB7XG4gICAgICAgIHN1cHBsaWVyX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgICAgcHJvZDoge1xuICAgICAgICBzdXBwbGllcl9pZDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICB1c2VyX21ldGFkYXRhOiB7XG4gICAgYWRkcmVzcz86IHN0cmluZztcbiAgICBwcmVmZXJlbmNlcz86IGFueTtcbiAgfSA9IHsgcHJlZmVyZW5jZXM6IHt9IH07XG4gIGZvcmJpZFByb2ZpbGluZyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKGF0dHJzID0ge30pIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIGF0dHJzKTtcbiAgfVxuXG4gIGdldCBzdXBwbGllcklkKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuYXBwX21ldGFkYXRhLmVudiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiBudWxsOyB9XG4gICAgcmV0dXJuICh0aGlzLmFwcF9tZXRhZGF0YS5lbnZbZW52aXJvbm1lbnQuZW52XSBhcyB7IHN1cHBsaWVyX2lkOiBzdHJpbmcgfSk/LnN1cHBsaWVyX2lkO1xuICB9XG59XG4iXX0=
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5qcyIsInNvdXJjZVJvb3QiOiIvYnVpbGRzL21pYW0vbmctbWlhbS1zZGsvcHJvamVjdHMvbmctbWlhbS9zcmMvIiwic291cmNlcyI6WyJsaWIvX21vZGVscy91c2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUxRCxNQUFNLE9BQU8sSUFBSTtJQTZCZixZQUFZLEtBQUssR0FBRyxFQUFFO1FBTnRCLGtCQUFhLEdBR1QsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDeEIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFHdEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksVUFBVTs7UUFDWixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxLQUFLLFNBQVMsRUFBRTtZQUFFLE9BQU8sSUFBSSxDQUFDO1NBQUU7UUFDekQsYUFBUSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUE2QiwwQ0FBRSxXQUFXLENBQUM7SUFDMUYsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICcuLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xuXG5leHBvcnQgY2xhc3MgVXNlciB7XG4gIGlkOiBzdHJpbmc7XG4gIGZpcnN0X25hbWU6IHN0cmluZztcbiAgbGFzdF9uYW1lOiBzdHJpbmc7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIHBpY3R1cmU6IHN0cmluZztcbiAgZnJvbV91c2VyX2lkOiBzdHJpbmc7XG4gIGFwcF9tZXRhZGF0YToge1xuICAgIHJlY2lwZV9wcm92aWRlcjogc3RyaW5nO1xuICAgIHBlcm1pc3Npb25zOiBzdHJpbmdbXTtcbiAgICByb2xlczogc3RyaW5nW107XG4gICAgZW52OiB7XG4gICAgICBkZXY6IHtcbiAgICAgICAgc3VwcGxpZXJfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgICB1YXQ6IHtcbiAgICAgICAgc3VwcGxpZXJfaWQ6IHN0cmluZztcbiAgICAgIH07XG4gICAgICBwcm9kOiB7XG4gICAgICAgIHN1cHBsaWVyX2lkOiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gIH07XG4gIHVzZXJfbWV0YWRhdGE6IHtcbiAgICBhZGRyZXNzPzogc3RyaW5nO1xuICAgIHByZWZlcmVuY2VzPzogYW55O1xuICB9ID0geyBwcmVmZXJlbmNlczoge30gfTtcbiAgZm9yYmlkUHJvZmlsaW5nID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoYXR0cnMgPSB7fSkge1xuICAgIE9iamVjdC5hc3NpZ24odGhpcywgYXR0cnMpO1xuICB9XG5cbiAgZ2V0IHN1cHBsaWVySWQoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5hcHBfbWV0YWRhdGEuZW52ID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIG51bGw7IH1cbiAgICByZXR1cm4gKHRoaXMuYXBwX21ldGFkYXRhLmVudltlbnZpcm9ubWVudC5lbnZdIGFzIHsgc3VwcGxpZXJfaWQ6IHN0cmluZyB9KT8uc3VwcGxpZXJfaWQ7XG4gIH1cbn1cbiJdfQ==
@@ -2,10 +2,6 @@ import { EventEmitter, Injectable } from '@angular/core';
2
2
  import { BehaviorSubject } from 'rxjs';
3
3
  import { filter, take } from 'rxjs/operators';
4
4
  import * as i0 from "@angular/core";
5
- export class CustomProperties {
6
- }
7
- export class EventTrace {
8
- }
9
5
  export class AnalyticsService {
10
6
  constructor() {
11
7
  this.EVENT_PAGEVIEW = 'pageview'; // GA4 is page_view -> use this one on ga to autotrack some fields
@@ -100,6 +96,29 @@ export class AnalyticsService {
100
96
  script.onload = () => console.log(`[Miam] Optimize ready for key: ${JSON.stringify(key)}`);
101
97
  document.head.appendChild(script);
102
98
  }
99
+ /** ************************************************* SEND EVENT FOR BASKET ACTIONS ************************************************* **/
100
+ sendRemoveRecipesEvents(actions) {
101
+ actions.forEach(action => {
102
+ this.sendEventWhenReady(this.EVENT_RECIPE_REMOVE, action.params.eventTrace.originPath, { recipe_id: action.params.recipeId });
103
+ });
104
+ }
105
+ sendAddRecipesEvents(actions) {
106
+ actions.forEach(action => {
107
+ this.sendEventWhenReady(this.EVENT_RECIPE_ADD, action.params.eventTrace.originPath, { recipe_id: action.params.recipeId });
108
+ });
109
+ }
110
+ sendUpdateGuestsEvents(actions) {
111
+ actions.forEach(action => {
112
+ this.sendEventWhenReady(this.EVENT_RECIPE_CHANGEGUESTS, action.params.eventTrace.originPath, { recipe_id: action.params.recipeId });
113
+ });
114
+ }
115
+ sendEventsOfResetBasket(basket, eventTrace) {
116
+ basket.recipeInfos.forEach(info => {
117
+ const newProp = { recipe_id: info.id };
118
+ const mergedProps = Object.assign(newProp, eventTrace.props);
119
+ this.sendEventWhenReady(this.EVENT_RECIPE_REMOVE, eventTrace.originPath, mergedProps);
120
+ });
121
+ }
103
122
  }
104
123
  AnalyticsService.ɵfac = function AnalyticsService_Factory(t) { return new (t || AnalyticsService)(); };
105
124
  AnalyticsService.ɵprov = i0.ɵɵdefineInjectable({ token: AnalyticsService, factory: AnalyticsService.ɵfac, providedIn: 'root' });
@@ -109,4 +128,4 @@ AnalyticsService.ɵprov = i0.ɵɵdefineInjectable({ token: AnalyticsService, fac
109
128
  providedIn: 'root'
110
129
  }]
111
130
  }], null, null); })();
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiL2J1aWxkcy9taWFtL25nLW1pYW0tc2RrL3Byb2plY3RzL25nLW1pYW0vc3JjLyIsInNvdXJjZXMiOlsibGliL19zZXJ2aWNlcy9hbmFseXRpY3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRzlDLE1BQU0sT0FBTyxnQkFBZ0I7Q0FrQjVCO0FBRUQsTUFBTSxPQUFPLFVBQVU7Q0FHdEI7QUFLRCxNQUFNLE9BQU8sZ0JBQWdCO0lBSDdCO1FBSUUsbUJBQWMsR0FBRyxVQUFVLENBQUMsQ0FBQyxrRUFBa0U7UUFDL0YsaUJBQVksR0FBRyxRQUFRLENBQUM7UUFDeEIsc0JBQWlCLEdBQUcsYUFBYSxDQUFDO1FBQ2xDLHlCQUFvQixHQUFHLGdCQUFnQixDQUFDO1FBQ3hDLHFCQUFnQixHQUFHLFlBQVksQ0FBQztRQUNoQyx3QkFBbUIsR0FBRyxlQUFlLENBQUM7UUFDdEMsdUJBQWtCLEdBQUcsY0FBYyxDQUFDO1FBQ3BDLDhCQUF5QixHQUFHLHNCQUFzQixDQUFDO1FBQ25ELHNCQUFpQixHQUFHLGFBQWEsQ0FBQztRQUNsQyx3QkFBbUIsR0FBRyxlQUFlLENBQUM7UUFDdEMsdUJBQWtCLEdBQUcsY0FBYyxDQUFDO1FBQ3BDLGlDQUE0QixHQUFHLHdCQUF3QixDQUFDO1FBQ3hELGlDQUE0QixHQUFHLHdCQUF3QixDQUFDO1FBQ3hELHdCQUFtQixHQUFHLGVBQWUsQ0FBQztRQUN0QyxvQkFBZSxHQUFHLFdBQVcsQ0FBQztRQUM5Qix1QkFBa0IsR0FBRyxjQUFjLENBQUM7UUFDcEMsd0JBQW1CLEdBQUcsZUFBZSxDQUFDO1FBQ3RDLGdDQUEyQixHQUFHLHVCQUF1QixDQUFDO1FBQ3RELDBCQUFxQixHQUFHLGlCQUFpQixDQUFDO1FBQzFDLDRCQUF1QixHQUFHLG1CQUFtQixDQUFDO1FBQzlDLDJCQUFzQixHQUFHLGtCQUFrQixDQUFDO1FBQzVDLGtDQUE2QixHQUFHLG1CQUFtQixDQUFDO1FBRXBELFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUU3QyxpQkFBWSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO0tBK0VqRTtJQTdFQyxJQUFJLENBQUMsTUFBYyxFQUFFLFdBQW9CO1FBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsWUFBWSxDQUFDLEdBQVc7UUFDdEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7SUFDdkIsQ0FBQztJQUVPLEtBQUssQ0FBQyxJQUFZLEVBQUUsSUFBWSxFQUFFLEtBQXdCO1FBQ2hFLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7U0FDbEM7UUFDRCw2REFBNkQ7UUFDN0QsU0FBUyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDYixJQUFJO1lBQ0osSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO1lBQ3BCLEtBQUs7U0FDTixDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxJQUFZLEVBQUUsSUFBWSxFQUFFLEtBQXdCO1FBQ3JFLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN0QztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNkLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUN0QixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ1IsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVPLEdBQUcsQ0FBQyxJQUFZO1FBQ3RCLElBQUksSUFBSSxFQUFFO1lBQ1IsT0FBTyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxFQUFFLENBQUM7U0FDcEM7UUFDRCxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDdkIsQ0FBQztJQUVPLGdCQUFnQixDQUFDLE1BQWM7UUFDckMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxJQUFJLE1BQU0sS0FBSyxXQUFXLEVBQUU7WUFDMUIsb0hBQW9IO1lBQ3BILE1BQU0sQ0FBQyxHQUFHLEdBQUcsbURBQW1ELENBQUM7U0FDbEU7YUFBTTtZQUNMLHFEQUFxRDtZQUNyRCxzSEFBc0g7WUFDdEgsdURBQXVEO1lBQ3ZELE1BQU0sQ0FBQyxHQUFHLEdBQUcsNkNBQTZDLENBQUM7U0FDNUQ7UUFDRCxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNwQixNQUFNLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMzQyxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQVMsRUFBRTtZQUN6QixPQUFPLENBQUMsR0FBRyxDQUFDLHNDQUFzQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1RSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixDQUFDLENBQUM7UUFDRixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU8sZUFBZSxDQUFDLEdBQVc7UUFDakMsSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMxQixzQ0FBc0M7WUFDdEMsT0FBTyxDQUFDLElBQUksQ0FBQyxtREFBbUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdkYsT0FBTztTQUNSO1FBQ0QsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxNQUFNLENBQUMsR0FBRyxHQUFHLGlEQUFpRCxHQUFHLEVBQUUsQ0FBQztRQUNwRSxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0NBQWtDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pHLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7O2dGQXhHVSxnQkFBZ0I7d0RBQWhCLGdCQUFnQixXQUFoQixnQkFBZ0IsbUJBRmYsTUFBTTtrREFFUCxnQkFBZ0I7Y0FINUIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZGVjbGFyZSBjb25zdCBwbGF1c2libGU7XG5leHBvcnQgY2xhc3MgQ3VzdG9tUHJvcGVydGllcyB7XG4gIC8vIHRzbGludDpkaXNhYmxlOiB2YXJpYWJsZS1uYW1lXG4gIHJlY2lwZV9pZD86IHN0cmluZ3xudW1iZXI7XG4gIGNhdGVnb3J5X2lkPzogc3RyaW5nfG51bWJlcjtcbiAgZW50cnlfbmFtZT86IHN0cmluZztcbiAgYmFza2V0X2lkPzogc3RyaW5nfG51bWJlcjtcbiAgbWlhbV9hbW91bnQ/OiBzdHJpbmd8bnVtYmVyO1xuICB0b3RhbF9hbW91bnQ/OiBzdHJpbmd8bnVtYmVyO1xuICBwb3NfaWQ/OiBzdHJpbmc7XG4gIHBvc19uYW1lPzogc3RyaW5nO1xuICBzZWFyY2hfdGVybT86IHN0cmluZztcbiAgYWJUZXN0S2V5Pzogc3RyaW5nO1xuICBidWRnZXRfdXNlcj86IHN0cmluZ3xudW1iZXI7XG4gIGJ1ZGdldF9wbGFubmVyPzogc3RyaW5nfG51bWJlcjtcbiAgcmVjaXBlc19jb3VudD86IHN0cmluZ3xudW1iZXI7XG4gIGd1ZXN0cz86IHN0cmluZ3xudW1iZXI7XG4gIHVzZXNfY291bnQ/OiBzdHJpbmd8bnVtYmVyO1xuICB0aW1lX3Bhc3NlZD86IHN0cmluZ3xudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBFdmVudFRyYWNlIHtcbiAgb3JpZ2luUGF0aDogc3RyaW5nO1xuICBwcm9wczogQ3VzdG9tUHJvcGVydGllcztcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQW5hbHl0aWNzU2VydmljZSB7XG4gIEVWRU5UX1BBR0VWSUVXID0gJ3BhZ2V2aWV3JzsgLy8gR0E0IGlzIHBhZ2VfdmlldyAtPiB1c2UgdGhpcyBvbmUgb24gZ2EgdG8gYXV0b3RyYWNrIHNvbWUgZmllbGRzXG4gIEVWRU5UX1NFQVJDSCA9ICdzZWFyY2gnO1xuICBFVkVOVF9SRUNJUEVfU0hPVyA9ICdyZWNpcGUuc2hvdyc7XG4gIEVWRU5UX1JFQ0lQRV9ESVNQTEFZID0gJ3JlY2lwZS5kaXNwbGF5JztcbiAgRVZFTlRfUkVDSVBFX0FERCA9ICdyZWNpcGUuYWRkJztcbiAgRVZFTlRfUkVDSVBFX1JFTU9WRSA9ICdyZWNpcGUucmVtb3ZlJztcbiAgRVZFTlRfUkVDSVBFX1JFU0VUID0gJ3JlY2lwZS5yZXNldCc7XG4gIEVWRU5UX1JFQ0lQRV9DSEFOR0VHVUVTVFMgPSAncmVjaXBlLmNoYW5nZS1ndWVzdHMnO1xuICBFVkVOVF9SRUNJUEVfTElLRSA9ICdyZWNpcGUubGlrZSc7XG4gIEVWRU5UX1JFQ0lQRV9VTkxJS0UgPSAncmVjaXBlLnVubGlrZSc7XG4gIEVWRU5UX1JFQ0lQRV9QUklOVCA9ICdyZWNpcGUucHJpbnQnO1xuICBFVkVOVF9QRVJTT05BTF9SRUNJUEVfQ1JFQVRFID0gJ3JlY2lwZS5wZXJzb25hbC5jcmVhdGUnO1xuICBFVkVOVF9QRVJTT05BTF9SRUNJUEVfREVMRVRFID0gJ3JlY2lwZS5wZXJzb25hbC5kZWxldGUnO1xuICBFVkVOVF9DQVRFR09SWV9TSE9XID0gJ2NhdGVnb3J5LnNob3cnO1xuICBFVkVOVF9FTlRSWV9BREQgPSAnZW50cnkuYWRkJztcbiAgRVZFTlRfRU5UUllfREVMRVRFID0gJ2VudHJ5LmRlbGV0ZSc7XG4gIEVWRU5UX0VOVFJZX1JFUExBQ0UgPSAnZW50cnkucmVwbGFjZSc7XG4gIEVWRU5UX0VOVFJZX0NIQU5HRV9RVUFOVElUWSA9ICdlbnRyeS5jaGFuZ2UtcXVhbnRpdHknO1xuICBFVkVOVF9QQVlNRU5UX1NUQVJURUQgPSAncGF5bWVudC5zdGFydGVkJztcbiAgRVZFTlRfUEFZTUVOVF9DT05GSVJNRUQgPSAncGF5bWVudC5jb25maXJtZWQnO1xuICBFVkVOVF9CQVNLRVRfQ09ORklSTUVEID0gJ2Jhc2tldC5jb25maXJtZWQnO1xuICBFVkVOVF9NRUFMU19QTEFOTkVSX0NPTkZJUk1FRCA9ICdwbGFubmVyLmNvbmZpcm1lZCc7XG5cbiAgcmVhZHkkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgYWJUZXN0a2V5OiBzdHJpbmc7XG4gIGV2ZW50RW1pdHRlcjogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBpbml0KGRvbWFpbjogc3RyaW5nLCBvcHRpbWl6ZUtleT86IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX2luamVjdFBsYXVzaWJsZShkb21haW4pO1xuICAgIHRoaXMuX2luamVjdE9wdGltaXplKG9wdGltaXplS2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGlkZW50aWZpZXIgb2YgdGhlIEFCVGVzdCBleHBlcmllbmNlIGlmIG9uZSBpcyBydW5uaW5nXG4gICAqIEl0IHdpbGwgdGhlbiBiZSBhZGRlZCBhcyBwcm9wcyB0byBhbGwgZXZlbnRzIHNlbnRcbiAgICogQHBhcmFtIGtleSBBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgQUJUZXN0IGV4cGVyaWVuY2VcbiAgICovXG4gIHNldEFiVGVzdEtleShrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuYWJUZXN0a2V5ID0ga2V5O1xuICB9XG5cbiAgcHJpdmF0ZSBldmVudChuYW1lOiBzdHJpbmcsIHBhdGg6IHN0cmluZywgcHJvcHM/OiBDdXN0b21Qcm9wZXJ0aWVzKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWJUZXN0a2V5KSB7XG4gICAgICBwcm9wcy5hYlRlc3RLZXkgPSB0aGlzLmFiVGVzdGtleTtcbiAgICB9XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtY2FsbFxuICAgIHBsYXVzaWJsZShuYW1lLCB7IHU6IHRoaXMudXJsKHBhdGgpLCBwcm9wcyB9KTtcbiAgICB0aGlzLmV2ZW50RW1pdHRlci5lbWl0KFxuICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBuYW1lLFxuICAgICAgICBwYXRoOiB0aGlzLnVybChwYXRoKSxcbiAgICAgICAgcHJvcHNcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHNlbmRFdmVudFdoZW5SZWFkeShuYW1lOiBzdHJpbmcsIHBhdGg6IHN0cmluZywgcHJvcHM/OiBDdXN0b21Qcm9wZXJ0aWVzKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVhZHkkLmdldFZhbHVlKCkpIHtcbiAgICAgIHJldHVybiB0aGlzLmV2ZW50KG5hbWUsIHBhdGgsIHByb3BzKTtcbiAgICB9XG4gICAgdGhpcy5yZWFkeSQucGlwZShcbiAgICAgIGZpbHRlcihyZWFkeSA9PiByZWFkeSksXG4gICAgICB0YWtlKDEpXG4gICAgKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5ldmVudChuYW1lLCBwYXRoLCBwcm9wcykpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cmwocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAocGF0aCkge1xuICAgICAgcmV0dXJuIGAke2xvY2F0aW9uLm9yaWdpbn0ke3BhdGh9YDtcbiAgICB9XG4gICAgcmV0dXJuIGxvY2F0aW9uLmhyZWY7XG4gIH1cblxuICBwcml2YXRlIF9pbmplY3RQbGF1c2libGUoZG9tYWluOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICBpZiAoZG9tYWluID09PSAnbWlhbS50ZXN0Jykge1xuICAgICAgLy8gSW4gZGV2ZWxvcG1lbnQsIGNoYXJnZSB0aGUgXCJsb2NhbFwiIGV4dGVuc2lvbiB0byBtYWtlIHN1cmUgZXZlbnRzIGNhbiBiZSByb3V0ZWQgZnJvbSBsb2NhbGhvc3QgdG8gbWlhbS50ZXN0IGRvbWFpblxuICAgICAgc2NyaXB0LnNyYyA9ICdodHRwczovL3BsYXVzaWJsZS5pby9qcy9wbGF1c2libGUubG9jYWwubWFudWFsLmpzJztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVXNlIG1hbnVhbCBzY3JpcHQgdG8gbGltaXQgdGhlIG51bWJlciBvZiBwYWdldmlld3NcbiAgICAgIC8vIERvbid0IHRyaWdnZXIgcGFnZXZpZXdzIGF1dG9tYXRpY2FsbHkuIEFsc28gYWxsb3dzIHlvdSB0byBzcGVjaWZ5IGN1c3RvbSBsb2NhdGlvbnMgdG8gcmVkYWN0IFVSTHMgd2l0aCBpZGVudGlmaWVycy5cbiAgICAgIC8vIFlvdSBjYW4gYWxzbyB1c2UgaXQgdG8gdHJhY2sgY3VzdG9tIHF1ZXJ5IHBhcmFtZXRlcnNcbiAgICAgIHNjcmlwdC5zcmMgPSAnaHR0cHM6Ly9wbGF1c2libGUuaW8vanMvcGxhdXNpYmxlLm1hbnVhbC5qcyc7XG4gICAgfVxuICAgIHNjcmlwdC5kZWZlciA9IHRydWU7XG4gICAgc2NyaXB0LnNldEF0dHJpYnV0ZSgnZGF0YS1kb21haW4nLCBkb21haW4pO1xuICAgIHNjcmlwdC5vbmxvYWQgPSAoKTogdm9pZCA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhgW01pYW1dIEFuYWx5dGljcyByZWFkeSBmb3IgZG9tYWluOiAke0pTT04uc3RyaW5naWZ5KGRvbWFpbil9YCk7XG4gICAgICB0aGlzLnJlYWR5JC5uZXh0KHRydWUpO1xuICAgIH07XG4gICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5qZWN0T3B0aW1pemUoa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIWtleSB8fCBrZXkubGVuZ3RoIDwgMCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUuaW5mbyhgW01pYW1dIEdvb2dsZSBPcHRpbWl6ZSBub3QgaW5pdGlhbGl6ZWQgKG5vIGtleSkgJHtKU09OLnN0cmluZ2lmeShrZXkpfWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICBzY3JpcHQuc3JjID0gYGh0dHBzOi8vd3d3Lmdvb2dsZW9wdGltaXplLmNvbS9vcHRpbWl6ZS5qcz9pZD0ke2tleX1gO1xuICAgIHNjcmlwdC5vbmxvYWQgPSAoKTogdm9pZCA9PiBjb25zb2xlLmxvZyhgW01pYW1dIE9wdGltaXplIHJlYWR5IGZvciBrZXk6ICR7SlNPTi5zdHJpbmdpZnkoa2V5KX1gKTtcbiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gIH1cbn1cbiJdfQ==
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiL2J1aWxkcy9taWFtL25nLW1pYW0tc2RrL3Byb2plY3RzL25nLW1pYW0vc3JjLyIsInNvdXJjZXMiOlsibGliL19zZXJ2aWNlcy9hbmFseXRpY3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBVTlDLE1BQU0sT0FBTyxnQkFBZ0I7SUFIN0I7UUFJRSxtQkFBYyxHQUFHLFVBQVUsQ0FBQyxDQUFDLGtFQUFrRTtRQUMvRixpQkFBWSxHQUFHLFFBQVEsQ0FBQztRQUN4QixzQkFBaUIsR0FBRyxhQUFhLENBQUM7UUFDbEMseUJBQW9CLEdBQUcsZ0JBQWdCLENBQUM7UUFDeEMscUJBQWdCLEdBQUcsWUFBWSxDQUFDO1FBQ2hDLHdCQUFtQixHQUFHLGVBQWUsQ0FBQztRQUN0Qyx1QkFBa0IsR0FBRyxjQUFjLENBQUM7UUFDcEMsOEJBQXlCLEdBQUcsc0JBQXNCLENBQUM7UUFDbkQsc0JBQWlCLEdBQUcsYUFBYSxDQUFDO1FBQ2xDLHdCQUFtQixHQUFHLGVBQWUsQ0FBQztRQUN0Qyx1QkFBa0IsR0FBRyxjQUFjLENBQUM7UUFDcEMsaUNBQTRCLEdBQUcsd0JBQXdCLENBQUM7UUFDeEQsaUNBQTRCLEdBQUcsd0JBQXdCLENBQUM7UUFDeEQsd0JBQW1CLEdBQUcsZUFBZSxDQUFDO1FBQ3RDLG9CQUFlLEdBQUcsV0FBVyxDQUFDO1FBQzlCLHVCQUFrQixHQUFHLGNBQWMsQ0FBQztRQUNwQyx3QkFBbUIsR0FBRyxlQUFlLENBQUM7UUFDdEMsZ0NBQTJCLEdBQUcsdUJBQXVCLENBQUM7UUFDdEQsMEJBQXFCLEdBQUcsaUJBQWlCLENB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LENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQ25DLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQ3RDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxPQUF1QjtRQUM1QyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxrQkFBa0IsQ0FDckIsSUFBSSxDQUFDLHlCQUF5QixFQUM5QixNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQ25DLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQ3RDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxNQUFjLEVBQUUsVUFBc0I7UUFDNUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDaEMsTUFBTSxPQUFPLEdBQXFCLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN6RCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxVQUFVLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3hGLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7Z0ZBaEpVLGdCQUFnQjt3REFBaEIsZ0JBQWdCLFdBQWhCLGdCQUFnQixtQkFGZixNQUFNO2tEQUVQLGdCQUFnQjtjQUg1QixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQmFza2V0IH0gZnJvbSAnLi4vX21vZGVscyc7XG5pbXBvcnQgeyBCYXNrZXRBY3Rpb24gfSBmcm9tICcuLi9fdHlwZXMvYmFza2V0LWFjdGlvbic7XG5pbXBvcnQgeyBDdXN0b21Qcm9wZXJ0aWVzLCBFdmVudFRyYWNlIH0gZnJvbSAnLi4vX3R5cGVzL2V2ZW50LXRyYWNlJztcblxuZGVjbGFyZSBjb25zdCBwbGF1c2libGU7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFuYWx5dGljc1NlcnZpY2Uge1xuICBFVkVOVF9QQUdFVklFVyA9ICdwYWdldmlldyc7IC8vIEdBNCBpcyBwYWdlX3ZpZXcgLT4gdXNlIHRoaXMgb25lIG9uIGdhIHRvIGF1dG90cmFjayBzb21lIGZpZWxkc1xuICBFVkVOVF9TRUFSQ0ggPSAnc2VhcmNoJztcbiAgRVZFTlRfUkVDSVBFX1NIT1cgPSAncmVjaXBlLnNob3cnO1xuICBFVkVOVF9SRUNJUEVfRElTUExBWSA9ICdyZWNpcGUuZGlzcGxheSc7XG4gIEVWRU5UX1JFQ0lQRV9BREQgPSAncmVjaXBlLmFkZCc7XG4gIEVWRU5UX1JFQ0lQRV9SRU1PVkUgPSAncmVjaXBlLnJlbW92ZSc7XG4gIEVWRU5UX1JFQ0lQRV9SRVNFVCA9ICdyZWNpcGUucmVzZXQnO1xuICBFVkVOVF9SRUNJUEVfQ0hBTkdFR1VFU1RTID0gJ3JlY2lwZS5jaGFuZ2UtZ3Vlc3RzJztcbiAgRVZFTlRfUkVDSVBFX0xJS0UgPSAncmVjaXBlLmxpa2UnO1xuICBFVkVOVF9SRUNJUEVfVU5MSUtFID0gJ3JlY2lwZS51bmxpa2UnO1xuICBFVkVOVF9SRUNJUEVfUFJJTlQgPSAncmVjaXBlLnByaW50JztcbiAgRVZFTlRfUEVSU09OQUxfUkVDSVBFX0NSRUFURSA9ICdyZWNpcGUucGVyc29uYWwuY3JlYXRlJztcbiAgRVZFTlRfUEVSU09OQUxfUkVDSVBFX0RFTEVURSA9ICdyZWNpcGUucGVyc29uYWwuZGVsZXRlJztcbiAgRVZFTlRfQ0FURUdPUllfU0hPVyA9ICdjYXRlZ29yeS5zaG93JztcbiAgRVZFTlRfRU5UUllfQUREID0gJ2VudHJ5LmFkZCc7XG4gIEVWRU5UX0VOVFJZX0RFTEVURSA9ICdlbnRyeS5kZWxldGUnO1xuICBFVkVOVF9FTlRSWV9SRVBMQUNFID0gJ2VudHJ5LnJlcGxhY2UnO1xuICBFVkVOVF9FTlRSWV9DSEFOR0VfUVVBTlRJVFkgPSAnZW50cnkuY2hhbmdlLXF1YW50aXR5JztcbiAgRVZFTlRfUEFZTUVOVF9TVEFSVEVEID0gJ3BheW1lbnQuc3RhcnRlZCc7XG4gIEVWRU5UX1BBWU1FTlRfQ09ORklSTUVEID0gJ3BheW1lbnQuY29uZmlybWVkJztcbiAgRVZFTlRfQkFTS0VUX0NPTkZJUk1FRCA9ICdiYXNrZXQuY29uZmlybWVkJztcbiAgRVZFTlRfTUVBTFNfUExBTk5FUl9DT05GSVJNRUQgPSAncGxhbm5lci5jb25maXJtZWQnO1xuXG4gIHJlYWR5JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIGFiVGVzdGtleTogc3RyaW5nO1xuICBldmVudEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgaW5pdChkb21haW46IHN0cmluZywgb3B0aW1pemVLZXk/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9pbmplY3RQbGF1c2libGUoZG9tYWluKTtcbiAgICB0aGlzLl9pbmplY3RPcHRpbWl6ZShvcHRpbWl6ZUtleSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBpZGVudGlmaWVyIG9mIHRoZSBBQlRlc3QgZXhwZXJpZW5jZSBpZiBvbmUgaXMgcnVubmluZ1xuICAgKiBJdCB3aWxsIHRoZW4gYmUgYWRkZWQgYXMgcHJvcHMgdG8gYWxsIGV2ZW50cyBzZW50XG4gICAqIEBwYXJhbSBrZXkgQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIEFCVGVzdCBleHBlcmllbmNlXG4gICAqL1xuICBzZXRBYlRlc3RLZXkoa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmFiVGVzdGtleSA9IGtleTtcbiAgfVxuXG4gIHByaXZhdGUgZXZlbnQobmFtZTogc3RyaW5nLCBwYXRoOiBzdHJpbmcsIHByb3BzPzogQ3VzdG9tUHJvcGVydGllcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFiVGVzdGtleSkge1xuICAgICAgcHJvcHMuYWJUZXN0S2V5ID0gdGhpcy5hYlRlc3RrZXk7XG4gICAgfVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWNhbGxcbiAgICBwbGF1c2libGUobmFtZSwgeyB1OiB0aGlzLnVybChwYXRoKSwgcHJvcHMgfSk7XG4gICAgdGhpcy5ldmVudEVtaXR0ZXIuZW1pdChcbiAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgcGF0aDogdGhpcy51cmwocGF0aCksXG4gICAgICAgIHByb3BzXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBzZW5kRXZlbnRXaGVuUmVhZHkobmFtZTogc3RyaW5nLCBwYXRoOiBzdHJpbmcsIHByb3BzPzogQ3VzdG9tUHJvcGVydGllcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlYWR5JC5nZXRWYWx1ZSgpKSB7XG4gICAgICByZXR1cm4gdGhpcy5ldmVudChuYW1lLCBwYXRoLCBwcm9wcyk7XG4gICAgfVxuICAgIHRoaXMucmVhZHkkLnBpcGUoXG4gICAgICBmaWx0ZXIocmVhZHkgPT4gcmVhZHkpLFxuICAgICAgdGFrZSgxKVxuICAgICkuc3Vic2NyaWJlKCgpID0+IHRoaXMuZXZlbnQobmFtZSwgcGF0aCwgcHJvcHMpKTtcbiAgfVxuXG4gIHByaXZhdGUgdXJsKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHBhdGgpIHtcbiAgICAgIHJldHVybiBgJHtsb2NhdGlvbi5vcmlnaW59JHtwYXRofWA7XG4gICAgfVxuICAgIHJldHVybiBsb2NhdGlvbi5ocmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5qZWN0UGxhdXNpYmxlKGRvbWFpbjogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgaWYgKGRvbWFpbiA9PT0gJ21pYW0udGVzdCcpIHtcbiAgICAgIC8vIEluIGRldmVsb3BtZW50LCBjaGFyZ2UgdGhlIFwibG9jYWxcIiBleHRlbnNpb24gdG8gbWFrZSBzdXJlIGV2ZW50cyBjYW4gYmUgcm91dGVkIGZyb20gbG9jYWxob3N0IHRvIG1pYW0udGVzdCBkb21haW5cbiAgICAgIHNjcmlwdC5zcmMgPSAnaHR0cHM6Ly9wbGF1c2libGUuaW8vanMvcGxhdXNpYmxlLmxvY2FsLm1hbnVhbC5qcyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFVzZSBtYW51YWwgc2NyaXB0IHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgcGFnZXZpZXdzXG4gICAgICAvLyBEb24ndCB0cmlnZ2VyIHBhZ2V2aWV3cyBhdXRvbWF0aWNhbGx5LiBBbHNvIGFsbG93cyB5b3UgdG8gc3BlY2lmeSBjdXN0b20gbG9jYXRpb25zIHRvIHJlZGFjdCBVUkxzIHdpdGggaWRlbnRpZmllcnMuXG4gICAgICAvLyBZb3UgY2FuIGFsc28gdXNlIGl0IHRvIHRyYWNrIGN1c3RvbSBxdWVyeSBwYXJhbWV0ZXJzXG4gICAgICBzY3JpcHQuc3JjID0gJ2h0dHBzOi8vcGxhdXNpYmxlLmlvL2pzL3BsYXVzaWJsZS5tYW51YWwuanMnO1xuICAgIH1cbiAgICBzY3JpcHQuZGVmZXIgPSB0cnVlO1xuICAgIHNjcmlwdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtZG9tYWluJywgZG9tYWluKTtcbiAgICBzY3JpcHQub25sb2FkID0gKCk6IHZvaWQgPT4ge1xuICAgICAgY29uc29sZS5sb2coYFtNaWFtXSBBbmFseXRpY3MgcmVhZHkgZm9yIGRvbWFpbjogJHtKU09OLnN0cmluZ2lmeShkb21haW4pfWApO1xuICAgICAgdGhpcy5yZWFkeSQubmV4dCh0cnVlKTtcbiAgICB9O1xuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbiAgfVxuXG4gIHByaXZhdGUgX2luamVjdE9wdGltaXplKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFrZXkgfHwga2V5Lmxlbmd0aCA8IDApIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLmluZm8oYFtNaWFtXSBHb29nbGUgT3B0aW1pemUgbm90IGluaXRpYWxpemVkIChubyBrZXkpICR7SlNPTi5zdHJpbmdpZnkoa2V5KX1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgc2NyaXB0LnNyYyA9IGBodHRwczovL3d3dy5nb29nbGVvcHRpbWl6ZS5jb20vb3B0aW1pemUuanM/aWQ9JHtrZXl9YDtcbiAgICBzY3JpcHQub25sb2FkID0gKCk6IHZvaWQgPT4gY29uc29sZS5sb2coYFtNaWFtXSBPcHRpbWl6ZSByZWFkeSBmb3Iga2V5OiAke0pTT04uc3RyaW5naWZ5KGtleSl9YCk7XG4gICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICB9XG5cbiAgLyoqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogU0VORCBFVkVOVCBGT1IgQkFTS0VUIEFDVElPTlMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqKi9cblxuICBzZW5kUmVtb3ZlUmVjaXBlc0V2ZW50cyhhY3Rpb25zOiBCYXNrZXRBY3Rpb25bXSk6IHZvaWQge1xuICAgIGFjdGlvbnMuZm9yRWFjaChhY3Rpb24gPT4ge1xuICAgICAgdGhpcy5zZW5kRXZlbnRXaGVuUmVhZHkoXG4gICAgICAgIHRoaXMuRVZFTlRfUkVDSVBFX1JFTU9WRSxcbiAgICAgICAgYWN0aW9uLnBhcmFtcy5ldmVudFRyYWNlLm9yaWdpblBhdGgsXG4gICAgICAgIHsgcmVjaXBlX2lkOiBhY3Rpb24ucGFyYW1zLnJlY2lwZUlkIH1cbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBzZW5kQWRkUmVjaXBlc0V2ZW50cyhhY3Rpb25zOiBCYXNrZXRBY3Rpb25bXSk6IHZvaWQge1xuICAgIGFjdGlvbnMuZm9yRWFjaChhY3Rpb24gPT4ge1xuICAgICAgdGhpcy5zZW5kRXZlbnRXaGVuUmVhZHkoXG4gICAgICAgIHRoaXMuRVZFTlRfUkVDSVBFX0FERCxcbiAgICAgICAgYWN0aW9uLnBhcmFtcy5ldmVudFRyYWNlLm9yaWdpblBhdGgsXG4gICAgICAgIHsgcmVjaXBlX2lkOiBhY3Rpb24ucGFyYW1zLnJlY2lwZUlkIH1cbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBzZW5kVXBkYXRlR3Vlc3RzRXZlbnRzKGFjdGlvbnM6IEJhc2tldEFjdGlvbltdKTogdm9pZCB7XG4gICAgYWN0aW9ucy5mb3JFYWNoKGFjdGlvbiA9PiB7XG4gICAgICB0aGlzLnNlbmRFdmVudFdoZW5SZWFkeShcbiAgICAgICAgdGhpcy5FVkVOVF9SRUNJUEVfQ0hBTkdFR1VFU1RTLFxuICAgICAgICBhY3Rpb24ucGFyYW1zLmV2ZW50VHJhY2Uub3JpZ2luUGF0aCxcbiAgICAgICAgeyByZWNpcGVfaWQ6IGFjdGlvbi5wYXJhbXMucmVjaXBlSWQgfVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHNlbmRFdmVudHNPZlJlc2V0QmFza2V0KGJhc2tldDogQmFza2V0LCBldmVudFRyYWNlOiBFdmVudFRyYWNlKTogdm9pZCB7XG4gICAgYmFza2V0LnJlY2lwZUluZm9zLmZvckVhY2goaW5mbyA9PiB7XG4gICAgICBjb25zdCBuZXdQcm9wOiBDdXN0b21Qcm9wZXJ0aWVzID0geyByZWNpcGVfaWQ6IGluZm8uaWQgfTtcbiAgICAgIGNvbnN0IG1lcmdlZFByb3BzID0gT2JqZWN0LmFzc2lnbihuZXdQcm9wLCBldmVudFRyYWNlLnByb3BzKTtcbiAgICAgIHRoaXMuc2VuZEV2ZW50V2hlblJlYWR5KHRoaXMuRVZFTlRfUkVDSVBFX1JFTU9WRSwgZXZlbnRUcmFjZS5vcmlnaW5QYXRoLCBtZXJnZWRQcm9wcyk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -145,15 +145,6 @@ export class BasketsComparatorService {
145
145
  // -----------------------------------------------------------------------------------------------------------------------------
146
146
  // ----------------------------------------------------------- Utils -----------------------------------------------------------
147
147
  // -----------------------------------------------------------------------------------------------------------------------------
148
- /**
149
- * Sets all ItemsComparators in the map as if they were added on client's side and not on Miam's side
150
- * Is useful only in very specific situations, usage not recommanded
151
- */
152
- setAllProductsAsRetailers() {
153
- Object.keys(this.extIdToItemsComparator).forEach((extId) => {
154
- this.extIdToItemsComparator[extId].setAsRetailerProduct();
155
- });
156
- }
157
148
  /**
158
149
  * reset previousQuantity to the current miamQuantity for all itemsComparators (to be called at the end of a sync cycle)
159
150
  */
@@ -171,4 +162,4 @@ BasketsComparatorService.ɵprov = i0.ɵɵdefineInjectable({ token: BasketsCompar
171
162
  providedIn: 'root'
172
163
  }]
173
164
  }], function () { return []; }, null); })();
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFza2V0cy1jb21wYXJhdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiL2J1aWxkcy9taWFtL25nLW1pYW0tc2RrL3Byb2plY3RzL25nLW1pYW0vc3JjLyIsInNvdXJjZXMiOlsibGliL19zZXJ2aWNlcy9iYXNrZXRzLXN5bmNocm9uaXppbmcvYmFza2V0cy1jb21wYXJhdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBR2hFLDZCQUE2QjtBQUs3QixNQUFNLE9BQU8sd0JBQXdCO0lBR25DO0lBQ0EsQ0FBQztJQUVELGdJQUFnSTtJQUNoSSxnSUFBZ0k7SUFDaEksZ0lBQWdJO0lBRWhJOzs7OztPQUtHO0lBQ0gsb0JBQW9CLENBQUMsZUFBOEIsRUFBRSxtQkFBd0M7UUFDM0YsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMscUJBQXFCLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELGdJQUFnSTtJQUNoSSxnSUFBZ0k7SUFDaEksZ0lBQWdJO0lBRWhJOzs7O09BSUc7SUFDSCxzQkFBc0IsQ0FBQyxVQUF5QjtRQUM5QyxzQ0FBc0M7UUFDdEMsT0FBTyxDQUFDLEtBQUssQ0FBQztVQUNSLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxhQUFWLFVBQVUsdUJBQVYsVUFBVSxDQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFDLE9BQUEsQ0FBQyxFQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxF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LElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzRCxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsZ0JBQWdCLEVBQUUsR0FBRyxlQUFlLENBQUMsNEJBQTRCLEVBQUUsQ0FBQyxDQUFDO1FBQzlGLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDO0lBRUQsZ0lBQWdJO0lBQ2hJLGdJQUFnSTtJQUNoSSxnSUFBZ0k7SUFFaEk7OztPQUdHO0lBQ0gseUJBQXlCO1FBQ3ZCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBYSxFQUFFLEVBQUU7WUFDakUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDNUQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxpQkFBaUI7UUFDZixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQ2pFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQzlELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7Z0dBeExVLHdCQUF3QjtnRUFBeEIsd0JBQXdCLFdBQXhCLHdCQUF3QixtQkFGdkIsTUFBTTtrREFFUCx3QkFBd0I7Y0FIcEMsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFza2V0RW50cnkgfSBmcm9tICcuLi8uLi9fbW9kZWxzJztcbmltcG9ydCB7IENvbXBhcmFibGVQcm9kdWN0IH0gZnJvbSAnLi4vLi4vX3R5cGVzL2J1aWxkZWQvY29tcGFyYWJsZS1wcm9kdWN0JztcbmltcG9ydCB7IEl0ZW1zQ29tcGFyYXRvciB9IGZyb20gJy4uLy4uL190eXBlcy9pdGVtcy1jb21wYXJhdG9yJztcblxuXG4vLyB0c2xpbnQ6ZGlzYWJsZTogbm8tY29uc29sZVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBCYXNrZXRzQ29tcGFyYXRvclNlcnZpY2Uge1xuICBleHRJZFRvSXRlbXNDb21wYXJhdG9yOiB7W2tleTogc3RyaW5nXTogSXRlbXNDb21wYXJhdG9yfTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBJbml0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIGNvbXBhcmlzb24gYmV0d2VlbiBNaWFtJ3MgYmFza2V0IGFuZCBjbGllbnQncyBjYXJ0LlxuICAgKiBGaXJzdCBjcmVhdGUgYW4gaXRlbSBjb21wYXJhdG9yIGZvciBlYWNoIHByb2R1Y3QgaW4gcmV0YWlsZXIncyBiYXNrZXQsIHRoZW4gdXBkYXRlIGFsbCBJdGVtc0NvbXBhcmF0b3JzIHdpdGggdGhlIGVudHJpZXNcbiAgICogZnJvbSBNaWFtJ3MgYmFza2V0LCBhbmQgY3JlYXRlIEl0ZW1zQ29tcGFyYXRvcnMgZm9yIGVudHJpZXMgd2hvc2UgZXh0SWQgaGFzbid0IGdvdCBhbiBJdGVtc0NvbXBhcmF0b3IgeWV0LlxuICAgKiBUaGVuIGNoZWNrIGZvciBpdGVtcyB0byByZW1vdmUgZnJvbSBNaWFtJ3MgYmFza2V0ICYgc2VuZCB1cGRhdGUgZXZlbnQgdG8gTWlhbVxuICAgKi9cbiAgaW5pdEJhc2tldENvbXBhcmF0b3IoZmlyc3RNaWFtQmFza2V0OiBCYXNrZXRFbnRyeVtdLCBmaXJzdFJldGFpbGVyQmFza2V0OiBDb21wYXJhYmxlUHJvZHVjdFtdKTogQ29tcGFyYWJsZVByb2R1Y3RbXSB7XG4gICAgdGhpcy5leHRJZFRvSXRlbXNDb21wYXJhdG9yID0ge307XG4gICAgdGhpcy51cGRhdGVSZXRhaWxlclByb2R1Y3RzKGZpcnN0UmV0YWlsZXJCYXNrZXQpO1xuICAgIHRoaXMudXBkYXRlRW50cmllc0Zyb21NaWFtKGZpcnN0TWlhbUJhc2tldCk7XG4gICAgdGhpcy5hZGRFbnRyaWVzRnJvbU1pYW0oZmlyc3RNaWFtQmFza2V0KTtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlRnJvbVJldGFpbGVyKCk7XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29taW5nIGZyb20gTWlhbSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8qKlxuICAgKiBXaGVuIE1pYW0ncyBiYXNrZXQgaXMgdXBkYXRlZCwgdXBkYXRlIHRoZSBleGlzdGluZyBJdGVtc0NvbXBhcmF0b3Igd2l0aCBlbnRyaWVzIGxpbmtlZCB0byBuZXcgcHJvZHVjdHMsIGFkZCBJdGVtc0NvbXBhcmF0b3JzXG4gICAqIHdpdGggZW50cmllcyBsaW5rZWQgdG8gZXhpc3RpbmcgcHJvZHVjdHMuXG4gICAqIFRoZW4gY2hlY2sgZm9yIGl0ZW1zIHRvIHB1c2ggdG8vcmVtb3ZlIGZyb20gcmV0YWlsZXIncyBiYXNrZXQgYW5kIHJldHVybiB0aGVtXG4gICAqL1xuICB1cGRhdGVSZWNlaXZlZEZyb21NaWFtKG1pYW1CYXNrZXQ6IEJhc2tldEVudHJ5W10pOiBDb21wYXJhYmxlUHJvZHVjdFtdIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgIGNvbnNvbGUuZGVidWcoYFtNaWFtXSB1cGRhdGUgcmVjZWl2ZWQgZnJvbSBNaWFtXG4gICAgICAtICR7SlNPTi5zdHJpbmdpZnkobWlhbUJhc2tldD8ubWFwKGUgPT4gKHtpZDogZS5pZCwgZXh0SWQ6IGUuc2VsZWN0ZWRJdGVtPy5hdHRyaWJ1dGVzWydleHQtaWQnXSwgcXVhbnRpdHk6IGUuYXR0cmlidXRlcy5xdWFudGl0eX0pKSl9XG4gICAgICAtIGN1cnJlbnQgY29tcGFyaXNvbjogJHtKU09OLnN0cmluZ2lmeShPYmplY3Qua2V5cyh0aGlzLmV4dElkVG9JdGVtc0NvbXBhcmF0b3IpLm1hcChrZXkgPT5cbiAgICAoe2lkOiBrZXksIE1ROiB0aGlzLmV4dElkVG9JdGVtc0NvbXBhcmF0b3Jba2V5XS5taWFtUXVhbnRpdHksIFJROiB0aGlzLmV4dElkVG9JdGVtc0NvbXBhcmF0b3Jba2V5XS5yZXRhaWxlclF1YW50aXR5fSlcbiAgKSl9YFxuICAgICk7XG4gICAgLy8gTm90ZTogTVEgbWVhbnMgTWlhbSBRdWFudGl0eSBhbmQgUlEgbWVhbnMgUmV0YWlsZXIgUXVhbnRpdHkgYnV0IHRoaXMgbWFrZXMgdGhlIGxvZ3MgbW9yZSBjb21wYWN0IGFuZCB0aHVzIHJlYWRhYmxlXG4gICAgdGhpcy51cGRhdGVFbnRyaWVzRnJvbU1pYW0obWlhbUJhc2tldCk7XG4gICAgdGhpcy5hZGRFbnRyaWVzRnJvbU1pYW0obWlhbUJhc2tldCk7XG4gICAgY29uc3QgdG9QdXNoVG9SZXRhaWxlciA9IHRoaXMucmVzb2x2ZUZyb21NaWFtKG1pYW1CYXNrZXQpO1xuICAgIHJldHVybiB0b1B1c2hUb1JldGFpbGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciBldmVyeSBlbnRyeSBpbiBNaWFtJ3MgYmFza2V0IHdob3NlIGFzc29jaWF0ZWQgZXh0SWQgaGFzIGFuIEl0ZW1zQ29tcGFyYXRvciwgdXBkYXRlIHRoZSBjb21wYXJhdG9yIHdpdGggdGhlIGVudHJ5XG4gICAqIG9yIHJlbW92ZSB0aGUgZW50cmllcyBmcm9tIHRoZSBpdGVtc0NvbXBhcmF0b3IgaWYgdGhleSBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIE1pYW0ncyBiYXNrZXRcbiAgICovXG4gIHVwZGF0ZUVudHJpZXNGcm9tTWlhbShtaWFtQmFza2V0OiBCYXNrZXRFbnRyeVtdKTogdm9pZCB7XG4gICAgT2JqZWN0LmtleXModGhpcy5leHRJZFRvSXRlbXNDb21wYXJhdG9yKS5mb3JFYWNoKGV4dElkID0+IHtcbiAgICAgIGNvbnN0IGl0ZW1zQ29tcGFyYXRvciA9IHRoaXMuZXh0SWRUb0l0ZW1zQ29tcGFyYXRvcltleHRJZF07XG4gICAgICBjb25zdCBtaWFtQmFza2V0RW50cmllcyA9IG1pYW1CYXNrZXQuZmlsdGVyKGJhc2tldEVudHJ5ID0+XG4gICAgICAgIGJhc2tldEVudHJ5LnNlbGVjdGVkSXRlbSAmJiBiYXNrZXRFbnRyeS5zZWxlY3RlZEl0ZW0uYXR0cmlidXRlc1snZXh0LWlkJ10gPT09IGV4dElkKTtcbiAgICAgIGlmIChtaWFtQmFza2V0RW50cmllcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIG1pYW1CYXNrZXRFbnRyaWVzLmZvckVhY2goYmUgPT4gaXRlbXNDb21wYXJhdG9yLmFkZE9yVXBkYXRlQmFza2V0RW50cnkoYmUpKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBpdGVtc0NvbXBhcmF0b3IucmVtb3ZlQmFza2V0RW50cmllcygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciBldmVyeSBlbnRyeSBpbiBNaWFtJ3MgYmFza2V0IHdob3NlIGFzc29jaWF0ZWQgZXh0SWQgZG9lc24ndCBoYXZlIGFuIEl0ZW1zQ29tcGFyYXRvciwgY3JlYXRlIGEgY29tcGFyYXRvciB3aXRoIHRoZSByaWdodCBlbnRyeVxuICAgKi9cbiAgYWRkRW50cmllc0Zyb21NaWFtKG1pYW1CYXNrZXQ6IEJhc2tldEVudHJ5W10pOiB2b2lkIHtcbiAgICBtaWFtQmFza2V0LmZvckVhY2goYmFza2V0RW50cnkgPT4ge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtYXNzaWdubWVudFxuICAgICAgY29uc3QgZXh0SWQgPSBiYXNrZXRFbnRyeS5zZWxlY3RlZEl0ZW0gJiYgYmFza2V0RW50cnkuc2VsZWN0ZWRJdGVtLmF0dHJpYnV0ZXNbJ2V4dC1pZCddO1xuICAgICAgaWYgKCFleHRJZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5leHRJZFRvSXRlbXNDb21wYXJhdG9yW2V4dElkXSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBpdGVtc0NvbXBhcmF0b3IgPSBuZXcgSXRlbXNDb21wYXJhdG9yKCk7XG4gICAgICBpdGVtc0NvbXBhcmF0b3IuYWRkT3JVcGRhdGVCYXNrZXRFbnRyeShiYXNrZXRFbnRyeSk7XG4gICAgICB0aGlzLmV4dElkVG9JdGVtc0NvbXBhcmF0b3JbZXh0SWRdID0gaXRlbXNDb21wYXJhdG9yO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZmVyIGFsbCBwcm9kdWN0cyB0aGF0IG5lZWQgdG8gYmUgcHVzaGVkIHRvL3JlbW92ZWQgZnJvbSByZXRhaWxlcidzIGJhc2tldCBmcm9tIHRoZSBzdGF0ZSBvZiBhbGwgSXRlbXNDb21wYXJhdG9ycyBhbmQgcmV0dXJuIHRoZW1cbiAgICovXG4gIHJlc29sdmVGcm9tTWlhbShtaWFtQmFza2V0OiBCYXNrZXRFbnRyeVtdKTogQ29tcGFyYWJsZVByb2R1Y3RbXSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLmRlYnVnKGBbTWlhbV0gcmVzb2x2ZSBmcm9tIE1pYW0gYmFza2V0XG4gICAgICAtICR7SlNPTi5zdHJpbmdpZnkobWlhbUJhc2tldD8ubWFwKGUgPT4gKHtpZDogZS5pZCwgZXh0SWQ6IGUuc2VsZWN0ZWRJdGVtPy5hdHRyaWJ1dGVzWydleHQtaWQnXSwgcXVhbnRpdHk6IGUuYXR0cmlidXRlcy5xdWFudGl0eX0pKSl9XG4gICAgICAtIGN1cnJlbnQgY29tcGFyaXNvbjogJHtKU09OLnN0cmluZ2lmeShPYmplY3Qua2V5cyh0aGlzLmV4dElkVG9JdGVtc0NvbXBhcmF0b3IpLm1hcChrZXkgPT5cbiAgICAoe2lkOiBrZXksIE1ROiB0aGlzLmV4dElkVG9JdGVtc0NvbXBhcmF0b3Jba2V5XS5taWFtUXVhbnRpdHksIFJROiB0aGlzLmV4dElkVG9JdGVtc0NvbXBhcmF0b3Jba2V5XS5yZXRhaWxlclF1YW50aXR5fSlcbiAgKSl9YCk7XG4gICAgLy8gTm90ZTogTVEgbWVhbnMgTWlhbSBRdWFudGl0eSBhbmQgUlEgbWVhbnMgUmV0YWlsZXIgUXVhbnRpdHkgYnV0IHRoaXMgbWFrZXMgdGhlIGxvZ3MgbW9yZSBjb21wYWN0IGFuZCB0aHVzIHJlYWRhYmxlXG4gICAgbGV0IHRvUHVzaFRvUmV0YWlsZXI6IENvbXBhcmFibGVQcm9kdWN0W10gPSBbXTtcbiAgICBPYmplY3Qua2V5cyh0aGlzLmV4dElkVG9JdGVtc0NvbXBhcmF0b3IpLmZvckVhY2goZXh0SWQgPT4ge1xuICAgICAgY29uc3QgaXRlbXNDb21wYXJhdG9yID0gdGhpcy5leHRJZFRvSXRlbXNDb21wYXJhdG9yW2V4dElkXTtcbiAgICAgIGNvbnN0IGl0ZW1zVG9QdXNoID0gaXRlbXNDb21wYXJhdG9yLnVwZGF0ZVJldGFpbGVyUHJvZHVjdHNGcm9tRW50cnkoKTtcbiAgICAgIHRvUHVzaFRvUmV0YWlsZXIgPSBbLi4udG9QdXNoVG9SZXRhaWxlciwgLi4uaXRlbXNUb1B1c2hdO1xuICAgIH0pO1xuICAgIHJldHVybiB0b1B1c2hUb1JldGFpbGVyO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb21pbmcgZnJvbSBSZXRhaWxlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvKipcbiAgICogV2hlbiB0aGUgcmV0YWlsZXIncyBiYXNrZXQgaXMgdXBkYXRlZCwgdXBkYXRlIGV4aXN0aW5nIEl0ZW1zQ29tcGFyYXRvcnMnIHJldGFpbGVyUHJvZHVjdHMsIHRoZW4gZGVsZXRlIEl0ZW1zQ29tcGFyYXRvcnMgd2hvc2VcbiAgICogcmV0YWlsZXJQcm9kdWN0IGhhdmUgYmVlbiByZW1vdmVkIGZyb20gcmV0YWlsZXIncyBiYXNrZXQuXG4gICAqIFRoZW4gY2hlY2sgZm9yIGl0ZW1zIHRvIHJlbW92ZSBmcm9tIE1pYW0ncyBiYXNrZXQgJiBzZW5kIHVwZGF0ZSBldmVudCB0byBNaWFtXG4gICAqL1xuICB1cGRhdGVSZWNlaXZlZEZyb21SZXRhaWxlcihyZXRhaWxlckJhc2tldDogQ29tcGFyYWJsZVByb2R1Y3RbXSk6IENvbXBhcmFibGVQcm9kdWN0W10ge1xuICAgIHRoaXMudXBkYXRlUmV0YWlsZXJQcm9kdWN0cyhyZXRhaWxlckJhc2tldCk7XG4gICAgdGhpcy5kZWxldGVSZW1vdmVkUmV0YWlsZXJQcm9kdWN0cyhyZXRhaWxlckJhc2tldCk7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZUZyb21SZXRhaWxlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIG9yIGNyZWF0ZSBhbiBJdGVtc0NvbXBhcmF0b3IgZm9yIGVhY2ggcHJvZHVjdCBpbiB0aGUgcmV0YWlsZXIncyBiYXNrZXQgYW5kIHVwZGF0ZSBpdCdzIHJldGFpbGVyUHJvZHVjdFxuICAgKi9cbiAgdXBkYXRlUmV0YWlsZXJQcm9kdWN0cyhyZXRhaWxlckJhc2tldDogQ29tcGFyYWJsZVByb2R1Y3RbXSk6IHZvaWQge1xuICAgIHJldGFpbGVyQmFza2V0LmZvckVhY2gocmV0YWlsZXJQcm9kdWN0ID0+IHtcbiAgICAgIGxldCBpdGVtc0NvbXBhcmF0b3IgPSB0aGlzLmV4dElkVG9JdGVtc0NvbXBhcmF0b3JbcmV0YWlsZXJQcm9kdWN0LmlkXTtcbiAgICAgIGlmICghaXRlbXNDb21wYXJhdG9yKSB7XG4gICAgICAgIGl0ZW1zQ29tcGFyYXRvciA9IG5ldyBJdGVtc0NvbXBhcmF0b3IoKTtcbiAgICAgICAgdGhpcy5leHRJZFRvSXRlbXNDb21wYXJhdG9yW3JldGFpbGVyUHJvZHVjdC5pZF0gPSBpdGVtc0NvbXBhcmF0b3I7XG4gICAgICB9XG4gICAgICBpdGVtc0NvbXBhcmF0b3IuYWRkT3JVcGRhdGVSZXRhaWxlclByb2R1Y3QocmV0YWlsZXJQcm9kdWN0KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgYWxsIEl0ZW1zQ29tcGFyYXRvcnMgd2hvc2UgcmV0YWlsZXJQcm9kdWN0IGhhdmUgYmVlbiByZW1vdmVkIGZyb20gcmV0YWlsZXIncyBiYXNrZXQuXG4gICAqL1xuICBkZWxldGVSZW1vdmVkUmV0YWlsZXJQcm9kdWN0cyhyZXRhaWxlckJhc2tldDogQ29tcGFyYWJsZVByb2R1Y3RbXSk6IHZvaWQge1xuICAgIE9iamVjdC5rZXlzKHRoaXMuZXh0SWRUb0l0ZW1zQ29tcGFyYXRvcikuZm9yRWFjaChleHRJZCA9PiB7XG4gICAgICBjb25zdCBpdGVtc0NvbXBhcmF0b3IgPSB0aGlzLmV4dElkVG9JdGVtc0NvbXBhcmF0b3JbZXh0SWRdO1xuICAgICAgY29uc3QgaXRlbUluUmV0YWlsZXJCYXNrZXQgPSByZXRhaWxlckJhc2tldC5maW5kKFxuICAgICAgICByZXRhaWxlckVudHJ5ID0+IHJldGFpbGVyRW50cnkuaWQgPT09IGV4dElkXG4gICAgICApO1xuICAgICAgaWYgKCFpdGVtSW5SZXRhaWxlckJhc2tldCkge1xuICAgICAgICBpdGVtc0NvbXBhcmF0b3IuY2xlYXJSZXRhaWxlclByb2R1Y3QoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmZlciBhbGwgZW50cmllcyB0aGF0IG5lZWQgdG8gYmUgcmVtb3ZlZCBmcm9tIE1pYW0ncyBiYXNrZXQgZnJvbSB0aGUgc3RhdGUgb2YgYWxsIEl0ZW1zQ29tcGFyYXRvcnMgYW5kIHJldHVybiB0aGVtXG4gICAqIFRoZW4gYmVmb3JlIHRoZSBzeW5jIGN5Y2xlcyBlbmRzLCB1cGRhdGVzIG1pYW0gcXVhbnRpdGllcyBmb3IgYWxsIGl0ZW1zQ29tcGFyYXRvcnMgd2l0aCB0aGUgY3VycmVudCBxdWFudGl0aWVzXG4gICAqL1xuICByZXNvbHZlRnJvbVJldGFpbGVyKCk6IENvbXBhcmFibGVQcm9kdWN0W10ge1xuICAgIGxldCB0b1JlbW92ZUZyb21NaWFtOiBDb21wYXJhYmxlUHJvZHVjdFtdID0gW107XG4gICAgT2JqZWN0LmtleXModGhpcy5leHRJZFRvSXRlbXNDb21wYXJhdG9yKS5mb3JFYWNoKChleHRJZDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBpdGVtc0NvbXBhcmF0b3IgPSB0aGlzLmV4dElkVG9JdGVtc0NvbXBhcmF0b3JbZXh0SWRdO1xuICAgICAgdG9SZW1vdmVGcm9tTWlhbSA9IFsuLi50b1JlbW92ZUZyb21NaWFtLCAuLi5pdGVtc0NvbXBhcmF0b3IucmVtb3ZlTWlhbUVudHJpZXNJZk5lY2Vzc2FyeSgpXTtcbiAgICB9KTtcbiAgICB0aGlzLnJlZnJlc2hRdWFudGl0aWVzKCk7XG4gICAgcmV0dXJuIHRvUmVtb3ZlRnJvbU1pYW07XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBVdGlscyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8qKlxuICAgKiBTZXRzIGFsbCBJdGVtc0NvbXBhcmF0b3JzIGluIHRoZSBtYXAgYXMgaWYgdGhleSB3ZXJlIGFkZGVkIG9uIGNsaWVudCdzIHNpZGUgYW5kIG5vdCBvbiBNaWFtJ3Mgc2lkZVxuICAgKiBJcyB1c2VmdWwgb25seSBpbiB2ZXJ5IHNwZWNpZmljIHNpdHVhdGlvbnMsIHVzYWdlIG5vdCByZWNvbW1hbmRlZFxuICAgKi9cbiAgc2V0QWxsUHJvZHVjdHNBc1JldGFpbGVycygpOiB2b2lkIHtcbiAgICBPYmplY3Qua2V5cyh0aGlzLmV4dElkVG9JdGVtc0NvbXBhcmF0b3IpLmZvckVhY2goKGV4dElkOiBzdHJpbmcpID0+IHtcbiAgICAgIHRoaXMuZXh0SWRUb0l0ZW1zQ29tcGFyYXRvcltleHRJZF0uc2V0QXNSZXRhaWxlclByb2R1Y3QoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiByZXNldCBwcmV2aW91c1F1YW50aXR5IHRvIHRoZSBjdXJyZW50IG1pYW1RdWFudGl0eSBmb3IgYWxsIGl0ZW1zQ29tcGFyYXRvcnMgKHRvIGJlIGNhbGxlZCBhdCB0aGUgZW5kIG9mIGEgc3luYyBjeWNsZSlcbiAgICovXG4gIHJlZnJlc2hRdWFudGl0aWVzKCk6IHZvaWQge1xuICAgIE9iamVjdC5rZXlzKHRoaXMuZXh0SWRUb0l0ZW1zQ29tcGFyYXRvcikuZm9yRWFjaCgoZXh0SWQ6IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy5leHRJZFRvSXRlbXNDb21wYXJhdG9yW2V4dElkXS51cGRhdGVQcmV2aW91c1F1YW50aXR5KCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFza2V0cy1jb21wYXJhdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiL2J1aWxkcy9taWFtL25nLW1pYW0tc2RrL3Byb2plY3RzL25nLW1pYW0vc3JjLyIsInNvdXJjZXMiOlsibGliL19zZXJ2aWNlcy9iYXNrZXRzLXN5bmNocm9uaXppbmcvYmFza2V0cy1jb21wYXJhdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBR2hFLDZCQUE2QjtBQUs3QixNQUFNLE9BQU8sd0JBQXdCO0lBR25DO0lBQ0EsQ0FBQztJQUVELGdJQUFnSTtJQUNoSSxnSUFBZ0k7SUFDaEksZ0lBQWdJO0lBRWhJOzs7OztPQUtHO0lBQ0gsb0JBQW9CLENBQUMsZUFBOEIsRUFBRSxtQkFBd0M7UUFDM0YsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMscUJBQXFCLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELGdJQUFnSTtJQUNoSSxnSUFBZ0k7SUFDaEksZ0lBQWdJO0lBRWhJOzs7O09BSUc7SUFDSCxzQkFBc0IsQ0FBQyxVQUF5QjtRQUM5QyxzQ0FBc0M7UUFDdEMsT0FBTyxDQUFDLEtBQUssQ0FBQztVQUNSLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxhQUFWLFVBQVUsdUJBQVYsVUFBVSxDQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFDLE9BQUEsQ0FBQyxFQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxF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LElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzRCxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsZ0JBQWdCLEVBQUUsR0FBRyxlQUFlLENBQUMsNEJBQTRCLEVBQUUsQ0FBQyxDQUFDO1FBQzlGLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDO0lBRUQsZ0lBQWdJO0lBQ2hJLGdJQUFnSTtJQUNoSSxnSUFBZ0k7SUFFaEk7O09BRUc7SUFDSCxpQkFBaUI7UUFDZixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQ2pFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQzlELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7Z0dBOUtVLHdCQUF3QjtnRUFBeEIsd0JBQXdCLFdBQXhCLHdCQUF3QixtQkFGdkIsTUFBTTtrREFFUCx3QkFBd0I7Y0FIcEMsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFza2V0RW50cnkgfSBmcm9tICcuLi8uLi9fbW9kZWxzJztcbmltcG9ydCB7IENvbXBhcmFibGVQcm9kdWN0IH0gZnJvbSAnLi4vLi4vX3R5cGVzL2J1aWxkZWQvY29tcGFyYWJsZS1wcm9kdWN0JztcbmltcG9ydCB7IEl0ZW1zQ29tcGFyYXRvciB9IGZyb20gJy4uLy4uL190eXBlcy9pdGVtcy1jb21wYXJhdG9yJztcblxuXG4vLyB0c2xpbnQ6ZGlzYWJsZTogbm8tY29uc29sZVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBCYXNrZXRzQ29tcGFyYXRvclNlcnZpY2Uge1xuICBleHRJZFRvSXRlbXNDb21wYXJhdG9yOiB7W2tleTogc3RyaW5nXTogSXRlbXNDb21wYXJhdG9yfTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBJbml0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIGNvbXBhcmlzb24gYmV0d2VlbiBNaWFtJ3MgYmFza2V0IGFuZCBjbGllbnQncyBjYXJ0LlxuICAgKiBGaXJzdCBjcmVhdGUgYW4gaXRlbSBjb21wYXJhdG9yIGZvciBlYWNoIHByb2R1Y3QgaW4gcmV0YWlsZXIncyBiYXNrZXQsIHRoZW4gdXBkYXRlIGFsbCBJdGVtc0NvbXBhcmF0b3JzIHdpdGggdGhlIGVudHJpZXNcbiAgICogZnJvbSBNaWFtJ3MgYmFza2V0LCBhbmQgY3JlYXRlIEl0ZW1zQ29tcGFyYXRvcnMgZm9yIGVudHJpZXMgd2hvc2UgZXh0SWQgaGFzbid0IGdvdCBhbiBJdGVtc0NvbXBhcmF0b3IgeWV0LlxuICAgKiBUaGVuIGNoZWNrIGZvciBpdGVtcyB0byByZW1vdmUgZnJvbSBNaWFtJ3MgYmFza2V0ICYgc2VuZCB1cGRhdGUgZXZlbnQgdG8gTWlhbVxuICAgKi9cbiAgaW5pdEJhc2tldENvbXBhcmF0b3IoZmlyc3RNaWFtQmFza2V0OiBCYXNrZXRFbnRyeVtdLCBmaXJzdFJldGFpbGVyQmFza2V0OiBDb21wYXJhYmxlUHJvZHVjdFtdKTogQ29tcGFyYWJsZVByb2R1Y3RbXSB7XG4gICAgdGhpcy5leHRJZFRvSXRlbXNDb21wYXJhdG9yID0ge307XG4gICAgdGhpcy51cGRhdGVSZXRhaWxlclByb2R1Y3RzKGZpcnN0UmV0YWlsZXJCYXNrZXQpO1xuICAgIHRoaXMudXBkYXRlRW50cmllc0Zyb21NaWFtKGZpcnN0TWlhbUJhc2tldCk7XG4gICAgdGhpcy5hZGRFbnRyaWVzRnJvbU1pYW0oZmlyc3RNaWFtQmFza2V0KTtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlRnJvbVJldGFpbGVyKCk7XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29taW5nIGZyb20gTWlhbSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8qKlxuICAgKiBXaGVuIE1pYW0ncyBiYXNrZXQgaXMgdXBkYXRlZCwgdXBkYXRlIHRoZSBleGlzdGluZyBJdGVtc0NvbXBhcmF0b3Igd2l0aCBlbnRyaWVzIGxpbmtlZCB0byBuZXcgcHJvZHVjdHMsIGFkZCBJdGVtc0NvbXBhcmF0b3JzXG4gICAqIHdpdGggZW50cmllcyBsaW5rZWQgdG8gZXhpc3RpbmcgcHJvZHVjdHMuXG4gICAqIFRoZW4gY2hlY2sgZm9yIGl0ZW1zIHRvIHB1c2ggdG8vcmVtb3ZlIGZyb20gcmV0YWlsZXIncyBiYXNrZXQgYW5kIHJldHVybiB0aGVtXG4gICAqL1xuICB1cGRhdGVSZWNlaXZlZEZyb21NaWFtKG1pYW1CYXNrZXQ6IEJhc2tldEVudHJ5W10pOiBDb21wYXJhYmxlUHJvZHVjdFtdIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgIGNvbnNvbGUuZGVidWcoYFtNaWFtXSB1cGRhdGUgcmVjZWl2ZWQgZnJvbSBNaWFtXG4gICAgICAtICR7SlNPTi5zdHJpbmdpZnkobWlhbUJhc2tldD8ubWFwKGUgPT4gKHtpZDogZS5pZCwgZXh0SWQ6IGUuc2VsZWN0ZWRJdGVtPy5hdHRyaWJ1dGVzWydleHQtaWQnXSwgcXVhbnRpdHk6IGUuYXR0cmlidXRlcy5xdWFudGl0eX0pKSl9XG4gICAgICAtIGN1cnJlbnQgY29tcGFyaXNvbjogJHtKU09OLnN0cmluZ2lmeShPYmplY3Qua2V5cyh0aGlzLmV4dElkVG9JdGVtc0NvbXBhcmF0b3IpLm1hcChrZXkgPT5cbiAgICAoe2lkOiBrZXksIE1ROiB0aGlzLmV4dElkVG9JdGVtc0NvbXBhcmF0b3Jba2V5XS5taWFtUXVhbnRpdHksIFJROiB0aGlzLmV4dElkVG9JdGVtc0NvbXBhcmF0b3Jba2V5XS5yZXRhaWxlclF1YW50aXR5fSlcbiAgKSl9YFxuICAgICk7XG4gICAgLy8gTm90ZTogTVEgbWVhbnMgTWlhbSBRdWFudGl0eSBhbmQgUlEgbWVhbnMgUmV0YWlsZXIgUXVhbnRpdHkgYnV0IHRoaXMgbWFrZXMgdGhlIGxvZ3MgbW9yZSBjb21wYWN0IGFuZCB0aHVzIHJlYWRhYmxlXG4gICAgdGhpcy51cGRhdGVFbnRyaWVzRnJvbU1pYW0obWlhbUJhc2tldCk7XG4gICAgdGhpcy5hZGRFbnRyaWVzRnJvbU1pYW0obWlhbUJhc2tldCk7XG4gICAgY29uc3QgdG9QdXNoVG9SZXRhaWxlciA9IHRoaXMucmVzb2x2ZUZyb21NaWFtKG1pYW1CYXNrZXQpO1xuICAgIHJldHVybiB0b1B1c2hUb1JldGFpbGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciBldmVyeSBlbnRyeSBpbiBNaWFtJ3MgYmFza2V0IHdob3NlIGFzc29jaWF0ZWQgZXh0SWQgaGFzIGFuIEl0ZW1zQ29tcGFyYXRvciwgdXBkYXRlIHRoZSBjb21wYXJhdG9yIHdpdGggdGhlIGVudHJ5XG4gICAqIG9yIHJlbW92ZSB0aGUgZW50cmllcyBmcm9tIHRoZSBpdGVtc0NvbXBhcmF0b3IgaWYgdGhleSBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIE1pYW0ncyBiYXNrZXRcbiAgICovXG4gIHVwZGF0ZUVudHJpZXNGcm9tTWlhbShtaWFtQmFza2V0OiBCYXNrZXRFbnRyeVtdKTogdm9pZCB7XG4gICAgT2JqZWN0LmtleXModGhpcy5leHRJZFRvSXRlbXNDb21wYXJhdG9yKS5mb3JFYWNoKGV4dElkID0+IHtcbiAgICAgIGNvbnN0IGl0ZW1zQ29tcGFyYXRvciA9IHRoaXMuZXh0SWRUb0l0ZW1zQ29tcGFyYXRvcltleHRJZF07XG4gICAgICBjb25zdCBtaWFtQmFza2V0RW50cmllcyA9IG1pYW1CYXNrZXQuZmlsdGVyKGJhc2tldEVudHJ5ID0+XG4gICAgICAgIGJhc2tldEVudHJ5LnNlbGVjdGVkSXRlbSAmJiBiYXNrZXRFbnRyeS5zZWxlY3RlZEl0ZW0uYXR0cmlidXRlc1snZXh0LWlkJ10gPT09IGV4dElkKTtcbiAgICAgIGlmIChtaWFtQmFza2V0RW50cmllcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIG1pYW1CYXNrZXRFbnRyaWVzLmZvckVhY2goYmUgPT4gaXRlbXNDb21wYXJhdG9yLmFkZE9yVXBkYXRlQmFza2V0RW50cnkoYmUpKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBpdGVtc0NvbXBhcmF0b3IucmVtb3ZlQmFza2V0RW50cmllcygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciBldmVyeSBlbnRyeSBpbiBNaWFtJ3MgYmFza2V0IHdob3NlIGFzc29jaWF0ZWQgZXh0SWQgZG9lc24ndCBoYXZlIGFuIEl0ZW1zQ29tcGFyYXRvciwgY3JlYXRlIGEgY29tcGFyYXRvciB3aXRoIHRoZSByaWdodCBlbnRyeVxuICAgKi9cbiAgYWRkRW50cmllc0Zyb21NaWFtKG1pYW1CYXNrZXQ6IEJhc2tldEVudHJ5W10pOiB2b2lkIHtcbiAgICBtaWFtQmFza2V0LmZvckVhY2goYmFza2V0RW50cnkgPT4ge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtYXNzaWdubWVudFxuICAgICAgY29uc3QgZXh0SWQgPSBiYXNrZXRFbnRyeS5zZWxlY3RlZEl0ZW0gJiYgYmFza2V0RW50cnkuc2VsZWN0ZWRJdGVtLmF0dHJpYnV0ZXNbJ2V4dC1pZCddO1xuICAgICAgaWYgKCFleHRJZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5leHRJZFRvSXRlbXNDb21wYXJhdG9yW2V4dElkXSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBpdGVtc0NvbXBhcmF0b3IgPSBuZXcgSXRlbXNDb21wYXJhdG9yKCk7XG4gICAgICBpdGVtc0NvbXBhcmF0b3IuYWRkT3JVcGRhdGVCYXNrZXRFbnRyeShiYXNrZXRFbnRyeSk7XG4gICAgICB0aGlzLmV4dElkVG9JdGVtc0NvbXBhcmF0b3JbZXh0SWRdID0gaXRlbXNDb21wYXJhdG9yO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZmVyIGFsbCBwcm9kdWN0cyB0aGF0IG5lZWQgdG8gYmUgcHVzaGVkIHRvL3JlbW92ZWQgZnJvbSByZXRhaWxlcidzIGJhc2tldCBmcm9tIHRoZSBzdGF0ZSBvZiBhbGwgSXRlbXNDb21wYXJhdG9ycyBhbmQgcmV0dXJuIHRoZW1cbiAgICovXG4gIHJlc29sdmVGcm9tTWlhbShtaWFtQmFza2V0OiBCYXNrZXRFbnRyeVtdKTogQ29tcGFyYWJsZVByb2R1Y3RbXSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLmRlYnVnKGBbTWlhbV0gcmVzb2x2ZSBmcm9tIE1pYW0gYmFza2V0XG4gICAgICAtICR7SlNPTi5zdHJpbmdpZnkobWlhbUJhc2tldD8ubWFwKGUgPT4gKHtpZDogZS5pZCwgZXh0SWQ6IGUuc2VsZWN0ZWRJdGVtPy5hdHRyaWJ1dGVzWydleHQtaWQnXSwgcXVhbnRpdHk6IGUuYXR0cmlidXRlcy5xdWFudGl0eX0pKSl9XG4gICAgICAtIGN1cnJlbnQgY29tcGFyaXNvbjogJHtKU09OLnN0cmluZ2lmeShPYmplY3Qua2V5cyh0aGlzLmV4dElkVG9JdGVtc0NvbXBhcmF0b3IpLm1hcChrZXkgPT5cbiAgICAoe2lkOiBrZXksIE1ROiB0aGlzLmV4dElkVG9JdGVtc0NvbXBhcmF0b3Jba2V5XS5taWFtUXVhbnRpdHksIFJROiB0aGlzLmV4dElkVG9JdGVtc0NvbXBhcmF0b3Jba2V5XS5yZXRhaWxlclF1YW50aXR5fSlcbiAgKSl9YCk7XG4gICAgLy8gTm90ZTogTVEgbWVhbnMgTWlhbSBRdWFudGl0eSBhbmQgUlEgbWVhbnMgUmV0YWlsZXIgUXVhbnRpdHkgYnV0IHRoaXMgbWFrZXMgdGhlIGxvZ3MgbW9yZSBjb21wYWN0IGFuZCB0aHVzIHJlYWRhYmxlXG4gICAgbGV0IHRvUHVzaFRvUmV0YWlsZXI6IENvbXBhcmFibGVQcm9kdWN0W10gPSBbXTtcbiAgICBPYmplY3Qua2V5cyh0aGlzLmV4dElkVG9JdGVtc0NvbXBhcmF0b3IpLmZvckVhY2goZXh0SWQgPT4ge1xuICAgICAgY29uc3QgaXRlbXNDb21wYXJhdG9yID0gdGhpcy5leHRJZFRvSXRlbXNDb21wYXJhdG9yW2V4dElkXTtcbiAgICAgIGNvbnN0IGl0ZW1zVG9QdXNoID0gaXRlbXNDb21wYXJhdG9yLnVwZGF0ZVJldGFpbGVyUHJvZHVjdHNGcm9tRW50cnkoKTtcbiAgICAgIHRvUHVzaFRvUmV0YWlsZXIgPSBbLi4udG9QdXNoVG9SZXRhaWxlciwgLi4uaXRlbXNUb1B1c2hdO1xuICAgIH0pO1xuICAgIHJldHVybiB0b1B1c2hUb1JldGFpbGVyO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb21pbmcgZnJvbSBSZXRhaWxlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvKipcbiAgICogV2hlbiB0aGUgcmV0YWlsZXIncyBiYXNrZXQgaXMgdXBkYXRlZCwgdXBkYXRlIGV4aXN0aW5nIEl0ZW1zQ29tcGFyYXRvcnMnIHJldGFpbGVyUHJvZHVjdHMsIHRoZW4gZGVsZXRlIEl0ZW1zQ29tcGFyYXRvcnMgd2hvc2VcbiAgICogcmV0YWlsZXJQcm9kdWN0IGhhdmUgYmVlbiByZW1vdmVkIGZyb20gcmV0YWlsZXIncyBiYXNrZXQuXG4gICAqIFRoZW4gY2hlY2sgZm9yIGl0ZW1zIHRvIHJlbW92ZSBmcm9tIE1pYW0ncyBiYXNrZXQgJiBzZW5kIHVwZGF0ZSBldmVudCB0byBNaWFtXG4gICAqL1xuICB1cGRhdGVSZWNlaXZlZEZyb21SZXRhaWxlcihyZXRhaWxlckJhc2tldDogQ29tcGFyYWJsZVByb2R1Y3RbXSk6IENvbXBhcmFibGVQcm9kdWN0W10ge1xuICAgIHRoaXMudXBkYXRlUmV0YWlsZXJQcm9kdWN0cyhyZXRhaWxlckJhc2tldCk7XG4gICAgdGhpcy5kZWxldGVSZW1vdmVkUmV0YWlsZXJQcm9kdWN0cyhyZXRhaWxlckJhc2tldCk7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZUZyb21SZXRhaWxlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIG9yIGNyZWF0ZSBhbiBJdGVtc0NvbXBhcmF0b3IgZm9yIGVhY2ggcHJvZHVjdCBpbiB0aGUgcmV0YWlsZXIncyBiYXNrZXQgYW5kIHVwZGF0ZSBpdCdzIHJldGFpbGVyUHJvZHVjdFxuICAgKi9cbiAgdXBkYXRlUmV0YWlsZXJQcm9kdWN0cyhyZXRhaWxlckJhc2tldDogQ29tcGFyYWJsZVByb2R1Y3RbXSk6IHZvaWQge1xuICAgIHJldGFpbGVyQmFza2V0LmZvckVhY2gocmV0YWlsZXJQcm9kdWN0ID0+IHtcbiAgICAgIGxldCBpdGVtc0NvbXBhcmF0b3IgPSB0aGlzLmV4dElkVG9JdGVtc0NvbXBhcmF0b3JbcmV0YWlsZXJQcm9kdWN0LmlkXTtcbiAgICAgIGlmICghaXRlbXNDb21wYXJhdG9yKSB7XG4gICAgICAgIGl0ZW1zQ29tcGFyYXRvciA9IG5ldyBJdGVtc0NvbXBhcmF0b3IoKTtcbiAgICAgICAgdGhpcy5leHRJZFRvSXRlbXNDb21wYXJhdG9yW3JldGFpbGVyUHJvZHVjdC5pZF0gPSBpdGVtc0NvbXBhcmF0b3I7XG4gICAgICB9XG4gICAgICBpdGVtc0NvbXBhcmF0b3IuYWRkT3JVcGRhdGVSZXRhaWxlclByb2R1Y3QocmV0YWlsZXJQcm9kdWN0KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgYWxsIEl0ZW1zQ29tcGFyYXRvcnMgd2hvc2UgcmV0YWlsZXJQcm9kdWN0IGhhdmUgYmVlbiByZW1vdmVkIGZyb20gcmV0YWlsZXIncyBiYXNrZXQuXG4gICAqL1xuICBkZWxldGVSZW1vdmVkUmV0YWlsZXJQcm9kdWN0cyhyZXRhaWxlckJhc2tldDogQ29tcGFyYWJsZVByb2R1Y3RbXSk6IHZvaWQge1xuICAgIE9iamVjdC5rZXlzKHRoaXMuZXh0SWRUb0l0ZW1zQ29tcGFyYXRvcikuZm9yRWFjaChleHRJZCA9PiB7XG4gICAgICBjb25zdCBpdGVtc0NvbXBhcmF0b3IgPSB0aGlzLmV4dElkVG9JdGVtc0NvbXBhcmF0b3JbZXh0SWRdO1xuICAgICAgY29uc3QgaXRlbUluUmV0YWlsZXJCYXNrZXQgPSByZXRhaWxlckJhc2tldC5maW5kKFxuICAgICAgICByZXRhaWxlckVudHJ5ID0+IHJldGFpbGVyRW50cnkuaWQgPT09IGV4dElkXG4gICAgICApO1xuICAgICAgaWYgKCFpdGVtSW5SZXRhaWxlckJhc2tldCkge1xuICAgICAgICBpdGVtc0NvbXBhcmF0b3IuY2xlYXJSZXRhaWxlclByb2R1Y3QoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmZlciBhbGwgZW50cmllcyB0aGF0IG5lZWQgdG8gYmUgcmVtb3ZlZCBmcm9tIE1pYW0ncyBiYXNrZXQgZnJvbSB0aGUgc3RhdGUgb2YgYWxsIEl0ZW1zQ29tcGFyYXRvcnMgYW5kIHJldHVybiB0aGVtXG4gICAqIFRoZW4gYmVmb3JlIHRoZSBzeW5jIGN5Y2xlcyBlbmRzLCB1cGRhdGVzIG1pYW0gcXVhbnRpdGllcyBmb3IgYWxsIGl0ZW1zQ29tcGFyYXRvcnMgd2l0aCB0aGUgY3VycmVudCBxdWFudGl0aWVzXG4gICAqL1xuICByZXNvbHZlRnJvbVJldGFpbGVyKCk6IENvbXBhcmFibGVQcm9kdWN0W10ge1xuICAgIGxldCB0b1JlbW92ZUZyb21NaWFtOiBDb21wYXJhYmxlUHJvZHVjdFtdID0gW107XG4gICAgT2JqZWN0LmtleXModGhpcy5leHRJZFRvSXRlbXNDb21wYXJhdG9yKS5mb3JFYWNoKChleHRJZDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBpdGVtc0NvbXBhcmF0b3IgPSB0aGlzLmV4dElkVG9JdGVtc0NvbXBhcmF0b3JbZXh0SWRdO1xuICAgICAgdG9SZW1vdmVGcm9tTWlhbSA9IFsuLi50b1JlbW92ZUZyb21NaWFtLCAuLi5pdGVtc0NvbXBhcmF0b3IucmVtb3ZlTWlhbUVudHJpZXNJZk5lY2Vzc2FyeSgpXTtcbiAgICB9KTtcbiAgICB0aGlzLnJlZnJlc2hRdWFudGl0aWVzKCk7XG4gICAgcmV0dXJuIHRvUmVtb3ZlRnJvbU1pYW07XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBVdGlscyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8qKlxuICAgKiByZXNldCBwcmV2aW91c1F1YW50aXR5IHRvIHRoZSBjdXJyZW50IG1pYW1RdWFudGl0eSBmb3IgYWxsIGl0ZW1zQ29tcGFyYXRvcnMgKHRvIGJlIGNhbGxlZCBhdCB0aGUgZW5kIG9mIGEgc3luYyBjeWNsZSlcbiAgICovXG4gIHJlZnJlc2hRdWFudGl0aWVzKCk6IHZvaWQge1xuICAgIE9iamVjdC5rZXlzKHRoaXMuZXh0SWRUb0l0ZW1zQ29tcGFyYXRvcikuZm9yRWFjaCgoZXh0SWQ6IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy5leHRJZFRvSXRlbXNDb21wYXJhdG9yW2V4dElkXS51cGRhdGVQcmV2aW91c1F1YW50aXR5KCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,15 +1,18 @@
1
1
  import { Injectable } from '@angular/core';
2
- import { take } from 'rxjs/operators';
2
+ import { skipWhile, take, tap } from 'rxjs/operators';
3
3
  import { BasketsService } from '../baskets.service';
4
+ import { SuppliersService } from '../suppliers.service';
4
5
  import { BasketsComparatorService } from './baskets-comparator.service';
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "./baskets-comparator.service";
7
8
  import * as i2 from "../baskets.service";
9
+ import * as i3 from "../suppliers.service";
8
10
  // tslint:disable: no-console
9
11
  export class BasketsSynchronizerService {
10
- constructor(comparatorService, basketsService) {
12
+ constructor(comparatorService, basketsService, supplierService) {
11
13
  this.comparatorService = comparatorService;
12
14
  this.basketsService = basketsService;
15
+ this.supplierService = supplierService;
13
16
  /**
14
17
  * This method needs to be passed to Miam by the retailer
15
18
  */
@@ -18,7 +21,11 @@ export class BasketsSynchronizerService {
18
21
  throw new Error('No method was passed to \'window.miam.basket.definePushProductsToBasket\'');
19
22
  };
20
23
  // Begin listening for miam's basket (will not fetch basket automatically)
21
- this.listenToMiam();
24
+ this.supplierService.supplier$.pipe(skipWhile(s => !s), tap(() => {
25
+ // If supplier is changed during the experience, reset basket sync
26
+ this.firstMiamBasket = undefined;
27
+ this.listenToMiam();
28
+ })).subscribe();
22
29
  }
23
30
  /**
24
31
  * Start listening on Miam's basket
@@ -113,8 +120,8 @@ export class BasketsSynchronizerService {
113
120
  pushBasketEntriesAndManagePFTs(itemsToAdd) {
114
121
  this.basketsService.basketEntries().pipe(take(1)).subscribe(entries => {
115
122
  this.pushBasketEntriesToBasket(itemsToAdd.map(i => {
116
- const entry = entries.find(e => { var _a; return ((_a = e.selectedItem) === null || _a === void 0 ? void 0 : _a.attributes['ext-id']) === i.id; }) ?
117
- entries.find(e => { var _a; return ((_a = e.selectedItem) === null || _a === void 0 ? void 0 : _a.attributes['ext-id']) === i.id; }) :
123
+ const entry = entries.find(e => e.selectedItem.attributes['ext-id'] === i.id) ?
124
+ entries.find(e => e.selectedItem.attributes['ext-id'] === i.id) :
118
125
  undefined;
119
126
  if (entry) {
120
127
  const bei = entry.attributes['basket-entries-items'].find(b => String(b.item_id) === entry.selectedItem.id) ||
@@ -181,20 +188,13 @@ export class BasketsSynchronizerService {
181
188
  });
182
189
  }
183
190
  }
184
- /**
185
- * Sets all products in the ComparisonMap as if they were added on client's side and not on Miam's side
186
- * Is useful only in very specific situations, usage not recommanded
187
- */
188
- setAllProductsAsRetailers() {
189
- this.comparatorService.setAllProductsAsRetailers();
190
- }
191
191
  }
192
- BasketsSynchronizerService.ɵfac = function BasketsSynchronizerService_Factory(t) { return new (t || BasketsSynchronizerService)(i0.ɵɵinject(i1.BasketsComparatorService), i0.ɵɵinject(i2.BasketsService)); };
192
+ BasketsSynchronizerService.ɵfac = function BasketsSynchronizerService_Factory(t) { return new (t || BasketsSynchronizerService)(i0.ɵɵinject(i1.BasketsComparatorService), i0.ɵɵinject(i2.BasketsService), i0.ɵɵinject(i3.SuppliersService)); };
193
193
  BasketsSynchronizerService.ɵprov = i0.ɵɵdefineInjectable({ token: BasketsSynchronizerService, factory: BasketsSynchronizerService.ɵfac, providedIn: 'root' });
194
194
  /*@__PURE__*/ (function () { i0.ɵsetClassMetadata(BasketsSynchronizerService, [{
195
195
  type: Injectable,
196
196
  args: [{
197
197
  providedIn: 'root'
198
198
  }]
199
- }], function () { return [{ type: i1.BasketsComparatorService }, { type: i2.BasketsService }]; }, null); })();
200
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFza2V0cy1zeW5jaHJvbml6ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIvYnVpbGRzL21pYW0vbmctbWlhbS1zZGsvcHJvamVjdHMvbmctbWlhbS9zcmMvIiwic291cmNlcyI6WyJsaWIvX3NlcnZpY2VzL2Jhc2tldHMtc3luY2hyb25pemluZy9iYXNrZXRzLXN5bmNocm9uaXplci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3RDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7OztBQUd4RSw2QkFBNkI7QUFLN0IsTUFBTSxPQUFPLDBCQUEwQjtJQVVyQyxZQUNVLGlCQUEyQyxFQUMzQyxjQUE4QjtRQUQ5QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQTBCO1FBQzNDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQU14Qzs7V0FFRztRQUNILDZEQUE2RDtRQUM3RCx5QkFBb0IsR0FBRyxDQUFDLGtCQUF1QyxFQUFRLEVBQUU7WUFDdkUsTUFBTSxJQUFJLEtBQUssQ0FBQywyRUFBMkUsQ0FBQyxDQUFDO1FBQy9GLENBQUMsQ0FBQztRQVZBLDBFQUEwRTtRQUMxRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQVVEOztPQUVHO0lBQ0gsWUFBWTtRQUNWLElBQUksZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUF5QixFQUFFLEVBQUU7O1lBQ2hGLHNDQUFzQztZQUN0QyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQ1IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLGFBQVYs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O2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEJhc2tldEVudHJpZXNJdGVtLCBCYXNrZXRFbnRyeSB9IGZyb20gJy4uLy4uL19tb2RlbHMnO1xuaW1wb3J0IHsgQ29tcGFyYWJsZVByb2R1Y3QgfSBmcm9tICcuLi8uLi9fdHlwZXMvYnVpbGRlZC9jb21wYXJhYmxlLXByb2R1Y3QnO1xuaW1wb3J0IHsgQmFza2V0c1NlcnZpY2UgfSBmcm9tICcuLi9iYXNrZXRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFza2V0c0NvbXBhcmF0b3JTZXJ2aWNlIH0gZnJvbSAnLi9iYXNrZXRzLWNvbXBhcmF0b3Iuc2VydmljZSc7XG5cblxuLy8gdHNsaW50OmRpc2FibGU6IG5vLWNvbnNvbGVcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQmFza2V0c1N5bmNocm9uaXplclNlcnZpY2Uge1xuICBwcml2YXRlIGZpcnN0TWlhbUJhc2tldDogQmFza2V0RW50cnlbXTtcbiAgcHJpdmF0ZSBmaXJzdFJldGFpbGVyQmFza2V0OiBDb21wYXJhYmxlUHJvZHVjdFtdO1xuICBwcml2YXRlIGlzUHJvY2Vzc2luZ1JldGFpbGVyRXZlbnQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIG5lZWRzIHRvIGJlIHBhc3NlZCB0byBNaWFtIGJ5IHRoZSByZXRhaWxlclxuICAgKi9cbiAgcHVzaEJhc2tldEVudHJpZXNUb0Jhc2tldDogKGVudHJpZXM6IGFueVtdKSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29tcGFyYXRvclNlcnZpY2U6IEJhc2tldHNDb21wYXJhdG9yU2VydmljZSxcbiAgICBwcml2YXRlIGJhc2tldHNTZXJ2aWNlOiBCYXNrZXRzU2VydmljZVxuICApe1xuICAgIC8vIEJlZ2luIGxpc3RlbmluZyBmb3IgbWlhbSdzIGJhc2tldCAod2lsbCBub3QgZmV0Y2ggYmFza2V0IGF1dG9tYXRpY2FsbHkpXG4gICAgdGhpcy5saXN0ZW5Ub01pYW0oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCBuZWVkcyB0byBiZSBwYXNzZWQgdG8gTWlhbSBieSB0aGUgcmV0YWlsZXJcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgcHVzaFByb2R1Y3RzVG9CYXNrZXQgPSAoY29tcGFyYWJsZVByb2R1Y3RzOiBDb21wYXJhYmxlUHJvZHVjdFtdKTogdm9pZCA9PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyBtZXRob2Qgd2FzIHBhc3NlZCB0byBcXCd3aW5kb3cubWlhbS5iYXNrZXQuZGVmaW5lUHVzaFByb2R1Y3RzVG9CYXNrZXRcXCcnKTtcbiAgfTtcblxuICAvKipcbiAgICogU3RhcnQgbGlzdGVuaW5nIG9uIE1pYW0ncyBiYXNrZXRcbiAgICovXG4gIGxpc3RlblRvTWlhbSgpOiB2b2lkIHtcbiAgICBsZXQgaXNGaXJzdFN1YnNjcmliZSA9IHRydWU7XG4gICAgdGhpcy5iYXNrZXRzU2VydmljZS5hY3RpdmVCYXNrZXRFbnRyaWVzKCkuc3Vic2NyaWJlKChtaWFtQmFza2V0OiBCYXNrZXRFbnRyeVtdKSA9PiB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS5kZWJ1ZyhgW01pYW1dIE1pYW0gYmFza2V0IHJlY2VpdmVkXG4gICAgICAgIC0gJHtKU09OLnN0cmluZ2lmeShtaWFtQmFza2V0Py5tYXAoZSA9PiAoe2lkOiBlLmlkLCBxdWFudGl0eTogZS5hdHRyaWJ1dGVzLnF1YW50aXR5fSkpKX1cbiAgICAgICAgLSBGaXJzdCBNaWFtIGJhc2tldCB3YXM6ICR7SlNPTi5zdHJpbmdpZnkodGhpcy5maXJzdE1pYW1CYXNrZXQ/Lm1hcChlID0+ICh7aWQ6IGUuaWQsIHF1YW50aXR5OiBlLmF0dHJpYnV0ZXMucXVhbnRpdHl9KSkpfWApO1xuICAgICAgaWYgKCF0aGlzLmZpcnN0TWlhbUJhc2tldCAmJiBtaWFtQmFza2V0Lmxlbmd0aCA9PT0gMCAmJiBpc0ZpcnN0U3Vic2NyaWJlKSB7XG4gICAgICAgIC8vIFNraXAgZmlyc3QgZW1wdHkgYXJyYXlzIHJlY2VpdmVkXG4gICAgICAgIGlzRmlyc3RTdWJzY3JpYmUgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuO1xuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm1pYW1CYXNrZXRDaGFuZ2VkKG1pYW1CYXNrZXQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3MgdGhlIG5ldyBiYXNrZXQgZnJvbSBNaWFtXG4gICAqIEBwYXJhbSBtaWFtQmFza2V0IGVudHJpZXMgZnJvbSB1cGRhdGVkIGJhc2tldFxuICAgKi9cbiAgbWlhbUJhc2tldENoYW5nZWQobWlhbUJhc2tldDogQmFza2V0RW50cnlbXSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1JlYWR5KCkpIHtcbiAgICAgIHJldHVybiB0aGlzLmluaXRGaXJzdE1pYW1CYXNrZXQobWlhbUJhc2tldCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNQcm9jZXNzaW5nUmV0YWlsZXJFdmVudCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUuZGVidWcoJ1tNaWFtXSBza2lwcGluZyBiYXNrZXQtc3luYyAtIHJldGFpbGVyIGlzIHByb2Nlc3NpbmcnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpdGVtc1RvUHVzaCA9IHRoaXMuY29tcGFyYXRvclNlcnZpY2UudXBkYXRlUmVjZWl2ZWRGcm9tTWlhbShtaWFtQmFza2V0KTtcbiAgICB0aGlzLnNlbmRVcGRhdGVUb1JldGFpbGVyKGl0ZW1zVG9QdXNoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBmaXJzdCBiYXNrZXQgb24gTWlhbSdzIHNpZGUsIHRoZW4gdHJ5IHRvIGluaXRpYWxpemUgdGhlIGJhc2tldCBzeW5jXG4gICAqL1xuICBpbml0Rmlyc3RNaWFtQmFza2V0KG1pYW1BY3RpdmVCYXNrZXQ6IEJhc2tldEVudHJ5W10pOiB2b2lkIHtcbiAgICB0aGlzLmZpcnN0TWlhbUJhc2tldCA9IG1pYW1BY3RpdmVCYXNrZXQ7XG4gICAgdGhpcy5pbml0SWZQb3NzaWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIGZpcnN0IGJhc2tldCBvbiByZXRhaWxlcidzIHNpZGUsIHRoZW4gdHJ5IHRvIGluaXRpYWxpemUgdGhlIGJhc2tldCBzeW5jXG4gICAqL1xuICBpbml0Rmlyc3RSZXRhaWxlckJhc2tldChyZXRhaWxlckJhc2tldDogQ29tcGFyYWJsZVByb2R1Y3RbXSk6IHZvaWQge1xuICAgIHRoaXMuZmlyc3RSZXRhaWxlckJhc2tldCA9IHJldGFpbGVyQmFza2V0O1xuICAgIHRoaXMuaW5pdElmUG9zc2libGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBiYXNrZXQgc3luYyBpZiBib3RoIGJhc2tldHMgaGF2ZSBiZWVuIHJlY2VpdmVkLCBieSBpbml0aWFsaXppbmcgdGhlIGNvbXBhcmF0b3JcbiAgICovXG4gIGluaXRJZlBvc3NpYmxlKCk6IHZvaWQge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgY29uc29sZS5kZWJ1ZyhgW01pYW1dIFRyeWluZyB0byBzdGFydCBiYXNrZXQgc3luY1xuICAgICAgLSBNaWFtOiAke0pTT04uc3RyaW5naWZ5KHRoaXMuZmlyc3RNaWFtQmFza2V0Py5tYXAoZSA9PiAoe2lkOiBlLmlkLCBxdWFudGl0eTogZS5hdHRyaWJ1dGVzLnF1YW50aXR5fSkpKX1cbiAgICAgIC0gUmV0YWlsZXI6ICR7SlNPTi5zdHJpbmdpZnkodGhpcy5maXJzdFJldGFpbGVyQmFza2V0KX1gKTtcbiAgICBpZiAoIXRoaXMuaXNSZWFkeSgpKSB7IHJldHVybjsgfVxuXG4gICAgdGhpcy5pc1Byb2Nlc3NpbmdSZXRhaWxlckV2ZW50ID0gdHJ1ZTtcbiAgICBjb25zdCB0b1JlbW92ZUZyb21NaWFtID0gdGhpcy5jb21wYXJhdG9yU2VydmljZS5pbml0QmFza2V0Q29tcGFyYXRvcih0aGlzLmZpcnN0TWlhbUJhc2tldCwgdGhpcy5maXJzdFJldGFpbGVyQmFza2V0KTtcbiAgICB0aGlzLnNlbmRVcGRhdGVUb01pYW0odG9SZW1vdmVGcm9tTWlhbSk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgdHJ1ZSBpcyBmaXJzdCBiYXNrZXRzIGhhdmUgYmVlbiByZWNlaXZlZCBmb3IgTWlhbSAmIHJldGFpbGVyXG4gICAqL1xuICBpc1JlYWR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZmlyc3RNaWFtQmFza2V0ICYmICEhdGhpcy5maXJzdFJldGFpbGVyQmFza2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxzIHB1c2hQcm9kdWN0c1RvQmFza2V0IGlmIHRoZXJlIGFyZSBjaGFuZ2VzIHRoYXQgbmVlZCB0byBiZSBub3RpZmllZCB0byB0aGUgcmV0YWlsZXJcbiAgICovXG4gIHNlbmRVcGRhdGVUb1JldGFpbGVyKGl0ZW1zVG9BZGQ6IENvbXBhcmFibGVQcm9kdWN0W10pOiB2b2lkIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgIGNvbnNvbGUuZGVidWcoYFtNaWFtXSB3aWxsIHVwZGF0ZSByZXRhaWxlciAke0pTT04uc3RyaW5naWZ5KGl0ZW1zVG9BZGQpfWApO1xuICAgIGlmIChpdGVtc1RvQWRkLmxlbmd0aCA9PT0gMCl7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnB1c2hCYXNrZXRFbnRyaWVzVG9CYXNrZXQpIHtcbiAgICAgIHRoaXMucHVzaEJhc2tldEVudHJpZXNBbmRNYW5hZ2VQRlRzKGl0ZW1zVG9BZGQpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMucHVzaFByb2R1Y3RzVG9CYXNrZXQoaXRlbXNUb0FkZCk7XG4gICAgfVxuICB9XG5cbiAgLy8gREVQUkVDQVRFRDogUkVNT1ZFIEFTIFNPT04gQVMgV0UgQ0FOXG4gIHB1c2hCYXNrZXRFbnRyaWVzQW5kTWFuYWdlUEZUcyhpdGVtc1RvQWRkOiBDb21wYXJhYmxlUHJvZHVjdFtdKTogdm9pZCB7XG4gICAgdGhpcy5iYXNrZXRzU2VydmljZS5iYXNrZXRFbnRyaWVzKCkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoZW50cmllcyA9PiB7XG4gICAgICB0aGlzLnB1c2hCYXNrZXRFbnRyaWVzVG9CYXNrZXQoaXRlbXNUb0FkZC5tYXAoaSA9PiB7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gZW50cmllcy5maW5kKGUgPT4gZS5zZWxlY3RlZEl0ZW0/LmF0dHJpYnV0ZXNbJ2V4dC1pZCddID09PSBpLmlkKSA/XG4gICAgICAgICAgZW50cmllcy5maW5kKGUgPT4gZS5zZWxlY3RlZEl0ZW0/LmF0dHJpYnV0ZXNbJ2V4dC1pZCddID09PSBpLmlkKSA6XG4gICAgICAgICAgdW5kZWZpbmVkO1xuICAgICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgICBjb25zdCBiZWkgPSBlbnRyeS5hdHRyaWJ1dGVzWydiYXNrZXQtZW50cmllcy1pdGVtcyddLmZpbmQoYiA9PiBTdHJpbmcoYi5pdGVtX2lkKSA9PT0gZW50cnkuc2VsZWN0ZWRJdGVtLmlkKSB8fFxuICAgICAgICAgICAgKHt9IGFzIEJhc2tldEVudHJpZXNJdGVtKTtcbiAgICAgICAgICBPYmplY3QuYXNzaWduKFxuICAgICAgICAgICAgZW50cnkuc2VsZWN0ZWRJdGVtLmF0dHJpYnV0ZXMsIHtcbiAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1zdHJpbmctbGl0ZXJhbFxuICAgICAgICAgICAgICAncGZ0LWNoZWNrc3VtJzogYmVpLnBmdF9jaGVja3N1bSxcbiAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1zdHJpbmctbGl0ZXJhbFxuICAgICAgICAgICAgICAncGZ0LXBsYWdlcyc6IGJlaS5wZnRfcGxhZ2VzXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4geyBiYXNrZXRFbnRyeTogZW50cnksIHF1YW50aXR5OiBpLnF1YW50aXR5IH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgcmVtb3ZlZElkOiBpLmlkLCBxdWFudGl0eTogaS5xdWFudGl0eSB9O1xuICAgICAgfSkpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBlbnRyaWVzIGZyb20gTWlhbSdzIGJhc2tldCBpZiB0aGVyZSBhcmUgZW50cmllcyB0aGF0IG5lZWQgdG8gYmUgcmVtb3ZlZFxuICAgKi9cbiAgc2VuZFVwZGF0ZVRvTWlhbShlbnRyaWVzVG9SZW1vdmU6IENvbXBhcmFibGVQcm9kdWN0W10pOiB2b2lkIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgIGNvbnNvbGUuZGVidWcoYFtNaWFtXSB3aWxsIHJlbW92ZSBmcm9tIG1pYW0gJHtKU09OLnN0cmluZ2lmeShlbnRyaWVzVG9SZW1vdmUpfWApO1xuICAgIGlmIChlbnRyaWVzVG9SZW1vdmUubGVuZ3RoID09PSAwKXtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLmRlYnVnKCdbTWlhbV0gc3RvcCBwcm9jZXNzaW5nIHJldGFpbGVyIGV2ZW50Jyk7XG4gICAgICB0aGlzLmlzUHJvY2Vzc2luZ1JldGFpbGVyRXZlbnQgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5iYXNrZXRzU2VydmljZS5yZW1vdmVCYXNrZXRFbnRyaWVzKGVudHJpZXNUb1JlbW92ZSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLmRlYnVnKCdbTWlhbV0gc3RvcCBwcm9jZXNzaW5nIHJldGFpbGVyIGV2ZW50Jyk7XG4gICAgICB0aGlzLmlzUHJvY2Vzc2luZ1JldGFpbGVyRXZlbnQgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVG8gYmUgY2FsbGVkIG9uIHJldGFpbGVyJ3Mgc2lkZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLyoqXG4gICAqIFByb2Nlc3MgdGhlIG5ldyBiYXNrZXQgZnJvbSB0aGUgcmV0YWlsZXJcbiAgICogQHBhcmFtIHJldGFpbGVyQmFza2V0IGN1cnJlbnQgYmFza2V0IG9mIHRoZSByZXRhaWxlclxuICAgKi9cbiAgcmV0YWlsZXJCYXNrZXRDaGFuZ2VkKHJldGFpbGVyQmFza2V0OiBDb21wYXJhYmxlUHJvZHVjdFtdKTogdm9pZCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLmRlYnVnKGBbTWlhbV0gVXBkYXRlIHJlY2VpdmVkIGZyb20gcmV0YWlsZXJcbiAgICAgIC0gJHtKU09OLnN0cmluZ2lmeShyZXRhaWxlckJhc2tldCl9XG4gICAgICAtIEZpcnN0IHJldGFpbGVyIGJhc2tldCB3YXMgOiAke0pTT04uc3RyaW5naWZ5KHRoaXMuZmlyc3RSZXRhaWxlckJhc2tldCl9YCk7XG4gICAgaWYgKCF0aGlzLmlzUmVhZHkoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuaW5pdEZpcnN0UmV0YWlsZXJCYXNrZXQocmV0YWlsZXJCYXNrZXQpO1xuICAgIH1cblxuICAgIHRoaXMuaXNQcm9jZXNzaW5nUmV0YWlsZXJFdmVudCA9IHRydWU7XG4gICAgY29uc3QgdG9SZW1vdmVGcm9tTWlhbSA9IHRoaXMuY29tcGFyYXRvclNlcnZpY2UudXBkYXRlUmVjZWl2ZWRGcm9tUmV0YWlsZXIocmV0YWlsZXJCYXNrZXQpO1xuICAgIHRoaXMuc2VuZFVwZGF0ZVRvTWlhbSh0b1JlbW92ZUZyb21NaWFtKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgUGF5bWVudCBhbmQgY29uZmlybSBNaWFtJ3MgYmFza2V0IGJlZm9yZSByZXN0YXJ0aW5nIHRoZSBzeW5jaHJvbml6YXRpb24gYnkgcmVzZXR0aW5nIHJldGFpbGVyJ3MgYmFza2V0XG4gICAqIFdoaWNoIG1lYW5zIHRoZSBuZXh0IHJldGFpbGVyJ3MgYmFza2V0IHJlY2VpdmVkIHdpbGwgaW5pdCB0aGUgY29tcGFyYXRvciBhZ2Fpbiwgd2hpY2ggd2lsbCBpbiB0dXJuIGluaXQgdGhlXG4gICAqIGl0ZW1zIGNvbXBhcmlzb25cbiAgICogQHBhcmFtIHRvdGFsIG9mIHRoZSB1c2VyJ3MgY2FydFxuICAgKi9cbiAgaGFuZGxlUGF5bWVudCh0b3RhbDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRvdGFsKSB7XG4gICAgICB0aGlzLmJhc2tldHNTZXJ2aWNlLmNvbmZpcm1CYXNrZXQodG90YWwpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZmlyc3RSZXRhaWxlckJhc2tldCA9IFtdO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgYWxsIHByb2R1Y3RzIGluIHRoZSBDb21wYXJpc29uTWFwIGFzIGlmIHRoZXkgd2VyZSBhZGRlZCBvbiBjbGllbnQncyBzaWRlIGFuZCBub3Qgb24gTWlhbSdzIHNpZGVcbiAgICogSXMgdXNlZnVsIG9ubHkgaW4gdmVyeSBzcGVjaWZpYyBzaXR1YXRpb25zLCB1c2FnZSBub3QgcmVjb21tYW5kZWRcbiAgICovXG4gIHNldEFsbFByb2R1Y3RzQXNSZXRhaWxlcnMoKTogdm9pZCB7XG4gICAgdGhpcy5jb21wYXJhdG9yU2VydmljZS5zZXRBbGxQcm9kdWN0c0FzUmV0YWlsZXJzKCk7XG4gIH1cbn1cbiJdfQ==
199
+ }], function () { return [{ type: i1.BasketsComparatorService }, { type: i2.BasketsService }, { type: i3.SuppliersService }]; }, null); })();
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFza2V0cy1zeW5jaHJvbml6ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIvYnVpbGRzL21pYW0vbmctbWlhbS1zZGsvcHJvamVjdHMvbmctbWlhbS9zcmMvIiwic291cmNlcyI6WyJsaWIvX3NlcnZpY2VzL2Jhc2tldHMtc3luY2hyb25pemluZy9iYXNrZXRzLXN5bmNocm9uaXplci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7OztBQUd4RSw2QkFBNkI7QUFLN0IsTUFBTSxPQUFPLDBCQUEwQjtJQVVyQyxZQUNVLGlCQUEyQyxFQUMzQyxjQUE4QixFQUM5QixlQUFpQztRQUZqQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQTBCO1FBQzNDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixvQkFBZSxHQUFmLGVBQWUsQ0FBa0I7UUFhM0M7O1dBRUc7UUFDSCw2REFBNkQ7UUFDN0QseUJBQW9CLEdBQUcsQ0FBQyxrQkFBdUMsRUFBUSxFQUFFO1lBQ3ZFLE1BQU0sSUFBSSxLQUFLLENBQUMsMkVBQTJFLENBQUMsQ0FBQztRQUMvRixDQUFDLENBQUM7UUFqQkEsMEVBQTBFO1FBQzFFLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDakMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDbEIsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLGtFQUFrRTtZQUNsRSxJ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YUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3RELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7WUFDaEMsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7O29HQS9NVSwwQkFBMEI7a0VBQTFCLDBCQUEwQixXQUExQiwwQkFBMEIsbUJBRnpCLE1BQU07a0RBRVAsMEJBQTBCO2NBSHRDLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHNraXBXaGlsZSwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQmFza2V0RW50cmllc0l0ZW0sIEJhc2tldEVudHJ5IH0gZnJvbSAnLi4vLi4vX21vZGVscyc7XG5pbXBvcnQgeyBDb21wYXJhYmxlUHJvZHVjdCB9IGZyb20gJy4uLy4uL190eXBlcy9idWlsZGVkL2NvbXBhcmFibGUtcHJvZHVjdCc7XG5pbXBvcnQgeyBCYXNrZXRzU2VydmljZSB9IGZyb20gJy4uL2Jhc2tldHMuc2VydmljZSc7XG5pbXBvcnQgeyBTdXBwbGllcnNTZXJ2aWNlIH0gZnJvbSAnLi4vc3VwcGxpZXJzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFza2V0c0NvbXBhcmF0b3JTZXJ2aWNlIH0gZnJvbSAnLi9iYXNrZXRzLWNvbXBhcmF0b3Iuc2VydmljZSc7XG5cblxuLy8gdHNsaW50OmRpc2FibGU6IG5vLWNvbnNvbGVcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQmFza2V0c1N5bmNocm9uaXplclNlcnZpY2Uge1xuICBwcml2YXRlIGZpcnN0TWlhbUJhc2tldDogQmFza2V0RW50cnlbXTtcbiAgcHJpdmF0ZSBmaXJzdFJldGFpbGVyQmFza2V0OiBDb21wYXJhYmxlUHJvZHVjdFtdO1xuICBwcml2YXRlIGlzUHJvY2Vzc2luZ1JldGFpbGVyRXZlbnQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIG5lZWRzIHRvIGJlIHBhc3NlZCB0byBNaWFtIGJ5IHRoZSByZXRhaWxlclxuICAgKi9cbiAgcHVzaEJhc2tldEVudHJpZXNUb0Jhc2tldDogKGVudHJpZXM6IGFueVtdKSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29tcGFyYXRvclNlcnZpY2U6IEJhc2tldHNDb21wYXJhdG9yU2VydmljZSxcbiAgICBwcml2YXRlIGJhc2tldHNTZXJ2aWNlOiBCYXNrZXRzU2VydmljZSxcbiAgICBwcml2YXRlIHN1cHBsaWVyU2VydmljZTogU3VwcGxpZXJzU2VydmljZVxuICApe1xuICAgIC8vIEJlZ2luIGxpc3RlbmluZyBmb3IgbWlhbSdzIGJhc2tldCAod2lsbCBub3QgZmV0Y2ggYmFza2V0IGF1dG9tYXRpY2FsbHkpXG4gICAgdGhpcy5zdXBwbGllclNlcnZpY2Uuc3VwcGxpZXIkLnBpcGUoXG4gICAgICBza2lwV2hpbGUocyA9PiAhcyksXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAvLyBJZiBzdXBwbGllciBpcyBjaGFuZ2VkIGR1cmluZyB0aGUgZXhwZXJpZW5jZSwgcmVzZXQgYmFza2V0IHN5bmNcbiAgICAgICAgdGhpcy5maXJzdE1pYW1CYXNrZXQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMubGlzdGVuVG9NaWFtKCk7XG4gICAgICB9KVxuICAgICkuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgbmVlZHMgdG8gYmUgcGFzc2VkIHRvIE1pYW0gYnkgdGhlIHJldGFpbGVyXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIHB1c2hQcm9kdWN0c1RvQmFza2V0ID0gKGNvbXBhcmFibGVQcm9kdWN0czogQ29tcGFyYWJsZVByb2R1Y3RbXSk6IHZvaWQgPT4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTm8gbWV0aG9kIHdhcyBwYXNzZWQgdG8gXFwnd2luZG93Lm1pYW0uYmFza2V0LmRlZmluZVB1c2hQcm9kdWN0c1RvQmFza2V0XFwnJyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFN0YXJ0IGxpc3RlbmluZyBvbiBNaWFtJ3MgYmFza2V0XG4gICAqL1xuICBsaXN0ZW5Ub01pYW0oKTogdm9pZCB7XG4gICAgbGV0IGlzRmlyc3RTdWJzY3JpYmUgPSB0cnVlO1xuICAgIHRoaXMuYmFza2V0c1NlcnZpY2UuYWN0aXZlQmFza2V0RW50cmllcygpLnN1YnNjcmliZSgobWlhbUJhc2tldDogQmFza2V0RW50cnlbXSkgPT4ge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUuZGVidWcoYFtNaWFtXSBNaWFtIGJhc2tldCByZWNlaXZlZFxuICAgICAgICAtICR7SlNPTi5zdHJpbmdpZnkobWlhbUJhc2tldD8ubWFwKGUgPT4gKHtpZDogZS5pZCwgcXVhbnRpdHk6IGUuYXR0cmlidXRlcy5xdWFudGl0eX0pKSl9XG4gICAgICAgIC0gRmlyc3QgTWlhbSBiYXNrZXQgd2FzOiAke0pTT04uc3RyaW5naWZ5KHRoaXMuZmlyc3RNaWFtQmFza2V0Py5tYXAoZSA9PiAoe2lkOiBlLmlkLCBxdWFudGl0eTogZS5hdHRyaWJ1dGVzLnF1YW50aXR5fSkpKX1gKTtcbiAgICAgIGlmICghdGhpcy5maXJzdE1pYW1CYXNrZXQgJiYgbWlhbUJhc2tldC5sZW5ndGggPT09IDAgJiYgaXNGaXJzdFN1YnNjcmliZSkge1xuICAgICAgICAvLyBTa2lwIGZpcnN0IGVtcHR5IGFycmF5cyByZWNlaXZlZFxuICAgICAgICBpc0ZpcnN0U3Vic2NyaWJlID0gZmFsc2U7XG4gICAgICAgIHJldHVybjtcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5taWFtQmFza2V0Q2hhbmdlZChtaWFtQmFza2V0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzIHRoZSBuZXcgYmFza2V0IGZyb20gTWlhbVxuICAgKiBAcGFyYW0gbWlhbUJhc2tldCBlbnRyaWVzIGZyb20gdXBkYXRlZCBiYXNrZXRcbiAgICovXG4gIG1pYW1CYXNrZXRDaGFuZ2VkKG1pYW1CYXNrZXQ6IEJhc2tldEVudHJ5W10pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNSZWFkeSgpKSB7XG4gICAgICByZXR1cm4gdGhpcy5pbml0Rmlyc3RNaWFtQmFza2V0KG1pYW1CYXNrZXQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzUHJvY2Vzc2luZ1JldGFpbGVyRXZlbnQpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLmRlYnVnKCdbTWlhbV0gc2tpcHBpbmcgYmFza2V0LXN5bmMgLSByZXRhaWxlciBpcyBwcm9jZXNzaW5nJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaXRlbXNUb1B1c2ggPSB0aGlzLmNvbXBhcmF0b3JTZXJ2aWNlLnVwZGF0ZVJlY2VpdmVkRnJvbU1pYW0obWlhbUJhc2tldCk7XG4gICAgdGhpcy5zZW5kVXBkYXRlVG9SZXRhaWxlcihpdGVtc1RvUHVzaCk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgZmlyc3QgYmFza2V0IG9uIE1pYW0ncyBzaWRlLCB0aGVuIHRyeSB0byBpbml0aWFsaXplIHRoZSBiYXNrZXQgc3luY1xuICAgKi9cbiAgaW5pdEZpcnN0TWlhbUJhc2tldChtaWFtQWN0aXZlQmFza2V0OiBCYXNrZXRFbnRyeVtdKTogdm9pZCB7XG4gICAgdGhpcy5maXJzdE1pYW1CYXNrZXQgPSBtaWFtQWN0aXZlQmFza2V0O1xuICAgIHRoaXMuaW5pdElmUG9zc2libGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBmaXJzdCBiYXNrZXQgb24gcmV0YWlsZXIncyBzaWRlLCB0aGVuIHRyeSB0byBpbml0aWFsaXplIHRoZSBiYXNrZXQgc3luY1xuICAgKi9cbiAgaW5pdEZpcnN0UmV0YWlsZXJCYXNrZXQocmV0YWlsZXJCYXNrZXQ6IENvbXBhcmFibGVQcm9kdWN0W10pOiB2b2lkIHtcbiAgICB0aGlzLmZpcnN0UmV0YWlsZXJCYXNrZXQgPSByZXRhaWxlckJhc2tldDtcbiAgICB0aGlzLmluaXRJZlBvc3NpYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgYmFza2V0IHN5bmMgaWYgYm90aCBiYXNrZXRzIGhhdmUgYmVlbiByZWNlaXZlZCwgYnkgaW5pdGlhbGl6aW5nIHRoZSBjb21wYXJhdG9yXG4gICAqL1xuICBpbml0SWZQb3NzaWJsZSgpOiB2b2lkIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgIGNvbnNvbGUuZGVidWcoYFtNaWFtXSBUcnlpbmcgdG8gc3RhcnQgYmFza2V0IHN5bmNcbiAgICAgIC0gTWlhbTogJHtKU09OLnN0cmluZ2lmeSh0aGlzLmZpcnN0TWlhbUJhc2tldD8ubWFwKGUgPT4gKHtpZDogZS5pZCwgcXVhbnRpdHk6IGUuYXR0cmlidXRlcy5xdWFudGl0eX0pKSl9XG4gICAgICAtIFJldGFpbGVyOiAke0pTT04uc3RyaW5naWZ5KHRoaXMuZmlyc3RSZXRhaWxlckJhc2tldCl9YCk7XG4gICAgaWYgKCF0aGlzLmlzUmVhZHkoKSkgeyByZXR1cm47IH1cblxuICAgIHRoaXMuaXNQcm9jZXNzaW5nUmV0YWlsZXJFdmVudCA9IHRydWU7XG4gICAgY29uc3QgdG9SZW1vdmVGcm9tTWlhbSA9IHRoaXMuY29tcGFyYXRvclNlcnZpY2UuaW5pdEJhc2tldENvbXBhcmF0b3IodGhpcy5maXJzdE1pYW1CYXNrZXQsIHRoaXMuZmlyc3RSZXRhaWxlckJhc2tldCk7XG4gICAgdGhpcy5zZW5kVXBkYXRlVG9NaWFtKHRvUmVtb3ZlRnJvbU1pYW0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHRydWUgaXMgZmlyc3QgYmFza2V0cyBoYXZlIGJlZW4gcmVjZWl2ZWQgZm9yIE1pYW0gJiByZXRhaWxlclxuICAgKi9cbiAgaXNSZWFkeSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmZpcnN0TWlhbUJhc2tldCAmJiAhIXRoaXMuZmlyc3RSZXRhaWxlckJhc2tldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxscyBwdXNoUHJvZHVjdHNUb0Jhc2tldCBpZiB0aGVyZSBhcmUgY2hhbmdlcyB0aGF0IG5lZWQgdG8gYmUgbm90aWZpZWQgdG8gdGhlIHJldGFpbGVyXG4gICAqL1xuICBzZW5kVXBkYXRlVG9SZXRhaWxlcihpdGVtc1RvQWRkOiBDb21wYXJhYmxlUHJvZHVjdFtdKTogdm9pZCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLmRlYnVnKGBbTWlhbV0gd2lsbCB1cGRhdGUgcmV0YWlsZXIgJHtKU09OLnN0cmluZ2lmeShpdGVtc1RvQWRkKX1gKTtcbiAgICBpZiAoaXRlbXNUb0FkZC5sZW5ndGggPT09IDApe1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5wdXNoQmFza2V0RW50cmllc1RvQmFza2V0KSB7XG4gICAgICB0aGlzLnB1c2hCYXNrZXRFbnRyaWVzQW5kTWFuYWdlUEZUcyhpdGVtc1RvQWRkKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLnB1c2hQcm9kdWN0c1RvQmFza2V0KGl0ZW1zVG9BZGQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIERFUFJFQ0FURUQ6IFJFTU9WRSBBUyBTT09OIEFTIFdFIENBTlxuICBwdXNoQmFza2V0RW50cmllc0FuZE1hbmFnZVBGVHMoaXRlbXNUb0FkZDogQ29tcGFyYWJsZVByb2R1Y3RbXSk6IHZvaWQge1xuICAgIHRoaXMuYmFza2V0c1NlcnZpY2UuYmFza2V0RW50cmllcygpLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGVudHJpZXMgPT4ge1xuICAgICAgdGhpcy5wdXNoQmFza2V0RW50cmllc1RvQmFza2V0KGl0ZW1zVG9BZGQubWFwKGkgPT4ge1xuICAgICAgICBjb25zdCBlbnRyeSA9IGVudHJpZXMuZmluZChlID0+IGUuc2VsZWN0ZWRJdGVtLmF0dHJpYnV0ZXNbJ2V4dC1pZCddID09PSBpLmlkKSA/XG4gICAgICAgICAgZW50cmllcy5maW5kKGUgPT4gZS5zZWxlY3RlZEl0ZW0uYXR0cmlidXRlc1snZXh0LWlkJ10gPT09IGkuaWQpIDpcbiAgICAgICAgICB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICAgIGNvbnN0IGJlaSA9IGVudHJ5LmF0dHJpYnV0ZXNbJ2Jhc2tldC1lbnRyaWVzLWl0ZW1zJ10uZmluZChiID0+IFN0cmluZyhiLml0ZW1faWQpID09PSBlbnRyeS5zZWxlY3RlZEl0ZW0uaWQpIHx8XG4gICAgICAgICAgICAoe30gYXMgQmFza2V0RW50cmllc0l0ZW0pO1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAgICBlbnRyeS5zZWxlY3RlZEl0ZW0uYXR0cmlidXRlcywge1xuICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLXN0cmluZy1saXRlcmFsXG4gICAgICAgICAgICAgICdwZnQtY2hlY2tzdW0nOiBiZWkucGZ0X2NoZWNrc3VtLFxuICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLXN0cmluZy1saXRlcmFsXG4gICAgICAgICAgICAgICdwZnQtcGxhZ2VzJzogYmVpLnBmdF9wbGFnZXNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiB7IGJhc2tldEVudHJ5OiBlbnRyeSwgcXVhbnRpdHk6IGkucXVhbnRpdHkgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyByZW1vdmVkSWQ6IGkuaWQsIHF1YW50aXR5OiBpLnF1YW50aXR5IH07XG4gICAgICB9KSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGVudHJpZXMgZnJvbSBNaWFtJ3MgYmFza2V0IGlmIHRoZXJlIGFyZSBlbnRyaWVzIHRoYXQgbmVlZCB0byBiZSByZW1vdmVkXG4gICAqL1xuICBzZW5kVXBkYXRlVG9NaWFtKGVudHJpZXNUb1JlbW92ZTogQ29tcGFyYWJsZVByb2R1Y3RbXSk6IHZvaWQge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgY29uc29sZS5kZWJ1ZyhgW01pYW1dIHdpbGwgcmVtb3ZlIGZyb20gbWlhbSAke0pTT04uc3RyaW5naWZ5KGVudHJpZXNUb1JlbW92ZSl9YCk7XG4gICAgaWYgKGVudHJpZXNUb1JlbW92ZS5sZW5ndGggPT09IDApe1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUuZGVidWcoJ1tNaWFtXSBzdG9wIHByb2Nlc3NpbmcgcmV0YWlsZXIgZXZlbnQnKTtcbiAgICAgIHRoaXMuaXNQcm9jZXNzaW5nUmV0YWlsZXJFdmVudCA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmJhc2tldHNTZXJ2aWNlLnJlbW92ZUJhc2tldEVudHJpZXMoZW50cmllc1RvUmVtb3ZlKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUuZGVidWcoJ1tNaWFtXSBzdG9wIHByb2Nlc3NpbmcgcmV0YWlsZXIgZXZlbnQnKTtcbiAgICAgIHRoaXMuaXNQcm9jZXNzaW5nUmV0YWlsZXJFdmVudCA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBUbyBiZSBjYWxsZWQgb24gcmV0YWlsZXIncyBzaWRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvKipcbiAgICogUHJvY2VzcyB0aGUgbmV3IGJhc2tldCBmcm9tIHRoZSByZXRhaWxlclxuICAgKiBAcGFyYW0gcmV0YWlsZXJCYXNrZXQgY3VycmVudCBiYXNrZXQgb2YgdGhlIHJldGFpbGVyXG4gICAqL1xuICByZXRhaWxlckJhc2tldENoYW5nZWQocmV0YWlsZXJCYXNrZXQ6IENvbXBhcmFibGVQcm9kdWN0W10pOiB2b2lkIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgIGNvbnNvbGUuZGVidWcoYFtNaWFtXSBVcGRhdGUgcmVjZWl2ZWQgZnJvbSByZXRhaWxlclxuICAgICAgLSAke0pTT04uc3RyaW5naWZ5KHJldGFpbGVyQmFza2V0KX1cbiAgICAgIC0gRmlyc3QgcmV0YWlsZXIgYmFza2V0IHdhcyA6ICR7SlNPTi5zdHJpbmdpZnkodGhpcy5maXJzdFJldGFpbGVyQmFza2V0KX1gKTtcbiAgICBpZiAoIXRoaXMuaXNSZWFkeSgpKSB7XG4gICAgICByZXR1cm4gdGhpcy5pbml0Rmlyc3RSZXRhaWxlckJhc2tldChyZXRhaWxlckJhc2tldCk7XG4gICAgfVxuXG4gICAgdGhpcy5pc1Byb2Nlc3NpbmdSZXRhaWxlckV2ZW50ID0gdHJ1ZTtcbiAgICBjb25zdCB0b1JlbW92ZUZyb21NaWFtID0gdGhpcy5jb21wYXJhdG9yU2VydmljZS51cGRhdGVSZWNlaXZlZEZyb21SZXRhaWxlcihyZXRhaWxlckJhc2tldCk7XG4gICAgdGhpcy5zZW5kVXBkYXRlVG9NaWFtKHRvUmVtb3ZlRnJvbU1pYW0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBQYXltZW50IGFuZCBjb25maXJtIE1pYW0ncyBiYXNrZXQgYmVmb3JlIHJlc3RhcnRpbmcgdGhlIHN5bmNocm9uaXphdGlvbiBieSByZXNldHRpbmcgcmV0YWlsZXIncyBiYXNrZXRcbiAgICogV2hpY2ggbWVhbnMgdGhlIG5leHQgcmV0YWlsZXIncyBiYXNrZXQgcmVjZWl2ZWQgd2lsbCBpbml0IHRoZSBjb21wYXJhdG9yIGFnYWluLCB3aGljaCB3aWxsIGluIHR1cm4gaW5pdCB0aGVcbiAgICogaXRlbXMgY29tcGFyaXNvblxuICAgKiBAcGFyYW0gdG90YWwgb2YgdGhlIHVzZXIncyBjYXJ0XG4gICAqL1xuICBoYW5kbGVQYXltZW50KHRvdGFsOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodG90YWwpIHtcbiAgICAgIHRoaXMuYmFza2V0c1NlcnZpY2UuY29uZmlybUJhc2tldCh0b3RhbCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5maXJzdFJldGFpbGVyQmFza2V0ID0gW107XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==