ecabs-components 1.1.75 → 1.1.76

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 (247) hide show
  1. package/README.md +145 -143
  2. package/esm2022/lib/base/adapters/date.adapter.mjs +1 -1
  3. package/esm2022/lib/base/consts/buttons.consts.mjs +1 -1
  4. package/esm2022/lib/base/consts/country-codes.mjs +1 -1
  5. package/esm2022/lib/base/consts/error-messages.consts.mjs +1 -1
  6. package/esm2022/lib/base/consts/images.consts.mjs +1 -1
  7. package/esm2022/lib/base/consts/translations.consts.mjs +1 -1
  8. package/esm2022/lib/base/consts/waypoint.consts.mjs +1 -1
  9. package/esm2022/lib/base/directives/attach-embedded-view.directive.mjs +1 -1
  10. package/esm2022/lib/base/directives/attach-embedded-view.directive.module.mjs +1 -1
  11. package/esm2022/lib/base/directives/check-permissions.directive.mjs +1 -1
  12. package/esm2022/lib/base/directives/check-permissions.directive.module.mjs +1 -1
  13. package/esm2022/lib/base/directives/date-mask.directive.mjs +1 -1
  14. package/esm2022/lib/base/directives/date-mask.directive.module.mjs +1 -1
  15. package/esm2022/lib/base/directives/digits-only.directive.mjs +1 -1
  16. package/esm2022/lib/base/directives/digits-only.directive.module.mjs +1 -1
  17. package/esm2022/lib/base/directives/dom-observer.directive.mjs +1 -1
  18. package/esm2022/lib/base/directives/dom-observer.directive.module.mjs +1 -1
  19. package/esm2022/lib/base/directives/dynamic-bg-color.directive.mjs +1 -1
  20. package/esm2022/lib/base/directives/dynamic-bg-color.directive.module.mjs +1 -1
  21. package/esm2022/lib/base/directives/element-multiplier.directive.mjs +1 -1
  22. package/esm2022/lib/base/directives/element-multiplier.directive.module.mjs +1 -1
  23. package/esm2022/lib/base/directives/file-drop.directive.mjs +1 -1
  24. package/esm2022/lib/base/directives/file-drop.directive.module.mjs +1 -1
  25. package/esm2022/lib/base/directives/min-max.directive.mjs +1 -1
  26. package/esm2022/lib/base/directives/min-max.directive.module.mjs +1 -1
  27. package/esm2022/lib/base/directives/number-border.directive.mjs +1 -1
  28. package/esm2022/lib/base/directives/number-border.directive.module.mjs +1 -1
  29. package/esm2022/lib/base/directives/paginator.directive.mjs +1 -1
  30. package/esm2022/lib/base/directives/paginator.directive.module.mjs +1 -1
  31. package/esm2022/lib/base/directives/show-on-truncated.directive.mjs +1 -1
  32. package/esm2022/lib/base/directives/show-on-truncated.directive.module.mjs +1 -1
  33. package/esm2022/lib/base/directives/time-mask.directive.mjs +1 -1
  34. package/esm2022/lib/base/directives/time-mask.directive.module.mjs +1 -1
  35. package/esm2022/lib/base/directives/time-range.directive.mjs +1 -1
  36. package/esm2022/lib/base/directives/time-range.directive.module.mjs +1 -1
  37. package/esm2022/lib/base/directives/tooltip-if-truncated.directive.mjs +1 -1
  38. package/esm2022/lib/base/directives/tooltip-if-truncated.directive.module.mjs +1 -1
  39. package/esm2022/lib/base/directives/uppercase-mask.directive.mjs +1 -1
  40. package/esm2022/lib/base/directives/uppercase-mask.directive.module.mjs +1 -1
  41. package/esm2022/lib/base/element-base.mjs +1 -1
  42. package/esm2022/lib/base/element-wrapper/element-wrapper.component.mjs +3 -3
  43. package/esm2022/lib/base/element-wrapper/element-wrapper.module.mjs +1 -1
  44. package/esm2022/lib/base/models/bread-crumb.models.mjs +1 -1
  45. package/esm2022/lib/base/models/ecabs-date-picker-translations.models.mjs +1 -1
  46. package/esm2022/lib/base/models/element.models.mjs +1 -1
  47. package/esm2022/lib/base/models/header.models.mjs +1 -1
  48. package/esm2022/lib/base/models/phone.models.mjs +1 -1
  49. package/esm2022/lib/base/models/select.models.mjs +1 -1
  50. package/esm2022/lib/base/models/sidebar.models.mjs +1 -1
  51. package/esm2022/lib/base/models/slider.models.mjs +1 -1
  52. package/esm2022/lib/base/models/timepicker.models.mjs +1 -1
  53. package/esm2022/lib/base/models/user-claim.models.mjs +1 -1
  54. package/esm2022/lib/base/models/validation.models.mjs +1 -1
  55. package/esm2022/lib/base/models/waypoint.models.mjs +1 -4
  56. package/esm2022/lib/base/pipes/phone-number-country-code.pipe.mjs +1 -1
  57. package/esm2022/lib/base/pipes/pipes.module.mjs +1 -1
  58. package/esm2022/lib/base/pipes/search.pipe.mjs +1 -1
  59. package/esm2022/lib/base/pipes/separator-append.pipe.mjs +1 -1
  60. package/esm2022/lib/base/pipes/truncate.pipe.mjs +1 -1
  61. package/esm2022/lib/base/services/ecabs-components.service.mjs +1 -1
  62. package/esm2022/lib/base/services/ecabs-date-picker-translations.service.mjs +1 -1
  63. package/esm2022/lib/base/services/header.service.mjs +1 -1
  64. package/esm2022/lib/base/services/unsubscribe.service.mjs +1 -1
  65. package/esm2022/lib/base/utils/menu-utils.mjs +1 -1
  66. package/esm2022/lib/base/utils/object-utils.mjs +1 -1
  67. package/esm2022/lib/base/utils/phone-number.utils.mjs +1 -1
  68. package/esm2022/lib/base/utils/time-mask.util.mjs +1 -1
  69. package/esm2022/lib/base/validation/validation.component.mjs +3 -3
  70. package/esm2022/lib/base/validation/validation.module.mjs +1 -1
  71. package/esm2022/lib/base/validators/date-range.validator.mjs +1 -1
  72. package/esm2022/lib/base/validators/phone-number.validator.mjs +1 -1
  73. package/esm2022/lib/ecabs-active-status-filter/ecabs-active-status-filter.component.mjs +3 -3
  74. package/esm2022/lib/ecabs-active-status-filter/ecabs-active-status-filter.module.mjs +1 -1
  75. package/esm2022/lib/ecabs-base-phone-input/ecabs-base-phone.component.mjs +3 -3
  76. package/esm2022/lib/ecabs-base-phone-input/ecabs-base-phone.module.mjs +1 -1
  77. package/esm2022/lib/ecabs-breadcrumb/ecabs-breadcrumb.component.mjs +3 -3
  78. package/esm2022/lib/ecabs-breadcrumb/ecabs-breadcrumb.module.mjs +1 -1
  79. package/esm2022/lib/ecabs-button-toggle/ecabs-button-toggle.component.mjs +3 -3
  80. package/esm2022/lib/ecabs-button-toggle/ecabs-button-toggle.module.mjs +1 -1
  81. package/esm2022/lib/ecabs-buttons/ecabs-buttons.component.mjs +3 -3
  82. package/esm2022/lib/ecabs-buttons/ecabs-buttons.module.mjs +1 -1
  83. package/esm2022/lib/ecabs-buttons-v2/ecabs-buttons-v2.component.mjs +3 -3
  84. package/esm2022/lib/ecabs-buttons-v2/ecabs-buttons-v2.module.mjs +1 -1
  85. package/esm2022/lib/ecabs-checkbox-toggle/ecabs-checkbox-toggle.component.mjs +3 -3
  86. package/esm2022/lib/ecabs-checkbox-toggle/ecabs-checkbox-toggle.module.mjs +1 -1
  87. package/esm2022/lib/ecabs-checkbox-v2/ecabs-checkbox-v2.component.mjs +3 -3
  88. package/esm2022/lib/ecabs-checkbox-v2/ecabs-checkbox-v2.module.mjs +1 -1
  89. package/esm2022/lib/ecabs-chip-autocomplete/ecabs-chip-autocomplete.component.mjs +3 -5
  90. package/esm2022/lib/ecabs-chip-group/ecabs-chip-group.component.mjs +3 -3
  91. package/esm2022/lib/ecabs-chip-group/ecabs-chip-group.module.mjs +1 -1
  92. package/esm2022/lib/ecabs-date-picker/components/ecabs-date-picker-header/ecabs-date-picker-header.component.mjs +3 -3
  93. package/esm2022/lib/ecabs-date-picker/ecabs-date-picker.component.mjs +3 -3
  94. package/esm2022/lib/ecabs-date-picker/ecabs-date-picker.module.mjs +1 -1
  95. package/esm2022/lib/ecabs-date-picker-actions/ecabs-date-picker-actions.component.mjs +3 -3
  96. package/esm2022/lib/ecabs-date-picker-actions/ecabs-date-picker-actions.module.mjs +1 -1
  97. package/esm2022/lib/ecabs-date-range-picker/components/ecabs-date-range-picker-header/ecabs-date-range-picker-header.component.mjs +3 -3
  98. package/esm2022/lib/ecabs-date-range-picker/ecabs-date-range-picker.component.mjs +3 -3
  99. package/esm2022/lib/ecabs-date-range-picker/ecabs-date-range-picker.module.mjs +1 -1
  100. package/esm2022/lib/ecabs-date-range-picker-v2/components/ecabs-date-range-picker-header/ecabs-date-range-picker-header-v2.component.mjs +3 -3
  101. package/esm2022/lib/ecabs-date-range-picker-v2/ecabs-date-range-picker-v2.component.mjs +3 -3
  102. package/esm2022/lib/ecabs-date-range-picker-v2/ecabs-date-range-picker-v2.module.mjs +1 -1
  103. package/esm2022/lib/ecabs-date-time-picker/components/ecabs-date-time-picker-header/ecabs-date-time-picker-header.component.mjs +3 -3
  104. package/esm2022/lib/ecabs-date-time-picker/ecabs-date-time-picker.component.mjs +3 -3
  105. package/esm2022/lib/ecabs-date-time-picker/ecabs-date-time-picker.module.mjs +1 -1
  106. package/esm2022/lib/ecabs-date-time-range-picker/components/ecabs-date-time-range-picker-header/ecabs-date-time-range-picker-header.component.mjs +3 -3
  107. package/esm2022/lib/ecabs-date-time-range-picker/ecabs-date-time-range-picker.component.mjs +3 -3
  108. package/esm2022/lib/ecabs-date-time-range-picker/ecabs-date-time-range-picker.module.mjs +1 -1
  109. package/esm2022/lib/ecabs-dialog-confirm/ecabs-dialog-confirm.component.mjs +3 -3
  110. package/esm2022/lib/ecabs-dialog-confirm/ecabs-dialog-confirm.module.mjs +1 -1
  111. package/esm2022/lib/ecabs-dialog-confirm-deletion/ecabs-dialog-confirm-deletion.component.mjs +3 -3
  112. package/esm2022/lib/ecabs-dialog-confirm-deletion/ecabs-dialog-confirm-deletion.module.mjs +1 -1
  113. package/esm2022/lib/ecabs-dialog-message/ecabs-dialog-message.component.mjs +3 -3
  114. package/esm2022/lib/ecabs-dialog-message/ecabs-dialog-message.module.mjs +1 -1
  115. package/esm2022/lib/ecabs-empty-placeholder/ecabs-empty-placeholder.component.mjs +3 -3
  116. package/esm2022/lib/ecabs-empty-placeholder/ecabs-empty-placeholder.module.mjs +1 -1
  117. package/esm2022/lib/ecabs-expansion-panel/ecabs-expansion-panel.component.mjs +3 -3
  118. package/esm2022/lib/ecabs-expansion-panel/ecabs-expansion-panel.module.mjs +1 -1
  119. package/esm2022/lib/ecabs-header/ecabs-header.component.mjs +3 -3
  120. package/esm2022/lib/ecabs-header/ecabs-header.module.mjs +1 -1
  121. package/esm2022/lib/ecabs-hint/ecabs-hint.component.mjs +3 -3
  122. package/esm2022/lib/ecabs-hint/ecabs-hint.module.mjs +1 -1
  123. package/esm2022/lib/ecabs-increment/ecabs-increment.component.mjs +3 -3
  124. package/esm2022/lib/ecabs-increment/ecabs-increment.module.mjs +1 -1
  125. package/esm2022/lib/ecabs-input/ecabs-input.component.mjs +3 -3
  126. package/esm2022/lib/ecabs-input/ecabs-input.module.mjs +1 -1
  127. package/esm2022/lib/ecabs-input-range/ecabs-input-range.component.mjs +3 -3
  128. package/esm2022/lib/ecabs-input-range/ecabs-input-range.module.mjs +1 -1
  129. package/esm2022/lib/ecabs-language-selector/ecabs-language-selector.component.mjs +3 -3
  130. package/esm2022/lib/ecabs-language-selector/ecabs-language-selector.module.mjs +1 -1
  131. package/esm2022/lib/ecabs-loading/ecabs-loading.component.mjs +3 -3
  132. package/esm2022/lib/ecabs-loading/ecabs-loading.module.mjs +1 -1
  133. package/esm2022/lib/ecabs-loading/spinner/spinner.component.mjs +3 -3
  134. package/esm2022/lib/ecabs-logo/ecabs-logo.component.mjs +3 -3
  135. package/esm2022/lib/ecabs-logo/ecabs-logo.module.mjs +1 -1
  136. package/esm2022/lib/ecabs-menu-items/ecabs-menu-items.component.mjs +3 -3
  137. package/esm2022/lib/ecabs-menu-items/ecabs-menu-items.module.mjs +1 -1
  138. package/esm2022/lib/ecabs-multiple-dates-picker/ecabs-multiple-dates-picker.component.mjs +3 -3
  139. package/esm2022/lib/ecabs-multiple-dates-picker/ecabs-multiple-dates-picker.module.mjs +1 -1
  140. package/esm2022/lib/ecabs-note/ecabs-note.component.mjs +3 -3
  141. package/esm2022/lib/ecabs-note/ecabs-note.module.mjs +1 -1
  142. package/esm2022/lib/ecabs-phone/ecabs-phone.component.mjs +3 -3
  143. package/esm2022/lib/ecabs-phone/ecabs-phone.module.mjs +1 -1
  144. package/esm2022/lib/ecabs-picker-header/ecabs-picker-header.component.mjs +3 -3
  145. package/esm2022/lib/ecabs-picker-header/ecabs-picker-header.module.mjs +1 -1
  146. package/esm2022/lib/ecabs-place-autocomplete/ecabs-place-autocomplete.component.mjs +3 -3
  147. package/esm2022/lib/ecabs-place-autocomplete/ecabs-place-autocomplete.module.mjs +1 -1
  148. package/esm2022/lib/ecabs-place-autocomplete-v2/ecabs-place-autocomplete-v2.component.mjs +93 -61
  149. package/esm2022/lib/ecabs-place-autocomplete-v2/ecabs-place-autocomplete-v2.module.mjs +1 -1
  150. package/esm2022/lib/ecabs-profile/ecabs-profile.component.mjs +3 -3
  151. package/esm2022/lib/ecabs-profile/ecabs-profile.module.mjs +1 -1
  152. package/esm2022/lib/ecabs-radio-button-list/ecabs-radio-button-list.component.mjs +3 -3
  153. package/esm2022/lib/ecabs-radio-button-list/ecabs-radio-button-list.module.mjs +1 -1
  154. package/esm2022/lib/ecabs-segment/ecabs-segment.component.mjs +3 -3
  155. package/esm2022/lib/ecabs-select/ecabs-select.component.mjs +4 -4
  156. package/esm2022/lib/ecabs-select/ecabs-select.module.mjs +1 -1
  157. package/esm2022/lib/ecabs-select-v2/ecabs-select-v2.component.mjs +3 -3
  158. package/esm2022/lib/ecabs-select-v2/ecabs-select-v2.module.mjs +1 -1
  159. package/esm2022/lib/ecabs-sidebar/ecabs-sidebar.component.mjs +3 -3
  160. package/esm2022/lib/ecabs-sidebar/ecabs-sidebar.module.mjs +1 -1
  161. package/esm2022/lib/ecabs-slider/ecabs-slider.component.mjs +3 -3
  162. package/esm2022/lib/ecabs-slider/ecabs-slider.module.mjs +1 -1
  163. package/esm2022/lib/ecabs-table/ecabs-table-filter-wrapper/ecabs-table-filter-wrapper.component.mjs +3 -3
  164. package/esm2022/lib/ecabs-table/ecabs-table-filter-wrapper/ecabs-table-filter-wrapper.module.mjs +1 -1
  165. package/esm2022/lib/ecabs-table/ecabs-table.component.mjs +3 -3
  166. package/esm2022/lib/ecabs-table/ecabs-table.module.mjs +1 -1
  167. package/esm2022/lib/ecabs-textarea/ecabs-textarea.component.mjs +3 -3
  168. package/esm2022/lib/ecabs-textarea/ecabs-textarea.module.mjs +1 -1
  169. package/esm2022/lib/ecabs-time-range-input-v2/config.model.mjs +1 -1
  170. package/esm2022/lib/ecabs-time-range-input-v2/ecabs-time-range-input-v2.component.mjs +3 -3
  171. package/esm2022/lib/ecabs-time-range-input-v2/ecabs-time-range-input-v2.module.mjs +1 -1
  172. package/esm2022/lib/ecabs-time-range-input-v2/ecabs-time-range-input-v2.service.mjs +1 -1
  173. package/esm2022/lib/ecabs-timepicker/componets/ecabs-time-list-panel/ecabs-time-list-panel.component.mjs +3 -3
  174. package/esm2022/lib/ecabs-timepicker/config.model.mjs +1 -1
  175. package/esm2022/lib/ecabs-timepicker/ecabs-timepicker.component.mjs +3 -3
  176. package/esm2022/lib/ecabs-timepicker/ecabs-timepicker.module.mjs +1 -1
  177. package/esm2022/lib/ecabs-timepicker/ecabs-timepicker.service.mjs +1 -1
  178. package/esm2022/lib/ecabs-validation/ecabs-validation.component.mjs +3 -3
  179. package/esm2022/lib/ecabs-validation/ecabs-validation.module.mjs +1 -1
  180. package/esm2022/public-api.mjs +1 -1
  181. package/fesm2022/ecabs-components.mjs +208 -182
  182. package/fesm2022/ecabs-components.mjs.map +1 -1
  183. package/lib/base/models/waypoint.models.d.ts +1 -2
  184. package/lib/ecabs-place-autocomplete-v2/ecabs-place-autocomplete-v2.component.d.ts +21 -13
  185. package/package.json +1 -1
  186. package/src/assets/images/nothing-here.svg +22 -22
  187. package/src/assets/images/promotions.svg +3 -3
  188. package/src/assets/styles/material/_theme.scss +100 -100
  189. package/src/assets/styles/material/overrides/_autocomplete.scss +34 -34
  190. package/src/assets/styles/material/overrides/_button.scss +134 -134
  191. package/src/assets/styles/material/overrides/_card.scss +55 -55
  192. package/src/assets/styles/material/overrides/_chip.scss +240 -240
  193. package/src/assets/styles/material/overrides/_datepicker.scss +178 -178
  194. package/src/assets/styles/material/overrides/_dialog.scss +25 -25
  195. package/src/assets/styles/material/overrides/_divider.scss +5 -5
  196. package/src/assets/styles/material/overrides/_expansion.scss +32 -32
  197. package/src/assets/styles/material/overrides/_form.scss +90 -90
  198. package/src/assets/styles/material/overrides/_icon.scss +8 -8
  199. package/src/assets/styles/material/overrides/_menu.scss +13 -9
  200. package/src/assets/styles/material/overrides/_paginator.scss +75 -75
  201. package/src/assets/styles/material/overrides/_phone.scss +55 -55
  202. package/src/assets/styles/material/overrides/_progress.scss +7 -7
  203. package/src/assets/styles/material/overrides/_select.scss +199 -199
  204. package/src/assets/styles/material/overrides/_sidebar.scss +6 -6
  205. package/src/assets/styles/material/overrides/_tab.scss +41 -41
  206. package/src/assets/styles/material/overrides/_table.scss +27 -27
  207. package/src/assets/styles/material/overrides/_toaster.scss +36 -36
  208. package/src/assets/styles/material/overrides/_toggle.scss +54 -54
  209. package/src/assets/styles/material/overrides/_toolbar.scss +3 -3
  210. package/src/assets/styles/material/overrides/_tooltip.scss +7 -7
  211. package/src/assets/styles/material/overrides/index.scss +22 -22
  212. package/src/assets/styles/scss/base/_heading.scss +17 -17
  213. package/src/assets/styles/scss/base/_normalize.scss +99 -99
  214. package/src/assets/styles/scss/base/index.scss +2 -2
  215. package/src/assets/styles/scss/modules/_autocomplete.scss +42 -42
  216. package/src/assets/styles/scss/modules/_button.scss +272 -272
  217. package/src/assets/styles/scss/modules/_card.scss +46 -46
  218. package/src/assets/styles/scss/modules/_chip.scss +64 -64
  219. package/src/assets/styles/scss/modules/_datepicker.scss +435 -435
  220. package/src/assets/styles/scss/modules/_dialog.scss +15 -15
  221. package/src/assets/styles/scss/modules/_divider.scss +4 -4
  222. package/src/assets/styles/scss/modules/_form.scss +312 -312
  223. package/src/assets/styles/scss/modules/_icon.scss +30 -30
  224. package/src/assets/styles/scss/modules/_img.scss +32 -32
  225. package/src/assets/styles/scss/modules/_legend.scss +64 -64
  226. package/src/assets/styles/scss/modules/_list.scss +17 -17
  227. package/src/assets/styles/scss/modules/_map.scss +221 -221
  228. package/src/assets/styles/scss/modules/_percentage.scss +41 -41
  229. package/src/assets/styles/scss/modules/_phone.scss +32 -32
  230. package/src/assets/styles/scss/modules/_select.scss +17 -17
  231. package/src/assets/styles/scss/modules/_statuses.scss +36 -36
  232. package/src/assets/styles/scss/modules/_tab.scss +16 -16
  233. package/src/assets/styles/scss/modules/_table.scss +132 -132
  234. package/src/assets/styles/scss/modules/_timepicker.scss +91 -91
  235. package/src/assets/styles/scss/modules/_toaster.scss +53 -53
  236. package/src/assets/styles/scss/modules/_tooltip.scss +10 -10
  237. package/src/assets/styles/scss/modules/drag-drop.scss +31 -31
  238. package/src/assets/styles/scss/modules/index.scss +23 -23
  239. package/src/assets/styles/scss/utilities/_colors.scss +58 -58
  240. package/src/assets/styles/scss/utilities/_fonts.scss +31 -31
  241. package/src/assets/styles/scss/utilities/_functions.scss +27 -27
  242. package/src/assets/styles/scss/utilities/_helpers.scss +14 -14
  243. package/src/assets/styles/scss/utilities/_mixins.scss +65 -65
  244. package/src/assets/styles/scss/utilities/_variables.scss +32 -32
  245. package/src/assets/styles/scss/utilities/index.scss +6 -6
  246. package/src/assets/styles/styles.scss +5 -5
  247. package/src/assets/styles/tailwind/index.scss +1 -1
@@ -1,8 +1,9 @@
1
- import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
1
+ import { Component, DestroyRef, EventEmitter, inject, Injector, Input, NgZone, Output, ViewChild, } from '@angular/core';
2
2
  import { NG_VALUE_ACCESSOR, NgControl, } from '@angular/forms';
3
3
  import EcabsElementBaseComponent from '../base/element-base';
4
- import { BehaviorSubject, combineLatest, debounceTime, map, Observable, of, } from 'rxjs';
4
+ import { BehaviorSubject, combineLatest, debounceTime, distinctUntilChanged, map, Observable, of, startWith, Subject, tap, } from 'rxjs';
5
5
  import { switchMap } from 'rxjs/operators';
6
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
7
  import * as i0 from "@angular/core";
7
8
  import * as i1 from "@angular/common";
8
9
  import * as i2 from "../base/element-wrapper/element-wrapper.component";
@@ -11,28 +12,36 @@ import * as i4 from "@angular/material/icon";
11
12
  import * as i5 from "@angular/cdk/overlay";
12
13
  import * as i6 from "../base/pipes/separator-append.pipe";
13
14
  export class EcabsPlaceAutocompleteV2Component extends EcabsElementBaseComponent {
14
- ngZone;
15
- injector;
16
15
  matCustomInput;
17
16
  showDeleteItem = false;
18
- waypointsHistory = [];
17
+ set waypointsHistory(value) {
18
+ this.waypointsHistory$.next(value ?? []);
19
+ }
19
20
  showSuffix = false;
20
21
  countryCode = 'MT';
21
22
  googleLoaded;
22
23
  waypointType;
23
- debounceTime = 240;
24
+ debounceMs = 240;
24
25
  placeResult = new EventEmitter();
25
26
  deleteItem = new EventEmitter();
26
27
  queryChanged = new EventEmitter();
27
28
  isFocused$ = new BehaviorSubject(false);
28
- value$ = new BehaviorSubject('');
29
29
  waypointSuggestions$;
30
+ value$ = new BehaviorSubject('');
30
31
  selectedIndex = -1;
31
32
  displayedSuggestions = [];
33
+ inputQuery$ = new Subject();
34
+ waypointsHistory$ = new BehaviorSubject([]);
32
35
  _value = '';
33
- mapAutocompleteService;
36
+ autocompleteService;
34
37
  placesService;
35
38
  sessionToken;
39
+ isResolvingPlace = false;
40
+ MAX_SUGGESTIONS = 10;
41
+ emptySuggestions = [];
42
+ ngZone = inject(NgZone);
43
+ injector = inject(Injector);
44
+ destroyRef = inject(DestroyRef);
36
45
  get value() {
37
46
  return this._value;
38
47
  }
@@ -44,10 +53,8 @@ export class EcabsPlaceAutocompleteV2Component extends EcabsElementBaseComponent
44
53
  this.value$.next(value);
45
54
  this.onChange(value);
46
55
  }
47
- constructor(ngZone, injector) {
56
+ constructor() {
48
57
  super();
49
- this.ngZone = ngZone;
50
- this.injector = injector;
51
58
  }
52
59
  ngOnChanges(changes) {
53
60
  const { googleLoaded } = changes ?? {};
@@ -60,41 +67,42 @@ export class EcabsPlaceAutocompleteV2Component extends EcabsElementBaseComponent
60
67
  if (ngControl) {
61
68
  this.control = ngControl.control;
62
69
  }
70
+ this.inputQuery$
71
+ .pipe(debounceTime(this.debounceMs), distinctUntilChanged(), takeUntilDestroyed(this.destroyRef))
72
+ .subscribe((query) => {
73
+ this.queryChanged.emit({
74
+ waypoint_type: this.waypointType,
75
+ place_name: query,
76
+ });
77
+ });
78
+ const googleSuggestions$ = combineLatest([
79
+ this.isFocused$,
80
+ this.value$.pipe(debounceTime(this.debounceMs), distinctUntilChanged()),
81
+ ]).pipe(switchMap(([isFocused, value]) => this.autocompleteService && isFocused && value
82
+ ? this.getPlacesResults(value)
83
+ : of(this.emptySuggestions)), startWith(this.emptySuggestions));
63
84
  this.waypointSuggestions$ = combineLatest([
64
85
  this.isFocused$,
65
- this.value$,
66
- ]).pipe(debounceTime(this.debounceTime), switchMap(([isFocused, value]) => {
86
+ this.waypointsHistory$,
87
+ googleSuggestions$,
88
+ ]).pipe(map(([isFocused, history, google]) => {
67
89
  if (!isFocused) {
68
- return of([]);
69
- }
70
- if (!value) {
71
- return of(this.waypointsHistory);
90
+ return this.emptySuggestions;
72
91
  }
73
- return this.getWaypointResults(value);
74
- }), map((results) => {
75
- this.displayedSuggestions = results;
76
- this.selectedIndex = results?.length ? 0 : -1;
77
- return results;
78
- }));
79
- }
80
- onChange = () => { };
81
- onTouch = () => { };
82
- getWaypointResults(query) {
83
- this.queryChanged.emit({
84
- waypoint_type: this.waypointType,
85
- place_name: query,
86
- });
87
- return combineLatest([
88
- of(this.waypointsHistory),
89
- this.getPlacesResults(query),
90
- ]).pipe(map(([history, google]) => {
91
- const historyItems = history ?? [], googleItems = google ?? [];
92
- return [...historyItems, ...googleItems];
92
+ const merged = [...(history ?? []), ...(google ?? [])];
93
+ return merged.slice(0, this.MAX_SUGGESTIONS); // Dropdown shows max 10 items total
94
+ }), tap((cappedSuggestions) => {
95
+ this.displayedSuggestions = cappedSuggestions;
96
+ this.selectedIndex = cappedSuggestions?.length ? 0 : -1;
93
97
  }));
94
98
  }
99
+ onChange = () => {
100
+ };
101
+ onTouch = () => {
102
+ };
95
103
  getPlacesResults(query) {
96
104
  return new Observable((observer) => {
97
- this.mapAutocompleteService.getPlacePredictions({
105
+ this.autocompleteService.getPlacePredictions({
98
106
  input: query,
99
107
  componentRestrictions: { country: this.countryCode },
100
108
  sessionToken: this.sessionToken,
@@ -107,32 +115,53 @@ export class EcabsPlaceAutocompleteV2Component extends EcabsElementBaseComponent
107
115
  });
108
116
  }
109
117
  toWaypointSuggestions(predictions) {
110
- return (predictions ?? []).map((prediction) => ({
118
+ return ((predictions ?? [])
119
+ // Drops predictions without a place_id because selection and booking both require it
120
+ .filter((prediction) => !!prediction.place_id)
121
+ .map((prediction) => ({
111
122
  additional_info: prediction.description,
112
123
  place_id: prediction.place_id,
113
- source: 'google',
114
124
  prediction_term: prediction.terms,
115
- }));
125
+ })));
126
+ }
127
+ onUserInput(query) {
128
+ this.inputQuery$.next(query);
129
+ }
130
+ trackBySuggestion(index, suggestion) {
131
+ const id = suggestion.suggestion_id ??
132
+ suggestion.place_id ??
133
+ suggestion.additional_info ??
134
+ `${index}`;
135
+ return suggestion.prediction_term ? `google:${id}` : `history:${id}`;
116
136
  }
117
137
  onSelectSuggestion(suggestion) {
138
+ if (this.isResolvingPlace) {
139
+ return;
140
+ }
118
141
  const { additional_info, place_id } = suggestion ?? {};
142
+ if (!place_id) {
143
+ return;
144
+ }
145
+ this.isResolvingPlace = true;
119
146
  this.value = additional_info;
147
+ this.isFocused$.next(false);
148
+ this.resolveByPlaceId(place_id, additional_info);
149
+ }
150
+ resolveByPlaceId(placeId, text) {
120
151
  this.placesService.getDetails({
121
- placeId: place_id,
152
+ placeId,
122
153
  sessionToken: this.sessionToken,
123
154
  fields: ['address_components', 'geometry.location', 'place_id'],
124
155
  }, (place, status) => {
125
156
  this.ngZone.run(() => {
126
157
  if (status === google.maps.places.PlacesServiceStatus.OK && place) {
127
- this.placeResult.emit({
128
- place,
129
- text: additional_info,
130
- });
158
+ this.placeResult.emit({ place, text });
131
159
  }
132
160
  else {
133
- console.warn('Place details lookup failed', { status, place_id });
161
+ console.warn('Place details lookup failed', { status, placeId });
134
162
  }
135
163
  this.resetSessionToken();
164
+ this.isResolvingPlace = false;
136
165
  });
137
166
  });
138
167
  }
@@ -169,17 +198,18 @@ export class EcabsPlaceAutocompleteV2Component extends EcabsElementBaseComponent
169
198
  this.onTouch();
170
199
  }
171
200
  onFocus() {
172
- if (!this.value) {
201
+ if (!this.value && this.autocompleteService) {
173
202
  this.resetSessionToken();
174
203
  }
175
204
  setTimeout(() => this.ngZone.run(() => this.isFocused$.next(true)));
176
205
  }
177
206
  writeValue(nextValue = '') {
178
- if (this._value === nextValue) {
207
+ const next = nextValue ?? '';
208
+ if (this._value === next) {
179
209
  return;
180
210
  }
181
- this._value = nextValue;
182
- this.value$.next(nextValue);
211
+ this._value = next;
212
+ this.value$.next(next);
183
213
  }
184
214
  registerOnChange(fn) {
185
215
  this.onChange = fn;
@@ -187,29 +217,31 @@ export class EcabsPlaceAutocompleteV2Component extends EcabsElementBaseComponent
187
217
  registerOnTouched(fn) {
188
218
  this.onTouch = fn;
189
219
  }
190
- onDeleteItem() {
220
+ delete() {
191
221
  this.deleteItem.emit();
192
222
  }
193
- onClean() {
223
+ clear() {
194
224
  this.value = '';
225
+ this.inputQuery$.next('');
195
226
  this.onTouch();
227
+ this.matCustomInput?.nativeElement?.focus();
196
228
  }
197
229
  initGoogle() {
198
- this.mapAutocompleteService = new google.maps.places.AutocompleteService();
230
+ this.autocompleteService = new google.maps.places.AutocompleteService();
199
231
  this.placesService = new google.maps.places.PlacesService(document.createElement('div'));
200
232
  this.resetSessionToken();
201
233
  }
202
234
  resetSessionToken() {
203
235
  this.sessionToken = new google.maps.places.AutocompleteSessionToken();
204
236
  }
205
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsPlaceAutocompleteV2Component, deps: [{ token: i0.NgZone }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
206
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsPlaceAutocompleteV2Component, selector: "ecabs-place-autocomplete-v2", inputs: { showDeleteItem: "showDeleteItem", waypointsHistory: "waypointsHistory", showSuffix: "showSuffix", countryCode: "countryCode", googleLoaded: "googleLoaded", waypointType: "waypointType", debounceTime: "debounceTime" }, outputs: { placeResult: "placeResult", deleteItem: "deleteItem", queryChanged: "queryChanged" }, providers: [
237
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsPlaceAutocompleteV2Component, deps: [], target: i0.ɵɵFactoryTarget.Component });
238
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsPlaceAutocompleteV2Component, selector: "ecabs-place-autocomplete-v2", inputs: { showDeleteItem: "showDeleteItem", waypointsHistory: "waypointsHistory", showSuffix: "showSuffix", countryCode: "countryCode", googleLoaded: "googleLoaded", waypointType: "waypointType", debounceMs: "debounceMs" }, outputs: { placeResult: "placeResult", deleteItem: "deleteItem", queryChanged: "queryChanged" }, providers: [
207
239
  {
208
240
  provide: NG_VALUE_ACCESSOR,
209
241
  useExisting: EcabsPlaceAutocompleteV2Component,
210
242
  multi: true,
211
243
  },
212
- ], viewQueries: [{ propertyName: "matCustomInput", first: true, predicate: ["matCustomAutocompleteInput"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ecabs-element-wrapper [data]=\"getData()\">\n <div class=\"autocomplete-ui w-full\">\n <section class=\"form-field__input--wrapper w-full\">\n <input #matCustomAutocompleteInput\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"value\"\n [id]=\"name\"\n class=\"form-field__input w-full\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"off\"\n (focus)=\"onFocus()\"\n (keydown)=\"onKeyDown($event)\"\n (blur)=\"onBlur()\"\n />\n <div class=\"form-field__input--suffix\" *ngIf=\"showSuffix\">\n <mat-icon *ngIf=\"showDeleteItem\"\n class=\"suffix cursor-pointer delete-button\"\n (click)=\"onDeleteItem()\">\n delete\n </mat-icon>\n <mat-icon class=\"suffix cursor-pointer\" *ngIf=\"!showDeleteItem && value\" (click)=\"onClean()\">close</mat-icon>\n </div>\n </section>\n <!-- Custom dropdown -->\n <ng-template cdkConnectedOverlay\n [cdkConnectedOverlayWidth]=\"trigger.elementRef.nativeElement.offsetWidth\"\n [cdkConnectedOverlayFlexibleDimensions]=\"false\"\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isFocused$ | async\">\n <ul class=\"autocomplete-ui__container\">\n <li *ngFor=\"let suggestion of waypointSuggestions$ | async | slice:0:10; let i = index\"\n class=\"autocomplete-ui--item flex items-center justify-between hover:bg-gray-100\"\n [class.active]=\"i === selectedIndex\"\n (mousedown)=\"onSelectSuggestion(suggestion)\">\n <ng-container *ngIf=\"suggestion?.source === 'history'; else purePlaceResultTpl\">\n <div class=\"w-full truncate\">\n {{ suggestion?.additional_info }}\n </div>\n <mat-icon *ngIf=\"suggestion?.source === 'history'\"\n class=\"w-5 h-5 text-xl text-gray-400 !hover:text-gray-400\">\n history\n </mat-icon>\n </ng-container>\n\n <ng-template #purePlaceResultTpl>\n <ul class=\"w-full flex items-center gap-x-1 leading-0 overflow-hidden whitespace-nowrap\">\n <li>\n {{ suggestion?.prediction_term[0]?.value }}\n </li>\n <li *ngIf=\"suggestion?.prediction_term[1]?.value\"\n class=\"text-xs text-gray-600 truncate\">\n {{ suggestion?.prediction_term[1]?.value | separatorAppend: suggestion?.prediction_term[2]?.value }}\n </li>\n <li *ngIf=\"suggestion?.prediction_term[2]?.value\"\n class=\"text-xs text-gray-600 font-semibold truncate\">\n {{ suggestion?.prediction_term[2]?.value }}\n </li>\n </ul>\n </ng-template>\n </li>\n </ul>\n </ng-template>\n </div>\n</ecabs-element-wrapper>\n", styles: [":root{--mat-standard-button-toggle-shape: calc-rem(8px);--mat-option-label-text-color: var(--color-gray-900);--mat-option-focus-state-layer-color: var(--color-gray-100);--mat-option-hover-state-layer-color: var(--color-gray-50);--mat-divider-color: var(--color-gray-100);--mat-select-placeholder-text-color: var(--color-gray-400)}mat-form-field{margin-bottom:0!important}.delete-button{color:var(--color-error)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.EcabsElementWrapperComponent, selector: "ecabs-element-wrapper", inputs: ["data", "showCloseIcon", "focusedFlag", "showPassword", "control"], outputs: ["showHidePassword", "clear", "increase", "decrease"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: i5.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }, { kind: "pipe", type: i6.SeparatorAppendPipe, name: "separatorAppend" }] });
244
+ ], viewQueries: [{ propertyName: "matCustomInput", first: true, predicate: ["matCustomAutocompleteInput"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ecabs-element-wrapper [data]=\"getData()\">\r\n <div class=\"autocomplete-ui w-full\">\r\n <section class=\"form-field__input--wrapper w-full\">\r\n <input #matCustomAutocompleteInput\r\n cdkOverlayOrigin\r\n #trigger=\"cdkOverlayOrigin\"\r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n [(ngModel)]=\"value\"\r\n [id]=\"name\"\r\n class=\"form-field__input w-full\"\r\n autocorrect=\"off\"\r\n autocapitalize=\"off\"\r\n spellcheck=\"off\"\r\n (focus)=\"onFocus()\"\r\n (keydown)=\"onKeyDown($event)\"\r\n (ngModelChange)=\"onUserInput($event)\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <div *ngIf=\"showSuffix\"\r\n class=\"form-field__input--suffix\">\r\n <mat-icon *ngIf=\"showDeleteItem\"\r\n class=\"suffix cursor-pointer delete-button\"\r\n (keydown.enter)=\"delete()\"\r\n (click)=\"delete()\">\r\n delete\r\n </mat-icon>\r\n <mat-icon *ngIf=\"!showDeleteItem && value\"\r\n class=\"suffix cursor-pointer\"\r\n (keydown.enter)=\"clear()\"\r\n (click)=\"clear()\">\r\n close\r\n </mat-icon>\r\n </div>\r\n </section>\r\n <!-- Custom dropdown -->\r\n <ng-template cdkConnectedOverlay\r\n [cdkConnectedOverlayWidth]=\"trigger.elementRef.nativeElement.offsetWidth\"\r\n [cdkConnectedOverlayFlexibleDimensions]=\"false\"\r\n [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"isFocused$ | async\">\r\n <ul class=\"autocomplete-ui__container\">\r\n <li *ngFor=\"let suggestion of waypointSuggestions$ | async; let i = index; trackBy: trackBySuggestion\"\r\n class=\"autocomplete-ui--item flex items-center justify-between hover:bg-gray-100\"\r\n [class.active]=\"i === selectedIndex\"\r\n (mousedown)=\"onSelectSuggestion(suggestion)\">\r\n <ng-container *ngIf=\"!suggestion?.prediction_term; else purePlaceResultTpl\">\r\n <div class=\"w-full truncate\">\r\n {{ suggestion?.additional_info }}\r\n </div>\r\n <mat-icon svgIcon=\"ph-regular:clock-counter\"\r\n class=\"w-5 h-5 text-xl text-gray-400 hover:!text-gray-400\">\r\n </mat-icon>\r\n </ng-container>\r\n\r\n <ng-template #purePlaceResultTpl>\r\n <ul class=\"w-full flex items-center gap-x-1 leading-0 overflow-hidden whitespace-nowrap\">\r\n <li>\r\n {{ suggestion?.prediction_term?.[0]?.value }}\r\n </li>\r\n <li *ngIf=\"suggestion?.prediction_term?.[1]?.value\"\r\n class=\"text-xs text-gray-600 truncate\">\r\n {{ suggestion?.prediction_term?.[1]?.value | separatorAppend: suggestion?.prediction_term?.[2]?.value }}\r\n </li>\r\n <li *ngIf=\"suggestion?.prediction_term?.[2]?.value\"\r\n class=\"text-xs text-gray-600 font-semibold truncate\">\r\n {{ suggestion?.prediction_term?.[2]?.value }}\r\n </li>\r\n </ul>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n </ng-template>\r\n </div>\r\n</ecabs-element-wrapper>\r\n", styles: [":root{--mat-standard-button-toggle-shape: calc-rem(8px);--mat-option-label-text-color: var(--color-gray-900);--mat-option-focus-state-layer-color: var(--color-gray-100);--mat-option-hover-state-layer-color: var(--color-gray-50);--mat-divider-color: var(--color-gray-100);--mat-select-placeholder-text-color: var(--color-gray-400)}mat-form-field{margin-bottom:0!important}.delete-button{color:var(--color-error)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.EcabsElementWrapperComponent, selector: "ecabs-element-wrapper", inputs: ["data", "showCloseIcon", "focusedFlag", "showPassword", "control"], outputs: ["showHidePassword", "clear", "increase", "decrease"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: i5.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.SeparatorAppendPipe, name: "separatorAppend" }] });
213
245
  }
214
246
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsPlaceAutocompleteV2Component, decorators: [{
215
247
  type: Component,
@@ -219,8 +251,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
219
251
  useExisting: EcabsPlaceAutocompleteV2Component,
220
252
  multi: true,
221
253
  },
222
- ], template: "<ecabs-element-wrapper [data]=\"getData()\">\n <div class=\"autocomplete-ui w-full\">\n <section class=\"form-field__input--wrapper w-full\">\n <input #matCustomAutocompleteInput\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"value\"\n [id]=\"name\"\n class=\"form-field__input w-full\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"off\"\n (focus)=\"onFocus()\"\n (keydown)=\"onKeyDown($event)\"\n (blur)=\"onBlur()\"\n />\n <div class=\"form-field__input--suffix\" *ngIf=\"showSuffix\">\n <mat-icon *ngIf=\"showDeleteItem\"\n class=\"suffix cursor-pointer delete-button\"\n (click)=\"onDeleteItem()\">\n delete\n </mat-icon>\n <mat-icon class=\"suffix cursor-pointer\" *ngIf=\"!showDeleteItem && value\" (click)=\"onClean()\">close</mat-icon>\n </div>\n </section>\n <!-- Custom dropdown -->\n <ng-template cdkConnectedOverlay\n [cdkConnectedOverlayWidth]=\"trigger.elementRef.nativeElement.offsetWidth\"\n [cdkConnectedOverlayFlexibleDimensions]=\"false\"\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isFocused$ | async\">\n <ul class=\"autocomplete-ui__container\">\n <li *ngFor=\"let suggestion of waypointSuggestions$ | async | slice:0:10; let i = index\"\n class=\"autocomplete-ui--item flex items-center justify-between hover:bg-gray-100\"\n [class.active]=\"i === selectedIndex\"\n (mousedown)=\"onSelectSuggestion(suggestion)\">\n <ng-container *ngIf=\"suggestion?.source === 'history'; else purePlaceResultTpl\">\n <div class=\"w-full truncate\">\n {{ suggestion?.additional_info }}\n </div>\n <mat-icon *ngIf=\"suggestion?.source === 'history'\"\n class=\"w-5 h-5 text-xl text-gray-400 !hover:text-gray-400\">\n history\n </mat-icon>\n </ng-container>\n\n <ng-template #purePlaceResultTpl>\n <ul class=\"w-full flex items-center gap-x-1 leading-0 overflow-hidden whitespace-nowrap\">\n <li>\n {{ suggestion?.prediction_term[0]?.value }}\n </li>\n <li *ngIf=\"suggestion?.prediction_term[1]?.value\"\n class=\"text-xs text-gray-600 truncate\">\n {{ suggestion?.prediction_term[1]?.value | separatorAppend: suggestion?.prediction_term[2]?.value }}\n </li>\n <li *ngIf=\"suggestion?.prediction_term[2]?.value\"\n class=\"text-xs text-gray-600 font-semibold truncate\">\n {{ suggestion?.prediction_term[2]?.value }}\n </li>\n </ul>\n </ng-template>\n </li>\n </ul>\n </ng-template>\n </div>\n</ecabs-element-wrapper>\n", styles: [":root{--mat-standard-button-toggle-shape: calc-rem(8px);--mat-option-label-text-color: var(--color-gray-900);--mat-option-focus-state-layer-color: var(--color-gray-100);--mat-option-hover-state-layer-color: var(--color-gray-50);--mat-divider-color: var(--color-gray-100);--mat-select-placeholder-text-color: var(--color-gray-400)}mat-form-field{margin-bottom:0!important}.delete-button{color:var(--color-error)}\n"] }]
223
- }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.Injector }]; }, propDecorators: { matCustomInput: [{
254
+ ], template: "<ecabs-element-wrapper [data]=\"getData()\">\r\n <div class=\"autocomplete-ui w-full\">\r\n <section class=\"form-field__input--wrapper w-full\">\r\n <input #matCustomAutocompleteInput\r\n cdkOverlayOrigin\r\n #trigger=\"cdkOverlayOrigin\"\r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n [(ngModel)]=\"value\"\r\n [id]=\"name\"\r\n class=\"form-field__input w-full\"\r\n autocorrect=\"off\"\r\n autocapitalize=\"off\"\r\n spellcheck=\"off\"\r\n (focus)=\"onFocus()\"\r\n (keydown)=\"onKeyDown($event)\"\r\n (ngModelChange)=\"onUserInput($event)\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <div *ngIf=\"showSuffix\"\r\n class=\"form-field__input--suffix\">\r\n <mat-icon *ngIf=\"showDeleteItem\"\r\n class=\"suffix cursor-pointer delete-button\"\r\n (keydown.enter)=\"delete()\"\r\n (click)=\"delete()\">\r\n delete\r\n </mat-icon>\r\n <mat-icon *ngIf=\"!showDeleteItem && value\"\r\n class=\"suffix cursor-pointer\"\r\n (keydown.enter)=\"clear()\"\r\n (click)=\"clear()\">\r\n close\r\n </mat-icon>\r\n </div>\r\n </section>\r\n <!-- Custom dropdown -->\r\n <ng-template cdkConnectedOverlay\r\n [cdkConnectedOverlayWidth]=\"trigger.elementRef.nativeElement.offsetWidth\"\r\n [cdkConnectedOverlayFlexibleDimensions]=\"false\"\r\n [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"isFocused$ | async\">\r\n <ul class=\"autocomplete-ui__container\">\r\n <li *ngFor=\"let suggestion of waypointSuggestions$ | async; let i = index; trackBy: trackBySuggestion\"\r\n class=\"autocomplete-ui--item flex items-center justify-between hover:bg-gray-100\"\r\n [class.active]=\"i === selectedIndex\"\r\n (mousedown)=\"onSelectSuggestion(suggestion)\">\r\n <ng-container *ngIf=\"!suggestion?.prediction_term; else purePlaceResultTpl\">\r\n <div class=\"w-full truncate\">\r\n {{ suggestion?.additional_info }}\r\n </div>\r\n <mat-icon svgIcon=\"ph-regular:clock-counter\"\r\n class=\"w-5 h-5 text-xl text-gray-400 hover:!text-gray-400\">\r\n </mat-icon>\r\n </ng-container>\r\n\r\n <ng-template #purePlaceResultTpl>\r\n <ul class=\"w-full flex items-center gap-x-1 leading-0 overflow-hidden whitespace-nowrap\">\r\n <li>\r\n {{ suggestion?.prediction_term?.[0]?.value }}\r\n </li>\r\n <li *ngIf=\"suggestion?.prediction_term?.[1]?.value\"\r\n class=\"text-xs text-gray-600 truncate\">\r\n {{ suggestion?.prediction_term?.[1]?.value | separatorAppend: suggestion?.prediction_term?.[2]?.value }}\r\n </li>\r\n <li *ngIf=\"suggestion?.prediction_term?.[2]?.value\"\r\n class=\"text-xs text-gray-600 font-semibold truncate\">\r\n {{ suggestion?.prediction_term?.[2]?.value }}\r\n </li>\r\n </ul>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n </ng-template>\r\n </div>\r\n</ecabs-element-wrapper>\r\n", styles: [":root{--mat-standard-button-toggle-shape: calc-rem(8px);--mat-option-label-text-color: var(--color-gray-900);--mat-option-focus-state-layer-color: var(--color-gray-100);--mat-option-hover-state-layer-color: var(--color-gray-50);--mat-divider-color: var(--color-gray-100);--mat-select-placeholder-text-color: var(--color-gray-400)}mat-form-field{margin-bottom:0!important}.delete-button{color:var(--color-error)}\n"] }]
255
+ }], ctorParameters: function () { return []; }, propDecorators: { matCustomInput: [{
224
256
  type: ViewChild,
225
257
  args: ['matCustomAutocompleteInput', { static: false }]
226
258
  }], showDeleteItem: [{
@@ -235,7 +267,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
235
267
  type: Input
236
268
  }], waypointType: [{
237
269
  type: Input
238
- }], debounceTime: [{
270
+ }], debounceMs: [{
239
271
  type: Input
240
272
  }], placeResult: [{
241
273
  type: Output
@@ -244,4 +276,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
244
276
  }], queryChanged: [{
245
277
  type: Output
246
278
  }] } });
247
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtcGxhY2UtYXV0b2NvbXBsZXRlLXYyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1wbGFjZS1hdXRvY29tcGxldGUtdjIvZWNhYnMtcGxhY2UtYXV0b2NvbXBsZXRlLXYyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1wbGFjZS1hdXRvY29tcGxldGUtdjIvZWNhYnMtcGxhY2UtYXV0b2NvbXBsZXRlLXYyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUVaLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxHQUVWLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyx5QkFBeUIsTUFBTSxzQkFBc0IsQ0FBQztBQU83RCxPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixZQUFZLEVBQ1osR0FBRyxFQUNILFVBQVUsRUFDVixFQUFFLEdBQ0gsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBZTNDLE1BQU0sT0FBTyxpQ0FDWCxTQUFRLHlCQUF5QjtJQWdFZDtJQUNBO0lBN0RuQixjQUFjLENBQWE7SUFHM0IsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUd2QixnQkFBZ0IsR0FBeUIsRUFBRSxDQUFDO0lBRzVDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFHbkIsV0FBVyxHQUFHLElBQUksQ0FBQztJQUduQixZQUFZLENBQVU7SUFHdEIsWUFBWSxDQUFtQjtJQUcvQixZQUFZLEdBQUcsR0FBRyxDQUFDO0lBR1Ys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QUM5QixDQUFDO1FBRUYsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVPLGlCQUFpQjtRQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUN4RSxDQUFDO3dHQXZSVSxpQ0FBaUM7NEZBQWpDLGlDQUFpQywyWEFSakM7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsaUNBQWlDO2dCQUM5QyxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0Ysb01DL0NILDZqR0FvRUE7OzRGRG5CYSxpQ0FBaUM7a0JBWjdDLFNBQVM7K0JBQ0UsNkJBQTZCLGFBRzVCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsbUNBQW1DOzRCQUM5QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtvSEFPRCxjQUFjO3NCQURiLFNBQVM7dUJBQUMsNEJBQTRCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUkxRCxjQUFjO3NCQURiLEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJRyxXQUFXO3NCQURuQixNQUFNO2dCQUlFLFVBQVU7c0JBRGxCLE1BQU07Z0JBSUUsWUFBWTtzQkFEcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIE5nQ29udHJvbCxcbiAgVW50eXBlZEZvcm1Db250cm9sLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgRWNhYnNFbGVtZW50QmFzZUNvbXBvbmVudCBmcm9tICcuLi9iYXNlL2VsZW1lbnQtYmFzZSc7XG5pbXBvcnQgeyBXYXlwb2ludFR5cGVFbnVtIH0gZnJvbSAnLi4vYmFzZS9jb25zdHMvd2F5cG9pbnQuY29uc3RzJztcbmltcG9ydCB7XG4gIEdvb2dsZVBsYWNlUmVzdWx0LFxuICBXYXlwb2ludFF1ZXJ5Q2hhbmdlLFxuICBXYXlwb2ludFN1Z2dlc3Rpb24sXG59IGZyb20gJy4uL2Jhc2UvbW9kZWxzL3dheXBvaW50Lm1vZGVscyc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGRlYm91bmNlVGltZSxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgQXV0b2NvbXBsZXRlUHJlZGljdGlvbiA9IGdvb2dsZS5tYXBzLnBsYWNlcy5BdXRvY29tcGxldGVQcmVkaWN0aW9uO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlY2Ficy1wbGFjZS1hdXRvY29tcGxldGUtdjInLFxuICB0ZW1wbGF0ZVVybDogJy4vZWNhYnMtcGxhY2UtYXV0b2NvbXBsZXRlLXYyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZWNhYnMtcGxhY2UtYXV0b2NvbXBsZXRlLXYyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IEVjYWJzUGxhY2VBdXRvY29tcGxldGVWMkNvbXBvbmVudCxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEVjYWJzUGxhY2VBdXRvY29tcGxldGVWMkNvbXBvbmVudFxuICBleHRlbmRzIEVjYWJzRWxlbWVudEJhc2VDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG57XG4gIEBWaWV3Q2hpbGQoJ21hdEN1c3RvbUF1dG9jb21wbGV0ZUlucHV0JywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIG1hdEN1c3RvbUlucHV0OiBFbGVtZW50UmVmO1xuXG4gIEBJbnB1dCgpXG4gIHNob3dEZWxldGVJdGVtID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgd2F5cG9pbnRzSGlzdG9yeTogV2F5cG9pbnRTdWdnZXN0aW9uW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBzaG93U3VmZml4ID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgY291bnRyeUNvZGUgPSAnTVQnO1xuXG4gIEBJbnB1dCgpXG4gIGdvb2dsZUxvYWRlZDogYm9vbGVhbjtcblxuICBASW5wdXQoKVxuICB3YXlwb2ludFR5cGU6IFdheXBvaW50VHlwZUVudW07XG5cbiAgQElucHV0KClcbiAgZGVib3VuY2VUaW1lID0gMjQwO1xuXG4gIEBPdXRwdXQoKVxuICByZWFkb25seSBwbGFjZVJlc3VsdDogRXZlbnRFbWl0dGVyPEdvb2dsZVBsYWNlUmVzdWx0PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgZGVsZXRlSXRlbSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgcXVlcnlDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxXYXlwb2ludFF1ZXJ5Q2hhbmdlPigpO1xuXG4gIGlzRm9jdXNlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgdmFsdWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgd2F5cG9pbnRTdWdnZXN0aW9ucyQ6IE9ic2VydmFibGU8V2F5cG9pbnRTdWdnZXN0aW9uW10+O1xuXG4gIHNlbGVjdGVkSW5kZXggPSAtMTtcbiAgZGlzcGxheWVkU3VnZ2VzdGlvbnM6IFdheXBvaW50U3VnZ2VzdGlvbltdID0gW107XG5cbiAgcHJpdmF0ZSBfdmFsdWUgPSAnJztcblxuICBwcml2YXRlIG1hcEF1dG9jb21wbGV0ZVNlcnZpY2U6IGdvb2dsZS5tYXBzLnBsYWNlcy5BdXRvY29tcGxldGVTZXJ2aWNlO1xuICBwcml2YXRlIHBsYWNlc1NlcnZpY2U6IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZXNTZXJ2aWNlO1xuICBwcml2YXRlIHNlc3Npb25Ub2tlbjogZ29vZ2xlLm1hcHMucGxhY2VzLkF1dG9jb21wbGV0ZVNlc3Npb25Ub2tlbjtcblxuICBnZXQgdmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBzZXQgdmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh0aGlzLl92YWx1ZSA9PT0gdmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMudmFsdWUkLm5leHQodmFsdWUpO1xuICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcixcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCB7IGdvb2dsZUxvYWRlZCB9ID0gY2hhbmdlcyA/PyB7fTtcblxuICAgIGlmIChnb29nbGVMb2FkZWQ/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5pbml0R29vZ2xlKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IG5nQ29udHJvbDogTmdDb250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQoXG4gICAgICBOZ0NvbnRyb2wsXG4gICAgICBudWxsLFxuICAgICkgYXMgTmdDb250cm9sO1xuXG4gICAgaWYgKG5nQ29udHJvbCkge1xuICAgICAgdGhpcy5jb250cm9sID0gbmdDb250cm9sLmNvbnRyb2wgYXMgVW50eXBlZEZvcm1Db250cm9sO1xuICAgIH1cblxuICAgIHRoaXMud2F5cG9pbnRTdWdnZXN0aW9ucyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuaXNGb2N1c2VkJCxcbiAgICAgIHRoaXMudmFsdWUkLFxuICAgIF0pLnBpcGUoXG4gICAgICBkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZVRpbWUpLFxuICAgICAgc3dpdGNoTWFwKChbaXNGb2N1c2VkLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgaWYgKCFpc0ZvY3VzZWQpIHtcbiAgICAgICAgICByZXR1cm4gb2YoW10gYXMgV2F5cG9pbnRTdWdnZXN0aW9uW10pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgIHJldHVybiBvZih0aGlzLndheXBvaW50c0hpc3RvcnkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0V2F5cG9pbnRSZXN1bHRzKHZhbHVlKTtcbiAgICAgIH0pLFxuICAgICAgbWFwKChyZXN1bHRzKSA9PiB7XG4gICAgICAgIHRoaXMuZGlzcGxheWVkU3VnZ2VzdGlvbnMgPSByZXN1bHRzO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSByZXN1bHRzPy5sZW5ndGggPyAwIDogLTE7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgcHJpdmF0ZSBvblRvdWNoOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgcHJpdmF0ZSBnZXRXYXlwb2ludFJlc3VsdHMocXVlcnk6IHN0cmluZyk6IE9ic2VydmFibGU8V2F5cG9pbnRTdWdnZXN0aW9uW10+IHtcbiAgICB0aGlzLnF1ZXJ5Q2hhbmdlZC5lbWl0KHtcbiAgICAgIHdheXBvaW50X3R5cGU6IHRoaXMud2F5cG9pbnRUeXBlLFxuICAgICAgcGxhY2VfbmFtZTogcXVlcnksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICBvZih0aGlzLndheXBvaW50c0hpc3RvcnkpLFxuICAgICAgdGhpcy5nZXRQbGFjZXNSZXN1bHRzKHF1ZXJ5KSxcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbaGlzdG9yeSwgZ29vZ2xlXSkgPT4ge1xuICAgICAgICBjb25zdCBoaXN0b3J5SXRlbXMgPSBoaXN0b3J5ID8/IFtdLFxuICAgICAgICAgIGdvb2dsZUl0ZW1zID0gZ29vZ2xlID8/IFtdO1xuXG4gICAgICAgIHJldHVybiBbLi4uaGlzdG9yeUl0ZW1zLCAuLi5nb29nbGVJdGVtc107XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQbGFjZXNSZXN1bHRzKHF1ZXJ5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFdheXBvaW50U3VnZ2VzdGlvbltdPiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcikgPT4ge1xuICAgICAgdGhpcy5tYXBBdXRvY29tcGxldGVTZXJ2aWNlLmdldFBsYWNlUHJlZGljdGlvbnMoXG4gICAgICAgIHtcbiAgICAgICAgICBpbnB1dDogcXVlcnksXG4gICAgICAgICAgY29tcG9uZW50UmVzdHJpY3Rpb25zOiB7IGNvdW50cnk6IHRoaXMuY291bnRyeUNvZGUgfSxcbiAgICAgICAgICBzZXNzaW9uVG9rZW46IHRoaXMuc2Vzc2lvblRva2VuLFxuICAgICAgICB9LFxuICAgICAgICAocHJlZGljdGlvbnMpID0+IHtcbiAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCh0aGlzLnRvV2F5cG9pbnRTdWdnZXN0aW9ucyhwcmVkaWN0aW9ucykpO1xuICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHRvV2F5cG9pbnRTdWdnZXN0aW9ucyhcbiAgICBwcmVkaWN0aW9uczogQXV0b2NvbXBsZXRlUHJlZGljdGlvbltdIHwgbnVsbCxcbiAgKTogV2F5cG9pbnRTdWdnZXN0aW9uW10ge1xuICAgIHJldHVybiAocHJlZGljdGlvbnMgPz8gW10pLm1hcCgocHJlZGljdGlvbikgPT4gKHtcbiAgICAgIGFkZGl0aW9uYWxfaW5mbzogcHJlZGljdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgIHBsYWNlX2lkOiBwcmVkaWN0aW9uLnBsYWNlX2lkLFxuICAgICAgc291cmNlOiAnZ29vZ2xlJyxcbiAgICAgIHByZWRpY3Rpb25fdGVybTogcHJlZGljdGlvbi50ZXJtcyxcbiAgICB9KSk7XG4gIH1cblxuICBvblNlbGVjdFN1Z2dlc3Rpb24oc3VnZ2VzdGlvbjogV2F5cG9pbnRTdWdnZXN0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgeyBhZGRpdGlvbmFsX2luZm8sIHBsYWNlX2lkIH0gPSBzdWdnZXN0aW9uID8/IHt9O1xuXG4gICAgdGhpcy52YWx1ZSA9IGFkZGl0aW9uYWxfaW5mbztcbiAgICB0aGlzLnBsYWNlc1NlcnZpY2UuZ2V0RGV0YWlscyhcbiAgICAgIHtcbiAgICAgICAgcGxhY2VJZDogcGxhY2VfaWQsXG4gICAgICAgIHNlc3Npb25Ub2tlbjogdGhpcy5zZXNzaW9uVG9rZW4sXG4gICAgICAgIGZpZWxkczogWydhZGRyZXNzX2NvbXBvbmVudHMnLCAnZ2VvbWV0cnkubG9jYXRpb24nLCAncGxhY2VfaWQnXSxcbiAgICAgIH0sXG4gICAgICAocGxhY2UsIHN0YXR1cykgPT4ge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIGlmIChzdGF0dXMgPT09IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZXNTZXJ2aWNlU3RhdHVzLk9LICYmIHBsYWNlKSB7XG4gICAgICAgICAgICB0aGlzLnBsYWNlUmVzdWx0LmVtaXQoe1xuICAgICAgICAgICAgICBwbGFjZSxcbiAgICAgICAgICAgICAgdGV4dDogYWRkaXRpb25hbF9pbmZvLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignUGxhY2UgZGV0YWlscyBsb29rdXAgZmFpbGVkJywgeyBzdGF0dXMsIHBsYWNlX2lkIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMucmVzZXRTZXNzaW9uVG9rZW4oKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzcGxheWVkU3VnZ2VzdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPVxuICAgICAgICAgICh0aGlzLnNlbGVjdGVkSW5kZXggKyAxKSAlIHRoaXMuZGlzcGxheWVkU3VnZ2VzdGlvbnMubGVuZ3RoO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9XG4gICAgICAgICAgKHRoaXMuc2VsZWN0ZWRJbmRleCAtIDEgKyB0aGlzLmRpc3BsYXllZFN1Z2dlc3Rpb25zLmxlbmd0aCkgJVxuICAgICAgICAgIHRoaXMuZGlzcGxheWVkU3VnZ2VzdGlvbnMubGVuZ3RoO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSW5kZXggPj0gMCkge1xuICAgICAgICAgIHRoaXMub25TZWxlY3RTdWdnZXN0aW9uKFxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5ZWRTdWdnZXN0aW9uc1t0aGlzLnNlbGVjdGVkSW5kZXhdLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ0VzY2FwZSc6XG4gICAgICAgIHRoaXMuaXNGb2N1c2VkJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gLTE7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIG9uQmx1cigpOiB2b2lkIHtcbiAgICB0aGlzLmlzRm9jdXNlZCQubmV4dChmYWxzZSk7XG4gICAgdGhpcy5vblRvdWNoKCk7XG4gIH1cblxuICBvbkZvY3VzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy5yZXNldFNlc3Npb25Ub2tlbigpO1xuICAgIH1cblxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuaXNGb2N1c2VkJC5uZXh0KHRydWUpKSk7XG4gIH1cblxuICB3cml0ZVZhbHVlKG5leHRWYWx1ZSA9ICcnKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3ZhbHVlID09PSBuZXh0VmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl92YWx1ZSA9IG5leHRWYWx1ZTtcbiAgICB0aGlzLnZhbHVlJC5uZXh0KG5leHRWYWx1ZSk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoID0gZm47XG4gIH1cblxuICBvbkRlbGV0ZUl0ZW0oKTogdm9pZCB7XG4gICAgdGhpcy5kZWxldGVJdGVtLmVtaXQoKTtcbiAgfVxuXG4gIG9uQ2xlYW4oKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9ICcnO1xuICAgIHRoaXMub25Ub3VjaCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0R29vZ2xlKCk6IHZvaWQge1xuICAgIHRoaXMubWFwQXV0b2NvbXBsZXRlU2VydmljZSA9IG5ldyBnb29nbGUubWFwcy5wbGFjZXMuQXV0b2NvbXBsZXRlU2VydmljZSgpO1xuXG4gICAgdGhpcy5wbGFjZXNTZXJ2aWNlID0gbmV3IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZXNTZXJ2aWNlKFxuICAgICAgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksXG4gICAgKTtcblxuICAgIHRoaXMucmVzZXRTZXNzaW9uVG9rZW4oKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRTZXNzaW9uVG9rZW4oKTogdm9pZCB7XG4gICAgdGhpcy5zZXNzaW9uVG9rZW4gPSBuZXcgZ29vZ2xlLm1hcHMucGxhY2VzLkF1dG9jb21wbGV0ZVNlc3Npb25Ub2tlbigpO1xuICB9XG59XG4iLCI8ZWNhYnMtZWxlbWVudC13cmFwcGVyIFtkYXRhXT1cImdldERhdGEoKVwiPlxuICA8ZGl2IGNsYXNzPVwiYXV0b2NvbXBsZXRlLXVpIHctZnVsbFwiPlxuICAgIDxzZWN0aW9uIGNsYXNzPVwiZm9ybS1maWVsZF9faW5wdXQtLXdyYXBwZXIgdy1mdWxsXCI+XG4gICAgICA8aW5wdXQgI21hdEN1c3RvbUF1dG9jb21wbGV0ZUlucHV0XG4gICAgICAgICAgICAgY2RrT3ZlcmxheU9yaWdpblxuICAgICAgICAgICAgICN0cmlnZ2VyPVwiY2RrT3ZlcmxheU9yaWdpblwiXG4gICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidmFsdWVcIlxuICAgICAgICAgICAgIFtpZF09XCJuYW1lXCJcbiAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGRfX2lucHV0IHctZnVsbFwiXG4gICAgICAgICAgICAgYXV0b2NvcnJlY3Q9XCJvZmZcIlxuICAgICAgICAgICAgIGF1dG9jYXBpdGFsaXplPVwib2ZmXCJcbiAgICAgICAgICAgICBzcGVsbGNoZWNrPVwib2ZmXCJcbiAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygpXCJcbiAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxuICAgICAgLz5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkX19pbnB1dC0tc3VmZml4XCIgKm5nSWY9XCJzaG93U3VmZml4XCI+XG4gICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInNob3dEZWxldGVJdGVtXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3VmZml4IGN1cnNvci1wb2ludGVyIGRlbGV0ZS1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlSXRlbSgpXCI+XG4gICAgICAgICAgZGVsZXRlXG4gICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInN1ZmZpeCBjdXJzb3ItcG9pbnRlclwiICpuZ0lmPVwiIXNob3dEZWxldGVJdGVtICYmIHZhbHVlXCIgKGNsaWNrKT1cIm9uQ2xlYW4oKVwiPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cbiAgICA8IS0tIEN1c3RvbSBkcm9wZG93biAtLT5cbiAgICA8bmctdGVtcGxhdGUgY2RrQ29ubmVjdGVkT3ZlcmxheVxuICAgICAgICAgICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheVdpZHRoXT1cInRyaWdnZXIuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoXCJcbiAgICAgICAgICAgICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlGbGV4aWJsZURpbWVuc2lvbnNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09XCJ0cmlnZ2VyXCJcbiAgICAgICAgICAgICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcGVuXT1cImlzRm9jdXNlZCQgfCBhc3luY1wiPlxuICAgICAgPHVsIGNsYXNzPVwiYXV0b2NvbXBsZXRlLXVpX19jb250YWluZXJcIj5cbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBzdWdnZXN0aW9uIG9mIHdheXBvaW50U3VnZ2VzdGlvbnMkIHwgYXN5bmMgfCBzbGljZTowOjEwOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgIGNsYXNzPVwiYXV0b2NvbXBsZXRlLXVpLS1pdGVtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBob3ZlcjpiZy1ncmF5LTEwMFwiXG4gICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImkgPT09IHNlbGVjdGVkSW5kZXhcIlxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvblNlbGVjdFN1Z2dlc3Rpb24oc3VnZ2VzdGlvbilcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3VnZ2VzdGlvbj8uc291cmNlID09PSAnaGlzdG9yeSc7IGVsc2UgcHVyZVBsYWNlUmVzdWx0VHBsXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIHRydW5jYXRlXCI+XG4gICAgICAgICAgICAgIHt7IHN1Z2dlc3Rpb24/LmFkZGl0aW9uYWxfaW5mbyB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJzdWdnZXN0aW9uPy5zb3VyY2UgPT09ICdoaXN0b3J5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LTUgaC01IHRleHQteGwgdGV4dC1ncmF5LTQwMCAhaG92ZXI6dGV4dC1ncmF5LTQwMFwiPlxuICAgICAgICAgICAgICBoaXN0b3J5XG4gICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNwdXJlUGxhY2VSZXN1bHRUcGw+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJ3LWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLXgtMSBsZWFkaW5nLTAgb3ZlcmZsb3ctaGlkZGVuIHdoaXRlc3BhY2Utbm93cmFwXCI+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICB7eyBzdWdnZXN0aW9uPy5wcmVkaWN0aW9uX3Rlcm1bMF0/LnZhbHVlIH19XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaSAqbmdJZj1cInN1Z2dlc3Rpb24/LnByZWRpY3Rpb25fdGVybVsxXT8udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXhzIHRleHQtZ3JheS02MDAgdHJ1bmNhdGVcIj5cbiAgICAgICAgICAgICAgICB7eyBzdWdnZXN0aW9uPy5wcmVkaWN0aW9uX3Rlcm1bMV0/LnZhbHVlIHwgc2VwYXJhdG9yQXBwZW5kOiBzdWdnZXN0aW9uPy5wcmVkaWN0aW9uX3Rlcm1bMl0/LnZhbHVlIH19XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaSAqbmdJZj1cInN1Z2dlc3Rpb24/LnByZWRpY3Rpb25fdGVybVsyXT8udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXhzIHRleHQtZ3JheS02MDAgZm9udC1zZW1pYm9sZCB0cnVuY2F0ZVwiPlxuICAgICAgICAgICAgICAgIHt7IHN1Z2dlc3Rpb24/LnByZWRpY3Rpb25fdGVybVsyXT8udmFsdWUgfX1cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvdWw+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L2VjYWJzLWVsZW1lbnQtd3JhcHBlcj5cbiJdfQ==
279
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtcGxhY2UtYXV0b2NvbXBsZXRlLXYyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1wbGFjZS1hdXRvY29tcGxldGUtdjIvZWNhYnMtcGxhY2UtYXV0b2NvbXBsZXRlLXYyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1wbGFjZS1hdXRvY29tcGxldGUtdjIvZWNhYnMtcGxhY2UtYXV0b2NvbXBsZXRlLXYyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUVWLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEVBRU4sTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXVCLGlCQUFpQixFQUFFLFNBQVMsR0FBc0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RyxPQUFPLHlCQUF5QixNQUFNLHNCQUFzQixDQUFDO0FBRzdELE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsR0FBRyxFQUNILFVBQVUsRUFDVixFQUFFLEVBQ0YsU0FBUyxFQUNULE9BQU8sRUFDUCxHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7O0FBZTlELE1BQU0sT0FBTyxpQ0FDWCxTQUFRLHlCQUF5QjtJQUdqQyxjQUFjLENBQWE7SUFHM0IsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUV2QixJQUNJLGdCQUFnQixDQUFDLEtBQTJC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MkVBOzs0RkQ1QmEsaUNBQWlDO2tCQVo3QyxTQUFTOytCQUNFLDZCQUE2QixhQUc1Qjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLG1DQUFtQzs0QkFDOUMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7MEVBTUQsY0FBYztzQkFEYixTQUFTO3VCQUFDLDRCQUE0QixFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQztnQkFJeEQsY0FBYztzQkFEYixLQUFLO2dCQUlGLGdCQUFnQjtzQkFEbkIsS0FBSztnQkFNTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sV0FBVztzQkFEVixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlHLFdBQVc7c0JBRG5CLE1BQU07Z0JBSUUsVUFBVTtzQkFEbEIsTUFBTTtnQkFJRSxZQUFZO3NCQURwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENvbXBvbmVudCxcclxuICBEZXN0cm95UmVmLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIGluamVjdCxcclxuICBJbmplY3RvcixcclxuICBJbnB1dCxcclxuICBOZ1pvbmUsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IsIE5nQ29udHJvbCwgVW50eXBlZEZvcm1Db250cm9sLH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgRWNhYnNFbGVtZW50QmFzZUNvbXBvbmVudCBmcm9tICcuLi9iYXNlL2VsZW1lbnQtYmFzZSc7XHJcbmltcG9ydCB7V2F5cG9pbnRUeXBlRW51bX0gZnJvbSAnLi4vYmFzZS9jb25zdHMvd2F5cG9pbnQuY29uc3RzJztcclxuaW1wb3J0IHtHb29nbGVQbGFjZVJlc3VsdCwgV2F5cG9pbnRRdWVyeUNoYW5nZSwgV2F5cG9pbnRTdWdnZXN0aW9uLH0gZnJvbSAnLi4vYmFzZS9tb2RlbHMvd2F5cG9pbnQubW9kZWxzJztcclxuaW1wb3J0IHtcclxuICBCZWhhdmlvclN1YmplY3QsXHJcbiAgY29tYmluZUxhdGVzdCxcclxuICBkZWJvdW5jZVRpbWUsXHJcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXHJcbiAgbWFwLFxyXG4gIE9ic2VydmFibGUsXHJcbiAgb2YsXHJcbiAgc3RhcnRXaXRoLFxyXG4gIFN1YmplY3QsXHJcbiAgdGFwLFxyXG59IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge3N3aXRjaE1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5pbXBvcnQgQXV0b2NvbXBsZXRlUHJlZGljdGlvbiA9IGdvb2dsZS5tYXBzLnBsYWNlcy5BdXRvY29tcGxldGVQcmVkaWN0aW9uO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlY2Ficy1wbGFjZS1hdXRvY29tcGxldGUtdjInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9lY2Ficy1wbGFjZS1hdXRvY29tcGxldGUtdjIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2VjYWJzLXBsYWNlLWF1dG9jb21wbGV0ZS12Mi5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IEVjYWJzUGxhY2VBdXRvY29tcGxldGVWMkNvbXBvbmVudCxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFY2Fic1BsYWNlQXV0b2NvbXBsZXRlVjJDb21wb25lbnRcclxuICBleHRlbmRzIEVjYWJzRWxlbWVudEJhc2VDb21wb25lbnRcclxuICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIEBWaWV3Q2hpbGQoJ21hdEN1c3RvbUF1dG9jb21wbGV0ZUlucHV0Jywge3N0YXRpYzogZmFsc2V9KVxyXG4gIG1hdEN1c3RvbUlucHV0OiBFbGVtZW50UmVmO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNob3dEZWxldGVJdGVtID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHdheXBvaW50c0hpc3RvcnkodmFsdWU6IFdheXBvaW50U3VnZ2VzdGlvbltdKSB7XHJcbiAgICB0aGlzLndheXBvaW50c0hpc3RvcnkkLm5leHQodmFsdWUgPz8gW10pO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzaG93U3VmZml4ID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgY291bnRyeUNvZGUgPSAnTVQnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGdvb2dsZUxvYWRlZDogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KClcclxuICB3YXlwb2ludFR5cGU6IFdheXBvaW50VHlwZUVudW07XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZGVib3VuY2VNcyA9IDI0MDtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcmVhZG9ubHkgcGxhY2VSZXN1bHQ6IEV2ZW50RW1pdHRlcjxHb29nbGVQbGFjZVJlc3VsdD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHJlYWRvbmx5IGRlbGV0ZUl0ZW0gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHJlYWRvbmx5IHF1ZXJ5Q2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8V2F5cG9pbnRRdWVyeUNoYW5nZT4oKTtcclxuXHJcbiAgaXNGb2N1c2VkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHdheXBvaW50U3VnZ2VzdGlvbnMkOiBPYnNlcnZhYmxlPFdheXBvaW50U3VnZ2VzdGlvbltdPjtcclxuICB2YWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xyXG5cclxuICBzZWxlY3RlZEluZGV4ID0gLTE7XHJcbiAgZGlzcGxheWVkU3VnZ2VzdGlvbnM6IFdheXBvaW50U3VnZ2VzdGlvbltdID0gW107XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgaW5wdXRRdWVyeSQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSB3YXlwb2ludHNIaXN0b3J5JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8XHJcbiAgICBXYXlwb2ludFN1Z2dlc3Rpb25bXVxyXG4gID4oW10pO1xyXG5cclxuICBwcml2YXRlIF92YWx1ZSA9ICcnO1xyXG4gIHByaXZhdGUgYXV0b2NvbXBsZXRlU2VydmljZTogZ29vZ2xlLm1hcHMucGxhY2VzLkF1dG9jb21wbGV0ZVNlcnZpY2U7XHJcbiAgcHJpdmF0ZSBwbGFjZXNTZXJ2aWNlOiBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VzU2VydmljZTtcclxuICBwcml2YXRlIHNlc3Npb25Ub2tlbjogZ29vZ2xlLm1hcHMucGxhY2VzLkF1dG9jb21wbGV0ZVNlc3Npb25Ub2tlbjtcclxuICBwcml2YXRlIGlzUmVzb2x2aW5nUGxhY2UgPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBNQVhfU1VHR0VTVElPTlMgPSAxMDtcclxuICBwcml2YXRlIHJlYWRvbmx5IGVtcHR5U3VnZ2VzdGlvbnM6IFdheXBvaW50U3VnZ2VzdGlvbltdID0gW107XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xyXG5cclxuICBnZXQgdmFsdWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICB9XHJcblxyXG4gIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5fdmFsdWUgPT09IHZhbHVlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy52YWx1ZSQubmV4dCh2YWx1ZSk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGNvbnN0IHtnb29nbGVMb2FkZWR9ID0gY2hhbmdlcyA/PyB7fTtcclxuXHJcbiAgICBpZiAoZ29vZ2xlTG9hZGVkPy5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgdGhpcy5pbml0R29vZ2xlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBuZ0NvbnRyb2w6IE5nQ29udHJvbCB8IG51bGwgPSB0aGlzLmluamVjdG9yLmdldChOZ0NvbnRyb2wsIG51bGwpO1xyXG5cclxuICAgIGlmIChuZ0NvbnRyb2wpIHtcclxuICAgICAgdGhpcy5jb250cm9sID0gbmdDb250cm9sLmNvbnRyb2wgYXMgVW50eXBlZEZvcm1Db250cm9sO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaW5wdXRRdWVyeSRcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VNcyksXHJcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKChxdWVyeSkgPT4ge1xyXG4gICAgICAgIHRoaXMucXVlcnlDaGFuZ2VkLmVtaXQoe1xyXG4gICAgICAgICAgd2F5cG9pbnRfdHlwZTogdGhpcy53YXlwb2ludFR5cGUsXHJcbiAgICAgICAgICBwbGFjZV9uYW1lOiBxdWVyeSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgY29uc3QgZ29vZ2xlU3VnZ2VzdGlvbnMkOiBPYnNlcnZhYmxlPFdheXBvaW50U3VnZ2VzdGlvbltdPiA9IGNvbWJpbmVMYXRlc3QoW1xyXG4gICAgICB0aGlzLmlzRm9jdXNlZCQsXHJcbiAgICAgIHRoaXMudmFsdWUkLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VNcyksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLFxyXG4gICAgXSkucGlwZShcclxuICAgICAgc3dpdGNoTWFwKChbaXNGb2N1c2VkLCB2YWx1ZV0pID0+XHJcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVTZXJ2aWNlICYmIGlzRm9jdXNlZCAmJiB2YWx1ZVxyXG4gICAgICAgICAgPyB0aGlzLmdldFBsYWNlc1Jlc3VsdHModmFsdWUpXHJcbiAgICAgICAgICA6IG9mKHRoaXMuZW1wdHlTdWdnZXN0aW9ucyksXHJcbiAgICAgICksXHJcbiAgICAgIHN0YXJ0V2l0aCh0aGlzLmVtcHR5U3VnZ2VzdGlvbnMpLFxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLndheXBvaW50U3VnZ2VzdGlvbnMkID0gY29tYmluZUxhdGVzdChbXHJcbiAgICAgIHRoaXMuaXNGb2N1c2VkJCxcclxuICAgICAgdGhpcy53YXlwb2ludHNIaXN0b3J5JCxcclxuICAgICAgZ29vZ2xlU3VnZ2VzdGlvbnMkLFxyXG4gICAgXSkucGlwZShcclxuICAgICAgbWFwKChbaXNGb2N1c2VkLCBoaXN0b3J5LCBnb29nbGVdKSA9PiB7XHJcbiAgICAgICAgaWYgKCFpc0ZvY3VzZWQpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmVtcHR5U3VnZ2VzdGlvbnM7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBtZXJnZWQgPSBbLi4uKGhpc3RvcnkgPz8gW10pLCAuLi4oZ29vZ2xlID8/IFtdKV07XHJcblxyXG4gICAgICAgIHJldHVybiBtZXJnZWQuc2xpY2UoMCwgdGhpcy5NQVhfU1VHR0VTVElPTlMpOyAvLyBEcm9wZG93biBzaG93cyBtYXggMTAgaXRlbXMgdG90YWxcclxuICAgICAgfSksXHJcbiAgICAgIHRhcCgoY2FwcGVkU3VnZ2VzdGlvbnMpID0+IHtcclxuICAgICAgICB0aGlzLmRpc3BsYXllZFN1Z2dlc3Rpb25zID0gY2FwcGVkU3VnZ2VzdGlvbnM7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gY2FwcGVkU3VnZ2VzdGlvbnM/Lmxlbmd0aCA/IDAgOiAtMTtcclxuICAgICAgfSksXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQgPSAoKSA9PiB7XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBvblRvdWNoOiAoKSA9PiB2b2lkID0gKCkgPT4ge1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgZ2V0UGxhY2VzUmVzdWx0cyhxdWVyeTogc3RyaW5nKTogT2JzZXJ2YWJsZTxXYXlwb2ludFN1Z2dlc3Rpb25bXT4ge1xyXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcikgPT4ge1xyXG4gICAgICB0aGlzLmF1dG9jb21wbGV0ZVNlcnZpY2UuZ2V0UGxhY2VQcmVkaWN0aW9ucyhcclxuICAgICAgICB7XHJcbiAgICAgICAgICBpbnB1dDogcXVlcnksXHJcbiAgICAgICAgICBjb21wb25lbnRSZXN0cmljdGlvbnM6IHtjb3VudHJ5OiB0aGlzLmNvdW50cnlDb2RlfSxcclxuICAgICAgICAgIHNlc3Npb25Ub2tlbjogdGhpcy5zZXNzaW9uVG9rZW4sXHJcbiAgICAgICAgfSxcclxuICAgICAgICAocHJlZGljdGlvbnMpID0+IHtcclxuICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICAgIG9ic2VydmVyLm5leHQodGhpcy50b1dheXBvaW50U3VnZ2VzdGlvbnMocHJlZGljdGlvbnMpKTtcclxuICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9XYXlwb2ludFN1Z2dlc3Rpb25zKFxyXG4gICAgcHJlZGljdGlvbnM6IEF1dG9jb21wbGV0ZVByZWRpY3Rpb25bXSB8IG51bGwsXHJcbiAgKTogV2F5cG9pbnRTdWdnZXN0aW9uW10ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgKHByZWRpY3Rpb25zID8/IFtdKVxyXG4gICAgICAgIC8vIERyb3BzIHByZWRpY3Rpb25zIHdpdGhvdXQgYSBwbGFjZV9pZCBiZWNhdXNlIHNlbGVjdGlvbiBhbmQgYm9va2luZyBib3RoIHJlcXVpcmUgaXRcclxuICAgICAgICAuZmlsdGVyKFxyXG4gICAgICAgICAgKFxyXG4gICAgICAgICAgICBwcmVkaWN0aW9uLFxyXG4gICAgICAgICAgKTogcHJlZGljdGlvbiBpcyBBdXRvY29tcGxldGVQcmVkaWN0aW9uICYgeyBwbGFjZV9pZDogc3RyaW5nIH0gPT5cclxuICAgICAgICAgICAgISFwcmVkaWN0aW9uLnBsYWNlX2lkLFxyXG4gICAgICAgIClcclxuICAgICAgICAubWFwKChwcmVkaWN0aW9uKSA9PiAoe1xyXG4gICAgICAgICAgYWRkaXRpb25hbF9pbmZvOiBwcmVkaWN0aW9uLmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgcGxhY2VfaWQ6IHByZWRpY3Rpb24ucGxhY2VfaWQsXHJcbiAgICAgICAgICBwcmVkaWN0aW9uX3Rlcm06IHByZWRpY3Rpb24udGVybXMsXHJcbiAgICAgICAgfSkpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb25Vc2VySW5wdXQocXVlcnk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5pbnB1dFF1ZXJ5JC5uZXh0KHF1ZXJ5KTtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlTdWdnZXN0aW9uKGluZGV4OiBudW1iZXIsIHN1Z2dlc3Rpb246IFdheXBvaW50U3VnZ2VzdGlvbik6IHN0cmluZyB7XHJcbiAgICBjb25zdCBpZCA9XHJcbiAgICAgIHN1Z2dlc3Rpb24uc3VnZ2VzdGlvbl9pZCA/P1xyXG4gICAgICBzdWdnZXN0aW9uLnBsYWNlX2lkID8/XHJcbiAgICAgIHN1Z2dlc3Rpb24uYWRkaXRpb25hbF9pbmZvID8/XHJcbiAgICAgIGAke2luZGV4fWA7XHJcblxyXG4gICAgcmV0dXJuIHN1Z2dlc3Rpb24ucHJlZGljdGlvbl90ZXJtID8gYGdvb2dsZToke2lkfWAgOiBgaGlzdG9yeToke2lkfWA7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdFN1Z2dlc3Rpb24oc3VnZ2VzdGlvbjogV2F5cG9pbnRTdWdnZXN0aW9uKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pc1Jlc29sdmluZ1BsYWNlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB7YWRkaXRpb25hbF9pbmZvLCBwbGFjZV9pZH0gPSBzdWdnZXN0aW9uID8/IHt9O1xyXG5cclxuICAgIGlmICghcGxhY2VfaWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaXNSZXNvbHZpbmdQbGFjZSA9IHRydWU7XHJcbiAgICB0aGlzLnZhbHVlID0gYWRkaXRpb25hbF9pbmZvO1xyXG4gICAgdGhpcy5pc0ZvY3VzZWQkLm5leHQoZmFsc2UpO1xyXG5cclxuICAgIHRoaXMucmVzb2x2ZUJ5UGxhY2VJZChwbGFjZV9pZCwgYWRkaXRpb25hbF9pbmZvKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzb2x2ZUJ5UGxhY2VJZChwbGFjZUlkOiBzdHJpbmcsIHRleHQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5wbGFjZXNTZXJ2aWNlLmdldERldGFpbHMoXHJcbiAgICAgIHtcclxuICAgICAgICBwbGFjZUlkLFxyXG4gICAgICAgIHNlc3Npb25Ub2tlbjogdGhpcy5zZXNzaW9uVG9rZW4sXHJcbiAgICAgICAgZmllbGRzOiBbJ2FkZHJlc3NfY29tcG9uZW50cycsICdnZW9tZXRyeS5sb2NhdGlvbicsICdwbGFjZV9pZCddLFxyXG4gICAgICB9LFxyXG4gICAgICAocGxhY2UsIHN0YXR1cykgPT4ge1xyXG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICBpZiAoc3RhdHVzID09PSBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VzU2VydmljZVN0YXR1cy5PSyAmJiBwbGFjZSkge1xyXG4gICAgICAgICAgICB0aGlzLnBsYWNlUmVzdWx0LmVtaXQoe3BsYWNlLCB0ZXh0fSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1BsYWNlIGRldGFpbHMgbG9va3VwIGZhaWxlZCcsIHtzdGF0dXMsIHBsYWNlSWR9KTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLnJlc2V0U2Vzc2lvblRva2VuKCk7XHJcbiAgICAgICAgICB0aGlzLmlzUmVzb2x2aW5nUGxhY2UgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5kaXNwbGF5ZWRTdWdnZXN0aW9ucz8ubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xyXG4gICAgICBjYXNlICdBcnJvd0Rvd24nOlxyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID1cclxuICAgICAgICAgICh0aGlzLnNlbGVjdGVkSW5kZXggKyAxKSAlIHRoaXMuZGlzcGxheWVkU3VnZ2VzdGlvbnMubGVuZ3RoO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAnQXJyb3dVcCc6XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPVxyXG4gICAgICAgICAgKHRoaXMuc2VsZWN0ZWRJbmRleCAtIDEgKyB0aGlzLmRpc3BsYXllZFN1Z2dlc3Rpb25zLmxlbmd0aCkgJVxyXG4gICAgICAgICAgdGhpcy5kaXNwbGF5ZWRTdWdnZXN0aW9ucy5sZW5ndGg7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlICdFbnRlcic6XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJbmRleCA+PSAwKSB7XHJcbiAgICAgICAgICB0aGlzLm9uU2VsZWN0U3VnZ2VzdGlvbihcclxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5ZWRTdWdnZXN0aW9uc1t0aGlzLnNlbGVjdGVkSW5kZXhdLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlICdFc2NhcGUnOlxyXG4gICAgICAgIHRoaXMuaXNGb2N1c2VkJC5uZXh0KGZhbHNlKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSAtMTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQmx1cigpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNGb2N1c2VkJC5uZXh0KGZhbHNlKTtcclxuICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gIH1cclxuXHJcbiAgb25Gb2N1cygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy52YWx1ZSAmJiB0aGlzLmF1dG9jb21wbGV0ZVNlcnZpY2UpIHtcclxuICAgICAgdGhpcy5yZXNldFNlc3Npb25Ub2tlbigpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuaXNGb2N1c2VkJC5uZXh0KHRydWUpKSk7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKG5leHRWYWx1ZTogc3RyaW5nIHwgbnVsbCA9ICcnKTogdm9pZCB7XHJcbiAgICBjb25zdCBuZXh0ID0gbmV4dFZhbHVlID8/ICcnO1xyXG5cclxuICAgIGlmICh0aGlzLl92YWx1ZSA9PT0gbmV4dCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fdmFsdWUgPSBuZXh0O1xyXG4gICAgdGhpcy52YWx1ZSQubmV4dChuZXh0KTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoID0gZm47XHJcbiAgfVxyXG5cclxuICBkZWxldGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlbGV0ZUl0ZW0uZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gJyc7XHJcbiAgICB0aGlzLmlucHV0UXVlcnkkLm5leHQoJycpO1xyXG4gICAgdGhpcy5vblRvdWNoKCk7XHJcbiAgICB0aGlzLm1hdEN1c3RvbUlucHV0Py5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0R29vZ2xlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hdXRvY29tcGxldGVTZXJ2aWNlID0gbmV3IGdvb2dsZS5tYXBzLnBsYWNlcy5BdXRvY29tcGxldGVTZXJ2aWNlKCk7XHJcblxyXG4gICAgdGhpcy5wbGFjZXNTZXJ2aWNlID0gbmV3IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZXNTZXJ2aWNlKFxyXG4gICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSxcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5yZXNldFNlc3Npb25Ub2tlbigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXNldFNlc3Npb25Ub2tlbigpOiB2b2lkIHtcclxuICAgIHRoaXMuc2Vzc2lvblRva2VuID0gbmV3IGdvb2dsZS5tYXBzLnBsYWNlcy5BdXRvY29tcGxldGVTZXNzaW9uVG9rZW4oKTtcclxuICB9XHJcbn1cclxuIiwiPGVjYWJzLWVsZW1lbnQtd3JhcHBlciBbZGF0YV09XCJnZXREYXRhKClcIj5cclxuICA8ZGl2IGNsYXNzPVwiYXV0b2NvbXBsZXRlLXVpIHctZnVsbFwiPlxyXG4gICAgPHNlY3Rpb24gY2xhc3M9XCJmb3JtLWZpZWxkX19pbnB1dC0td3JhcHBlciB3LWZ1bGxcIj5cclxuICAgICAgPGlucHV0ICNtYXRDdXN0b21BdXRvY29tcGxldGVJbnB1dFxyXG4gICAgICAgICAgICAgY2RrT3ZlcmxheU9yaWdpblxyXG4gICAgICAgICAgICAgI3RyaWdnZXI9XCJjZGtPdmVybGF5T3JpZ2luXCJcclxuICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICBbaWRdPVwibmFtZVwiXHJcbiAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGRfX2lucHV0IHctZnVsbFwiXHJcbiAgICAgICAgICAgICBhdXRvY29ycmVjdD1cIm9mZlwiXHJcbiAgICAgICAgICAgICBhdXRvY2FwaXRhbGl6ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICBzcGVsbGNoZWNrPVwib2ZmXCJcclxuICAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKClcIlxyXG4gICAgICAgICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxyXG4gICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Vc2VySW5wdXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXHJcbiAgICAgIC8+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJzaG93U3VmZml4XCJcclxuICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGRfX2lucHV0LS1zdWZmaXhcIj5cclxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJzaG93RGVsZXRlSXRlbVwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3VmZml4IGN1cnNvci1wb2ludGVyIGRlbGV0ZS1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJkZWxldGUoKVwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGUoKVwiPlxyXG4gICAgICAgICAgZGVsZXRlXHJcbiAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhc2hvd0RlbGV0ZUl0ZW0gJiYgdmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInN1ZmZpeCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImNsZWFyKClcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXIoKVwiPlxyXG4gICAgICAgICAgY2xvc2VcclxuICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvc2VjdGlvbj5cclxuICAgIDwhLS0gQ3VzdG9tIGRyb3Bkb3duIC0tPlxyXG4gICAgPG5nLXRlbXBsYXRlIGNka0Nvbm5lY3RlZE92ZXJsYXlcclxuICAgICAgICAgICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheVdpZHRoXT1cInRyaWdnZXIuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoXCJcclxuICAgICAgICAgICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheUZsZXhpYmxlRGltZW5zaW9uc109XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwidHJpZ2dlclwiXHJcbiAgICAgICAgICAgICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcGVuXT1cImlzRm9jdXNlZCQgfCBhc3luY1wiPlxyXG4gICAgICA8dWwgY2xhc3M9XCJhdXRvY29tcGxldGUtdWlfX2NvbnRhaW5lclwiPlxyXG4gICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgc3VnZ2VzdGlvbiBvZiB3YXlwb2ludFN1Z2dlc3Rpb25zJCB8IGFzeW5jOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5U3VnZ2VzdGlvblwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYXV0b2NvbXBsZXRlLXVpLS1pdGVtIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBob3ZlcjpiZy1ncmF5LTEwMFwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaSA9PT0gc2VsZWN0ZWRJbmRleFwiXHJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25TZWxlY3RTdWdnZXN0aW9uKHN1Z2dlc3Rpb24pXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXN1Z2dlc3Rpb24/LnByZWRpY3Rpb25fdGVybTsgZWxzZSBwdXJlUGxhY2VSZXN1bHRUcGxcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCB0cnVuY2F0ZVwiPlxyXG4gICAgICAgICAgICAgIHt7IHN1Z2dlc3Rpb24/LmFkZGl0aW9uYWxfaW5mbyB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJwaC1yZWd1bGFyOmNsb2NrLWNvdW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LTUgaC01IHRleHQteGwgdGV4dC1ncmF5LTQwMCBob3ZlcjohdGV4dC1ncmF5LTQwMFwiPlxyXG4gICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNwdXJlUGxhY2VSZXN1bHRUcGw+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cInctZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBnYXAteC0xIGxlYWRpbmctMCBvdmVyZmxvdy1oaWRkZW4gd2hpdGVzcGFjZS1ub3dyYXBcIj5cclxuICAgICAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgICAgICB7eyBzdWdnZXN0aW9uPy5wcmVkaWN0aW9uX3Rlcm0/LlswXT8udmFsdWUgfX1cclxuICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgIDxsaSAqbmdJZj1cInN1Z2dlc3Rpb24/LnByZWRpY3Rpb25fdGVybT8uWzFdPy52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC14cyB0ZXh0LWdyYXktNjAwIHRydW5jYXRlXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBzdWdnZXN0aW9uPy5wcmVkaWN0aW9uX3Rlcm0/LlsxXT8udmFsdWUgfCBzZXBhcmF0b3JBcHBlbmQ6IHN1Z2dlc3Rpb24/LnByZWRpY3Rpb25fdGVybT8uWzJdPy52YWx1ZSB9fVxyXG4gICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgPGxpICpuZ0lmPVwic3VnZ2VzdGlvbj8ucHJlZGljdGlvbl90ZXJtPy5bMl0/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXhzIHRleHQtZ3JheS02MDAgZm9udC1zZW1pYm9sZCB0cnVuY2F0ZVwiPlxyXG4gICAgICAgICAgICAgICAge3sgc3VnZ2VzdGlvbj8ucHJlZGljdGlvbl90ZXJtPy5bMl0/LnZhbHVlIH19XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgPC91bD5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9kaXY+XHJcbjwvZWNhYnMtZWxlbWVudC13cmFwcGVyPlxyXG4iXX0=
@@ -37,4 +37,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
37
37
  exports: [EcabsPlaceAutocompleteV2Component],
38
38
  }]
39
39
  }] });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtcGxhY2UtYXV0b2NvbXBsZXRlLXYyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1wbGFjZS1hdXRvY29tcGxldGUtdjIvZWNhYnMtcGxhY2UtYXV0b2NvbXBsZXRlLXYyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM1RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQWU3RSxNQUFNLE9BQU8sOEJBQThCO3dHQUE5Qiw4QkFBOEI7eUdBQTlCLDhCQUE4QixpQkFaMUIsaUNBQWlDLGFBRTlDLFlBQVk7WUFDWixvQkFBb0I7WUFDcEIsV0FBVztZQUNYLGFBQWE7WUFDYixtQkFBbUI7WUFDbkIsZ0JBQWdCO1lBQ2hCLG1CQUFtQixhQUVYLGlDQUFpQzt5R0FFaEMsOEJBQThCLFlBVnZDLFlBQVk7WUFDWixvQkFBb0I7WUFDcEIsV0FBVztZQUNYLGFBQWE7OzRGQU9KLDhCQUE4QjtrQkFiMUMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQztvQkFDakQsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osb0JBQW9CO3dCQUNwQixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsbUJBQW1CO3dCQUNuQixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjtxQkFDcEI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsaUNBQWlDLENBQUM7aUJBQzdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBFY2Fic1BsYWNlQXV0b2NvbXBsZXRlVjJDb21wb25lbnQgfSBmcm9tICcuL2VjYWJzLXBsYWNlLWF1dG9jb21wbGV0ZS12Mi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBFbGVtZW50V3JhcHBlck1vZHVsZSB9IGZyb20gJy4uL2Jhc2UvZWxlbWVudC13cmFwcGVyL2VsZW1lbnQtd3JhcHBlci5tb2R1bGUnO1xuaW1wb3J0IHsgU2VwYXJhdG9yQXBwZW5kUGlwZSB9IGZyb20gJy4uL2Jhc2UvcGlwZXMvc2VwYXJhdG9yLWFwcGVuZC5waXBlJztcbmltcG9ydCB7IENka0Nvbm5lY3RlZE92ZXJsYXksIENka092ZXJsYXlPcmlnaW4gfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0VjYWJzUGxhY2VBdXRvY29tcGxldGVWMkNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRWxlbWVudFdyYXBwZXJNb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBTZXBhcmF0b3JBcHBlbmRQaXBlLFxuICAgIENka092ZXJsYXlPcmlnaW4sXG4gICAgQ2RrQ29ubmVjdGVkT3ZlcmxheSxcbiAgXSxcbiAgZXhwb3J0czogW0VjYWJzUGxhY2VBdXRvY29tcGxldGVWMkNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIEVjYWJzUGxhY2VBdXRvY29tcGxldGVWMk1vZHVsZSB7fVxuIl19
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtcGxhY2UtYXV0b2NvbXBsZXRlLXYyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1wbGFjZS1hdXRvY29tcGxldGUtdjIvZWNhYnMtcGxhY2UtYXV0b2NvbXBsZXRlLXYyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM1RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQWU3RSxNQUFNLE9BQU8sOEJBQThCO3dHQUE5Qiw4QkFBOEI7eUdBQTlCLDhCQUE4QixpQkFaMUIsaUNBQWlDLGFBRTlDLFlBQVk7WUFDWixvQkFBb0I7WUFDcEIsV0FBVztZQUNYLGFBQWE7WUFDYixtQkFBbUI7WUFDbkIsZ0JBQWdCO1lBQ2hCLG1CQUFtQixhQUVYLGlDQUFpQzt5R0FFaEMsOEJBQThCLFlBVnZDLFlBQVk7WUFDWixvQkFBb0I7WUFDcEIsV0FBVztZQUNYLGFBQWE7OzRGQU9KLDhCQUE4QjtrQkFiMUMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQztvQkFDakQsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osb0JBQW9CO3dCQUNwQixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsbUJBQW1CO3dCQUNuQixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjtxQkFDcEI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsaUNBQWlDLENBQUM7aUJBQzdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRWNhYnNQbGFjZUF1dG9jb21wbGV0ZVYyQ29tcG9uZW50IH0gZnJvbSAnLi9lY2Ficy1wbGFjZS1hdXRvY29tcGxldGUtdjIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgRWxlbWVudFdyYXBwZXJNb2R1bGUgfSBmcm9tICcuLi9iYXNlL2VsZW1lbnQtd3JhcHBlci9lbGVtZW50LXdyYXBwZXIubW9kdWxlJztcclxuaW1wb3J0IHsgU2VwYXJhdG9yQXBwZW5kUGlwZSB9IGZyb20gJy4uL2Jhc2UvcGlwZXMvc2VwYXJhdG9yLWFwcGVuZC5waXBlJztcclxuaW1wb3J0IHsgQ2RrQ29ubmVjdGVkT3ZlcmxheSwgQ2RrT3ZlcmxheU9yaWdpbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbRWNhYnNQbGFjZUF1dG9jb21wbGV0ZVYyQ29tcG9uZW50XSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBFbGVtZW50V3JhcHBlck1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIFNlcGFyYXRvckFwcGVuZFBpcGUsXHJcbiAgICBDZGtPdmVybGF5T3JpZ2luLFxyXG4gICAgQ2RrQ29ubmVjdGVkT3ZlcmxheSxcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtFY2Fic1BsYWNlQXV0b2NvbXBsZXRlVjJDb21wb25lbnRdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRWNhYnNQbGFjZUF1dG9jb21wbGV0ZVYyTW9kdWxlIHt9XHJcbiJdfQ==
@@ -22,11 +22,11 @@ export class EcabsProfileComponent {
22
22
  }
23
23
  }
24
24
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsProfileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
25
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsProfileComponent, selector: "ecabs-profile", inputs: { avatar: "avatar", name: "name", title: "title" }, outputs: { avatarChange: "avatarChange" }, usesOnChanges: true, ngImport: i0, template: "<!-- eslint-disable-next-line -->\n<ul (click)=\"avatarChange.emit()\" class=\"flex text-black cursor-pointer\">\n <li class=\"md:mr-3\">\n <div *ngIf=\"!useAvatar; else avatarTpl\" ecabsDynamicBgColor [params]=\"name\"\n class=\"flex h-12 w-12 rounded-full bg-gray-50 items-center justify-center text-white\">\n <span class=\"text-xl font-medium\">{{ initials }}</span>\n </div>\n </li>\n\n <li class=\"hidden md:flex flex-1 flex-col justify-center\">\n <div class=\"font-semibold\">{{ name }}</div>\n <div class=\"text-xs\">{{ title }}</div>\n </li>\n</ul>\n\n<ng-template #avatarTpl>\n <!-- eslint-disable-next-line -->\n <img [src]=\"avatar\" class=\"rounded-full\"/>\n</ng-template>\n\n", styles: ["img{width:40px;height:40px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.EcabsDynamicBgColorDirective, selector: "[ecabsDynamicBgColor]", inputs: ["params", "saturation", "lightness"] }] });
25
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsProfileComponent, selector: "ecabs-profile", inputs: { avatar: "avatar", name: "name", title: "title" }, outputs: { avatarChange: "avatarChange" }, usesOnChanges: true, ngImport: i0, template: "<!-- eslint-disable-next-line -->\r\n<ul (click)=\"avatarChange.emit()\" class=\"flex text-black cursor-pointer\">\r\n <li class=\"md:mr-3\">\r\n <div *ngIf=\"!useAvatar; else avatarTpl\" ecabsDynamicBgColor [params]=\"name\"\r\n class=\"flex h-12 w-12 rounded-full bg-gray-50 items-center justify-center text-white\">\r\n <span class=\"text-xl font-medium\">{{ initials }}</span>\r\n </div>\r\n </li>\r\n\r\n <li class=\"hidden md:flex flex-1 flex-col justify-center\">\r\n <div class=\"font-semibold\">{{ name }}</div>\r\n <div class=\"text-xs\">{{ title }}</div>\r\n </li>\r\n</ul>\r\n\r\n<ng-template #avatarTpl>\r\n <!-- eslint-disable-next-line -->\r\n <img [src]=\"avatar\" class=\"rounded-full\"/>\r\n</ng-template>\r\n\r\n", styles: ["img{width:40px;height:40px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.EcabsDynamicBgColorDirective, selector: "[ecabsDynamicBgColor]", inputs: ["params", "saturation", "lightness"] }] });
26
26
  }
27
27
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsProfileComponent, decorators: [{
28
28
  type: Component,
29
- args: [{ selector: 'ecabs-profile', template: "<!-- eslint-disable-next-line -->\n<ul (click)=\"avatarChange.emit()\" class=\"flex text-black cursor-pointer\">\n <li class=\"md:mr-3\">\n <div *ngIf=\"!useAvatar; else avatarTpl\" ecabsDynamicBgColor [params]=\"name\"\n class=\"flex h-12 w-12 rounded-full bg-gray-50 items-center justify-center text-white\">\n <span class=\"text-xl font-medium\">{{ initials }}</span>\n </div>\n </li>\n\n <li class=\"hidden md:flex flex-1 flex-col justify-center\">\n <div class=\"font-semibold\">{{ name }}</div>\n <div class=\"text-xs\">{{ title }}</div>\n </li>\n</ul>\n\n<ng-template #avatarTpl>\n <!-- eslint-disable-next-line -->\n <img [src]=\"avatar\" class=\"rounded-full\"/>\n</ng-template>\n\n", styles: ["img{width:40px;height:40px}\n"] }]
29
+ args: [{ selector: 'ecabs-profile', template: "<!-- eslint-disable-next-line -->\r\n<ul (click)=\"avatarChange.emit()\" class=\"flex text-black cursor-pointer\">\r\n <li class=\"md:mr-3\">\r\n <div *ngIf=\"!useAvatar; else avatarTpl\" ecabsDynamicBgColor [params]=\"name\"\r\n class=\"flex h-12 w-12 rounded-full bg-gray-50 items-center justify-center text-white\">\r\n <span class=\"text-xl font-medium\">{{ initials }}</span>\r\n </div>\r\n </li>\r\n\r\n <li class=\"hidden md:flex flex-1 flex-col justify-center\">\r\n <div class=\"font-semibold\">{{ name }}</div>\r\n <div class=\"text-xs\">{{ title }}</div>\r\n </li>\r\n</ul>\r\n\r\n<ng-template #avatarTpl>\r\n <!-- eslint-disable-next-line -->\r\n <img [src]=\"avatar\" class=\"rounded-full\"/>\r\n</ng-template>\r\n\r\n", styles: ["img{width:40px;height:40px}\n"] }]
30
30
  }], propDecorators: { avatar: [{
31
31
  type: Input
32
32
  }], name: [{
@@ -36,4 +36,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
36
36
  }], avatarChange: [{
37
37
  type: Output
38
38
  }] } });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtcHJvZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lY2Ficy1jb21wb25lbnRzL3NyYy9saWIvZWNhYnMtcHJvZmlsZS9lY2Ficy1wcm9maWxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1wcm9maWxlL2VjYWJzLXByb2ZpbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQzs7OztBQU92QixNQUFNLE9BQU8scUJBQXFCO0lBRWhDLE1BQU0sR0FBRyxpQ0FBaUMsQ0FBQztJQUVsQyxJQUFJLENBQVM7SUFDYixLQUFLLENBQVM7SUFHdkIsWUFBWSxHQUEwQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBRXpELFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDbEIsUUFBUSxDQUFTO0lBRWpCLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFFdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQztRQUV4QyxJQUFJLElBQUksRUFBRSxZQUFZLEVBQUU7WUFDdEIsK0RBQStEO1lBQy9ELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLHVCQUF1QixFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBRXRFLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUztpQkFDdEIsS0FBSyxDQUFDLElBQUksQ0FBQztpQkFDWCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO2lCQUM3QyxpQkFBaUIsRUFBRSxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQzt3R0EzQlUscUJBQXFCOzRGQUFyQixxQkFBcUIsaUxDZGxDLG90QkFvQkE7OzRGRE5hLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxlQUFlOzhCQU16QixNQUFNO3NCQURMLEtBQUs7Z0JBR0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFHTixZQUFZO3NCQURYLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZWNhYnMtcHJvZmlsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9lY2Ficy1wcm9maWxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZWNhYnMtcHJvZmlsZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBFY2Fic1Byb2ZpbGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKVxuICBhdmF0YXIgPSAnL2Fzc2V0cy9pbWFnZXMvcHJvZmlsZS1pY29uLnBuZyc7XG5cbiAgQElucHV0KCkgbmFtZTogc3RyaW5nO1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuXG4gIEBPdXRwdXQoKVxuICBhdmF0YXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICB1c2VBdmF0YXIgPSBmYWxzZTtcbiAgaW5pdGlhbHM6IHN0cmluZztcblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3QgeyBhdmF0YXIsIG5hbWUgfSA9IGNoYW5nZXMgPz8ge307XG5cbiAgICB0aGlzLnVzZUF2YXRhciA9ICEhYXZhdGFyPy5jdXJyZW50VmFsdWU7XG5cbiAgICBpZiAobmFtZT8uY3VycmVudFZhbHVlKSB7XG4gICAgICAvLyBnZXQgb25seSBmaXJzdCBhbmQgbGFzdCBuYW1lIGluIGNhc2UgbmFtZSBoYXMgbXVsdGlwbGUgd29yZHNcbiAgICAgIGNvbnN0IHNob3J0TmFtZSA9IHRoaXMubmFtZS5yZXBsYWNlKC8oW2Etel0rKSAuKiAoW2Etel0rKS9pLCAnJDEgJDInKTtcblxuICAgICAgdGhpcy5pbml0aWFscyA9IHNob3J0TmFtZVxuICAgICAgICAuc3BsaXQoL1xccy8pXG4gICAgICAgIC5yZWR1Y2UoKF8sIHdvcmQpID0+IF8gKyB3b3JkLnNsaWNlKDAsIDEpLCAnJylcbiAgICAgICAgLnRvTG9jYWxlVXBwZXJDYXNlKCk7XG4gICAgfVxuICB9XG59XG4iLCI8IS0tIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSAtLT5cbjx1bCAoY2xpY2spPVwiYXZhdGFyQ2hhbmdlLmVtaXQoKVwiIGNsYXNzPVwiZmxleCB0ZXh0LWJsYWNrIGN1cnNvci1wb2ludGVyXCI+XG4gIDxsaSBjbGFzcz1cIm1kOm1yLTNcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiIXVzZUF2YXRhcjsgZWxzZSBhdmF0YXJUcGxcIiBlY2Fic0R5bmFtaWNCZ0NvbG9yIFtwYXJhbXNdPVwibmFtZVwiXG4gICAgICAgICBjbGFzcz1cImZsZXggaC0xMiB3LTEyIHJvdW5kZWQtZnVsbCBiZy1ncmF5LTUwIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LXdoaXRlXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQteGwgZm9udC1tZWRpdW1cIj57eyBpbml0aWFscyB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9saT5cblxuICA8bGkgY2xhc3M9XCJoaWRkZW4gbWQ6ZmxleCBmbGV4LTEgZmxleC1jb2wganVzdGlmeS1jZW50ZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9udC1zZW1pYm9sZFwiPnt7IG5hbWUgfX08L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwidGV4dC14c1wiPnt7IHRpdGxlIH19PC9kaXY+XG4gIDwvbGk+XG48L3VsPlxuXG48bmctdGVtcGxhdGUgI2F2YXRhclRwbD5cbiAgPCEtLSBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgLS0+XG4gIDxpbWcgW3NyY109XCJhdmF0YXJcIiBjbGFzcz1cInJvdW5kZWQtZnVsbFwiLz5cbjwvbmctdGVtcGxhdGU+XG5cbiJdfQ==
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtcHJvZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lY2Ficy1jb21wb25lbnRzL3NyYy9saWIvZWNhYnMtcHJvZmlsZS9lY2Ficy1wcm9maWxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1wcm9maWxlL2VjYWJzLXByb2ZpbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQzs7OztBQU92QixNQUFNLE9BQU8scUJBQXFCO0lBRWhDLE1BQU0sR0FBRyxpQ0FBaUMsQ0FBQztJQUVsQyxJQUFJLENBQVM7SUFDYixLQUFLLENBQVM7SUFHdkIsWUFBWSxHQUEwQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBRXpELFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDbEIsUUFBUSxDQUFTO0lBRWpCLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFFdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQztRQUV4QyxJQUFJLElBQUksRUFBRSxZQUFZLEVBQUU7WUFDdEIsK0RBQStEO1lBQy9ELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLHVCQUF1QixFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBRXRFLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUztpQkFDdEIsS0FBSyxDQUFDLElBQUksQ0FBQztpQkFDWCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO2lCQUM3QyxpQkFBaUIsRUFBRSxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQzt3R0EzQlUscUJBQXFCOzRGQUFyQixxQkFBcUIsaUxDZGxDLDR2QkFvQkE7OzRGRE5hLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxlQUFlOzhCQU16QixNQUFNO3NCQURMLEtBQUs7Z0JBR0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFHTixZQUFZO3NCQURYLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlY2Ficy1wcm9maWxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZWNhYnMtcHJvZmlsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZWNhYnMtcHJvZmlsZS5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRWNhYnNQcm9maWxlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKVxyXG4gIGF2YXRhciA9ICcvYXNzZXRzL2ltYWdlcy9wcm9maWxlLWljb24ucG5nJztcclxuXHJcbiAgQElucHV0KCkgbmFtZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmc7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIGF2YXRhckNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICB1c2VBdmF0YXIgPSBmYWxzZTtcclxuICBpbml0aWFsczogc3RyaW5nO1xyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IGF2YXRhciwgbmFtZSB9ID0gY2hhbmdlcyA/PyB7fTtcclxuXHJcbiAgICB0aGlzLnVzZUF2YXRhciA9ICEhYXZhdGFyPy5jdXJyZW50VmFsdWU7XHJcblxyXG4gICAgaWYgKG5hbWU/LmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICAvLyBnZXQgb25seSBmaXJzdCBhbmQgbGFzdCBuYW1lIGluIGNhc2UgbmFtZSBoYXMgbXVsdGlwbGUgd29yZHNcclxuICAgICAgY29uc3Qgc2hvcnROYW1lID0gdGhpcy5uYW1lLnJlcGxhY2UoLyhbYS16XSspIC4qIChbYS16XSspL2ksICckMSAkMicpO1xyXG5cclxuICAgICAgdGhpcy5pbml0aWFscyA9IHNob3J0TmFtZVxyXG4gICAgICAgIC5zcGxpdCgvXFxzLylcclxuICAgICAgICAucmVkdWNlKChfLCB3b3JkKSA9PiBfICsgd29yZC5zbGljZSgwLCAxKSwgJycpXHJcbiAgICAgICAgLnRvTG9jYWxlVXBwZXJDYXNlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjwhLS0gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIC0tPlxyXG48dWwgKGNsaWNrKT1cImF2YXRhckNoYW5nZS5lbWl0KClcIiBjbGFzcz1cImZsZXggdGV4dC1ibGFjayBjdXJzb3ItcG9pbnRlclwiPlxyXG4gIDxsaSBjbGFzcz1cIm1kOm1yLTNcIj5cclxuICAgIDxkaXYgKm5nSWY9XCIhdXNlQXZhdGFyOyBlbHNlIGF2YXRhclRwbFwiIGVjYWJzRHluYW1pY0JnQ29sb3IgW3BhcmFtc109XCJuYW1lXCJcclxuICAgICAgICAgY2xhc3M9XCJmbGV4IGgtMTIgdy0xMiByb3VuZGVkLWZ1bGwgYmctZ3JheS01MCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC13aGl0ZVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQteGwgZm9udC1tZWRpdW1cIj57eyBpbml0aWFscyB9fTwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbGk+XHJcblxyXG4gIDxsaSBjbGFzcz1cImhpZGRlbiBtZDpmbGV4IGZsZXgtMSBmbGV4LWNvbCBqdXN0aWZ5LWNlbnRlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImZvbnQtc2VtaWJvbGRcIj57eyBuYW1lIH19PC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGV4dC14c1wiPnt7IHRpdGxlIH19PC9kaXY+XHJcbiAgPC9saT5cclxuPC91bD5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYXZhdGFyVHBsPlxyXG4gIDwhLS0gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIC0tPlxyXG4gIDxpbWcgW3NyY109XCJhdmF0YXJcIiBjbGFzcz1cInJvdW5kZWQtZnVsbFwiLz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiJdfQ==
@@ -16,4 +16,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
16
16
  exports: [EcabsProfileComponent],
17
17
  }]
18
18
  }] });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtcHJvZmlsZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lY2Ficy1jb21wb25lbnRzL3NyYy9saWIvZWNhYnMtcHJvZmlsZS9lY2Ficy1wcm9maWxlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxzREFBc0QsQ0FBQzs7QUFPMUcsTUFBTSxPQUFPLGtCQUFrQjt3R0FBbEIsa0JBQWtCO3lHQUFsQixrQkFBa0IsaUJBSmQscUJBQXFCLGFBQzFCLFlBQVksRUFBRSxrQ0FBa0MsYUFDaEQscUJBQXFCO3lHQUVwQixrQkFBa0IsWUFIbkIsWUFBWSxFQUFFLGtDQUFrQzs7NEZBRy9DLGtCQUFrQjtrQkFMOUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztvQkFDckMsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGtDQUFrQyxDQUFDO29CQUMzRCxPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEVjYWJzUHJvZmlsZUNvbXBvbmVudCB9IGZyb20gJy4vZWNhYnMtcHJvZmlsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRWNhYnNEeW5hbWljQmdDb2xvckRpcmVjdGl2ZU1vZHVsZSB9IGZyb20gJy4uL2Jhc2UvZGlyZWN0aXZlcy9keW5hbWljLWJnLWNvbG9yLmRpcmVjdGl2ZS5tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtFY2Fic1Byb2ZpbGVDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBFY2Fic0R5bmFtaWNCZ0NvbG9yRGlyZWN0aXZlTW9kdWxlXSxcbiAgZXhwb3J0czogW0VjYWJzUHJvZmlsZUNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIEVjYWJzUHJvZmlsZU1vZHVsZSB7fVxuIl19
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtcHJvZmlsZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lY2Ficy1jb21wb25lbnRzL3NyYy9saWIvZWNhYnMtcHJvZmlsZS9lY2Ficy1wcm9maWxlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxzREFBc0QsQ0FBQzs7QUFPMUcsTUFBTSxPQUFPLGtCQUFrQjt3R0FBbEIsa0JBQWtCO3lHQUFsQixrQkFBa0IsaUJBSmQscUJBQXFCLGFBQzFCLFlBQVksRUFBRSxrQ0FBa0MsYUFDaEQscUJBQXFCO3lHQUVwQixrQkFBa0IsWUFIbkIsWUFBWSxFQUFFLGtDQUFrQzs7NEZBRy9DLGtCQUFrQjtrQkFMOUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztvQkFDckMsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGtDQUFrQyxDQUFDO29CQUMzRCxPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBFY2Fic1Byb2ZpbGVDb21wb25lbnQgfSBmcm9tICcuL2VjYWJzLXByb2ZpbGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRWNhYnNEeW5hbWljQmdDb2xvckRpcmVjdGl2ZU1vZHVsZSB9IGZyb20gJy4uL2Jhc2UvZGlyZWN0aXZlcy9keW5hbWljLWJnLWNvbG9yLmRpcmVjdGl2ZS5tb2R1bGUnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtFY2Fic1Byb2ZpbGVDb21wb25lbnRdLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEVjYWJzRHluYW1pY0JnQ29sb3JEaXJlY3RpdmVNb2R1bGVdLFxyXG4gIGV4cG9ydHM6IFtFY2Fic1Byb2ZpbGVDb21wb25lbnRdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRWNhYnNQcm9maWxlTW9kdWxlIHt9XHJcbiJdfQ==
@@ -52,7 +52,7 @@ export class EcabsRadioButtonListComponent extends EcabsElementBaseComponent {
52
52
  useExisting: EcabsRadioButtonListComponent,
53
53
  multi: true,
54
54
  },
55
- ], viewQueries: [{ propertyName: "matRadioGroup", first: true, predicate: MatRadioGroup, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ecabs-element-wrapper [data]=\"getData()\">\n <mat-radio-group\n [ngClass]=\"{ 'flex flex-col my-1': direction === 'vertical' }\"\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [id]=\"name\"\n [name]=\"name\"\n (change)=\"changed.emit($event)\"\n >\n <mat-radio-button\n [disabled]=\"item.disabled\"\n [ngClass]=\"{ 'my-1': direction === 'vertical' }\"\n class=\"mr-4\"\n *ngFor=\"let item of items\"\n [value]=\"item.value\"\n >\n {{ item.label }}\n </mat-radio-button>\n </mat-radio-group>\n</ecabs-element-wrapper>\n", styles: [".mr-4{margin-right:1rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.flex{display:flex}.flex-col{flex-direction:column}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2.EcabsElementWrapperComponent, selector: "ecabs-element-wrapper", inputs: ["data", "showCloseIcon", "focusedFlag", "showPassword", "control"], outputs: ["showHidePassword", "clear", "increase", "decrease"] }, { kind: "directive", type: i3.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { kind: "component", type: i3.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
55
+ ], viewQueries: [{ propertyName: "matRadioGroup", first: true, predicate: MatRadioGroup, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ecabs-element-wrapper [data]=\"getData()\">\r\n <mat-radio-group\r\n [ngClass]=\"{ 'flex flex-col my-1': direction === 'vertical' }\"\r\n [(ngModel)]=\"value\"\r\n [disabled]=\"disabled\"\r\n [id]=\"name\"\r\n [name]=\"name\"\r\n (change)=\"changed.emit($event)\"\r\n >\r\n <mat-radio-button\r\n [disabled]=\"item.disabled\"\r\n [ngClass]=\"{ 'my-1': direction === 'vertical' }\"\r\n class=\"mr-4\"\r\n *ngFor=\"let item of items\"\r\n [value]=\"item.value\"\r\n >\r\n {{ item.label }}\r\n </mat-radio-button>\r\n </mat-radio-group>\r\n</ecabs-element-wrapper>\r\n", styles: [".mr-4{margin-right:1rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.flex{display:flex}.flex-col{flex-direction:column}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2.EcabsElementWrapperComponent, selector: "ecabs-element-wrapper", inputs: ["data", "showCloseIcon", "focusedFlag", "showPassword", "control"], outputs: ["showHidePassword", "clear", "increase", "decrease"] }, { kind: "directive", type: i3.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { kind: "component", type: i3.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
56
56
  }
57
57
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsRadioButtonListComponent, decorators: [{
58
58
  type: Component,
@@ -62,7 +62,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
62
62
  useExisting: EcabsRadioButtonListComponent,
63
63
  multi: true,
64
64
  },
65
- ], template: "<ecabs-element-wrapper [data]=\"getData()\">\n <mat-radio-group\n [ngClass]=\"{ 'flex flex-col my-1': direction === 'vertical' }\"\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n [id]=\"name\"\n [name]=\"name\"\n (change)=\"changed.emit($event)\"\n >\n <mat-radio-button\n [disabled]=\"item.disabled\"\n [ngClass]=\"{ 'my-1': direction === 'vertical' }\"\n class=\"mr-4\"\n *ngFor=\"let item of items\"\n [value]=\"item.value\"\n >\n {{ item.label }}\n </mat-radio-button>\n </mat-radio-group>\n</ecabs-element-wrapper>\n", styles: [".mr-4{margin-right:1rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.flex{display:flex}.flex-col{flex-direction:column}\n"] }]
65
+ ], template: "<ecabs-element-wrapper [data]=\"getData()\">\r\n <mat-radio-group\r\n [ngClass]=\"{ 'flex flex-col my-1': direction === 'vertical' }\"\r\n [(ngModel)]=\"value\"\r\n [disabled]=\"disabled\"\r\n [id]=\"name\"\r\n [name]=\"name\"\r\n (change)=\"changed.emit($event)\"\r\n >\r\n <mat-radio-button\r\n [disabled]=\"item.disabled\"\r\n [ngClass]=\"{ 'my-1': direction === 'vertical' }\"\r\n class=\"mr-4\"\r\n *ngFor=\"let item of items\"\r\n [value]=\"item.value\"\r\n >\r\n {{ item.label }}\r\n </mat-radio-button>\r\n </mat-radio-group>\r\n</ecabs-element-wrapper>\r\n", styles: [".mr-4{margin-right:1rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.flex{display:flex}.flex-col{flex-direction:column}\n"] }]
66
66
  }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { matRadioGroup: [{
67
67
  type: ViewChild,
68
68
  args: [MatRadioGroup, { static: false }]
@@ -73,4 +73,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
73
73
  }], changed: [{
74
74
  type: Output
75
75
  }] } });
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtcmFkaW8tYnV0dG9uLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWNhYnMtY29tcG9uZW50cy9zcmMvbGliL2VjYWJzLXJhZGlvLWJ1dHRvbi1saXN0L2VjYWJzLXJhZGlvLWJ1dHRvbi1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1yYWRpby1idXR0b24tbGlzdC9lY2Ficy1yYWRpby1idXR0b24tbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFFWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsR0FFVixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8seUJBQXlCLE1BQU0sc0JBQXNCLENBQUM7QUFFN0QsT0FBTyxFQUFrQixhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7O0FBY3hFLE1BQU0sT0FBTyw2QkFDWCxTQUFRLHlCQUF5QjtJQTZCYjtJQXpCcEIsYUFBYSxDQUFnQjtJQUc3QixLQUFLLENBQWlCO0lBR3RCLFNBQVMsR0FBOEIsWUFBWSxDQUFDO0lBRzNDLE9BQU8sR0FBRyxJQUFJLFlBQVksRUFBa0IsQ0FBQztJQUV0RCxHQUFHLENBQVM7SUFFWixJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDbEIsQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLEdBQUc7UUFDWCxJQUFJLEdBQUcsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxHQUFHLEVBQUU7WUFDekMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7WUFDZixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDbkI7SUFDSCxDQUFDO0lBRUQsWUFBb0IsUUFBa0I7UUFDcEMsS0FBSyxFQUFFLENBQUM7UUFEVSxhQUFRLEdBQVIsUUFBUSxDQUFVO0lBRXRDLENBQUM7SUFFRCxRQUFRLEdBQVEsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBQ3pCLE9BQU8sR0FBUSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFFeEIsZUFBZTtRQUNiLE1BQU0sU0FBUyxHQUFjLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNoRSxJQUFJLFNBQVMsRUFBRTtZQUNiLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQTZCLENBQUM7U0FDeEQ7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVU7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDcEIsQ0FBQzt3R0F0RFUsNkJBQTZCOzRGQUE3Qiw2QkFBNkIsdUlBUjdCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLDZCQUE2QjtnQkFDMUMsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLHlFQU1VLGFBQWEsdUVDbkMxQiwya0JBb0JBOzs0RkRXYSw2QkFBNkI7a0JBWnpDLFNBQVM7K0JBQ0UseUJBQXlCLGFBR3hCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsK0JBQStCOzRCQUMxQyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjsrRkFPRCxhQUFhO3NCQURaLFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFJM0MsS0FBSztzQkFESixLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJRyxPQUFPO3NCQURmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIE5nQ29udHJvbCxcbiAgVW50eXBlZEZvcm1Db250cm9sLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgRWNhYnNFbGVtZW50QmFzZUNvbXBvbmVudCBmcm9tICcuLi9iYXNlL2VsZW1lbnQtYmFzZSc7XG5pbXBvcnQgeyBTZWxlY3RPcHRpb24gfSBmcm9tICcuLi9iYXNlL21vZGVscy9zZWxlY3QubW9kZWxzJztcbmltcG9ydCB7IE1hdFJhZGlvQ2hhbmdlLCBNYXRSYWRpb0dyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW8nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlY2Ficy1yYWRpby1idXR0b24tbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9lY2Ficy1yYWRpby1idXR0b24tbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydlY2Ficy1yYWRpby1idXR0b24tbGlzdC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBFY2Fic1JhZGlvQnV0dG9uTGlzdENvbXBvbmVudCxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEVjYWJzUmFkaW9CdXR0b25MaXN0Q29tcG9uZW50XG4gIGV4dGVuZHMgRWNhYnNFbGVtZW50QmFzZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0XG57XG4gIEBWaWV3Q2hpbGQoTWF0UmFkaW9Hcm91cCwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIG1hdFJhZGlvR3JvdXA6IE1hdFJhZGlvR3JvdXA7XG5cbiAgQElucHV0KClcbiAgaXRlbXM6IFNlbGVjdE9wdGlvbltdO1xuXG4gIEBJbnB1dCgpXG4gIGRpcmVjdGlvbjogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJyA9ICdob3Jpem9udGFsJztcblxuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgY2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8TWF0UmFkaW9DaGFuZ2U+KCk7XG5cbiAgdmFsOiBzdHJpbmc7XG5cbiAgZ2V0IHZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudmFsO1xuICB9XG5cbiAgc2V0IHZhbHVlKHZhbCkge1xuICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnZhbCAhPT0gdmFsKSB7XG4gICAgICB0aGlzLnZhbCA9IHZhbDtcbiAgICAgIHRoaXMub25DaGFuZ2UodmFsKTtcbiAgICAgIHRoaXMub25Ub3VjaCh2YWwpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcbiAgb25Ub3VjaDogYW55ID0gKCkgPT4ge307XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IG5nQ29udHJvbDogTmdDb250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQoTmdDb250cm9sLCBudWxsKTtcbiAgICBpZiAobmdDb250cm9sKSB7XG4gICAgICB0aGlzLmNvbnRyb2wgPSBuZ0NvbnRyb2wuY29udHJvbCBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gICAgfVxuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xuICB9XG59XG4iLCI8ZWNhYnMtZWxlbWVudC13cmFwcGVyIFtkYXRhXT1cImdldERhdGEoKVwiPlxuICA8bWF0LXJhZGlvLWdyb3VwXG4gICAgW25nQ2xhc3NdPVwieyAnZmxleCBmbGV4LWNvbCBteS0xJzogZGlyZWN0aW9uID09PSAndmVydGljYWwnIH1cIlxuICAgIFsobmdNb2RlbCldPVwidmFsdWVcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW2lkXT1cIm5hbWVcIlxuICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgIChjaGFuZ2UpPVwiY2hhbmdlZC5lbWl0KCRldmVudClcIlxuICA+XG4gICAgPG1hdC1yYWRpby1idXR0b25cbiAgICAgIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ215LTEnOiBkaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCcgfVwiXG4gICAgICBjbGFzcz1cIm1yLTRcIlxuICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIlxuICAgICAgW3ZhbHVlXT1cIml0ZW0udmFsdWVcIlxuICAgID5cbiAgICAgIHt7IGl0ZW0ubGFiZWwgfX1cbiAgICA8L21hdC1yYWRpby1idXR0b24+XG4gIDwvbWF0LXJhZGlvLWdyb3VwPlxuPC9lY2Ficy1lbGVtZW50LXdyYXBwZXI+XG4iXX0=
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtcmFkaW8tYnV0dG9uLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWNhYnMtY29tcG9uZW50cy9zcmMvbGliL2VjYWJzLXJhZGlvLWJ1dHRvbi1saXN0L2VjYWJzLXJhZGlvLWJ1dHRvbi1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1yYWRpby1idXR0b24tbGlzdC9lY2Ficy1yYWRpby1idXR0b24tbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFFWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsR0FFVixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8seUJBQXlCLE1BQU0sc0JBQXNCLENBQUM7QUFFN0QsT0FBTyxFQUFrQixhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7O0FBY3hFLE1BQU0sT0FBTyw2QkFDWCxTQUFRLHlCQUF5QjtJQTZCYjtJQXpCcEIsYUFBYSxDQUFnQjtJQUc3QixLQUFLLENBQWlCO0lBR3RCLFNBQVMsR0FBOEIsWUFBWSxDQUFDO0lBRzNDLE9BQU8sR0FBRyxJQUFJLFlBQVksRUFBa0IsQ0FBQztJQUV0RCxHQUFHLENBQVM7SUFFWixJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDbEIsQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLEdBQUc7UUFDWCxJQUFJLEdBQUcsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxHQUFHLEVBQUU7WUFDekMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7WUFDZixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDbkI7SUFDSCxDQUFDO0lBRUQsWUFBb0IsUUFBa0I7UUFDcEMsS0FBSyxFQUFFLENBQUM7UUFEVSxhQUFRLEdBQVIsUUFBUSxDQUFVO0lBRXRDLENBQUM7SUFFRCxRQUFRLEdBQVEsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBQ3pCLE9BQU8sR0FBUSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFFeEIsZUFBZTtRQUNiLE1BQU0sU0FBUyxHQUFjLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNoRSxJQUFJLFNBQVMsRUFBRTtZQUNiLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQTZCLENBQUM7U0FDeEQ7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVU7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDcEIsQ0FBQzt3R0F0RFUsNkJBQTZCOzRGQUE3Qiw2QkFBNkIsdUlBUjdCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLDZCQUE2QjtnQkFDMUMsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLHlFQU1VLGFBQWEsdUVDbkMxQixtbkJBb0JBOzs0RkRXYSw2QkFBNkI7a0JBWnpDLFNBQVM7K0JBQ0UseUJBQXlCLGFBR3hCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsK0JBQStCOzRCQUMxQyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjsrRkFPRCxhQUFhO3NCQURaLFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFJM0MsS0FBSztzQkFESixLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJRyxPQUFPO3NCQURmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbmplY3RvcixcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxyXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gIE5nQ29udHJvbCxcclxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgRWNhYnNFbGVtZW50QmFzZUNvbXBvbmVudCBmcm9tICcuLi9iYXNlL2VsZW1lbnQtYmFzZSc7XHJcbmltcG9ydCB7IFNlbGVjdE9wdGlvbiB9IGZyb20gJy4uL2Jhc2UvbW9kZWxzL3NlbGVjdC5tb2RlbHMnO1xyXG5pbXBvcnQgeyBNYXRSYWRpb0NoYW5nZSwgTWF0UmFkaW9Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3JhZGlvJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZWNhYnMtcmFkaW8tYnV0dG9uLWxpc3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9lY2Ficy1yYWRpby1idXR0b24tbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJ2VjYWJzLXJhZGlvLWJ1dHRvbi1saXN0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogRWNhYnNSYWRpb0J1dHRvbkxpc3RDb21wb25lbnQsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRWNhYnNSYWRpb0J1dHRvbkxpc3RDb21wb25lbnRcclxuICBleHRlbmRzIEVjYWJzRWxlbWVudEJhc2VDb21wb25lbnRcclxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0XHJcbntcclxuICBAVmlld0NoaWxkKE1hdFJhZGlvR3JvdXAsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIG1hdFJhZGlvR3JvdXA6IE1hdFJhZGlvR3JvdXA7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaXRlbXM6IFNlbGVjdE9wdGlvbltdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGRpcmVjdGlvbjogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJyA9ICdob3Jpem9udGFsJztcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcmVhZG9ubHkgY2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8TWF0UmFkaW9DaGFuZ2U+KCk7XHJcblxyXG4gIHZhbDogc3RyaW5nO1xyXG5cclxuICBnZXQgdmFsdWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnZhbDtcclxuICB9XHJcblxyXG4gIHNldCB2YWx1ZSh2YWwpIHtcclxuICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnZhbCAhPT0gdmFsKSB7XHJcbiAgICAgIHRoaXMudmFsID0gdmFsO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKHZhbCk7XHJcbiAgICAgIHRoaXMub25Ub3VjaCh2YWwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZTogYW55ID0gKCkgPT4ge307XHJcbiAgb25Ub3VjaDogYW55ID0gKCkgPT4ge307XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5nQ29udHJvbDogTmdDb250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQoTmdDb250cm9sLCBudWxsKTtcclxuICAgIGlmIChuZ0NvbnRyb2wpIHtcclxuICAgICAgdGhpcy5jb250cm9sID0gbmdDb250cm9sLmNvbnRyb2wgYXMgVW50eXBlZEZvcm1Db250cm9sO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xyXG4gIH1cclxufVxyXG4iLCI8ZWNhYnMtZWxlbWVudC13cmFwcGVyIFtkYXRhXT1cImdldERhdGEoKVwiPlxyXG4gIDxtYXQtcmFkaW8tZ3JvdXBcclxuICAgIFtuZ0NsYXNzXT1cInsgJ2ZsZXggZmxleC1jb2wgbXktMSc6IGRpcmVjdGlvbiA9PT0gJ3ZlcnRpY2FsJyB9XCJcclxuICAgIFsobmdNb2RlbCldPVwidmFsdWVcIlxyXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgIFtpZF09XCJuYW1lXCJcclxuICAgIFtuYW1lXT1cIm5hbWVcIlxyXG4gICAgKGNoYW5nZSk9XCJjaGFuZ2VkLmVtaXQoJGV2ZW50KVwiXHJcbiAgPlxyXG4gICAgPG1hdC1yYWRpby1idXR0b25cclxuICAgICAgW2Rpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxyXG4gICAgICBbbmdDbGFzc109XCJ7ICdteS0xJzogZGlyZWN0aW9uID09PSAndmVydGljYWwnIH1cIlxyXG4gICAgICBjbGFzcz1cIm1yLTRcIlxyXG4gICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc1wiXHJcbiAgICAgIFt2YWx1ZV09XCJpdGVtLnZhbHVlXCJcclxuICAgID5cclxuICAgICAge3sgaXRlbS5sYWJlbCB9fVxyXG4gICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxyXG4gIDwvbWF0LXJhZGlvLWdyb3VwPlxyXG48L2VjYWJzLWVsZW1lbnQtd3JhcHBlcj5cclxuIl19