@elderbyte/ngx-starter 16.2.8 → 16.2.10

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 (289) hide show
  1. package/esm2022/lib/common/enums/elder-enum-translation.service.mjs +4 -4
  2. package/esm2022/lib/common/forms/elder-form-field-control-base.directive.mjs +4 -4
  3. package/esm2022/lib/common/forms/elder-from-field-base.mjs +4 -4
  4. package/esm2022/lib/common/forms/elder-from-field-customizable-base.mjs +4 -4
  5. package/esm2022/lib/common/forms/elder-from-field-entity-base.mjs +4 -4
  6. package/esm2022/lib/common/forms/elder-from-field-multi-entity-base.mjs +4 -4
  7. package/esm2022/lib/common/forms/form-field-base.component.mjs +4 -4
  8. package/esm2022/lib/common/forms/multi-model-base.component.mjs +4 -4
  9. package/esm2022/lib/common/forms/template-composite-control.mjs +4 -4
  10. package/esm2022/lib/common/forms/value-accessor-base.mjs +4 -4
  11. package/esm2022/lib/common/http/http-client-builder.service.mjs +4 -4
  12. package/esm2022/lib/common/http/http-client-pristine.mjs +4 -4
  13. package/esm2022/lib/common/http/transfer/data-transfer-factory.mjs +4 -4
  14. package/esm2022/lib/common/url/elder-router.service.mjs +4 -4
  15. package/esm2022/lib/common/url/elder-url-fragment-params.service.mjs +4 -4
  16. package/esm2022/lib/components/access-denied/elder-access-denied.component.mjs +4 -4
  17. package/esm2022/lib/components/access-denied/elder-access-denied.module.mjs +5 -5
  18. package/esm2022/lib/components/auditing/audited-entity/elder-audited-entity.component.mjs +4 -4
  19. package/esm2022/lib/components/auditing/elder-audit.module.mjs +5 -5
  20. package/esm2022/lib/components/badge/elder-badge/elder-badge.component.mjs +4 -4
  21. package/esm2022/lib/components/badge/elder-badge.directive.mjs +4 -4
  22. package/esm2022/lib/components/badge/elder-badge.module.mjs +5 -5
  23. package/esm2022/lib/components/button-group/elder-button-group/elder-button-group.component.mjs +4 -4
  24. package/esm2022/lib/components/button-group/elder-button-group.module.mjs +5 -5
  25. package/esm2022/lib/components/card-organizer/card-organizer/elder-card-organizer.component.mjs +4 -4
  26. package/esm2022/lib/components/card-organizer/card-organizer/elder-stack-card.directive.mjs +4 -4
  27. package/esm2022/lib/components/card-organizer/card-stack/elder-card-stack.component.mjs +4 -4
  28. package/esm2022/lib/components/card-organizer/elder-card-organizer.module.mjs +5 -5
  29. package/esm2022/lib/components/cards/elder-card/elder-card-header/elder-card-header.component.mjs +4 -4
  30. package/esm2022/lib/components/cards/elder-card/elder-card.component.mjs +19 -19
  31. package/esm2022/lib/components/cards/elder-card/elder-card.module.mjs +5 -5
  32. package/esm2022/lib/components/chips/elder-chip-label.directive.mjs +4 -4
  33. package/esm2022/lib/components/chips/elder-chips.module.mjs +5 -5
  34. package/esm2022/lib/components/connectivity/elder-connectivity.module.mjs +5 -5
  35. package/esm2022/lib/components/connectivity/elder-connectivity.service.mjs +4 -4
  36. package/esm2022/lib/components/connectivity/offline-indicator/elder-offline-indicator.component.mjs +4 -4
  37. package/esm2022/lib/components/containers/elder-containers.module.mjs +5 -5
  38. package/esm2022/lib/components/containers/elder-scroll-container/elder-scroll-container.component.mjs +4 -4
  39. package/esm2022/lib/components/csv/elder-csv-export-btn/elder-csv-export-btn.component.mjs +4 -4
  40. package/esm2022/lib/components/csv/elder-csv-stream-exporter-builder.service.mjs +4 -4
  41. package/esm2022/lib/components/csv/elder-csv.module.mjs +5 -5
  42. package/esm2022/lib/components/currency/elder-currency.module.mjs +5 -5
  43. package/esm2022/lib/components/currency/elder-currency.pipe.mjs +4 -4
  44. package/esm2022/lib/components/data-transfer/elder-data-transfer.module.mjs +5 -5
  45. package/esm2022/lib/components/data-transfer/elder-data-transfer.service.mjs +4 -4
  46. package/esm2022/lib/components/data-transfer/http-data-transfer/http-data-transfer.component.mjs +4 -4
  47. package/esm2022/lib/components/data-transfer/http-data-transfer-aggregate/http-data-transfer-aggregate.component.mjs +4 -4
  48. package/esm2022/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.mjs +4 -4
  49. package/esm2022/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.mjs +4 -4
  50. package/esm2022/lib/components/data-view/base/elder-data-view-base.mjs +4 -4
  51. package/esm2022/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.mjs +4 -4
  52. package/esm2022/lib/components/data-view/common/elder-data-common.module.mjs +5 -5
  53. package/esm2022/lib/components/data-view/common/elder-data-toolbar/elder-data-toolbar.component.mjs +7 -7
  54. package/esm2022/lib/components/data-view/common/elder-single-sort/elder-single-sort.component.mjs +4 -4
  55. package/esm2022/lib/components/data-view/common/selection/data-context-selection.directive.mjs +4 -4
  56. package/esm2022/lib/components/data-view/common/selection/elder-selection-master-checkbox/elder-selection-master-checkbox.component.mjs +4 -4
  57. package/esm2022/lib/components/data-view/grid/elder-grid/elder-grid.component.mjs +10 -10
  58. package/esm2022/lib/components/data-view/grid/elder-grid.module.mjs +5 -5
  59. package/esm2022/lib/components/data-view/master-detail/elder-detail-dialog/elder-detail-dialog.component.mjs +4 -4
  60. package/esm2022/lib/components/data-view/master-detail/elder-detail.directive.mjs +4 -4
  61. package/esm2022/lib/components/data-view/master-detail/elder-master-activation.directive.mjs +4 -4
  62. package/esm2022/lib/components/data-view/master-detail/elder-master-detail.component.mjs +4 -4
  63. package/esm2022/lib/components/data-view/master-detail/elder-master-detail.module.mjs +5 -5
  64. package/esm2022/lib/components/data-view/master-detail/elder-master-detail.service.mjs +4 -4
  65. package/esm2022/lib/components/data-view/master-detail/elder-master.directive.mjs +4 -4
  66. package/esm2022/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.component.mjs +4 -4
  67. package/esm2022/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.module.mjs +5 -5
  68. package/esm2022/lib/components/data-view/table/activation/elder-delete-active.directive.mjs +4 -4
  69. package/esm2022/lib/components/data-view/table/activation/elder-table-activation.directive.mjs +4 -4
  70. package/esm2022/lib/components/data-view/table/elder-number-cell.directive.mjs +4 -4
  71. package/esm2022/lib/components/data-view/table/elder-paginator-intl.mjs +4 -4
  72. package/esm2022/lib/components/data-view/table/elder-table/elder-table-toolbar.directive.mjs +4 -4
  73. package/esm2022/lib/components/data-view/table/elder-table/elder-table.component.mjs +4 -4
  74. package/esm2022/lib/components/data-view/table/elder-table-column.directive.mjs +4 -4
  75. package/esm2022/lib/components/data-view/table/elder-table-extension.directive.mjs +4 -4
  76. package/esm2022/lib/components/data-view/table/elder-table-root.directive.mjs +4 -4
  77. package/esm2022/lib/components/data-view/table/elder-table-row.directive.mjs +4 -4
  78. package/esm2022/lib/components/data-view/table/elder-table-sort.directive.mjs +4 -4
  79. package/esm2022/lib/components/data-view/table/elder-table.module.mjs +5 -5
  80. package/esm2022/lib/components/data-view/table/model/elder-table-model.mjs +4 -4
  81. package/esm2022/lib/components/dialogs/confirm-dialog/elder-confirm-dialog.component.mjs +4 -4
  82. package/esm2022/lib/components/dialogs/elder-dialog.module.mjs +5 -5
  83. package/esm2022/lib/components/dialogs/elder-dialog.service.mjs +4 -4
  84. package/esm2022/lib/components/dialogs/question-dialog/elder-question-dialog.component.mjs +4 -4
  85. package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog/elder-selection-dialog.component.mjs +4 -4
  86. package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog.directive.mjs +4 -4
  87. package/esm2022/lib/components/errors/elder-error.module.mjs +5 -5
  88. package/esm2022/lib/components/errors/exception-detail/elder-exception-detail.component.mjs +4 -4
  89. package/esm2022/lib/components/expand-toggle-button/elder-expand-toggle-button.component.mjs +4 -4
  90. package/esm2022/lib/components/expand-toggle-button/elder-expand-toggle-button.module.mjs +5 -5
  91. package/esm2022/lib/components/files/blob-viewer/elder-blob-viewer.component.mjs +4 -4
  92. package/esm2022/lib/components/files/drag-n-drop/elder-drop-zone/elder-drop-zone.component.mjs +4 -4
  93. package/esm2022/lib/components/files/drag-n-drop/global-drag-drop.service.mjs +4 -4
  94. package/esm2022/lib/components/files/elder-file-drop-zone.directive.mjs +4 -4
  95. package/esm2022/lib/components/files/elder-file-select.directive.mjs +4 -4
  96. package/esm2022/lib/components/files/elder-file.module.mjs +5 -5
  97. package/esm2022/lib/components/files/file-select/file-select.component.mjs +4 -4
  98. package/esm2022/lib/components/files/file-upload/file-upload.component.mjs +4 -4
  99. package/esm2022/lib/components/forms/clipboard/elder-clipboard.service.mjs +4 -4
  100. package/esm2022/lib/components/forms/directives/base/elder-class-hostbinding-base.mjs +4 -4
  101. package/esm2022/lib/components/forms/directives/elder-clipboard-put.directive.mjs +4 -4
  102. package/esm2022/lib/components/forms/directives/elder-delayed-focus.directive.mjs +4 -4
  103. package/esm2022/lib/components/forms/directives/elder-form-field-dense.directive.mjs +4 -4
  104. package/esm2022/lib/components/forms/directives/elder-form-field-label.directive.mjs +4 -4
  105. package/esm2022/lib/components/forms/directives/elder-form-field-no-hint.directive.mjs +4 -4
  106. package/esm2022/lib/components/forms/directives/elder-form-field-no-spinner.directive.mjs +4 -4
  107. package/esm2022/lib/components/forms/directives/elder-forms-directives.module.mjs +5 -5
  108. package/esm2022/lib/components/forms/directives/elder-initial-value.directive.mjs +43 -13
  109. package/esm2022/lib/components/forms/directives/elder-input-pattern.directive.mjs +4 -4
  110. package/esm2022/lib/components/forms/directives/elder-key-event.directive.mjs +4 -4
  111. package/esm2022/lib/components/forms/directives/elder-next-focusable.directive.mjs +4 -4
  112. package/esm2022/lib/components/forms/directives/elder-plug-parent-form.directive.mjs +4 -4
  113. package/esm2022/lib/components/forms/directives/elder-stop-event-propagation.directive.mjs +4 -4
  114. package/esm2022/lib/components/forms/directives/elder-tab-focus-trap.directive.mjs +4 -4
  115. package/esm2022/lib/components/forms/directives/elder-touched.directive.mjs +4 -4
  116. package/esm2022/lib/components/forms/directives/elder-triple-state-checkbox.directive.mjs +4 -4
  117. package/esm2022/lib/components/forms/directives/validation/elder-validation-error.directive.mjs +4 -4
  118. package/esm2022/lib/components/forms/directives/validation/strategies/common-validation-message-strategy.mjs +4 -4
  119. package/esm2022/lib/components/forms/directives/validation/strategies/dynamic-validation-message-strategy.mjs +4 -4
  120. package/esm2022/lib/components/forms/directives/validation/validation-message-renderer.service.mjs +4 -4
  121. package/esm2022/lib/components/forms/directives/validation/validators/elder-max.validator.mjs +4 -4
  122. package/esm2022/lib/components/forms/directives/validation/validators/elder-min.validator.mjs +4 -4
  123. package/esm2022/lib/components/forms/directives/validation/validators/elder-multiple-of.validator.mjs +4 -4
  124. package/esm2022/lib/components/forms/directives/validation/validators/elder-required-ignore-zero.validator.mjs +4 -4
  125. package/esm2022/lib/components/forms/elder-forms.module.mjs +5 -5
  126. package/esm2022/lib/components/forms/search/elder-search-context-url-binding.directive.mjs +4 -4
  127. package/esm2022/lib/components/forms/search/elder-search-context.directive.mjs +83 -86
  128. package/esm2022/lib/components/forms/search/elder-search-input.directive.mjs +18 -29
  129. package/esm2022/lib/components/forms/search/elder-search.module.mjs +5 -5
  130. package/esm2022/lib/components/forms/search/model/search-input-state.mjs +4 -1
  131. package/esm2022/lib/components/forms/search/model/search-input.mjs +1 -1
  132. package/esm2022/lib/components/forms/search/search-box/elder-search-box.component.mjs +5 -5
  133. package/esm2022/lib/components/forms/search/search-box/elder-search-panel.component.mjs +4 -4
  134. package/esm2022/lib/components/forms/search/search-box/elder-search-url-binding.service.mjs +4 -4
  135. package/esm2022/lib/components/global-search/elder-global-search.component.mjs +4 -4
  136. package/esm2022/lib/components/global-search/elder-global-search.module.mjs +5 -5
  137. package/esm2022/lib/components/global-search/elder-global-search.service.mjs +4 -4
  138. package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.component.mjs +4 -4
  139. package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.module.mjs +5 -5
  140. package/esm2022/lib/components/headers/elder-header/elder-header.component.mjs +4 -4
  141. package/esm2022/lib/components/headers/elder-header.module.mjs +5 -5
  142. package/esm2022/lib/components/http-support/elder-http-client.service.mjs +4 -4
  143. package/esm2022/lib/components/i18n/entities/elder-i18n-entities.module.mjs +5 -5
  144. package/esm2022/lib/components/i18n/entities/elder-localized-input/elder-localized-input.component.mjs +4 -4
  145. package/esm2022/lib/components/i18n/entities/elder-localized-input-dialog/elder-localized-input-dialog.component.mjs +4 -4
  146. package/esm2022/lib/components/i18n/entities/elder-localized-input-dialog.service.mjs +4 -4
  147. package/esm2022/lib/components/i18n/entities/elder-localized-input-table/elder-localized-input-table.component.mjs +4 -4
  148. package/esm2022/lib/components/i18n/entities/elder-localized-text-column.directive.mjs +4 -4
  149. package/esm2022/lib/components/i18n/entities/elder-localized-texts.directive.mjs +4 -4
  150. package/esm2022/lib/components/i18n/entities/picker/i18n-pick-async.pipe.mjs +4 -4
  151. package/esm2022/lib/components/i18n/entities/picker/i18n-pick.pipe.mjs +4 -4
  152. package/esm2022/lib/components/i18n/entities/picker/localisation-picker.service.mjs +4 -4
  153. package/esm2022/lib/components/i18n/language/elder-language-interceptor.mjs +4 -4
  154. package/esm2022/lib/components/i18n/language/elder-language.module.mjs +5 -5
  155. package/esm2022/lib/components/i18n/language/elder-language.service.mjs +4 -4
  156. package/esm2022/lib/components/i18n/language/language-switcher/elder-language-switcher.component.mjs +4 -4
  157. package/esm2022/lib/components/i18n/locales/elder-locales-de-ch.module.mjs +5 -5
  158. package/esm2022/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.mjs +4 -4
  159. package/esm2022/lib/components/iframes/data-view/data-view-iframe-adapter.directive.mjs +4 -4
  160. package/esm2022/lib/components/iframes/elder-iframe.module.mjs +5 -5
  161. package/esm2022/lib/components/iframes/iframe-close.directive.mjs +4 -4
  162. package/esm2022/lib/components/iframes/iframe-dialog/iframe-dialog.component.mjs +4 -4
  163. package/esm2022/lib/components/iframes/iframe-host/iframe-host.component.mjs +4 -4
  164. package/esm2022/lib/components/iframes/iframe-side-content/iframe-side-content.component.mjs +4 -4
  165. package/esm2022/lib/components/iframes/iframe.service.mjs +4 -4
  166. package/esm2022/lib/components/infinitescroll/elder-infinite-autocomplete.directive.mjs +4 -4
  167. package/esm2022/lib/components/infinitescroll/elder-infinite-scroll.directive.mjs +4 -4
  168. package/esm2022/lib/components/infinitescroll/elder-infinite-scroll.module.mjs +5 -5
  169. package/esm2022/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete.component.mjs +4 -4
  170. package/esm2022/lib/components/input/autocomplete/elder-autocomplete-many.directive.mjs +4 -4
  171. package/esm2022/lib/components/input/autocomplete/elder-autocomplete.directive.mjs +4 -4
  172. package/esm2022/lib/components/input/autocomplete/elder-autocomplete.module.mjs +5 -5
  173. package/esm2022/lib/components/labels/elder-labels.module.mjs +5 -5
  174. package/esm2022/lib/components/labels/labels-input/labels-input.component.mjs +4 -4
  175. package/esm2022/lib/components/measures/dimensions/dimensions-input/elder-dimensions-input.component.mjs +4 -4
  176. package/esm2022/lib/components/measures/dimensions/validation/elder-required-dimensions.validator.mjs +4 -4
  177. package/esm2022/lib/components/measures/directives/elder-unit-select.directive.mjs +4 -4
  178. package/esm2022/lib/components/measures/elder-measures.module.mjs +9 -9
  179. package/esm2022/lib/components/measures/elder-quantity-transform.pipe.mjs +4 -4
  180. package/esm2022/lib/components/measures/elder-quantity.pipe.mjs +4 -4
  181. package/esm2022/lib/components/measures/elder-unit.service.mjs +4 -4
  182. package/esm2022/lib/components/measures/quantity-input/quantity-form-field/elder-quantity-form-field.component.mjs +4 -4
  183. package/esm2022/lib/components/measures/quantity-input/quantity-input-control/elder-quantity-input-control.component.mjs +4 -4
  184. package/esm2022/lib/components/measures/quantity-input/validation/elder-quantity-range.validator.mjs +4 -4
  185. package/esm2022/lib/components/measures/quantity-input/validation/elder-required-quantity.validator.mjs +4 -4
  186. package/esm2022/lib/components/measures/util/elder-quantity.service.mjs +4 -4
  187. package/esm2022/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.mjs +4 -4
  188. package/esm2022/lib/components/navigation/bread-crumbs/elder-bread-crumbs.module.mjs +5 -5
  189. package/esm2022/lib/components/navigation/nav/elder-nav.module.mjs +5 -5
  190. package/esm2022/lib/components/navigation/nav/nav-group/elder-nav-group.component.mjs +4 -4
  191. package/esm2022/lib/components/navigation/nav/nav-link/elder-nav-link.component.mjs +4 -4
  192. package/esm2022/lib/components/navigation/nav/nav-list/elder-nav-list.component.mjs +4 -4
  193. package/esm2022/lib/components/navigation/toolbar/elder-toolbar-column.directive.mjs +4 -4
  194. package/esm2022/lib/components/navigation/toolbar/elder-toolbar.module.mjs +5 -5
  195. package/esm2022/lib/components/navigation/toolbar/elder-toolbar.service.mjs +4 -4
  196. package/esm2022/lib/components/navigation/toolbar/toolbar/elder-toolbar.component.mjs +4 -4
  197. package/esm2022/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.component.mjs +4 -4
  198. package/esm2022/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.service.mjs +4 -4
  199. package/esm2022/lib/components/overlays/elder-overlay-origin.directive.mjs +4 -4
  200. package/esm2022/lib/components/overlays/elder-overlay-trigger.directive.mjs +4 -4
  201. package/esm2022/lib/components/overlays/elder-overlay.component.mjs +4 -4
  202. package/esm2022/lib/components/overlays/elder-overlay.module.mjs +5 -5
  203. package/esm2022/lib/components/panels/card-panel/elder-card-panel.component.mjs +4 -4
  204. package/esm2022/lib/components/panels/elder-dialog-panel/elder-dialog-panel.component.mjs +4 -4
  205. package/esm2022/lib/components/panels/elder-panel.module.mjs +5 -5
  206. package/esm2022/lib/components/panels/flat/elder-panel.component.mjs +4 -4
  207. package/esm2022/lib/components/panels/toggle-panel/elder-toggle-panel-trigger.directive.mjs +4 -4
  208. package/esm2022/lib/components/panels/toggle-panel/elder-toggle-panel.component.mjs +10 -10
  209. package/esm2022/lib/components/scrollbar/elder-scrollbar.directive.mjs +4 -4
  210. package/esm2022/lib/components/scrollbar/elder-scrollbar.module.mjs +5 -5
  211. package/esm2022/lib/components/select/auto/elder-auto-select-first.directive.mjs +4 -4
  212. package/esm2022/lib/components/select/elder-select-base.mjs +24 -5
  213. package/esm2022/lib/components/select/elder-select-chip.directive.mjs +10 -10
  214. package/esm2022/lib/components/select/elder-select-on-tab.directive.mjs +4 -4
  215. package/esm2022/lib/components/select/elder-select-value.directive.mjs +4 -4
  216. package/esm2022/lib/components/select/elder-select.module.mjs +5 -5
  217. package/esm2022/lib/components/select/multi/elder-multi-select-base.mjs +5 -5
  218. package/esm2022/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.mjs +4 -4
  219. package/esm2022/lib/components/select/multi/elder-multi-select-form-field.mjs +4 -4
  220. package/esm2022/lib/components/select/popup/selection-model-popup-trigger-adapter.directive.mjs +4 -4
  221. package/esm2022/lib/components/select/popup/selection-model-popup.directive.mjs +4 -4
  222. package/esm2022/lib/components/select/popup/templated-selection-dialog/templated-selection-dialog.component.mjs +4 -4
  223. package/esm2022/lib/components/select/single/elder-clear-select.directive.mjs +4 -4
  224. package/esm2022/lib/components/select/single/elder-select/elder-select.component.mjs +15 -12
  225. package/esm2022/lib/components/select/single/elder-select-form-field.mjs +4 -4
  226. package/esm2022/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.mjs +4 -4
  227. package/esm2022/lib/components/select-chip-list/elder-chip-list-select.module.mjs +5 -5
  228. package/esm2022/lib/components/shell/drawers/elder-route-outlet-drawer.service.mjs +4 -4
  229. package/esm2022/lib/components/shell/drawers/elder-router-outlet.service.mjs +4 -4
  230. package/esm2022/lib/components/shell/elder-shell-slot.directive.mjs +4 -4
  231. package/esm2022/lib/components/shell/elder-shell.module.mjs +5 -5
  232. package/esm2022/lib/components/shell/elder-shell.service.mjs +4 -4
  233. package/esm2022/lib/components/shell/header/elder-app-header/elder-app-header.component.mjs +4 -4
  234. package/esm2022/lib/components/shell/shell/elder-shell.component.mjs +13 -13
  235. package/esm2022/lib/components/shell/shell-navigation-toggle/elder-shell-navigation-toggle.component.mjs +4 -4
  236. package/esm2022/lib/components/tabs/elder-tab/elder-tab.directive.mjs +4 -4
  237. package/esm2022/lib/components/tabs/elder-tab-group-routing/elder-tab-group-routing.directive.mjs +4 -4
  238. package/esm2022/lib/components/tabs/elder-tab.module.mjs +5 -5
  239. package/esm2022/lib/components/theme/elder-theme-applier.directive.mjs +4 -4
  240. package/esm2022/lib/components/theme/elder-theme-preference.service.mjs +4 -4
  241. package/esm2022/lib/components/theme/elder-theme-toggle/elder-theme-toggle.component.mjs +4 -4
  242. package/esm2022/lib/components/theme/elder-theme.directive.mjs +4 -4
  243. package/esm2022/lib/components/theme/elder-theme.module.mjs +5 -5
  244. package/esm2022/lib/components/theme/elder-theme.service.mjs +4 -4
  245. package/esm2022/lib/components/time/date-adapters/custom-date-adapter.mjs +4 -4
  246. package/esm2022/lib/components/time/duration/elder-duration-input/elder-duration-input.component.mjs +4 -4
  247. package/esm2022/lib/components/time/elder-date-switcher/elder-date-switcher.component.mjs +4 -4
  248. package/esm2022/lib/components/time/elder-date-time-input/elder-date-time-input.component.mjs +4 -4
  249. package/esm2022/lib/components/time/elder-interval-input/elder-interval-input.component.mjs +4 -4
  250. package/esm2022/lib/components/time/elder-local-date-input/elder-local-date-input.component.mjs +4 -4
  251. package/esm2022/lib/components/time/elder-local-time-input/elder-local-time-input.component.mjs +4 -4
  252. package/esm2022/lib/components/time/elder-time.module.mjs +5 -5
  253. package/esm2022/lib/components/time/period/elder-period-input/elder-period-input.component.mjs +4 -4
  254. package/esm2022/lib/components/time/pipes/to-iso-date-string.pipe.mjs +4 -4
  255. package/esm2022/lib/components/toasts/elder-toast.module.mjs +5 -5
  256. package/esm2022/lib/components/toasts/elder-toast.service.mjs +4 -4
  257. package/esm2022/lib/components/toasts/standard-toast/standard-toast.component.mjs +4 -4
  258. package/esm2022/lib/components/url-fragment/elder-url-fragment.module.mjs +5 -5
  259. package/esm2022/lib/components/url-fragment/url-fragment-switcher/elder-url-fragment-switcher.component.mjs +4 -4
  260. package/esm2022/lib/components/viewers/elder-svg-viewer/elder-svg-viewer.component.mjs +4 -4
  261. package/esm2022/lib/components/viewers/elder-viewers.module.mjs +5 -5
  262. package/esm2022/lib/features/event-source/elder-event-source.service.mjs +4 -4
  263. package/esm2022/lib/features/kafent/access-token-provider.mjs +4 -4
  264. package/esm2022/lib/features/kafent/kafent-config.mjs +4 -4
  265. package/esm2022/lib/features/kafent/kafent-event-stream.mjs +4 -4
  266. package/esm2022/lib/features/kafent/kafent-event.service.mjs +4 -4
  267. package/esm2022/lib/features/kafent/kafent.module.mjs +5 -5
  268. package/esm2022/lib/features/kafent/sse/kafent-event-stream-sse.service.mjs +4 -4
  269. package/esm2022/lib/pipes/bytes.pipe.mjs +4 -4
  270. package/esm2022/lib/pipes/elder-pipes.module.mjs +11 -11
  271. package/esm2022/lib/pipes/elder-repeat.pipe.mjs +4 -4
  272. package/esm2022/lib/pipes/elder-round.pipe.mjs +4 -4
  273. package/esm2022/lib/pipes/elder-safe-url.pipe.mjs +4 -4
  274. package/esm2022/lib/pipes/elder-truncate.pipe.mjs +4 -4
  275. package/esm2022/lib/pipes/iso-duration.pipe.mjs +4 -4
  276. package/esm2022/lib/pipes/iso-interval-parse.pipe.mjs +4 -4
  277. package/esm2022/lib/pipes/iso-interval.pipe.mjs +4 -4
  278. package/esm2022/lib/pipes/time-ago.pipe.mjs +4 -4
  279. package/esm2022/lib/pipes/time-duration.pipe.mjs +4 -4
  280. package/esm2022/lib/pipes/weight.pipe.mjs +4 -4
  281. package/fesm2022/elderbyte-ngx-starter.mjs +1215 -1173
  282. package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
  283. package/lib/components/forms/directives/elder-initial-value.directive.d.ts +21 -0
  284. package/lib/components/forms/search/elder-search-context.directive.d.ts +17 -27
  285. package/lib/components/forms/search/elder-search-input.directive.d.ts +5 -8
  286. package/lib/components/forms/search/model/search-input-state.d.ts +1 -0
  287. package/lib/components/forms/search/model/search-input.d.ts +2 -1
  288. package/lib/components/select/elder-select-base.d.ts +1 -0
  289. package/package.json +1 -1
@@ -1,30 +1,27 @@
1
- import { ContentChildren, Directive, Input, Optional, SkipSelf } from "@angular/core";
2
- import { LoggerFactory } from "@elderbyte/ts-logger";
3
- import { combineLatestWith, debounceTime, map, startWith, switchMap, takeUntil } from "rxjs/operators";
4
- import { BehaviorSubject } from "rxjs/internal/BehaviorSubject";
5
- import { Subject } from "rxjs/internal/Subject";
6
- import { combineLatest } from "rxjs";
7
- import { Filter } from "../../../common/data/filters/filter";
8
- import { FilterContext } from "../../../common/data/filters/filter-context";
9
- import { ElderSearchInputDirective } from "./elder-search-input.directive";
1
+ import { Directive, Input } from '@angular/core';
2
+ import { LoggerFactory } from '@elderbyte/ts-logger';
3
+ import { combineLatestWith, debounceTime, map, switchMap, takeUntil } from 'rxjs/operators';
4
+ import { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';
5
+ import { Subject } from 'rxjs/internal/Subject';
6
+ import { combineLatest } from 'rxjs';
7
+ import { Filter } from '../../../common/data/filters/filter';
10
8
  import * as i0 from "@angular/core";
11
9
  /**
12
10
  * The search container manages a group of search-inputs
13
11
  * and holds their values in a central search model.
14
12
  */
15
13
  export class ElderSearchContextDirective {
16
- /***************************************************************************
17
- * *
18
- * Constructor *
19
- * *
20
- **************************************************************************/
21
- constructor(parentContext) {
22
- this.parentContext = parentContext;
23
- this.childSearchInputs$ = new BehaviorSubject([]);
14
+ constructor() {
15
+ /***************************************************************************
16
+ * *
17
+ * Fields *
18
+ * *
19
+ **************************************************************************/
24
20
  this.forcedFilters$ = new BehaviorSubject([]);
25
21
  this.startFilters$ = new BehaviorSubject([]);
26
22
  this.log = LoggerFactory.getLogger(this.constructor.name);
27
- this._unsubscribe$ = new Subject();
23
+ this.destroy$ = new Subject();
24
+ this._searchInputs = new BehaviorSubject([]);
28
25
  this._searchStates = new BehaviorSubject([]);
29
26
  this._filters$ = new BehaviorSubject([]);
30
27
  this._initialFilters$ = new BehaviorSubject([]);
@@ -35,19 +32,19 @@ export class ElderSearchContextDirective {
35
32
  * *
36
33
  **************************************************************************/
37
34
  ngAfterContentInit() {
38
- if (!this.isParentContextNull()) {
39
- this.registerInputsToParentContext();
40
- }
35
+ this._searchInputs.pipe(takeUntil(this.destroy$), switchMap(inputs => combineLatest(inputs.map(i => i.state$))), combineLatestWith(this.forcedFilters$), debounceTime(5)).subscribe(([states, forcedFilters]) => {
36
+ this._searchStates.next(states);
37
+ const userFilters = this.convertToFilters(states);
38
+ this._filters$.next(userFilters);
39
+ this.applyFilters(userFilters, forcedFilters);
40
+ });
41
41
  }
42
42
  ngAfterViewInit() {
43
- if (this.isParentContextNull()) {
44
- this.subscribeSearchInputs();
45
- this.subscribeInitialFilters();
46
- }
43
+ this.subscribeInitialFilters();
47
44
  }
48
45
  ngOnDestroy() {
49
- this._unsubscribe$.next();
50
- this._unsubscribe$.complete();
46
+ this.destroy$.next();
47
+ this.destroy$.complete();
51
48
  }
52
49
  /***************************************************************************
53
50
  * *
@@ -55,7 +52,18 @@ export class ElderSearchContextDirective {
55
52
  * *
56
53
  **************************************************************************/
57
54
  set filterContext(value) {
58
- this._filterContext = value instanceof FilterContext ? value : null;
55
+ if (value) {
56
+ if (typeof value !== 'string') {
57
+ this._filterContext = value;
58
+ }
59
+ else {
60
+ this.log.warn('Illegal value provided for property filterContext: ', JSON.stringify(value));
61
+ throw new Error('Illegal value provided for property filterContext! ' + value);
62
+ }
63
+ }
64
+ else {
65
+ this._filterContext = null;
66
+ }
59
67
  }
60
68
  get filterContext() {
61
69
  return this._filterContext;
@@ -76,10 +84,10 @@ export class ElderSearchContextDirective {
76
84
  this.startFilters$.next(filters);
77
85
  }
78
86
  get attributes() {
79
- return this.searchInputs.changes.pipe(map(inputs => inputs), map(inputs => inputs.toArray()));
87
+ return this._searchInputs.asObservable();
80
88
  }
81
89
  get attributesSnapshot() {
82
- return this.zipInputsWithChildInputs(this.searchInputs.toArray(), this.childSearchInputs$.getValue());
90
+ return this._searchInputs.getValue();
83
91
  }
84
92
  get states$() {
85
93
  return this._searchStates.asObservable();
@@ -110,61 +118,51 @@ export class ElderSearchContextDirective {
110
118
  * Public API *
111
119
  * *
112
120
  **************************************************************************/
113
- registerInput(searchInputs) {
114
- this.childSearchInputs$.next([...this.childSearchInputs$.getValue(), ...searchInputs]);
115
- }
116
- registerInitialFilters(filters) {
117
- this._initialFilters$.next(filters);
121
+ /**
122
+ * Register a new search name in this container
123
+ */
124
+ register(searchInput) {
125
+ this.log.debug('Registering search input [' + searchInput.name + ']');
126
+ const current = this._searchInputs.getValue();
127
+ this._searchInputs.next([...current, searchInput]);
118
128
  }
119
129
  reset() {
120
- if (this.isParentContextNull()) {
121
- this.resetInputs();
122
- }
123
- else {
124
- this.parentContext.reset();
125
- }
126
- }
127
- /***************************************************************************
128
- * *
129
- * Private *
130
- * *
131
- **************************************************************************/
132
- resetInputs() {
133
130
  this.attributesSnapshot
134
131
  .filter(attr => !attr.readonly)
135
132
  .forEach(a => {
136
133
  a.reset();
137
134
  });
138
135
  }
139
- registerInputsToParentContext() {
140
- if (!this.isParentContextNull()) {
141
- this.parentContext.registerInput(this.searchInputs.toArray());
142
- }
143
- }
144
- isParentContextNull() {
145
- return this.parentContext === null;
146
- }
147
- subscribeSearchInputs() {
148
- this.searchInputs.changes
149
- .pipe(startWith(this.searchInputs), takeUntil(this._unsubscribe$), map(input => input), combineLatestWith(this.childSearchInputs$), map(([inputs, childInputs]) => this.zipInputsWithChildInputs(inputs.toArray(), childInputs)), switchMap(inputs => combineLatest(inputs.map(i => i.state$))), combineLatestWith(this.forcedFilters$), debounceTime(5)).subscribe(([states, forcedFilters]) => {
150
- this._searchStates.next(states);
151
- const userFilters = this.convertToFilters(states);
152
- this._filters$.next(userFilters);
153
- this.applyFilters(userFilters, forcedFilters);
154
- });
155
- }
156
- zipInputsWithChildInputs(inputs, childInputs) {
157
- return [...inputs, ...childInputs];
136
+ registerInitialFilters(filters) {
137
+ this._initialFilters$.next(filters);
158
138
  }
139
+ /***************************************************************************
140
+ * *
141
+ * Private *
142
+ * *
143
+ **************************************************************************/
159
144
  subscribeInitialFilters() {
160
- this.initialFilters$.pipe(takeUntil(this._unsubscribe$), combineLatestWith(this.childSearchInputs$, this.startFilters$)).subscribe(([initialFilters, childSearchInputs, startFilters]) => {
161
- var searchInputs = this.zipInputsWithChildInputs(this.searchInputs.toArray(), childSearchInputs);
145
+ this.initialFilters$.pipe(takeUntil(this.destroy$), combineLatestWith(this._searchInputs, this.startFilters$)).subscribe(([initialFilters, searchInputs, startFilters]) => {
162
146
  var filters = [...initialFilters, ...startFilters];
163
- searchInputs.forEach(input => input.setInitialFilter(filters));
147
+ searchInputs.forEach(input => {
148
+ const filter = this.findFilterForInput(input, filters);
149
+ if (filter) {
150
+ input.applyInitialValue(filter.value);
151
+ }
152
+ });
164
153
  });
165
154
  }
155
+ findFilterForInput(input, filters) {
156
+ for (const filter of filters) {
157
+ if (filter.key === input.name) {
158
+ return filter;
159
+ }
160
+ }
161
+ return null;
162
+ }
166
163
  convertToFilters(states) {
167
164
  return states
165
+ .filter(s => !!s.queryKey)
168
166
  .map(s => new Filter(s.queryKey, s.queryValue));
169
167
  }
170
168
  applyFilters(userFilters, forcedFilters) {
@@ -172,31 +170,30 @@ export class ElderSearchContextDirective {
172
170
  if (context) {
173
171
  context.updateFilters(userFilters);
174
172
  context.mergeFilters(forcedFilters);
175
- this.log.trace("Search-Model filters updated:", Array.from(context.filtersSnapshot));
173
+ this.log.trace('Search-Model filters updated:', Array.from(context.filtersSnapshot));
174
+ }
175
+ else {
176
+ this.log.warn('Failed to apply filters since no FilterContext is available!', {
177
+ userFilters: userFilters,
178
+ forcedFilters: forcedFilters
179
+ });
176
180
  }
177
181
  }
178
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderSearchContextDirective, deps: [{ token: ElderSearchContextDirective, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive }); }
179
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: ElderSearchContextDirective, selector: "[elderSearchContext]", inputs: { filterContext: ["elderSearchContext", "filterContext"], forcedFilters: "forcedFilters", startFilters: "startFilters" }, queries: [{ propertyName: "searchInputs", predicate: ElderSearchInputDirective, descendants: true }], exportAs: ["elderSearchContext"], ngImport: i0 }); }
182
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: ElderSearchContextDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
183
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.11", type: ElderSearchContextDirective, selector: "[elderSearchContext]", inputs: { filterContext: ["elderSearchContext", "filterContext"], forcedFilters: "forcedFilters", startFilters: "startFilters" }, exportAs: ["elderSearchContext"], ngImport: i0 }); }
180
184
  }
181
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderSearchContextDirective, decorators: [{
185
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: ElderSearchContextDirective, decorators: [{
182
186
  type: Directive,
183
187
  args: [{
184
- selector: "[elderSearchContext]",
185
- exportAs: "elderSearchContext"
188
+ selector: '[elderSearchContext]',
189
+ exportAs: 'elderSearchContext'
186
190
  }]
187
- }], ctorParameters: function () { return [{ type: ElderSearchContextDirective, decorators: [{
188
- type: SkipSelf
189
- }, {
190
- type: Optional
191
- }] }]; }, propDecorators: { searchInputs: [{
192
- type: ContentChildren,
193
- args: [ElderSearchInputDirective, { descendants: true }]
194
- }], filterContext: [{
191
+ }], propDecorators: { filterContext: [{
195
192
  type: Input,
196
- args: ["elderSearchContext"]
193
+ args: ['elderSearchContext']
197
194
  }], forcedFilters: [{
198
195
  type: Input
199
196
  }], startFilters: [{
200
197
  type: Input
201
198
  }] } });
202
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VhcmNoLWNvbnRleHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy9zZWFyY2gvZWxkZXItc2VhcmNoLWNvbnRleHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxlQUFlLEVBQ2YsU0FBUyxFQUNULEtBQUssRUFFTCxRQUFRLEVBRVIsUUFBUSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRTVFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQUUzRTs7O0dBR0c7QUFLSCxNQUFNLE9BQU8sMkJBQTJCO0lBd0J0Qzs7OztnRkFJNEU7SUFFNUUsWUFBbUQsYUFBMEM7UUFBMUMsa0JBQWEsR0FBYixhQUFhLENBQTZCO1FBckJyRix1QkFBa0IsR0FBRyxJQUFJLGVBQWUsQ0FBOEIsRUFBRSxDQUFDLENBQUM7UUFFMUUsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBVyxFQUFFLENBQUMsQ0FB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LENBQUM7WUFDbkMsT0FBTyxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQywrQkFBK0IsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1NBQ3RGO0lBQ0gsQ0FBQzs4R0E1T1UsMkJBQTJCO2tHQUEzQiwyQkFBMkIsMk5BUXJCLHlCQUF5Qjs7MkZBUi9CLDJCQUEyQjtrQkFKdkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxRQUFRLEVBQUUsb0JBQW9CO2lCQUMvQjs7MEJBK0JxQixRQUFROzswQkFBSSxRQUFROzRDQXRCMkIsWUFBWTtzQkFBOUUsZUFBZTt1QkFBQyx5QkFBeUIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBd0R0RCxhQUFhO3NCQUR2QixLQUFLO3VCQUFDLG9CQUFvQjtnQkFnQmhCLGFBQWE7c0JBRHZCLEtBQUs7Z0JBVUssWUFBWTtzQkFEdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEFmdGVyVmlld0luaXQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRGlyZWN0aXZlLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgUXVlcnlMaXN0LFxuICBTa2lwU2VsZlxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTG9nZ2VyRmFjdG9yeSB9IGZyb20gXCJAZWxkZXJieXRlL3RzLWxvZ2dlclwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzL2ludGVybmFsL09ic2VydmFibGVcIjtcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3RXaXRoLCBkZWJvdW5jZVRpbWUsIG1hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgU2VhcmNoSW5wdXQgfSBmcm9tIFwiLi9tb2RlbC9zZWFyY2gtaW5wdXRcIjtcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gXCJyeGpzL2ludGVybmFsL0JlaGF2aW9yU3ViamVjdFwiO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzL2ludGVybmFsL1N1YmplY3RcIjtcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgRmlsdGVyIH0gZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi9kYXRhL2ZpbHRlcnMvZmlsdGVyXCI7XG5pbXBvcnQgeyBGaWx0ZXJDb250ZXh0IH0gZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi9kYXRhL2ZpbHRlcnMvZmlsdGVyLWNvbnRleHRcIjtcbmltcG9ydCB7IFNlYXJjaElucHV0U3RhdGUgfSBmcm9tIFwiLi9tb2RlbC9zZWFyY2gtaW5wdXQtc3RhdGVcIjtcbmltcG9ydCB7IEVsZGVyU2VhcmNoSW5wdXREaXJlY3RpdmUgfSBmcm9tIFwiLi9lbGRlci1zZWFyY2gtaW5wdXQuZGlyZWN0aXZlXCI7XG5cbi8qKlxuICogVGhlIHNlYXJjaCBjb250YWluZXIgbWFuYWdlcyBhIGdyb3VwIG9mIHNlYXJjaC1pbnB1dHNcbiAqIGFuZCBob2xkcyB0aGVpciB2YWx1ZXMgaW4gYSBjZW50cmFsIHNlYXJjaCBtb2RlbC5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiBcIltlbGRlclNlYXJjaENvbnRleHRdXCIsXG4gIGV4cG9ydEFzOiBcImVsZGVyU2VhcmNoQ29udGV4dFwiXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyU2VhcmNoQ29udGV4dERpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdCB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgQENvbnRlbnRDaGlsZHJlbihFbGRlclNlYXJjaElucHV0RGlyZWN0aXZlLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIHNlYXJjaElucHV0cyE6IFF1ZXJ5TGlzdDxFbGRlclNlYXJjaElucHV0RGlyZWN0aXZlPjtcbiAgcHJpdmF0ZSBjaGlsZFNlYXJjaElucHV0cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEVsZGVyU2VhcmNoSW5wdXREaXJlY3RpdmVbXT4oW10pO1xuXG4gIHByaXZhdGUgZm9yY2VkRmlsdGVycyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZpbHRlcltdPihbXSk7XG4gIHByaXZhdGUgc3RhcnRGaWx0ZXJzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RmlsdGVyW10+KFtdKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGxvZyA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfdW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zZWFyY2hTdGF0ZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlYXJjaElucHV0U3RhdGVbXT4oW10pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9maWx0ZXJzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RmlsdGVyW10+KFtdKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5pdGlhbEZpbHRlcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXJbXT4oW10pO1xuXG4gIHByaXZhdGUgX2ZpbHRlckNvbnRleHQ6IEZpbHRlckNvbnRleHQ7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKEBTa2lwU2VsZigpIEBPcHRpb25hbCgpIHByaXZhdGUgcGFyZW50Q29udGV4dDogRWxkZXJTZWFyY2hDb250ZXh0RGlyZWN0aXZlKSB7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogTGlmZSBDeWNsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIGlmICghdGhpcy5pc1BhcmVudENvbnRleHROdWxsKCkpIHtcbiAgICAgIHRoaXMucmVnaXN0ZXJJbnB1dHNUb1BhcmVudENvbnRleHQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzUGFyZW50Q29udGV4dE51bGwoKSkge1xuICAgICAgdGhpcy5zdWJzY3JpYmVTZWFyY2hJbnB1dHMoKTtcbiAgICAgIHRoaXMuc3Vic2NyaWJlSW5pdGlhbEZpbHRlcnMoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fdW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICB0aGlzLl91bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIEBJbnB1dChcImVsZGVyU2VhcmNoQ29udGV4dFwiKVxuICBwdWJsaWMgc2V0IGZpbHRlckNvbnRleHQodmFsdWU6IEZpbHRlckNvbnRleHQgfCBzdHJpbmcpIHtcbiAgICB0aGlzLl9maWx0ZXJDb250ZXh0ID0gdmFsdWUgaW5zdGFuY2VvZiBGaWx0ZXJDb250ZXh0ID8gdmFsdWUgOiBudWxsO1xuICB9XG5cbiAgcHVibGljIGdldCBmaWx0ZXJDb250ZXh0KCk6IEZpbHRlckNvbnRleHQge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJDb250ZXh0O1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcmNlZCBmaWx0ZXJzIGFyZSBhbHdheXMgbWVyZ2VkIGludG8gdGhlIGZpbmFsIEZpbHRlckNvbnRleHQuXG4gICAqXG4gICAqIFRoaXMgbWVhbnMgdGhleSBvdmVycmlkZSB1c2VyIGRlZmluZWQgZmlsdGVycywgYnV0IGF0dGVtcHRcbiAgICogdG8gYWxzbyBrZWVwIHRoZSB1c2VycyBpbnRlbnQgKGJ5IG1lcmdpbmcpIHRoZW0uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGZvcmNlZEZpbHRlcnMoZmlsdGVyczogRmlsdGVyW10pIHtcbiAgICB0aGlzLmZvcmNlZEZpbHRlcnMkLm5leHQoZmlsdGVycyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZvcmNlZEZpbHRlcnMoKTogRmlsdGVyW10ge1xuICAgIHJldHVybiB0aGlzLmZvcmNlZEZpbHRlcnMkLmdldFZhbHVlKCk7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHN0YXJ0RmlsdGVycyhmaWx0ZXJzOiBGaWx0ZXJbXSkge1xuICAgIHRoaXMuc3RhcnRGaWx0ZXJzJC5uZXh0KGZpbHRlcnMpO1xuICB9XG5cbiAgcHVibGljIGdldCBhdHRyaWJ1dGVzKCk6IE9ic2VydmFibGU8U2VhcmNoSW5wdXRbXT4ge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaElucHV0cy5jaGFuZ2VzLnBpcGUoXG4gICAgICBtYXAoaW5wdXRzID0+IGlucHV0cyBhcyBRdWVyeUxpc3Q8RWxkZXJTZWFyY2hJbnB1dERpcmVjdGl2ZT4pLFxuICAgICAgbWFwKGlucHV0cyA9PiBpbnB1dHMudG9BcnJheSgpKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGF0dHJpYnV0ZXNTbmFwc2hvdCgpOiBTZWFyY2hJbnB1dFtdIHtcbiAgICByZXR1cm4gdGhpcy56aXBJbnB1dHNXaXRoQ2hpbGRJbnB1dHMoXG4gICAgICB0aGlzLnNlYXJjaElucHV0cy50b0FycmF5KCksXG4gICAgICB0aGlzLmNoaWxkU2VhcmNoSW5wdXRzJC5nZXRWYWx1ZSgpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RhdGVzJCgpOiBPYnNlcnZhYmxlPFNlYXJjaElucHV0U3RhdGVbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWFyY2hTdGF0ZXMuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXRlc1NuYXBzaG90KCk6IFNlYXJjaElucHV0U3RhdGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlYXJjaFN0YXRlcy5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgdXNlciB0b3VjaGVkIGF0dHJpYnV0ZXMuIChpZ25vcmluZyBmYWxsYmFja3MpXG4gICAqL1xuICBwdWJsaWMgZ2V0IHVzZXJEZWZpbmVkQXR0cmlidXRlcyQoKTogT2JzZXJ2YWJsZTxTZWFyY2hJbnB1dFN0YXRlW10+IHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZXMkLnBpcGUoXG4gICAgICBtYXAoc3RhdGVzID0+IHN0YXRlcy5maWx0ZXIocyA9PiAhcy5wcmlzdGluZSkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IGFjdGl2ZSBmaWx0ZXJzXG4gICAqL1xuICBwdWJsaWMgZ2V0IGZpbHRlcnMkKCk6IE9ic2VydmFibGU8RmlsdGVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVycyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGluaXRpYWxGaWx0ZXJzJCgpOiBPYnNlcnZhYmxlPEZpbHRlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2luaXRpYWxGaWx0ZXJzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZmlsdGVyc1NuYXBzaG90KCk6IEZpbHRlcltdIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVycyQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyByZWdpc3RlcklucHV0KHNlYXJjaElucHV0czogRWxkZXJTZWFyY2hJbnB1dERpcmVjdGl2ZVtdKSB7XG4gICAgdGhpcy5jaGlsZFNlYXJjaElucHV0cyQubmV4dChbLi4udGhpcy5jaGlsZFNlYXJjaElucHV0cyQuZ2V0VmFsdWUoKSwgLi4uc2VhcmNoSW5wdXRzXSk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJJbml0aWFsRmlsdGVycyhmaWx0ZXJzOiBGaWx0ZXJbXSkge1xuICAgIHRoaXMuX2luaXRpYWxGaWx0ZXJzJC5uZXh0KGZpbHRlcnMpO1xuICB9XG5cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzUGFyZW50Q29udGV4dE51bGwoKSkge1xuICAgICAgdGhpcy5yZXNldElucHV0cygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBhcmVudENvbnRleHQucmVzZXQoKTtcbiAgICB9XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlc2V0SW5wdXRzKCkge1xuICAgIHRoaXMuYXR0cmlidXRlc1NuYXBzaG90XG4gICAgICAuZmlsdGVyKGF0dHIgPT4gIWF0dHIucmVhZG9ubHkpXG4gICAgICAuZm9yRWFjaChhID0+IHtcbiAgICAgICAgYS5yZXNldCgpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVySW5wdXRzVG9QYXJlbnRDb250ZXh0KCkge1xuICAgIGlmICghdGhpcy5pc1BhcmVudENvbnRleHROdWxsKCkpIHtcbiAgICAgIHRoaXMucGFyZW50Q29udGV4dC5yZWdpc3RlcklucHV0KHRoaXMuc2VhcmNoSW5wdXRzLnRvQXJyYXkoKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc1BhcmVudENvbnRleHROdWxsKCkge1xuICAgIHJldHVybiB0aGlzLnBhcmVudENvbnRleHQgPT09IG51bGw7XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZVNlYXJjaElucHV0cygpIHtcbiAgICB0aGlzLnNlYXJjaElucHV0cy5jaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKHRoaXMuc2VhcmNoSW5wdXRzKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlJCksXG4gICAgICAgIG1hcChpbnB1dCA9PiBpbnB1dCBhcyBRdWVyeUxpc3Q8RWxkZXJTZWFyY2hJbnB1dERpcmVjdGl2ZT4pLFxuICAgICAgICBjb21iaW5lTGF0ZXN0V2l0aCh0aGlzLmNoaWxkU2VhcmNoSW5wdXRzJCksXG4gICAgICAgIG1hcCgoW2lucHV0cywgY2hpbGRJbnB1dHNdKSA9PiB0aGlzLnppcElucHV0c1dpdGhDaGlsZElucHV0cyhpbnB1dHMudG9BcnJheSgpLCBjaGlsZElucHV0cykpLFxuICAgICAgICBzd2l0Y2hNYXAoaW5wdXRzID0+IGNvbWJpbmVMYXRlc3QoaW5wdXRzLm1hcChpID0+IGkuc3RhdGUkKSkpLFxuICAgICAgICBjb21iaW5lTGF0ZXN0V2l0aCh0aGlzLmZvcmNlZEZpbHRlcnMkKSxcbiAgICAgICAgZGVib3VuY2VUaW1lKDUpXG4gICAgICApLnN1YnNjcmliZSgoW3N0YXRlcywgZm9yY2VkRmlsdGVyc10pID0+IHtcbiAgICAgIHRoaXMuX3NlYXJjaFN0YXRlcy5uZXh0KHN0YXRlcyk7XG4gICAgICBjb25zdCB1c2VyRmlsdGVycyA9IHRoaXMuY29udmVydFRvRmlsdGVycyhzdGF0ZXMpO1xuICAgICAgdGhpcy5fZmlsdGVycyQubmV4dCh1c2VyRmlsdGVycyk7XG4gICAgICB0aGlzLmFwcGx5RmlsdGVycyh1c2VyRmlsdGVycywgZm9yY2VkRmlsdGVycyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHppcElucHV0c1dpdGhDaGlsZElucHV0cyhcbiAgICBpbnB1dHM6IEVsZGVyU2VhcmNoSW5wdXREaXJlY3RpdmVbXSxcbiAgICBjaGlsZElucHV0czogRWxkZXJTZWFyY2hJbnB1dERpcmVjdGl2ZVtdXG4gICkge1xuICAgIHJldHVybiBbLi4uaW5wdXRzLCAuLi5jaGlsZElucHV0c107XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZUluaXRpYWxGaWx0ZXJzKCkge1xuICAgIHRoaXMuaW5pdGlhbEZpbHRlcnMkLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5fdW5zdWJzY3JpYmUkKSxcbiAgICAgIGNvbWJpbmVMYXRlc3RXaXRoKHRoaXMuY2hpbGRTZWFyY2hJbnB1dHMkLCB0aGlzLnN0YXJ0RmlsdGVycyQpXG4gICAgKS5zdWJzY3JpYmUoKFtpbml0aWFsRmlsdGVycywgY2hpbGRTZWFyY2hJbnB1dHMsIHN0YXJ0RmlsdGVyc10pID0+IHtcbiAgICAgIHZhciBzZWFyY2hJbnB1dHMgPSB0aGlzLnppcElucHV0c1dpdGhDaGlsZElucHV0cyh0aGlzLnNlYXJjaElucHV0cy50b0FycmF5KCksIGNoaWxkU2VhcmNoSW5wdXRzKTtcbiAgICAgIHZhciBmaWx0ZXJzID0gWy4uLmluaXRpYWxGaWx0ZXJzLCAuLi5zdGFydEZpbHRlcnNdO1xuICAgICAgc2VhcmNoSW5wdXRzLmZvckVhY2goaW5wdXQgPT4gaW5wdXQuc2V0SW5pdGlhbEZpbHRlcihmaWx0ZXJzKSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRUb0ZpbHRlcnMoc3RhdGVzOiBTZWFyY2hJbnB1dFN0YXRlW10pOiBGaWx0ZXJbXSB7XG4gICAgcmV0dXJuIHN0YXRlc1xuICAgICAgLm1hcChzID0+IG5ldyBGaWx0ZXIocy5xdWVyeUtleSwgcy5xdWVyeVZhbHVlKSk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5RmlsdGVycyhcbiAgICB1c2VyRmlsdGVyczogRmlsdGVyW10sXG4gICAgZm9yY2VkRmlsdGVyczogRmlsdGVyW11cbiAgKTogdm9pZCB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZmlsdGVyQ29udGV4dDtcbiAgICBpZiAoY29udGV4dCkge1xuICAgICAgY29udGV4dC51cGRhdGVGaWx0ZXJzKHVzZXJGaWx0ZXJzKTtcbiAgICAgIGNvbnRleHQubWVyZ2VGaWx0ZXJzKGZvcmNlZEZpbHRlcnMpO1xuICAgICAgdGhpcy5sb2cudHJhY2UoXCJTZWFyY2gtTW9kZWwgZmlsdGVycyB1cGRhdGVkOlwiLCBBcnJheS5mcm9tKGNvbnRleHQuZmlsdGVyc1NuYXBzaG90KSk7XG4gICAgfVxuICB9XG59XG5cbiJdfQ==
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VhcmNoLWNvbnRleHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy9zZWFyY2gvZWxkZXItc2VhcmNoLWNvbnRleHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBa0MsU0FBUyxFQUFFLEtBQUssRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFbkQsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTFGLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDOUMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNuQyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0scUNBQXFDLENBQUM7O0FBSTNEOzs7R0FHRztBQUtILE1BQU0sT0FBTywyQkFBMkI7SUFKeEM7UUFNRTs7OztvRkFJNEU7UUFFcEUsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBVyxFQUFFLENBQUMsQ0FBQztRQUNuRCxrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFXLEVBQUUsQ0FBQyxDQUFDO1FBRXpDLFFBQUcsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckQsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFL0Isa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBZ0IsRUFBRSxDQUFDLENBQUM7UUFDdkQsa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBcUIsRUFBRSxDQUFDLENBQUM7UUFDNUQsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLHFCQUFnQixHQUFHLElBQUksZUFBZSxDQUFXLEVBQUUsQ0FBQyxDQUFDO0tBb012RTtJQWhNQzs7OztnRkFJNEU7SUFFckUsa0JBQWtCO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUN4QixTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQzdELGlCQUFpQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFDdEMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUNoQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxFQUFFLEVBQUU7WUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDaEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGVBQWU7UUFDcEIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7OztnRkFJNEU7SUFFNUUsSUFDVyxhQUFhLENBQUMsS0FBeUI7UUFDaEQsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtnQkFDN0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7YUFDN0I7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMscURBQXFELEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUM1RixNQUFNLElBQUksS0FBSyxDQUFDLHFEQUFxRCxHQUFHLEtBQUssQ0FBQyxDQUFDO2FBQ2hGO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVELElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsSUFDVyxhQUFhLENBQUMsT0FBaUI7UUFDeEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQ1csWUFBWSxDQUFDLE9BQWlCO1FBQ3ZDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRCxJQUFXLGtCQUFrQjtRQUMzQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQVcsY0FBYztRQUN2QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxzQkFBc0I7UUFDL0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDdEIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQy9DLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFXLGVBQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQVcsZUFBZTtRQUN4QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7O2dGQUk0RTtJQUU1RTs7T0FFRztJQUNJLFFBQVEsQ0FBQyxXQUF3QjtRQUN0QyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsR0FBRyxXQUFXLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLGtCQUFrQjthQUNwQixNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7YUFDOUIsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ1gsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1osQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sc0JBQXNCLENBQUMsT0FBaUI7UUFDN0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRXBFLHVCQUF1QjtRQUM3QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FDdkIsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFDeEIsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQzFELENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsWUFBWSxFQUFFLFlBQVksQ0FBQyxFQUFFLEVBQUU7WUFDM0QsSUFBSSxPQUFPLEdBQUcsQ0FBQyxHQUFHLGNBQWMsRUFBRSxHQUFHLFlBQVksQ0FBQyxDQUFDO1lBQ25ELFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQzNCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQ3ZELElBQUksTUFBTSxFQUFFO29CQUNWLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ3ZDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxLQUFrQixFQUFFLE9BQWlCO1FBQzlELEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFO1lBQzVCLElBQUksTUFBTSxDQUFDLEdBQUcsS0FBSyxLQUFLLENBQUMsSUFBSSxFQUFFO2dCQUM3QixPQUFPLE1BQU0sQ0FBQzthQUNmO1NBQ0Y7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxNQUEwQjtRQUNqRCxPQUFPLE1BQU07YUFDVixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQzthQUN6QixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTyxZQUFZLENBQ2xCLFdBQXFCLEVBQ3JCLGFBQXVCO1FBRXZCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDbkMsSUFBSSxPQUFPLEVBQUU7WUFDWCxPQUFPLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ25DLE9BQU8sQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsK0JBQStCLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztTQUN0RjthQUFNO1lBQ0wsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsOERBQThELEVBQUU7Z0JBQzVFLFdBQVcsRUFBRSxXQUFXO2dCQUN4QixhQUFhLEVBQUUsYUFBYTthQUM3QixDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7K0dBck5VLDJCQUEyQjttR0FBM0IsMkJBQTJCOzs0RkFBM0IsMkJBQTJCO2tCQUp2QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFFBQVEsRUFBRSxvQkFBb0I7aUJBQy9COzhCQTJEWSxhQUFhO3NCQUR2QixLQUFLO3VCQUFDLG9CQUFvQjtnQkF5QmhCLGFBQWE7c0JBRHZCLEtBQUs7Z0JBVUssWUFBWTtzQkFEdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBJbnB1dCwgT25EZXN0cm95fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TG9nZ2VyRmFjdG9yeX0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzL2ludGVybmFsL09ic2VydmFibGUnO1xuaW1wb3J0IHtjb21iaW5lTGF0ZXN0V2l0aCwgZGVib3VuY2VUaW1lLCBtYXAsIHN3aXRjaE1hcCwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1NlYXJjaElucHV0fSBmcm9tICcuL21vZGVsL3NlYXJjaC1pbnB1dCc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdH0gZnJvbSAncnhqcy9pbnRlcm5hbC9CZWhhdmlvclN1YmplY3QnO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzL2ludGVybmFsL1N1YmplY3QnO1xuaW1wb3J0IHtjb21iaW5lTGF0ZXN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7RmlsdGVyfSBmcm9tICcuLi8uLi8uLi9jb21tb24vZGF0YS9maWx0ZXJzL2ZpbHRlcic7XG5pbXBvcnQge0ZpbHRlckNvbnRleHR9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9kYXRhL2ZpbHRlcnMvZmlsdGVyLWNvbnRleHQnO1xuaW1wb3J0IHtTZWFyY2hJbnB1dFN0YXRlfSBmcm9tICcuL21vZGVsL3NlYXJjaC1pbnB1dC1zdGF0ZSc7XG5cbi8qKlxuICogVGhlIHNlYXJjaCBjb250YWluZXIgbWFuYWdlcyBhIGdyb3VwIG9mIHNlYXJjaC1pbnB1dHNcbiAqIGFuZCBob2xkcyB0aGVpciB2YWx1ZXMgaW4gYSBjZW50cmFsIHNlYXJjaCBtb2RlbC5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2VsZGVyU2VhcmNoQ29udGV4dF0nLFxuICBleHBvcnRBczogJ2VsZGVyU2VhcmNoQ29udGV4dCdcbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJTZWFyY2hDb250ZXh0RGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBBZnRlckNvbnRlbnRJbml0IHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIGZvcmNlZEZpbHRlcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXJbXT4oW10pO1xuICBwcml2YXRlIHN0YXJ0RmlsdGVycyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZpbHRlcltdPihbXSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlYXJjaElucHV0cyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2VhcmNoSW5wdXRbXT4oW10pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZWFyY2hTdGF0ZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlYXJjaElucHV0U3RhdGVbXT4oW10pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9maWx0ZXJzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RmlsdGVyW10+KFtdKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5pdGlhbEZpbHRlcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXJbXT4oW10pO1xuXG4gIHByaXZhdGUgX2ZpbHRlckNvbnRleHQ6IEZpbHRlckNvbnRleHQ7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUgQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLl9zZWFyY2hJbnB1dHMucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgIHN3aXRjaE1hcChpbnB1dHMgPT4gY29tYmluZUxhdGVzdChpbnB1dHMubWFwKGkgPT4gaS5zdGF0ZSQpKSksXG4gICAgICBjb21iaW5lTGF0ZXN0V2l0aCh0aGlzLmZvcmNlZEZpbHRlcnMkKSxcbiAgICAgIGRlYm91bmNlVGltZSg1KVxuICAgICkuc3Vic2NyaWJlKChbc3RhdGVzLCBmb3JjZWRGaWx0ZXJzXSkgPT4ge1xuICAgICAgdGhpcy5fc2VhcmNoU3RhdGVzLm5leHQoc3RhdGVzKTtcbiAgICAgIGNvbnN0IHVzZXJGaWx0ZXJzID0gdGhpcy5jb252ZXJ0VG9GaWx0ZXJzKHN0YXRlcyk7XG4gICAgICB0aGlzLl9maWx0ZXJzJC5uZXh0KHVzZXJGaWx0ZXJzKTtcbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzKHVzZXJGaWx0ZXJzLCBmb3JjZWRGaWx0ZXJzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpYmVJbml0aWFsRmlsdGVycygpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIEBJbnB1dCgnZWxkZXJTZWFyY2hDb250ZXh0JylcbiAgcHVibGljIHNldCBmaWx0ZXJDb250ZXh0KHZhbHVlOiBGaWx0ZXJDb250ZXh0IHwgJycpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMuX2ZpbHRlckNvbnRleHQgPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9nLndhcm4oJ0lsbGVnYWwgdmFsdWUgcHJvdmlkZWQgZm9yIHByb3BlcnR5IGZpbHRlckNvbnRleHQ6ICcsIEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSWxsZWdhbCB2YWx1ZSBwcm92aWRlZCBmb3IgcHJvcGVydHkgZmlsdGVyQ29udGV4dCEgJyArIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fZmlsdGVyQ29udGV4dCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBmaWx0ZXJDb250ZXh0KCk6IEZpbHRlckNvbnRleHQge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJDb250ZXh0O1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcmNlZCBmaWx0ZXJzIGFyZSBhbHdheXMgbWVyZ2VkIGludG8gdGhlIGZpbmFsIEZpbHRlckNvbnRleHQuXG4gICAqXG4gICAqIFRoaXMgbWVhbnMgdGhleSBvdmVycmlkZSB1c2VyIGRlZmluZWQgZmlsdGVycywgYnV0IGF0dGVtcHRcbiAgICogdG8gYWxzbyBrZWVwIHRoZSB1c2VycyBpbnRlbnQgKGJ5IG1lcmdpbmcpIHRoZW0uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGZvcmNlZEZpbHRlcnMoZmlsdGVyczogRmlsdGVyW10pIHtcbiAgICB0aGlzLmZvcmNlZEZpbHRlcnMkLm5leHQoZmlsdGVycyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZvcmNlZEZpbHRlcnMoKTogRmlsdGVyW10ge1xuICAgIHJldHVybiB0aGlzLmZvcmNlZEZpbHRlcnMkLmdldFZhbHVlKCk7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHN0YXJ0RmlsdGVycyhmaWx0ZXJzOiBGaWx0ZXJbXSkge1xuICAgIHRoaXMuc3RhcnRGaWx0ZXJzJC5uZXh0KGZpbHRlcnMpO1xuICB9XG5cbiAgcHVibGljIGdldCBhdHRyaWJ1dGVzKCk6IE9ic2VydmFibGU8U2VhcmNoSW5wdXRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWFyY2hJbnB1dHMuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGF0dHJpYnV0ZXNTbmFwc2hvdCgpOiBTZWFyY2hJbnB1dFtdIHtcbiAgICByZXR1cm4gdGhpcy5fc2VhcmNoSW5wdXRzLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXRlcyQoKTogT2JzZXJ2YWJsZTxTZWFyY2hJbnB1dFN0YXRlW10+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VhcmNoU3RhdGVzLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBzdGF0ZXNTbmFwc2hvdCgpOiBTZWFyY2hJbnB1dFN0YXRlW10ge1xuICAgIHJldHVybiB0aGlzLl9zZWFyY2hTdGF0ZXMuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHVzZXIgdG91Y2hlZCBhdHRyaWJ1dGVzLiAoaWdub3JpbmcgZmFsbGJhY2tzKVxuICAgKi9cbiAgcHVibGljIGdldCB1c2VyRGVmaW5lZEF0dHJpYnV0ZXMkKCk6IE9ic2VydmFibGU8U2VhcmNoSW5wdXRTdGF0ZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVzJC5waXBlKFxuICAgICAgbWFwKHN0YXRlcyA9PiBzdGF0ZXMuZmlsdGVyKHMgPT4gIXMucHJpc3RpbmUpKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY3VycmVudCBhY3RpdmUgZmlsdGVyc1xuICAgKi9cbiAgcHVibGljIGdldCBmaWx0ZXJzJCgpOiBPYnNlcnZhYmxlPEZpbHRlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlcnMkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBpbml0aWFsRmlsdGVycyQoKTogT2JzZXJ2YWJsZTxGaWx0ZXJbXT4ge1xuICAgIHJldHVybiB0aGlzLl9pbml0aWFsRmlsdGVycyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZpbHRlcnNTbmFwc2hvdCgpOiBGaWx0ZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlcnMkLmdldFZhbHVlKCk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogUmVnaXN0ZXIgYSBuZXcgc2VhcmNoIG5hbWUgaW4gdGhpcyBjb250YWluZXJcbiAgICovXG4gIHB1YmxpYyByZWdpc3RlcihzZWFyY2hJbnB1dDogU2VhcmNoSW5wdXQpOiB2b2lkIHtcbiAgICB0aGlzLmxvZy5kZWJ1ZygnUmVnaXN0ZXJpbmcgc2VhcmNoIGlucHV0IFsnICsgc2VhcmNoSW5wdXQubmFtZSArICddJyk7XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuX3NlYXJjaElucHV0cy5nZXRWYWx1ZSgpO1xuICAgIHRoaXMuX3NlYXJjaElucHV0cy5uZXh0KFsuLi5jdXJyZW50LCBzZWFyY2hJbnB1dF0pO1xuICB9XG5cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuYXR0cmlidXRlc1NuYXBzaG90XG4gICAgICAuZmlsdGVyKGF0dHIgPT4gIWF0dHIucmVhZG9ubHkpXG4gICAgICAuZm9yRWFjaChhID0+IHtcbiAgICAgICAgYS5yZXNldCgpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJJbml0aWFsRmlsdGVycyhmaWx0ZXJzOiBGaWx0ZXJbXSkge1xuICAgIHRoaXMuX2luaXRpYWxGaWx0ZXJzJC5uZXh0KGZpbHRlcnMpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVJbml0aWFsRmlsdGVycygpIHtcbiAgICB0aGlzLmluaXRpYWxGaWx0ZXJzJC5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgY29tYmluZUxhdGVzdFdpdGgodGhpcy5fc2VhcmNoSW5wdXRzLCB0aGlzLnN0YXJ0RmlsdGVycyQpXG4gICAgKS5zdWJzY3JpYmUoKFtpbml0aWFsRmlsdGVycywgc2VhcmNoSW5wdXRzLCBzdGFydEZpbHRlcnNdKSA9PiB7XG4gICAgICB2YXIgZmlsdGVycyA9IFsuLi5pbml0aWFsRmlsdGVycywgLi4uc3RhcnRGaWx0ZXJzXTtcbiAgICAgIHNlYXJjaElucHV0cy5mb3JFYWNoKGlucHV0ID0+IHtcbiAgICAgICAgY29uc3QgZmlsdGVyID0gdGhpcy5maW5kRmlsdGVyRm9ySW5wdXQoaW5wdXQsIGZpbHRlcnMpO1xuICAgICAgICBpZiAoZmlsdGVyKSB7XG4gICAgICAgICAgaW5wdXQuYXBwbHlJbml0aWFsVmFsdWUoZmlsdGVyLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRGaWx0ZXJGb3JJbnB1dChpbnB1dDogU2VhcmNoSW5wdXQsIGZpbHRlcnM6IEZpbHRlcltdKTogRmlsdGVyIHtcbiAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiBmaWx0ZXJzKSB7XG4gICAgICBpZiAoZmlsdGVyLmtleSA9PT0gaW5wdXQubmFtZSkge1xuICAgICAgICByZXR1cm4gZmlsdGVyO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydFRvRmlsdGVycyhzdGF0ZXM6IFNlYXJjaElucHV0U3RhdGVbXSk6IEZpbHRlcltdIHtcbiAgICByZXR1cm4gc3RhdGVzXG4gICAgICAuZmlsdGVyKHMgPT4gISFzLnF1ZXJ5S2V5KVxuICAgICAgLm1hcChzID0+IG5ldyBGaWx0ZXIocy5xdWVyeUtleSwgcy5xdWVyeVZhbHVlKSk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5RmlsdGVycyhcbiAgICB1c2VyRmlsdGVyczogRmlsdGVyW10sXG4gICAgZm9yY2VkRmlsdGVyczogRmlsdGVyW11cbiAgKTogdm9pZCB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZmlsdGVyQ29udGV4dDtcbiAgICBpZiAoY29udGV4dCkge1xuICAgICAgY29udGV4dC51cGRhdGVGaWx0ZXJzKHVzZXJGaWx0ZXJzKTtcbiAgICAgIGNvbnRleHQubWVyZ2VGaWx0ZXJzKGZvcmNlZEZpbHRlcnMpO1xuICAgICAgdGhpcy5sb2cudHJhY2UoJ1NlYXJjaC1Nb2RlbCBmaWx0ZXJzIHVwZGF0ZWQ6JywgQXJyYXkuZnJvbShjb250ZXh0LmZpbHRlcnNTbmFwc2hvdCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZy53YXJuKCdGYWlsZWQgdG8gYXBwbHkgZmlsdGVycyBzaW5jZSBubyBGaWx0ZXJDb250ZXh0IGlzIGF2YWlsYWJsZSEnLCB7XG4gICAgICAgIHVzZXJGaWx0ZXJzOiB1c2VyRmlsdGVycyxcbiAgICAgICAgZm9yY2VkRmlsdGVyczogZm9yY2VkRmlsdGVyc1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  import { Directive, Host, Input } from "@angular/core";
2
2
  import { LoggerFactory } from "@elderbyte/ts-logger";
3
- import { filter, map, takeUntil } from "rxjs/operators";
3
+ import { map, takeUntil } from "rxjs/operators";
4
4
  import { PropertyPathUtil } from "../../../common/utils/property-path-util";
5
5
  import { BehaviorSubject, Subject } from "rxjs";
6
6
  import { SearchInputState } from "./model/search-input-state";
@@ -19,14 +19,13 @@ export class ElderSearchInputDirective {
19
19
  * Constructor *
20
20
  * *
21
21
  **************************************************************************/
22
- constructor(searchContext, changeDetection, ngModel) {
22
+ constructor(searchContext, ngModel) {
23
23
  this.searchContext = searchContext;
24
- this.changeDetection = changeDetection;
25
24
  this.ngModel = ngModel;
26
25
  //TODO: In Angular 16, use standalone directives and host component to inject directive to component
27
26
  this.initialValueDirective = new ElderInitialValueDirective(this.ngModel);
28
- this._state = new BehaviorSubject(null);
29
- this._unsubscribe$ = new Subject();
27
+ this._state = new BehaviorSubject(SearchInputState.unknown());
28
+ this.destroy$ = new Subject();
30
29
  this.log = LoggerFactory.getLogger(this.constructor.name);
31
30
  }
32
31
  /***************************************************************************
@@ -36,14 +35,15 @@ export class ElderSearchInputDirective {
36
35
  **************************************************************************/
37
36
  ngAfterViewInit() {
38
37
  this._extractedName = this.extractName();
39
- console.log(this.extractName() + "|" + this.queryKey + "|" + this.resolvePath);
38
+ this.log.debug(this.extractName() + "|" + this.queryKey + "|" + this.resolvePath);
39
+ this.searchContext.register(this);
40
40
  this.stateObservable().subscribe(state => {
41
41
  this.emitState(state);
42
42
  });
43
43
  }
44
44
  ngOnDestroy() {
45
- this._unsubscribe$.next();
46
- this._unsubscribe$.complete();
45
+ this.destroy$.next();
46
+ this.destroy$.complete();
47
47
  }
48
48
  /***************************************************************************
49
49
  * *
@@ -51,7 +51,7 @@ export class ElderSearchInputDirective {
51
51
  * *
52
52
  **************************************************************************/
53
53
  get state$() {
54
- return this._state.asObservable().pipe(filter(s => !!s));
54
+ return this._state.asObservable();
55
55
  }
56
56
  get stateSnapshot() {
57
57
  return this._state.getValue();
@@ -80,12 +80,9 @@ export class ElderSearchInputDirective {
80
80
  * Public API *
81
81
  * *
82
82
  **************************************************************************/
83
- setInitialFilter(filters) {
84
- const filterValue = this.findFilterForThisInput(filters);
85
- if (filterValue) {
86
- const value = this.convertQueryStringToRawModelValue(filterValue.value);
87
- this.initialValueDirective.setInitialValue(value);
88
- }
83
+ applyInitialValue(queryString) {
84
+ const value = this.convertQueryStringToRawModelValue(queryString);
85
+ this.initialValueDirective.setInitialValue(value);
89
86
  }
90
87
  reset() {
91
88
  this.ngModel.reset();
@@ -95,16 +92,8 @@ export class ElderSearchInputDirective {
95
92
  * Private methods *
96
93
  * *
97
94
  **************************************************************************/
98
- findFilterForThisInput(filters) {
99
- for (const filter of filters) {
100
- if (filter.key === this.queryKey || filter.key === this.extractName()) {
101
- return filter;
102
- }
103
- }
104
- return null;
105
- }
106
95
  stateObservable() {
107
- return this.initialValueDirective.valueChanges$.pipe(takeUntil(this._unsubscribe$), map(value => {
96
+ return this.initialValueDirective.valueChanges$.pipe(takeUntil(this.destroy$), map(value => {
108
97
  const queryValue = this.convertRawModelValueToQueryString(value);
109
98
  const pristine = !this.isAttributeValuePresent(value);
110
99
  return new SearchInputState(this.name, queryValue, this.queryKey || this.name, pristine);
@@ -206,16 +195,16 @@ export class ElderSearchInputDirective {
206
195
  });
207
196
  return CollectionUtil.flatten(arrays);
208
197
  }
209
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderSearchInputDirective, deps: [{ token: i1.ElderSearchContextDirective }, { token: i0.ChangeDetectorRef }, { token: i2.NgModel, host: true }], target: i0.ɵɵFactoryTarget.Directive }); }
210
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: ElderSearchInputDirective, selector: "[elderSearchInput]", inputs: { queryKey: ["elderSearchInputKey", "queryKey"], valueTransform: ["elderSearchInputTransform", "valueTransform"], resolvePath: ["elderSearchInput", "resolvePath"], dataSource: "dataSource", fallbackValue: ["elderSearchInputFallback", "fallbackValue"], valueAsId: "valueAsId" }, exportAs: ["elderSearchInput"], ngImport: i0 }); }
198
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: ElderSearchInputDirective, deps: [{ token: i1.ElderSearchContextDirective }, { token: i2.NgModel, host: true }], target: i0.ɵɵFactoryTarget.Directive }); }
199
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.11", type: ElderSearchInputDirective, selector: "[elderSearchInput]", inputs: { queryKey: ["elderSearchInputKey", "queryKey"], valueTransform: ["elderSearchInputTransform", "valueTransform"], resolvePath: ["elderSearchInput", "resolvePath"], dataSource: "dataSource", fallbackValue: ["elderSearchInputFallback", "fallbackValue"], valueAsId: "valueAsId" }, exportAs: ["elderSearchInput"], ngImport: i0 }); }
211
200
  }
212
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderSearchInputDirective, decorators: [{
201
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: ElderSearchInputDirective, decorators: [{
213
202
  type: Directive,
214
203
  args: [{
215
204
  selector: "[elderSearchInput]",
216
205
  exportAs: "elderSearchInput"
217
206
  }]
218
- }], ctorParameters: function () { return [{ type: i1.ElderSearchContextDirective }, { type: i0.ChangeDetectorRef }, { type: i2.NgModel, decorators: [{
207
+ }], ctorParameters: function () { return [{ type: i1.ElderSearchContextDirective }, { type: i2.NgModel, decorators: [{
219
208
  type: Host
220
209
  }] }]; }, propDecorators: { queryKey: [{
221
210
  type: Input,
@@ -236,4 +225,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
236
225
  type: Input,
237
226
  args: ["valueAsId"]
238
227
  }] } });
239
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VhcmNoLWlucHV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvc2VhcmNoL2VsZGVyLXNlYXJjaC1pbnB1dC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNwRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFLckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUl2RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7OztBQUV6Rjs7R0FFRztBQUtILE1BQU0sT0FBTyx5QkFBeUI7SUE4Q3BDOzs7O2dGQUk0RTtJQUU1RSxZQUNVLGFBQTBDLEVBQzFDLGVBQWtDLEVBQzFCLE9BQWdCO1FBRnhCLGtCQUFhLEdBQWIsYUFBYSxDQUE2QjtRQUMxQyxvQkFBZSxHQUFmLGVBQWUsQ0FBbUI7UUFDMUIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQXREbEMsb0dBQW9HO1FBQ25GLDBCQUFxQixHQUFHLElBQUksMEJBQTBCLENBQUMsSUFBSSxDQUFD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R0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzVCLElBQUksQ0FBQyxZQUFZLEtBQUssRUFBRTtnQkFDdEIsT0FBTyxDQUFDLENBQUM7YUFDVjtpQkFBTTtnQkFDTCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDWjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxjQUFjLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7OEdBdFJVLHlCQUF5QjtrR0FBekIseUJBQXlCOzsyRkFBekIseUJBQXlCO2tCQUpyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFFBQVEsRUFBRSxrQkFBa0I7aUJBQzdCOzswQkF3REksSUFBSTs0Q0F6Q0EsUUFBUTtzQkFEZCxLQUFLO3VCQUFDLHFCQUFxQjtnQkFPckIsY0FBYztzQkFEcEIsS0FBSzt1QkFBQywyQkFBMkI7Z0JBUTNCLFdBQVc7c0JBRGpCLEtBQUs7dUJBQUMsa0JBQWtCO2dCQUlsQixVQUFVO3NCQURoQixLQUFLO3VCQUFDLFlBQVk7Z0JBT1osYUFBYTtzQkFEbkIsS0FBSzt1QkFBQywwQkFBMEI7Z0JBSTFCLFNBQVM7c0JBRGYsS0FBSzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgSG9zdCwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBMb2dnZXJGYWN0b3J5IH0gZnJvbSBcIkBlbGRlcmJ5dGUvdHMtbG9nZ2VyXCI7XG5pbXBvcnQgeyBFbGRlclNlYXJjaENvbnRleHREaXJlY3RpdmUgfSBmcm9tIFwiLi9lbGRlci1zZWFyY2gtY29udGV4dC5kaXJlY3RpdmVcIjtcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqcy9pbnRlcm5hbC9PYnNlcnZhYmxlXCI7XG5pbXBvcnQgeyBOZ01vZGVsIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBTZWFyY2hJbnB1dCB9IGZyb20gXCIuL21vZGVsL3NlYXJjaC1pbnB1dFwiO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgUHJvcGVydHlQYXRoVXRpbCB9IGZyb20gXCIuLi8uLi8uLi9jb21tb24vdXRpbHMvcHJvcGVydHktcGF0aC11dGlsXCI7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgU2VhcmNoSW5wdXRTdGF0ZSB9IGZyb20gXCIuL21vZGVsL3NlYXJjaC1pbnB1dC1zdGF0ZVwiO1xuaW1wb3J0IHsgT2JqZWN0cyB9IGZyb20gXCIuLi8uLi8uLi9jb21tb24vb2JqZWN0c1wiO1xuaW1wb3J0IHsgQ29sbGVjdGlvblV0aWwgfSBmcm9tIFwiLi4vLi4vLi4vY29tbW9uL3V0aWxzL2NvbGxlY3Rpb24tdXRpbFwiO1xuaW1wb3J0IHsgRmlsdGVyIH0gZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi9kYXRhL2ZpbHRlcnMvZmlsdGVyXCI7XG5pbXBvcnQgeyBMb2NhbFBhZ2VkRGF0YVNvdXJjZSB9IGZyb20gXCIuLi8uLi8uLi9jb21tb24vZGF0YS9kYXRhc291cmNlL2xvY2FsL2xvY2FsLXBhZ2VkLWRhdGEtc291cmNlXCI7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2NvZXJjaW9uXCI7XG5pbXBvcnQgeyBFbGRlckluaXRpYWxWYWx1ZURpcmVjdGl2ZSB9IGZyb20gXCIuLi9kaXJlY3RpdmVzL2VsZGVyLWluaXRpYWwtdmFsdWUuZGlyZWN0aXZlXCI7XG5cbi8qKlxuICogU2VhcmNoIG5hbWUgYWRhcHRlciBmb3IgaW5wdXQgY29udHJvbHMuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogXCJbZWxkZXJTZWFyY2hJbnB1dF1cIixcbiAgZXhwb3J0QXM6IFwiZWxkZXJTZWFyY2hJbnB1dFwiXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyU2VhcmNoSW5wdXREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIFNlYXJjaElucHV0IHtcbiAgLy9UT0RPOiBJbiBBbmd1bGFyIDE2LCB1c2Ugc3RhbmRhbG9uZSBkaXJlY3RpdmVzIGFuZCBob3N0IGNvbXBvbmVudCB0byBpbmplY3QgZGlyZWN0aXZlIHRvIGNvbXBvbmVudFxuICBwcml2YXRlIHJlYWRvbmx5IGluaXRpYWxWYWx1ZURpcmVjdGl2ZSA9IG5ldyBFbGRlckluaXRpYWxWYWx1ZURpcmVjdGl2ZSh0aGlzLm5nTW9kZWwpO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFVzdWFsbHkgdGhlIGNvbnRyb2wgbmFtZSBpcyB1c2VkLCB0aGlzIGFsbG93cyBhIGN1c3RvbSBxdWVyeSBrZXlcbiAgICovXG4gIEBJbnB1dChcImVsZGVyU2VhcmNoSW5wdXRLZXlcIilcbiAgcHVibGljIHF1ZXJ5S2V5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIChPcHRpb25hbCkgRnVuY3Rpb24gd2hpY2ggdHJhbnNmb3JtcyB0aGUgdmFsdWUgb2JqZWN0IHRvIGEgcXVlcnkgcGFyYW0gdmFsdWVcbiAgICovXG4gIEBJbnB1dChcImVsZGVyU2VhcmNoSW5wdXRUcmFuc2Zvcm1cIilcbiAgcHVibGljIHZhbHVlVHJhbnNmb3JtOiAoKHZhbHVlOiBhbnkpID0+IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCk7XG5cbiAgLyoqXG4gICAqIChPcHRpb25hbCwgRGVmYXVsdCkgUGF0aCBvbiB0aGUgdmFsdWUgb2JqZWN0IHRvIHVzZSBhcyBxdWVyeSBwYXJhbSB2YWx1ZVxuICAgKiAgdmFsdWUgPSBcInR5cGUuaWRcIlxuICAgKi9cbiAgQElucHV0KFwiZWxkZXJTZWFyY2hJbnB1dFwiKVxuICBwdWJsaWMgcmVzb2x2ZVBhdGg6IHN0cmluZztcblxuICBASW5wdXQoXCJkYXRhU291cmNlXCIpXG4gIHB1YmxpYyBkYXRhU291cmNlOiBMb2NhbFBhZ2VkRGF0YVNvdXJjZTxhbnk+O1xuXG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFVzZSB0aGlzIHZhbHVlIGZvciB0aGUgcXVlcnkgaWYgbm9uZSBpcyBwcm92aWRlZC5cbiAgICovXG4gIEBJbnB1dChcImVsZGVyU2VhcmNoSW5wdXRGYWxsYmFja1wiKVxuICBwdWJsaWMgZmFsbGJhY2tWYWx1ZTogc3RyaW5nIHwgc3RyaW5nW107XG5cbiAgQElucHV0KFwidmFsdWVBc0lkXCIpXG4gIHB1YmxpYyB2YWx1ZUFzSWQ6IEJvb2xlYW5JbnB1dDtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2VhcmNoSW5wdXRTdGF0ZT4obnVsbCk7XG4gIHByaXZhdGUgX2V4dHJhY3RlZE5hbWU6IHN0cmluZyB8IG51bGw7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Vuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNlYXJjaENvbnRleHQ6IEVsZGVyU2VhcmNoQ29udGV4dERpcmVjdGl2ZSxcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQEhvc3QoKSBwcml2YXRlIG5nTW9kZWw6IE5nTW9kZWxcbiAgKSB7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogTGlmZSBDeWNsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2V4dHJhY3RlZE5hbWUgPSB0aGlzLmV4dHJhY3ROYW1lKCk7XG5cbiAgICBjb25zb2xlLmxvZyh0aGlzLmV4dHJhY3ROYW1lKCkgKyBcInxcIiArIHRoaXMucXVlcnlLZXkgKyBcInxcIiArIHRoaXMucmVzb2x2ZVBhdGgpO1xuXG4gICAgdGhpcy5zdGF0ZU9ic2VydmFibGUoKS5zdWJzY3JpYmUoc3RhdGUgPT4ge1xuICAgICAgdGhpcy5lbWl0U3RhdGUoc3RhdGUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3Vuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgdGhpcy5fdW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgZ2V0IHN0YXRlJCgpOiBPYnNlcnZhYmxlPFNlYXJjaElucHV0U3RhdGU+IHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGUuYXNPYnNlcnZhYmxlKCkucGlwZShcbiAgICAgIGZpbHRlcihzID0+ICEhcylcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCBzdGF0ZVNuYXBzaG90KCk6IFNlYXJjaElucHV0U3RhdGUge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucXVlcnlLZXkpIHtcbiAgICAgIHJldHVybiB0aGlzLnF1ZXJ5S2V5O1xuICAgIH1cbiAgICBpZiAodGhpcy5fZXh0cmFjdGVkTmFtZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2V4dHJhY3RlZE5hbWU7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ291bGQgbm90IGRldGVybWluZSB0aGUgc2VhcmNoIG5hbWUga2V5IG5hbWUuXCIgK1xuICAgICAgXCIgRWl0aGVyIHNwZWNpZnkgdGhlIG5hbWUgcHJvcGVydHkgb3IgZXhwbGljaXRseSBzZXQgW2VsZGVyU2VhcmNoSW5wdXRLZXldLlwiKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5uZ01vZGVsLnZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCByZWFkb25seSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uZ01vZGVsLmlzRGlzYWJsZWQ7XG4gIH1cblxuICBwcml2YXRlIGdldCBoYXNGYWxsYmFjaygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU2VhcmNoSW5wdXRTdGF0ZS5pc1ZhbHVlRGVmaW5lZCh0aGlzLmZhbGxiYWNrVmFsdWUpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIHNldEluaXRpYWxGaWx0ZXIoZmlsdGVyczogRmlsdGVyW10pIHtcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHRoaXMuZmluZEZpbHRlckZvclRoaXNJbnB1dChmaWx0ZXJzKTtcbiAgICBpZiAoZmlsdGVyVmFsdWUpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jb252ZXJ0UXVlcnlTdHJpbmdUb1Jhd01vZGVsVmFsdWUoZmlsdGVyVmFsdWUudmFsdWUpO1xuICAgICAgdGhpcy5pbml0aWFsVmFsdWVEaXJlY3RpdmUuc2V0SW5pdGlhbFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5uZ01vZGVsLnJlc2V0KCk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIGZpbmRGaWx0ZXJGb3JUaGlzSW5wdXQoZmlsdGVyczogRmlsdGVyW10pOiBGaWx0ZXIge1xuICAgIGZvciAoY29uc3QgZmlsdGVyIG9mIGZpbHRlcnMpIHtcbiAgICAgIGlmIChmaWx0ZXIua2V5ID09PSB0aGlzLnF1ZXJ5S2V5IHx8IGZpbHRlci5rZXkgPT09IHRoaXMuZXh0cmFjdE5hbWUoKSkge1xuICAgICAgICByZXR1cm4gZmlsdGVyO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGVPYnNlcnZhYmxlKCk6IE9ic2VydmFibGU8U2VhcmNoSW5wdXRTdGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxWYWx1ZURpcmVjdGl2ZS52YWx1ZUNoYW5nZXMkLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5fdW5zdWJzY3JpYmUkKSxcbiAgICAgIG1hcCh2YWx1ZSA9PiB7XG5cbiAgICAgICAgY29uc3QgcXVlcnlWYWx1ZSA9IHRoaXMuY29udmVydFJhd01vZGVsVmFsdWVUb1F1ZXJ5U3RyaW5nKHZhbHVlKTtcbiAgICAgICAgY29uc3QgcHJpc3RpbmUgPSAhdGhpcy5pc0F0dHJpYnV0ZVZhbHVlUHJlc2VudCh2YWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBTZWFyY2hJbnB1dFN0YXRlKFxuICAgICAgICAgIHRoaXMubmFtZSxcbiAgICAgICAgICBxdWVyeVZhbHVlLFxuICAgICAgICAgIHRoaXMucXVlcnlLZXkgfHwgdGhpcy5uYW1lLFxuICAgICAgICAgIHByaXN0aW5lXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRRdWVyeVN0cmluZ1RvUmF3TW9kZWxWYWx1ZShxdWVyeVN0cmluZzogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsKSB7XG4gICAgaWYgKE9iamVjdHMubm9uTnVsbChxdWVyeVN0cmluZykpIHtcbiAgICAgIHJldHVybiBxdWVyeVN0cmluZztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0UmF3TW9kZWxWYWx1ZVRvUXVlcnlTdHJpbmcobW9kZWw6IGFueSk6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCB7XG5cbiAgICBsZXQgcXVlcnlWYWx1ZTogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsID0gbnVsbDtcblxuICAgIGlmICh0aGlzLnZhbHVlQXNJZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgIHF1ZXJ5VmFsdWUgPSB0aGlzLmNoZWNrQW5kQ29udmVydEZhdWx0eVZhbHVlc1RvTnVsbChtb2RlbCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzQXR0cmlidXRlVmFsdWVQcmVzZW50KG1vZGVsKSkge1xuICAgICAgLy8gQXR0cmlidXRlIHZhbHVlIGlzIHByZXNlbnRcbiAgICAgIHF1ZXJ5VmFsdWUgPSB0aGlzLnJlc29sdmVWYWx1ZShtb2RlbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmhhc0ZhbGxiYWNrKSB7XG4gICAgICAgIHF1ZXJ5VmFsdWUgPSB0aGlzLmZhbGxiYWNrVmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHF1ZXJ5VmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZW1pdFN0YXRlKHN0YXRlOiBTZWFyY2hJbnB1dFN0YXRlKTogdm9pZCB7XG4gICAgdGhpcy5fc3RhdGUubmV4dChzdGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrQW5kQ29udmVydEZhdWx0eVZhbHVlc1RvTnVsbCh2YWx1ZTogYW55KSB7XG4gICAgbGV0IGZpeGVkVmFsdWUgPSB2YWx1ZTtcbiAgICBmaXhlZFZhbHVlID0gdGhpcy5jb252ZXJ0RW1wdHlBcnJheVRvTnVsbChmaXhlZFZhbHVlKTtcbiAgICBmaXhlZFZhbHVlID0gdGhpcy5jb252ZXJ0RW1wdHlTdHJpbmdUb051bGwoZml4ZWRWYWx1ZSk7XG5cbiAgICByZXR1cm4gZml4ZWRWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydEVtcHR5QXJyYXlUb051bGwodmFsdWU6IGFueSkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5ICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydEVtcHR5U3RyaW5nVG9OdWxsKHZhbHVlOiBhbnkpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgaXNBdHRyaWJ1dGVWYWx1ZVByZXNlbnQodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTZWFyY2hJbnB1dFN0YXRlLmlzVmFsdWVEZWZpbmVkKHZhbHVlKVxuICAgICAgJiYgKHZhbHVlICsgXCJcIikubGVuZ3RoICE9PSAwO1xuICB9XG5cblxuICBwcml2YXRlIHJlc29sdmVWYWx1ZSh2YWx1ZTogYW55KTogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsIHtcbiAgICBpZiAoT2JqZWN0cy5ub25OdWxsKHZhbHVlKSkge1xuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcblxuICAgICAgICBjb25zdCByZXNvbHZlZFZhbHVlcyA9IHZhbHVlXG4gICAgICAgICAgLm1hcCh2ID0+IHRoaXMucmVzb2x2ZVNpbmdsZVZhbHVlKHYpKVxuICAgICAgICAgIC5maWx0ZXIodiA9PiBPYmplY3RzLm5vbk51bGwodikpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmNvbmNhdElmTmVjZXNzYXJ5KHJlc29sdmVkVmFsdWVzKTtcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZVNpbmdsZVZhbHVlKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlU2luZ2xlVmFsdWUodmFsdWU6IGFueSk6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCB7XG4gICAgdmFsdWUgPSBQcm9wZXJ0eVBhdGhVdGlsLnJlc29sdmVWYWx1ZSh2YWx1ZSwgdGhpcy5yZXNvbHZlUGF0aCk7XG4gICAgdmFsdWUgPSB0aGlzLnZhbHVlVHJhbnNmb3JtID8gdGhpcy52YWx1ZVRyYW5zZm9ybSh2YWx1ZSkgOiB2YWx1ZTtcblxuXG4gICAgaWYgKE9iamVjdHMubm9uTnVsbCh2YWx1ZSkpIHtcbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgIC5maWx0ZXIoaSA9PiBPYmplY3RzLm5vbk51bGwoaSkpXG4gICAgICAgICAgLm1hcChpID0+IGkudG9TdHJpbmcoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0TmFtZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5uZ01vZGVsLm5hbWU7XG4gIH1cblxuICBwcml2YXRlIGNvbmNhdElmTmVjZXNzYXJ5KHZhbHVlczogKHN0cmluZyB8IHN0cmluZ1tdKVtdKTogYW55W10ge1xuICAgIGNvbnN0IGFycmF5cyA9IHZhbHVlcy5tYXAodiA9PiB7XG4gICAgICBpZiAodiBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFt2XTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gQ29sbGVjdGlvblV0aWwuZmxhdHRlbihhcnJheXMpO1xuICB9XG5cbn1cbiJdfQ==
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VhcmNoLWlucHV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvc2VhcmNoL2VsZGVyLXNlYXJjaC1pbnB1dC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNwRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFLckQsT0FBTyxFQUFVLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBSXZFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7O0FBRXpGOztHQUVHO0FBS0gsTUFBTSxPQUFPLHlCQUF5QjtJQThDcEM7Ozs7Z0ZBSTRFO0lBRTVFLFlBQ1UsYUFBMEMsRUFDbEMsT0FBZ0I7UUFEeEIsa0JBQWEsR0FBYixhQUFhLENBQTZCO1FBQ2xDLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFyRGxDLG9HQUFvRztRQUNuRiwwQkFBcUIsR0FBRyxJQUFJLDBCQUEwQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQXVDckUsV0FBTSxHQUFHLElBQUksZUFBZSxDQUFtQixn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QUFDLHFCQUFxQjtnQkFPckIsY0FBYztzQkFEcEIsS0FBSzt1QkFBQywyQkFBMkI7Z0JBUTNCLFdBQVc7c0JBRGpCLEtBQUs7dUJBQUMsa0JBQWtCO2dCQUlsQixVQUFVO3NCQURoQixLQUFLO3VCQUFDLFlBQVk7Z0JBT1osYUFBYTtzQkFEbkIsS0FBSzt1QkFBQywwQkFBMEI7Z0JBSTFCLFNBQVM7c0JBRGYsS0FBSzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgSG9zdCwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBMb2dnZXJGYWN0b3J5IH0gZnJvbSBcIkBlbGRlcmJ5dGUvdHMtbG9nZ2VyXCI7XG5pbXBvcnQgeyBFbGRlclNlYXJjaENvbnRleHREaXJlY3RpdmUgfSBmcm9tIFwiLi9lbGRlci1zZWFyY2gtY29udGV4dC5kaXJlY3RpdmVcIjtcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqcy9pbnRlcm5hbC9PYnNlcnZhYmxlXCI7XG5pbXBvcnQgeyBOZ01vZGVsIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBTZWFyY2hJbnB1dCB9IGZyb20gXCIuL21vZGVsL3NlYXJjaC1pbnB1dFwiO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgUHJvcGVydHlQYXRoVXRpbCB9IGZyb20gXCIuLi8uLi8uLi9jb21tb24vdXRpbHMvcHJvcGVydHktcGF0aC11dGlsXCI7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgU2VhcmNoSW5wdXRTdGF0ZSB9IGZyb20gXCIuL21vZGVsL3NlYXJjaC1pbnB1dC1zdGF0ZVwiO1xuaW1wb3J0IHsgT2JqZWN0cyB9IGZyb20gXCIuLi8uLi8uLi9jb21tb24vb2JqZWN0c1wiO1xuaW1wb3J0IHsgQ29sbGVjdGlvblV0aWwgfSBmcm9tIFwiLi4vLi4vLi4vY29tbW9uL3V0aWxzL2NvbGxlY3Rpb24tdXRpbFwiO1xuaW1wb3J0IHsgRmlsdGVyIH0gZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi9kYXRhL2ZpbHRlcnMvZmlsdGVyXCI7XG5pbXBvcnQgeyBMb2NhbFBhZ2VkRGF0YVNvdXJjZSB9IGZyb20gXCIuLi8uLi8uLi9jb21tb24vZGF0YS9kYXRhc291cmNlL2xvY2FsL2xvY2FsLXBhZ2VkLWRhdGEtc291cmNlXCI7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2NvZXJjaW9uXCI7XG5pbXBvcnQgeyBFbGRlckluaXRpYWxWYWx1ZURpcmVjdGl2ZSB9IGZyb20gXCIuLi9kaXJlY3RpdmVzL2VsZGVyLWluaXRpYWwtdmFsdWUuZGlyZWN0aXZlXCI7XG5cbi8qKlxuICogU2VhcmNoIG5hbWUgYWRhcHRlciBmb3IgaW5wdXQgY29udHJvbHMuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogXCJbZWxkZXJTZWFyY2hJbnB1dF1cIixcbiAgZXhwb3J0QXM6IFwiZWxkZXJTZWFyY2hJbnB1dFwiXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyU2VhcmNoSW5wdXREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIFNlYXJjaElucHV0IHtcbiAgLy9UT0RPOiBJbiBBbmd1bGFyIDE2LCB1c2Ugc3RhbmRhbG9uZSBkaXJlY3RpdmVzIGFuZCBob3N0IGNvbXBvbmVudCB0byBpbmplY3QgZGlyZWN0aXZlIHRvIGNvbXBvbmVudFxuICBwcml2YXRlIHJlYWRvbmx5IGluaXRpYWxWYWx1ZURpcmVjdGl2ZSA9IG5ldyBFbGRlckluaXRpYWxWYWx1ZURpcmVjdGl2ZSh0aGlzLm5nTW9kZWwpO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFVzdWFsbHkgdGhlIGNvbnRyb2wgbmFtZSBpcyB1c2VkLCB0aGlzIGFsbG93cyBhIGN1c3RvbSBxdWVyeSBrZXlcbiAgICovXG4gIEBJbnB1dChcImVsZGVyU2VhcmNoSW5wdXRLZXlcIilcbiAgcHVibGljIHF1ZXJ5S2V5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIChPcHRpb25hbCkgRnVuY3Rpb24gd2hpY2ggdHJhbnNmb3JtcyB0aGUgdmFsdWUgb2JqZWN0IHRvIGEgcXVlcnkgcGFyYW0gdmFsdWVcbiAgICovXG4gIEBJbnB1dChcImVsZGVyU2VhcmNoSW5wdXRUcmFuc2Zvcm1cIilcbiAgcHVibGljIHZhbHVlVHJhbnNmb3JtOiAoKHZhbHVlOiBhbnkpID0+IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCk7XG5cbiAgLyoqXG4gICAqIChPcHRpb25hbCwgRGVmYXVsdCkgUGF0aCBvbiB0aGUgdmFsdWUgb2JqZWN0IHRvIHVzZSBhcyBxdWVyeSBwYXJhbSB2YWx1ZVxuICAgKiAgdmFsdWUgPSBcInR5cGUuaWRcIlxuICAgKi9cbiAgQElucHV0KFwiZWxkZXJTZWFyY2hJbnB1dFwiKVxuICBwdWJsaWMgcmVzb2x2ZVBhdGg6IHN0cmluZztcblxuICBASW5wdXQoXCJkYXRhU291cmNlXCIpXG4gIHB1YmxpYyBkYXRhU291cmNlOiBMb2NhbFBhZ2VkRGF0YVNvdXJjZTxhbnk+O1xuXG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFVzZSB0aGlzIHZhbHVlIGZvciB0aGUgcXVlcnkgaWYgbm9uZSBpcyBwcm92aWRlZC5cbiAgICovXG4gIEBJbnB1dChcImVsZGVyU2VhcmNoSW5wdXRGYWxsYmFja1wiKVxuICBwdWJsaWMgZmFsbGJhY2tWYWx1ZTogc3RyaW5nIHwgc3RyaW5nW107XG5cbiAgQElucHV0KFwidmFsdWVBc0lkXCIpXG4gIHB1YmxpYyB2YWx1ZUFzSWQ6IEJvb2xlYW5JbnB1dDtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2VhcmNoSW5wdXRTdGF0ZT4oU2VhcmNoSW5wdXRTdGF0ZS51bmtub3duKCkpO1xuICBwcml2YXRlIF9leHRyYWN0ZWROYW1lOiBzdHJpbmcgfCBudWxsO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2VhcmNoQ29udGV4dDogRWxkZXJTZWFyY2hDb250ZXh0RGlyZWN0aXZlLFxuICAgIEBIb3N0KCkgcHJpdmF0ZSBuZ01vZGVsOiBOZ01vZGVsXG4gICkge1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUgQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9leHRyYWN0ZWROYW1lID0gdGhpcy5leHRyYWN0TmFtZSgpO1xuXG4gICAgdGhpcy5sb2cuZGVidWcodGhpcy5leHRyYWN0TmFtZSgpICsgXCJ8XCIgKyB0aGlzLnF1ZXJ5S2V5ICsgXCJ8XCIgKyB0aGlzLnJlc29sdmVQYXRoKTtcblxuICAgIHRoaXMuc2VhcmNoQ29udGV4dC5yZWdpc3Rlcih0aGlzKTtcblxuICAgIHRoaXMuc3RhdGVPYnNlcnZhYmxlKCkuc3Vic2NyaWJlKHN0YXRlID0+IHtcbiAgICAgIHRoaXMuZW1pdFN0YXRlKHN0YXRlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgZ2V0IHN0YXRlJCgpOiBPYnNlcnZhYmxlPFNlYXJjaElucHV0U3RhdGU+IHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGUuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXRlU25hcHNob3QoKTogU2VhcmNoSW5wdXRTdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5xdWVyeUtleSkge1xuICAgICAgcmV0dXJuIHRoaXMucXVlcnlLZXk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9leHRyYWN0ZWROYW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZXh0cmFjdGVkTmFtZTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBzZWFyY2ggbmFtZSBrZXkgbmFtZS5cIiArXG4gICAgICBcIiBFaXRoZXIgc3BlY2lmeSB0aGUgbmFtZSBwcm9wZXJ0eSBvciBleHBsaWNpdGx5IHNldCBbZWxkZXJTZWFyY2hJbnB1dEtleV0uXCIpO1xuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLm5nTW9kZWwudmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlYWRvbmx5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5nTW9kZWwuaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGhhc0ZhbGxiYWNrKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTZWFyY2hJbnB1dFN0YXRlLmlzVmFsdWVEZWZpbmVkKHRoaXMuZmFsbGJhY2tWYWx1ZSk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgYXBwbHlJbml0aWFsVmFsdWUocXVlcnlTdHJpbmc6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jb252ZXJ0UXVlcnlTdHJpbmdUb1Jhd01vZGVsVmFsdWUocXVlcnlTdHJpbmcpO1xuICAgIHRoaXMuaW5pdGlhbFZhbHVlRGlyZWN0aXZlLnNldEluaXRpYWxWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5uZ01vZGVsLnJlc2V0KCk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHN0YXRlT2JzZXJ2YWJsZSgpOiBPYnNlcnZhYmxlPFNlYXJjaElucHV0U3RhdGU+IHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsVmFsdWVEaXJlY3RpdmUudmFsdWVDaGFuZ2VzJC5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgbWFwKHZhbHVlID0+IHtcblxuICAgICAgICBjb25zdCBxdWVyeVZhbHVlID0gdGhpcy5jb252ZXJ0UmF3TW9kZWxWYWx1ZVRvUXVlcnlTdHJpbmcodmFsdWUpO1xuICAgICAgICBjb25zdCBwcmlzdGluZSA9ICF0aGlzLmlzQXR0cmlidXRlVmFsdWVQcmVzZW50KHZhbHVlKTtcblxuICAgICAgICByZXR1cm4gbmV3IFNlYXJjaElucHV0U3RhdGUoXG4gICAgICAgICAgdGhpcy5uYW1lLFxuICAgICAgICAgIHF1ZXJ5VmFsdWUsXG4gICAgICAgICAgdGhpcy5xdWVyeUtleSB8fCB0aGlzLm5hbWUsXG4gICAgICAgICAgcHJpc3RpbmVcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydFF1ZXJ5U3RyaW5nVG9SYXdNb2RlbFZhbHVlKHF1ZXJ5U3RyaW5nOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwpIHtcbiAgICBpZiAoT2JqZWN0cy5ub25OdWxsKHF1ZXJ5U3RyaW5nKSkge1xuICAgICAgcmV0dXJuIHF1ZXJ5U3RyaW5nO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRSYXdNb2RlbFZhbHVlVG9RdWVyeVN0cmluZyhtb2RlbDogYW55KTogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsIHtcblxuICAgIGxldCBxdWVyeVZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwgPSBudWxsO1xuXG4gICAgaWYgKHRoaXMudmFsdWVBc0lkICE9IHVuZGVmaW5lZCkge1xuICAgICAgcXVlcnlWYWx1ZSA9IHRoaXMuY2hlY2tBbmRDb252ZXJ0RmF1bHR5VmFsdWVzVG9OdWxsKG1vZGVsKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNBdHRyaWJ1dGVWYWx1ZVByZXNlbnQobW9kZWwpKSB7XG4gICAgICAvLyBBdHRyaWJ1dGUgdmFsdWUgaXMgcHJlc2VudFxuICAgICAgcXVlcnlWYWx1ZSA9IHRoaXMucmVzb2x2ZVZhbHVlKG1vZGVsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuaGFzRmFsbGJhY2spIHtcbiAgICAgICAgcXVlcnlWYWx1ZSA9IHRoaXMuZmFsbGJhY2tWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcXVlcnlWYWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0U3RhdGUoc3RhdGU6IFNlYXJjaElucHV0U3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGF0ZS5uZXh0KHN0YXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tBbmRDb252ZXJ0RmF1bHR5VmFsdWVzVG9OdWxsKHZhbHVlOiBhbnkpIHtcbiAgICBsZXQgZml4ZWRWYWx1ZSA9IHZhbHVlO1xuICAgIGZpeGVkVmFsdWUgPSB0aGlzLmNvbnZlcnRFbXB0eUFycmF5VG9OdWxsKGZpeGVkVmFsdWUpO1xuICAgIGZpeGVkVmFsdWUgPSB0aGlzLmNvbnZlcnRFbXB0eVN0cmluZ1RvTnVsbChmaXhlZFZhbHVlKTtcblxuICAgIHJldHVybiBmaXhlZFZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0RW1wdHlBcnJheVRvTnVsbCh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkgJiYgdmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0RW1wdHlTdHJpbmdUb051bGwodmFsdWU6IGFueSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgdmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0F0dHJpYnV0ZVZhbHVlUHJlc2VudCh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFNlYXJjaElucHV0U3RhdGUuaXNWYWx1ZURlZmluZWQodmFsdWUpXG4gICAgICAmJiAodmFsdWUgKyBcIlwiKS5sZW5ndGggIT09IDA7XG4gIH1cblxuXG4gIHByaXZhdGUgcmVzb2x2ZVZhbHVlKHZhbHVlOiBhbnkpOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwge1xuICAgIGlmIChPYmplY3RzLm5vbk51bGwodmFsdWUpKSB7XG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xuXG4gICAgICAgIGNvbnN0IHJlc29sdmVkVmFsdWVzID0gdmFsdWVcbiAgICAgICAgICAubWFwKHYgPT4gdGhpcy5yZXNvbHZlU2luZ2xlVmFsdWUodikpXG4gICAgICAgICAgLmZpbHRlcih2ID0+IE9iamVjdHMubm9uTnVsbCh2KSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY29uY2F0SWZOZWNlc3NhcnkocmVzb2x2ZWRWYWx1ZXMpO1xuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXNvbHZlU2luZ2xlVmFsdWUodmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVTaW5nbGVWYWx1ZSh2YWx1ZTogYW55KTogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsIHtcbiAgICB2YWx1ZSA9IFByb3BlcnR5UGF0aFV0aWwucmVzb2x2ZVZhbHVlKHZhbHVlLCB0aGlzLnJlc29sdmVQYXRoKTtcbiAgICB2YWx1ZSA9IHRoaXMudmFsdWVUcmFuc2Zvcm0gPyB0aGlzLnZhbHVlVHJhbnNmb3JtKHZhbHVlKSA6IHZhbHVlO1xuXG5cbiAgICBpZiAoT2JqZWN0cy5ub25OdWxsKHZhbHVlKSkge1xuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgLmZpbHRlcihpID0+IE9iamVjdHMubm9uTnVsbChpKSlcbiAgICAgICAgICAubWFwKGkgPT4gaS50b1N0cmluZygpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3ROYW1lKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLm5nTW9kZWwubmFtZTtcbiAgfVxuXG4gIHByaXZhdGUgY29uY2F0SWZOZWNlc3NhcnkodmFsdWVzOiAoc3RyaW5nIHwgc3RyaW5nW10pW10pOiBhbnlbXSB7XG4gICAgY29uc3QgYXJyYXlzID0gdmFsdWVzLm1hcCh2ID0+IHtcbiAgICAgIGlmICh2IGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gW3ZdO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBDb2xsZWN0aW9uVXRpbC5mbGF0dGVuKGFycmF5cyk7XG4gIH1cblxufVxuIl19
@@ -23,8 +23,8 @@ export { ElderSearchInputDirective } from "./elder-search-input.directive";
23
23
  export { ElderSearchBoxComponent } from "./search-box/elder-search-box.component";
24
24
  export { ElderSearchPanelComponent } from "./search-box/elder-search-panel.component";
25
25
  export class ElderSearchModule {
26
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderSearchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
27
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.9", ngImport: i0, type: ElderSearchModule, declarations: [ElderSearchContextDirective,
26
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: ElderSearchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
27
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.11", ngImport: i0, type: ElderSearchModule, declarations: [ElderSearchContextDirective,
28
28
  ElderSearchContextUrlBindingDirective,
29
29
  ElderSearchInputDirective,
30
30
  ElderInitialValueDirective,
@@ -41,7 +41,7 @@ export class ElderSearchModule {
41
41
  ElderSearchInputDirective,
42
42
  ElderSearchBoxComponent,
43
43
  ElderSearchPanelComponent] }); }
44
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderSearchModule, imports: [CommonModule, FormsModule,
44
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: ElderSearchModule, imports: [CommonModule, FormsModule,
45
45
  MatInputModule, MatButtonModule, MatIconModule,
46
46
  MatBadgeModule,
47
47
  A11yModule,
@@ -50,7 +50,7 @@ export class ElderSearchModule {
50
50
  ElderFormsDirectivesModule,
51
51
  TranslateModule] }); }
52
52
  }
53
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ElderSearchModule, decorators: [{
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: ElderSearchModule, decorators: [{
54
54
  type: NgModule,
55
55
  args: [{
56
56
  imports: [
@@ -80,4 +80,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
80
80
  ]
81
81
  }]
82
82
  }] });
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VhcmNoLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvc2VhcmNoL2VsZGVyLXNlYXJjaC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3JHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOztBQUd6RixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNyRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNsRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQWlDdEYsTUFBTSxPQUFPLGlCQUFpQjs4R0FBakIsaUJBQWlCOytHQUFqQixpQkFBaUIsaUJBZjFCLDJCQUEyQjtZQUMzQixxQ0FBcUM7WUFDckMseUJBQXlCO1lBQ3pCLDBCQUEwQjtZQUMxQix1QkFBdUI7WUFDdkIseUJBQXlCLGFBbkJ6QixZQUFZLEVBQUUsV0FBVztZQUV6QixjQUFjLEVBQUUsZUFBZSxFQUFFLGFBQWE7WUFDOUMsY0FBYztZQUVkLFVBQVU7WUFFVixrQkFBa0I7WUFDbEIsZ0JBQWdCO1lBQ2hCLDBCQUEwQjtZQUUxQixlQUFlLGFBV2YsMkJBQTJCO1lBQzNCLHFDQUFxQztZQUNyQyx5QkFBeUI7WUFDekIsdUJBQXVCO1lBQ3ZCLHlCQUF5QjsrR0FHaEIsaUJBQWlCLFlBN0IxQixZQUFZLEVBQUUsV0FBVztZQUV6QixjQUFjLEVBQUUsZUFBZSxFQUFFLGFBQWE7WUFDOUMsY0FBYztZQUVkLFVBQVU7WUFFVixrQkFBa0I7WUFDbEIsZ0JBQWdCO1lBQ2hCLDBCQUEwQjtZQUUxQixlQUFlOzsyRkFrQk4saUJBQWlCO2tCQS9CN0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWSxFQUFFLFdBQVc7d0JBRXpCLGNBQWMsRUFBRSxlQUFlLEVBQUUsYUFBYTt3QkFDOUMsY0FBYzt3QkFFZCxVQUFVO3dCQUVWLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3dCQUNoQiwwQkFBMEI7d0JBRTFCLGVBQWU7cUJBQ2hCO29CQUNELFlBQVksRUFBRTt3QkFDWiwyQkFBMkI7d0JBQzNCLHFDQUFxQzt3QkFDckMseUJBQXlCO3dCQUN6QiwwQkFBMEI7d0JBQzFCLHVCQUF1Qjt3QkFDdkIseUJBQXlCO3FCQUMxQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsMkJBQTJCO3dCQUMzQixxQ0FBcUM7d0JBQ3JDLHlCQUF5Qjt3QkFDekIsdUJBQXVCO3dCQUN2Qix5QkFBeUI7cUJBQzFCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgRWxkZXJTZWFyY2hDb250ZXh0RGlyZWN0aXZlIH0gZnJvbSBcIi4vZWxkZXItc2VhcmNoLWNvbnRleHQuZGlyZWN0aXZlXCI7XG5pbXBvcnQgeyBFbGRlclNlYXJjaElucHV0RGlyZWN0aXZlIH0gZnJvbSBcIi4vZWxkZXItc2VhcmNoLWlucHV0LmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHsgRWxkZXJTZWFyY2hCb3hDb21wb25lbnQgfSBmcm9tIFwiLi9zZWFyY2gtYm94L2VsZGVyLXNlYXJjaC1ib3guY29tcG9uZW50XCI7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgTWF0QmFkZ2VNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYmFkZ2VcIjtcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9idXR0b25cIjtcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXRcIjtcbmltcG9ydCB7IEExMXlNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2ExMXlcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBFbGRlck92ZXJsYXlNb2R1bGUgfSBmcm9tIFwiLi4vLi4vb3ZlcmxheXMvZWxkZXItb3ZlcmxheS5tb2R1bGVcIjtcbmltcG9ydCB7IEVsZGVyU2VhcmNoUGFuZWxDb21wb25lbnQgfSBmcm9tIFwiLi9zZWFyY2gtYm94L2VsZGVyLXNlYXJjaC1wYW5lbC5jb21wb25lbnRcIjtcbmltcG9ydCB7IEVsZGVyUGFuZWxNb2R1bGUgfSBmcm9tIFwiLi4vLi4vcGFuZWxzL2VsZGVyLXBhbmVsLm1vZHVsZVwiO1xuaW1wb3J0IHsgRWxkZXJGb3Jtc0RpcmVjdGl2ZXNNb2R1bGUgfSBmcm9tIFwiLi4vZGlyZWN0aXZlcy9lbGRlci1mb3Jtcy1kaXJlY3RpdmVzLm1vZHVsZVwiO1xuaW1wb3J0IHsgRWxkZXJTZWFyY2hDb250ZXh0VXJsQmluZGluZ0RpcmVjdGl2ZSB9IGZyb20gXCIuL2VsZGVyLXNlYXJjaC1jb250ZXh0LXVybC1iaW5kaW5nLmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHsgRWxkZXJJbml0aWFsVmFsdWVEaXJlY3RpdmUgfSBmcm9tIFwiLi4vZGlyZWN0aXZlcy9lbGRlci1pbml0aWFsLXZhbHVlLmRpcmVjdGl2ZVwiO1xuXG5cbmV4cG9ydCB7IEVsZGVyU2VhcmNoQ29udGV4dERpcmVjdGl2ZSB9IGZyb20gXCIuL2VsZGVyLXNlYXJjaC1jb250ZXh0LmRpcmVjdGl2ZVwiO1xuZXhwb3J0IHsgRWxkZXJTZWFyY2hDb250ZXh0VXJsQmluZGluZ0RpcmVjdGl2ZSB9IGZyb20gXCIuL2VsZGVyLXNlYXJjaC1jb250ZXh0LXVybC1iaW5kaW5nLmRpcmVjdGl2ZVwiO1xuZXhwb3J0IHsgRWxkZXJTZWFyY2hJbnB1dERpcmVjdGl2ZSB9IGZyb20gXCIuL2VsZGVyLXNlYXJjaC1pbnB1dC5kaXJlY3RpdmVcIjtcbmV4cG9ydCB7IEVsZGVyU2VhcmNoQm94Q29tcG9uZW50IH0gZnJvbSBcIi4vc2VhcmNoLWJveC9lbGRlci1zZWFyY2gtYm94LmNvbXBvbmVudFwiO1xuZXhwb3J0IHsgRWxkZXJTZWFyY2hQYW5lbENvbXBvbmVudCB9IGZyb20gXCIuL3NlYXJjaC1ib3gvZWxkZXItc2VhcmNoLXBhbmVsLmNvbXBvbmVudFwiO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSxcblxuICAgIE1hdElucHV0TW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0QmFkZ2VNb2R1bGUsXG5cbiAgICBBMTF5TW9kdWxlLFxuXG4gICAgRWxkZXJPdmVybGF5TW9kdWxlLFxuICAgIEVsZGVyUGFuZWxNb2R1bGUsXG4gICAgRWxkZXJGb3Jtc0RpcmVjdGl2ZXNNb2R1bGUsXG5cbiAgICBUcmFuc2xhdGVNb2R1bGVcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgRWxkZXJTZWFyY2hDb250ZXh0RGlyZWN0aXZlLFxuICAgIEVsZGVyU2VhcmNoQ29udGV4dFVybEJpbmRpbmdEaXJlY3RpdmUsXG4gICAgRWxkZXJTZWFyY2hJbnB1dERpcmVjdGl2ZSxcbiAgICBFbGRlckluaXRpYWxWYWx1ZURpcmVjdGl2ZSxcbiAgICBFbGRlclNlYXJjaEJveENvbXBvbmVudCxcbiAgICBFbGRlclNlYXJjaFBhbmVsQ29tcG9uZW50XG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBFbGRlclNlYXJjaENvbnRleHREaXJlY3RpdmUsXG4gICAgRWxkZXJTZWFyY2hDb250ZXh0VXJsQmluZGluZ0RpcmVjdGl2ZSxcbiAgICBFbGRlclNlYXJjaElucHV0RGlyZWN0aXZlLFxuICAgIEVsZGVyU2VhcmNoQm94Q29tcG9uZW50LFxuICAgIEVsZGVyU2VhcmNoUGFuZWxDb21wb25lbnRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBFbGRlclNlYXJjaE1vZHVsZSB7XG59XG4iXX0=
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VhcmNoLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvc2VhcmNoL2VsZGVyLXNlYXJjaC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3JHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOztBQUd6RixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNyRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNsRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQWlDdEYsTUFBTSxPQUFPLGlCQUFpQjsrR0FBakIsaUJBQWlCO2dIQUFqQixpQkFBaUIsaUJBZjFCLDJCQUEyQjtZQUMzQixxQ0FBcUM7WUFDckMseUJBQXlCO1lBQ3pCLDBCQUEwQjtZQUMxQix1QkFBdUI7WUFDdkIseUJBQXlCLGFBbkJ6QixZQUFZLEVBQUUsV0FBVztZQUV6QixjQUFjLEVBQUUsZUFBZSxFQUFFLGFBQWE7WUFDOUMsY0FBYztZQUVkLFVBQVU7WUFFVixrQkFBa0I7WUFDbEIsZ0JBQWdCO1lBQ2hCLDBCQUEwQjtZQUUxQixlQUFlLGFBV2YsMkJBQTJCO1lBQzNCLHFDQUFxQztZQUNyQyx5QkFBeUI7WUFDekIsdUJBQXVCO1lBQ3ZCLHlCQUF5QjtnSEFHaEIsaUJBQWlCLFlBN0IxQixZQUFZLEVBQUUsV0FBVztZQUV6QixjQUFjLEVBQUUsZUFBZSxFQUFFLGFBQWE7WUFDOUMsY0FBYztZQUVkLFVBQVU7WUFFVixrQkFBa0I7WUFDbEIsZ0JBQWdCO1lBQ2hCLDBCQUEwQjtZQUUxQixlQUFlOzs0RkFrQk4saUJBQWlCO2tCQS9CN0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWSxFQUFFLFdBQVc7d0JBRXpCLGNBQWMsRUFBRSxlQUFlLEVBQUUsYUFBYTt3QkFDOUMsY0FBYzt3QkFFZCxVQUFVO3dCQUVWLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3dCQUNoQiwwQkFBMEI7d0JBRTFCLGVBQWU7cUJBQ2hCO29CQUNELFlBQVksRUFBRTt3QkFDWiwyQkFBMkI7d0JBQzNCLHFDQUFxQzt3QkFDckMseUJBQXlCO3dCQUN6QiwwQkFBMEI7d0JBQzFCLHVCQUF1Qjt3QkFDdkIseUJBQXlCO3FCQUMxQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsMkJBQTJCO3dCQUMzQixxQ0FBcUM7d0JBQ3JDLHlCQUF5Qjt3QkFDekIsdUJBQXVCO3dCQUN2Qix5QkFBeUI7cUJBQzFCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgRWxkZXJTZWFyY2hDb250ZXh0RGlyZWN0aXZlIH0gZnJvbSBcIi4vZWxkZXItc2VhcmNoLWNvbnRleHQuZGlyZWN0aXZlXCI7XG5pbXBvcnQgeyBFbGRlclNlYXJjaElucHV0RGlyZWN0aXZlIH0gZnJvbSBcIi4vZWxkZXItc2VhcmNoLWlucHV0LmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHsgRWxkZXJTZWFyY2hCb3hDb21wb25lbnQgfSBmcm9tIFwiLi9zZWFyY2gtYm94L2VsZGVyLXNlYXJjaC1ib3guY29tcG9uZW50XCI7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgTWF0QmFkZ2VNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYmFkZ2VcIjtcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9idXR0b25cIjtcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXRcIjtcbmltcG9ydCB7IEExMXlNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2ExMXlcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBFbGRlck92ZXJsYXlNb2R1bGUgfSBmcm9tIFwiLi4vLi4vb3ZlcmxheXMvZWxkZXItb3ZlcmxheS5tb2R1bGVcIjtcbmltcG9ydCB7IEVsZGVyU2VhcmNoUGFuZWxDb21wb25lbnQgfSBmcm9tIFwiLi9zZWFyY2gtYm94L2VsZGVyLXNlYXJjaC1wYW5lbC5jb21wb25lbnRcIjtcbmltcG9ydCB7IEVsZGVyUGFuZWxNb2R1bGUgfSBmcm9tIFwiLi4vLi4vcGFuZWxzL2VsZGVyLXBhbmVsLm1vZHVsZVwiO1xuaW1wb3J0IHsgRWxkZXJGb3Jtc0RpcmVjdGl2ZXNNb2R1bGUgfSBmcm9tIFwiLi4vZGlyZWN0aXZlcy9lbGRlci1mb3Jtcy1kaXJlY3RpdmVzLm1vZHVsZVwiO1xuaW1wb3J0IHsgRWxkZXJTZWFyY2hDb250ZXh0VXJsQmluZGluZ0RpcmVjdGl2ZSB9IGZyb20gXCIuL2VsZGVyLXNlYXJjaC1jb250ZXh0LXVybC1iaW5kaW5nLmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHsgRWxkZXJJbml0aWFsVmFsdWVEaXJlY3RpdmUgfSBmcm9tIFwiLi4vZGlyZWN0aXZlcy9lbGRlci1pbml0aWFsLXZhbHVlLmRpcmVjdGl2ZVwiO1xuXG5cbmV4cG9ydCB7IEVsZGVyU2VhcmNoQ29udGV4dERpcmVjdGl2ZSB9IGZyb20gXCIuL2VsZGVyLXNlYXJjaC1jb250ZXh0LmRpcmVjdGl2ZVwiO1xuZXhwb3J0IHsgRWxkZXJTZWFyY2hDb250ZXh0VXJsQmluZGluZ0RpcmVjdGl2ZSB9IGZyb20gXCIuL2VsZGVyLXNlYXJjaC1jb250ZXh0LXVybC1iaW5kaW5nLmRpcmVjdGl2ZVwiO1xuZXhwb3J0IHsgRWxkZXJTZWFyY2hJbnB1dERpcmVjdGl2ZSB9IGZyb20gXCIuL2VsZGVyLXNlYXJjaC1pbnB1dC5kaXJlY3RpdmVcIjtcbmV4cG9ydCB7IEVsZGVyU2VhcmNoQm94Q29tcG9uZW50IH0gZnJvbSBcIi4vc2VhcmNoLWJveC9lbGRlci1zZWFyY2gtYm94LmNvbXBvbmVudFwiO1xuZXhwb3J0IHsgRWxkZXJTZWFyY2hQYW5lbENvbXBvbmVudCB9IGZyb20gXCIuL3NlYXJjaC1ib3gvZWxkZXItc2VhcmNoLXBhbmVsLmNvbXBvbmVudFwiO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSxcblxuICAgIE1hdElucHV0TW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0QmFkZ2VNb2R1bGUsXG5cbiAgICBBMTF5TW9kdWxlLFxuXG4gICAgRWxkZXJPdmVybGF5TW9kdWxlLFxuICAgIEVsZGVyUGFuZWxNb2R1bGUsXG4gICAgRWxkZXJGb3Jtc0RpcmVjdGl2ZXNNb2R1bGUsXG5cbiAgICBUcmFuc2xhdGVNb2R1bGVcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgRWxkZXJTZWFyY2hDb250ZXh0RGlyZWN0aXZlLFxuICAgIEVsZGVyU2VhcmNoQ29udGV4dFVybEJpbmRpbmdEaXJlY3RpdmUsXG4gICAgRWxkZXJTZWFyY2hJbnB1dERpcmVjdGl2ZSxcbiAgICBFbGRlckluaXRpYWxWYWx1ZURpcmVjdGl2ZSxcbiAgICBFbGRlclNlYXJjaEJveENvbXBvbmVudCxcbiAgICBFbGRlclNlYXJjaFBhbmVsQ29tcG9uZW50XG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBFbGRlclNlYXJjaENvbnRleHREaXJlY3RpdmUsXG4gICAgRWxkZXJTZWFyY2hDb250ZXh0VXJsQmluZGluZ0RpcmVjdGl2ZSxcbiAgICBFbGRlclNlYXJjaElucHV0RGlyZWN0aXZlLFxuICAgIEVsZGVyU2VhcmNoQm94Q29tcG9uZW50LFxuICAgIEVsZGVyU2VhcmNoUGFuZWxDb21wb25lbnRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBFbGRlclNlYXJjaE1vZHVsZSB7XG59XG4iXX0=