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
@@ -524,7 +524,7 @@ RecipeFormComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeFormComponent,
524
524
  }
525
525
  else {
526
526
  i18n_16 = $localize `:␟f959874631711aa56d6caaaa49ad684b4ba32ed0␟4124824446230222423:Temps de préchauffage`;
527
- } return [["class", "form-container", 3, "formGroup", 4, "ngIf"], [1, "button-row"], [1, "m-button-secondary", 3, "click"], i18n_0, [1, "m-button-primary", 3, "disabled", "click"], i18n_2, [1, "form-container", 3, "formGroup"], [3, "formGroup"], ["ngDefaultControl", "", 1, "m-title-text-input", 3, "formControl"], ["placeholder", ""], [1, "row-container"], [1, "input-container"], ["ngDefaultControl", "", 3, "formControl", "imageUrl", "photoMode"], ["buttonText", ""], [1, "recipe-form__guests", "m-default-card"], [1, "recipe-form__guests__label"], i18n_4, ["ngDefaultControl", "", "formControlName", "number-of-guests", "counter", "4", "minRange", "0", "maxRange", "999", 3, "formControl"], [1, "recipe-form__attibutes"], [1, "recipe-form__attibutes__sliders"], [1, "recipe-form__attibutes__slider"], ["ngDefaultControl", "", 3, "steps", "formControl", "icons"], ["class", "recipe-form__attibutes__times", 4, "ngIf"], ["ngDefaultControl", "", "formArrayName", "ingredients", 3, "ingredientMode", "list", "deleteId"], ["ngDefaultControl", "", "formArrayName", "steps", 3, "list", "deleteId"], i18n_6, i18n_8, [1, "recipe-form__attibutes__times"], ["ngDefaultControl", "", 3, "formControl", "icon"], ["title", ""], i18n_10, i18n_12, i18n_14, i18n_16]; }, template: function RecipeFormComponent_Template(rf, ctx) { if (rf & 1) {
527
+ } return [["class", "form-container", 3, "formGroup", 4, "ngIf"], [1, "button-row"], [1, "m-button-secondary", 3, "click"], i18n_0, [1, "m-button-primary", 3, "disabled", "click"], i18n_2, [1, "form-container", 3, "formGroup"], [3, "formGroup"], ["ngDefaultControl", "", 1, "m-title-text-input", 3, "formControl"], ["placeholder", ""], [1, "row-container"], [1, "input-container"], ["ngDefaultControl", "", 3, "formControl", "imageUrl", "photoMode"], ["buttonText", ""], [1, "recipe-form__guests", "m-default-card"], [1, "recipe-form__guests__label"], i18n_4, ["ngDefaultControl", "", "formControlName", "number-of-guests", "value", "4", "minRange", "0", "maxRange", "999", 3, "formControl"], [1, "recipe-form__attibutes"], [1, "recipe-form__attibutes__sliders"], [1, "recipe-form__attibutes__slider"], ["ngDefaultControl", "", 3, "steps", "formControl", "icons"], ["class", "recipe-form__attibutes__times", 4, "ngIf"], ["ngDefaultControl", "", "formArrayName", "ingredients", 3, "ingredientMode", "list", "deleteId"], ["ngDefaultControl", "", "formArrayName", "steps", 3, "list", "deleteId"], i18n_6, i18n_8, [1, "recipe-form__attibutes__times"], ["ngDefaultControl", "", 3, "formControl", "icon"], ["title", ""], i18n_10, i18n_12, i18n_14, i18n_16]; }, template: function RecipeFormComponent_Template(rf, ctx) { if (rf & 1) {
528
528
  i0.ɵɵtemplate(0, RecipeFormComponent_form_0_Template, 24, 15, "form", 0);
529
529
  i0.ɵɵelementStart(1, "div", 1);
530
530
  i0.ɵɵelementStart(2, "button", 2);
@@ -565,4 +565,4 @@ RecipeFormComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeFormComponent,
565
565
  }], canceled: [{
566
566
  type: Output
567
567
  }] }); })();
568
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fd2ViLWNvbXBvbmVudHMvcmVjaXBlLWNyZWF0aW9uL3JlY2lwZS1mb3JtL3JlY2lwZS1mb3JtLmNvbXBvbmVudC50cyIsImxpYi9fd2ViLWNvbXBvbmVudHMvcmVjaXBlLWNyZWF0aW9uL3JlY2lwZS1mb3JtL3JlY2lwZS1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUd2QixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixpQkFBaUIsR0FFbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFhLFdBQVcsRUFBRSxXQUFXLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFHOUQsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsV0FBVyxFQUNaLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLG9C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Ozs7aUJBU2YsVUFBQSxrRkFBaUI7Ozs7OztrQkFnQ2YsVUFBQSxxRkFBb0I7Ozs7OztrQkFPcEIsVUFBQSxpRkFBZ0I7Ozs7OztrQkFPaEIsVUFBQSwrRUFBYzs7Ozs7O2tCQU9kLFVBQUEsc0ZBQXFCOztRQWxFOUMsd0VBQ0U7UUFxRkYsOEJBQ0U7UUFBQSxpQ0FBMkQ7UUFBbkIsZ0dBQVMsWUFBUSxJQUFDO1FBQTFELGVBQTJEO1FBQU8saUJBQVM7UUFDM0UsaUNBQ0U7UUFEb0MsZ0dBQVMsWUFBUSxJQUFDO1FBQXhELGVBQ0U7UUFDRixpQkFBUztRQUNYLGlCQUFNOztRQTNGQSxxQ0FBa0I7UUF3Rm1DLGVBQXFFO1FBQXJFLGlLQUFxRTs7a0RENUNuSCxtQkFBbUI7Y0FSL0IsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSxxQkFBcUI7Z0JBQy9CLFdBQVcsRUFBRSw4QkFBOEI7Z0JBQzNDLFNBQVMsRUFBRSxDQUFDLDhCQUE4QixDQUFDO2dCQUMzQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtnQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07YUFDaEQ7dVhBR1UsY0FBYztrQkFBdEIsS0FBSztZQUNHLG1CQUFtQjtrQkFBM0IsS0FBSztZQUNHLGlCQUFpQjtrQkFBekIsS0FBSztZQUNHLHNCQUFzQjtrQkFBOUIsS0FBSztZQUNHLG9CQUFvQjtrQkFBNUIsS0FBSztZQUNJLFlBQVk7a0JBQXJCLE1BQU07WUFDRyxRQUFRO2tCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgT25EZXN0cm95LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBSZWNpcGUgfSBmcm9tICcuLi8uLi8uLi9fbW9kZWxzL3JlY2lwZSc7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSAnLi4vLi4vLi4vX3R5cGVzL2ljb24uZW51bSc7XG5pbXBvcnQgeyBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZvcmtKb2luLCBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbmdyZWRpZW50IH0gZnJvbSAnLi4vLi4vLi4vX21vZGVscy9pbmdyZWRpZW50JztcbmltcG9ydCB7IFJlY2lwZVN0ZXAgfSBmcm9tICcuLi8uLi8uLi9fbW9kZWxzL3JlY2lwZS1zdGVwJztcbmltcG9ydCB7XG4gIEluZ3JlZGllbnRzU2VydmljZSxcbiAgUmVjaXBlc1NlcnZpY2UsXG4gIFJlY2lwZVN0YXR1c1NlcnZpY2UsXG4gIFJlY2lwZVN0ZXBzU2VydmljZSxcbiAgUmVjaXBlVHlwZVNlcnZpY2UsXG4gIFVzZXJTZXJ2aWNlXG59IGZyb20gJy4uLy4uLy4uL19zZXJ2aWNlcyc7XG5pbXBvcnQgeyBtYXAsIHNraXBXaGlsZSwgc3dpdGNoTWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEb2N1bWVudFJlc291cmNlIH0gZnJvbSAnbmd4LWpzb25hcGknO1xuaW1wb3J0IHsgUmVjaXBlUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX3NlcnZpY2VzJztcbmltcG9ydCB7IFJlY2lwZVN0YXR1cyB9IGZyb20gJy4uLy4uLy4uL19tb2RlbHMnO1xuaW1wb3J0IHsgTWVkaWFNYXRjaGVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQgeyBFdmVudFRyYWNlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL19jb21wb25lbnRzL2Fic3RyYWN0cy9ldmVudC10cmFjZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fc2VydmljZXMvYW5hbHl0aWNzLnNlcnZpY2UnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nLW1pYW0tcmVjaXBlLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVjaXBlLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yZWNpcGUtZm9ybS5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcblxuZXhwb3J0IGNsYXNzIFJlY2lwZUZvcm1Db21wb25lbnQgZXh0ZW5kcyBFdmVudFRyYWNlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSByZWNpcGVUb1VwZGF0ZTogUmVjaXBlO1xuICBASW5wdXQoKSBzZWNvbmRhcnlBY3Rpb25UZXh0ID0gJ0FubnVsZXInO1xuICBASW5wdXQoKSBwcmltYXJ5QWN0aW9uVGV4dCA9ICdFbnJlZ2lzdHJlciBsYSByZWNldHRlJztcbiAgQElucHV0KCkgc2Vjb25kYXJ5QnV0dG9uRGlzYWJsZSA9IGZhbHNlOyAvLyBJZiB0cnVlLCBkaXNhYmxlIHRoZSBzZWNvbmRhcnlCdXR0b24gd2hpbGUgdGhlcmUgYXJlIG5vIGNoYW5nZXMgaW4gdGhlIGZvcm1cbiAgQElucHV0KCkgY3VzdG9tU3VibWl0Q2FsbGJhY2sgPSBmYWxzZTsgLy8gSWYgdHJ1ZSwgZW1pdCByZWNpcGVDaGFuZ2UgdG8gbGV0IHRoZSBwYXJlbnQgaGFuZGxlIHJlY2lwZSBzYXZpbmdcbiAgQE91dHB1dCgpIHJlY2lwZUNoYW5nZTogRXZlbnRFbWl0dGVyPFJlY2lwZT47XG4gIEBPdXRwdXQoKSBjYW5jZWxlZDogRXZlbnRFbWl0dGVyPFJlY2lwZT47IC8vIFRPRE86IEZvciBtb3JlIGNsYXJpdHksIHNwbGl0IGludG8gJ2NhbmNlbGVkPHZvaWQ+JyBldCAnc2Vjb25kYXJ5QWN0aW9uPFJlY2lwZT4nXG5cbiAgcHVibGljIHJlY2lwZTogUmVjaXBlO1xuICBwdWJsaWMgcmVjaXBlRm9ybTogRm9ybUdyb3VwO1xuICBwdWJsaWMgaXNVcGRhdGU6IGJvb2xlYW47XG4gIHB1YmxpYyBpc0xvY2FsSW1hZ2UgPSBmYWxzZTtcbiAgcHVibGljIGljb24gPSBJY29uO1xuICBwdWJsaWMgZGlmaWN1bHRpZXMgPSBbJ2ZhY2lsZScsICdtb3llbicsICdkaWZmaWNpbGUnXTtcbiAgcHVibGljIGljb25zRGlmaWN1bHRpZXMgPSBbdGhpcy5pY29uLkRpZmZpY3VsdHlMb3csIHRoaXMuaWNvbi5EaWZmaWN1bHR5TWVkaXVtLCB0aGlzLmljb24uRGlmZmljdWx0eUhpZ2hdO1xuICBwdWJsaWMgY29zdHMgPSBbJ2ZhaWJsZScsICdtb3llbicsICfDqWxldsOpJ107XG4gIHB1YmxpYyBpY29uc0Nvc3RzID0gW3RoaXMuaWNvbi5Db3N0TG93LCB0aGlzLmljb24uQ29zdE1lZGl1bSwgdGhpcy5pY29uLkNvc3RIaWdodF07XG4gIHB1YmxpYyBkZWxldGVJbmdyZWRpZW50c0xpc3Q6IHN0cmluZ1tdO1xuICBwdWJsaWMgZGVsZXRlU3RlcHNMaXN0OiBzdHJpbmdbXTtcbiAgcHVibGljIGlzQWRtaW46IGJvb2xlYW47XG4gIHB1YmxpYyBzdGF0dXNlczogT2JzZXJ2YWJsZTxSZWNpcGVTdGF0dXNbXT47XG4gIHB1YmxpYyBpc1N1Ym1pdGluZyA9IGZhbHNlO1xuXG4gIHByaXZhdGUgZm9ybVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHB1YmxpYyByZWNpcGVQcm92aWRlcnNlcnZpY2U6IFJlY2lwZVByb3ZpZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlY2lwZVNlcnZpY2U6IFJlY2lwZXNTZXJ2aWNlLFxuICAgIHB1YmxpYyByZWNpcGVUeXBlU2VydmljZTogUmVjaXBlVHlwZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbmdyZWRpZW50U2VydmljZTogSW5ncmVkaWVudHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVjaXBlU3RlcHNTZXJ2aWNlOiBSZWNpcGVTdGVwc1NlcnZpY2UsXG4gICAgcHVibGljIG1lZGlhTWF0Y2hlcjogTWVkaWFNYXRjaGVyLFxuICAgIHB1YmxpYyBzdGF0dXNTZXJ2aWNlOiBSZWNpcGVTdGF0dXNTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGFuYWx5dGljc1NlcnZpY2UpO1xuICAgIHRoaXMuY2FuY2VsZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5yZWNpcGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5kZWxldGVJbmdyZWRpZW50c0xpc3QgPSBbXTtcbiAgICB0aGlzLmRlbGV0ZVN0ZXBzTGlzdCA9IFtdO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IFtdO1xuICAgIHRoaXMuc3RhdHVzZXMgPSB0aGlzLnN0YXR1c1NlcnZpY2UuYWxsKCkucGlwZShtYXAocmVzID0+IHJlcy5kYXRhKSk7XG4gIH1cblxuICBjdXJyZW50UGF0aCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnJlY2lwZVRvVXBkYXRlKSB7XG4gICAgICByZXR1cm4gJ3VwZGF0ZSc7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgcmV0dXJuICduZXcnO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy51c2VyU2VydmljZS5pc0FkbWluLnN1YnNjcmliZShpc0FkbWluID0+IHtcbiAgICAgICAgdGhpcy5pc0FkbWluID0gaXNBZG1pbjtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSksXG4gICAgICB0aGlzLmluaXRSZWNpcGUoKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgpXG4gICAgKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgncmVjaXBlVG9VcGRhdGUnKSAmJiB0aGlzLnJlY2lwZVRvVXBkYXRlICE9IG51bGwpIHtcbiAgICAgIHRoaXMuaXNVcGRhdGUgPSB0cnVlO1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5pbml0UmVjaXBlKCkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKSk7XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLnBhZ2V2aWV3KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWIgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cblxuICAvKipcbiAgICogT25seSBmb3IgcmVjaXBlIGNyZWF0aW9uLlxuICAgKiBJbml0IGJsYW5rIHJlY2lwZVxuICAgKi9cbiAgcHJpdmF0ZSBpbml0UmVjaXBlKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgaWYgKHRoaXMucmVjaXBlVG9VcGRhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlY2lwZVNlcnZpY2UuZ2V0KHRoaXMucmVjaXBlVG9VcGRhdGUuaWQsIHsgaW5jbHVkZTogWydpbmdyZWRpZW50cycsICd0YWdzJywgJ3JlY2lwZS1zdGVwcycsICdzcG9uc29ycycsICdyZWNpcGUtc3RhdHVzJywgJ3JlY2lwZS10eXBlJywgJ3JlY2lwZS1wcm92aWRlciddIH0pLnBpcGUoXG4gICAgICAgIHNraXBXaGlsZShyZXN1bHQgPT4gIXJlc3VsdCB8fCByZXN1bHQuaXNfbG9hZGluZyksXG4gICAgICAgIHRhcChyZXN1bHQgPT4ge1xuICAgICAgICAgIHRoaXMucmVjaXBlID0gcmVzdWx0O1xuICAgICAgICAgIHRoaXMuaW5pdEZvcm0odGhpcy5yZWNpcGUpO1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN0YXR1c1NlcnZpY2UudmFsaWRhdGVkJC5waXBlKFxuICAgICAgc2tpcFdoaWxlKHJlc3VsdCA9PiAhcmVzdWx0KSxcbiAgICAgIHN3aXRjaE1hcChzdGF0dXMgPT5cbiAgICAgICAgdGhpcy51c2VyU2VydmljZS51c2VyUHJvdmlkZXIucGlwZShcbiAgICAgICAgICBza2lwV2hpbGUocHJvdmlkZXIgPT4gcHJvdmlkZXIgPT0gbnVsbCksXG4gICAgICAgICAgdGFwKHJlY2lwZVByb3ZpZGVyID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVjaXBlID0gdGhpcy5yZWNpcGVTZXJ2aWNlLm5ldygpO1xuICAgICAgICAgICAgdGhpcy5yZWNpcGUuYWRkUmVsYXRpb25zaGlwKHN0YXR1cywgJ3JlY2lwZS1zdGF0dXMnKTtcbiAgICAgICAgICAgIHRoaXMucmVjaXBlLmFkZFJlbGF0aW9uc2hpcChyZWNpcGVQcm92aWRlciwgJ3JlY2lwZS1wcm92aWRlcicpO1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMucmVjaXBlLmlkO1xuICAgICAgICAgICAgdGhpcy5pbml0Rm9ybSh0aGlzLnJlY2lwZSk7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSBjaGFuZ2VzIGFuZCByZXR1cm4gdGhlbSBpbiBjYXNlIHRoZXkgY291bGQgYmUgdXNlZCBhZnRlciBidXQgZG9uJ3Qgc2F2ZSBpdFxuICAgKiBUT0RPOiBXaGVuIHdlIHNwbGl0IHRoZSBvdXRwdXQsIHJlbmFtZSBzZWNvbmRhcnlBY3Rpb24oKSAtPiBzZWNvbmRhcnlBY3Rpb24uZW1pdCh0aGlzLnJlY2lwZSlcbiAgICovXG4gIHB1YmxpYyBjYW5jZWwoKSB7XG4gICAgdGhpcy5zZXRSZWxhdGlvblNoaXBJZkZvcm1QYXJ0SXNEaXJ0eSgncmVjaXBlLXR5cGUnKTtcbiAgICB0aGlzLnNldFJlbGF0aW9uU2hpcElmRm9ybVBhcnRJc0RpcnR5KCdyZWNpcGUtc3RhdHVzJyk7XG4gICAgdGhpcy5zZXRSZWxhdGlvblNoaXBJZkZvcm1QYXJ0SXNEaXJ0eSgncmVjaXBlLXByb3ZpZGVyJyk7XG4gICAgdGhpcy5yZWNpcGUuYXR0cmlidXRlcyA9IHsgLi4uIHRoaXMucmVjaXBlLmF0dHJpYnV0ZXMsIC4uLnRoaXMucmVjaXBlRm9ybS5nZXRSYXdWYWx1ZSgpLmF0dHJpYnV0ZXMgfTtcbiAgICB0aGlzLmNhbmNlbGVkLmVtaXQodGhpcy5yZWNpcGUpO1xuICB9XG5cbiAgcHVibGljIGFkZFRvRGVsZXRlSW5ncmVkaWVudHNMaXN0KGluZ3JlZGllbnRJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5kZWxldGVJbmdyZWRpZW50c0xpc3QucHVzaChpbmdyZWRpZW50SWQpO1xuICB9XG5cbiAgcHVibGljIGFkZFRvRGVsZXRlU3RlcHNMaXN0KHN0ZXBJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5kZWxldGVTdGVwc0xpc3QucHVzaChzdGVwSWQpO1xuICB9XG5cbiAgcHVibGljIHN1Ym1pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzU3VibWl0aW5nID0gdHJ1ZTtcbiAgICB0aGlzLnVwc2VydFJlY2lwZSgpLnN1YnNjcmliZSgocmVjaXBlKSA9PiB7XG4gICAgICBpZiAocmVjaXBlKSB7XG4gICAgICAgIHRoaXMuZGVsZXRlU3RlcHNMaXN0ID0gW107XG4gICAgICAgIHRoaXMuZGVsZXRlSW5ncmVkaWVudHNMaXN0ID0gW107XG4gICAgICAgIHRoaXMuaXNTdWJtaXRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5oYW5kbGVFbWl0aW9uKHJlY2lwZSk7XG4gICAgICAgIHRoaXMuc2VuZEV2ZW50KHRoaXMuYW5hbHl0aWNzU2VydmljZS5FVkVOVF9QRVJTT05BTF9SRUNJUEVfQ1JFQVRFKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGFzc2ljIHVzZSBjYXNlOiBpZiB0aGUgZm9ybSBpcyBpbnZhbGlkLCBpZiBpdCBpcyBub3QgZGlydHkgb3IgaWYgdGhlIHJlY2lwZSBpcyBiZWluZyBzdWJtaXR0ZWQsIHRoZSBidXR0b25zIG11c3QgYmUgZGlzYWJsZWRcbiAgICogSWYgcmVjaXBlID09IG51bGwgLT4gY2xhc3NpYyB1c2UgY2FzZVxuICAgKiBJZiByZWNpcGUgIT0gbnVsbCAmIHN0YXR1cyAhPSBEUkFGVCAtPiBjbGFzc2ljIHVzZSBjYXNlXG4gICAqIGlmIHJlY2lwZSAhPSBudWxsICYgc3RhdHUgPT0gRFJBRlQgLT4gdGhlIGJ1dHRvbnMgbXVzdCBuZXZlciBiZSBkaXNhYmxlZFxuICAgKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBidXR0b25zIHNob3VsZCBiZSBkaXNhYmxlZFxuICAgKi9cbiAgcHVibGljIGNhbnRTdWJtaXQoKSB7XG4gICAgcmV0dXJuICF0aGlzLnJlY2lwZSAmJiAodGhpcy5yZWNpcGVGb3JtPy5pbnZhbGlkIHx8ICF0aGlzLnJlY2lwZUZvcm0/LmRpcnR5IHx8IHRoaXMuaXNTdWJtaXRpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIHRoaXMgZnVuY3Rpb24gZmlsbCBmb3JtIHZhbHVlcyB3aXRoIGdpdmVuIHJlY2lwZVxuICAgKiBGb3JtIGlzIGRpdmlkZSBpbiA0IHBhcnQgYXR0cmlidXRlcyx0eXBlLCBpbmdyZWRpZW50cywgc3RlcHNcbiAgICogdG8gZm9sb3cgcmVjaXBlIG1vZGVsIGluIG9uIGhhbmQgYW5kIGluIG90aGVyIGhhbmQgdG8gdXBkYXRlIG9ubHlcbiAgICogcGFydHMgdGhhdCBoYXZlIGJlZW4gY2hhbmdlIGJ5IHVzZXIgdGhhbmtzIHRvIGRpcnR5IGF0dHJpYnV0ZSBvblxuICAgKiBlYWNoIG9mIHRob3NlIHBhcnRzXG4gICAqIEBwYXJhbSByZWNpcGUgdXNlIHRvIGZpbGwgZm9ybVxuICAgKi9cbiAgcHJpdmF0ZSBpbml0Rm9ybShyZWNpcGU6IFJlY2lwZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZvcm1TdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuZm9ybVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICB0aGlzLnJlY2lwZUZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICdyZWNpcGUtc3RhdHVzJzogbmV3IEZvcm1Db250cm9sKHJlY2lwZT8ucmVsYXRpb25zaGlwcz8uW2ByZWNpcGUtc3RhdHVzYF0/LmRhdGEsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgJ3JlY2lwZS1wcm92aWRlcic6IG5ldyBGb3JtQ29udHJvbChyZWNpcGU/LnJlbGF0aW9uc2hpcHM/LltgcmVjaXBlLXByb3ZpZGVyYF0/LmRhdGE/LmlkID9cbiAgICAgICAgcmVjaXBlPy5yZWxhdGlvbnNoaXBzPy5bYHJlY2lwZS1wcm92aWRlcmBdPy5kYXRhIDogJ3BlcnNvbmFsJywgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICBhdHRyaWJ1dGVzOiB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgdGl0bGU6IG5ldyBGb3JtQ29udHJvbChyZWNpcGUuYXR0cmlidXRlc1tgdGl0bGVgXSwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgICdtZWRpYS11cmwnOiBuZXcgRm9ybUNvbnRyb2wocmVjaXBlLmF0dHJpYnV0ZXNbYG1lZGlhLXVybGBdKSxcbiAgICAgICAgWydudW1iZXItb2YtZ3Vlc3RzJ106IG5ldyBGb3JtQ29udHJvbChyZWNpcGUuZ3Vlc3RzID9cbiAgICAgICAgICByZWNpcGUuZ3Vlc3RzIDogNCwgW1ZhbGlkYXRvcnMubWluKDEpLCBWYWxpZGF0b3JzLm1heCg5OTkpXSksXG4gICAgICAgIGRlc2NyaXB0aW9uOiBuZXcgRm9ybUNvbnRyb2wocmVjaXBlLmF0dHJpYnV0ZXNbYGRlc2NyaXB0aW9uYF0pLFxuICAgICAgICAncHJlcGFyYXRpb24tdGltZSc6IG5ldyBGb3JtQ29udHJvbChyZWNpcGUuYXR0cmlidXRlc1tgcHJlcGFyYXRpb24tdGltZWBdID8gcmVjaXBlLmF0dHJpYnV0ZXNbYHByZXBhcmF0aW9uLXRpbWVgXSA6ICcnKSxcbiAgICAgICAgJ3ByZWhlYXRpbmctdGltZSc6IG5ldyBGb3JtQ29udHJvbChyZWNpcGUuYXR0cmlidXRlc1tgcHJlaGVhdGluZy10aW1lYF0pLFxuICAgICAgICAnY29va2luZy10aW1lJzogbmV3IEZvcm1Db250cm9sKHJlY2lwZS5hdHRyaWJ1dGVzW2Bjb29raW5nLXRpbWVgXSksXG4gICAgICAgICdyZXN0aW5nLXRpbWUnOiBuZXcgRm9ybUNvbnRyb2wocmVjaXBlLmF0dHJpYnV0ZXNbYHJlc3RpbmctdGltZWBdKSxcbiAgICAgICAgZGlmZmljdWx0eTogbmV3IEZvcm1Db250cm9sKHJlY2lwZS5hdHRyaWJ1dGVzW2BkaWZmaWN1bHR5YF0gPyByZWNpcGUuYXR0cmlidXRlc1tgZGlmZmljdWx0eWBdIDogMSwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICB9KSxcbiAgICAgICdyZWNpcGUtdHlwZSc6IG5ldyBGb3JtQ29udHJvbChyZWNpcGUucmVsYXRpb25zaGlwc1tgcmVjaXBlLXR5cGVgXS5kYXRhLmlkID8gcmVjaXBlLnJlbGF0aW9uc2hpcHNbYHJlY2lwZS10eXBlYF0uZGF0YSA6IG51bGwsXG4gICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgaW5ncmVkaWVudHM6IHRoaXMuaW5pdEluZ3JlZGllbnRGb3JtQXJyYXkocmVjaXBlKSxcbiAgICAgIHN0ZXBzOiB0aGlzLmluaXRTdGVwRm9ybUFycmF5KHJlY2lwZSlcbiAgICB9KTtcbiAgICB0aGlzLmluaXRJc0xvY2FsSW1hZ2UoKTtcbiAgICB0aGlzLmZvcm1TdWJzY3JpcHRpb24gPSB0aGlzLnJlY2lwZUZvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRm9yIGVhY2ggUmVjaXBlIEluZ3JlZGllbnQgd2lsbCBjcmVhdGUgYSBmb3JtXG4gICAqIHRoYXQgd2lsbCBiZSBncm91cCBpbiBhbiBmb3JtIEFycmF5XG4gICAqIEBwYXJhbSByZWNpcGUgY3VycmVudCByZWNpcGUgdGhhdCAnbGwgZmlsbCBmb3JtXG4gICAqL1xuICBwcml2YXRlIGluaXRJbmdyZWRpZW50Rm9ybUFycmF5KHJlY2lwZTogUmVjaXBlKTogRm9ybUFycmF5IHtcbiAgICBjb25zdCBpbmdyZWRpZW50cyA9IHRoaXMuZmIuYXJyYXkoW10pO1xuICAgIGNvbnN0IHJlY2lwZUluZ3JlZGllbnRzID0gcmVjaXBlLnJlbGF0aW9uc2hpcHNbYGluZ3JlZGllbnRzYF0uZGF0YTtcbiAgICByZWNpcGVJbmdyZWRpZW50cy5mb3JFYWNoKChpbmdyZWRpZW50OiBJbmdyZWRpZW50KSA9PiB7XG4gICAgICBpbmdyZWRpZW50cy5wdXNoKHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICBpZDogbmV3IEZvcm1Db250cm9sKGluZ3JlZGllbnQuaWQpLFxuICAgICAgICBhdHRyaWJ1dGVzOiB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICBxdWFudGl0eTogbmV3IEZvcm1Db250cm9sKGluZ3JlZGllbnQuYXR0cmlidXRlcy5xdWFudGl0eSwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgICAgdW5pdDogbmV3IEZvcm1Db250cm9sKGluZ3JlZGllbnQuYXR0cmlidXRlcy51bml0LCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgICBuYW1lOiBuZXcgRm9ybUNvbnRyb2woaW5ncmVkaWVudC5hdHRyaWJ1dGVzLm5hbWUsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICAgIC8vIGltcG9ydGFuY2U6IG5ldyBGb3JtQ29udHJvbChcbiAgICAgICAgICAvLyAgIGluZ3JlZGllbnQuYXR0cmlidXRlcy5pbXBvcnRhbmNlLFxuICAgICAgICAgIC8vICAgcmVjaXBlLnJlbGF0aW9uc2hpcHM/LltgcmVjaXBlLXByb3ZpZGVyYF0/LmRhdGE/LmlkID09PSAncGVyc29uYWwnID8gVmFsaWRhdG9ycy5udWxsVmFsaWRhdG9yIDogVmFsaWRhdG9ycy5yZXF1aXJlZFxuICAgICAgICAgIC8vICksXG4gICAgICAgICAgLy8gTm90IG1hbmRhdG9yeSBmb3IgdGhlIG1vbWVudCwgZGVjb21tZW50IGFib3ZlIGlmIG1hbmRhdG9yeSBsYXRlclxuICAgICAgICAgIGltcG9ydGFuY2U6IG5ldyBGb3JtQ29udHJvbChpbmdyZWRpZW50LmF0dHJpYnV0ZXMuaW1wb3J0YW5jZSwgVmFsaWRhdG9ycy5udWxsVmFsaWRhdG9yKSxcbiAgICAgICAgICAncGljdHVyZS11cmwnOiBuZXcgRm9ybUNvbnRyb2woaW5ncmVkaWVudC5hdHRyaWJ1dGVzWydwaWN0dXJlLXVybCddKVxuICAgICAgICB9KVxuICAgICAgfSkpO1xuICAgIH0pO1xuICAgIHJldHVybiBpbmdyZWRpZW50cztcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3IgZWFjaCBSZWNpcGUgc3RlcHMgd2lsbCBjcmVhdGUgYSBmb3JtXG4gICAqIHRoYXQgd2lsbCBiZSBncm91cCBpbiBhbiBmb3JtIEFycmF5XG4gICAqIEBwYXJhbSByZWNpcGUgY3VycmVudCByZWNpcGUgdGhhdCAnbGwgZmlsbCBmb3JtXG4gICAqL1xuICBwcml2YXRlIGluaXRTdGVwRm9ybUFycmF5KHJlY2lwZTogUmVjaXBlKTogRm9ybUFycmF5IHtcbiAgICBjb25zdCBzdGVwcyA9IHRoaXMuZmIuYXJyYXkoW10pO1xuICAgIHJlY2lwZS5zdGVwcy5mb3JFYWNoKChzdGVwOiBSZWNpcGVTdGVwKSA9PiBzdGVwcy5wdXNoKHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgaWQ6IG5ldyBGb3JtQ29udHJvbChzdGVwLmlkKSxcbiAgICAgIGF0dHJpYnV0ZXM6IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICAnc3RlcC1udW1iZXInOiBuZXcgRm9ybUNvbnRyb2woc3RlcC5hdHRyaWJ1dGVzWydzdGVwLW51bWJlciddKSxcbiAgICAgICAgZGVzY3JpcHRpb246IG5ldyBGb3JtQ29udHJvbChzdGVwLmF0dHJpYnV0ZXMuZGVzY3JpcHRpb24pXG4gICAgICB9KVxuICAgIH0pKSk7XG4gICAgcmV0dXJuIHN0ZXBzO1xuICB9XG5cbiAgLyoqXG4gICAqIE1lcmdlIGN1cnJlbnQgcmVjaXBlIHdpdGggZm9ybSByZXN1bHRcbiAgICogcmV0dXJuIGFuIG9ic2V2YWJsZSB0aGF0J2xsIHVwZGF0ZSBvciBjcmVhdGUgcmVjaXBlXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZVJlY2lwZUF0dHJpYnV0ZXMoKTogT2JzZXJ2YWJsZTxSZWNpcGU+IHtcbiAgICBjb25zdCBwYXJhbSA9IHtcbiAgICAgIGluY2x1ZGU6IFsnaW5ncmVkaWVudHMnLCAncmVjaXBlLXN0ZXBzJywgJ3JlY2lwZS1zdGF0dXMnLCAncmVjaXBlLXByb3ZpZGVyJywgJ3JlY2lwZS10eXBlJywgJ3RhZ3MnXVxuICAgIH07XG4gICAgdGhpcy5yZWNpcGUuYXR0cmlidXRlcyA9IHsgLi4uIHRoaXMucmVjaXBlLmF0dHJpYnV0ZXMsIC4uLnRoaXMucmVjaXBlRm9ybS5nZXRSYXdWYWx1ZSgpLmF0dHJpYnV0ZXMgfTtcbiAgICByZXR1cm4gdGhpcy5yZWNpcGUuc2F2ZShwYXJhbSkucGlwZShtYXAoKHJlczogRG9jdW1lbnRSZXNvdXJjZTxSZWNpcGU+KSA9PiB7XG4gICAgICAvLyB3ZSBhcmUgaW4gYSBjcmVhdGlvbiwgdGhlIHNhdmUgaXMgYSBwb3N0IHRoYXQgcmV0dXJuIHJlc3VsdFxuICAgICAgaWYgKHJlcyAmJiByZXMuZGF0YSkge1xuICAgICAgICBjb25zdCByZWNpcGUgPSB0aGlzLnJlY2lwZVNlcnZpY2UubmV3KCk7XG4gICAgICAgIHJlY2lwZS5maWxsKHJlcyk7XG4gICAgICAgIHJldHVybiByZWNpcGU7XG4gICAgICB9IGVsc2UgeyAvLyB3ZSBhcmUgaW4gYSBwYXRjaCByZXR1cm4gdGhlIGN1cnJlbnQgcmVjaXBlIGFscmVhZHkgdXBkYXRlZFxuICAgICAgICByZXR1cm4gdGhpcy5yZWNpcGU7XG4gICAgICB9XG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSByZWNpcGUncyByZWxhdGlvbnNoaXBzIEluZ3JlZGllbnQgYW5kICBTdGVwc1xuICAgKiBpZiBhdCBsZWFzdCBvbmUgc3RlcHMgaGFzIGNoYW5nZWQgd2lsbCB1cGRhdGUgdGhlIGZ1bGwgbGlzdCBvZiBzdGVwLFxuICAgKiBpZiBhdCBsZWFzdCBvbmUgaW5ncmVkaWVudCBjaGFuZ2VkIGl0ICdsbCB1cGRhdGUgdGhlIGZ1bGwgbGlzdCBvZiBpbmdyZWRpZW50LFxuICAgKiBpdCBjYW4gdXBkYXRlIGluZ3JkaWVudCBsaXN0IHdpdGhvdXQgdXBkYXRpbmcgc3RlcHMgbGlzdCBhbmQgdmljZSB2ZXJzYS5cbiAgICogQHBhcmFtIGN1cnJlbnRSZWNpcGUgdG8gdXBkYXRlIHRoaXMgcmVjaXBlIGFscmVhZHkgZXhpc3QgaW4gYmFja2VuZCBpdCBoYXMgdG8gaGFkIGFuIGlkXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlUmVjaXBlUmVsYXRpb25TaGlwcyhjdXJyZW50UmVjaXBlOiBSZWNpcGUpOiBPYnNlcnZhYmxlPFJlY2lwZT4ge1xuICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMucmVjaXBlRm9ybS5nZXRSYXdWYWx1ZSgpO1xuICAgIGNvbnN0IG9ic0xpc3QgPSBbXTtcbiAgICBpZiAodGhpcy5yZWNpcGVGb3JtLmdldCgnaW5ncmVkaWVudHMnKS5kaXJ0eSl7XG4gICAgICBjb25zdCBpbmdyZWRpZW50cyA9IHRoaXMuaW5ncmVkaWVudFNlcnZpY2UuY3JlYXRlT3JVcGRhdGVJbmdyZWRpZW50cyhjdXJyZW50UmVjaXBlLCBmb3JtVmFsdWUuaW5ncmVkaWVudHMpO1xuICAgICAgb2JzTGlzdC5wdXNoKHRoaXMuaW5ncmVkaWVudFNlcnZpY2UudXBzZXJ0SW5ncmVkaWVudExpc3QoaW5ncmVkaWVudHMpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZGVsZXRlSW5ncmVkaWVudHNMaXN0Lmxlbmd0aCA+IDApe1xuICAgICAgb2JzTGlzdC5wdXNoKHRoaXMuaW5ncmVkaWVudFNlcnZpY2UuZGVsZXRlSW5ncmVkaWVudExpc3QodGhpcy5kZWxldGVJbmdyZWRpZW50c0xpc3QpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMucmVjaXBlRm9ybS5nZXQoJ3N0ZXBzJykuZGlydHkpe1xuICAgICAgY29uc3Qgc3RlcHMgPSB0aGlzLnJlY2lwZVN0ZXBzU2VydmljZS5mb3JtVG9TdGVwc01hcHBlcihjdXJyZW50UmVjaXBlLCBmb3JtVmFsdWUuc3RlcHMpO1xuICAgICAgb2JzTGlzdC5wdXNoKHRoaXMucmVjaXBlU3RlcHNTZXJ2aWNlLmNyZWF0ZU9yVXBkYXRlUmVsYXRlZFN0ZXBzKHN0ZXBzKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmRlbGV0ZVN0ZXBzTGlzdC5sZW5ndGggPiAwKXtcbiAgICAgIG9ic0xpc3QucHVzaCh0aGlzLnJlY2lwZVN0ZXBzU2VydmljZS5kZWxldGVTdGVwTGlzdCh0aGlzLmRlbGV0ZVN0ZXBzTGlzdCkpO1xuICAgIH1cbiAgICByZXR1cm4gZm9ya0pvaW4ob2JzTGlzdCkucGlwZShcbiAgICAgIG1hcCgoKSA9PiBjdXJyZW50UmVjaXBlKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgcmVsYXRpb25zaGlwc0NoYW5nZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaW5nQ2hhbmdlID0gdGhpcy5yZWNpcGVGb3JtLmdldCgnaW5ncmVkaWVudHMnKS5kaXJ0eSB8fCB0aGlzLmRlbGV0ZUluZ3JlZGllbnRzTGlzdC5sZW5ndGggPiAwO1xuICAgIGNvbnN0IHN0ZXBDaGFuZ2UgPSB0aGlzLnJlY2lwZUZvcm0uZ2V0KCdzdGVwcycpLmRpcnR5IHx8IHRoaXMuZGVsZXRlU3RlcHNMaXN0Lmxlbmd0aCA+IDA7XG4gICAgcmV0dXJuIGluZ0NoYW5nZSB8fCBzdGVwQ2hhbmdlO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBvciBjcmVhdGUgUmVjaXBlXG4gICAqIGl0IGNhbiBvbmx5IHVwZGF0ZSBjaGFuZ2VkIHBhcnQgb2YgYSByZWNpcGVcbiAgICovXG4gIHByaXZhdGUgdXBzZXJ0UmVjaXBlKCk6IE9ic2VydmFibGU8UmVjaXBlPiB7XG4gICAgLy8gYnJlYWsgdXBzZXJ0IDogd2UgaGF2ZSB0byBjaG9vc2UgYmVldHdlbiByZWxhdGlvbnNoaXBzIGFuZCB0aGlzIGZpZWxkXG4gICAgZGVsZXRlIHRoaXMucmVjaXBlLmF0dHJpYnV0ZXNbYHN1Z2dlc3RlZGBdO1xuICAgIGRlbGV0ZSB0aGlzLnJlY2lwZS5hdHRyaWJ1dGVzW2Bwb3B1bGFyaXR5YF07XG4gICAgdGhpcy5oYW5kbGVSZWNpcGVTdGF0dXNXb3JrZmxvdygpO1xuICAgIHRoaXMuc2V0UmVsYXRpb25TaGlwSWZGb3JtUGFydElzRGlydHkoJ3JlY2lwZS10eXBlJyk7XG4gICAgdGhpcy5zZXRSZWxhdGlvblNoaXBJZkZvcm1QYXJ0SXNEaXJ0eSgncmVjaXBlLXByb3ZpZGVyJyk7XG4gICAgaWYgKHRoaXMuY3VzdG9tU3VibWl0Q2FsbGJhY2spIHtcbiAgICAgIHRoaXMucmVjaXBlLmF0dHJpYnV0ZXMgPSB7IC4uLiB0aGlzLnJlY2lwZS5hdHRyaWJ1dGVzLCAuLi50aGlzLnJlY2lwZUZvcm0uZ2V0UmF3VmFsdWUoKS5hdHRyaWJ1dGVzIH07XG4gICAgICB0aGlzLnJlY2lwZUNoYW5nZS5lbWl0KHRoaXMucmVjaXBlKTtcbiAgICAgIHRoaXMucmVjaXBlRm9ybS5nZXQoJ2F0dHJpYnV0ZXMnKS5tYXJrQXNEaXJ0eSgpO1xuICAgICAgdGhpcy5pc1N1Ym1pdGluZyA9IGZhbHNlO1xuICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH1cbiAgICBpZiAodGhpcy5yZWNpcGVGb3JtLmdldCgnYXR0cmlidXRlcycpPy5kaXJ0eSkge1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlUmVjaXBlQXR0cmlidXRlcygpLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChyZWNpcGUgPT4ge1xuICAgICAgICAgIC8vIG1heSBiZSBhIGNyZWF0aW9uIG9yIGFuIHVwZGF0ZSwgYW55d2F5IHVwZGF0ZVJlY2lwZUF0dHJpYnV0ZXMgcmV0dXJuIHRoZSBmaW5hbCByZWNpcGVcbiAgICAgICAgICAvLyB3ZSB1cGRhdGUgdGhlIGN1cnJlbnQgcmVjaXBlLCB1c2VmdWxsIGluIGNhc2Ugb2YgY3JlYXRpb24gYXMgaXQgaXMgdW5kZWZpbmVkIHVudGlsIG5vd1xuICAgICAgICAgIGlmIChyZWNpcGUpIHtcbiAgICAgICAgICAgIHRoaXMucmVjaXBlID0gcmVjaXBlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5yZWxhdGlvbnNoaXBzQ2hhbmdlZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy51cGRhdGVSZWNpcGVSZWxhdGlvblNoaXBzKHRoaXMucmVjaXBlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG9mKHJlY2lwZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gY2FuIG9ubHkgYmUgYW4gdXBkYXRlLCB3aXRoIG9ubHkgcmVsYXRpb25zaGlwcyBtb2RpZnNcbiAgICAgIHJldHVybiB0aGlzLnVwZGF0ZVJlY2lwZVJlbGF0aW9uU2hpcHModGhpcy5yZWNpcGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0UmVsYXRpb25TaGlwSWZGb3JtUGFydElzRGlydHkoZm9ybVBhcnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlY2lwZUZvcm0uZ2V0KGAke2Zvcm1QYXJ0fWApPy5kaXJ0eSkge1xuICAgICAgLy8gZm9yY2UgZnVsbCByZWNpcGUgdXBkYXRlXG4gICAgICB0aGlzLnJlY2lwZUZvcm0uZ2V0KCdhdHRyaWJ1dGVzJykubWFya0FzRGlydHkoKTtcbiAgICAgIHRoaXMucmVjaXBlLmFkZFJlbGF0aW9uc2hpcCh0aGlzLnJlY2lwZUZvcm0uZ2V0KGAke2Zvcm1QYXJ0fWApLnZhbHVlLCBgJHtmb3JtUGFydH1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRW1pdCB3aGVuIGNoYW5nZSBoYXMgYmVlbiBkb25lIGJhY2tcbiAgICogcmVzZXQgZm9ybSdzIHN0YXRlc1xuICAgKi9cbiAgcHJpdmF0ZSBoYW5kbGVFbWl0aW9uKHJlY2lwZTogUmVjaXBlKTogdm9pZCB7XG4gICAgdGhpcy5yZWNpcGVDaGFuZ2UuZW1pdChyZWNpcGUgPyByZWNpcGUgOiB0aGlzLnJlY2lwZSk7XG4gICAgdGhpcy5yZWNpcGVGb3JtLm1hcmtBc1ByaXN0aW5lKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVJlY2lwZVN0YXR1c1dvcmtmbG93KCkge1xuICAgIHRoaXMucmVjaXBlLmFkZFJlbGF0aW9uc2hpcCh0aGlzLnN0YXR1c1NlcnZpY2UudmFsaWRhdGVkVmFsdWUsICdyZWNpcGUtc3RhdHVzJyk7XG4gICAgY29uc3QgZm9ybU1lZGlhID0gdGhpcy5yZWNpcGVGb3JtLmdldCgnYXR0cmlidXRlcycpLmdldCgnbWVkaWEtdXJsJyk7XG4gICAgaWYgKCF0aGlzLnJlY2lwZS5hdHRyaWJ1dGVzWydtZWRpYS11cmwnXSAmJiAhZm9ybU1lZGlhLnZhbHVlKSB7XG4gICAgICBmb3JtTWVkaWEucGF0Y2hWYWx1ZSgnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Fzc2V0cy5taWFtLnRlY2gvZ2VuZXJpYy9wZXJzb25hbC1yZWNpcGVzL2RlZmF1bHRfaW1nX3BlcnNvbmFsX3JlY2lwZS5qcGcnKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5pdElzTG9jYWxJbWFnZSgpIHtcbiAgICBpZiAodGhpcy5yZWNpcGVGb3JtPy5nZXQoJ2F0dHJpYnV0ZXMnKT8uZ2V0KCdtZWRpYS11cmwnKS52YWx1ZSAhPSBudWxsKSB7XG4gICAgICB0aGlzLmlzTG9jYWxJbWFnZSA9IHRoaXMucmVjaXBlRm9ybT8uZ2V0KCdhdHRyaWJ1dGVzJyk/LmdldCgnbWVkaWEtdXJsJykudmFsdWUuc3RhcnRzV2l0aCgnZGF0YTppbWFnZScpO1xuICAgIH1cbiAgfVxufVxuXG5cbiIsIjxmb3JtICpuZ0lmPSdyZWNpcGVGb3JtJyBbZm9ybUdyb3VwXT1cInJlY2lwZUZvcm1cIiBjbGFzcz1cImZvcm0tY29udGFpbmVyXCI+XG4gIDxuZy1jb250YWluZXIgW2Zvcm1Hcm91cF09XCJyZWNpcGVGb3JtPy5nZXQoJ2F0dHJpYnV0ZXMnKVwiPlxuICAgIDxuZy1taWFtLXRleHQtaW5wdXQgY2xhc3M9XCJtLXRpdGxlLXRleHQtaW5wdXRcIiBuZ0RlZmF1bHRDb250cm9sIFtmb3JtQ29udHJvbF09XCJyZWNpcGVGb3JtPy5nZXQoJ2F0dHJpYnV0ZXMnKT8uZ2V0KCd0aXRsZScpXCI+XG4gICAgICA8bmctdGVtcGxhdGUgI3BsYWNlaG9sZGVyPlxuICAgICAgICA8c3BhbiBpMThuPlRpdHJlIGRlIGxhIHJlY2V0dGU8L3NwYW4+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctbWlhbS10ZXh0LWlucHV0PlxuICAgIDxkaXYgY2xhc3M9XCJyb3ctY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XG4gICAgICAgIDxuZy1taWFtLWRyYWctZHJvcC1pbnB1dCBuZ0RlZmF1bHRDb250cm9sIFtmb3JtQ29udHJvbF09XCJyZWNpcGVGb3JtPy5nZXQoJ2F0dHJpYnV0ZXMnKT8uZ2V0KCdtZWRpYS11cmwnKVwiXG4gICAgICAgICAgW2ltYWdlVXJsXT1cInJlY2lwZUZvcm0/LmdldCgnYXR0cmlidXRlcycpPy5nZXQoJ21lZGlhLXVybCcpPy52YWx1ZVwiIFtwaG90b01vZGVdPSd0cnVlJ1xuICAgICAgICA+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNidXR0b25UZXh0PlxuICAgICAgICAgICAgPHNwYW4gaTE4bj5Bam91dGVyIHVuZSBwaG90bzwvc3Bhbj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLW1pYW0tZHJhZy1kcm9wLWlucHV0PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVjaXBlLWZvcm1fX2d1ZXN0cyBtLWRlZmF1bHQtY2FyZFwiPlxuICAgICAgICAgIDxzcGFuIGkxOG4gY2xhc3M9XCJyZWNpcGUtZm9ybV9fZ3Vlc3RzX19sYWJlbFwiPk5vbWJyZSBkZSBjb252aXZlczwvc3Bhbj5cbiAgICAgICAgICA8bmctbWlhbS1jb3VudGVyLWlucHV0IG5nRGVmYXVsdENvbnRyb2wgZm9ybUNvbnRyb2xOYW1lPVwibnVtYmVyLW9mLWd1ZXN0c1wiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwidGhpcy5yZWNpcGVGb3JtLmNvbnRyb2xzWydhdHRyaWJ1dGVzJ11bJ2NvbnRyb2xzJ11bWydudW1iZXItb2YtZ3Vlc3RzJ11dXCJcbiAgICAgICAgICAgIGNvdW50ZXI9JzQnIG1pblJhbmdlPScwJyBtYXhSYW5nZT0nOTk5Jz5cbiAgICAgICAgICA8L25nLW1pYW0tY291bnRlci1pbnB1dD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyZWNpcGUtZm9ybV9fYXR0aWJ1dGVzXCI+XG4gICAgICAgIDwhLS0gIERFUFJFQ0FURUQgLSBVU0UgTUlBTSBEUyBJTlBVVFMgLS0+XG4gICAgICAgIDwhLS0gPG5nLW1pYW0tc2VsZWN0LWlucHV0IG5nRGVmYXVsdENvbnRyb2wgbGFiZWxQYXRoPSdhdHRyaWJ1dGVzLm5hbWUnXG4gICAgICAgICAgW29wdGlvbnNdPVwicmVjaXBlVHlwZVNlcnZpY2U/LmdldFR5cGVzKCkgfCBhc3luY1wiIFtmb3JtQ29udHJvbF09XCJyZWNpcGVGb3JtPy5nZXQoJ3JlY2lwZS10eXBlJylcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNwbGFjZWhvbGRlcj5cbiAgICAgICAgICAgIDxzcGFuIGkxOG4+Q2hvaXNpciB1biB0eXBlPC9zcGFuPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctbWlhbS1zZWxlY3QtaW5wdXQ+IC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVjaXBlLWZvcm1fX2F0dGlidXRlc19fc2xpZGVyc1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWNpcGUtZm9ybV9fYXR0aWJ1dGVzX19zbGlkZXJcIj5cbiAgICAgICAgICAgIDxuZy1taWFtLXNsaWRlciBuZ0RlZmF1bHRDb250cm9sIFtzdGVwc109XCJkaWZpY3VsdGllc1wiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJyZWNpcGVGb3JtPy5nZXQoJ2F0dHJpYnV0ZXMnKT8uZ2V0KCdkaWZmaWN1bHR5JylcIiBbaWNvbnNdPVwiaWNvbnNEaWZpY3VsdGllc1wiPlxuICAgICAgICAgICAgPC9uZy1taWFtLXNsaWRlcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9J3JlY2lwZUZvcm0nIGNsYXNzPVwicmVjaXBlLWZvcm1fX2F0dGlidXRlc19fdGltZXNcIj5cbiAgICAgICAgICA8bmctbWlhbS10aW1lLXBpY2tlciBuZ0RlZmF1bHRDb250cm9sXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwicmVjaXBlRm9ybT8uZ2V0KCdhdHRyaWJ1dGVzJyk/LmdldCgncHJlcGFyYXRpb24tdGltZScpXCIgW2ljb25dPSdpY29uLlRpbWUnXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0aXRsZT5cbiAgICAgICAgICAgICAgPHNwYW4gaTE4bj5UZW1wcyBkZSBwcsOpcGFyYXRpb248L3NwYW4+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctbWlhbS10aW1lLXBpY2tlcj5cbiAgICAgICAgICA8bmctbWlhbS10aW1lLXBpY2tlciBuZ0RlZmF1bHRDb250cm9sXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwicmVjaXBlRm9ybT8uZ2V0KCdhdHRyaWJ1dGVzJyk/LmdldCgnY29va2luZy10aW1lJylcIiBbaWNvbl09J2ljb24uSG90J1xuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGl0bGU+XG4gICAgICAgICAgICAgIDxzcGFuIGkxOG4+VGVtcHMgZGUgY3Vpc3Nvbjwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy1taWFtLXRpbWUtcGlja2VyPlxuICAgICAgICAgIDxuZy1taWFtLXRpbWUtcGlja2VyIG5nRGVmYXVsdENvbnRyb2xcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJyZWNpcGVGb3JtPy5nZXQoJ2F0dHJpYnV0ZXMnKT8uZ2V0KCdyZXN0aW5nLXRpbWUnKVwiIFtpY29uXT0naWNvbi5XYWl0J1xuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGl0bGU+XG4gICAgICAgICAgICAgIDxzcGFuIGkxOG4+VGVtcHMgZGUgcmVwb3M8L3NwYW4+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctbWlhbS10aW1lLXBpY2tlcj5cbiAgICAgICAgICA8bmctbWlhbS10aW1lLXBpY2tlciBuZ0RlZmF1bHRDb250cm9sXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwicmVjaXBlRm9ybT8uZ2V0KCdhdHRyaWJ1dGVzJyk/LmdldCgncmVzdGluZy10aW1lJylcIiBbaWNvbl09J2ljb24uUHJlaGVhdCdcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3RpdGxlPlxuICAgICAgICAgICAgICA8c3BhbiBpMThuPlRlbXBzIGRlIHByw6ljaGF1ZmZhZ2U8L3NwYW4+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctbWlhbS10aW1lLXBpY2tlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxkaXYgY2xhc3M9XCJyb3ctY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiPlxuICAgICAgPG5nLW1pYW0tbGlzdC1pbnB1dCAgbmdEZWZhdWx0Q29udHJvbCAoZGVsZXRlSWQpPVwiYWRkVG9EZWxldGVJbmdyZWRpZW50c0xpc3QoJGV2ZW50KVwiIFtpbmdyZWRpZW50TW9kZV09J3RydWUnXG4gICAgICAgIFtsaXN0XT1cInJlY2lwZUZvcm0uZ2V0KCdpbmdyZWRpZW50cycpXCIgZm9ybUFycmF5TmFtZT1cImluZ3JlZGllbnRzXCI+XG4gICAgICA8L25nLW1pYW0tbGlzdC1pbnB1dD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XG4gICAgICA8bmctbWlhbS1saXN0LWlucHV0IG5nRGVmYXVsdENvbnRyb2wgZm9ybUFycmF5TmFtZT1cInN0ZXBzXCIgKGRlbGV0ZUlkKT1cImFkZFRvRGVsZXRlU3RlcHNMaXN0KCRldmVudClcIlxuICAgICAgICBbbGlzdF09XCJyZWNpcGVGb3JtLmdldCgnc3RlcHMnKVwiPjwvbmctbWlhbS1saXN0LWlucHV0PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuPC9mb3JtPlxuPGRpdiBjbGFzcz0nYnV0dG9uLXJvdyc+XG4gIDxidXR0b24gaTE4biBjbGFzcz1cIm0tYnV0dG9uLXNlY29uZGFyeVwiIChjbGljayk9J2NhbmNlbCgpJz5Bbm51bGVyPC9idXR0b24+XG4gIDxidXR0b24gaTE4biBjbGFzcz1cIm0tYnV0dG9uLXByaW1hcnlcIiAoY2xpY2spPSdzdWJtaXQoKScgW2Rpc2FibGVkXT0ncmVjaXBlRm9ybT8uaW52YWxpZCB8fMKgIXJlY2lwZUZvcm0/LmRpcnR5IHx8IGlzU3VibWl0aW5nJz5cbiAgICBFbnJlZ2lzdHJlciBsYSByZWNldHRlXG4gIDwvYnV0dG9uPlxuPC9kaXY+Il19
568
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fd2ViLWNvbXBvbmVudHMvcmVjaXBlLWNyZWF0aW9uL3JlY2lwZS1mb3JtL3JlY2lwZS1mb3JtLmNvbXBvbmVudC50cyIsImxpYi9fd2ViLWNvbXBvbmVudHMvcmVjaXBlLWNyZWF0aW9uL3JlY2lwZS1mb3JtL3JlY2lwZS1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUd2QixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixpQkFBaUIsR0FFbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFhLFdBQVcsRUFBRSxXQUFXLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFHOUQsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsV0FBVyxFQUNaLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLG9C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Ozs7OztpQkFTZixVQUFBLGtGQUFpQjs7Ozs7O2tCQWdDZixVQUFBLHFGQUFvQjs7Ozs7O2tCQU9wQixVQUFBLGlGQUFnQjs7Ozs7O2tCQU9oQixVQUFBLCtFQUFjOzs7Ozs7a0JBT2QsVUFBQSxzRkFBcUI7O1FBbkU5Qyx3RUFDRTtRQXNGRiw4QkFDRTtRQUFBLGlDQUEyRDtRQUFuQixnR0FBUyxZQUFRLElBQUM7UUFBMUQsZUFBMkQ7UUFBTyxpQkFBUztRQUMzRSxpQ0FFRTtRQUZvQyxnR0FBUyxZQUFRLElBQUM7UUFBeEQsZUFFRTtRQUNGLGlCQUFTO1FBQ1gsaUJBQU07O1FBN0ZBLHFDQUFrQjtRQTBGZCxlQUFxRTtRQUFyRSxpS0FBcUU7O2tERDlDbEUsbUJBQW1CO2NBUi9CLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUscUJBQXFCO2dCQUMvQixXQUFXLEVBQUUsOEJBQThCO2dCQUMzQyxTQUFTLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQztnQkFDM0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7Z0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2FBQ2hEO3VYQUdVLGNBQWM7a0JBQXRCLEtBQUs7WUFDRyxtQkFBbUI7a0JBQTNCLEtBQUs7WUFDRyxpQkFBaUI7a0JBQXpCLEtBQUs7WUFDRyxzQkFBc0I7a0JBQTlCLEtBQUs7WUFDRyxvQkFBb0I7a0JBQTVCLEtBQUs7WUFDSSxZQUFZO2tCQUFyQixNQUFNO1lBQ0csUUFBUTtrQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIE9uRGVzdHJveSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUmVjaXBlIH0gZnJvbSAnLi4vLi4vLi4vX21vZGVscy9yZWNpcGUnO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gJy4uLy4uLy4uL190eXBlcy9pY29uLmVudW0nO1xuaW1wb3J0IHsgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSW5ncmVkaWVudCB9IGZyb20gJy4uLy4uLy4uL19tb2RlbHMvaW5ncmVkaWVudCc7XG5pbXBvcnQgeyBSZWNpcGVTdGVwIH0gZnJvbSAnLi4vLi4vLi4vX21vZGVscy9yZWNpcGUtc3RlcCc7XG5pbXBvcnQge1xuICBJbmdyZWRpZW50c1NlcnZpY2UsXG4gIFJlY2lwZXNTZXJ2aWNlLFxuICBSZWNpcGVTdGF0dXNTZXJ2aWNlLFxuICBSZWNpcGVTdGVwc1NlcnZpY2UsXG4gIFJlY2lwZVR5cGVTZXJ2aWNlLFxuICBVc2VyU2VydmljZVxufSBmcm9tICcuLi8uLi8uLi9fc2VydmljZXMnO1xuaW1wb3J0IHsgbWFwLCBza2lwV2hpbGUsIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRG9jdW1lbnRSZXNvdXJjZSB9IGZyb20gJ25neC1qc29uYXBpJztcbmltcG9ydCB7IFJlY2lwZVByb3ZpZGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19zZXJ2aWNlcyc7XG5pbXBvcnQgeyBSZWNpcGVTdGF0dXMgfSBmcm9tICcuLi8uLi8uLi9fbW9kZWxzJztcbmltcG9ydCB7IE1lZGlhTWF0Y2hlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgRXZlbnRUcmFjZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9fY29tcG9uZW50cy9hYnN0cmFjdHMvZXZlbnQtdHJhY2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX3NlcnZpY2VzL2FuYWx5dGljcy5zZXJ2aWNlJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZy1taWFtLXJlY2lwZS1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlY2lwZS1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVjaXBlLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5cbmV4cG9ydCBjbGFzcyBSZWNpcGVGb3JtQ29tcG9uZW50IGV4dGVuZHMgRXZlbnRUcmFjZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcmVjaXBlVG9VcGRhdGU6IFJlY2lwZTtcbiAgQElucHV0KCkgc2Vjb25kYXJ5QWN0aW9uVGV4dCA9ICdBbm51bGVyJztcbiAgQElucHV0KCkgcHJpbWFyeUFjdGlvblRleHQgPSAnRW5yZWdpc3RyZXIgbGEgcmVjZXR0ZSc7XG4gIEBJbnB1dCgpIHNlY29uZGFyeUJ1dHRvbkRpc2FibGUgPSBmYWxzZTsgLy8gSWYgdHJ1ZSwgZGlzYWJsZSB0aGUgc2Vjb25kYXJ5QnV0dG9uIHdoaWxlIHRoZXJlIGFyZSBubyBjaGFuZ2VzIGluIHRoZSBmb3JtXG4gIEBJbnB1dCgpIGN1c3RvbVN1Ym1pdENhbGxiYWNrID0gZmFsc2U7IC8vIElmIHRydWUsIGVtaXQgcmVjaXBlQ2hhbmdlIHRvIGxldCB0aGUgcGFyZW50IGhhbmRsZSByZWNpcGUgc2F2aW5nXG4gIEBPdXRwdXQoKSByZWNpcGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxSZWNpcGU+O1xuICBAT3V0cHV0KCkgY2FuY2VsZWQ6IEV2ZW50RW1pdHRlcjxSZWNpcGU+OyAvLyBUT0RPOiBGb3IgbW9yZSBjbGFyaXR5LCBzcGxpdCBpbnRvICdjYW5jZWxlZDx2b2lkPicgZXQgJ3NlY29uZGFyeUFjdGlvbjxSZWNpcGU+J1xuXG4gIHB1YmxpYyByZWNpcGU6IFJlY2lwZTtcbiAgcHVibGljIHJlY2lwZUZvcm06IEZvcm1Hcm91cDtcbiAgcHVibGljIGlzVXBkYXRlOiBib29sZWFuO1xuICBwdWJsaWMgaXNMb2NhbEltYWdlID0gZmFsc2U7XG4gIHB1YmxpYyBpY29uID0gSWNvbjtcbiAgcHVibGljIGRpZmljdWx0aWVzID0gWydmYWNpbGUnLCAnbW95ZW4nLCAnZGlmZmljaWxlJ107XG4gIHB1YmxpYyBpY29uc0RpZmljdWx0aWVzID0gW3RoaXMuaWNvbi5EaWZmaWN1bHR5TG93LCB0aGlzLmljb24uRGlmZmljdWx0eU1lZGl1bSwgdGhpcy5pY29uLkRpZmZpY3VsdHlIaWdoXTtcbiAgcHVibGljIGNvc3RzID0gWydmYWlibGUnLCAnbW95ZW4nLCAnw6lsZXbDqSddO1xuICBwdWJsaWMgaWNvbnNDb3N0cyA9IFt0aGlzLmljb24uQ29zdExvdywgdGhpcy5pY29uLkNvc3RNZWRpdW0sIHRoaXMuaWNvbi5Db3N0SGlnaHRdO1xuICBwdWJsaWMgZGVsZXRlSW5ncmVkaWVudHNMaXN0OiBzdHJpbmdbXTtcbiAgcHVibGljIGRlbGV0ZVN0ZXBzTGlzdDogc3RyaW5nW107XG4gIHB1YmxpYyBpc0FkbWluOiBib29sZWFuO1xuICBwdWJsaWMgc3RhdHVzZXM6IE9ic2VydmFibGU8UmVjaXBlU3RhdHVzW10+O1xuICBwdWJsaWMgaXNTdWJtaXRpbmcgPSBmYWxzZTtcblxuICBwcml2YXRlIGZvcm1TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgcmVjaXBlUHJvdmlkZXJzZXJ2aWNlOiBSZWNpcGVQcm92aWRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWNpcGVTZXJ2aWNlOiBSZWNpcGVzU2VydmljZSxcbiAgICBwdWJsaWMgcmVjaXBlVHlwZVNlcnZpY2U6IFJlY2lwZVR5cGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW5ncmVkaWVudFNlcnZpY2U6IEluZ3JlZGllbnRzU2VydmljZSxcbiAgICBwcml2YXRlIHJlY2lwZVN0ZXBzU2VydmljZTogUmVjaXBlU3RlcHNTZXJ2aWNlLFxuICAgIHB1YmxpYyBtZWRpYU1hdGNoZXI6IE1lZGlhTWF0Y2hlcixcbiAgICBwdWJsaWMgc3RhdHVzU2VydmljZTogUmVjaXBlU3RhdHVzU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZVxuICApIHtcbiAgICBzdXBlcihhbmFseXRpY3NTZXJ2aWNlKTtcbiAgICB0aGlzLmNhbmNlbGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIHRoaXMucmVjaXBlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIHRoaXMuZGVsZXRlSW5ncmVkaWVudHNMaXN0ID0gW107XG4gICAgdGhpcy5kZWxldGVTdGVwc0xpc3QgPSBbXTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBbXTtcbiAgICB0aGlzLnN0YXR1c2VzID0gdGhpcy5zdGF0dXNTZXJ2aWNlLmFsbCgpLnBpcGUobWFwKHJlcyA9PiByZXMuZGF0YSkpO1xuICB9XG5cbiAgY3VycmVudFBhdGgoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5yZWNpcGVUb1VwZGF0ZSkge1xuICAgICAgcmV0dXJuICd1cGRhdGUnO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHJldHVybiAnbmV3JztcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMudXNlclNlcnZpY2UuaXNBZG1pbi5zdWJzY3JpYmUoaXNBZG1pbiA9PiB7XG4gICAgICAgIHRoaXMuaXNBZG1pbiA9IGlzQWRtaW47XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pLFxuICAgICAgdGhpcy5pbml0UmVjaXBlKCkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKVxuICAgICk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ3JlY2lwZVRvVXBkYXRlJykgJiYgdGhpcy5yZWNpcGVUb1VwZGF0ZSAhPSBudWxsKSB7XG4gICAgICB0aGlzLmlzVXBkYXRlID0gdHJ1ZTtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuaW5pdFJlY2lwZSgpLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCkpO1xuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5wYWdldmlldygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goc3ViID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIE9ubHkgZm9yIHJlY2lwZSBjcmVhdGlvbi5cbiAgICogSW5pdCBibGFuayByZWNpcGVcbiAgICovXG4gIHByaXZhdGUgaW5pdFJlY2lwZSgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmICh0aGlzLnJlY2lwZVRvVXBkYXRlKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWNpcGVTZXJ2aWNlLmdldCh0aGlzLnJlY2lwZVRvVXBkYXRlLmlkLCB7IGluY2x1ZGU6IFsnaW5ncmVkaWVudHMnLCAndGFncycsICdyZWNpcGUtc3RlcHMnLCAnc3BvbnNvcnMnLCAncmVjaXBlLXN0YXR1cycsICdyZWNpcGUtdHlwZScsICdyZWNpcGUtcHJvdmlkZXInXSB9KS5waXBlKFxuICAgICAgICBza2lwV2hpbGUocmVzdWx0ID0+ICFyZXN1bHQgfHwgcmVzdWx0LmlzX2xvYWRpbmcpLFxuICAgICAgICB0YXAocmVzdWx0ID0+IHtcbiAgICAgICAgICB0aGlzLnJlY2lwZSA9IHJlc3VsdDtcbiAgICAgICAgICB0aGlzLmluaXRGb3JtKHRoaXMucmVjaXBlKTtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zdGF0dXNTZXJ2aWNlLnZhbGlkYXRlZCQucGlwZShcbiAgICAgIHNraXBXaGlsZShyZXN1bHQgPT4gIXJlc3VsdCksXG4gICAgICBzd2l0Y2hNYXAoc3RhdHVzID0+XG4gICAgICAgIHRoaXMudXNlclNlcnZpY2UudXNlclByb3ZpZGVyLnBpcGUoXG4gICAgICAgICAgc2tpcFdoaWxlKHByb3ZpZGVyID0+IHByb3ZpZGVyID09IG51bGwpLFxuICAgICAgICAgIHRhcChyZWNpcGVQcm92aWRlciA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlY2lwZSA9IHRoaXMucmVjaXBlU2VydmljZS5uZXcoKTtcbiAgICAgICAgICAgIHRoaXMucmVjaXBlLmFkZFJlbGF0aW9uc2hpcChzdGF0dXMsICdyZWNpcGUtc3RhdHVzJyk7XG4gICAgICAgICAgICB0aGlzLnJlY2lwZS5hZGRSZWxhdGlvbnNoaXAocmVjaXBlUHJvdmlkZXIsICdyZWNpcGUtcHJvdmlkZXInKTtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnJlY2lwZS5pZDtcbiAgICAgICAgICAgIHRoaXMuaW5pdEZvcm0odGhpcy5yZWNpcGUpO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmUgY2hhbmdlcyBhbmQgcmV0dXJuIHRoZW0gaW4gY2FzZSB0aGV5IGNvdWxkIGJlIHVzZWQgYWZ0ZXIgYnV0IGRvbid0IHNhdmUgaXRcbiAgICogVE9ETzogV2hlbiB3ZSBzcGxpdCB0aGUgb3V0cHV0LCByZW5hbWUgc2Vjb25kYXJ5QWN0aW9uKCkgLT4gc2Vjb25kYXJ5QWN0aW9uLmVtaXQodGhpcy5yZWNpcGUpXG4gICAqL1xuICBwdWJsaWMgY2FuY2VsKCkge1xuICAgIHRoaXMuc2V0UmVsYXRpb25TaGlwSWZGb3JtUGFydElzRGlydHkoJ3JlY2lwZS10eXBlJyk7XG4gICAgdGhpcy5zZXRSZWxhdGlvblNoaXBJZkZvcm1QYXJ0SXNEaXJ0eSgncmVjaXBlLXN0YXR1cycpO1xuICAgIHRoaXMuc2V0UmVsYXRpb25TaGlwSWZGb3JtUGFydElzRGlydHkoJ3JlY2lwZS1wcm92aWRlcicpO1xuICAgIHRoaXMucmVjaXBlLmF0dHJpYnV0ZXMgPSB7IC4uLiB0aGlzLnJlY2lwZS5hdHRyaWJ1dGVzLCAuLi50aGlzLnJlY2lwZUZvcm0uZ2V0UmF3VmFsdWUoKS5hdHRyaWJ1dGVzIH07XG4gICAgdGhpcy5jYW5jZWxlZC5lbWl0KHRoaXMucmVjaXBlKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb0RlbGV0ZUluZ3JlZGllbnRzTGlzdChpbmdyZWRpZW50SWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZGVsZXRlSW5ncmVkaWVudHNMaXN0LnB1c2goaW5ncmVkaWVudElkKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb0RlbGV0ZVN0ZXBzTGlzdChzdGVwSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZGVsZXRlU3RlcHNMaXN0LnB1c2goc3RlcElkKTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pc1N1Ym1pdGluZyA9IHRydWU7XG4gICAgdGhpcy51cHNlcnRSZWNpcGUoKS5zdWJzY3JpYmUoKHJlY2lwZSkgPT4ge1xuICAgICAgaWYgKHJlY2lwZSkge1xuICAgICAgICB0aGlzLmRlbGV0ZVN0ZXBzTGlzdCA9IFtdO1xuICAgICAgICB0aGlzLmRlbGV0ZUluZ3JlZGllbnRzTGlzdCA9IFtdO1xuICAgICAgICB0aGlzLmlzU3VibWl0aW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaGFuZGxlRW1pdGlvbihyZWNpcGUpO1xuICAgICAgICB0aGlzLnNlbmRFdmVudCh0aGlzLmFuYWx5dGljc1NlcnZpY2UuRVZFTlRfUEVSU09OQUxfUkVDSVBFX0NSRUFURSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xhc3NpYyB1c2UgY2FzZTogaWYgdGhlIGZvcm0gaXMgaW52YWxpZCwgaWYgaXQgaXMgbm90IGRpcnR5IG9yIGlmIHRoZSByZWNpcGUgaXMgYmVpbmcgc3VibWl0dGVkLCB0aGUgYnV0dG9ucyBtdXN0IGJlIGRpc2FibGVkXG4gICAqIElmIHJlY2lwZSA9PSBudWxsIC0+IGNsYXNzaWMgdXNlIGNhc2VcbiAgICogSWYgcmVjaXBlICE9IG51bGwgJiBzdGF0dXMgIT0gRFJBRlQgLT4gY2xhc3NpYyB1c2UgY2FzZVxuICAgKiBpZiByZWNpcGUgIT0gbnVsbCAmIHN0YXR1ID09IERSQUZUIC0+IHRoZSBidXR0b25zIG11c3QgbmV2ZXIgYmUgZGlzYWJsZWRcbiAgICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgYnV0dG9ucyBzaG91bGQgYmUgZGlzYWJsZWRcbiAgICovXG4gIHB1YmxpYyBjYW50U3VibWl0KCkge1xuICAgIHJldHVybiAhdGhpcy5yZWNpcGUgJiYgKHRoaXMucmVjaXBlRm9ybT8uaW52YWxpZCB8fCAhdGhpcy5yZWNpcGVGb3JtPy5kaXJ0eSB8fCB0aGlzLmlzU3VibWl0aW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB0aGlzIGZ1bmN0aW9uIGZpbGwgZm9ybSB2YWx1ZXMgd2l0aCBnaXZlbiByZWNpcGVcbiAgICogRm9ybSBpcyBkaXZpZGUgaW4gNCBwYXJ0IGF0dHJpYnV0ZXMsdHlwZSwgaW5ncmVkaWVudHMsIHN0ZXBzXG4gICAqIHRvIGZvbG93IHJlY2lwZSBtb2RlbCBpbiBvbiBoYW5kIGFuZCBpbiBvdGhlciBoYW5kIHRvIHVwZGF0ZSBvbmx5XG4gICAqIHBhcnRzIHRoYXQgaGF2ZSBiZWVuIGNoYW5nZSBieSB1c2VyIHRoYW5rcyB0byBkaXJ0eSBhdHRyaWJ1dGUgb25cbiAgICogZWFjaCBvZiB0aG9zZSBwYXJ0c1xuICAgKiBAcGFyYW0gcmVjaXBlIHVzZSB0byBmaWxsIGZvcm1cbiAgICovXG4gIHByaXZhdGUgaW5pdEZvcm0ocmVjaXBlOiBSZWNpcGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb3JtU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmZvcm1TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgdGhpcy5yZWNpcGVGb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICAncmVjaXBlLXN0YXR1cyc6IG5ldyBGb3JtQ29udHJvbChyZWNpcGU/LnJlbGF0aW9uc2hpcHM/LltgcmVjaXBlLXN0YXR1c2BdPy5kYXRhLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICdyZWNpcGUtcHJvdmlkZXInOiBuZXcgRm9ybUNvbnRyb2wocmVjaXBlPy5yZWxhdGlvbnNoaXBzPy5bYHJlY2lwZS1wcm92aWRlcmBdPy5kYXRhPy5pZCA/XG4gICAgICAgIHJlY2lwZT8ucmVsYXRpb25zaGlwcz8uW2ByZWNpcGUtcHJvdmlkZXJgXT8uZGF0YSA6ICdwZXJzb25hbCcsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgYXR0cmlidXRlczogdGhpcy5mYi5ncm91cCh7XG4gICAgICAgIHRpdGxlOiBuZXcgRm9ybUNvbnRyb2wocmVjaXBlLmF0dHJpYnV0ZXNbYHRpdGxlYF0sIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICAnbWVkaWEtdXJsJzogbmV3IEZvcm1Db250cm9sKHJlY2lwZS5hdHRyaWJ1dGVzW2BtZWRpYS11cmxgXSksXG4gICAgICAgIFsnbnVtYmVyLW9mLWd1ZXN0cyddOiBuZXcgRm9ybUNvbnRyb2wocmVjaXBlLmd1ZXN0cyA/XG4gICAgICAgICAgcmVjaXBlLmd1ZXN0cyA6IDQsIFtWYWxpZGF0b3JzLm1pbigxKSwgVmFsaWRhdG9ycy5tYXgoOTk5KV0pLFxuICAgICAgICBkZXNjcmlwdGlvbjogbmV3IEZvcm1Db250cm9sKHJlY2lwZS5hdHRyaWJ1dGVzW2BkZXNjcmlwdGlvbmBdKSxcbiAgICAgICAgJ3ByZXBhcmF0aW9uLXRpbWUnOiBuZXcgRm9ybUNvbnRyb2wocmVjaXBlLmF0dHJpYnV0ZXNbYHByZXBhcmF0aW9uLXRpbWVgXSA/IHJlY2lwZS5hdHRyaWJ1dGVzW2BwcmVwYXJhdGlvbi10aW1lYF0gOiAnJyksXG4gICAgICAgICdwcmVoZWF0aW5nLXRpbWUnOiBuZXcgRm9ybUNvbnRyb2wocmVjaXBlLmF0dHJpYnV0ZXNbYHByZWhlYXRpbmctdGltZWBdKSxcbiAgICAgICAgJ2Nvb2tpbmctdGltZSc6IG5ldyBGb3JtQ29udHJvbChyZWNpcGUuYXR0cmlidXRlc1tgY29va2luZy10aW1lYF0pLFxuICAgICAgICAncmVzdGluZy10aW1lJzogbmV3IEZvcm1Db250cm9sKHJlY2lwZS5hdHRyaWJ1dGVzW2ByZXN0aW5nLXRpbWVgXSksXG4gICAgICAgIGRpZmZpY3VsdHk6IG5ldyBGb3JtQ29udHJvbChyZWNpcGUuYXR0cmlidXRlc1tgZGlmZmljdWx0eWBdID8gcmVjaXBlLmF0dHJpYnV0ZXNbYGRpZmZpY3VsdHlgXSA6IDEsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgfSksXG4gICAgICAncmVjaXBlLXR5cGUnOiBuZXcgRm9ybUNvbnRyb2wocmVjaXBlLnJlbGF0aW9uc2hpcHNbYHJlY2lwZS10eXBlYF0uZGF0YS5pZCA/IHJlY2lwZS5yZWxhdGlvbnNoaXBzW2ByZWNpcGUtdHlwZWBdLmRhdGEgOiBudWxsLFxuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgIGluZ3JlZGllbnRzOiB0aGlzLmluaXRJbmdyZWRpZW50Rm9ybUFycmF5KHJlY2lwZSksXG4gICAgICBzdGVwczogdGhpcy5pbml0U3RlcEZvcm1BcnJheShyZWNpcGUpXG4gICAgfSk7XG4gICAgdGhpcy5pbml0SXNMb2NhbEltYWdlKCk7XG4gICAgdGhpcy5mb3JtU3Vic2NyaXB0aW9uID0gdGhpcy5yZWNpcGVGb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciBlYWNoIFJlY2lwZSBJbmdyZWRpZW50IHdpbGwgY3JlYXRlIGEgZm9ybVxuICAgKiB0aGF0IHdpbGwgYmUgZ3JvdXAgaW4gYW4gZm9ybSBBcnJheVxuICAgKiBAcGFyYW0gcmVjaXBlIGN1cnJlbnQgcmVjaXBlIHRoYXQgJ2xsIGZpbGwgZm9ybVxuICAgKi9cbiAgcHJpdmF0ZSBpbml0SW5ncmVkaWVudEZvcm1BcnJheShyZWNpcGU6IFJlY2lwZSk6IEZvcm1BcnJheSB7XG4gICAgY29uc3QgaW5ncmVkaWVudHMgPSB0aGlzLmZiLmFycmF5KFtdKTtcbiAgICBjb25zdCByZWNpcGVJbmdyZWRpZW50cyA9IHJlY2lwZS5yZWxhdGlvbnNoaXBzW2BpbmdyZWRpZW50c2BdLmRhdGE7XG4gICAgcmVjaXBlSW5ncmVkaWVudHMuZm9yRWFjaCgoaW5ncmVkaWVudDogSW5ncmVkaWVudCkgPT4ge1xuICAgICAgaW5ncmVkaWVudHMucHVzaCh0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgaWQ6IG5ldyBGb3JtQ29udHJvbChpbmdyZWRpZW50LmlkKSxcbiAgICAgICAgYXR0cmlidXRlczogdGhpcy5mYi5ncm91cCh7XG4gICAgICAgICAgcXVhbnRpdHk6IG5ldyBGb3JtQ29udHJvbChpbmdyZWRpZW50LmF0dHJpYnV0ZXMucXVhbnRpdHksIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICAgIHVuaXQ6IG5ldyBGb3JtQ29udHJvbChpbmdyZWRpZW50LmF0dHJpYnV0ZXMudW5pdCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgICAgbmFtZTogbmV3IEZvcm1Db250cm9sKGluZ3JlZGllbnQuYXR0cmlidXRlcy5uYW1lLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgICAvLyBpbXBvcnRhbmNlOiBuZXcgRm9ybUNvbnRyb2woXG4gICAgICAgICAgLy8gICBpbmdyZWRpZW50LmF0dHJpYnV0ZXMuaW1wb3J0YW5jZSxcbiAgICAgICAgICAvLyAgIHJlY2lwZS5yZWxhdGlvbnNoaXBzPy5bYHJlY2lwZS1wcm92aWRlcmBdPy5kYXRhPy5pZCA9PT0gJ3BlcnNvbmFsJyA/IFZhbGlkYXRvcnMubnVsbFZhbGlkYXRvciA6IFZhbGlkYXRvcnMucmVxdWlyZWRcbiAgICAgICAgICAvLyApLFxuICAgICAgICAgIC8vIE5vdCBtYW5kYXRvcnkgZm9yIHRoZSBtb21lbnQsIGRlY29tbWVudCBhYm92ZSBpZiBtYW5kYXRvcnkgbGF0ZXJcbiAgICAgICAgICBpbXBvcnRhbmNlOiBuZXcgRm9ybUNvbnRyb2woaW5ncmVkaWVudC5hdHRyaWJ1dGVzLmltcG9ydGFuY2UsIFZhbGlkYXRvcnMubnVsbFZhbGlkYXRvciksXG4gICAgICAgICAgJ3BpY3R1cmUtdXJsJzogbmV3IEZvcm1Db250cm9sKGluZ3JlZGllbnQuYXR0cmlidXRlc1sncGljdHVyZS11cmwnXSlcbiAgICAgICAgfSlcbiAgICAgIH0pKTtcbiAgICB9KTtcbiAgICByZXR1cm4gaW5ncmVkaWVudHM7XG4gIH1cblxuICAvKipcbiAgICogRm9yIGVhY2ggUmVjaXBlIHN0ZXBzIHdpbGwgY3JlYXRlIGEgZm9ybVxuICAgKiB0aGF0IHdpbGwgYmUgZ3JvdXAgaW4gYW4gZm9ybSBBcnJheVxuICAgKiBAcGFyYW0gcmVjaXBlIGN1cnJlbnQgcmVjaXBlIHRoYXQgJ2xsIGZpbGwgZm9ybVxuICAgKi9cbiAgcHJpdmF0ZSBpbml0U3RlcEZvcm1BcnJheShyZWNpcGU6IFJlY2lwZSk6IEZvcm1BcnJheSB7XG4gICAgY29uc3Qgc3RlcHMgPSB0aGlzLmZiLmFycmF5KFtdKTtcbiAgICByZWNpcGUuc3RlcHMuZm9yRWFjaCgoc3RlcDogUmVjaXBlU3RlcCkgPT4gc3RlcHMucHVzaCh0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGlkOiBuZXcgRm9ybUNvbnRyb2woc3RlcC5pZCksXG4gICAgICBhdHRyaWJ1dGVzOiB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgJ3N0ZXAtbnVtYmVyJzogbmV3IEZvcm1Db250cm9sKHN0ZXAuYXR0cmlidXRlc1snc3RlcC1udW1iZXInXSksXG4gICAgICAgIGRlc2NyaXB0aW9uOiBuZXcgRm9ybUNvbnRyb2woc3RlcC5hdHRyaWJ1dGVzLmRlc2NyaXB0aW9uKVxuICAgICAgfSlcbiAgICB9KSkpO1xuICAgIHJldHVybiBzdGVwcztcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXJnZSBjdXJyZW50IHJlY2lwZSB3aXRoIGZvcm0gcmVzdWx0XG4gICAqIHJldHVybiBhbiBvYnNldmFibGUgdGhhdCdsbCB1cGRhdGUgb3IgY3JlYXRlIHJlY2lwZVxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVSZWNpcGVBdHRyaWJ1dGVzKCk6IE9ic2VydmFibGU8UmVjaXBlPiB7XG4gICAgY29uc3QgcGFyYW0gPSB7XG4gICAgICBpbmNsdWRlOiBbJ2luZ3JlZGllbnRzJywgJ3JlY2lwZS1zdGVwcycsICdyZWNpcGUtc3RhdHVzJywgJ3JlY2lwZS1wcm92aWRlcicsICdyZWNpcGUtdHlwZScsICd0YWdzJ11cbiAgICB9O1xuICAgIHRoaXMucmVjaXBlLmF0dHJpYnV0ZXMgPSB7IC4uLiB0aGlzLnJlY2lwZS5hdHRyaWJ1dGVzLCAuLi50aGlzLnJlY2lwZUZvcm0uZ2V0UmF3VmFsdWUoKS5hdHRyaWJ1dGVzIH07XG4gICAgcmV0dXJuIHRoaXMucmVjaXBlLnNhdmUocGFyYW0pLnBpcGUobWFwKChyZXM6IERvY3VtZW50UmVzb3VyY2U8UmVjaXBlPikgPT4ge1xuICAgICAgLy8gd2UgYXJlIGluIGEgY3JlYXRpb24sIHRoZSBzYXZlIGlzIGEgcG9zdCB0aGF0IHJldHVybiByZXN1bHRcbiAgICAgIGlmIChyZXMgJiYgcmVzLmRhdGEpIHtcbiAgICAgICAgY29uc3QgcmVjaXBlID0gdGhpcy5yZWNpcGVTZXJ2aWNlLm5ldygpO1xuICAgICAgICByZWNpcGUuZmlsbChyZXMpO1xuICAgICAgICByZXR1cm4gcmVjaXBlO1xuICAgICAgfSBlbHNlIHsgLy8gd2UgYXJlIGluIGEgcGF0Y2ggcmV0dXJuIHRoZSBjdXJyZW50IHJlY2lwZSBhbHJlYWR5IHVwZGF0ZWRcbiAgICAgICAgcmV0dXJuIHRoaXMucmVjaXBlO1xuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgcmVjaXBlJ3MgcmVsYXRpb25zaGlwcyBJbmdyZWRpZW50IGFuZCAgU3RlcHNcbiAgICogaWYgYXQgbGVhc3Qgb25lIHN0ZXBzIGhhcyBjaGFuZ2VkIHdpbGwgdXBkYXRlIHRoZSBmdWxsIGxpc3Qgb2Ygc3RlcCxcbiAgICogaWYgYXQgbGVhc3Qgb25lIGluZ3JlZGllbnQgY2hhbmdlZCBpdCAnbGwgdXBkYXRlIHRoZSBmdWxsIGxpc3Qgb2YgaW5ncmVkaWVudCxcbiAgICogaXQgY2FuIHVwZGF0ZSBpbmdyZGllbnQgbGlzdCB3aXRob3V0IHVwZGF0aW5nIHN0ZXBzIGxpc3QgYW5kIHZpY2UgdmVyc2EuXG4gICAqIEBwYXJhbSBjdXJyZW50UmVjaXBlIHRvIHVwZGF0ZSB0aGlzIHJlY2lwZSBhbHJlYWR5IGV4aXN0IGluIGJhY2tlbmQgaXQgaGFzIHRvIGhhZCBhbiBpZFxuICAgKi9cbiAgcHVibGljIHVwZGF0ZVJlY2lwZVJlbGF0aW9uU2hpcHMoY3VycmVudFJlY2lwZTogUmVjaXBlKTogT2JzZXJ2YWJsZTxSZWNpcGU+IHtcbiAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLnJlY2lwZUZvcm0uZ2V0UmF3VmFsdWUoKTtcbiAgICBjb25zdCBvYnNMaXN0ID0gW107XG4gICAgaWYgKHRoaXMucmVjaXBlRm9ybS5nZXQoJ2luZ3JlZGllbnRzJykuZGlydHkpe1xuICAgICAgY29uc3QgaW5ncmVkaWVudHMgPSB0aGlzLmluZ3JlZGllbnRTZXJ2aWNlLmNyZWF0ZU9yVXBkYXRlSW5ncmVkaWVudHMoY3VycmVudFJlY2lwZSwgZm9ybVZhbHVlLmluZ3JlZGllbnRzKTtcbiAgICAgIG9ic0xpc3QucHVzaCh0aGlzLmluZ3JlZGllbnRTZXJ2aWNlLnVwc2VydEluZ3JlZGllbnRMaXN0KGluZ3JlZGllbnRzKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmRlbGV0ZUluZ3JlZGllbnRzTGlzdC5sZW5ndGggPiAwKXtcbiAgICAgIG9ic0xpc3QucHVzaCh0aGlzLmluZ3JlZGllbnRTZXJ2aWNlLmRlbGV0ZUluZ3JlZGllbnRMaXN0KHRoaXMuZGVsZXRlSW5ncmVkaWVudHNMaXN0KSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnJlY2lwZUZvcm0uZ2V0KCdzdGVwcycpLmRpcnR5KXtcbiAgICAgIGNvbnN0IHN0ZXBzID0gdGhpcy5yZWNpcGVTdGVwc1NlcnZpY2UuZm9ybVRvU3RlcHNNYXBwZXIoY3VycmVudFJlY2lwZSwgZm9ybVZhbHVlLnN0ZXBzKTtcbiAgICAgIG9ic0xpc3QucHVzaCh0aGlzLnJlY2lwZVN0ZXBzU2VydmljZS5jcmVhdGVPclVwZGF0ZVJlbGF0ZWRTdGVwcyhzdGVwcykpO1xuICAgIH1cbiAgICBpZiAodGhpcy5kZWxldGVTdGVwc0xpc3QubGVuZ3RoID4gMCl7XG4gICAgICBvYnNMaXN0LnB1c2godGhpcy5yZWNpcGVTdGVwc1NlcnZpY2UuZGVsZXRlU3RlcExpc3QodGhpcy5kZWxldGVTdGVwc0xpc3QpKTtcbiAgICB9XG4gICAgcmV0dXJuIGZvcmtKb2luKG9ic0xpc3QpLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gY3VycmVudFJlY2lwZSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHJlbGF0aW9uc2hpcHNDaGFuZ2VkKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGluZ0NoYW5nZSA9IHRoaXMucmVjaXBlRm9ybS5nZXQoJ2luZ3JlZGllbnRzJykuZGlydHkgfHwgdGhpcy5kZWxldGVJbmdyZWRpZW50c0xpc3QubGVuZ3RoID4gMDtcbiAgICBjb25zdCBzdGVwQ2hhbmdlID0gdGhpcy5yZWNpcGVGb3JtLmdldCgnc3RlcHMnKS5kaXJ0eSB8fCB0aGlzLmRlbGV0ZVN0ZXBzTGlzdC5sZW5ndGggPiAwO1xuICAgIHJldHVybiBpbmdDaGFuZ2UgfHwgc3RlcENoYW5nZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgb3IgY3JlYXRlIFJlY2lwZVxuICAgKiBpdCBjYW4gb25seSB1cGRhdGUgY2hhbmdlZCBwYXJ0IG9mIGEgcmVjaXBlXG4gICAqL1xuICBwcml2YXRlIHVwc2VydFJlY2lwZSgpOiBPYnNlcnZhYmxlPFJlY2lwZT4ge1xuICAgIC8vIGJyZWFrIHVwc2VydCA6IHdlIGhhdmUgdG8gY2hvb3NlIGJlZXR3ZW4gcmVsYXRpb25zaGlwcyBhbmQgdGhpcyBmaWVsZFxuICAgIGRlbGV0ZSB0aGlzLnJlY2lwZS5hdHRyaWJ1dGVzW2BzdWdnZXN0ZWRgXTtcbiAgICBkZWxldGUgdGhpcy5yZWNpcGUuYXR0cmlidXRlc1tgcG9wdWxhcml0eWBdO1xuICAgIHRoaXMuaGFuZGxlUmVjaXBlU3RhdHVzV29ya2Zsb3coKTtcbiAgICB0aGlzLnNldFJlbGF0aW9uU2hpcElmRm9ybVBhcnRJc0RpcnR5KCdyZWNpcGUtdHlwZScpO1xuICAgIHRoaXMuc2V0UmVsYXRpb25TaGlwSWZGb3JtUGFydElzRGlydHkoJ3JlY2lwZS1wcm92aWRlcicpO1xuICAgIGlmICh0aGlzLmN1c3RvbVN1Ym1pdENhbGxiYWNrKSB7XG4gICAgICB0aGlzLnJlY2lwZS5hdHRyaWJ1dGVzID0geyAuLi4gdGhpcy5yZWNpcGUuYXR0cmlidXRlcywgLi4udGhpcy5yZWNpcGVGb3JtLmdldFJhd1ZhbHVlKCkuYXR0cmlidXRlcyB9O1xuICAgICAgdGhpcy5yZWNpcGVDaGFuZ2UuZW1pdCh0aGlzLnJlY2lwZSk7XG4gICAgICB0aGlzLnJlY2lwZUZvcm0uZ2V0KCdhdHRyaWJ1dGVzJykubWFya0FzRGlydHkoKTtcbiAgICAgIHRoaXMuaXNTdWJtaXRpbmcgPSBmYWxzZTtcbiAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9XG4gICAgaWYgKHRoaXMucmVjaXBlRm9ybS5nZXQoJ2F0dHJpYnV0ZXMnKT8uZGlydHkpIHtcbiAgICAgIHJldHVybiB0aGlzLnVwZGF0ZVJlY2lwZUF0dHJpYnV0ZXMoKS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAocmVjaXBlID0+IHtcbiAgICAgICAgICAvLyBtYXkgYmUgYSBjcmVhdGlvbiBvciBhbiB1cGRhdGUsIGFueXdheSB1cGRhdGVSZWNpcGVBdHRyaWJ1dGVzIHJldHVybiB0aGUgZmluYWwgcmVjaXBlXG4gICAgICAgICAgLy8gd2UgdXBkYXRlIHRoZSBjdXJyZW50IHJlY2lwZSwgdXNlZnVsbCBpbiBjYXNlIG9mIGNyZWF0aW9uIGFzIGl0IGlzIHVuZGVmaW5lZCB1bnRpbCBub3dcbiAgICAgICAgICBpZiAocmVjaXBlKSB7XG4gICAgICAgICAgICB0aGlzLnJlY2lwZSA9IHJlY2lwZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRoaXMucmVsYXRpb25zaGlwc0NoYW5nZWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlUmVjaXBlUmVsYXRpb25TaGlwcyh0aGlzLnJlY2lwZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBvZihyZWNpcGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGNhbiBvbmx5IGJlIGFuIHVwZGF0ZSwgd2l0aCBvbmx5IHJlbGF0aW9uc2hpcHMgbW9kaWZzXG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVSZWNpcGVSZWxhdGlvblNoaXBzKHRoaXMucmVjaXBlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFJlbGF0aW9uU2hpcElmRm9ybVBhcnRJc0RpcnR5KGZvcm1QYXJ0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWNpcGVGb3JtLmdldChgJHtmb3JtUGFydH1gKT8uZGlydHkpIHtcbiAgICAgIC8vIGZvcmNlIGZ1bGwgcmVjaXBlIHVwZGF0ZVxuICAgICAgdGhpcy5yZWNpcGVGb3JtLmdldCgnYXR0cmlidXRlcycpLm1hcmtBc0RpcnR5KCk7XG4gICAgICB0aGlzLnJlY2lwZS5hZGRSZWxhdGlvbnNoaXAodGhpcy5yZWNpcGVGb3JtLmdldChgJHtmb3JtUGFydH1gKS52YWx1ZSwgYCR7Zm9ybVBhcnR9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVtaXQgd2hlbiBjaGFuZ2UgaGFzIGJlZW4gZG9uZSBiYWNrXG4gICAqIHJlc2V0IGZvcm0ncyBzdGF0ZXNcbiAgICovXG4gIHByaXZhdGUgaGFuZGxlRW1pdGlvbihyZWNpcGU6IFJlY2lwZSk6IHZvaWQge1xuICAgIHRoaXMucmVjaXBlQ2hhbmdlLmVtaXQocmVjaXBlID8gcmVjaXBlIDogdGhpcy5yZWNpcGUpO1xuICAgIHRoaXMucmVjaXBlRm9ybS5tYXJrQXNQcmlzdGluZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVSZWNpcGVTdGF0dXNXb3JrZmxvdygpIHtcbiAgICB0aGlzLnJlY2lwZS5hZGRSZWxhdGlvbnNoaXAodGhpcy5zdGF0dXNTZXJ2aWNlLnZhbGlkYXRlZFZhbHVlLCAncmVjaXBlLXN0YXR1cycpO1xuICAgIGNvbnN0IGZvcm1NZWRpYSA9IHRoaXMucmVjaXBlRm9ybS5nZXQoJ2F0dHJpYnV0ZXMnKS5nZXQoJ21lZGlhLXVybCcpO1xuICAgIGlmICghdGhpcy5yZWNpcGUuYXR0cmlidXRlc1snbWVkaWEtdXJsJ10gJiYgIWZvcm1NZWRpYS52YWx1ZSkge1xuICAgICAgZm9ybU1lZGlhLnBhdGNoVmFsdWUoJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9hc3NldHMubWlhbS50ZWNoL2dlbmVyaWMvcGVyc29uYWwtcmVjaXBlcy9kZWZhdWx0X2ltZ19wZXJzb25hbF9yZWNpcGUuanBnJyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGluaXRJc0xvY2FsSW1hZ2UoKSB7XG4gICAgaWYgKHRoaXMucmVjaXBlRm9ybT8uZ2V0KCdhdHRyaWJ1dGVzJyk/LmdldCgnbWVkaWEtdXJsJykudmFsdWUgIT0gbnVsbCkge1xuICAgICAgdGhpcy5pc0xvY2FsSW1hZ2UgPSB0aGlzLnJlY2lwZUZvcm0/LmdldCgnYXR0cmlidXRlcycpPy5nZXQoJ21lZGlhLXVybCcpLnZhbHVlLnN0YXJ0c1dpdGgoJ2RhdGE6aW1hZ2UnKTtcbiAgICB9XG4gIH1cbn1cblxuXG4iLCI8Zm9ybSAqbmdJZj0ncmVjaXBlRm9ybScgW2Zvcm1Hcm91cF09XCJyZWNpcGVGb3JtXCIgY2xhc3M9XCJmb3JtLWNvbnRhaW5lclwiPlxuICA8bmctY29udGFpbmVyIFtmb3JtR3JvdXBdPVwicmVjaXBlRm9ybT8uZ2V0KCdhdHRyaWJ1dGVzJylcIj5cbiAgICA8bmctbWlhbS10ZXh0LWlucHV0IGNsYXNzPVwibS10aXRsZS10ZXh0LWlucHV0XCIgbmdEZWZhdWx0Q29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInJlY2lwZUZvcm0/LmdldCgnYXR0cmlidXRlcycpPy5nZXQoJ3RpdGxlJylcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjcGxhY2Vob2xkZXI+XG4gICAgICAgIDxzcGFuIGkxOG4+VGl0cmUgZGUgbGEgcmVjZXR0ZTwvc3Bhbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1taWFtLXRleHQtaW5wdXQ+XG4gICAgPGRpdiBjbGFzcz1cInJvdy1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIj5cbiAgICAgICAgPG5nLW1pYW0tZHJhZy1kcm9wLWlucHV0IG5nRGVmYXVsdENvbnRyb2wgW2Zvcm1Db250cm9sXT1cInJlY2lwZUZvcm0/LmdldCgnYXR0cmlidXRlcycpPy5nZXQoJ21lZGlhLXVybCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbWFnZVVybF09XCJyZWNpcGVGb3JtPy5nZXQoJ2F0dHJpYnV0ZXMnKT8uZ2V0KCdtZWRpYS11cmwnKT8udmFsdWVcIiBbcGhvdG9Nb2RlXT0ndHJ1ZSdcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYnV0dG9uVGV4dD5cbiAgICAgICAgICAgIDxzcGFuIGkxOG4+QWpvdXRlciB1bmUgcGhvdG88L3NwYW4+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1taWFtLWRyYWctZHJvcC1pbnB1dD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlY2lwZS1mb3JtX19ndWVzdHMgbS1kZWZhdWx0LWNhcmRcIj5cbiAgICAgICAgICA8c3BhbiBpMThuIGNsYXNzPVwicmVjaXBlLWZvcm1fX2d1ZXN0c19fbGFiZWxcIj5Ob21icmUgZGUgY29udml2ZXM8L3NwYW4+XG4gICAgICAgICAgPG5nLW1pYW0tY291bnRlci1pbnB1dCBuZ0RlZmF1bHRDb250cm9sIGZvcm1Db250cm9sTmFtZT1cIm51bWJlci1vZi1ndWVzdHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInRoaXMucmVjaXBlRm9ybS5jb250cm9sc1snYXR0cmlidXRlcyddWydjb250cm9scyddW1snbnVtYmVyLW9mLWd1ZXN0cyddXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT0nNCcgbWluUmFuZ2U9JzAnIG1heFJhbmdlPSc5OTknPlxuICAgICAgICAgIDwvbmctbWlhbS1jb3VudGVyLWlucHV0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJlY2lwZS1mb3JtX19hdHRpYnV0ZXNcIj5cbiAgICAgICAgPCEtLSAgREVQUkVDQVRFRCAtIFVTRSBNSUFNIERTIElOUFVUUyAtLT5cbiAgICAgICAgPCEtLSA8bmctbWlhbS1zZWxlY3QtaW5wdXQgbmdEZWZhdWx0Q29udHJvbCBsYWJlbFBhdGg9J2F0dHJpYnV0ZXMubmFtZSdcbiAgICAgICAgICBbb3B0aW9uc109XCJyZWNpcGVUeXBlU2VydmljZT8uZ2V0VHlwZXMoKSB8IGFzeW5jXCIgW2Zvcm1Db250cm9sXT1cInJlY2lwZUZvcm0/LmdldCgncmVjaXBlLXR5cGUnKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3BsYWNlaG9sZGVyPlxuICAgICAgICAgICAgPHNwYW4gaTE4bj5DaG9pc2lyIHVuIHR5cGU8L3NwYW4+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1taWFtLXNlbGVjdC1pbnB1dD4gLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZWNpcGUtZm9ybV9fYXR0aWJ1dGVzX19zbGlkZXJzXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlY2lwZS1mb3JtX19hdHRpYnV0ZXNfX3NsaWRlclwiPlxuICAgICAgICAgICAgPG5nLW1pYW0tc2xpZGVyIG5nRGVmYXVsdENvbnRyb2wgW3N0ZXBzXT1cImRpZmljdWx0aWVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwicmVjaXBlRm9ybT8uZ2V0KCdhdHRyaWJ1dGVzJyk/LmdldCgnZGlmZmljdWx0eScpXCIgW2ljb25zXT1cImljb25zRGlmaWN1bHRpZXNcIj5cbiAgICAgICAgICAgIDwvbmctbWlhbS1zbGlkZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPSdyZWNpcGVGb3JtJyBjbGFzcz1cInJlY2lwZS1mb3JtX19hdHRpYnV0ZXNfX3RpbWVzXCI+XG4gICAgICAgICAgPG5nLW1pYW0tdGltZS1waWNrZXIgbmdEZWZhdWx0Q29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJyZWNpcGVGb3JtPy5nZXQoJ2F0dHJpYnV0ZXMnKT8uZ2V0KCdwcmVwYXJhdGlvbi10aW1lJylcIiBbaWNvbl09J2ljb24uVGltZSdcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3RpdGxlPlxuICAgICAgICAgICAgICA8c3BhbiBpMThuPlRlbXBzIGRlIHByw6lwYXJhdGlvbjwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy1taWFtLXRpbWUtcGlja2VyPlxuICAgICAgICAgIDxuZy1taWFtLXRpbWUtcGlja2VyIG5nRGVmYXVsdENvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwicmVjaXBlRm9ybT8uZ2V0KCdhdHRyaWJ1dGVzJyk/LmdldCgnY29va2luZy10aW1lJylcIiBbaWNvbl09J2ljb24uSG90J1xuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGl0bGU+XG4gICAgICAgICAgICAgIDxzcGFuIGkxOG4+VGVtcHMgZGUgY3Vpc3Nvbjwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy1taWFtLXRpbWUtcGlja2VyPlxuICAgICAgICAgIDxuZy1taWFtLXRpbWUtcGlja2VyIG5nRGVmYXVsdENvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwicmVjaXBlRm9ybT8uZ2V0KCdhdHRyaWJ1dGVzJyk/LmdldCgncmVzdGluZy10aW1lJylcIiBbaWNvbl09J2ljb24uV2FpdCdcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3RpdGxlPlxuICAgICAgICAgICAgICA8c3BhbiBpMThuPlRlbXBzIGRlIHJlcG9zPC9zcGFuPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L25nLW1pYW0tdGltZS1waWNrZXI+XG4gICAgICAgICAgPG5nLW1pYW0tdGltZS1waWNrZXIgbmdEZWZhdWx0Q29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJyZWNpcGVGb3JtPy5nZXQoJ2F0dHJpYnV0ZXMnKT8uZ2V0KCdyZXN0aW5nLXRpbWUnKVwiIFtpY29uXT0naWNvbi5QcmVoZWF0J1xuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGl0bGU+XG4gICAgICAgICAgICAgIDxzcGFuIGkxOG4+VGVtcHMgZGUgcHLDqWNoYXVmZmFnZTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy1taWFtLXRpbWUtcGlja2VyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGRpdiBjbGFzcz1cInJvdy1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XG4gICAgICA8bmctbWlhbS1saXN0LWlucHV0IG5nRGVmYXVsdENvbnRyb2wgKGRlbGV0ZUlkKT1cImFkZFRvRGVsZXRlSW5ncmVkaWVudHNMaXN0KCRldmVudClcIiBbaW5ncmVkaWVudE1vZGVdPSd0cnVlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbbGlzdF09XCJyZWNpcGVGb3JtLmdldCgnaW5ncmVkaWVudHMnKVwiIGZvcm1BcnJheU5hbWU9XCJpbmdyZWRpZW50c1wiPlxuICAgICAgPC9uZy1taWFtLWxpc3QtaW5wdXQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiPlxuICAgICAgPG5nLW1pYW0tbGlzdC1pbnB1dCBuZ0RlZmF1bHRDb250cm9sIGZvcm1BcnJheU5hbWU9XCJzdGVwc1wiIChkZWxldGVJZCk9XCJhZGRUb0RlbGV0ZVN0ZXBzTGlzdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpc3RdPVwicmVjaXBlRm9ybS5nZXQoJ3N0ZXBzJylcIj48L25nLW1pYW0tbGlzdC1pbnB1dD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbjwvZm9ybT5cbjxkaXYgY2xhc3M9J2J1dHRvbi1yb3cnPlxuICA8YnV0dG9uIGkxOG4gY2xhc3M9XCJtLWJ1dHRvbi1zZWNvbmRhcnlcIiAoY2xpY2spPSdjYW5jZWwoKSc+QW5udWxlcjwvYnV0dG9uPlxuICA8YnV0dG9uIGkxOG4gY2xhc3M9XCJtLWJ1dHRvbi1wcmltYXJ5XCIgKGNsaWNrKT0nc3VibWl0KCknXG4gICAgICAgICAgW2Rpc2FibGVkXT0ncmVjaXBlRm9ybT8uaW52YWxpZCB8fMKgIXJlY2lwZUZvcm0/LmRpcnR5IHx8IGlzU3VibWl0aW5nJz5cbiAgICBFbnJlZ2lzdHJlciBsYSByZWNldHRlXG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
@@ -196,7 +196,7 @@ function RecipeStepperComponent_ng_container_28_Template(rf, ctx) { if (rf & 1)
196
196
  i0.ɵɵi18n(17, 36);
197
197
  i0.ɵɵelementEnd();
198
198
  i0.ɵɵelementStart(18, "ng-miam-counter-input", 37);
199
- i0.ɵɵlistener("counterChange", function RecipeStepperComponent_ng_container_28_Template_ng_miam_counter_input_counterChange_18_listener($event) { i0.ɵɵrestoreView(_r49); const ctx_r48 = i0.ɵɵnextContext(); return ctx_r48.changeGuest($event); });
199
+ i0.ɵɵlistener("valueChange", function RecipeStepperComponent_ng_container_28_Template_ng_miam_counter_input_valueChange_18_listener($event) { i0.ɵɵrestoreView(_r49); const ctx_r48 = i0.ɵɵnextContext(); return ctx_r48.changeGuest($event); });
200
200
  i0.ɵɵelementEnd();
201
201
  i0.ɵɵelementEnd();
202
202
  i0.ɵɵtemplate(19, RecipeStepperComponent_ng_container_28_div_19_Template, 9, 2, "div", 38);
@@ -266,7 +266,7 @@ function RecipeStepperComponent_ng_container_28_Template(rf, ctx) { if (rf & 1)
266
266
  i0.ɵɵadvance(8);
267
267
  i0.ɵɵproperty("formControl", ctx_r2.recipeForm == null ? null : ctx_r2.recipeForm.get("recipe-type"));
268
268
  i0.ɵɵadvance(4);
269
- i0.ɵɵproperty("counter", ctx_r2.recipeForm == null ? null : (tmp_4_0 = ctx_r2.recipeForm.get("attributes")) == null ? null : tmp_4_0.get("number-of-guests").value);
269
+ i0.ɵɵproperty("value", ctx_r2.recipeForm == null ? null : (tmp_4_0 = ctx_r2.recipeForm.get("attributes")) == null ? null : tmp_4_0.get("number-of-guests").value);
270
270
  i0.ɵɵadvance(1);
271
271
  i0.ɵɵproperty("ngIf", ctx_r2.displayTags);
272
272
  i0.ɵɵadvance(5);
@@ -314,7 +314,7 @@ function RecipeStepperComponent_ng_miam_modal_37_Template(rf, ctx) { if (rf & 1)
314
314
  i0.ɵɵelementEnd();
315
315
  i0.ɵɵelementEnd();
316
316
  } if (rf & 2) {
317
- i0.ɵɵproperty("isAngularComponent", true)("noHeaderMode", false)("expanded", true);
317
+ i0.ɵɵproperty("noHeaderMode", false)("display", true);
318
318
  } }
319
319
  export class RecipeStepperComponent extends RecipeFormComponent {
320
320
  constructor() {
@@ -569,7 +569,7 @@ RecipeStepperComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeStepperCompo
569
569
  }
570
570
  else {
571
571
  i18n_48 = $localize `:␟c7d0b653aae589c3aa676822e58f13c5df7d9716␟7937098397939922150:Votre image est trop lourde (la taille doit être inférieure à 2 Mo). Merci d’en ajouter une plus légère.`;
572
- } return [[1, "miam-recipe-stepper__anchor"], ["topAnchor", ""], [1, "miam-recipe-stepper"], [1, "miam-recipe-stepper__padding"], [1, "m-button-secondary", 3, "click"], ["primaryColor", "var(--m-color-primary)", 3, "iconName"], i18n_3, [1, "miam-recipe-stepper__links"], ["stepperLinks", ""], [1, "miam-recipe-stepper__link", 3, "ngClass", "click"], [1, "miam-recipe-stepper__link__number"], [1, "m-body-typo", "miam-recipe-stepper__link__name"], i18n_5, [1, "miam-recipe-stepper__link__divider"], i18n_7, i18n_9, [3, "formGroup", 4, "ngIf", "ngIfElse"], ["loading", ""], [1, "miam-recipe-stepper__footer"], [1, "m-button-secondary", 3, "disabled", "click"], [1, "m-button-primary", 3, "disabled", "click"], [3, "display", "currentRecipe", "currentTags", "close", "savedTags", 4, "ngIf"], [3, "isAngularComponent", "noHeaderMode", "expanded", "close", "confirm", 4, "ngIf", 6, "title", "confirmButtonText"], [3, "formGroup"], [1, "miam-recipe-stepper__section"], ["step", ""], [1, "miam-recipe-stepper__mandatory"], i18n_11, ["ngDefaultControl", "", 1, "m-title-text-input", 3, "formControl"], ["placeholder", ""], [1, "miam-recipe-stepper__type__label"], i18n_13, [1, "miam-recipe-stepper__type__label__mandatory"], ["ngDefaultControl", "", 3, "formControl"], [1, "miam-recipe-stepper__section__guests", "m-default-card"], [1, "miam-recipe-stepper__guests__label"], i18n_15, ["ngDefaultControl", "", "formControlName", "number-of-guests", "minRange", "1", "maxRange", "999", 3, "counter", "counterChange"], ["class", "miam-recipe-stepper__tags", 4, "ngIf"], [1, "miam-recipe-stepper__section__row"], [1, "miam-recipe-stepper__picture"], ["ngDefaultControl", "", 3, "formControl", "imageUrl", "photoMode", "bigImageWarning", "bigFileDropped", "fileDropped"], [4, "ngIf", "ngIfElse"], ["fileMode", ""], ["class", "m-input", 3, "value", "input", 4, "ngIf", 6, "placeholder"], [1, "miam-recipe-stepper__row__description"], [1, "m-h1-typo"], i18n_17, ["cdkTextareaAutosize", "", "cdkAutosizeMinRows", "20", "cdkAutosizeMaxRows", "50", "maxlength", "250", 1, "m-input", 3, "formControl"], [1, "miam-recipe-stepper__description__counter"], ["class", "miam-recipe-stepper__section__times", 4, "ngIf"], [1, "miam-recipe-stepper__attibutes__slider"], i18n_19, ["ngDefaultControl", "", 3, "steps", "formControl", "icons"], ["class", "miam-recipe-stepper__mobile__buttons", 4, "ngIf"], ["ngDefaultControl", "", "formArrayName", "ingredients", 3, "isPersonal", "list", "ingredientMode", "ingredientsPictures", "deleteId", "orderHasChanged", 4, "ngIf"], ["ngDefaultControl", "", "formArrayName", "steps", 3, "list", "deleteId", "orderHasChanged", 4, "ngIf"], i18n_21, [1, "miam-recipe-stepper__tags"], [1, "miam-recipe-stepper__tags__title"], i18n_23, [1, "miam-recipe-stepper__tags__recap"], ["class", "miam-recipe-stepper__tag", 3, "ngClass", 4, "ngFor", "ngForOf"], ["primaryColor", "var(--m-color-onyx)", 3, "iconName"], i18n_25, [1, "miam-recipe-stepper__tag", 3, "ngClass"], [1, "miam-recipe-stepper__tag__name"], ["primaryColor", "var(--m-color-grey01)", 1, "miam-recipe-stepper__tag__icon", 3, "iconName", "click"], ["buttonText", ""], i18n_27, i18n_29, [1, "m-input", 3, "value", "input", 6, "placeholder"], ["placeholder", i18n_31], [1, "miam-recipe-stepper__section__times"], ["ngDefaultControl", "", 3, "formControl", "icon"], ["title", ""], i18n_33, i18n_35, i18n_37, [1, "miam-recipe-stepper__mobile__buttons"], [1, "m-button-secondary", 3, "ngClass", "click"], i18n_39, i18n_41, ["ngDefaultControl", "", "formArrayName", "ingredients", 3, "isPersonal", "list", "ingredientMode", "ingredientsPictures", "deleteId", "orderHasChanged"], ["ngDefaultControl", "", "formArrayName", "steps", 3, "list", "deleteId", "orderHasChanged"], [3, "display", "currentRecipe", "currentTags", "close", "savedTags"], [3, "isAngularComponent", "noHeaderMode", "expanded", "close", "confirm", 6, "title", "confirmButtonText"], ["title", i18n_44, "confirmButtonText", i18n_46], [1, "miam-recipe-stepper__picture__warning"], i18n_48]; }, template: function RecipeStepperComponent_Template(rf, ctx) { if (rf & 1) {
572
+ } return [[1, "miam-recipe-stepper__anchor"], ["topAnchor", ""], [1, "miam-recipe-stepper"], [1, "miam-recipe-stepper__padding"], [1, "m-button-secondary", 3, "click"], ["primaryColor", "var(--m-color-primary)", 3, "iconName"], i18n_3, [1, "miam-recipe-stepper__links"], ["stepperLinks", ""], [1, "miam-recipe-stepper__link", 3, "ngClass", "click"], [1, "miam-recipe-stepper__link__number"], [1, "m-body-typo", "miam-recipe-stepper__link__name"], i18n_5, [1, "miam-recipe-stepper__link__divider"], i18n_7, i18n_9, [3, "formGroup", 4, "ngIf", "ngIfElse"], ["loading", ""], [1, "miam-recipe-stepper__footer"], [1, "m-button-secondary", 3, "disabled", "click"], [1, "m-button-primary", 3, "disabled", "click"], [3, "display", "currentRecipe", "currentTags", "close", "savedTags", 4, "ngIf"], ["modalStyle", "right", 3, "noHeaderMode", "display", "close", "confirm", 4, "ngIf", 6, "title", "confirmButtonText"], [3, "formGroup"], [1, "miam-recipe-stepper__section"], ["step", ""], [1, "miam-recipe-stepper__mandatory"], i18n_11, ["ngDefaultControl", "", 1, "m-title-text-input", 3, "formControl"], ["placeholder", ""], [1, "miam-recipe-stepper__type__label"], i18n_13, [1, "miam-recipe-stepper__type__label__mandatory"], ["ngDefaultControl", "", 3, "formControl"], [1, "miam-recipe-stepper__section__guests", "m-default-card"], [1, "miam-recipe-stepper__guests__label"], i18n_15, ["ngDefaultControl", "", "formControlName", "number-of-guests", "minRange", "1", "maxRange", "999", 3, "value", "valueChange"], ["class", "miam-recipe-stepper__tags", 4, "ngIf"], [1, "miam-recipe-stepper__section__row"], [1, "miam-recipe-stepper__picture"], ["ngDefaultControl", "", 3, "formControl", "imageUrl", "photoMode", "bigImageWarning", "bigFileDropped", "fileDropped"], [4, "ngIf", "ngIfElse"], ["fileMode", ""], ["class", "m-input", 3, "value", "input", 4, "ngIf", 6, "placeholder"], [1, "miam-recipe-stepper__row__description"], [1, "m-h1-typo"], i18n_17, ["cdkTextareaAutosize", "", "cdkAutosizeMinRows", "20", "cdkAutosizeMaxRows", "50", "maxlength", "250", 1, "m-input", 3, "formControl"], [1, "miam-recipe-stepper__description__counter"], ["class", "miam-recipe-stepper__section__times", 4, "ngIf"], [1, "miam-recipe-stepper__attibutes__slider"], i18n_19, ["ngDefaultControl", "", 3, "steps", "formControl", "icons"], ["class", "miam-recipe-stepper__mobile__buttons", 4, "ngIf"], ["ngDefaultControl", "", "formArrayName", "ingredients", 3, "isPersonal", "list", "ingredientMode", "ingredientsPictures", "deleteId", "orderHasChanged", 4, "ngIf"], ["ngDefaultControl", "", "formArrayName", "steps", 3, "list", "deleteId", "orderHasChanged", 4, "ngIf"], i18n_21, [1, "miam-recipe-stepper__tags"], [1, "miam-recipe-stepper__tags__title"], i18n_23, [1, "miam-recipe-stepper__tags__recap"], ["class", "miam-recipe-stepper__tag", 3, "ngClass", 4, "ngFor", "ngForOf"], ["primaryColor", "var(--m-color-onyx)", 3, "iconName"], i18n_25, [1, "miam-recipe-stepper__tag", 3, "ngClass"], [1, "miam-recipe-stepper__tag__name"], ["primaryColor", "var(--m-color-grey01)", 1, "miam-recipe-stepper__tag__icon", 3, "iconName", "click"], ["buttonText", ""], i18n_27, i18n_29, [1, "m-input", 3, "value", "input", 6, "placeholder"], ["placeholder", i18n_31], [1, "miam-recipe-stepper__section__times"], ["ngDefaultControl", "", 3, "formControl", "icon"], ["title", ""], i18n_33, i18n_35, i18n_37, [1, "miam-recipe-stepper__mobile__buttons"], [1, "m-button-secondary", 3, "ngClass", "click"], i18n_39, i18n_41, ["ngDefaultControl", "", "formArrayName", "ingredients", 3, "isPersonal", "list", "ingredientMode", "ingredientsPictures", "deleteId", "orderHasChanged"], ["ngDefaultControl", "", "formArrayName", "steps", 3, "list", "deleteId", "orderHasChanged"], [3, "display", "currentRecipe", "currentTags", "close", "savedTags"], ["modalStyle", "right", 3, "noHeaderMode", "display", "close", "confirm", 6, "title", "confirmButtonText"], ["title", i18n_44, "confirmButtonText", i18n_46], [1, "miam-recipe-stepper__picture__warning"], i18n_48]; }, template: function RecipeStepperComponent_Template(rf, ctx) { if (rf & 1) {
573
573
  i0.ɵɵelement(0, "div", 0, 1);
574
574
  i0.ɵɵelementStart(2, "div", 2);
575
575
  i0.ɵɵelementStart(3, "div", 3);
@@ -627,7 +627,7 @@ RecipeStepperComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeStepperCompo
627
627
  i0.ɵɵelementEnd();
628
628
  i0.ɵɵelementEnd();
629
629
  i0.ɵɵtemplate(36, RecipeStepperComponent_ng_miam_tags_selector_36_Template, 1, 3, "ng-miam-tags-selector", 21);
630
- i0.ɵɵtemplate(37, RecipeStepperComponent_ng_miam_modal_37_Template, 4, 3, "ng-miam-modal", 22);
630
+ i0.ɵɵtemplate(37, RecipeStepperComponent_ng_miam_modal_37_Template, 4, 2, "ng-miam-modal", 22);
631
631
  } if (rf & 2) {
632
632
  const _r3 = i0.ɵɵreference(30);
633
633
  i0.ɵɵadvance(5);
@@ -652,7 +652,7 @@ RecipeStepperComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeStepperCompo
652
652
  i0.ɵɵproperty("ngIf", ctx.displayTags && ctx.recipe);
653
653
  i0.ɵɵadvance(1);
654
654
  i0.ɵɵproperty("ngIf", ctx.bigImageWarning);
655
- } }, directives: [i1.IconComponent, i2.NgClass, i2.NgIf, i3.NgControlStatusGroup, i3.FormGroupDirective, i4.TextInputComponent, i3.DefaultValueAccessor, i3.NgControlStatus, i3.FormControlDirective, i5.RecipeTypeChooserComponent, i6.CounterInputComponent, i3.FormControlName, i7.DragDropInputComponent, i3.MaxLengthValidator, i8.SliderComponent, i2.NgForOf, i9.TimePickerComponent, i10.ListInputComponent, i3.FormArrayName, i11.LoaderComponent, i12.TagsSelectorComponent, i13.ModalComponent], styles: ["@charset \"UTF-8\";.miam-recipe-stepper__anchor{bottom:0;height:250px;margin-top:-250px;position:relative}.miam-recipe-stepper{display:flex;flex-direction:column;width:100%}.miam-recipe-stepper label{font-size:19px;line-height:24px}.miam-recipe-stepper label .miam-recipe-stepper__type__label__mandatory{color:var(--m-color-secondary)}.miam-recipe-stepper .miam-recipe-stepper__padding{background-color:var(--m-color-unpure-white);height:32px;position:relative;width:100%}.miam-recipe-stepper .miam-recipe-stepper__padding button{left:40px;padding:8px 16px;position:absolute;z-index:3}.miam-recipe-stepper .miam-recipe-stepper__padding button ng-miam-icon{height:16px;margin-left:0;padding-top:20px;transform:rotate(90deg)}.miam-recipe-stepper .miam-recipe-stepper__padding button ng-miam-icon svg path:first-of-type{fill:none}.miam-recipe-stepper .miam-recipe-stepper__links{align-items:center;background-color:var(--m-color-unpure-white);display:flex;justify-content:space-evenly;padding:16px 0;position:-webkit-sticky;position:sticky;top:0;width:100%;z-index:3}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__links{align-items:baseline;justify-content:center;width:100vw}}.miam-recipe-stepper .miam-recipe-stepper__links .miam-recipe-stepper__link{align-items:center;cursor:pointer;display:flex;flex-direction:column;justify-content:center}.miam-recipe-stepper .miam-recipe-stepper__links .miam-recipe-stepper__link .miam-recipe-stepper__link__number{align-items:center;border:1px solid;border-radius:64px;color:var(--m-color-grey02);display:flex;font-size:32px;font-style:normal;font-weight:700;height:64px;justify-content:center;line-height:44px;width:64px}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__links .miam-recipe-stepper__link .miam-recipe-stepper__link__number{font-size:22px;height:40px;line-height:32px;width:40px}}.miam-recipe-stepper .miam-recipe-stepper__links .miam-recipe-stepper__link .miam-recipe-stepper__link__name{color:var(--m-color-grey02);padding-top:8px}.miam-recipe-stepper .miam-recipe-stepper__links .miam-recipe-stepper__link.active .miam-recipe-stepper__link__number{background-color:var(--m-color-secondary);border-color:var(--m-color-secondary);color:var(--m-color-unpure-white)}.miam-recipe-stepper .miam-recipe-stepper__links .miam-recipe-stepper__link.active .miam-recipe-stepper__link__name{color:var(--m-color-secondary)}.miam-recipe-stepper .miam-recipe-stepper__links .miam-recipe-stepper__link__divider{background-color:var(--m-color-slate);height:1px;width:64px}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__links .miam-recipe-stepper__link__divider{width:40px}}.miam-recipe-stepper .miam-recipe-stepper__section{align-items:center;display:flex;flex-direction:column;gap:64px;justify-content:center;padding:84px 0;position:relative;scroll-margin-top:175px;width:100%}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__section{gap:0;justify-content:flex-start;padding:24px 36px;width:100vw}}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__mandatory{bottom:0;color:var(--m-color-danger);position:absolute;right:32px}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__mandatory{right:16px}}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__section .m-title-text-input .m-input{align-items:flex-start;background-color:transparent;border:none;display:flex;flex-direction:column-reverse;justify-content:flex-start;max-width:unset;min-width:unset}.miam-recipe-stepper .miam-recipe-stepper__section .m-title-text-input .miam-text-input__input{border:1px solid var(--m-color-light-slate);border-radius:4px;max-width:90vw;min-width:90vw}.miam-recipe-stepper .miam-recipe-stepper__section .m-title-text-input .miam-text-input__label.input__label__top,.miam-recipe-stepper .miam-recipe-stepper__section .m-title-text-input .miam-text-input__label:not(.input__label__top){background-color:transparent;color:var(--m-color-black);font-size:24px;font-weight:700;padding-bottom:16px;position:static;transform:none}.miam-recipe-stepper .miam-recipe-stepper__section .m-title-text-input .miam-text-input__label:after{color:var(--m-color-warning-text);content:\"*\"}}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__type__label{color:var(--m-color-black);font-size:24px;font-weight:700;padding-bottom:16px}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__type__label{padding:16px 0;width:90vw}}.miam-recipe-stepper .miam-recipe-stepper__section:nth-child(2n){background-color:var(--m-color-primary-light)}.miam-recipe-stepper .miam-recipe-stepper__section ng-miam-text-input .miam-text-input{background-color:var(--m-color-unpure-white)}.miam-recipe-stepper .miam-recipe-stepper__section ng-miam-select-input .miam-select{background-color:var(--m-color-unpure-white);width:330px}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__section__guests{display:flex;gap:16px}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__section__guests{align-items:center;flex-direction:column;justify-content:center;margin:16px 0;width:90vw}}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__tags{align-items:center;display:flex;flex-direction:column}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__tags .miam-recipe-stepper__tags__title{font-size:16px;font-weight:700}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__tags .miam-recipe-stepper__tags__recap{align-items:center;display:flex;flex-flow:row wrap;margin:10px 8px;max-width:80vw}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__tags .miam-recipe-stepper__tags__recap .miam-recipe-stepper__tag{align-items:center;background-color:var(--m-color-primary-light);border-radius:4px;display:flex;margin:6px;padding:8px 12px}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__tags .miam-recipe-stepper__tags__recap .miam-recipe-stepper__tag.meal_type{background-color:var(--m-color-tag-meal-type)}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__tags .miam-recipe-stepper__tags__recap .miam-recipe-stepper__tag.ingredient_category{background-color:var(--m-color-tag-ingredient-category)}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__tags .miam-recipe-stepper__tags__recap .miam-recipe-stepper__tag.equipment{background-color:var(--m-color-tag-equipment)}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__tags .miam-recipe-stepper__tags__recap .miam-recipe-stepper__tag.diet{background-color:var(--m-color-tag-diet)}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__tags .miam-recipe-stepper__tags__recap .miam-recipe-stepper__tag .miam-recipe-stepper__tag__name{color:var(--m-color-grey01)}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__tags .miam-recipe-stepper__tags__recap .miam-recipe-stepper__tag .miam-recipe-stepper__tag__icon .icon-container{-webkit-tap-highlight-color:transparent;cursor:pointer;margin:0 0 0 16px}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__tags .m-button-secondary ng-miam-icon{margin:0 16px 0 0}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__section__row{display:flex;flex-wrap:wrap;gap:64px;justify-content:center;width:100%}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__section__row{gap:0;width:100vw}}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__section__row .miam-recipe-stepper__row__description{width:90vw}}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__section__row .miam-recipe-stepper__row__description label{margin-top:16px}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__section__row .miam-recipe-stepper__row__description textarea.m-input{height:150px;max-width:700px;resize:none;width:700px}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__section__row .miam-recipe-stepper__row__description textarea.m-input{width:90vw}}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__section__row .miam-recipe-stepper__row__description .miam-recipe-stepper__description__counter{color:var(--m-color-light-slate);margin:8px;text-align:end}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__section__row .miam-recipe-stepper__picture{display:flex;flex-direction:column;gap:8px;width:330px}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__section__row .miam-recipe-stepper__picture{width:90vw}}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__section__row .miam-recipe-stepper__picture .miam-uploader{margin-bottom:0}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__section__row .miam-recipe-stepper__picture .m-input{margin-top:0}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__section__times{display:flex;flex-wrap:wrap;gap:32px;justify-content:space-evenly}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__section__times .miam-time-picker{align-items:center;flex-direction:column;justify-content:center;margin-bottom:16px;width:90vw}}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__attibutes__slider{width:560px}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__attibutes__slider label{text-align:center;width:100%}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__attibutes__slider{width:90vw}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__attibutes__slider label{width:100vw}}.miam-recipe-stepper .miam-recipe-stepper__section .miam-list-input{display:flex;flex-direction:row-reverse;gap:32px}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__section .miam-list-input{flex-direction:column;gap:0;width:90vw}}.miam-recipe-stepper .miam-recipe-stepper__section .miam-list-input .miam-list-input__actions{margin-top:50px;position:relative}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__section .miam-list-input .miam-list-input__actions{margin-top:0}}.miam-recipe-stepper .miam-recipe-stepper__section .miam-list-input .miam-list-input__actions textarea{height:300px!important;max-height:300px!important;max-width:calc(98vw - 776px);min-height:300px!important;width:400px}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__section .miam-list-input .miam-list-input__actions textarea{height:unset!important;max-width:unset!important;min-height:110px!important;width:unset!important}}.miam-recipe-stepper .miam-recipe-stepper__section .miam-list-input .miam-list-input__actions button{margin-top:16px}@media (min-width:1024px){.miam-recipe-stepper .miam-recipe-stepper__section ng-miam-list-input{width:calc(100% - 16px)}}.miam-recipe-stepper .miam-recipe-stepper__section ng-miam-list-input:first-of-type .miam-list-input__actions .miam-list-input__actions__instructions:before{content:\"Merci d'indiquer la quantit\u00E9 en premier comme indiqu\u00E9 dans les exemples.\\a\\a\";font-weight:700}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__mobile__buttons{display:grid;gap:8px;grid-template-columns:repeat(2,1fr)}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__mobile__buttons button{margin-right:0}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__mobile__buttons button.active{background-color:var(--m-color-primary);color:var(--m-color-white)}.miam-recipe-stepper ng-miam-loader{display:flex;justify-content:center;padding:50vh;width:100%}.miam-recipe-stepper .miam-recipe-stepper__footer{display:flex;gap:64px;justify-content:center;padding:64px 0}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__footer{display:grid;gap:8px;grid-template-columns:repeat(2,1fr);padding:16px 8px}}.miam-recipe-stepper__picture__warning{font-size:var(--m-font-size-medium);padding:10px;text-align:center}"], encapsulation: 2, changeDetection: 0 });
655
+ } }, directives: [i1.IconComponent, i2.NgClass, i2.NgIf, i3.NgControlStatusGroup, i3.FormGroupDirective, i4.TextInputComponent, i3.DefaultValueAccessor, i3.NgControlStatus, i3.FormControlDirective, i5.RecipeTypeChooserComponent, i6.CounterInputComponent, i3.FormControlName, i7.DragDropInputComponent, i3.MaxLengthValidator, i8.SliderComponent, i2.NgForOf, i9.TimePickerComponent, i10.ListInputComponent, i3.FormArrayName, i11.LoaderComponent, i12.TagsSelectorComponent, i13.ModalComponent], styles: ["@charset \"UTF-8\";.miam-recipe-stepper__anchor{bottom:0;height:250px;margin-top:-250px;position:relative}.miam-recipe-stepper{display:flex;flex-direction:column;width:100%}.miam-recipe-stepper label{font-size:19px;line-height:24px}.miam-recipe-stepper label .miam-recipe-stepper__type__label__mandatory{color:var(--m-color-secondary)}.miam-recipe-stepper .miam-recipe-stepper__padding{background-color:var(--m-color-unpure-white);height:32px;position:relative;width:100%}.miam-recipe-stepper .miam-recipe-stepper__padding button{left:40px;padding:8px 16px;position:absolute;z-index:3}.miam-recipe-stepper .miam-recipe-stepper__padding button ng-miam-icon{height:16px;margin-left:0;padding-top:20px;transform:rotate(90deg)}.miam-recipe-stepper .miam-recipe-stepper__padding button ng-miam-icon svg path:first-of-type{fill:none}.miam-recipe-stepper .miam-recipe-stepper__links{align-items:center;background-color:var(--m-color-unpure-white);display:flex;justify-content:space-evenly;padding:16px 0;position:sticky;top:0;width:100%;z-index:3}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__links{align-items:baseline;justify-content:center;width:100vw}}.miam-recipe-stepper .miam-recipe-stepper__links .miam-recipe-stepper__link{align-items:center;cursor:pointer;display:flex;flex-direction:column;justify-content:center}.miam-recipe-stepper .miam-recipe-stepper__links .miam-recipe-stepper__link .miam-recipe-stepper__link__number{align-items:center;border:1px solid;border-radius:64px;color:var(--m-color-grey02);display:flex;font-size:32px;font-style:normal;font-weight:700;height:64px;justify-content:center;line-height:44px;width:64px}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__links .miam-recipe-stepper__link .miam-recipe-stepper__link__number{font-size:22px;height:40px;line-height:32px;width:40px}}.miam-recipe-stepper .miam-recipe-stepper__links .miam-recipe-stepper__link .miam-recipe-stepper__link__name{color:var(--m-color-grey02);padding-top:8px}.miam-recipe-stepper .miam-recipe-stepper__links .miam-recipe-stepper__link.active .miam-recipe-stepper__link__number{background-color:var(--m-color-secondary);border-color:var(--m-color-secondary);color:var(--m-color-unpure-white)}.miam-recipe-stepper .miam-recipe-stepper__links .miam-recipe-stepper__link.active .miam-recipe-stepper__link__name{color:var(--m-color-secondary)}.miam-recipe-stepper .miam-recipe-stepper__links .miam-recipe-stepper__link__divider{background-color:var(--m-color-slate);height:1px;width:64px}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__links .miam-recipe-stepper__link__divider{width:40px}}.miam-recipe-stepper .miam-recipe-stepper__section{align-items:center;display:flex;flex-direction:column;gap:64px;justify-content:center;padding:84px 0;position:relative;scroll-margin-top:175px;width:100%}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__section{gap:0;justify-content:flex-start;padding:24px 36px;width:100vw}}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__mandatory{bottom:0;color:var(--m-color-danger);position:absolute;right:32px}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__mandatory{right:16px}}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__section .m-title-text-input .m-input{align-items:flex-start;background-color:transparent;border:none;display:flex;flex-direction:column-reverse;justify-content:flex-start;max-width:unset;min-width:unset}.miam-recipe-stepper .miam-recipe-stepper__section .m-title-text-input .miam-text-input__input{border:1px solid var(--m-color-light-slate);border-radius:4px;max-width:90vw;min-width:90vw}.miam-recipe-stepper .miam-recipe-stepper__section .m-title-text-input .miam-text-input__label.input__label__top,.miam-recipe-stepper .miam-recipe-stepper__section .m-title-text-input .miam-text-input__label:not(.input__label__top){background-color:transparent;color:var(--m-color-black);font-size:24px;font-weight:700;padding-bottom:16px;position:static;transform:none}.miam-recipe-stepper .miam-recipe-stepper__section .m-title-text-input .miam-text-input__label:after{color:var(--m-color-warning-text);content:\"*\"}}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__type__label{color:var(--m-color-black);font-size:24px;font-weight:700;padding-bottom:16px}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__type__label{padding:16px 0;width:90vw}}.miam-recipe-stepper .miam-recipe-stepper__section:nth-child(2n){background-color:var(--m-color-primary-light)}.miam-recipe-stepper .miam-recipe-stepper__section ng-miam-text-input .miam-text-input{background-color:var(--m-color-unpure-white)}.miam-recipe-stepper .miam-recipe-stepper__section ng-miam-select-input .miam-select{background-color:var(--m-color-unpure-white);width:330px}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__section__guests{display:flex;gap:16px}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__section__guests{align-items:center;flex-direction:column;justify-content:center;margin:16px 0;width:90vw}}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__tags{align-items:center;display:flex;flex-direction:column}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__tags .miam-recipe-stepper__tags__title{font-size:16px;font-weight:700}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__tags .miam-recipe-stepper__tags__recap{align-items:center;display:flex;flex-flow:row wrap;margin:10px 8px;max-width:80vw}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__tags .miam-recipe-stepper__tags__recap .miam-recipe-stepper__tag{align-items:center;background-color:var(--m-color-primary-light);border-radius:4px;display:flex;margin:6px;padding:8px 12px}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__tags .miam-recipe-stepper__tags__recap .miam-recipe-stepper__tag.meal_type{background-color:var(--m-color-tag-meal-type)}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__tags .miam-recipe-stepper__tags__recap .miam-recipe-stepper__tag.ingredient_category{background-color:var(--m-color-tag-ingredient-category)}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__tags .miam-recipe-stepper__tags__recap .miam-recipe-stepper__tag.equipment{background-color:var(--m-color-tag-equipment)}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__tags .miam-recipe-stepper__tags__recap .miam-recipe-stepper__tag.diet{background-color:var(--m-color-tag-diet)}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__tags .miam-recipe-stepper__tags__recap .miam-recipe-stepper__tag .miam-recipe-stepper__tag__name{color:var(--m-color-grey01)}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__tags .miam-recipe-stepper__tags__recap .miam-recipe-stepper__tag .miam-recipe-stepper__tag__icon .icon-container{-webkit-tap-highlight-color:transparent;cursor:pointer;margin:0 0 0 16px}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__tags .m-button-secondary ng-miam-icon{margin:0 16px 0 0}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__section__row{display:flex;flex-wrap:wrap;gap:64px;justify-content:center;width:100%}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__section__row{gap:0;width:100vw}}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__section__row .miam-recipe-stepper__row__description{width:90vw}}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__section__row .miam-recipe-stepper__row__description label{margin-top:16px}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__section__row .miam-recipe-stepper__row__description textarea.m-input{height:150px;max-width:700px;resize:none;width:700px}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__section__row .miam-recipe-stepper__row__description textarea.m-input{width:90vw}}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__section__row .miam-recipe-stepper__row__description .miam-recipe-stepper__description__counter{color:var(--m-color-light-slate);margin:8px;text-align:end}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__section__row .miam-recipe-stepper__picture{display:flex;flex-direction:column;gap:8px;width:330px}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__section__row .miam-recipe-stepper__picture{width:90vw}}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__section__row .miam-recipe-stepper__picture .miam-uploader{margin-bottom:0}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__section__row .miam-recipe-stepper__picture .m-input{margin-top:0}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__section__times{display:flex;flex-wrap:wrap;gap:32px;justify-content:space-evenly}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__section__times .miam-time-picker{align-items:center;flex-direction:column;justify-content:center;margin-bottom:16px;width:90vw}}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__attibutes__slider{width:560px}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__attibutes__slider label{text-align:center;width:100%}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__attibutes__slider{width:90vw}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__attibutes__slider label{width:100vw}}.miam-recipe-stepper .miam-recipe-stepper__section .miam-list-input{display:flex;flex-direction:row-reverse;gap:32px}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__section .miam-list-input{flex-direction:column;gap:0;width:90vw}}.miam-recipe-stepper .miam-recipe-stepper__section .miam-list-input .miam-list-input__actions{margin-top:50px;position:relative}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__section .miam-list-input .miam-list-input__actions{margin-top:0}}.miam-recipe-stepper .miam-recipe-stepper__section .miam-list-input .miam-list-input__actions textarea{height:300px!important;max-height:300px!important;max-width:calc(98vw - 776px);min-height:300px!important;width:400px}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__section .miam-list-input .miam-list-input__actions textarea{height:unset!important;max-width:unset!important;min-height:110px!important;width:unset!important}}.miam-recipe-stepper .miam-recipe-stepper__section .miam-list-input .miam-list-input__actions button{margin-top:16px}@media (min-width:1024px){.miam-recipe-stepper .miam-recipe-stepper__section ng-miam-list-input{width:calc(100% - 16px)}}.miam-recipe-stepper .miam-recipe-stepper__section ng-miam-list-input:first-of-type .miam-list-input__actions .miam-list-input__actions__instructions:before{content:\"Merci d'indiquer la quantit\u00E9 en premier comme indiqu\u00E9 dans les exemples.\\a\\a\";font-weight:700}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__mobile__buttons{display:grid;gap:8px;grid-template-columns:repeat(2,1fr)}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__mobile__buttons button{margin-right:0}.miam-recipe-stepper .miam-recipe-stepper__section .miam-recipe-stepper__mobile__buttons button.active{background-color:var(--m-color-primary);color:var(--m-color-white)}.miam-recipe-stepper ng-miam-loader{display:flex;justify-content:center;padding:50vh;width:100%}.miam-recipe-stepper .miam-recipe-stepper__footer{display:flex;gap:64px;justify-content:center;padding:64px 0}@media (max-width:1023px){.miam-recipe-stepper .miam-recipe-stepper__footer{display:grid;gap:8px;grid-template-columns:repeat(2,1fr);padding:16px 8px}}.miam-recipe-stepper__picture__warning{font-size:var(--m-font-size-medium);padding:10px;text-align:center}"], encapsulation: 2, changeDetection: 0 });
656
656
  const ɵRecipeStepperComponent_BaseFactory = /*@__PURE__*/ i0.ɵɵgetInheritedFactory(RecipeStepperComponent);
657
657
  /*@__PURE__*/ (function () { i0.ɵsetClassMetadata(RecipeStepperComponent, [{
658
658
  type: Component,
@@ -677,4 +677,4 @@ const ɵRecipeStepperComponent_BaseFactory = /*@__PURE__*/ i0.ɵɵgetInheritedFa
677
677
  type: ViewChildren,
678
678
  args: ['step']
679
679
  }] }); })();
680
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlLXN0ZXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fd2ViLWNvbXBvbmVudHMvcmVjaXBlLWNyZWF0aW9uL3JlY2lwZS1zdGVwcGVyL3JlY2lwZS1zdGVwcGVyLmNvbXBvbmVudC50cyIsImxpYi9fd2ViLWNvbXBvbmVudHMvcmVjaXBlLWNyZWF0aW9uL3JlY2lwZS1zdGVwcGVyL3JlY2lwZS1zdGVwcGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQ2xILGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDbUMvRCw0QkFBVztJQUFYLGdCQUFXO0lBQW1CLGlCQUFPOzs7O0lBc0JyQywrQkFDRTtJQUFBLGdDQUE2QztJQUFBLFlBQXVCO0lBQUEsaUJBQU87SUFDM0Usd0NBRWU7SUFGc0MsZ1FBQXdCO0lBRTdFLGlCQUFlO0lBQ2pCLGlCQUFNOzs7O0lBTHFGLG1EQUF5QjtJQUNyRSxlQUF1QjtJQUF2Qiw2Q0FBdUI7SUFDVSxlQUF1QjtJQUF2Qiw2Q0FBdUI7Ozs7SUFMM0csK0JBQ0U7SUFBQSxnQ0FBb0Q7SUFBcEQsZ0JBQW9EO0lBQUksaUJBQU87SUFDL0QsK0JBQ0U7SUFBQSwrRkFDRTtJQUtKLGlCQUFNO0lBQ04saUNBQ0U7SUFEaUMsbU5BQTZCLElBQUksS0FBRTtJQUNwRSxtQ0FBdUY7SUFDdkYsNEJBQVc7SUFBWCxnQkFBVztJQUFPLGlCQUFPO0lBQzNCLGlCQUFTO0lBQ1gsaUJBQU07OztJQVhHLGVBQW1EO0lBQW5ELG1I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NkI7UUFBN0Isb0RBQTZCO1FBUzdCLGVBQXVCO1FBQXZCLDBDQUF1Qjs7bUZENUxaLHNCQUFzQjtrREFBdEIsc0JBQXNCO2NBUGxDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsd0JBQXdCO2dCQUNsQyxXQUFXLEVBQUUsaUNBQWlDO2dCQUM5QyxTQUFTLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQztnQkFDOUMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7Z0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2FBQ2hEO2dCQUVVLFdBQVc7a0JBQW5CLEtBQUs7WUFDRyxtQkFBbUI7a0JBQTNCLEtBQUs7WUFTa0IsU0FBUztrQkFBaEMsU0FBUzttQkFBQyxXQUFXO1lBQ0ssWUFBWTtrQkFBdEMsU0FBUzttQkFBQyxjQUFjO1lBQ0YsS0FBSztrQkFBM0IsWUFBWTttQkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3Q2hlY2tlZCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW4sXG4gIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRhZyB9IGZyb20gJy4uLy4uLy4uL19tb2RlbHMnO1xuaW1wb3J0IHsgUmVjaXBlRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL3JlY2lwZS1mb3JtL3JlY2lwZS1mb3JtLmNvbXBvbmVudCc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctbWlhbS1yZWNpcGUtc3RlcHBlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZWNpcGUtc3RlcHBlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JlY2lwZS1zdGVwcGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFJlY2lwZVN0ZXBwZXJDb21wb25lbnQgZXh0ZW5kcyBSZWNpcGVGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3Q2hlY2tlZCB7XG4gIEBJbnB1dCgpIGRpc3BsYXlUYWdzID0gZmFsc2U7XG4gIEBJbnB1dCgpIGluZ3JlZGllbnRzUGljdHVyZXM6IHsgdmlzaWJsZTogYm9vbGVhbiwgZWRpdGFibGU6IGJvb2xlYW4gfSA9IHsgdmlzaWJsZTogZmFsc2UsIGVkaXRhYmxlOiBmYWxzZSB9O1xuXG4gIGN1cnJlbnRTdGVwID0gMDtcbiAgYmlnSW1hZ2VXYXJuaW5nID0gZmFsc2U7XG4gIHNob3dJbmdyZWRpZW50ID0gdHJ1ZTtcbiAgdGFnc1NlbGVjdG9yRGlzcGxheWVkID0gZmFsc2U7XG4gIGlzTW9iaWxlOiBib29sZWFuO1xuICBwcml2YXRlIGludGVyc2VjdGlvbk9ic2VydmVyczogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJbXSA9IFtdO1xuXG4gIEBWaWV3Q2hpbGQoJ3RvcEFuY2hvcicpIHRvcEFuY2hvcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ3N0ZXBwZXJMaW5rcycpIHN0ZXBwZXJMaW5rczogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIEBWaWV3Q2hpbGRyZW4oJ3N0ZXAnKSAgc3RlcHM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKXtcbiAgICAvLyBWaWV3Q2hlY2tlZCBpcyBjYWxsZWQgc2V2ZXJhbCB0aW1lIGluIHRoZSBsaWZlY3ljbGUsIGJ1dCB3ZSB3YW50IHRob3NlIHRvIGluaXQgb25seSBvbmUgdGltZVxuICAgIGlmICh0aGlzLmludGVyc2VjdGlvbk9ic2VydmVycy5sZW5ndGggPCAzKSB7XG4gICAgICB0aGlzLmlzTW9iaWxlID0gdGhpcy5tZWRpYU1hdGNoZXIubWF0Y2hNZWRpYSgnKG1heC13aWR0aDogMTAyM3B4KScpLm1hdGNoZXM7XG4gICAgICB0aGlzLmluaXRPblNjcm9sbCgpO1xuICAgIH1cbiAgfVxuXG4gIGluaXRPblNjcm9sbCgpIHtcbiAgICBpZiAodGhpcy5zdGVwcy50b0FycmF5KCkubGVuZ3RoID4gMSkge1xuICAgICAgLy8gUmVjZWl2ZSBhbiBldmVudCBlYWNoIHRpbWUgdGhlIGVhY2ggc3RlcCBpcyAxMCUgbW9yZSBvciBsZXNzIGluIHRoZSB2aWV3cG9ydCAoZXg6IGl0IGVudGVycyB0aGUgdmlld3BvcnQgLT4gZXZlbnQsIHdoZW4gMTAlXG4gICAgICAvLyBpcyBkaXNwbGF5ZWQgLT4gZXZlbnQsIHdoZW4gMjAlIGlzIGRpc3BsYXllZCAtPiBldmVudCBldGMuLilcbiAgICAgIHRoaXMuc3RlcHMudG9BcnJheSgpLmZvckVhY2gocyA9PiB7XG4gICAgICAgIGNvbnN0IGludGVyc2VjdGlvbk9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChbZW50cnldKSA9PiB7IHRoaXMub25TY3JvbGwoKTsgfSxcbiAgICAgICAgeyB0aHJlc2hvbGQ6IFswLCAwLjEsIDAuMiwgMC4zLCAwLjQsIDAuNSwgMC42LCAwLjcsIDAuOCwgMC45LCAxXSB9KTtcbiAgICAgICAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIub2JzZXJ2ZShzLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVycy5wdXNoKGludGVyc2VjdGlvbk9ic2VydmVyKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9uU2Nyb2xsKCkge1xuICAgIGlmICh0aGlzLnN0ZXBwZXJMaW5rcyAmJiB0aGlzLnN0ZXBzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHNlY3Rpb25zID0gdGhpcy5zdGVwcy50b0FycmF5KCk7XG4gICAgICBzZWN0aW9ucy5mb3JFYWNoKChzZWN0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgICAvLyBUaGUgYW5jaG9yIGlzIHBvc2l0aW9ubmVkIGF0IHRoZSB0b3Agb2YgdGhlIHBhZ2UsIHNvIHRoZSBvcHBvc2l0ZSBvZiBpdHMgcG9zaXRpb24gcmVsYXRpdmUgdG8gdGhlIHRvcCBvZiB0aGUgc2NyZWVuXG4gICAgICAgIC8vIGNvcnJlc3BvbmRzIHRvIHRoZSBjdXJyZW50IG51bWJlciBvZiBwaXhlbHMgdGhhdCBoYXZlIGJlZW4gc2Nyb2xsZWRcbiAgICAgICAgY29uc3QgY3VycmVudFBvc2l0aW9uID0gLXRoaXMudG9wQW5jaG9yLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xuICAgICAgICAvLyBoZWFkZXIgaXMgc3RpY2t5IGFuZCBzdGF5IG9uIHNjcmVlblxuICAgICAgICAvLyBXZSBhcmUgaW4gdGhlIHNlY3Rpb24gaWYgcG9zaXRpb24gaXMgbW9yZSB0aGFuIHRoZSAoZGlmZiBiZXR3ZWVuIHRvcCBvZiBwYWdlIGFuZCB0b3Agb2Ygc2VjdGlvbikgLSAoaGVhZGVyIGhlaWdodClcbiAgICAgICAgY29uc3QgcmVsYXRpdmVTZWN0aW9uVG9wID0gc2VjdGlvbi5uYXRpdmVFbGVtZW50W2BvZmZzZXRUb3BgXSAtICh0aGlzLnN0ZXBwZXJMaW5rcy5uYXRpdmVFbGVtZW50W2BvZmZzZXRIZWlnaHRgXSArIDEwKTtcbiAgICAgICAgLy8gYW5kIGxlc3MgdGhhbiB0aGUgKGRpZmYgYmV0d2VlbiB0b3Agb2YgcGFnZSBhbmQgdG9wIG9mIHNlY3Rpb24pICsgKHNlY3Rpb24gaGVpZ2h0KVxuICAgICAgICBjb25zdCByZWxhdGl2ZVNlY3Rpb25Cb3R0b20gPSBzZWN0aW9uLm5hdGl2ZUVsZW1lbnRbYG9mZnNldFRvcGBdICsgc2VjdGlvbi5uYXRpdmVFbGVtZW50W2BvZmZzZXRIZWlnaHRgXSAtXG4gICAgICAgICh0aGlzLnN0ZXBwZXJMaW5rcy5uYXRpdmVFbGVtZW50W2BvZmZzZXRIZWlnaHRgXSArIDEwKTtcbiAgICAgICAgY29uc3QgaXNTZWxlY3RlZCA9IGN1cnJlbnRQb3NpdGlvbiA+PSByZWxhdGl2ZVNlY3Rpb25Ub3AgICYmIGN1cnJlbnRQb3NpdGlvbiA8IHJlbGF0aXZlU2VjdGlvbkJvdHRvbTtcbiAgICAgICAgaWYgKGlzU2VsZWN0ZWQpe1xuICAgICAgICAgIHRoaXMuY3VycmVudFN0ZXAgPSBpbmRleDtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNjcm9vbFRvQW5jaG9yKGluZGV4OiBudW1iZXIpe1xuICAgIGlmICh0aGlzLnN0ZXBwZXJMaW5rcyAmJiB0aGlzLnN0ZXBzLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBzdGVwID0gdGhpcy5zdGVwcy50b0FycmF5KClbaW5kZXhdLm5hdGl2ZUVsZW1lbnQ7XG4gICAgc3RlcC5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6ICdzbW9vdGgnfSk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlR3Vlc3QobmV3R2VzdE51bWJlcjogbnVtYmVyKXtcbiAgICBpZiAoK25ld0dlc3ROdW1iZXIgIT09IHRoaXMucmVjaXBlRm9ybT8uZ2V0KCdhdHRyaWJ1dGVzJyk/LmdldCgnbnVtYmVyLW9mLWd1ZXN0cycpLnZhbHVlICl7XG4gICAgICB0aGlzLnJlY2lwZUZvcm0/LmdldCgnYXR0cmlidXRlcycpPy5nZXQoJ251bWJlci1vZi1ndWVzdHMnKS5wYXRjaFZhbHVlKCtuZXdHZXN0TnVtYmVyKTtcbiAgICAgIHRoaXMucmVjaXBlRm9ybT8uZ2V0KCdhdHRyaWJ1dGVzJyk/LmdldCgnbnVtYmVyLW9mLWd1ZXN0cycpLm1hcmtBc0RpcnR5KCk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlVGFnKHRhZzogVGFnKSB7XG4gICAgY29uc3QgaSA9IHRoaXMucmVjaXBlLnJlbGF0aW9uc2hpcHMudGFncy5kYXRhLmZpbmRJbmRleCh0ID0+IHQuaWQgPT09IHRhZy5pZCk7XG4gICAgaWYgKGkgPiAtMSkge1xuICAgICAgdGhpcy5yZWNpcGUucmVsYXRpb25zaGlwcy50YWdzLmRhdGEuc3BsaWNlKGksIDEpO1xuICAgIH1cbiAgICB0aGlzLnJlY2lwZUZvcm0ubWFya0FzRGlydHkoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBhZGRUYWdzKHRhZ3M6IFRhZ1tdKSB7XG4gICAgdGFncy5mb3JFYWNoKHRhZyA9PiB7XG4gICAgICBjb25zdCBpID0gdGhpcy5yZWNpcGUucmVsYXRpb25zaGlwcy50YWdzLmRhdGEuZmluZEluZGV4KHQgPT4gdC5pZCA9PT0gdGFnLmlkKTtcbiAgICAgIGlmIChpID09PSAtMSkge1xuICAgICAgICB0aGlzLnJlY2lwZS5yZWxhdGlvbnNoaXBzLnRhZ3MuZGF0YS5wdXNoKHRhZyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5yZWNpcGVGb3JtLm1hcmtBc0RpcnR5KCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgdGFnQ2xhc3ModGFnOiBUYWcpIHtcbiAgICByZXR1cm4geyBbdGFnLnRhZ1R5cGVdOiB0cnVlIH07XG4gIH1cblxuICBkaXNwbGF5QmlnRmlsZVdhcm5pbmcoZGlzcGxheTogYm9vbGVhbikge1xuICAgIHRoaXMuYmlnSW1hZ2VXYXJuaW5nID0gZGlzcGxheTtcbiAgICB0aGlzLmluaXRJc0xvY2FsSW1hZ2UoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBkaXNwbGF5VGFnc1NlbGVjdG9yKGRpc3BsYXk6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnRhZ3NTZWxlY3RvckRpc3BsYXllZCA9IGRpc3BsYXk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgdG9nZ2xlU2hvd0luZ3JlZGllbnQoaXNTaG93KXtcbiAgICB0aGlzLnNob3dJbmdyZWRpZW50ID0gaXNTaG93O1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHVwZGF0ZUltYWdlKGV2ZW50KSB7XG4gICAgdGhpcy5pbml0SXNMb2NhbEltYWdlKCk7XG4gICAgdGhpcy5yZWNpcGVGb3JtPy5nZXQoJ2F0dHJpYnV0ZXMnKT8uZ2V0KCdtZWRpYS11cmwnKS5zZXRWYWx1ZShldmVudC50YXJnZXQudmFsdWUpO1xuICAgIHRoaXMucmVjaXBlRm9ybS5tYXJrQXNEaXJ0eSgpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxufVxuIiwiPCEtLSBTQ1JPTEwgRVZFTlQgQU5DSE9SIC0tPlxuPGRpdiAjdG9wQW5jaG9yIGNsYXNzPVwibWlhbS1yZWNpcGUtc3RlcHBlcl9fYW5jaG9yXCI+PC9kaXY+XG48ZGl2ICBjbGFzcz1cIm1pYW0tcmVjaXBlLXN0ZXBwZXJcIj5cbiAgPCEtLSBCQUNLIEJVVFRPTiAtLT5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLXN0ZXBwZXJfX3BhZGRpbmdcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwibS1idXR0b24tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cImNhbmNlbGVkLmVtaXQobnVsbClcIj5cbiAgICAgIDxuZy1taWFtLWljb24gW2ljb25OYW1lXT0naWNvbi5DaGV2cm9uRG93bicgcHJpbWFyeUNvbG9yPSd2YXIoLS1tLWNvbG9yLXByaW1hcnkpJyA+PC9uZy1taWFtLWljb24+XG4gICAgICA8c3BhbiBpMThuPlJldG91cjwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDwhLS0gSEVBREVSIExJTktTIC0tPlxuICA8ZGl2ICNzdGVwcGVyTGlua3MgY2xhc3M9XCJtaWFtLXJlY2lwZS1zdGVwcGVyX19saW5rc1wiPlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1zdGVwcGVyX19saW5rXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBjdXJyZW50U3RlcCA9PT0gMCAgfVwiIChjbGljayk9XCJzY3Jvb2xUb0FuY2hvcigwKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLXN0ZXBwZXJfX2xpbmtfX251bWJlclwiPjE8L2Rpdj5cbiAgICAgIDxzcGFuIGkxOG4gY2xhc3M9XCJtLWJvZHktdHlwbyBtaWFtLXJlY2lwZS1zdGVwcGVyX19saW5rX19uYW1lXCI+TWEgcmVjZXR0ZTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtc3RlcHBlcl9fbGlua19fZGl2aWRlclwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1zdGVwcGVyX19saW5rXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBjdXJyZW50U3RlcCA9PT0gMSAgfVwiIChjbGljayk9XCJzY3Jvb2xUb0FuY2hvcigxKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLXN0ZXBwZXJfX2xpbmtfX251bWJlclwiID4yPC9kaXY+XG4gICAgICA8c3BhbiBpMThuIGNsYXNzPVwibS1ib2R5LXR5cG8gbWlhbS1yZWNpcGUtc3RlcHBlcl9fbGlua19fbmFtZSBcIj5EZXNjcmlwdGlvbjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtc3RlcHBlcl9fbGlua19fZGl2aWRlclwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1zdGVwcGVyX19saW5rXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBjdXJyZW50U3RlcCA9PT0gMiB9XCIgKGNsaWNrKT1cInNjcm9vbFRvQW5jaG9yKDIpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtc3RlcHBlcl9fbGlua19fbnVtYmVyXCIgPjM8L2Rpdj5cbiAgICAgIDxzcGFuIGkxOG4gY2xhc3M9XCJtLWJvZHktdHlwbyBtaWFtLXJlY2lwZS1zdGVwcGVyX19saW5rX19uYW1lIFwiPkluZ3LDqWRpZW50cyAmIMOJdGFwZXM8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtc3RlcHBlcl9fcGFkZGluZ1wiPjwvZGl2PlxuICA8bmctY29udGFpbmVyICpuZ0lmPSdyZWNpcGVGb3JtIGVsc2UgbG9hZGluZycgW2Zvcm1Hcm91cF09XCJyZWNpcGVGb3JtXCI+XG4gICAgPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwXT1cInJlY2lwZUZvcm0/LmdldCgnYXR0cmlidXRlcycpXCI+XG4gICAgICA8IS0tIEZJUlNUIFNFQ1RJT04gLS0+XG4gICAgICA8ZGl2ICNzdGVwIGNsYXNzPVwibWlhbS1yZWNpcGUtc3RlcHBlcl9fc2VjdGlvblwiPlxuICAgICAgICA8ZGl2IGkxOG4gY2xhc3M9XCJtaWFtLXJlY2lwZS1zdGVwcGVyX19tYW5kYXRvcnlcIj4qIGNoYW1wcyBvYmxpZ2F0b2lyZXM8L2Rpdj5cbiAgICAgICAgPCEtLSBUSVRMRSAtLT5cbiAgICAgICAgPG5nLW1pYW0tdGV4dC1pbnB1dCBjbGFzcz1cIm0tdGl0bGUtdGV4dC1pbnB1dFwiIG5nRGVmYXVsdENvbnRyb2xcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwicmVjaXBlRm9ybT8uZ2V0KCdhdHRyaWJ1dGVzJyk/LmdldCgndGl0bGUnKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3BsYWNlaG9sZGVyPlxuICAgICAgICAgICAgPHNwYW4gaTE4bj5UaXRyZSBkZSBsYSByZWNldHRlPC9zcGFuPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctbWlhbS10ZXh0LWlucHV0PlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJtaWFtLXJlY2lwZS1zdGVwcGVyX190eXBlX19sYWJlbFwiPlxuICAgICAgICAgIDxzcGFuIGkxOG4+TWEgcmVjZXR0ZSBlc3QuLi48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS1zdGVwcGVyX190eXBlX19sYWJlbF9fbWFuZGF0b3J5XCI+Kjwvc3Bhbj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPCEtLSBSRUNJUEUgVFlQRSAtLT5cbiAgICAgICAgPG5nLW1pYW0tcmVjaXBlLXR5cGUtY2hvb3NlciBuZ0RlZmF1bHRDb250cm9sIFtmb3JtQ29udHJvbF09XCJyZWNpcGVGb3JtPy5nZXQoJ3JlY2lwZS10eXBlJylcIiA+PC9uZy1taWFtLXJlY2lwZS10eXBlLWNob29zZXI+XG4gICAgICAgIDwhLS0gR1VFU1RTIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtc3RlcHBlcl9fc2VjdGlvbl9fZ3Vlc3RzIG0tZGVmYXVsdC1jYXJkXCI+XG4gICAgICAgICAgPHNwYW4gaTE4biBjbGFzcz1cIm1pYW0tcmVjaXBlLXN0ZXBwZXJfX2d1ZXN0c19fbGFiZWxcIj5Ob21icmUgZGUgY29udml2ZXM8L3NwYW4+XG4gICAgICAgICAgPG5nLW1pYW0tY291bnRlci1pbnB1dCBuZ0RlZmF1bHRDb250cm9sIGZvcm1Db250cm9sTmFtZT1cIm51bWJlci1vZi1ndWVzdHNcIlxuICAgICAgICAgICAgKGNvdW50ZXJDaGFuZ2UpPVwiY2hhbmdlR3Vlc3QoJGV2ZW50KVwiXG4gICAgICAgICAgICBbY291bnRlcl09XCJ0aGlzLnJlY2lwZUZvcm0/LmdldCgnYXR0cmlidXRlcycpPy5nZXQoJ251bWJlci1vZi1ndWVzdHMnKS52YWx1ZVwiIG1pblJhbmdlPScxJ1xuICAgICAgICAgICAgbWF4UmFuZ2U9Jzk5OSc+XG4gICAgICAgICAgPC9uZy1taWFtLWNvdW50ZXItaW5wdXQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIFRBR1MgLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJkaXNwbGF5VGFnc1wiIGNsYXNzPVwibWlhbS1yZWNpcGUtc3RlcHBlcl9fdGFnc1wiPlxuICAgICAgICAgIDxzcGFuIGkxOG4gY2xhc3M9XCJtaWFtLXJlY2lwZS1zdGVwcGVyX190YWdzX190aXRsZVwiPlRhZ3M8L3NwYW4+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLXN0ZXBwZXJfX3RhZ3NfX3JlY2FwXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCB0YWcgb2YgcmVjaXBlLnJlbGF0aW9uc2hpcHMudGFncz8uZGF0YVwiIGNsYXNzPVwibWlhbS1yZWNpcGUtc3RlcHBlcl9fdGFnXCIgIFtuZ0NsYXNzXT1cInRhZ0NsYXNzKHRhZylcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS1zdGVwcGVyX190YWdfX25hbWVcIj57e3RhZy5hdHRyaWJ1dGVzLm5hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPG5nLW1pYW0taWNvbiBjbGFzcz1cIm1pYW0tcmVjaXBlLXN0ZXBwZXJfX3RhZ19faWNvblwiIChjbGljayk9XCJyZW1vdmVUYWcodGFnKVwiIFtpY29uTmFtZV09XCJpY29uLkNsZWFyXCJcbiAgICAgICAgICAgICAgICBwcmltYXJ5Q29sb3I9XCJ2YXIoLS1tLWNvbG9yLWdyZXkwMSlcIj5cbiAgICAgICAgICAgICAgPC9uZy1taWFtLWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibS1idXR0b24tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cImRpc3BsYXlUYWdzU2VsZWN0b3IodHJ1ZSlcIj5cbiAgICAgICAgICAgIDxuZy1taWFtLWljb24gcHJpbWFyeUNvbG9yPSd2YXIoLS1tLWNvbG9yLW9ueXgpJyBbaWNvbk5hbWVdPVwiaWNvbi5QbHVzXCI+PC9uZy1taWFtLWljb24+XG4gICAgICAgICAgICA8c3BhbiBpMThuPkFqb3V0ZXI8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIFNFQ09ORCBTRUNUSU9OIC0tPlxuICAgICAgPGRpdiAgI3N0ZXAgY2xhc3M9XCJtaWFtLXJlY2lwZS1zdGVwcGVyX19zZWN0aW9uXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1zdGVwcGVyX19zZWN0aW9uX19yb3dcIj5cbiAgICAgICAgICA8IS0tIFBJQ1RVUkUgLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLXN0ZXBwZXJfX3BpY3R1cmVcIj5cbiAgICAgICAgICAgIDxuZy1taWFtLWRyYWctZHJvcC1pbnB1dCBuZ0RlZmF1bHRDb250cm9sXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJyZWNpcGVGb3JtPy5nZXQoJ2F0dHJpYnV0ZXMnKT8uZ2V0KCdtZWRpYS11cmwnKVwiXG4gICAgICAgICAgICAgIFtpbWFnZVVybF09XCJyZWNpcGVGb3JtPy5nZXQoJ2F0dHJpYnV0ZXMnKT8uZ2V0KCdtZWRpYS11cmwnKT8udmFsdWVcIiBbcGhvdG9Nb2RlXT0ndHJ1ZSdcbiAgICAgICAgICAgICAgW2JpZ0ltYWdlV2FybmluZ109XCJiaWdJbWFnZVdhcm5pbmdcIlxuICAgICAgICAgICAgICAoYmlnRmlsZURyb3BwZWQpPVwiZGlzcGxheUJpZ0ZpbGVXYXJuaW5nKHRydWUpXCIgKGZpbGVEcm9wcGVkKT1cImRpc3BsYXlCaWdGaWxlV2FybmluZyhmYWxzZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVjaXBlRm9ybT8uZ2V0KCdhdHRyaWJ1dGVzJyk/LmdldCgnbWVkaWEtdXJsJyk/LnZhbHVlPy5sZW5ndGggPiAwIGVsc2UgZmlsZU1vZGVcIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2J1dHRvblRleHQ+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBpMThuPk1vZGlmaWVyIGxhIHBob3RvICgyTUIgbWF4KTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNmaWxlTW9kZT5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2J1dHRvblRleHQ+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBpMThuPkFqb3V0ZXIgdW5lIHBob3RvICgyTUIgbWF4KTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZy1taWFtLWRyYWctZHJvcC1pbnB1dD5cbiAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cImlzQWRtaW5cIlxuICAgICAgICAgICAgICAgICAgIGkxOG4tcGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkwnaW1hZ2UgbmUgZGlzcG9zZSBkJ2F1Y3VuIGxpZW5cIlxuICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpc0xvY2FsSW1hZ2UgPyAnJyA6IHRoaXMucmVjaXBlRm9ybT8uZ2V0KCdhdHRyaWJ1dGVzJyk/LmdldCgnbWVkaWEtdXJsJykudmFsdWVcIlxuICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJ1cGRhdGVJbWFnZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm0taW5wdXRcIi8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPCEtLSBERVNDUklQVElPTiAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtc3RlcHBlcl9fcm93X19kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgPGgxIGNsYXNzPVwibS1oMS10eXBvXCI+e3tyZWNpcGVGb3JtPy5nZXQoJ2F0dHJpYnV0ZXMnKT8uZ2V0KCd0aXRsZScpPy52YWx1ZX19PC9oMT5cbiAgICAgICAgICAgIDxsYWJlbCBpMThuPkRlc2NyaXB0aW9uIGRlIG1hIHJlY2V0dGU8L2xhYmVsPlxuICAgICAgICAgICAgPHRleHRhcmVhIGNka1RleHRhcmVhQXV0b3NpemUgY2RrQXV0b3NpemVNaW5Sb3dzPVwiMjBcIiBjZGtBdXRvc2l6ZU1heFJvd3M9XCI1MFwiIGNsYXNzPVwibS1pbnB1dFwiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJyZWNpcGVGb3JtPy5nZXQoJ2F0dHJpYnV0ZXMnKT8uZ2V0KCdkZXNjcmlwdGlvbicpXCIgbWF4bGVuZ3RoPVwiMjUwXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLXN0ZXBwZXJfX2Rlc2NyaXB0aW9uX19jb3VudGVyXCI+e3tyZWNpcGVGb3JtPy5nZXQoJ2F0dHJpYnV0ZXMnKT8uZ2V0KCdkZXNjcmlwdGlvbicpPy52YWx1ZT8ubGVuZ3RoIHx8IDB9fSA8c3Bhbj4vIDI1MDwvc3Bhbj4gPC9kaXY+XG4gICAgICAgICAgICA8IS0tIDxsYWJlbD5MaWVuIHZpZMOpbyBkZSBtYSByZWNldHRlIChvcHRpb25uZWwpIDo8L2xhYmVsPlxuICAgIDxuZy1taWFtLXRleHQtaW5wdXQgIG5nRGVmYXVsdENvbnRyb2wgIHBsYWNlaG9sZGVyPVwiXCI+PC9uZy1taWFtLXRleHQtaW5wdXQ+IC0tPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSBUSU1FUyAtLT5cbiAgICAgICAgPGRpdiAqbmdJZj0ncmVjaXBlRm9ybScgY2xhc3M9XCJtaWFtLXJlY2lwZS1zdGVwcGVyX19zZWN0aW9uX190aW1lc1wiPlxuICAgICAgICAgIDxuZy1taWFtLXRpbWUtcGlja2VyIG5nRGVmYXVsdENvbnRyb2xcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJyZWNpcGVGb3JtPy5nZXQoJ2F0dHJpYnV0ZXMnKT8uZ2V0KCdwcmVwYXJhdGlvbi10aW1lJylcIiBbaWNvbl09J2ljb24uVGltZSdcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3RpdGxlPlxuICAgICAgICAgICAgICA8c3BhbiBpMThuPlRlbXBzIGRlIHByw6lwYXJhdGlvbjwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy1taWFtLXRpbWUtcGlja2VyPlxuICAgICAgICAgIDxuZy1taWFtLXRpbWUtcGlja2VyIG5nRGVmYXVsdENvbnRyb2xcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJyZWNpcGVGb3JtPy5nZXQoJ2F0dHJpYnV0ZXMnKT8uZ2V0KCdjb29raW5nLXRpbWUnKVwiIFtpY29uXT0naWNvbi5Ib3QnXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0aXRsZT5cbiAgICAgICAgICAgICAgPHNwYW4gaTE4bj5UZW1wcyBkZSBjdWlzc29uPC9zcGFuPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L25nLW1pYW0tdGltZS1waWNrZXI+XG4gICAgICAgICAgPG5nLW1pYW0tdGltZS1waWNrZXIgbmdEZWZhdWx0Q29udHJvbFxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInJlY2lwZUZvcm0/LmdldCgnYXR0cmlidXRlcycpPy5nZXQoJ3Jlc3RpbmctdGltZScpXCIgW2ljb25dPSdpY29uLldhaXQnXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0aXRsZT5cbiAgICAgICAgICAgICAgPHNwYW4gaTE4bj5UZW1wcyBkZSByZXBvczwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy1taWFtLXRpbWUtcGlja2VyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSBESUZGSUNVTFRZIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtc3RlcHBlcl9fYXR0aWJ1dGVzX19zbGlkZXJcIj5cbiAgICAgICAgICA8bGFiZWwgaTE4bj5OaXZlYXUgZGUgZGlmZmljdWx0w6kgZGUgbGEgcmVjZXR0ZTwvbGFiZWw+XG4gICAgICAgICAgPG5nLW1pYW0tc2xpZGVyIG5nRGVmYXVsdENvbnRyb2wgW3N0ZXBzXT1cImRpZmljdWx0aWVzXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJyZWNpcGVGb3JtPy5nZXQoJ2F0dHJpYnV0ZXMnKT8uZ2V0KCdkaWZmaWN1bHR5JylcIiBbaWNvbnNdPVwiaWNvbnNEaWZpY3VsdGllc1wiPlxuICAgICAgICAgIDwvbmctbWlhbS1zbGlkZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPCEtLSBUSElSRCBTRUNUSU9OIC0tPlxuICAgIDxkaXYgI3N0ZXAgIGNsYXNzPVwibWlhbS1yZWNpcGUtc3RlcHBlcl9fc2VjdGlvblwiPlxuICAgICAgPGRpdiAqbmdJZj1cImlzTW9iaWxlXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1zdGVwcGVyX19tb2JpbGVfX2J1dHRvbnNcIj5cbiAgICAgICAgPGJ1dHRvbiBpMThuIGNsYXNzPVwibS1idXR0b24tc2Vjb25kYXJ5XCIgW25nQ2xhc3NdPVwieydhY3RpdmUnIDogc2hvd0luZ3JlZGllbnR9XCIgKGNsaWNrKT1cInRvZ2dsZVNob3dJbmdyZWRpZW50KHRydWUpXCIgPkluZ3JlZGllbnRzPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gaTE4biBjbGFzcz1cIm0tYnV0dG9uLXNlY29uZGFyeVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJyA6ICFzaG93SW5ncmVkaWVudH1cIiAoY2xpY2spPVwidG9nZ2xlU2hvd0luZ3JlZGllbnQoZmFsc2UpXCI+UHLDqXBhcmF0aW9uPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwhLS0gSU5HUkVESUVOVFMgLS0+XG4gICAgICA8bmctbWlhbS1saXN0LWlucHV0IFxuICAgICAgICAqbmdJZj1cIiEoaXNNb2JpbGUgJiYgIXNob3dJbmdyZWRpZW50KVwiXG4gICAgICAgIG5nRGVmYXVsdENvbnRyb2xcbiAgICAgICAgZm9ybUFycmF5TmFtZT1cImluZ3JlZGllbnRzXCJcbiAgICAgICAgW2lzUGVyc29uYWxdPVwicmVjaXBlLnJlbGF0aW9uc2hpcHNbJ3JlY2lwZS1wcm92aWRlciddPy5kYXRhPy5pZCA9PT0gJ3BlcnNvbmFsJ1wiXG4gICAgICAgIFtsaXN0XT1cInJlY2lwZUZvcm0uZ2V0KCdpbmdyZWRpZW50cycpXCJcbiAgICAgICAgW2luZ3JlZGllbnRNb2RlXT0ndHJ1ZSdcbiAgICAgICAgW2luZ3JlZGllbnRzUGljdHVyZXNdPVwiaW5ncmVkaWVudHNQaWN0dXJlc1wiXG4gICAgICAgIChkZWxldGVJZCk9XCJhZGRUb0RlbGV0ZUluZ3JlZGllbnRzTGlzdCgkZXZlbnQpXCJcbiAgICAgICAgKG9yZGVySGFzQ2hhbmdlZCk9J2Nkci5kZXRlY3RDaGFuZ2VzKCknXG4gICAgICA+XG4gICAgICA8L25nLW1pYW0tbGlzdC1pbnB1dD5cbiAgICAgIDwhLS0gU1RFUFMgLS0+XG4gICAgICA8bmctbWlhbS1saXN0LWlucHV0XG4gICAgICAgIG5nRGVmYXVsdENvbnRyb2xcbiAgICAgICAgKm5nSWY9XCIhKGlzTW9iaWxlICYmIHNob3dJbmdyZWRpZW50KVwiXG4gICAgICAgIGZvcm1BcnJheU5hbWU9XCJzdGVwc1wiXG4gICAgICAgIChkZWxldGVJZCk9XCJhZGRUb0RlbGV0ZVN0ZXBzTGlzdCgkZXZlbnQpXCJcbiAgICAgICAgKG9yZGVySGFzQ2hhbmdlZCk9J2Nkci5kZXRlY3RDaGFuZ2VzKCknXG4gICAgICAgIFtsaXN0XT1cInJlY2lwZUZvcm0/LmdldCgnc3RlcHMnKVwiXG4gICAgICA+PC9uZy1taWFtLWxpc3QtaW5wdXQ+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICA8IS0tIExPQURFUiAtLT5cbiAgPG5nLXRlbXBsYXRlICNsb2FkaW5nID5cbiAgICA8bmctbWlhbS1sb2FkZXI+PC9uZy1taWFtLWxvYWRlcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPCEtLSBGT09URVIgLS0+XG4gIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1zdGVwcGVyX19mb290ZXJcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwibS1idXR0b24tc2Vjb25kYXJ5XCIgKGNsaWNrKT0nY2FuY2VsKCknIFtkaXNhYmxlZF09J3NlY29uZGFyeUJ1dHRvbkRpc2FibGUgJiYgY2FudFN1Ym1pdCgpJz5cbiAgICAgIHt7IHNlY29uZGFyeUFjdGlvblRleHQgfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIGNsYXNzPVwibS1idXR0b24tcHJpbWFyeVwiIChjbGljayk9J3N1Ym1pdCgpJyBbZGlzYWJsZWRdPSdjYW50U3VibWl0KCknPlxuICAgICAge3sgcHJpbWFyeUFjdGlvblRleHQgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbjwhLS0gVEFHUyBTRUxFQ1RPUiBNT0RBTCAtLT5cbjxuZy1taWFtLXRhZ3Mtc2VsZWN0b3JcbiAgKm5nSWY9XCJkaXNwbGF5VGFncyAmJiByZWNpcGVcIlxuICBbZGlzcGxheV09XCJ0YWdzU2VsZWN0b3JEaXNwbGF5ZWRcIlxuICBbY3VycmVudFJlY2lwZV09XCJyZWNpcGVcIlxuICBbY3VycmVudFRhZ3NdPVwicmVjaXBlLnJlbGF0aW9uc2hpcHMudGFncz8uZGF0YVwiXG4gIChjbG9zZSk9XCJkaXNwbGF5VGFnc1NlbGVjdG9yKGZhbHNlKVwiXG4gIChzYXZlZFRhZ3MpPVwiYWRkVGFncygkZXZlbnQpXCI+XG48L25nLW1pYW0tdGFncy1zZWxlY3Rvcj5cbjwhLS0gUElDVFVSRSBFUlJPUiBNT0RBTCAtLT5cbjxuZy1taWFtLW1vZGFsIFxuICAqbmdJZj1cImJpZ0ltYWdlV2FybmluZ1wiXG4gIFtpc0FuZ3VsYXJDb21wb25lbnRdPVwidHJ1ZVwiIFxuICBbbm9IZWFkZXJNb2RlXT1cImZhbHNlXCJcbiAgW2V4cGFuZGVkXT1cInRydWVcIlxuICBpMThuLXRpdGxlXG4gIHRpdGxlPVwiSW1hZ2UgdHJvcCB2b2x1bWluZXVzZVwiXG4gIGkxOG4tY29uZmlybUJ1dHRvblRleHRcbiAgY29uZmlybUJ1dHRvblRleHQ9XCJGZXJtZXJcIlxuICAoY2xvc2UpPVwiZGlzcGxheUJpZ0ZpbGVXYXJuaW5nKGZhbHNlKVwiXG4gIChjb25maXJtKT1cImRpc3BsYXlCaWdGaWxlV2FybmluZyhmYWxzZSlcIlxuPlxuICA8c3BhbiBpMThuIGNsYXNzPVwibWlhbS1yZWNpcGUtc3RlcHBlcl9fcGljdHVyZV9fd2FybmluZ1wiPlZvdHJlIGltYWdlIGVzdCB0cm9wIGxvdXJkZSAobGEgdGFpbGxlIGRvaXQgw6p0cmUgaW5mw6lyaWV1cmUgw6AgMiBNbykuIE1lcmNpIGTigJllbiBham91dGVyIHVuZSBwbHVzIGzDqWfDqHJlLjwvc3Bhbj5cbjwvbmctbWlhbS1tb2RhbD4iXX0=
680
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlLXN0ZXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fd2ViLWNvbXBvbmVudHMvcmVjaXBlLWNyZWF0aW9uL3JlY2lwZS1zdGVwcGVyL3JlY2lwZS1zdGVwcGVyLmNvbXBvbmVudC50cyIsImxpYi9fd2ViLWNvbXBvbmVudHMvcmVjaXBlLWNyZWF0aW9uL3JlY2lwZS1zdGVwcGVyL3JlY2lwZS1zdGVwcGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQ2xILGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDbUMvRCw0QkFBVztJQUFYLGdCQUFXO0lBQW1CLGlCQUFPOzs7O0lBc0JyQywrQkFDRTtJQUFBLGdDQUE2QztJQUFBLFlBQXVCO0lBQUEsaUJBQU87SUFDM0Usd0NBRWU7SUFGc0MsZ1FBQXdCO0lBRTdFLGlCQUFlO0lBQ2pCLGlCQUFNOzs7O0lBTHFGLG1EQUF5QjtJQUNyRSxlQUF1QjtJQUF2Qiw2Q0FBdUI7SUFDVSxlQUF1QjtJQUF2Qiw2Q0FBdUI7Ozs7SUFMM0csK0JBQ0U7SUFBQSxnQ0FBb0Q7SUFBcEQsZ0JBQW9EO0lBQUksaUJBQU87SUFDL0QsK0JBQ0U7SUFBQSwrRkFDRTtJQUtKLGlCQUFNO0lBQ04saUNBQ0U7SUFEaUMsbU5BQTZCLElBQUksS0FBRTtJQUNwRSxtQ0FBdUY7SUFDdkYsNEJBQVc7SUFBWCxnQkFBVztJQUFPLGlCQUFPO0lBQzNCLGlCQUFTO0lBQ1gsaUJBQU07OztJQVhHLGVBQW1EO0lBQW5ELG1I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N0Isb0RBQTZCO1FBUzdCLGVBQXVCO1FBQXZCLDBDQUF1Qjs7bUZENUxaLHNCQUFzQjtrREFBdEIsc0JBQXNCO2NBUGxDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsd0JBQXdCO2dCQUNsQyxXQUFXLEVBQUUsaUNBQWlDO2dCQUM5QyxTQUFTLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQztnQkFDOUMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7Z0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2FBQ2hEO2dCQUVVLFdBQVc7a0JBQW5CLEtBQUs7WUFDRyxtQkFBbUI7a0JBQTNCLEtBQUs7WUFTa0IsU0FBUztrQkFBaEMsU0FBUzttQkFBQyxXQUFXO1lBQ0ssWUFBWTtrQkFBdEMsU0FBUzttQkFBQyxjQUFjO1lBQ0YsS0FBSztrQkFBM0IsWUFBWTttQkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3Q2hlY2tlZCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW4sXG4gIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRhZyB9IGZyb20gJy4uLy4uLy4uL19tb2RlbHMnO1xuaW1wb3J0IHsgUmVjaXBlRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL3JlY2lwZS1mb3JtL3JlY2lwZS1mb3JtLmNvbXBvbmVudCc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctbWlhbS1yZWNpcGUtc3RlcHBlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZWNpcGUtc3RlcHBlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JlY2lwZS1zdGVwcGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFJlY2lwZVN0ZXBwZXJDb21wb25lbnQgZXh0ZW5kcyBSZWNpcGVGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3Q2hlY2tlZCB7XG4gIEBJbnB1dCgpIGRpc3BsYXlUYWdzID0gZmFsc2U7XG4gIEBJbnB1dCgpIGluZ3JlZGllbnRzUGljdHVyZXM6IHsgdmlzaWJsZTogYm9vbGVhbiwgZWRpdGFibGU6IGJvb2xlYW4gfSA9IHsgdmlzaWJsZTogZmFsc2UsIGVkaXRhYmxlOiBmYWxzZSB9O1xuXG4gIGN1cnJlbnRTdGVwID0gMDtcbiAgYmlnSW1hZ2VXYXJuaW5nID0gZmFsc2U7XG4gIHNob3dJbmdyZWRpZW50ID0gdHJ1ZTtcbiAgdGFnc1NlbGVjdG9yRGlzcGxheWVkID0gZmFsc2U7XG4gIGlzTW9iaWxlOiBib29sZWFuO1xuICBwcml2YXRlIGludGVyc2VjdGlvbk9ic2VydmVyczogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJbXSA9IFtdO1xuXG4gIEBWaWV3Q2hpbGQoJ3RvcEFuY2hvcicpIHRvcEFuY2hvcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ3N0ZXBwZXJMaW5rcycpIHN0ZXBwZXJMaW5rczogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIEBWaWV3Q2hpbGRyZW4oJ3N0ZXAnKSAgc3RlcHM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKXtcbiAgICAvLyBWaWV3Q2hlY2tlZCBpcyBjYWxsZWQgc2V2ZXJhbCB0aW1lIGluIHRoZSBsaWZlY3ljbGUsIGJ1dCB3ZSB3YW50IHRob3NlIHRvIGluaXQgb25seSBvbmUgdGltZVxuICAgIGlmICh0aGlzLmludGVyc2VjdGlvbk9ic2VydmVycy5sZW5ndGggPCAzKSB7XG4gICAgICB0aGlzLmlzTW9iaWxlID0gdGhpcy5tZWRpYU1hdGNoZXIubWF0Y2hNZWRpYSgnKG1heC13aWR0aDogMTAyM3B4KScpLm1hdGNoZXM7XG4gICAgICB0aGlzLmluaXRPblNjcm9sbCgpO1xuICAgIH1cbiAgfVxuXG4gIGluaXRPblNjcm9sbCgpIHtcbiAgICBpZiAodGhpcy5zdGVwcy50b0FycmF5KCkubGVuZ3RoID4gMSkge1xuICAgICAgLy8gUmVjZWl2ZSBhbiBldmVudCBlYWNoIHRpbWUgdGhlIGVhY2ggc3RlcCBpcyAxMCUgbW9yZSBvciBsZXNzIGluIHRoZSB2aWV3cG9ydCAoZXg6IGl0IGVudGVycyB0aGUgdmlld3BvcnQgLT4gZXZlbnQsIHdoZW4gMTAlXG4gICAgICAvLyBpcyBkaXNwbGF5ZWQgLT4gZXZlbnQsIHdoZW4gMjAlIGlzIGRpc3BsYXllZCAtPiBldmVudCBldGMuLilcbiAgICAgIHRoaXMuc3RlcHMudG9BcnJheSgpLmZvckVhY2gocyA9PiB7XG4gICAgICAgIGNvbnN0IGludGVyc2VjdGlvbk9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChbZW50cnldKSA9PiB7IHRoaXMub25TY3JvbGwoKTsgfSxcbiAgICAgICAgeyB0aHJlc2hvbGQ6IFswLCAwLjEsIDAuMiwgMC4zLCAwLjQsIDAuNSwgMC42LCAwLjcsIDAuOCwgMC45LCAxXSB9KTtcbiAgICAgICAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIub2JzZXJ2ZShzLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVycy5wdXNoKGludGVyc2VjdGlvbk9ic2VydmVyKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9uU2Nyb2xsKCkge1xuICAgIGlmICh0aGlzLnN0ZXBwZXJMaW5rcyAmJiB0aGlzLnN0ZXBzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHNlY3Rpb25zID0gdGhpcy5zdGVwcy50b0FycmF5KCk7XG4gICAgICBzZWN0aW9ucy5mb3JFYWNoKChzZWN0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgICAvLyBUaGUgYW5jaG9yIGlzIHBvc2l0aW9ubmVkIGF0IHRoZSB0b3Agb2YgdGhlIHBhZ2UsIHNvIHRoZSBvcHBvc2l0ZSBvZiBpdHMgcG9zaXRpb24gcmVsYXRpdmUgdG8gdGhlIHRvcCBvZiB0aGUgc2NyZWVuXG4gICAgICAgIC8vIGNvcnJlc3BvbmRzIHRvIHRoZSBjdXJyZW50IG51bWJlciBvZiBwaXhlbHMgdGhhdCBoYXZlIGJlZW4gc2Nyb2xsZWRcbiAgICAgICAgY29uc3QgY3VycmVudFBvc2l0aW9uID0gLXRoaXMudG9wQW5jaG9yLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xuICAgICAgICAvLyBoZWFkZXIgaXMgc3RpY2t5IGFuZCBzdGF5IG9uIHNjcmVlblxuICAgICAgICAvLyBXZSBhcmUgaW4gdGhlIHNlY3Rpb24gaWYgcG9zaXRpb24gaXMgbW9yZSB0aGFuIHRoZSAoZGlmZiBiZXR3ZWVuIHRvcCBvZiBwYWdlIGFuZCB0b3Agb2Ygc2VjdGlvbikgLSAoaGVhZGVyIGhlaWdodClcbiAgICAgICAgY29uc3QgcmVsYXRpdmVTZWN0aW9uVG9wID0gc2VjdGlvbi5uYXRpdmVFbGVtZW50W2BvZmZzZXRUb3BgXSAtICh0aGlzLnN0ZXBwZXJMaW5rcy5uYXRpdmVFbGVtZW50W2BvZmZzZXRIZWlnaHRgXSArIDEwKTtcbiAgICAgICAgLy8gYW5kIGxlc3MgdGhhbiB0aGUgKGRpZmYgYmV0d2VlbiB0b3Agb2YgcGFnZSBhbmQgdG9wIG9mIHNlY3Rpb24pICsgKHNlY3Rpb24gaGVpZ2h0KVxuICAgICAgICBjb25zdCByZWxhdGl2ZVNlY3Rpb25Cb3R0b20gPSBzZWN0aW9uLm5hdGl2ZUVsZW1lbnRbYG9mZnNldFRvcGBdICsgc2VjdGlvbi5uYXRpdmVFbGVtZW50W2BvZmZzZXRIZWlnaHRgXSAtXG4gICAgICAgICh0aGlzLnN0ZXBwZXJMaW5rcy5uYXRpdmVFbGVtZW50W2BvZmZzZXRIZWlnaHRgXSArIDEwKTtcbiAgICAgICAgY29uc3QgaXNTZWxlY3RlZCA9IGN1cnJlbnRQb3NpdGlvbiA+PSByZWxhdGl2ZVNlY3Rpb25Ub3AgICYmIGN1cnJlbnRQb3NpdGlvbiA8IHJlbGF0aXZlU2VjdGlvbkJvdHRvbTtcbiAgICAgICAgaWYgKGlzU2VsZWN0ZWQpe1xuICAgICAgICAgIHRoaXMuY3VycmVudFN0ZXAgPSBpbmRleDtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNjcm9vbFRvQW5jaG9yKGluZGV4OiBudW1iZXIpe1xuICAgIGlmICh0aGlzLnN0ZXBwZXJMaW5rcyAmJiB0aGlzLnN0ZXBzLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBzdGVwID0gdGhpcy5zdGVwcy50b0FycmF5KClbaW5kZXhdLm5hdGl2ZUVsZW1lbnQ7XG4gICAgc3RlcC5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6ICdzbW9vdGgnfSk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlR3Vlc3QobmV3R2VzdE51bWJlcjogbnVtYmVyKXtcbiAgICBpZiAoK25ld0dlc3ROdW1iZXIgIT09IHRoaXMucmVjaXBlRm9ybT8uZ2V0KCdhdHRyaWJ1dGVzJyk/LmdldCgnbnVtYmVyLW9mLWd1ZXN0cycpLnZhbHVlICl7XG4gICAgICB0aGlzLnJlY2lwZUZvcm0/LmdldCgnYXR0cmlidXRlcycpPy5nZXQoJ251bWJlci1vZi1ndWVzdHMnKS5wYXRjaFZhbHVlKCtuZXdHZXN0TnVtYmVyKTtcbiAgICAgIHRoaXMucmVjaXBlRm9ybT8uZ2V0KCdhdHRyaWJ1dGVzJyk/LmdldCgnbnVtYmVyLW9mLWd1ZXN0cycpLm1hcmtBc0RpcnR5KCk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlVGFnKHRhZzogVGFnKSB7XG4gICAgY29uc3QgaSA9IHRoaXMucmVjaXBlLnJlbGF0aW9uc2hpcHMudGFncy5kYXRhLmZpbmRJbmRleCh0ID0+IHQuaWQgPT09IHRhZy5pZCk7XG4gICAgaWYgKGkgPiAtMSkge1xuICAgICAgdGhpcy5yZWNpcGUucmVsYXRpb25zaGlwcy50YWdzLmRhdGEuc3BsaWNlKGksIDEpO1xuICAgIH1cbiAgICB0aGlzLnJlY2lwZUZvcm0ubWFya0FzRGlydHkoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBhZGRUYWdzKHRhZ3M6IFRhZ1tdKSB7XG4gICAgdGFncy5mb3JFYWNoKHRhZyA9PiB7XG4gICAgICBjb25zdCBpID0gdGhpcy5yZWNpcGUucmVsYXRpb25zaGlwcy50YWdzLmRhdGEuZmluZEluZGV4KHQgPT4gdC5pZCA9PT0gdGFnLmlkKTtcbiAgICAgIGlmIChpID09PSAtMSkge1xuICAgICAgICB0aGlzLnJlY2lwZS5yZWxhdGlvbnNoaXBzLnRhZ3MuZGF0YS5wdXNoKHRhZyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5yZWNpcGVGb3JtLm1hcmtBc0RpcnR5KCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgdGFnQ2xhc3ModGFnOiBUYWcpIHtcbiAgICByZXR1cm4geyBbdGFnLnRhZ1R5cGVdOiB0cnVlIH07XG4gIH1cblxuICBkaXNwbGF5QmlnRmlsZVdhcm5pbmcoZGlzcGxheTogYm9vbGVhbikge1xuICAgIHRoaXMuYmlnSW1hZ2VXYXJuaW5nID0gZGlzcGxheTtcbiAgICB0aGlzLmluaXRJc0xvY2FsSW1hZ2UoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBkaXNwbGF5VGFnc1NlbGVjdG9yKGRpc3BsYXk6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnRhZ3NTZWxlY3RvckRpc3BsYXllZCA9IGRpc3BsYXk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgdG9nZ2xlU2hvd0luZ3JlZGllbnQoaXNTaG93KXtcbiAgICB0aGlzLnNob3dJbmdyZWRpZW50ID0gaXNTaG93O1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHVwZGF0ZUltYWdlKGV2ZW50KSB7XG4gICAgdGhpcy5pbml0SXNMb2NhbEltYWdlKCk7XG4gICAgdGhpcy5yZWNpcGVGb3JtPy5nZXQoJ2F0dHJpYnV0ZXMnKT8uZ2V0KCdtZWRpYS11cmwnKS5zZXRWYWx1ZShldmVudC50YXJnZXQudmFsdWUpO1xuICAgIHRoaXMucmVjaXBlRm9ybS5tYXJrQXNEaXJ0eSgpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxufVxuIiwiPCEtLSBTQ1JPTEwgRVZFTlQgQU5DSE9SIC0tPlxuPGRpdiAjdG9wQW5jaG9yIGNsYXNzPVwibWlhbS1yZWNpcGUtc3RlcHBlcl9fYW5jaG9yXCI+PC9kaXY+XG48ZGl2ICBjbGFzcz1cIm1pYW0tcmVjaXBlLXN0ZXBwZXJcIj5cbiAgPCEtLSBCQUNLIEJVVFRPTiAtLT5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLXN0ZXBwZXJfX3BhZGRpbmdcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwibS1idXR0b24tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cImNhbmNlbGVkLmVtaXQobnVsbClcIj5cbiAgICAgIDxuZy1taWFtLWljb24gW2ljb25OYW1lXT0naWNvbi5DaGV2cm9uRG93bicgcHJpbWFyeUNvbG9yPSd2YXIoLS1tLWNvbG9yLXByaW1hcnkpJyA+PC9uZy1taWFtLWljb24+XG4gICAgICA8c3BhbiBpMThuPlJldG91cjwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDwhLS0gSEVBREVSIExJTktTIC0tPlxuICA8ZGl2ICNzdGVwcGVyTGlua3MgY2xhc3M9XCJtaWFtLXJlY2lwZS1zdGVwcGVyX19saW5rc1wiPlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1zdGVwcGVyX19saW5rXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBjdXJyZW50U3RlcCA9PT0gMCAgfVwiIChjbGljayk9XCJzY3Jvb2xUb0FuY2hvcigwKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLXN0ZXBwZXJfX2xpbmtfX251bWJlclwiPjE8L2Rpdj5cbiAgICAgIDxzcGFuIGkxOG4gY2xhc3M9XCJtLWJvZHktdHlwbyBtaWFtLXJlY2lwZS1zdGVwcGVyX19saW5rX19uYW1lXCI+TWEgcmVjZXR0ZTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtc3RlcHBlcl9fbGlua19fZGl2aWRlclwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1zdGVwcGVyX19saW5rXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBjdXJyZW50U3RlcCA9PT0gMSAgfVwiIChjbGljayk9XCJzY3Jvb2xUb0FuY2hvcigxKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLXN0ZXBwZXJfX2xpbmtfX251bWJlclwiID4yPC9kaXY+XG4gICAgICA8c3BhbiBpMThuIGNsYXNzPVwibS1ib2R5LXR5cG8gbWlhbS1yZWNpcGUtc3RlcHBlcl9fbGlua19fbmFtZSBcIj5EZXNjcmlwdGlvbjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtc3RlcHBlcl9fbGlua19fZGl2aWRlclwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1zdGVwcGVyX19saW5rXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBjdXJyZW50U3RlcCA9PT0gMiB9XCIgKGNsaWNrKT1cInNjcm9vbFRvQW5jaG9yKDIpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtc3RlcHBlcl9fbGlua19fbnVtYmVyXCIgPjM8L2Rpdj5cbiAgICAgIDxzcGFuIGkxOG4gY2xhc3M9XCJtLWJvZHktdHlwbyBtaWFtLXJlY2lwZS1zdGVwcGVyX19saW5rX19uYW1lIFwiPkluZ3LDqWRpZW50cyAmIMOJdGFwZXM8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtc3RlcHBlcl9fcGFkZGluZ1wiPjwvZGl2PlxuICA8bmctY29udGFpbmVyICpuZ0lmPSdyZWNpcGVGb3JtIGVsc2UgbG9hZGluZycgW2Zvcm1Hcm91cF09XCJyZWNpcGVGb3JtXCI+XG4gICAgPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwXT1cInJlY2lwZUZvcm0/LmdldCgnYXR0cmlidXRlcycpXCI+XG4gICAgICA8IS0tIEZJUlNUIFNFQ1RJT04gLS0+XG4gICAgICA8ZGl2ICNzdGVwIGNsYXNzPVwibWlhbS1yZWNpcGUtc3RlcHBlcl9fc2VjdGlvblwiPlxuICAgICAgICA8ZGl2IGkxOG4gY2xhc3M9XCJtaWFtLXJlY2lwZS1zdGVwcGVyX19tYW5kYXRvcnlcIj4qIGNoYW1wcyBvYmxpZ2F0b2lyZXM8L2Rpdj5cbiAgICAgICAgPCEtLSBUSVRMRSAtLT5cbiAgICAgICAgPG5nLW1pYW0tdGV4dC1pbnB1dCBjbGFzcz1cIm0tdGl0bGUtdGV4dC1pbnB1dFwiIG5nRGVmYXVsdENvbnRyb2xcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwicmVjaXBlRm9ybT8uZ2V0KCdhdHRyaWJ1dGVzJyk/LmdldCgndGl0bGUnKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3BsYWNlaG9sZGVyPlxuICAgICAgICAgICAgPHNwYW4gaTE4bj5UaXRyZSBkZSBsYSByZWNldHRlPC9zcGFuPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctbWlhbS10ZXh0LWlucHV0PlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJtaWFtLXJlY2lwZS1zdGVwcGVyX190eXBlX19sYWJlbFwiPlxuICAgICAgICAgIDxzcGFuIGkxOG4+TWEgcmVjZXR0ZSBlc3QuLi48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS1zdGVwcGVyX190eXBlX19sYWJlbF9fbWFuZGF0b3J5XCI+Kjwvc3Bhbj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPCEtLSBSRUNJUEUgVFlQRSAtLT5cbiAgICAgICAgPG5nLW1pYW0tcmVjaXBlLXR5cGUtY2hvb3NlciBuZ0RlZmF1bHRDb250cm9sIFtmb3JtQ29udHJvbF09XCJyZWNpcGVGb3JtPy5nZXQoJ3JlY2lwZS10eXBlJylcIiA+PC9uZy1taWFtLXJlY2lwZS10eXBlLWNob29zZXI+XG4gICAgICAgIDwhLS0gR1VFU1RTIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtc3RlcHBlcl9fc2VjdGlvbl9fZ3Vlc3RzIG0tZGVmYXVsdC1jYXJkXCI+XG4gICAgICAgICAgPHNwYW4gaTE4biBjbGFzcz1cIm1pYW0tcmVjaXBlLXN0ZXBwZXJfX2d1ZXN0c19fbGFiZWxcIj5Ob21icmUgZGUgY29udml2ZXM8L3NwYW4+XG4gICAgICAgICAgPG5nLW1pYW0tY291bnRlci1pbnB1dCBuZ0RlZmF1bHRDb250cm9sIGZvcm1Db250cm9sTmFtZT1cIm51bWJlci1vZi1ndWVzdHNcIlxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImNoYW5nZUd1ZXN0KCRldmVudClcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cInRoaXMucmVjaXBlRm9ybT8uZ2V0KCdhdHRyaWJ1dGVzJyk/LmdldCgnbnVtYmVyLW9mLWd1ZXN0cycpLnZhbHVlXCIgbWluUmFuZ2U9JzEnXG4gICAgICAgICAgICBtYXhSYW5nZT0nOTk5Jz5cbiAgICAgICAgICA8L25nLW1pYW0tY291bnRlci1pbnB1dD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gVEFHUyAtLT5cbiAgICAgICAgPGRpdiAqbmdJZj1cImRpc3BsYXlUYWdzXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1zdGVwcGVyX190YWdzXCI+XG4gICAgICAgICAgPHNwYW4gaTE4biBjbGFzcz1cIm1pYW0tcmVjaXBlLXN0ZXBwZXJfX3RhZ3NfX3RpdGxlXCI+VGFnczwvc3Bhbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtc3RlcHBlcl9fdGFnc19fcmVjYXBcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHRhZyBvZiByZWNpcGUucmVsYXRpb25zaGlwcy50YWdzPy5kYXRhXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1zdGVwcGVyX190YWdcIiAgW25nQ2xhc3NdPVwidGFnQ2xhc3ModGFnKVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1pYW0tcmVjaXBlLXN0ZXBwZXJfX3RhZ19fbmFtZVwiPnt7dGFnLmF0dHJpYnV0ZXMubmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICA8bmctbWlhbS1pY29uIGNsYXNzPVwibWlhbS1yZWNpcGUtc3RlcHBlcl9fdGFnX19pY29uXCIgKGNsaWNrKT1cInJlbW92ZVRhZyh0YWcpXCIgW2ljb25OYW1lXT1cImljb24uQ2xlYXJcIlxuICAgICAgICAgICAgICAgIHByaW1hcnlDb2xvcj1cInZhcigtLW0tY29sb3ItZ3JleTAxKVwiPlxuICAgICAgICAgICAgICA8L25nLW1pYW0taWNvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtLWJ1dHRvbi1zZWNvbmRhcnlcIiAoY2xpY2spPVwiZGlzcGxheVRhZ3NTZWxlY3Rvcih0cnVlKVwiPlxuICAgICAgICAgICAgPG5nLW1pYW0taWNvbiBwcmltYXJ5Q29sb3I9J3ZhcigtLW0tY29sb3Itb255eCknIFtpY29uTmFtZV09XCJpY29uLlBsdXNcIj48L25nLW1pYW0taWNvbj5cbiAgICAgICAgICAgIDxzcGFuIGkxOG4+QWpvdXRlcjwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwhLS0gU0VDT05EIFNFQ1RJT04gLS0+XG4gICAgICA8ZGl2ICAjc3RlcCBjbGFzcz1cIm1pYW0tcmVjaXBlLXN0ZXBwZXJfX3NlY3Rpb25cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLXN0ZXBwZXJfX3NlY3Rpb25fX3Jvd1wiPlxuICAgICAgICAgIDwhLS0gUElDVFVSRSAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtc3RlcHBlcl9fcGljdHVyZVwiPlxuICAgICAgICAgICAgPG5nLW1pYW0tZHJhZy1kcm9wLWlucHV0IG5nRGVmYXVsdENvbnRyb2xcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInJlY2lwZUZvcm0/LmdldCgnYXR0cmlidXRlcycpPy5nZXQoJ21lZGlhLXVybCcpXCJcbiAgICAgICAgICAgICAgW2ltYWdlVXJsXT1cInJlY2lwZUZvcm0/LmdldCgnYXR0cmlidXRlcycpPy5nZXQoJ21lZGlhLXVybCcpPy52YWx1ZVwiIFtwaG90b01vZGVdPSd0cnVlJ1xuICAgICAgICAgICAgICBbYmlnSW1hZ2VXYXJuaW5nXT1cImJpZ0ltYWdlV2FybmluZ1wiXG4gICAgICAgICAgICAgIChiaWdGaWxlRHJvcHBlZCk9XCJkaXNwbGF5QmlnRmlsZVdhcm5pbmcodHJ1ZSlcIiAoZmlsZURyb3BwZWQpPVwiZGlzcGxheUJpZ0ZpbGVXYXJuaW5nKGZhbHNlKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZWNpcGVGb3JtPy5nZXQoJ2F0dHJpYnV0ZXMnKT8uZ2V0KCdtZWRpYS11cmwnKT8udmFsdWU/Lmxlbmd0aCA+IDAgZWxzZSBmaWxlTW9kZVwiPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYnV0dG9uVGV4dD5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGkxOG4+TW9kaWZpZXIgbGEgcGhvdG8gKDJNQiBtYXgpPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2ZpbGVNb2RlPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYnV0dG9uVGV4dD5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGkxOG4+QWpvdXRlciB1bmUgcGhvdG8gKDJNQiBtYXgpPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L25nLW1pYW0tZHJhZy1kcm9wLWlucHV0PlxuICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwiaXNBZG1pblwiXG4gICAgICAgICAgICAgICAgICAgaTE4bi1wbGFjZWhvbGRlclxuICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiTCdpbWFnZSBuZSBkaXNwb3NlIGQnYXVjdW4gbGllblwiXG4gICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImlzTG9jYWxJbWFnZSA/ICcnIDogdGhpcy5yZWNpcGVGb3JtPy5nZXQoJ2F0dHJpYnV0ZXMnKT8uZ2V0KCdtZWRpYS11cmwnKS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgKGlucHV0KT1cInVwZGF0ZUltYWdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1pbnB1dFwiLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tIERFU0NSSVBUSU9OIC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1zdGVwcGVyX19yb3dfX2Rlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICA8aDEgY2xhc3M9XCJtLWgxLXR5cG9cIj57e3JlY2lwZUZvcm0/LmdldCgnYXR0cmlidXRlcycpPy5nZXQoJ3RpdGxlJyk/LnZhbHVlfX08L2gxPlxuICAgICAgICAgICAgPGxhYmVsIGkxOG4+RGVzY3JpcHRpb24gZGUgbWEgcmVjZXR0ZTwvbGFiZWw+XG4gICAgICAgICAgICA8dGV4dGFyZWEgY2RrVGV4dGFyZWFBdXRvc2l6ZSBjZGtBdXRvc2l6ZU1pblJvd3M9XCIyMFwiIGNka0F1dG9zaXplTWF4Um93cz1cIjUwXCIgY2xhc3M9XCJtLWlucHV0XCJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInJlY2lwZUZvcm0/LmdldCgnYXR0cmlidXRlcycpPy5nZXQoJ2Rlc2NyaXB0aW9uJylcIiBtYXhsZW5ndGg9XCIyNTBcIj48L3RleHRhcmVhPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtc3RlcHBlcl9fZGVzY3JpcHRpb25fX2NvdW50ZXJcIj57e3JlY2lwZUZvcm0/LmdldCgnYXR0cmlidXRlcycpPy5nZXQoJ2Rlc2NyaXB0aW9uJyk/LnZhbHVlPy5sZW5ndGggfHwgMH19IDxzcGFuPi8gMjUwPC9zcGFuPiA8L2Rpdj5cbiAgICAgICAgICAgIDwhLS0gPGxhYmVsPkxpZW4gdmlkw6lvIGRlIG1hIHJlY2V0dGUgKG9wdGlvbm5lbCkgOjwvbGFiZWw+XG4gICAgPG5nLW1pYW0tdGV4dC1pbnB1dCAgbmdEZWZhdWx0Q29udHJvbCAgcGxhY2Vob2xkZXI9XCJcIj48L25nLW1pYW0tdGV4dC1pbnB1dD4gLS0+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIFRJTUVTIC0tPlxuICAgICAgICA8ZGl2ICpuZ0lmPSdyZWNpcGVGb3JtJyBjbGFzcz1cIm1pYW0tcmVjaXBlLXN0ZXBwZXJfX3NlY3Rpb25fX3RpbWVzXCI+XG4gICAgICAgICAgPG5nLW1pYW0tdGltZS1waWNrZXIgbmdEZWZhdWx0Q29udHJvbFxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInJlY2lwZUZvcm0/LmdldCgnYXR0cmlidXRlcycpPy5nZXQoJ3ByZXBhcmF0aW9uLXRpbWUnKVwiIFtpY29uXT0naWNvbi5UaW1lJ1xuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGl0bGU+XG4gICAgICAgICAgICAgIDxzcGFuIGkxOG4+VGVtcHMgZGUgcHLDqXBhcmF0aW9uPC9zcGFuPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L25nLW1pYW0tdGltZS1waWNrZXI+XG4gICAgICAgICAgPG5nLW1pYW0tdGltZS1waWNrZXIgbmdEZWZhdWx0Q29udHJvbFxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInJlY2lwZUZvcm0/LmdldCgnYXR0cmlidXRlcycpPy5nZXQoJ2Nvb2tpbmctdGltZScpXCIgW2ljb25dPSdpY29uLkhvdCdcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3RpdGxlPlxuICAgICAgICAgICAgICA8c3BhbiBpMThuPlRlbXBzIGRlIGN1aXNzb248L3NwYW4+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctbWlhbS10aW1lLXBpY2tlcj5cbiAgICAgICAgICA8bmctbWlhbS10aW1lLXBpY2tlciBuZ0RlZmF1bHRDb250cm9sXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwicmVjaXBlRm9ybT8uZ2V0KCdhdHRyaWJ1dGVzJyk/LmdldCgncmVzdGluZy10aW1lJylcIiBbaWNvbl09J2ljb24uV2FpdCdcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3RpdGxlPlxuICAgICAgICAgICAgICA8c3BhbiBpMThuPlRlbXBzIGRlIHJlcG9zPC9zcGFuPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L25nLW1pYW0tdGltZS1waWNrZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIERJRkZJQ1VMVFkgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1zdGVwcGVyX19hdHRpYnV0ZXNfX3NsaWRlclwiPlxuICAgICAgICAgIDxsYWJlbCBpMThuPk5pdmVhdSBkZSBkaWZmaWN1bHTDqSBkZSBsYSByZWNldHRlPC9sYWJlbD5cbiAgICAgICAgICA8bmctbWlhbS1zbGlkZXIgbmdEZWZhdWx0Q29udHJvbCBbc3RlcHNdPVwiZGlmaWN1bHRpZXNcIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInJlY2lwZUZvcm0/LmdldCgnYXR0cmlidXRlcycpPy5nZXQoJ2RpZmZpY3VsdHknKVwiIFtpY29uc109XCJpY29uc0RpZmljdWx0aWVzXCI+XG4gICAgICAgICAgPC9uZy1taWFtLXNsaWRlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8IS0tIFRISVJEIFNFQ1RJT04gLS0+XG4gICAgPGRpdiAjc3RlcCAgY2xhc3M9XCJtaWFtLXJlY2lwZS1zdGVwcGVyX19zZWN0aW9uXCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwiaXNNb2JpbGVcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLXN0ZXBwZXJfX21vYmlsZV9fYnV0dG9uc1wiPlxuICAgICAgICA8YnV0dG9uIGkxOG4gY2xhc3M9XCJtLWJ1dHRvbi1zZWNvbmRhcnlcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZScgOiBzaG93SW5ncmVkaWVudH1cIiAoY2xpY2spPVwidG9nZ2xlU2hvd0luZ3JlZGllbnQodHJ1ZSlcIiA+SW5ncmVkaWVudHM8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBpMThuIGNsYXNzPVwibS1idXR0b24tc2Vjb25kYXJ5XCIgW25nQ2xhc3NdPVwieydhY3RpdmUnIDogIXNob3dJbmdyZWRpZW50fVwiIChjbGljayk9XCJ0b2dnbGVTaG93SW5ncmVkaWVudChmYWxzZSlcIj5QcsOpcGFyYXRpb248L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSBJTkdSRURJRU5UUyAtLT5cbiAgICAgIDxuZy1taWFtLWxpc3QtaW5wdXRcbiAgICAgICAgKm5nSWY9XCIhKGlzTW9iaWxlICYmICFzaG93SW5ncmVkaWVudClcIlxuICAgICAgICBuZ0RlZmF1bHRDb250cm9sXG4gICAgICAgIGZvcm1BcnJheU5hbWU9XCJpbmdyZWRpZW50c1wiXG4gICAgICAgIFtpc1BlcnNvbmFsXT1cInJlY2lwZS5yZWxhdGlvbnNoaXBzWydyZWNpcGUtcHJvdmlkZXInXT8uZGF0YT8uaWQgPT09ICdwZXJzb25hbCdcIlxuICAgICAgICBbbGlzdF09XCJyZWNpcGVGb3JtLmdldCgnaW5ncmVkaWVudHMnKVwiXG4gICAgICAgIFtpbmdyZWRpZW50TW9kZV09J3RydWUnXG4gICAgICAgIFtpbmdyZWRpZW50c1BpY3R1cmVzXT1cImluZ3JlZGllbnRzUGljdHVyZXNcIlxuICAgICAgICAoZGVsZXRlSWQpPVwiYWRkVG9EZWxldGVJbmdyZWRpZW50c0xpc3QoJGV2ZW50KVwiXG4gICAgICAgIChvcmRlckhhc0NoYW5nZWQpPSdjZHIuZGV0ZWN0Q2hhbmdlcygpJ1xuICAgICAgPlxuICAgICAgPC9uZy1taWFtLWxpc3QtaW5wdXQ+XG4gICAgICA8IS0tIFNURVBTIC0tPlxuICAgICAgPG5nLW1pYW0tbGlzdC1pbnB1dFxuICAgICAgICBuZ0RlZmF1bHRDb250cm9sXG4gICAgICAgICpuZ0lmPVwiIShpc01vYmlsZSAmJiBzaG93SW5ncmVkaWVudClcIlxuICAgICAgICBmb3JtQXJyYXlOYW1lPVwic3RlcHNcIlxuICAgICAgICAoZGVsZXRlSWQpPVwiYWRkVG9EZWxldGVTdGVwc0xpc3QoJGV2ZW50KVwiXG4gICAgICAgIChvcmRlckhhc0NoYW5nZWQpPSdjZHIuZGV0ZWN0Q2hhbmdlcygpJ1xuICAgICAgICBbbGlzdF09XCJyZWNpcGVGb3JtPy5nZXQoJ3N0ZXBzJylcIlxuICAgICAgPjwvbmctbWlhbS1saXN0LWlucHV0PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPCEtLSBMT0FERVIgLS0+XG4gIDxuZy10ZW1wbGF0ZSAjbG9hZGluZyA+XG4gICAgPG5nLW1pYW0tbG9hZGVyPjwvbmctbWlhbS1sb2FkZXI+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDwhLS0gRk9PVEVSIC0tPlxuICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtc3RlcHBlcl9fZm9vdGVyXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cIm0tYnV0dG9uLXNlY29uZGFyeVwiIChjbGljayk9J2NhbmNlbCgpJyBbZGlzYWJsZWRdPSdzZWNvbmRhcnlCdXR0b25EaXNhYmxlICYmIGNhbnRTdWJtaXQoKSc+XG4gICAgICB7eyBzZWNvbmRhcnlBY3Rpb25UZXh0IH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBjbGFzcz1cIm0tYnV0dG9uLXByaW1hcnlcIiAoY2xpY2spPSdzdWJtaXQoKScgW2Rpc2FibGVkXT0nY2FudFN1Ym1pdCgpJz5cbiAgICAgIHt7IHByaW1hcnlBY3Rpb25UZXh0IH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG48IS0tIFRBR1MgU0VMRUNUT1IgTU9EQUwgLS0+XG48bmctbWlhbS10YWdzLXNlbGVjdG9yXG4gICpuZ0lmPVwiZGlzcGxheVRhZ3MgJiYgcmVjaXBlXCJcbiAgW2Rpc3BsYXldPVwidGFnc1NlbGVjdG9yRGlzcGxheWVkXCJcbiAgW2N1cnJlbnRSZWNpcGVdPVwicmVjaXBlXCJcbiAgW2N1cnJlbnRUYWdzXT1cInJlY2lwZS5yZWxhdGlvbnNoaXBzLnRhZ3M/LmRhdGFcIlxuICAoY2xvc2UpPVwiZGlzcGxheVRhZ3NTZWxlY3RvcihmYWxzZSlcIlxuICAoc2F2ZWRUYWdzKT1cImFkZFRhZ3MoJGV2ZW50KVwiPlxuPC9uZy1taWFtLXRhZ3Mtc2VsZWN0b3I+XG48IS0tIFBJQ1RVUkUgRVJST1IgTU9EQUwgLS0+XG48bmctbWlhbS1tb2RhbFxuICAqbmdJZj1cImJpZ0ltYWdlV2FybmluZ1wiXG4gIFtub0hlYWRlck1vZGVdPVwiZmFsc2VcIlxuICBbZGlzcGxheV09XCJ0cnVlXCJcbiAgaTE4bi10aXRsZVxuICB0aXRsZT1cIkltYWdlIHRyb3Agdm9sdW1pbmV1c2VcIlxuICBpMThuLWNvbmZpcm1CdXR0b25UZXh0XG4gIGNvbmZpcm1CdXR0b25UZXh0PVwiRmVybWVyXCJcbiAgbW9kYWxTdHlsZT1cInJpZ2h0XCJcbiAgKGNsb3NlKT1cImRpc3BsYXlCaWdGaWxlV2FybmluZyhmYWxzZSlcIlxuICAoY29uZmlybSk9XCJkaXNwbGF5QmlnRmlsZVdhcm5pbmcoZmFsc2UpXCJcbj5cbiAgPHNwYW4gaTE4biBjbGFzcz1cIm1pYW0tcmVjaXBlLXN0ZXBwZXJfX3BpY3R1cmVfX3dhcm5pbmdcIj5Wb3RyZSBpbWFnZSBlc3QgdHJvcCBsb3VyZGUgKGxhIHRhaWxsZSBkb2l0IMOqdHJlIGluZsOpcmlldXJlIMOgIDIgTW8pLiBNZXJjaSBk4oCZZW4gYWpvdXRlciB1bmUgcGx1cyBsw6lnw6hyZS48L3NwYW4+XG48L25nLW1pYW0tbW9kYWw+XG4iXX0=