@recursyve/nice-ui-kit.v2 15.0.0-beta.130 → 16.0.0-beta.132

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 (390) hide show
  1. package/esm2022/lib/animations/defaults.mjs +32 -0
  2. package/{esm2020 → esm2022}/lib/api/interceptors/transform-response.interceptor.mjs +4 -4
  3. package/{esm2020 → esm2022}/lib/components/alert/alert.component.mjs +4 -4
  4. package/{esm2020 → esm2022}/lib/components/alert/alert.module.mjs +9 -9
  5. package/{esm2020 → esm2022}/lib/components/alert/alert.service.mjs +4 -4
  6. package/esm2022/lib/components/assets-carousel/assets-carousel.component.mjs +283 -0
  7. package/{esm2020 → esm2022}/lib/components/assets-carousel/assets-carousel.module.mjs +19 -19
  8. package/{esm2020 → esm2022}/lib/components/assets-carousel/directives/assets-carousel-active-content.directive.mjs +4 -4
  9. package/esm2022/lib/components/async-typeahead/async-typeahead.component.mjs +451 -0
  10. package/{esm2020 → esm2022}/lib/components/async-typeahead/async-typeahead.module.mjs +21 -21
  11. package/esm2022/lib/components/async-typeahead/providers/async-typeahead.service.mjs +219 -0
  12. package/{esm2020 → esm2022}/lib/components/base-form/base-form.component.mjs +4 -4
  13. package/{esm2020 → esm2022}/lib/components/base-form/base-form.module.mjs +5 -5
  14. package/{esm2020 → esm2022}/lib/components/base-form/form-submit.directive.mjs +4 -4
  15. package/{esm2020 → esm2022}/lib/components/card/card.component.mjs +4 -4
  16. package/{esm2020 → esm2022}/lib/components/card/card.module.mjs +5 -5
  17. package/{esm2020 → esm2022}/lib/components/carousel/carousel.component.mjs +4 -4
  18. package/esm2022/lib/components/carousel/carousel.module.mjs +40 -0
  19. package/{esm2020 → esm2022}/lib/components/carousel/picture-modal/picture-modal.component.mjs +4 -4
  20. package/{esm2020 → esm2022}/lib/components/carousel/picture-modal/picture-modal.service.mjs +4 -4
  21. package/{esm2020 → esm2022}/lib/components/carousel/pipe/carousel-layout.pipe.mjs +4 -4
  22. package/{esm2020 → esm2022}/lib/components/collapsable/collapsable.component.mjs +4 -4
  23. package/{esm2020 → esm2022}/lib/components/collapsable/collapsable.module.mjs +7 -7
  24. package/{esm2020 → esm2022}/lib/components/date-range-picker/components/header/header.component.mjs +4 -4
  25. package/{esm2020 → esm2022}/lib/components/date-range-picker/components/range-preset/range-preset.component.mjs +4 -4
  26. package/esm2022/lib/components/date-range-picker/date-range-picker.component.mjs +95 -0
  27. package/{esm2020 → esm2022}/lib/components/date-range-picker/date-range-picker.module.mjs +21 -21
  28. package/{esm2020 → esm2022}/lib/components/date-range-picker/providers/date-range-picker.service.mjs +4 -4
  29. package/{esm2020 → esm2022}/lib/components/drawer/drawer.component.mjs +4 -4
  30. package/{esm2020 → esm2022}/lib/components/drawer/drawer.module.mjs +7 -7
  31. package/{esm2020 → esm2022}/lib/components/drawer/drawer.service.mjs +4 -4
  32. package/{esm2020 → esm2022}/lib/components/export-bottom-sheet/export-bottom-sheet.component.mjs +4 -4
  33. package/esm2022/lib/components/export-bottom-sheet/export-bottom-sheet.module.mjs +45 -0
  34. package/{esm2020 → esm2022}/lib/components/export-bottom-sheet/providers/export-bottom-sheet.service.mjs +7 -7
  35. package/esm2022/lib/components/form-error/control-status.directive.mjs +123 -0
  36. package/esm2022/lib/components/form-error/form-error.component.mjs +53 -0
  37. package/{esm2020 → esm2022}/lib/components/form-error/form-error.module.mjs +5 -5
  38. package/esm2022/lib/components/horizontal-stepper/horizontal-stepper.component.mjs +34 -0
  39. package/{esm2020 → esm2022}/lib/components/horizontal-stepper/horizontal-stepper.module.mjs +9 -9
  40. package/{esm2020 → esm2022}/lib/components/horizontal-stepper/step.component.mjs +6 -6
  41. package/esm2022/lib/components/image-cropper/image-cropper.component.mjs +1269 -0
  42. package/{esm2020 → esm2022}/lib/components/image-cropper/image-cropper.module.mjs +5 -5
  43. package/{esm2020 → esm2022}/lib/components/layout/layout.component.mjs +4 -4
  44. package/{esm2020 → esm2022}/lib/components/layout/layout.module.mjs +5 -5
  45. package/{esm2020 → esm2022}/lib/components/loading-spinner/loading-spinner.component.mjs +4 -4
  46. package/{esm2020 → esm2022}/lib/components/loading-spinner/loading-spinner.module.mjs +9 -9
  47. package/{esm2020 → esm2022}/lib/components/loading-spinner/loading.directive.mjs +4 -4
  48. package/{esm2020 → esm2022}/lib/components/loading-toast/loading-toast.component.mjs +4 -4
  49. package/{esm2020 → esm2022}/lib/components/loading-toast/loading-toast.directive.mjs +4 -4
  50. package/{esm2020 → esm2022}/lib/components/loading-toast/loading-toast.module.mjs +5 -5
  51. package/{esm2020 → esm2022}/lib/components/loading-toast/loading-toast.service.mjs +4 -4
  52. package/{esm2020 → esm2022}/lib/components/lottie/lottie.component.mjs +4 -4
  53. package/{esm2020 → esm2022}/lib/components/lottie/lottie.module.mjs +5 -5
  54. package/{esm2020 → esm2022}/lib/components/navigation/components/hint-component-base.mjs +4 -4
  55. package/{esm2020 → esm2022}/lib/components/navigation/directives/show-hint.directive.mjs +4 -4
  56. package/{esm2020 → esm2022}/lib/components/navigation/horizontal/components/basic/basic.component.mjs +4 -4
  57. package/{esm2020 → esm2022}/lib/components/navigation/horizontal/components/branch/branch.component.mjs +4 -4
  58. package/{esm2020 → esm2022}/lib/components/navigation/horizontal/components/divider/divider.component.mjs +4 -4
  59. package/{esm2020 → esm2022}/lib/components/navigation/horizontal/components/spacer/spacer.component.mjs +4 -4
  60. package/{esm2020 → esm2022}/lib/components/navigation/horizontal/horizontal.component.mjs +4 -4
  61. package/{esm2020 → esm2022}/lib/components/navigation/navigation.component.mjs +4 -4
  62. package/{esm2020 → esm2022}/lib/components/navigation/navigation.module.mjs +37 -37
  63. package/{esm2020 → esm2022}/lib/components/navigation/navigation.service.mjs +4 -4
  64. package/{esm2020 → esm2022}/lib/components/navigation/pipes/should-hide.pipe.mjs +4 -4
  65. package/{esm2020 → esm2022}/lib/components/navigation/pipes/should-show-hint.pipe.mjs +4 -4
  66. package/{esm2020 → esm2022}/lib/components/navigation/providers/hint.service.mjs +4 -4
  67. package/{esm2020 → esm2022}/lib/components/navigation/vertical/components/aside/aside.component.mjs +4 -4
  68. package/{esm2020 → esm2022}/lib/components/navigation/vertical/components/basic/basic.component.mjs +4 -4
  69. package/{esm2020 → esm2022}/lib/components/navigation/vertical/components/collapsable/collapsable.component.mjs +4 -4
  70. package/{esm2020 → esm2022}/lib/components/navigation/vertical/components/divider/divider.component.mjs +4 -4
  71. package/{esm2020 → esm2022}/lib/components/navigation/vertical/components/group/group.component.mjs +4 -4
  72. package/{esm2020 → esm2022}/lib/components/navigation/vertical/components/spacer/spacer.component.mjs +4 -4
  73. package/{esm2020 → esm2022}/lib/components/navigation/vertical/vertical.component.mjs +4 -4
  74. package/esm2022/lib/components/search-bar/search-bar.component.mjs +76 -0
  75. package/{esm2020 → esm2022}/lib/components/search-bar/search-bar.module.mjs +13 -13
  76. package/{esm2020 → esm2022}/lib/components/sweet-alert/sweet-alert.component.mjs +4 -4
  77. package/{esm2020 → esm2022}/lib/components/sweet-alert/sweet-alert.directive.mjs +4 -4
  78. package/{esm2020 → esm2022}/lib/components/sweet-alert/sweet-alert.module.mjs +5 -5
  79. package/{esm2020 → esm2022}/lib/components/sweet-alert/sweet-alert.service.mjs +4 -4
  80. package/{esm2020 → esm2022}/lib/components/toast/toast.component.mjs +4 -4
  81. package/{esm2020 → esm2022}/lib/components/toast/toast.module.mjs +5 -5
  82. package/{esm2020 → esm2022}/lib/components/toast/toast.service.mjs +4 -4
  83. package/esm2022/lib/components/toggle-button-group/toggle-button-group.component.mjs +134 -0
  84. package/{esm2020 → esm2022}/lib/components/toggle-button-group/toggle-button-group.module.mjs +7 -7
  85. package/{esm2020 → esm2022}/lib/components/toggle-button-group/toggle-button.component.mjs +4 -4
  86. package/esm2022/lib/components/translation-form/components/textarea/translation-form-textarea.component.mjs +38 -0
  87. package/esm2022/lib/components/translation-form/components/textfield/translation-form-textfield.component.mjs +26 -0
  88. package/esm2022/lib/components/translation-form/components/translation-form.component.mjs +170 -0
  89. package/{esm2020 → esm2022}/lib/components/translation-form/components/translation-form.module.mjs +19 -19
  90. package/{esm2020 → esm2022}/lib/components/translation-form/directives/translation-context.directive.mjs +4 -4
  91. package/{esm2020 → esm2022}/lib/components/translation-form/providers/nice-translation-form.service.mjs +4 -4
  92. package/{esm2020 → esm2022}/lib/components/translation-form/toggle/translation-toggle.component.mjs +4 -4
  93. package/{esm2020 → esm2022}/lib/components/translation-form/validators/require-for-languages.validator.mjs +4 -4
  94. package/{esm2020 → esm2022}/lib/components/typeahead/directives/options-scroll.directive.mjs +4 -4
  95. package/{esm2020 → esm2022}/lib/components/typeahead/directives/options-scroll.module.mjs +5 -5
  96. package/{esm2020 → esm2022}/lib/components/typeahead/typeahead.component.mjs +9 -9
  97. package/{esm2020 → esm2022}/lib/components/typeahead/typeahead.module.mjs +25 -25
  98. package/{esm2020 → esm2022}/lib/directives/autofocus/autofocus.directive.mjs +4 -4
  99. package/{esm2020 → esm2022}/lib/directives/autofocus/autofocus.module.mjs +5 -5
  100. package/{esm2020 → esm2022}/lib/directives/autogrow/autogrow.directive.mjs +4 -4
  101. package/{esm2020 → esm2022}/lib/directives/autogrow/autogrow.module.mjs +5 -5
  102. package/{esm2020 → esm2022}/lib/directives/chip-async-typeahead/chip-async-typeahead.directive.mjs +4 -4
  103. package/{esm2020 → esm2022}/lib/directives/chip-list/chip-list-items/chip-list-item-label.directive.mjs +4 -4
  104. package/{esm2020 → esm2022}/lib/directives/chip-list/chip-list-items/chip-list-items.component.mjs +4 -4
  105. package/{esm2020 → esm2022}/lib/directives/chip-list/chip-list.directive.mjs +4 -4
  106. package/{esm2020 → esm2022}/lib/directives/chip-list/chip-list.module.mjs +5 -5
  107. package/{esm2020 → esm2022}/lib/directives/draggable-list/draggable-list.directive.mjs +4 -4
  108. package/{esm2020 → esm2022}/lib/directives/draggable-list/draggable-list.module.mjs +5 -5
  109. package/{esm2020 → esm2022}/lib/directives/dropzone/dropzone.directive.mjs +4 -4
  110. package/{esm2020 → esm2022}/lib/directives/dropzone/dropzone.module.mjs +5 -5
  111. package/{esm2020 → esm2022}/lib/directives/image-error-placeholder/image-error-placeholder.directive.mjs +4 -4
  112. package/{esm2020 → esm2022}/lib/directives/image-error-placeholder/image-error-placeholder.module.mjs +5 -5
  113. package/{esm2020 → esm2022}/lib/directives/material/material.module.mjs +7 -7
  114. package/{esm2020 → esm2022}/lib/directives/material/nice-material-style.directive.mjs +4 -4
  115. package/{esm2020 → esm2022}/lib/directives/material/nice-rounded-style.directive.mjs +4 -4
  116. package/{esm2020 → esm2022}/lib/directives/modals/modal-on-click.directive.mjs +4 -4
  117. package/{esm2020 → esm2022}/lib/directives/modals/modal-opener.directive.mjs +4 -4
  118. package/{esm2020 → esm2022}/lib/directives/rerender/rerender.directive.mjs +4 -4
  119. package/{esm2020 → esm2022}/lib/directives/resolve/resolve.directive.mjs +4 -4
  120. package/{esm2020 → esm2022}/lib/directives/scroll-reset/scroll-reset.directive.mjs +4 -4
  121. package/{esm2020 → esm2022}/lib/directives/scroll-reset/scroll-reset.module.mjs +5 -5
  122. package/{esm2020 → esm2022}/lib/directives/scrollbar/scrollbar.directive.mjs +4 -4
  123. package/{esm2020 → esm2022}/lib/directives/scrollbar/scrollbar.module.mjs +5 -5
  124. package/{esm2020 → esm2022}/lib/directives/stop-propagation/click-stop-propagation.directive.mjs +4 -4
  125. package/{esm2020 → esm2022}/lib/directives/stop-propagation/stop-propagation.module.mjs +5 -5
  126. package/{esm2020 → esm2022}/lib/directives/window/prevent-close-window.directive.mjs +4 -4
  127. package/{esm2020 → esm2022}/lib/directives/window/window-directive.module.mjs +5 -5
  128. package/esm2022/lib/nice.module.mjs +124 -0
  129. package/{esm2020 → esm2022}/lib/pipes/boolean.pipe.mjs +4 -4
  130. package/{esm2020 → esm2022}/lib/pipes/capitalize-first-letter.pipe.mjs +4 -4
  131. package/{esm2020 → esm2022}/lib/pipes/ceil.pipe.mjs +4 -4
  132. package/{esm2020 → esm2022}/lib/pipes/entries.pipe.mjs +4 -4
  133. package/{esm2020 → esm2022}/lib/pipes/find-by-key.pipe.mjs +4 -4
  134. package/{esm2020 → esm2022}/lib/pipes/first-letter.pipe.mjs +4 -4
  135. package/{esm2020 → esm2022}/lib/pipes/floor.pipe.mjs +4 -4
  136. package/{esm2020 → esm2022}/lib/pipes/join-if-defined.pipe.mjs +4 -4
  137. package/{esm2020 → esm2022}/lib/pipes/link.pipe.mjs +4 -4
  138. package/{esm2020 → esm2022}/lib/pipes/localized-boolean.pipe.mjs +4 -4
  139. package/{esm2020 → esm2022}/lib/pipes/localized-currency.pipe.mjs +4 -4
  140. package/{esm2020 → esm2022}/lib/pipes/localized-date-only.pipe.mjs +4 -4
  141. package/{esm2020 → esm2022}/lib/pipes/localized-date.pipe.mjs +4 -4
  142. package/{esm2020 → esm2022}/lib/pipes/minutes-to-time.pipe.mjs +4 -4
  143. package/{esm2020 → esm2022}/lib/pipes/number-to-ordinal-indicator.pipe.mjs +4 -4
  144. package/{esm2020 → esm2022}/lib/pipes/pad.pipe.mjs +4 -4
  145. package/{esm2020 → esm2022}/lib/pipes/phone.pipe.mjs +4 -4
  146. package/{esm2020 → esm2022}/lib/pipes/pipes.module.mjs +72 -72
  147. package/{esm2020 → esm2022}/lib/pipes/postal-code.pipe.mjs +4 -4
  148. package/{esm2020 → esm2022}/lib/pipes/range.pipe.mjs +4 -4
  149. package/{esm2020 → esm2022}/lib/pipes/round.pipe.mjs +4 -4
  150. package/{esm2020 → esm2022}/lib/pipes/sanitize-bypass.pipe.mjs +4 -4
  151. package/{esm2020 → esm2022}/lib/pipes/seconds-to-time.pipe.mjs +4 -4
  152. package/{esm2020 → esm2022}/lib/pipes/track-by-prop.pipe.mjs +4 -4
  153. package/{esm2020 → esm2022}/lib/providers/config/config.module.mjs +5 -5
  154. package/{esm2020 → esm2022}/lib/providers/config/config.service.mjs +4 -4
  155. package/{esm2020 → esm2022}/lib/providers/media-watcher/media-watcher.module.mjs +7 -7
  156. package/{esm2020 → esm2022}/lib/providers/media-watcher/media-watcher.service.mjs +4 -4
  157. package/{esm2020 → esm2022}/lib/providers/overlay/dynamic-overlay-container.service.mjs +4 -4
  158. package/{esm2020 → esm2022}/lib/providers/overlay/dynamic-overlay.service.mjs +4 -4
  159. package/{esm2020 → esm2022}/lib/providers/splash-screen/splash-screen.module.mjs +7 -7
  160. package/{esm2020 → esm2022}/lib/providers/splash-screen/splash-screen.service.mjs +4 -4
  161. package/{esm2020 → esm2022}/lib/providers/utils/utils.module.mjs +5 -5
  162. package/{esm2020 → esm2022}/lib/providers/utils/utils.service.mjs +4 -4
  163. package/esm2022/lib/utils/regex.utils.mjs +11 -0
  164. package/{fesm2020 → fesm2022}/recursyve-nice-ui-kit.v2.mjs +954 -917
  165. package/fesm2022/recursyve-nice-ui-kit.v2.mjs.map +1 -0
  166. package/lib/components/alert/alert.component.d.ts +1 -1
  167. package/lib/components/assets-carousel/assets-carousel.component.d.ts +1 -1
  168. package/lib/components/async-typeahead/async-typeahead.component.d.ts +5 -3
  169. package/lib/components/async-typeahead/providers/async-typeahead.service.d.ts +8 -5
  170. package/lib/components/base-form/base-form.component.d.ts +1 -1
  171. package/lib/components/base-form/form-submit.directive.d.ts +1 -1
  172. package/lib/components/card/card.component.d.ts +1 -1
  173. package/lib/components/carousel/carousel.component.d.ts +1 -1
  174. package/lib/components/collapsable/collapsable.component.d.ts +1 -1
  175. package/lib/components/date-range-picker/date-range-picker.component.d.ts +1 -1
  176. package/lib/components/drawer/drawer.component.d.ts +1 -1
  177. package/lib/components/form-error/form-error.component.d.ts +1 -1
  178. package/lib/components/image-cropper/image-cropper.component.d.ts +2 -2
  179. package/lib/components/loading-spinner/loading-spinner.component.d.ts +1 -1
  180. package/lib/components/loading-spinner/loading.directive.d.ts +1 -1
  181. package/lib/components/loading-toast/loading-toast.component.d.ts +1 -1
  182. package/lib/components/loading-toast/loading-toast.directive.d.ts +1 -1
  183. package/lib/components/lottie/lottie.component.d.ts +1 -1
  184. package/lib/components/navigation/directives/show-hint.directive.d.ts +1 -1
  185. package/lib/components/navigation/horizontal/components/basic/basic.component.d.ts +1 -1
  186. package/lib/components/navigation/horizontal/components/branch/branch.component.d.ts +1 -1
  187. package/lib/components/navigation/horizontal/components/divider/divider.component.d.ts +1 -1
  188. package/lib/components/navigation/horizontal/components/spacer/spacer.component.d.ts +1 -1
  189. package/lib/components/navigation/horizontal/horizontal.component.d.ts +1 -1
  190. package/lib/components/navigation/vertical/components/aside/aside.component.d.ts +1 -1
  191. package/lib/components/navigation/vertical/components/basic/basic.component.d.ts +1 -1
  192. package/lib/components/navigation/vertical/components/collapsable/collapsable.component.d.ts +1 -1
  193. package/lib/components/navigation/vertical/components/divider/divider.component.d.ts +1 -1
  194. package/lib/components/navigation/vertical/components/group/group.component.d.ts +1 -1
  195. package/lib/components/navigation/vertical/components/spacer/spacer.component.d.ts +1 -1
  196. package/lib/components/navigation/vertical/vertical.component.d.ts +1 -1
  197. package/lib/components/search-bar/search-bar.component.d.ts +1 -1
  198. package/lib/components/sweet-alert/sweet-alert.directive.d.ts +1 -1
  199. package/lib/components/toggle-button-group/toggle-button-group.component.d.ts +1 -1
  200. package/lib/components/toggle-button-group/toggle-button.component.d.ts +1 -1
  201. package/lib/components/translation-form/components/textarea/translation-form-textarea.component.d.ts +1 -1
  202. package/lib/components/translation-form/components/translation-form.component.d.ts +2 -1
  203. package/lib/components/typeahead/directives/options-scroll.directive.d.ts +1 -1
  204. package/lib/components/typeahead/typeahead.component.d.ts +1 -1
  205. package/lib/directives/autogrow/autogrow.directive.d.ts +1 -1
  206. package/lib/directives/chip-list/chip-list-items/chip-list-items.component.d.ts +1 -1
  207. package/lib/directives/chip-list/chip-list.directive.d.ts +1 -1
  208. package/lib/directives/draggable-list/draggable-list.directive.d.ts +1 -1
  209. package/lib/directives/image-error-placeholder/image-error-placeholder.directive.d.ts +1 -1
  210. package/lib/directives/modals/modal-opener.directive.d.ts +1 -1
  211. package/lib/directives/rerender/rerender.directive.d.ts +1 -1
  212. package/lib/directives/resolve/resolve.directive.d.ts +1 -1
  213. package/lib/directives/scrollbar/scrollbar.directive.d.ts +1 -1
  214. package/package.json +13 -19
  215. package/esm2020/lib/animations/defaults.mjs +0 -32
  216. package/esm2020/lib/components/assets-carousel/assets-carousel.component.mjs +0 -283
  217. package/esm2020/lib/components/async-typeahead/async-typeahead.component.mjs +0 -440
  218. package/esm2020/lib/components/async-typeahead/providers/async-typeahead.service.mjs +0 -209
  219. package/esm2020/lib/components/carousel/carousel.module.mjs +0 -41
  220. package/esm2020/lib/components/date-range-picker/date-range-picker.component.mjs +0 -95
  221. package/esm2020/lib/components/export-bottom-sheet/export-bottom-sheet.module.mjs +0 -45
  222. package/esm2020/lib/components/form-error/control-status.directive.mjs +0 -111
  223. package/esm2020/lib/components/form-error/form-error.component.mjs +0 -53
  224. package/esm2020/lib/components/horizontal-stepper/horizontal-stepper.component.mjs +0 -34
  225. package/esm2020/lib/components/image-cropper/image-cropper.component.mjs +0 -1269
  226. package/esm2020/lib/components/search-bar/search-bar.component.mjs +0 -76
  227. package/esm2020/lib/components/toggle-button-group/toggle-button-group.component.mjs +0 -134
  228. package/esm2020/lib/components/translation-form/components/textarea/translation-form-textarea.component.mjs +0 -38
  229. package/esm2020/lib/components/translation-form/components/textfield/translation-form-textfield.component.mjs +0 -26
  230. package/esm2020/lib/components/translation-form/components/translation-form.component.mjs +0 -165
  231. package/esm2020/lib/nice.module.mjs +0 -124
  232. package/esm2020/lib/utils/regex.utils.mjs +0 -11
  233. package/fesm2015/recursyve-nice-ui-kit.v2.mjs +0 -11831
  234. package/fesm2015/recursyve-nice-ui-kit.v2.mjs.map +0 -1
  235. package/fesm2020/recursyve-nice-ui-kit.v2.mjs.map +0 -1
  236. /package/{esm2020 → esm2022}/lib/animations/expand-collapse.mjs +0 -0
  237. /package/{esm2020 → esm2022}/lib/animations/fade.mjs +0 -0
  238. /package/{esm2020 → esm2022}/lib/animations/index.mjs +0 -0
  239. /package/{esm2020 → esm2022}/lib/animations/public-api.mjs +0 -0
  240. /package/{esm2020 → esm2022}/lib/animations/shake.mjs +0 -0
  241. /package/{esm2020 → esm2022}/lib/animations/slide.mjs +0 -0
  242. /package/{esm2020 → esm2022}/lib/animations/zoom.mjs +0 -0
  243. /package/{esm2020 → esm2022}/lib/api/exceptions/api.exception.mjs +0 -0
  244. /package/{esm2020 → esm2022}/lib/api/exceptions/exception.factory.mjs +0 -0
  245. /package/{esm2020 → esm2022}/lib/api/index.mjs +0 -0
  246. /package/{esm2020 → esm2022}/lib/api/nice.api.mjs +0 -0
  247. /package/{esm2020 → esm2022}/lib/api/public-api.mjs +0 -0
  248. /package/{esm2020 → esm2022}/lib/components/alert/alert.types.mjs +0 -0
  249. /package/{esm2020 → esm2022}/lib/components/alert/index.mjs +0 -0
  250. /package/{esm2020 → esm2022}/lib/components/alert/public-api.mjs +0 -0
  251. /package/{esm2020 → esm2022}/lib/components/assets-carousel/assets-carousel.constant.mjs +0 -0
  252. /package/{esm2020 → esm2022}/lib/components/assets-carousel/index.mjs +0 -0
  253. /package/{esm2020 → esm2022}/lib/components/assets-carousel/public-api.mjs +0 -0
  254. /package/{esm2020 → esm2022}/lib/components/async-typeahead/async-typeahead.constant.mjs +0 -0
  255. /package/{esm2020 → esm2022}/lib/components/async-typeahead/index.mjs +0 -0
  256. /package/{esm2020 → esm2022}/lib/components/async-typeahead/providers/async-typeahead.provider.mjs +0 -0
  257. /package/{esm2020 → esm2022}/lib/components/async-typeahead/public-api.mjs +0 -0
  258. /package/{esm2020 → esm2022}/lib/components/base-form/index.mjs +0 -0
  259. /package/{esm2020 → esm2022}/lib/components/base-form/nice-base.form.mjs +0 -0
  260. /package/{esm2020 → esm2022}/lib/components/base-form/public-api.mjs +0 -0
  261. /package/{esm2020 → esm2022}/lib/components/card/card.types.mjs +0 -0
  262. /package/{esm2020 → esm2022}/lib/components/card/index.mjs +0 -0
  263. /package/{esm2020 → esm2022}/lib/components/card/public-api.mjs +0 -0
  264. /package/{esm2020 → esm2022}/lib/components/carousel/index.mjs +0 -0
  265. /package/{esm2020 → esm2022}/lib/components/carousel/picture-modal/index.mjs +0 -0
  266. /package/{esm2020 → esm2022}/lib/components/carousel/picture-modal/public-api.mjs +0 -0
  267. /package/{esm2020 → esm2022}/lib/components/carousel/public-api.mjs +0 -0
  268. /package/{esm2020 → esm2022}/lib/components/collapsable/index.mjs +0 -0
  269. /package/{esm2020 → esm2022}/lib/components/collapsable/public-api.mjs +0 -0
  270. /package/{esm2020 → esm2022}/lib/components/date-range-picker/index.mjs +0 -0
  271. /package/{esm2020 → esm2022}/lib/components/date-range-picker/public-api.mjs +0 -0
  272. /package/{esm2020 → esm2022}/lib/components/drawer/drawer.types.mjs +0 -0
  273. /package/{esm2020 → esm2022}/lib/components/drawer/index.mjs +0 -0
  274. /package/{esm2020 → esm2022}/lib/components/drawer/public-api.mjs +0 -0
  275. /package/{esm2020 → esm2022}/lib/components/export-bottom-sheet/index.mjs +0 -0
  276. /package/{esm2020 → esm2022}/lib/components/export-bottom-sheet/models/export-strategy.model.mjs +0 -0
  277. /package/{esm2020 → esm2022}/lib/components/export-bottom-sheet/public-api.mjs +0 -0
  278. /package/{esm2020 → esm2022}/lib/components/form-error/index.mjs +0 -0
  279. /package/{esm2020 → esm2022}/lib/components/form-error/public-api.mjs +0 -0
  280. /package/{esm2020 → esm2022}/lib/components/horizontal-stepper/index.mjs +0 -0
  281. /package/{esm2020 → esm2022}/lib/components/horizontal-stepper/public-api.mjs +0 -0
  282. /package/{esm2020 → esm2022}/lib/components/image-cropper/index.mjs +0 -0
  283. /package/{esm2020 → esm2022}/lib/components/image-cropper/public-api.mjs +0 -0
  284. /package/{esm2020 → esm2022}/lib/components/image-cropper/resize-canvas.mjs +0 -0
  285. /package/{esm2020 → esm2022}/lib/components/index.mjs +0 -0
  286. /package/{esm2020 → esm2022}/lib/components/layout/index.mjs +0 -0
  287. /package/{esm2020 → esm2022}/lib/components/layout/public-api.mjs +0 -0
  288. /package/{esm2020 → esm2022}/lib/components/loading-spinner/index.mjs +0 -0
  289. /package/{esm2020 → esm2022}/lib/components/loading-spinner/loading.constant.mjs +0 -0
  290. /package/{esm2020 → esm2022}/lib/components/loading-spinner/public-api.mjs +0 -0
  291. /package/{esm2020 → esm2022}/lib/components/loading-toast/index.mjs +0 -0
  292. /package/{esm2020 → esm2022}/lib/components/loading-toast/loading-toast.constant.mjs +0 -0
  293. /package/{esm2020 → esm2022}/lib/components/loading-toast/public-api.mjs +0 -0
  294. /package/{esm2020 → esm2022}/lib/components/loading-toast/rxjs/show-loading-toast.operator.mjs +0 -0
  295. /package/{esm2020 → esm2022}/lib/components/lottie/index.mjs +0 -0
  296. /package/{esm2020 → esm2022}/lib/components/lottie/public-api.mjs +0 -0
  297. /package/{esm2020 → esm2022}/lib/components/navigation/index.mjs +0 -0
  298. /package/{esm2020 → esm2022}/lib/components/navigation/navigation.types.mjs +0 -0
  299. /package/{esm2020 → esm2022}/lib/components/navigation/providers/hide-item.resolver.mjs +0 -0
  300. /package/{esm2020 → esm2022}/lib/components/navigation/providers/hint.resolver.mjs +0 -0
  301. /package/{esm2020 → esm2022}/lib/components/navigation/public-api.mjs +0 -0
  302. /package/{esm2020 → esm2022}/lib/components/public-api.mjs +0 -0
  303. /package/{esm2020 → esm2022}/lib/components/search-bar/index.mjs +0 -0
  304. /package/{esm2020 → esm2022}/lib/components/search-bar/public-api.mjs +0 -0
  305. /package/{esm2020 → esm2022}/lib/components/sweet-alert/index.mjs +0 -0
  306. /package/{esm2020 → esm2022}/lib/components/sweet-alert/public-api.mjs +0 -0
  307. /package/{esm2020 → esm2022}/lib/components/sweet-alert/sweet-alert.constant.mjs +0 -0
  308. /package/{esm2020 → esm2022}/lib/components/toast/index.mjs +0 -0
  309. /package/{esm2020 → esm2022}/lib/components/toast/public-api.mjs +0 -0
  310. /package/{esm2020 → esm2022}/lib/components/toast/rxjs/show-success-or-error-toast.operator.mjs +0 -0
  311. /package/{esm2020 → esm2022}/lib/components/toast/rxjs/show-toast.operator.mjs +0 -0
  312. /package/{esm2020 → esm2022}/lib/components/toast/toast.constant.mjs +0 -0
  313. /package/{esm2020 → esm2022}/lib/components/toggle-button-group/index.mjs +0 -0
  314. /package/{esm2020 → esm2022}/lib/components/toggle-button-group/public-api.mjs +0 -0
  315. /package/{esm2020 → esm2022}/lib/components/translation-form/decorators/translation-form-group.decorator.mjs +0 -0
  316. /package/{esm2020 → esm2022}/lib/components/translation-form/index.mjs +0 -0
  317. /package/{esm2020 → esm2022}/lib/components/translation-form/public-api.mjs +0 -0
  318. /package/{esm2020 → esm2022}/lib/components/translation-form/translation.form.mjs +0 -0
  319. /package/{esm2020 → esm2022}/lib/components/typeahead/index.mjs +0 -0
  320. /package/{esm2020 → esm2022}/lib/components/typeahead/public-api.mjs +0 -0
  321. /package/{esm2020 → esm2022}/lib/directives/autofocus/index.mjs +0 -0
  322. /package/{esm2020 → esm2022}/lib/directives/autofocus/public-api.mjs +0 -0
  323. /package/{esm2020 → esm2022}/lib/directives/autogrow/index.mjs +0 -0
  324. /package/{esm2020 → esm2022}/lib/directives/autogrow/public-api.mjs +0 -0
  325. /package/{esm2020 → esm2022}/lib/directives/chip-async-typeahead/index.mjs +0 -0
  326. /package/{esm2020 → esm2022}/lib/directives/chip-async-typeahead/public-api.mjs +0 -0
  327. /package/{esm2020 → esm2022}/lib/directives/chip-list/chip-list.constant.mjs +0 -0
  328. /package/{esm2020 → esm2022}/lib/directives/chip-list/index.mjs +0 -0
  329. /package/{esm2020 → esm2022}/lib/directives/chip-list/public-api.mjs +0 -0
  330. /package/{esm2020 → esm2022}/lib/directives/draggable-list/index.mjs +0 -0
  331. /package/{esm2020 → esm2022}/lib/directives/draggable-list/public-api.mjs +0 -0
  332. /package/{esm2020 → esm2022}/lib/directives/dropzone/index.mjs +0 -0
  333. /package/{esm2020 → esm2022}/lib/directives/dropzone/public-api.mjs +0 -0
  334. /package/{esm2020 → esm2022}/lib/directives/image-error-placeholder/index.mjs +0 -0
  335. /package/{esm2020 → esm2022}/lib/directives/image-error-placeholder/public-api.mjs +0 -0
  336. /package/{esm2020 → esm2022}/lib/directives/index.mjs +0 -0
  337. /package/{esm2020 → esm2022}/lib/directives/material/index.mjs +0 -0
  338. /package/{esm2020 → esm2022}/lib/directives/material/public-api.mjs +0 -0
  339. /package/{esm2020 → esm2022}/lib/directives/modals/index.mjs +0 -0
  340. /package/{esm2020 → esm2022}/lib/directives/modals/public-api.mjs +0 -0
  341. /package/{esm2020 → esm2022}/lib/directives/public-api.mjs +0 -0
  342. /package/{esm2020 → esm2022}/lib/directives/rerender/index.mjs +0 -0
  343. /package/{esm2020 → esm2022}/lib/directives/rerender/public-api.mjs +0 -0
  344. /package/{esm2020 → esm2022}/lib/directives/resolve/index.mjs +0 -0
  345. /package/{esm2020 → esm2022}/lib/directives/resolve/public-api.mjs +0 -0
  346. /package/{esm2020 → esm2022}/lib/directives/scroll-reset/index.mjs +0 -0
  347. /package/{esm2020 → esm2022}/lib/directives/scroll-reset/public-api.mjs +0 -0
  348. /package/{esm2020 → esm2022}/lib/directives/scrollbar/index.mjs +0 -0
  349. /package/{esm2020 → esm2022}/lib/directives/scrollbar/public-api.mjs +0 -0
  350. /package/{esm2020 → esm2022}/lib/directives/scrollbar/scrollbar.types.mjs +0 -0
  351. /package/{esm2020 → esm2022}/lib/directives/stop-propagation/index.mjs +0 -0
  352. /package/{esm2020 → esm2022}/lib/directives/stop-propagation/public-api.mjs +0 -0
  353. /package/{esm2020 → esm2022}/lib/directives/window/index.mjs +0 -0
  354. /package/{esm2020 → esm2022}/lib/directives/window/public-api.mjs +0 -0
  355. /package/{esm2020 → esm2022}/lib/pipes/index.mjs +0 -0
  356. /package/{esm2020 → esm2022}/lib/pipes/public-api.mjs +0 -0
  357. /package/{esm2020 → esm2022}/lib/providers/config/config.constants.mjs +0 -0
  358. /package/{esm2020 → esm2022}/lib/providers/config/config.model.mjs +0 -0
  359. /package/{esm2020 → esm2022}/lib/providers/config/index.mjs +0 -0
  360. /package/{esm2020 → esm2022}/lib/providers/config/public-api.mjs +0 -0
  361. /package/{esm2020 → esm2022}/lib/providers/index.mjs +0 -0
  362. /package/{esm2020 → esm2022}/lib/providers/media-watcher/index.mjs +0 -0
  363. /package/{esm2020 → esm2022}/lib/providers/media-watcher/public-api.mjs +0 -0
  364. /package/{esm2020 → esm2022}/lib/providers/public-api.mjs +0 -0
  365. /package/{esm2020 → esm2022}/lib/providers/splash-screen/index.mjs +0 -0
  366. /package/{esm2020 → esm2022}/lib/providers/splash-screen/public-api.mjs +0 -0
  367. /package/{esm2020 → esm2022}/lib/providers/utils/index.mjs +0 -0
  368. /package/{esm2020 → esm2022}/lib/providers/utils/public-api.mjs +0 -0
  369. /package/{esm2020 → esm2022}/lib/types/constructor.mjs +0 -0
  370. /package/{esm2020 → esm2022}/lib/utils/array.utils.mjs +0 -0
  371. /package/{esm2020 → esm2022}/lib/utils/case.utils.mjs +0 -0
  372. /package/{esm2020 → esm2022}/lib/utils/colors.utils.mjs +0 -0
  373. /package/{esm2020 → esm2022}/lib/utils/date.utils.mjs +0 -0
  374. /package/{esm2020 → esm2022}/lib/utils/file.utils.mjs +0 -0
  375. /package/{esm2020 → esm2022}/lib/utils/font-awesome.utils.mjs +0 -0
  376. /package/{esm2020 → esm2022}/lib/utils/form-data.utils.mjs +0 -0
  377. /package/{esm2020 → esm2022}/lib/utils/http-status.utils.mjs +0 -0
  378. /package/{esm2020 → esm2022}/lib/utils/index.mjs +0 -0
  379. /package/{esm2020 → esm2022}/lib/utils/keyboard.utils.mjs +0 -0
  380. /package/{esm2020 → esm2022}/lib/utils/lexorank.utils.mjs +0 -0
  381. /package/{esm2020 → esm2022}/lib/utils/modal.utils.mjs +0 -0
  382. /package/{esm2020 → esm2022}/lib/utils/number.utils.mjs +0 -0
  383. /package/{esm2020 → esm2022}/lib/utils/object.utils.mjs +0 -0
  384. /package/{esm2020 → esm2022}/lib/utils/promise.utils.mjs +0 -0
  385. /package/{esm2020 → esm2022}/lib/utils/public-api.mjs +0 -0
  386. /package/{esm2020 → esm2022}/lib/utils/query-params.utils.mjs +0 -0
  387. /package/{esm2020 → esm2022}/lib/utils/type.utils.mjs +0 -0
  388. /package/{esm2020 → esm2022}/lib/utils/url.utils.mjs +0 -0
  389. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  390. /package/{esm2020 → esm2022}/recursyve-nice-ui-kit.v2.mjs +0 -0
@@ -0,0 +1,451 @@
1
+ import { coerceBooleanProperty } from "@angular/cdk/coercion";
2
+ import { ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, Input, NgZone, Optional, Output, Self, TemplateRef, ViewChild, ViewChildren, ViewEncapsulation } from "@angular/core";
3
+ import { FormControl, FormGroupDirective, NgControl, NgForm, Validators } from "@angular/forms";
4
+ import { ErrorStateMatcher, MatOption, mixinErrorState } from "@angular/material/core";
5
+ import { MatFormFieldControl } from "@angular/material/form-field";
6
+ import { debounceTime, distinctUntilChanged, firstValueFrom, Subject } from "rxjs";
7
+ import { take } from "rxjs/operators";
8
+ import * as uuid from "uuid";
9
+ import { isNullOrUndefined } from "../../utils";
10
+ import { NiceTypeaheadNewValue } from "../typeahead";
11
+ import { NiceAsyncTypeaheadService } from "./providers/async-typeahead.service";
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "@angular/forms";
14
+ import * as i2 from "@angular/material/core";
15
+ import * as i3 from "./providers/async-typeahead.service";
16
+ import * as i4 from "@angular/common";
17
+ import * as i5 from "../typeahead/directives/options-scroll.directive";
18
+ import * as i6 from "@angular/material/input";
19
+ import * as i7 from "@angular/material/form-field";
20
+ import * as i8 from "@angular/material/autocomplete";
21
+ import * as i9 from "@angular/material/icon";
22
+ import * as i10 from "@angular/material/progress-spinner";
23
+ import * as i11 from "@angular/material/progress-bar";
24
+ import * as i12 from "@ngx-translate/core";
25
+ // Boilerplate for applying mixins to ).
26
+ /** @docs-private */
27
+ const _BaseAsyncTypeaheadComponent = mixinErrorState(class {
28
+ constructor(_defaultErrorStateMatcher, _parentForm, _parentFormGroup,
29
+ /**
30
+ * Form control bound to the component.
31
+ * Implemented as part of `MatFormFieldControl`.
32
+ * @docs-private
33
+ */
34
+ ngControl) {
35
+ this._defaultErrorStateMatcher = _defaultErrorStateMatcher;
36
+ this._parentForm = _parentForm;
37
+ this._parentFormGroup = _parentFormGroup;
38
+ this.ngControl = ngControl;
39
+ /**
40
+ * Emits whenever the component state changes and should cause the parent
41
+ * form field to update. Implemented as part of `MatFormFieldControl`.
42
+ * @docs-private
43
+ */
44
+ this.stateChanges = new Subject();
45
+ }
46
+ });
47
+ // tslint:disable-next-line:max-line-length
48
+ export class NiceAsyncTypeaheadComponent extends _BaseAsyncTypeaheadComponent {
49
+ set labelFormatFn(labelFormatFn) {
50
+ this._labelFormatFn = labelFormatFn;
51
+ }
52
+ /**
53
+ * Implemented as part of MatFormFieldControl.
54
+ * @docs-private
55
+ */
56
+ set disabled(value) {
57
+ this._disabled = coerceBooleanProperty(value);
58
+ if (this._disabled) {
59
+ this.searchControl.disable({ emitEvent: false });
60
+ }
61
+ else {
62
+ this.searchControl.enable({ emitEvent: false });
63
+ }
64
+ // Browsers may not fire the blur event if the input is disabled too quickly.
65
+ // Reset from here to ensure that the element doesn't become stuck.
66
+ if (this.focused) {
67
+ this.focused = false;
68
+ this.stateChanges.next();
69
+ }
70
+ this.changeDetectorRef.detectChanges();
71
+ }
72
+ get disabled() {
73
+ if (this.ngControl && this.ngControl.disabled !== null) {
74
+ return this.ngControl.disabled;
75
+ }
76
+ return this._disabled;
77
+ }
78
+ /**
79
+ * Implemented as part of MatFormFieldControl.
80
+ * @docs-private
81
+ */
82
+ set value(value) {
83
+ if (value !== this._value) {
84
+ this._value = value;
85
+ this.propagate(value);
86
+ this.stateChanges.next();
87
+ }
88
+ }
89
+ get value() {
90
+ return this._value;
91
+ }
92
+ /**
93
+ * Implemented as part of MatFormFieldControl.
94
+ * @docs-private
95
+ */
96
+ set required(value) {
97
+ this._required = coerceBooleanProperty(value);
98
+ }
99
+ get required() {
100
+ return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;
101
+ }
102
+ get shouldLabelFloat() {
103
+ return this.focused || !this.empty;
104
+ }
105
+ get empty() {
106
+ return ((!this.searchControl.value || !this.searchControl.value.length) &&
107
+ (!this._value || (typeof this._value === "string" && !this._value.length)));
108
+ }
109
+ get initialized() {
110
+ return this.service.getInitialized();
111
+ }
112
+ constructor(ngControl, parentForm, parentFormGroup, defaultErrorStateMatcher, ngZone, changeDetectorRef, service) {
113
+ super(defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl);
114
+ this.ngZone = ngZone;
115
+ this.changeDetectorRef = changeDetectorRef;
116
+ this.service = service;
117
+ this.stateChanges = new Subject();
118
+ this.controlType = "remote-typeahead";
119
+ this.focused = false;
120
+ this.searchControl = new FormControl(null);
121
+ this.open = false;
122
+ this.panelWidth = 0;
123
+ this.active$ = this.service.active$;
124
+ this.entityRemoved = new EventEmitter();
125
+ this.autoReload = true;
126
+ this.preloadResource = false;
127
+ this.allowNotFoundItems = false;
128
+ this.panelClass = [];
129
+ this.bindValue = "id";
130
+ this.selected = new EventEmitter();
131
+ this._disabled = false;
132
+ this.id = uuid.v4();
133
+ this.describedBy = "";
134
+ this.componentInitialized = false;
135
+ this.propagate = () => { };
136
+ if (this.ngControl) {
137
+ this.ngControl.valueAccessor = this;
138
+ }
139
+ }
140
+ async ngOnInit() {
141
+ this.service.listenForRequest();
142
+ if (this.ngControl) {
143
+ if (this.ngControl.disabled) {
144
+ this.searchControl.disable({ emitEvent: false });
145
+ }
146
+ this.ngControl.statusChanges.subscribe((status) => {
147
+ this.disabled = status === "DISABLED";
148
+ if (this._disabled) {
149
+ this.searchControl.disable({ emitEvent: false });
150
+ }
151
+ else {
152
+ this.searchControl.enable({ emitEvent: false });
153
+ }
154
+ });
155
+ }
156
+ if (this.filterFn) {
157
+ this.service.setFilterFn(this.filterFn);
158
+ }
159
+ if (this.searchControl) {
160
+ this.valueChangesSub$ = this.searchControl.valueChanges.pipe(debounceTime(500), distinctUntilChanged()).subscribe(text => {
161
+ if (typeof text !== "string") {
162
+ return;
163
+ }
164
+ this.service.search(this.resource, text);
165
+ });
166
+ }
167
+ if (this.preloadResource) {
168
+ this.service.search(this.resource, "");
169
+ }
170
+ this.componentInitialized = true;
171
+ if (this.initialWriteValue !== undefined) {
172
+ await this.writeValue(this.initialWriteValue);
173
+ }
174
+ }
175
+ ngOnDestroy() {
176
+ this.service.closeRequestSubscription();
177
+ this.valueChangesSub$.unsubscribe();
178
+ }
179
+ ngOnChanges(changes) {
180
+ if ("searchOptions" in changes) {
181
+ const change = changes.searchOptions;
182
+ this.service.setSearchOptions(change.currentValue);
183
+ if (!change.isFirstChange() && change.currentValue !== change.previousValue && this.autoReload) {
184
+ this.service.search(this.resource, "");
185
+ this.service.items$.pipe(take(1)).subscribe(() => this.checkIfValueStillExist());
186
+ }
187
+ }
188
+ if ("filterFn" in changes) {
189
+ const change = changes.filterFn;
190
+ if (!change.isFirstChange() && change.currentValue !== change.previousValue) {
191
+ this.service.setFilterFn(change.currentValue);
192
+ }
193
+ }
194
+ this.stateChanges.next();
195
+ }
196
+ ngDoCheck() {
197
+ if (this.ngControl) {
198
+ this.updateErrorState();
199
+ }
200
+ }
201
+ async writeValue(value) {
202
+ if (!this.componentInitialized) {
203
+ this.initialWriteValue = value;
204
+ return;
205
+ }
206
+ if (this._value === value || (isNullOrUndefined(this._value) && isNullOrUndefined(value))) {
207
+ return;
208
+ }
209
+ if (!value && this._value !== value) {
210
+ this.onRemove(null);
211
+ return;
212
+ }
213
+ if (value instanceof NiceTypeaheadNewValue) {
214
+ this.updateSearchInput();
215
+ return;
216
+ }
217
+ else {
218
+ await this.service.setActiveId(this.resource, value).then(() => this.updateSearchInput());
219
+ }
220
+ this.value = value;
221
+ }
222
+ registerOnChange(propagate) {
223
+ this.propagate = propagate;
224
+ }
225
+ registerOnTouched(fn) {
226
+ // NO-OP
227
+ }
228
+ onContainerClick(event) {
229
+ this.stateChanges.next();
230
+ }
231
+ setDescribedByIds(ids) {
232
+ this.describedBy = ids.join(" ");
233
+ }
234
+ getActive() {
235
+ return this.service.getActive();
236
+ }
237
+ onOptionActivated(event) {
238
+ this.activeOption = event.option;
239
+ }
240
+ onOptionSelected(event) {
241
+ if (event.option.id === "new-value-option") {
242
+ this.value = new NiceTypeaheadNewValue(this.searchControl.value);
243
+ }
244
+ else {
245
+ this.updateLabel(event.option.value);
246
+ this.service.setActive(event.option.value);
247
+ this.value = this.bindValue ? this.getObjectItem(this.bindValue, event.option.value) : event.option.value;
248
+ }
249
+ this.selected.emit(this.value);
250
+ }
251
+ updateState(open) {
252
+ this.open = open;
253
+ if (!this.open) {
254
+ this.ngZone.run(() => {
255
+ this.focusChanged(false);
256
+ this.changeDetectorRef.markForCheck();
257
+ });
258
+ }
259
+ if (this.open && !this.initialized) {
260
+ this.service.initialize(this.resource);
261
+ }
262
+ if (!this.open && this.ngControl) {
263
+ this.ngControl.control.markAsTouched();
264
+ }
265
+ if (!this.open) {
266
+ this.activeOption = null;
267
+ if (!this._value && this.searchControl.value) {
268
+ this.onRemove();
269
+ }
270
+ }
271
+ }
272
+ onRemove(event, reload = true) {
273
+ if (event) {
274
+ // event.stopPropagation();
275
+ }
276
+ if (this.disabled) {
277
+ return;
278
+ }
279
+ this.service.setActive(null);
280
+ this.value = null;
281
+ this.searchControl.patchValue(null);
282
+ if (this.ngControl?.control) {
283
+ this.ngControl.control.markAsTouched();
284
+ }
285
+ this.stateChanges.next();
286
+ this.entityRemoved.emit();
287
+ if (reload) {
288
+ this.service.search(this.resource, "");
289
+ }
290
+ }
291
+ formatLabel(item) {
292
+ if (this._labelFormatFn) {
293
+ return this._labelFormatFn(item);
294
+ }
295
+ if (this.bindLabel) {
296
+ return this.getObjectItem(this.bindLabel, item);
297
+ }
298
+ if (typeof item !== "string") {
299
+ return this.service.format(this.resource, item);
300
+ }
301
+ return item;
302
+ }
303
+ onEndScroll() {
304
+ this.service.loadMore(this.resource);
305
+ }
306
+ focusChanged(isFocused) {
307
+ if (isFocused !== this.focused) {
308
+ this.focused = isFocused;
309
+ this.stateChanges.next();
310
+ if (isFocused && this.filterFn) {
311
+ this.service.reloadFilteredItems();
312
+ }
313
+ }
314
+ }
315
+ reload() {
316
+ this.service?.search(this.resource, this.searchControl.value ?? "");
317
+ }
318
+ async reloadActive() {
319
+ await this.service?.reloadActive(this.resource);
320
+ const active = this.service?.getActive();
321
+ this.updateLabel(active);
322
+ }
323
+ setSearchOptions(options) {
324
+ this.searchOptions = options;
325
+ this.service.setSearchOptions(options);
326
+ }
327
+ updateLabel(item) {
328
+ if (!item) {
329
+ return;
330
+ }
331
+ const label = this.formatLabel(item);
332
+ if (label && label !== this.searchControl.value) {
333
+ this.searchControl.patchValue(label, { emitEvent: false });
334
+ }
335
+ }
336
+ getObjectItem(key, obj) {
337
+ const keys = key.split(".");
338
+ let item = obj;
339
+ for (const k of keys) {
340
+ if (!item) {
341
+ return item;
342
+ }
343
+ if (!item.hasOwnProperty(k)) {
344
+ return item;
345
+ }
346
+ item = item[k];
347
+ }
348
+ return item;
349
+ }
350
+ updateSearchInput() {
351
+ if (this._value instanceof NiceTypeaheadNewValue) {
352
+ this.updateLabel(this._value.$new);
353
+ return;
354
+ }
355
+ const active = this.service.getActive();
356
+ if (active) {
357
+ this.updateLabel(active);
358
+ return;
359
+ }
360
+ }
361
+ async checkIfValueStillExist() {
362
+ if (this._value instanceof NiceTypeaheadNewValue) {
363
+ return;
364
+ }
365
+ const items = await firstValueFrom(this.service.filteredItems$);
366
+ const item = items.find(v => (this.bindValue && typeof v === "object" ? this.getObjectItem(this.bindValue, v) : v) === this._value);
367
+ if (item) {
368
+ return;
369
+ }
370
+ if (this._value !== null && this._value !== undefined) {
371
+ this.onRemove(null);
372
+ }
373
+ }
374
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.5", ngImport: i0, type: NiceAsyncTypeaheadComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i1.NgForm, optional: true }, { token: i1.FormGroupDirective, optional: true }, { token: i2.ErrorStateMatcher }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i3.NiceAsyncTypeaheadService }], target: i0.ɵɵFactoryTarget.Component }); }
375
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.5", type: NiceAsyncTypeaheadComponent, selector: "nice-async-typeahead", inputs: { resource: "resource", searchOptions: "searchOptions", autoReload: "autoReload", preloadResource: "preloadResource", allowNotFoundItems: "allowNotFoundItems", panelClass: "panelClass", bindValue: "bindValue", bindLabel: "bindLabel", placeholder: "placeholder", emptyPlaceholder: "emptyPlaceholder", optionTemplate: "optionTemplate", filterFn: "filterFn", labelFormatFn: "labelFormatFn", disabled: "disabled", value: "value", required: "required" }, outputs: { entityRemoved: "entityRemoved", selected: "selected" }, host: { properties: { "class.floating": "this.shouldLabelFloat", "id": "this.id", "attr.aria-describedby": "this.describedBy" } }, providers: [
376
+ {
377
+ provide: MatFormFieldControl,
378
+ useExisting: NiceAsyncTypeaheadComponent
379
+ },
380
+ NiceAsyncTypeaheadService
381
+ ], viewQueries: [{ propertyName: "input", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "options", predicate: MatOption, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"{ loading: service.loading$ | async, loadingPage: service.loadingPage$ | async, values: service.filteredItems$ | async } as ctx\">\n <div class=\"flex\" *ngIf=\"!disabled; else disable\">\n <input\n #searchInput\n matInput\n class=\"flex-auto\"\n type=\"text\"\n name=\"mat-autocomplete\"\n [disabled]=\"$any(disabled)\"\n [placeholder]=\"placeholder\"\n [formControl]=\"searchControl\"\n [matAutocomplete]=\"auto\"\n [required]=\"$any(required)\"\n (focus)=\"focusChanged(true)\"\n />\n <mat-icon *ngIf=\"value && !ctx.loading\" matSuffix class=\"close-button secondary-text\" (click)=\"onRemove($event)\">\n close\n </mat-icon>\n\n <mat-spinner class=\"self-center\" [diameter]=\"16\" *ngIf=\"ctx.loading\"></mat-spinner>\n </div>\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n [panelWidth]=\"panelWidth\"\n [class]=\"panelClass\"\n (optionActivated)=\"onOptionActivated($event)\"\n (optionSelected)=\"onOptionSelected($event)\"\n (closed)=\"updateState(false)\"\n (opened)=\"updateState(true)\"\n (optionsScroll)=\"onEndScroll()\"\n autoActiveFirstOption\n >\n <mat-progress-bar class=\"-mt-2\" *ngIf=\"open && ctx.loading\" mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\n\n <mat-option *ngFor=\"let option of ctx.values\" [value]=\"option\">\n <ng-container\n *ngIf=\"optionTemplate; else format\"\n [ngTemplateOutlet]=\"optionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: option }\"\n >\n </ng-container>\n <ng-template #format>\n {{ formatLabel(option) }}\n </ng-template>\n </mat-option>\n <mat-option *ngIf=\"!ctx.values?.length && !allowNotFoundItems\" disabled>\n <ng-container *ngIf=\"emptyPlaceholder; else defaultEmptyPlaceholder\">\n {{ emptyPlaceholder }}\n </ng-container>\n <ng-template #defaultEmptyPlaceholder>\n {{ \"components.typeahead.no_item_found\" | translate }}\n </ng-template>\n </mat-option>\n <mat-option *ngIf=\"!ctx.values?.length && allowNotFoundItems\" id=\"new-value-option\" [value]=\"searchControl.value\">\n <span class=\"italic\">{{ searchControl.value }}</span>\n </mat-option>\n <mat-progress-bar *ngIf=\"open && ctx.loadingPage\" mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\n </mat-autocomplete>\n</ng-container>\n\n<ng-template #disable>\n <input\n matInput\n class=\"disabled-input\"\n type=\"text\"\n [disabled]=\"true\"\n [placeholder]=\"placeholder\"\n [formControl]=\"searchControl\"\n [required]=\"$any(required)\"\n />\n</ng-template>\n", styles: ["nice-async-typeahead{width:100%}nice-async-typeahead .close-button{flex:1 1 18px;cursor:pointer;min-height:18px!important;min-width:18px!important;height:18px!important;width:18px!important;font-size:18px!important;align-self:center}nice-async-typeahead .disabled-input{flex:1 1 95%}nice-async-typeahead .arrow-container{display:flex;bottom:7px;align-self:flex-end;position:relative;text-align:center;-webkit-user-select:none;user-select:none}nice-async-typeahead .arrow{border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;margin:0 4px;color:#0000008a}.italic{font-style:italic}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.OptionsScrollDirective, selector: "mat-autocomplete[optionsScroll]", inputs: ["thresholdPercent"], outputs: ["optionsScroll"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i7.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i8.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i2.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i8.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i11.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
382
+ }
383
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.5", ngImport: i0, type: NiceAsyncTypeaheadComponent, decorators: [{
384
+ type: Component,
385
+ args: [{ selector: "nice-async-typeahead", encapsulation: ViewEncapsulation.None, providers: [
386
+ {
387
+ provide: MatFormFieldControl,
388
+ useExisting: NiceAsyncTypeaheadComponent
389
+ },
390
+ NiceAsyncTypeaheadService
391
+ ], template: "<ng-container *ngIf=\"{ loading: service.loading$ | async, loadingPage: service.loadingPage$ | async, values: service.filteredItems$ | async } as ctx\">\n <div class=\"flex\" *ngIf=\"!disabled; else disable\">\n <input\n #searchInput\n matInput\n class=\"flex-auto\"\n type=\"text\"\n name=\"mat-autocomplete\"\n [disabled]=\"$any(disabled)\"\n [placeholder]=\"placeholder\"\n [formControl]=\"searchControl\"\n [matAutocomplete]=\"auto\"\n [required]=\"$any(required)\"\n (focus)=\"focusChanged(true)\"\n />\n <mat-icon *ngIf=\"value && !ctx.loading\" matSuffix class=\"close-button secondary-text\" (click)=\"onRemove($event)\">\n close\n </mat-icon>\n\n <mat-spinner class=\"self-center\" [diameter]=\"16\" *ngIf=\"ctx.loading\"></mat-spinner>\n </div>\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n [panelWidth]=\"panelWidth\"\n [class]=\"panelClass\"\n (optionActivated)=\"onOptionActivated($event)\"\n (optionSelected)=\"onOptionSelected($event)\"\n (closed)=\"updateState(false)\"\n (opened)=\"updateState(true)\"\n (optionsScroll)=\"onEndScroll()\"\n autoActiveFirstOption\n >\n <mat-progress-bar class=\"-mt-2\" *ngIf=\"open && ctx.loading\" mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\n\n <mat-option *ngFor=\"let option of ctx.values\" [value]=\"option\">\n <ng-container\n *ngIf=\"optionTemplate; else format\"\n [ngTemplateOutlet]=\"optionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: option }\"\n >\n </ng-container>\n <ng-template #format>\n {{ formatLabel(option) }}\n </ng-template>\n </mat-option>\n <mat-option *ngIf=\"!ctx.values?.length && !allowNotFoundItems\" disabled>\n <ng-container *ngIf=\"emptyPlaceholder; else defaultEmptyPlaceholder\">\n {{ emptyPlaceholder }}\n </ng-container>\n <ng-template #defaultEmptyPlaceholder>\n {{ \"components.typeahead.no_item_found\" | translate }}\n </ng-template>\n </mat-option>\n <mat-option *ngIf=\"!ctx.values?.length && allowNotFoundItems\" id=\"new-value-option\" [value]=\"searchControl.value\">\n <span class=\"italic\">{{ searchControl.value }}</span>\n </mat-option>\n <mat-progress-bar *ngIf=\"open && ctx.loadingPage\" mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\n </mat-autocomplete>\n</ng-container>\n\n<ng-template #disable>\n <input\n matInput\n class=\"disabled-input\"\n type=\"text\"\n [disabled]=\"true\"\n [placeholder]=\"placeholder\"\n [formControl]=\"searchControl\"\n [required]=\"$any(required)\"\n />\n</ng-template>\n", styles: ["nice-async-typeahead{width:100%}nice-async-typeahead .close-button{flex:1 1 18px;cursor:pointer;min-height:18px!important;min-width:18px!important;height:18px!important;width:18px!important;font-size:18px!important;align-self:center}nice-async-typeahead .disabled-input{flex:1 1 95%}nice-async-typeahead .arrow-container{display:flex;bottom:7px;align-self:flex-end;position:relative;text-align:center;-webkit-user-select:none;user-select:none}nice-async-typeahead .arrow{border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;margin:0 4px;color:#0000008a}.italic{font-style:italic}\n"] }]
392
+ }], ctorParameters: function () { return [{ type: i1.NgControl, decorators: [{
393
+ type: Optional
394
+ }, {
395
+ type: Self
396
+ }] }, { type: i1.NgForm, decorators: [{
397
+ type: Optional
398
+ }] }, { type: i1.FormGroupDirective, decorators: [{
399
+ type: Optional
400
+ }] }, { type: i2.ErrorStateMatcher }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i3.NiceAsyncTypeaheadService }]; }, propDecorators: { input: [{
401
+ type: ViewChild,
402
+ args: ["searchInput"]
403
+ }], options: [{
404
+ type: ViewChildren,
405
+ args: [MatOption]
406
+ }], entityRemoved: [{
407
+ type: Output
408
+ }], resource: [{
409
+ type: Input
410
+ }], searchOptions: [{
411
+ type: Input
412
+ }], autoReload: [{
413
+ type: Input
414
+ }], preloadResource: [{
415
+ type: Input
416
+ }], allowNotFoundItems: [{
417
+ type: Input
418
+ }], panelClass: [{
419
+ type: Input
420
+ }], bindValue: [{
421
+ type: Input
422
+ }], bindLabel: [{
423
+ type: Input
424
+ }], placeholder: [{
425
+ type: Input
426
+ }], emptyPlaceholder: [{
427
+ type: Input
428
+ }], optionTemplate: [{
429
+ type: Input
430
+ }], filterFn: [{
431
+ type: Input
432
+ }], selected: [{
433
+ type: Output
434
+ }], labelFormatFn: [{
435
+ type: Input
436
+ }], disabled: [{
437
+ type: Input
438
+ }], value: [{
439
+ type: Input
440
+ }], required: [{
441
+ type: Input
442
+ }], shouldLabelFloat: [{
443
+ type: HostBinding,
444
+ args: ["class.floating"]
445
+ }], id: [{
446
+ type: HostBinding
447
+ }], describedBy: [{
448
+ type: HostBinding,
449
+ args: ["attr.aria-describedby"]
450
+ }] } });
451
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtdHlwZWFoZWFkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvY29tcG9uZW50cy9hc3luYy10eXBlYWhlYWQvYXN5bmMtdHlwZWFoZWFkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvY29tcG9uZW50cy9hc3luYy10eXBlYWhlYWQvYXN5bmMtdHlwZWFoZWFkLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUVULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLEVBSU4sUUFBUSxFQUFFLE1BQU0sRUFDaEIsSUFBSSxFQUVKLFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxjQUFjLEVBQWMsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM3RyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FB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c0JBQXNCLGlCQUdqQixpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxtQkFBbUI7NEJBQzVCLFdBQVcsNkJBQTZCO3lCQUMzQzt3QkFDRCx5QkFBeUI7cUJBQzVCOzswQkFpS0ksUUFBUTs7MEJBQUksSUFBSTs7MEJBQ2hCLFFBQVE7OzBCQUNSLFFBQVE7eUtBbEpOLEtBQUs7c0JBRFgsU0FBUzt1QkFBQyxhQUFhO2dCQUlqQixPQUFPO3NCQURiLFlBQVk7dUJBQUMsU0FBUztnQkFJaEIsYUFBYTtzQkFEbkIsTUFBTTtnQkFJQSxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsYUFBYTtzQkFEbkIsS0FBSztnQkFJQyxVQUFVO3NCQURoQixLQUFLO2dCQUlDLGVBQWU7c0JBRHJCLEtBQUs7Z0JBSUMsa0JBQWtCO3NCQUR4QixLQUFLO2dCQUlDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBSUMsU0FBUztzQkFEZixLQUFLO2dCQUlDLFNBQVM7c0JBRGYsS0FBSztnQkFJQyxXQUFXO3NCQURqQixLQUFLO2dCQUlDLGdCQUFnQjtzQkFEdEIsS0FBSztnQkFJQyxjQUFjO3NCQURwQixLQUFLO2dCQUlDLFFBQVE7c0JBRGQsS0FBSztnQkFJQyxRQUFRO3NCQURkLE1BQU07Z0JBSUksYUFBYTtzQkFEdkIsS0FBSztnQkFXSyxRQUFRO3NCQURsQixLQUFLO2dCQWlDSyxLQUFLO3NCQURmLEtBQUs7Z0JBa0JLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBVUssZ0JBQWdCO3NCQUQxQixXQUFXO3VCQUFDLGdCQUFnQjtnQkFNdEIsRUFBRTtzQkFEUixXQUFXO2dCQUlMLFdBQVc7c0JBRGpCLFdBQVc7dUJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2NvZXJjaW9uXCI7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBEb0NoZWNrLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCwgT3V0cHV0LFxuICAgIFNlbGYsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cERpcmVjdGl2ZSwgTmdDb250cm9sLCBOZ0Zvcm0sIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZUFjdGl2YXRlZEV2ZW50LCBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50IH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZVwiO1xuaW1wb3J0IHsgRXJyb3JTdGF0ZU1hdGNoZXIsIE1hdE9wdGlvbiwgbWl4aW5FcnJvclN0YXRlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NvcmVcIjtcbmltcG9ydCB7IE1hdEZvcm1GaWVsZENvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlyc3RWYWx1ZUZyb20sIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgKiBhcyB1dWlkIGZyb20gXCJ1dWlkXCI7XG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgTmljZVR5cGVhaGVhZE5ld1ZhbHVlIH0gZnJvbSBcIi4uL3R5cGVhaGVhZFwiO1xuaW1wb3J0IHsgTmljZUFzeW5jVHlwZWFoZWFkU2VydmljZSB9IGZyb20gXCIuL3Byb3ZpZGVycy9hc3luYy10eXBlYWhlYWQuc2VydmljZVwiO1xuXG4vLyBCb2lsZXJwbGF0ZSBmb3IgYXBwbHlpbmcgbWl4aW5zIHRvICkuXG4vKiogQGRvY3MtcHJpdmF0ZSAqL1xuY29uc3QgX0Jhc2VBc3luY1R5cGVhaGVhZENvbXBvbmVudCA9IG1peGluRXJyb3JTdGF0ZShcbiAgICBjbGFzcyB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBFbWl0cyB3aGVuZXZlciB0aGUgY29tcG9uZW50IHN0YXRlIGNoYW5nZXMgYW5kIHNob3VsZCBjYXVzZSB0aGUgcGFyZW50XG4gICAgICAgICAqIGZvcm0gZmllbGQgdG8gdXBkYXRlLiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIGBNYXRGb3JtRmllbGRDb250cm9sYC5cbiAgICAgICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgICAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgICAgIHB1YmxpYyBfZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyOiBFcnJvclN0YXRlTWF0Y2hlcixcbiAgICAgICAgICAgIHB1YmxpYyBfcGFyZW50Rm9ybTogTmdGb3JtLFxuICAgICAgICAgICAgcHVibGljIF9wYXJlbnRGb3JtR3JvdXA6IEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9ybSBjb250cm9sIGJvdW5kIHRvIHRoZSBjb21wb25lbnQuXG4gICAgICAgICAgICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIGBNYXRGb3JtRmllbGRDb250cm9sYC5cbiAgICAgICAgICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sXG4gICAgICAgICkge31cbiAgICB9XG4pO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJuaWNlLWFzeW5jLXR5cGVhaGVhZFwiLFxuICAgIHRlbXBsYXRlVXJsOiBcImFzeW5jLXR5cGVhaGVhZC50ZW1wbGF0ZS5odG1sXCIsXG4gICAgc3R5bGVVcmxzOiBbXCJhc3luYy10eXBlYWhlYWQuc3R5bGUuc2Nzc1wiXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBNYXRGb3JtRmllbGRDb250cm9sLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IE5pY2VBc3luY1R5cGVhaGVhZENvbXBvbmVudFxuICAgICAgICB9LFxuICAgICAgICBOaWNlQXN5bmNUeXBlYWhlYWRTZXJ2aWNlXG4gICAgXVxufSlcbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcbmV4cG9ydCBjbGFzcyBOaWNlQXN5bmNUeXBlYWhlYWRDb21wb25lbnQgZXh0ZW5kcyBfQmFzZUFzeW5jVHlwZWFoZWFkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE1hdEZvcm1GaWVsZENvbnRyb2w8YW55PiwgRG9DaGVjayB7XG4gICAgcHVibGljIHN0YXRlQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHVibGljIGNvbnRyb2xUeXBlID0gXCJyZW1vdGUtdHlwZWFoZWFkXCI7XG4gICAgcHVibGljIGZvY3VzZWQgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBzZWFyY2hDb250cm9sID0gbmV3IEZvcm1Db250cm9sKG51bGwpO1xuICAgIHB1YmxpYyB2YWx1ZUNoYW5nZXNTdWIkOiBTdWJzY3JpcHRpb247XG4gICAgcHVibGljIG9wZW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgcGFuZWxXaWR0aCA9IDA7XG4gICAgcHVibGljIGFjdGl2ZU9wdGlvbjogTWF0T3B0aW9uO1xuXG4gICAgcHVibGljIGFjdGl2ZSQgPSB0aGlzLnNlcnZpY2UuYWN0aXZlJDtcblxuICAgIEBWaWV3Q2hpbGQoXCJzZWFyY2hJbnB1dFwiKVxuICAgIHB1YmxpYyBpbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAgIEBWaWV3Q2hpbGRyZW4oTWF0T3B0aW9uKVxuICAgIHB1YmxpYyBvcHRpb25zOiBNYXRPcHRpb25bXTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBlbnRpdHlSZW1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmVzb3VyY2U6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNlYXJjaE9wdGlvbnM6IGFueTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGF1dG9SZWxvYWQgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcHJlbG9hZFJlc291cmNlID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhbGxvd05vdEZvdW5kSXRlbXMgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBhbmVsQ2xhc3M6IHN0cmluZyB8IHN0cmluZ1tdID0gW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBiaW5kVmFsdWUgPSBcImlkXCI7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBiaW5kTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBlbXB0eVBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBvcHRpb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZmlsdGVyRm46ICh2YWx1ZTogYW55KSA9PiBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPiB8IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBsYWJlbEZvcm1hdEZuKGxhYmVsRm9ybWF0Rm46IChpdGVtOiBhbnkpID0+IHN0cmluZykge1xuICAgICAgICB0aGlzLl9sYWJlbEZvcm1hdEZuID0gbGFiZWxGb3JtYXRGbjtcbiAgICB9XG4gICAgcHJpdmF0ZSBfbGFiZWxGb3JtYXRGbjogKGl0ZW06IGFueSkgPT4gc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBNYXRGb3JtRmllbGRDb250cm9sLlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMuX2Rpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaENvbnRyb2wuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaENvbnRyb2wuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJyb3dzZXJzIG1heSBub3QgZmlyZSB0aGUgYmx1ciBldmVudCBpZiB0aGUgaW5wdXQgaXMgZGlzYWJsZWQgdG9vIHF1aWNrbHkuXG4gICAgICAgIC8vIFJlc2V0IGZyb20gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgZWxlbWVudCBkb2Vzbid0IGJlY29tZSBzdHVjay5cbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wgJiYgdGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5nQ29udHJvbC5kaXNhYmxlZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWF0Rm9ybUZpZWxkQ29udHJvbC5cbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLl92YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlKHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwdWJsaWMgZ2V0IHZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfdmFsdWU6IGFueTtcblxuICAgIC8qKlxuICAgICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWF0Rm9ybUZpZWxkQ29udHJvbC5cbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHJlcXVpcmVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQgPz8gdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/Lmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKSA/PyBmYWxzZTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9yZXF1aXJlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAgIEBIb3N0QmluZGluZyhcImNsYXNzLmZsb2F0aW5nXCIpXG4gICAgcHVibGljIGdldCBzaG91bGRMYWJlbEZsb2F0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mb2N1c2VkIHx8ICF0aGlzLmVtcHR5O1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygpXG4gICAgcHVibGljIGlkOiBzdHJpbmcgPSB1dWlkLnY0KCk7XG5cbiAgICBASG9zdEJpbmRpbmcoXCJhdHRyLmFyaWEtZGVzY3JpYmVkYnlcIilcbiAgICBwdWJsaWMgZGVzY3JpYmVkQnkgPSBcIlwiO1xuXG5cbiAgICBwcml2YXRlIGNvbXBvbmVudEluaXRpYWxpemVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBpbml0aWFsV3JpdGVWYWx1ZT86IGFueTtcblxuICAgIHB1YmxpYyBnZXQgZW1wdHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAoIXRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZSB8fCAhdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlLmxlbmd0aCkgJiZcbiAgICAgICAgICAgICghdGhpcy5fdmFsdWUgfHwgKHR5cGVvZiB0aGlzLl92YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiAhdGhpcy5fdmFsdWUubGVuZ3RoKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGluaXRpYWxpemVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmdldEluaXRpYWxpemVkKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHByb3BhZ2F0ZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgICAgICBAT3B0aW9uYWwoKSBwYXJlbnRGb3JtOiBOZ0Zvcm0sXG4gICAgICAgIEBPcHRpb25hbCgpIHBhcmVudEZvcm1Hcm91cDogRm9ybUdyb3VwRGlyZWN0aXZlLFxuICAgICAgICBkZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXI6IEVycm9yU3RhdGVNYXRjaGVyLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHVibGljIHNlcnZpY2U6IE5pY2VBc3luY1R5cGVhaGVhZFNlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGRlZmF1bHRFcnJvclN0YXRlTWF0Y2hlciwgcGFyZW50Rm9ybSwgcGFyZW50Rm9ybUdyb3VwLCBuZ0NvbnRyb2wpO1xuXG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuc2VydmljZS5saXN0ZW5Gb3JSZXF1ZXN0KCk7XG5cbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaENvbnRyb2wuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKChzdGF0dXMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRpc2FibGVkID0gc3RhdHVzID09PSBcIkRJU0FCTEVEXCI7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaENvbnRyb2wuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmZpbHRlckZuKSB7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2Uuc2V0RmlsdGVyRm4odGhpcy5maWx0ZXJGbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zZWFyY2hDb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlc1N1YiQgPSB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDUwMCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnN1YnNjcmliZSh0ZXh0ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRleHQgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuc2VydmljZS5zZWFyY2godGhpcy5yZXNvdXJjZSwgdGV4dCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnByZWxvYWRSZXNvdXJjZSkge1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnNlYXJjaCh0aGlzLnJlc291cmNlLCBcIlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29tcG9uZW50SW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy5pbml0aWFsV3JpdGVWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLndyaXRlVmFsdWUodGhpcy5pbml0aWFsV3JpdGVWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VydmljZS5jbG9zZVJlcXVlc3RTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZXNTdWIkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKFwic2VhcmNoT3B0aW9uc1wiIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGNoYW5nZSA9IGNoYW5nZXMuc2VhcmNoT3B0aW9ucztcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS5zZXRTZWFyY2hPcHRpb25zKGNoYW5nZS5jdXJyZW50VmFsdWUpO1xuXG4gICAgICAgICAgICBpZiAoIWNoYW5nZS5pc0ZpcnN0Q2hhbmdlKCkgJiYgY2hhbmdlLmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlLnByZXZpb3VzVmFsdWUgJiYgdGhpcy5hdXRvUmVsb2FkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnNlYXJjaCh0aGlzLnJlc291cmNlLCBcIlwiKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2UuaXRlbXMkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2hlY2tJZlZhbHVlU3RpbGxFeGlzdCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcImZpbHRlckZuXCIgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgY29uc3QgY2hhbmdlID0gY2hhbmdlcy5maWx0ZXJGbjtcbiAgICAgICAgICAgIGlmICghY2hhbmdlLmlzRmlyc3RDaGFuZ2UoKSAmJiBjaGFuZ2UuY3VycmVudFZhbHVlICE9PSBjaGFuZ2UucHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VydmljZS5zZXRGaWx0ZXJGbihjaGFuZ2UuY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRXJyb3JTdGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoIXRoaXMuY29tcG9uZW50SW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbFdyaXRlVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl92YWx1ZSA9PT0gdmFsdWUgfHwgKGlzTnVsbE9yVW5kZWZpbmVkKHRoaXMuX3ZhbHVlKSAmJiBpc051bGxPclVuZGVmaW5lZCh2YWx1ZSkpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXZhbHVlICYmIHRoaXMuX3ZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5vblJlbW92ZShudWxsKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE5pY2VUeXBlYWhlYWROZXdWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTZWFyY2hJbnB1dCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlLnNldEFjdGl2ZUlkKHRoaXMucmVzb3VyY2UsIHZhbHVlKS50aGVuKCgpID0+IHRoaXMudXBkYXRlU2VhcmNoSW5wdXQoKSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UocHJvcGFnYXRlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZSA9IHByb3BhZ2F0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICAvLyBOTy1PUFxuICAgIH1cblxuICAgIHB1YmxpYyBvbkNvbnRhaW5lckNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RGVzY3JpYmVkQnlJZHMoaWRzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc2NyaWJlZEJ5ID0gaWRzLmpvaW4oXCIgXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBY3RpdmU8VCA9IGFueT4oKTogVCB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2UuZ2V0QWN0aXZlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uT3B0aW9uQWN0aXZhdGVkKGV2ZW50OiBNYXRBdXRvY29tcGxldGVBY3RpdmF0ZWRFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFjdGl2ZU9wdGlvbiA9IGV2ZW50Lm9wdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25PcHRpb25TZWxlY3RlZChldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQub3B0aW9uLmlkID09PSBcIm5ldy12YWx1ZS1vcHRpb25cIikge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG5ldyBOaWNlVHlwZWFoZWFkTmV3VmFsdWUodGhpcy5zZWFyY2hDb250cm9sLnZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTGFiZWwoZXZlbnQub3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS5zZXRBY3RpdmUoZXZlbnQub3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmJpbmRWYWx1ZSA/IHRoaXMuZ2V0T2JqZWN0SXRlbSh0aGlzLmJpbmRWYWx1ZSwgZXZlbnQub3B0aW9uLnZhbHVlKSA6IGV2ZW50Lm9wdGlvbi52YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlU3RhdGUob3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW4gPSBvcGVuO1xuXG4gICAgICAgIGlmICghdGhpcy5vcGVuKSB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNDaGFuZ2VkKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vcGVuICYmICF0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2UuaW5pdGlhbGl6ZSh0aGlzLnJlc291cmNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5vcGVuICYmIHRoaXMubmdDb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLm5nQ29udHJvbC5jb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5vcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZU9wdGlvbiA9IG51bGw7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX3ZhbHVlICYmIHRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMub25SZW1vdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvblJlbW92ZShldmVudD86IEV2ZW50LCByZWxvYWQgPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgLy8gZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlcnZpY2Uuc2V0QWN0aXZlKG51bGwpO1xuICAgICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLnBhdGNoVmFsdWUobnVsbCk7XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbD8uY29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5uZ0NvbnRyb2wuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuXG4gICAgICAgIHRoaXMuZW50aXR5UmVtb3ZlZC5lbWl0KCk7XG5cbiAgICAgICAgaWYgKHJlbG9hZCkge1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnNlYXJjaCh0aGlzLnJlc291cmNlLCBcIlwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBmb3JtYXRMYWJlbChpdGVtOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5fbGFiZWxGb3JtYXRGbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2xhYmVsRm9ybWF0Rm4oaXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5iaW5kTGFiZWwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldE9iamVjdEl0ZW0odGhpcy5iaW5kTGFiZWwsIGl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmZvcm1hdCh0aGlzLnJlc291cmNlLCBpdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkVuZFNjcm9sbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmxvYWRNb3JlKHRoaXMucmVzb3VyY2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmb2N1c0NoYW5nZWQoaXNGb2N1c2VkOiBib29sZWFuKSB7XG4gICAgICAgIGlmIChpc0ZvY3VzZWQgIT09IHRoaXMuZm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkID0gaXNGb2N1c2VkO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuXG4gICAgICAgICAgICBpZiAoaXNGb2N1c2VkICYmIHRoaXMuZmlsdGVyRm4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2UucmVsb2FkRmlsdGVyZWRJdGVtcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlbG9hZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXJ2aWNlPy5zZWFyY2godGhpcy5yZXNvdXJjZSwgdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlID8/IFwiXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZWxvYWRBY3RpdmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuc2VydmljZT8ucmVsb2FkQWN0aXZlKHRoaXMucmVzb3VyY2UpO1xuICAgICAgICBjb25zdCBhY3RpdmUgPSB0aGlzLnNlcnZpY2U/LmdldEFjdGl2ZSgpO1xuICAgICAgICB0aGlzLnVwZGF0ZUxhYmVsKGFjdGl2ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFNlYXJjaE9wdGlvbnMob3B0aW9uczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VhcmNoT3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICAgIHRoaXMuc2VydmljZS5zZXRTZWFyY2hPcHRpb25zKG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTGFiZWwoaXRlbTogdW5rbm93biB8IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoIWl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5mb3JtYXRMYWJlbChpdGVtKTtcblxuICAgICAgICBpZiAobGFiZWwgJiYgbGFiZWwgIT09IHRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLnBhdGNoVmFsdWUobGFiZWwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0T2JqZWN0SXRlbShrZXk6IHN0cmluZywgb2JqOiBvYmplY3QpOiBhbnkge1xuICAgICAgICBjb25zdCBrZXlzID0ga2V5LnNwbGl0KFwiLlwiKTtcbiAgICAgICAgbGV0IGl0ZW0gPSBvYmo7XG4gICAgICAgIGZvciAoY29uc3QgayBvZiBrZXlzKSB7XG4gICAgICAgICAgICBpZiAoIWl0ZW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFpdGVtLmhhc093blByb3BlcnR5KGspKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpdGVtID0gaXRlbVtrXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlU2VhcmNoSW5wdXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl92YWx1ZSBpbnN0YW5jZW9mIE5pY2VUeXBlYWhlYWROZXdWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMYWJlbCh0aGlzLl92YWx1ZS4kbmV3KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuc2VydmljZS5nZXRBY3RpdmUoKTtcbiAgICAgICAgaWYgKGFjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMYWJlbChhY3RpdmUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBjaGVja0lmVmFsdWVTdGlsbEV4aXN0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5fdmFsdWUgaW5zdGFuY2VvZiBOaWNlVHlwZWFoZWFkTmV3VmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGl0ZW1zID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5zZXJ2aWNlLmZpbHRlcmVkSXRlbXMkKTtcbiAgICAgICAgY29uc3QgaXRlbSA9IGl0ZW1zLmZpbmQoXG4gICAgICAgICAgICB2ID0+ICh0aGlzLmJpbmRWYWx1ZSAmJiB0eXBlb2YgdiA9PT0gXCJvYmplY3RcIiA/IHRoaXMuZ2V0T2JqZWN0SXRlbSh0aGlzLmJpbmRWYWx1ZSwgdikgOiB2KSA9PT0gdGhpcy5fdmFsdWVcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl92YWx1ZSAhPT0gbnVsbCAmJiB0aGlzLl92YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLm9uUmVtb3ZlKG51bGwpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInsgbG9hZGluZzogc2VydmljZS5sb2FkaW5nJCB8IGFzeW5jLCBsb2FkaW5nUGFnZTogc2VydmljZS5sb2FkaW5nUGFnZSQgfCBhc3luYywgdmFsdWVzOiBzZXJ2aWNlLmZpbHRlcmVkSXRlbXMkIHwgYXN5bmMgfSBhcyBjdHhcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleFwiICpuZ0lmPVwiIWRpc2FibGVkOyBlbHNlIGRpc2FibGVcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjc2VhcmNoSW5wdXRcbiAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICBjbGFzcz1cImZsZXgtYXV0b1wiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBuYW1lPVwibWF0LWF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiJGFueShkaXNhYmxlZClcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJzZWFyY2hDb250cm9sXCJcbiAgICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwiJGFueShyZXF1aXJlZClcIlxuICAgICAgICAgICAgKGZvY3VzKT1cImZvY3VzQ2hhbmdlZCh0cnVlKVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInZhbHVlICYmICFjdHgubG9hZGluZ1wiIG1hdFN1ZmZpeCBjbGFzcz1cImNsb3NlLWJ1dHRvbiBzZWNvbmRhcnktdGV4dFwiIChjbGljayk9XCJvblJlbW92ZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICBjbG9zZVxuICAgICAgICA8L21hdC1pY29uPlxuXG4gICAgICAgIDxtYXQtc3Bpbm5lciBjbGFzcz1cInNlbGYtY2VudGVyXCIgW2RpYW1ldGVyXT1cIjE2XCIgKm5nSWY9XCJjdHgubG9hZGluZ1wiPjwvbWF0LXNwaW5uZXI+XG4gICAgPC9kaXY+XG4gICAgPG1hdC1hdXRvY29tcGxldGVcbiAgICAgICAgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIlxuICAgICAgICBbcGFuZWxXaWR0aF09XCJwYW5lbFdpZHRoXCJcbiAgICAgICAgW2NsYXNzXT1cInBhbmVsQ2xhc3NcIlxuICAgICAgICAob3B0aW9uQWN0aXZhdGVkKT1cIm9uT3B0aW9uQWN0aXZhdGVkKCRldmVudClcIlxuICAgICAgICAob3B0aW9uU2VsZWN0ZWQpPVwib25PcHRpb25TZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgKGNsb3NlZCk9XCJ1cGRhdGVTdGF0ZShmYWxzZSlcIlxuICAgICAgICAob3BlbmVkKT1cInVwZGF0ZVN0YXRlKHRydWUpXCJcbiAgICAgICAgKG9wdGlvbnNTY3JvbGwpPVwib25FbmRTY3JvbGwoKVwiXG4gICAgICAgIGF1dG9BY3RpdmVGaXJzdE9wdGlvblxuICAgID5cbiAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgY2xhc3M9XCItbXQtMlwiICpuZ0lmPVwib3BlbiAmJiBjdHgubG9hZGluZ1wiIG1vZGU9XCJpbmRldGVybWluYXRlXCIgY29sb3I9XCJwcmltYXJ5XCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuXG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgY3R4LnZhbHVlc1wiIFt2YWx1ZV09XCJvcHRpb25cIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIm9wdGlvblRlbXBsYXRlOyBlbHNlIGZvcm1hdFwiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwib3B0aW9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogb3B0aW9uIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2Zvcm1hdD5cbiAgICAgICAgICAgICAgICB7eyBmb3JtYXRMYWJlbChvcHRpb24pIH19XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0lmPVwiIWN0eC52YWx1ZXM/Lmxlbmd0aCAmJiAhYWxsb3dOb3RGb3VuZEl0ZW1zXCIgZGlzYWJsZWQ+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZW1wdHlQbGFjZWhvbGRlcjsgZWxzZSBkZWZhdWx0RW1wdHlQbGFjZWhvbGRlclwiPlxuICAgICAgICAgICAgICAgIHt7IGVtcHR5UGxhY2Vob2xkZXIgfX1cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0RW1wdHlQbGFjZWhvbGRlcj5cbiAgICAgICAgICAgICAgICB7eyBcImNvbXBvbmVudHMudHlwZWFoZWFkLm5vX2l0ZW1fZm91bmRcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdJZj1cIiFjdHgudmFsdWVzPy5sZW5ndGggJiYgYWxsb3dOb3RGb3VuZEl0ZW1zXCIgaWQ9XCJuZXctdmFsdWUtb3B0aW9uXCIgW3ZhbHVlXT1cInNlYXJjaENvbnRyb2wudmFsdWVcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaXRhbGljXCI+e3sgc2VhcmNoQ29udHJvbC52YWx1ZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICA8bWF0LXByb2dyZXNzLWJhciAqbmdJZj1cIm9wZW4gJiYgY3R4LmxvYWRpbmdQYWdlXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiBjb2xvcj1cInByaW1hcnlcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjZGlzYWJsZT5cbiAgICA8aW5wdXRcbiAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgY2xhc3M9XCJkaXNhYmxlZC1pbnB1dFwiXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cInRydWVcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwic2VhcmNoQ29udHJvbFwiXG4gICAgICAgIFtyZXF1aXJlZF09XCIkYW55KHJlcXVpcmVkKVwiXG4gICAgLz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -22,27 +22,27 @@ export class NiceAsyncTypeaheadModule {
22
22
  }))
23
23
  };
24
24
  }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.5", ngImport: i0, type: NiceAsyncTypeaheadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
26
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.5", ngImport: i0, type: NiceAsyncTypeaheadModule, declarations: [NiceAsyncTypeaheadComponent], imports: [CommonModule,
27
+ ReactiveFormsModule,
28
+ OptionScrollModule,
29
+ MatInputModule,
30
+ MatAutocompleteModule,
31
+ MatIconModule,
32
+ MatProgressSpinnerModule,
33
+ MatProgressBarModule,
34
+ TranslateModule], exports: [NiceAsyncTypeaheadComponent] }); }
35
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.5", ngImport: i0, type: NiceAsyncTypeaheadModule, imports: [CommonModule,
36
+ ReactiveFormsModule,
37
+ OptionScrollModule,
38
+ MatInputModule,
39
+ MatAutocompleteModule,
40
+ MatIconModule,
41
+ MatProgressSpinnerModule,
42
+ MatProgressBarModule,
43
+ TranslateModule] }); }
25
44
  }
26
- NiceAsyncTypeaheadModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NiceAsyncTypeaheadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
27
- NiceAsyncTypeaheadModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: NiceAsyncTypeaheadModule, declarations: [NiceAsyncTypeaheadComponent], imports: [CommonModule,
28
- ReactiveFormsModule,
29
- OptionScrollModule,
30
- MatInputModule,
31
- MatAutocompleteModule,
32
- MatIconModule,
33
- MatProgressSpinnerModule,
34
- MatProgressBarModule,
35
- TranslateModule], exports: [NiceAsyncTypeaheadComponent] });
36
- NiceAsyncTypeaheadModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NiceAsyncTypeaheadModule, imports: [CommonModule,
37
- ReactiveFormsModule,
38
- OptionScrollModule,
39
- MatInputModule,
40
- MatAutocompleteModule,
41
- MatIconModule,
42
- MatProgressSpinnerModule,
43
- MatProgressBarModule,
44
- TranslateModule] });
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NiceAsyncTypeaheadModule, decorators: [{
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.5", ngImport: i0, type: NiceAsyncTypeaheadModule, decorators: [{
46
46
  type: NgModule,
47
47
  args: [{
48
48
  imports: [
@@ -61,4 +61,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
61
61
  exports: [NiceAsyncTypeaheadComponent]
62
62
  }]
63
63
  }] });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtdHlwZWFoZWFkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvY29tcG9uZW50cy9hc3luYy10eXBlYWhlYWQvYXN5bmMtdHlwZWFoZWFkLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUF1QixRQUFRLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFFbkYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBbUIzRSxNQUFNLE9BQU8sd0JBQXdCO0lBQzFCLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBdUQ7UUFDMUUsT0FBTztZQUNILFFBQVEsRUFBRSx3QkFBd0I7WUFDbEMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMzQixPQUFPLEVBQUUsNkJBQTZCO2dCQUN0QyxRQUFRLEVBQUUsQ0FBQztnQkFDWCxLQUFLLEVBQUUsSUFBSTthQUNkLENBQUMsQ0FBQztTQUNOLENBQUM7SUFDTixDQUFDOztxSEFWUSx3QkFBd0I7c0hBQXhCLHdCQUF3QixpQkFKbEIsMkJBQTJCLGFBVnRDLFlBQVk7UUFDWixtQkFBbUI7UUFDbkIsa0JBQWtCO1FBQ2xCLGNBQWM7UUFDZCxxQkFBcUI7UUFDckIsYUFBYTtRQUNiLHdCQUF3QjtRQUN4QixvQkFBb0I7UUFDcEIsZUFBZSxhQUlULDJCQUEyQjtzSEFFNUIsd0JBQXdCLFlBZDdCLFlBQVk7UUFDWixtQkFBbUI7UUFDbkIsa0JBQWtCO1FBQ2xCLGNBQWM7UUFDZCxxQkFBcUI7UUFDckIsYUFBYTtRQUNiLHdCQUF3QjtRQUN4QixvQkFBb0I7UUFDcEIsZUFBZTsyRkFNVix3QkFBd0I7a0JBaEJwQyxRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLHFCQUFxQjt3QkFDckIsYUFBYTt3QkFDYix3QkFBd0I7d0JBQ3hCLG9CQUFvQjt3QkFDcEIsZUFBZTtxQkFDbEI7b0JBQ0QsWUFBWSxFQUFFLENBQUMsMkJBQTJCLENBQUM7b0JBQzNDLFNBQVMsRUFBRSxFQUFFO29CQUNiLE9BQU8sRUFBRSxDQUFDLDJCQUEyQixDQUFDO2lCQUN6QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlLCBUeXBlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZU1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGVcIjtcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXRcIjtcbmltcG9ydCB7IE1hdFByb2dyZXNzQmFyTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhclwiO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXJcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBPcHRpb25TY3JvbGxNb2R1bGUgfSBmcm9tIFwiLi4vdHlwZWFoZWFkL2RpcmVjdGl2ZXMvb3B0aW9ucy1zY3JvbGwubW9kdWxlXCI7XG5cbmltcG9ydCB7IE5pY2VBc3luY1R5cGVhaGVhZENvbXBvbmVudCB9IGZyb20gXCIuL2FzeW5jLXR5cGVhaGVhZC5jb21wb25lbnRcIjtcbmltcG9ydCB7IE5JQ0VfQVNZTkNfVFlQRUFIRUFEX1BST1ZJREVSIH0gZnJvbSBcIi4vYXN5bmMtdHlwZWFoZWFkLmNvbnN0YW50XCI7XG5pbXBvcnQgeyBOaWNlQXN5bmNUeXBlYWhlYWRQcm92aWRlciB9IGZyb20gXCIuL3Byb3ZpZGVycy9hc3luYy10eXBlYWhlYWQucHJvdmlkZXJcIjtcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgT3B0aW9uU2Nyb2xsTW9kdWxlLFxuICAgICAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICAgICAgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxuICAgICAgICBNYXRJY29uTW9kdWxlLFxuICAgICAgICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXG4gICAgICAgIE1hdFByb2dyZXNzQmFyTW9kdWxlLFxuICAgICAgICBUcmFuc2xhdGVNb2R1bGVcbiAgICBdLFxuICAgIGRlY2xhcmF0aW9uczogW05pY2VBc3luY1R5cGVhaGVhZENvbXBvbmVudF0sXG4gICAgcHJvdmlkZXJzOiBbXSxcbiAgICBleHBvcnRzOiBbTmljZUFzeW5jVHlwZWFoZWFkQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBOaWNlQXN5bmNUeXBlYWhlYWRNb2R1bGUge1xuICAgIHB1YmxpYyBzdGF0aWMgcmVnaXN0ZXIocHJvdmlkZXJzOiBUeXBlPE5pY2VBc3luY1R5cGVhaGVhZFByb3ZpZGVyPGFueSwgYW55Pj5bXSk6IE1vZHVsZVdpdGhQcm92aWRlcnM8TmljZUFzeW5jVHlwZWFoZWFkTW9kdWxlPiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuZ01vZHVsZTogTmljZUFzeW5jVHlwZWFoZWFkTW9kdWxlLFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBwcm92aWRlcnMubWFwKHggPT4gKHtcbiAgICAgICAgICAgICAgICBwcm92aWRlOiBOSUNFX0FTWU5DX1RZUEVBSEVBRF9QUk9WSURFUixcbiAgICAgICAgICAgICAgICB1c2VDbGFzczogeCxcbiAgICAgICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICAgICAgfSkpXG4gICAgICAgIH07XG4gICAgfVxufVxuIl19
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtdHlwZWFoZWFkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvY29tcG9uZW50cy9hc3luYy10eXBlYWhlYWQvYXN5bmMtdHlwZWFoZWFkLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUF1QixRQUFRLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFFbkYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBbUIzRSxNQUFNLE9BQU8sd0JBQXdCO0lBQzFCLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBdUQ7UUFDMUUsT0FBTztZQUNILFFBQVEsRUFBRSx3QkFBd0I7WUFDbEMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMzQixPQUFPLEVBQUUsNkJBQTZCO2dCQUN0QyxRQUFRLEVBQUUsQ0FBQztnQkFDWCxLQUFLLEVBQUUsSUFBSTthQUNkLENBQUMsQ0FBQztTQUNOLENBQUM7SUFDTixDQUFDOzhHQVZRLHdCQUF3QjsrR0FBeEIsd0JBQXdCLGlCQUpsQiwyQkFBMkIsYUFWdEMsWUFBWTtZQUNaLG1CQUFtQjtZQUNuQixrQkFBa0I7WUFDbEIsY0FBYztZQUNkLHFCQUFxQjtZQUNyQixhQUFhO1lBQ2Isd0JBQXdCO1lBQ3hCLG9CQUFvQjtZQUNwQixlQUFlLGFBSVQsMkJBQTJCOytHQUU1Qix3QkFBd0IsWUFkN0IsWUFBWTtZQUNaLG1CQUFtQjtZQUNuQixrQkFBa0I7WUFDbEIsY0FBYztZQUNkLHFCQUFxQjtZQUNyQixhQUFhO1lBQ2Isd0JBQXdCO1lBQ3hCLG9CQUFvQjtZQUNwQixlQUFlOzsyRkFNVix3QkFBd0I7a0JBaEJwQyxRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLHFCQUFxQjt3QkFDckIsYUFBYTt3QkFDYix3QkFBd0I7d0JBQ3hCLG9CQUFvQjt3QkFDcEIsZUFBZTtxQkFDbEI7b0JBQ0QsWUFBWSxFQUFFLENBQUMsMkJBQTJCLENBQUM7b0JBQzNDLFNBQVMsRUFBRSxFQUFFO29CQUNiLE9BQU8sRUFBRSxDQUFDLDJCQUEyQixDQUFDO2lCQUN6QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlLCBUeXBlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZU1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGVcIjtcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXRcIjtcbmltcG9ydCB7IE1hdFByb2dyZXNzQmFyTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhclwiO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXJcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBPcHRpb25TY3JvbGxNb2R1bGUgfSBmcm9tIFwiLi4vdHlwZWFoZWFkL2RpcmVjdGl2ZXMvb3B0aW9ucy1zY3JvbGwubW9kdWxlXCI7XG5cbmltcG9ydCB7IE5pY2VBc3luY1R5cGVhaGVhZENvbXBvbmVudCB9IGZyb20gXCIuL2FzeW5jLXR5cGVhaGVhZC5jb21wb25lbnRcIjtcbmltcG9ydCB7IE5JQ0VfQVNZTkNfVFlQRUFIRUFEX1BST1ZJREVSIH0gZnJvbSBcIi4vYXN5bmMtdHlwZWFoZWFkLmNvbnN0YW50XCI7XG5pbXBvcnQgeyBOaWNlQXN5bmNUeXBlYWhlYWRQcm92aWRlciB9IGZyb20gXCIuL3Byb3ZpZGVycy9hc3luYy10eXBlYWhlYWQucHJvdmlkZXJcIjtcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgT3B0aW9uU2Nyb2xsTW9kdWxlLFxuICAgICAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICAgICAgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxuICAgICAgICBNYXRJY29uTW9kdWxlLFxuICAgICAgICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXG4gICAgICAgIE1hdFByb2dyZXNzQmFyTW9kdWxlLFxuICAgICAgICBUcmFuc2xhdGVNb2R1bGVcbiAgICBdLFxuICAgIGRlY2xhcmF0aW9uczogW05pY2VBc3luY1R5cGVhaGVhZENvbXBvbmVudF0sXG4gICAgcHJvdmlkZXJzOiBbXSxcbiAgICBleHBvcnRzOiBbTmljZUFzeW5jVHlwZWFoZWFkQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBOaWNlQXN5bmNUeXBlYWhlYWRNb2R1bGUge1xuICAgIHB1YmxpYyBzdGF0aWMgcmVnaXN0ZXIocHJvdmlkZXJzOiBUeXBlPE5pY2VBc3luY1R5cGVhaGVhZFByb3ZpZGVyPGFueSwgYW55Pj5bXSk6IE1vZHVsZVdpdGhQcm92aWRlcnM8TmljZUFzeW5jVHlwZWFoZWFkTW9kdWxlPiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuZ01vZHVsZTogTmljZUFzeW5jVHlwZWFoZWFkTW9kdWxlLFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBwcm92aWRlcnMubWFwKHggPT4gKHtcbiAgICAgICAgICAgICAgICBwcm92aWRlOiBOSUNFX0FTWU5DX1RZUEVBSEVBRF9QUk9WSURFUixcbiAgICAgICAgICAgICAgICB1c2VDbGFzczogeCxcbiAgICAgICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICAgICAgfSkpXG4gICAgICAgIH07XG4gICAgfVxufVxuIl19