ngx-bootstrap 19.0.2 → 20.0.1
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.
- package/accordion/fesm2022/ngx-bootstrap-accordion.mjs +14 -14
- package/accordion/fesm2022/ngx-bootstrap-accordion.mjs.map +1 -1
- package/accordion/index.d.ts +72 -1
- package/alert/fesm2022/ngx-bootstrap-alert.mjs +11 -11
- package/alert/fesm2022/ngx-bootstrap-alert.mjs.map +1 -1
- package/alert/index.d.ts +53 -1
- package/buttons/fesm2022/ngx-bootstrap-buttons.mjs +14 -14
- package/buttons/fesm2022/ngx-bootstrap-buttons.mjs.map +1 -1
- package/buttons/index.d.ts +117 -1
- package/carousel/fesm2022/ngx-bootstrap-carousel.mjs +14 -14
- package/carousel/fesm2022/ngx-bootstrap-carousel.mjs.map +1 -1
- package/carousel/index.d.ts +238 -1
- package/chronos/fesm2022/ngx-bootstrap-chronos.mjs +1 -1
- package/chronos/fesm2022/ngx-bootstrap-chronos.mjs.map +1 -1
- package/chronos/index.d.ts +315 -1
- package/collapse/fesm2022/ngx-bootstrap-collapse.mjs +8 -8
- package/collapse/fesm2022/ngx-bootstrap-collapse.mjs.map +1 -1
- package/collapse/index.d.ts +55 -1
- package/component-loader/fesm2022/ngx-bootstrap-component-loader.mjs +4 -4
- package/component-loader/fesm2022/ngx-bootstrap-component-loader.mjs.map +1 -1
- package/component-loader/index.d.ts +127 -1
- package/datepicker/fesm2022/ngx-bootstrap-datepicker.mjs +88 -88
- package/datepicker/fesm2022/ngx-bootstrap-datepicker.mjs.map +1 -1
- package/datepicker/index.d.ts +1113 -1
- package/dropdown/fesm2022/ngx-bootstrap-dropdown.mjs +23 -23
- package/dropdown/fesm2022/ngx-bootstrap-dropdown.mjs.map +1 -1
- package/dropdown/index.d.ts +191 -1
- package/fesm2022/ngx-bootstrap.mjs.map +1 -1
- package/focus-trap/fesm2022/ngx-bootstrap-focus-trap.mjs +20 -20
- package/focus-trap/fesm2022/ngx-bootstrap-focus-trap.mjs.map +1 -1
- package/focus-trap/index.d.ts +274 -1
- package/index.d.ts +2 -2
- package/locale/fesm2022/ngx-bootstrap-locale.mjs.map +1 -1
- package/locale/index.d.ts +1 -1
- package/mini-ngrx/fesm2022/ngx-bootstrap-mini-ngrx.mjs.map +1 -1
- package/mini-ngrx/index.d.ts +34 -1
- package/modal/fesm2022/ngx-bootstrap-modal.mjs +23 -23
- package/modal/fesm2022/ngx-bootstrap-modal.mjs.map +1 -1
- package/modal/index.d.ts +277 -1
- package/package.json +8 -8
- package/pagination/fesm2022/ngx-bootstrap-pagination.mjs +14 -14
- package/pagination/fesm2022/ngx-bootstrap-pagination.mjs.map +1 -1
- package/pagination/index.d.ts +234 -1
- package/popover/fesm2022/ngx-bootstrap-popover.mjs +14 -14
- package/popover/fesm2022/ngx-bootstrap-popover.mjs.map +1 -1
- package/popover/index.d.ts +152 -1
- package/positioning/fesm2022/ngx-bootstrap-positioning.mjs +6 -5
- package/positioning/fesm2022/ngx-bootstrap-positioning.mjs.map +1 -1
- package/positioning/index.d.ts +134 -1
- package/progressbar/fesm2022/ngx-bootstrap-progressbar.mjs +14 -14
- package/progressbar/fesm2022/ngx-bootstrap-progressbar.mjs.map +1 -1
- package/progressbar/index.d.ts +72 -1
- package/rating/fesm2022/ngx-bootstrap-rating.mjs +11 -11
- package/rating/fesm2022/ngx-bootstrap-rating.mjs.map +1 -1
- package/rating/index.d.ts +60 -1
- package/schematics/utils/current_dependency_versions.json +1 -1
- package/sortable/fesm2022/ngx-bootstrap-sortable.mjs +11 -11
- package/sortable/fesm2022/ngx-bootstrap-sortable.mjs.map +1 -1
- package/sortable/index.d.ts +92 -1
- package/tabs/fesm2022/ngx-bootstrap-tabs.mjs +81 -23
- package/tabs/fesm2022/ngx-bootstrap-tabs.mjs.map +1 -1
- package/tabs/index.d.ts +123 -1
- package/timepicker/fesm2022/ngx-bootstrap-timepicker.mjs +17 -17
- package/timepicker/fesm2022/ngx-bootstrap-timepicker.mjs.map +1 -1
- package/timepicker/index.d.ts +243 -1
- package/tooltip/fesm2022/ngx-bootstrap-tooltip.mjs +14 -14
- package/tooltip/fesm2022/ngx-bootstrap-tooltip.mjs.map +1 -1
- package/tooltip/index.d.ts +154 -1
- package/typeahead/fesm2022/ngx-bootstrap-typeahead.mjs +15 -15
- package/typeahead/fesm2022/ngx-bootstrap-typeahead.mjs.map +1 -1
- package/typeahead/index.d.ts +341 -1
- package/utils/fesm2022/ngx-bootstrap-utils.mjs.map +1 -1
- package/utils/index.d.ts +116 -1
- package/accordion/accordion-group.component.d.ts +0 -36
- package/accordion/accordion.component.d.ts +0 -17
- package/accordion/accordion.config.d.ts +0 -12
- package/accordion/accordion.module.d.ts +0 -10
- package/accordion/public_api.d.ts +0 -4
- package/alert/alert.component.d.ts +0 -33
- package/alert/alert.config.d.ts +0 -11
- package/alert/alert.module.d.ts +0 -9
- package/alert/public_api.d.ts +0 -3
- package/buttons/button-checkbox.directive.d.ts +0 -31
- package/buttons/button-radio-group.directive.d.ts +0 -35
- package/buttons/button-radio.directive.d.ts +0 -51
- package/buttons/buttons.module.d.ts +0 -11
- package/buttons/public_api.d.ts +0 -4
- package/carousel/carousel.component.d.ts +0 -192
- package/carousel/carousel.config.d.ts +0 -13
- package/carousel/carousel.module.d.ts +0 -10
- package/carousel/models/index.d.ts +0 -9
- package/carousel/public_api.d.ts +0 -4
- package/carousel/slide.component.d.ts +0 -22
- package/carousel/utils.d.ts +0 -11
- package/chronos/create/check-overflow.d.ts +0 -2
- package/chronos/create/clone.d.ts +0 -1
- package/chronos/create/date-from-array.d.ts +0 -2
- package/chronos/create/from-anything.d.ts +0 -4
- package/chronos/create/from-array.d.ts +0 -2
- package/chronos/create/from-object.d.ts +0 -2
- package/chronos/create/from-string-and-array.d.ts +0 -2
- package/chronos/create/from-string-and-format.d.ts +0 -4
- package/chronos/create/from-string.d.ts +0 -4
- package/chronos/create/local.d.ts +0 -3
- package/chronos/create/parsing-flags.d.ts +0 -2
- package/chronos/create/parsing.types.d.ts +0 -64
- package/chronos/create/valid.d.ts +0 -6
- package/chronos/duration/bubble.d.ts +0 -4
- package/chronos/duration/constructor.d.ts +0 -21
- package/chronos/duration/create.d.ts +0 -8
- package/chronos/duration/humanize.d.ts +0 -5
- package/chronos/duration/valid.d.ts +0 -2
- package/chronos/format/format.d.ts +0 -11
- package/chronos/format.d.ts +0 -5
- package/chronos/i18n/ar.d.ts +0 -2
- package/chronos/i18n/bg.d.ts +0 -2
- package/chronos/i18n/ca.d.ts +0 -2
- package/chronos/i18n/cs.d.ts +0 -2
- package/chronos/i18n/da.d.ts +0 -2
- package/chronos/i18n/de.d.ts +0 -2
- package/chronos/i18n/en-gb.d.ts +0 -2
- package/chronos/i18n/es-do.d.ts +0 -2
- package/chronos/i18n/es-pr.d.ts +0 -2
- package/chronos/i18n/es-us.d.ts +0 -2
- package/chronos/i18n/es.d.ts +0 -2
- package/chronos/i18n/et.d.ts +0 -2
- package/chronos/i18n/fa.d.ts +0 -2
- package/chronos/i18n/fi.d.ts +0 -2
- package/chronos/i18n/fr-ca.d.ts +0 -2
- package/chronos/i18n/fr.d.ts +0 -2
- package/chronos/i18n/gl.d.ts +0 -2
- package/chronos/i18n/he.d.ts +0 -2
- package/chronos/i18n/hi.d.ts +0 -2
- package/chronos/i18n/hr.d.ts +0 -2
- package/chronos/i18n/hu.d.ts +0 -2
- package/chronos/i18n/id.d.ts +0 -2
- package/chronos/i18n/it.d.ts +0 -2
- package/chronos/i18n/ja.d.ts +0 -2
- package/chronos/i18n/ka.d.ts +0 -2
- package/chronos/i18n/kk.d.ts +0 -2
- package/chronos/i18n/ko.d.ts +0 -2
- package/chronos/i18n/lt.d.ts +0 -2
- package/chronos/i18n/lv.d.ts +0 -2
- package/chronos/i18n/mn.d.ts +0 -2
- package/chronos/i18n/nb.d.ts +0 -2
- package/chronos/i18n/nl-be.d.ts +0 -2
- package/chronos/i18n/nl.d.ts +0 -2
- package/chronos/i18n/pl.d.ts +0 -2
- package/chronos/i18n/pt-br.d.ts +0 -2
- package/chronos/i18n/ro.d.ts +0 -2
- package/chronos/i18n/ru.d.ts +0 -2
- package/chronos/i18n/sk.d.ts +0 -2
- package/chronos/i18n/sl.d.ts +0 -2
- package/chronos/i18n/sq.d.ts +0 -2
- package/chronos/i18n/sv.d.ts +0 -2
- package/chronos/i18n/th-be.d.ts +0 -2
- package/chronos/i18n/th.d.ts +0 -2
- package/chronos/i18n/tr.d.ts +0 -2
- package/chronos/i18n/uk.d.ts +0 -2
- package/chronos/i18n/vi.d.ts +0 -2
- package/chronos/i18n/zh-cn.d.ts +0 -2
- package/chronos/locale/calendar.d.ts +0 -8
- package/chronos/locale/locale.class.d.ts +0 -143
- package/chronos/locale/locale.defaults.d.ts +0 -11
- package/chronos/locale/locales.d.ts +0 -7
- package/chronos/moment/add-subtract.d.ts +0 -5
- package/chronos/moment/calendar.d.ts +0 -15
- package/chronos/moment/diff.d.ts +0 -3
- package/chronos/moment/min-max.d.ts +0 -2
- package/chronos/parse/regex.d.ts +0 -22
- package/chronos/parse/token.d.ts +0 -5
- package/chronos/public_api.d.ts +0 -60
- package/chronos/testing/chain.d.ts +0 -214
- package/chronos/types.d.ts +0 -36
- package/chronos/units/aliases.d.ts +0 -5
- package/chronos/units/constants.d.ts +0 -9
- package/chronos/units/day-of-month.d.ts +0 -1
- package/chronos/units/day-of-week.d.ts +0 -20
- package/chronos/units/day-of-year.d.ts +0 -3
- package/chronos/units/hour.d.ts +0 -1
- package/chronos/units/index.d.ts +0 -18
- package/chronos/units/millisecond.d.ts +0 -1
- package/chronos/units/minute.d.ts +0 -1
- package/chronos/units/month.d.ts +0 -2
- package/chronos/units/offset.d.ts +0 -10
- package/chronos/units/priorities.d.ts +0 -1
- package/chronos/units/quarter.d.ts +0 -3
- package/chronos/units/second.d.ts +0 -1
- package/chronos/units/timestamp.d.ts +0 -1
- package/chronos/units/timezone.d.ts +0 -3
- package/chronos/units/week-calendar-utils.d.ts +0 -9
- package/chronos/units/week-year.d.ts +0 -8
- package/chronos/units/week.d.ts +0 -6
- package/chronos/units/year.d.ts +0 -4
- package/chronos/utils/abs-ceil.d.ts +0 -1
- package/chronos/utils/abs-round.d.ts +0 -1
- package/chronos/utils/compare-arrays.d.ts +0 -1
- package/chronos/utils/date-compare.d.ts +0 -9
- package/chronos/utils/date-getters.d.ts +0 -18
- package/chronos/utils/date-setters.d.ts +0 -12
- package/chronos/utils/defaults.d.ts +0 -1
- package/chronos/utils/start-end-of.d.ts +0 -3
- package/chronos/utils/type-checks.d.ts +0 -12
- package/chronos/utils/zero-fill.d.ts +0 -1
- package/chronos/utils.d.ts +0 -2
- package/collapse/collapse-animations.d.ts +0 -4
- package/collapse/collapse.directive.d.ts +0 -45
- package/collapse/collapse.module.d.ts +0 -9
- package/collapse/public_api.d.ts +0 -2
- package/component-loader/bs-component-ref.class.d.ts +0 -5
- package/component-loader/component-loader.class.d.ts +0 -76
- package/component-loader/component-loader.factory.d.ts +0 -22
- package/component-loader/content-ref.class.d.ts +0 -11
- package/component-loader/listen-options.model.d.ts +0 -11
- package/component-loader/public_api.d.ts +0 -4
- package/datepicker/base/bs-datepicker-container.d.ts +0 -53
- package/datepicker/bs-datepicker-inline.component.d.ts +0 -66
- package/datepicker/bs-datepicker-inline.config.d.ts +0 -6
- package/datepicker/bs-datepicker-input.directive.d.ts +0 -32
- package/datepicker/bs-datepicker.component.d.ts +0 -135
- package/datepicker/bs-datepicker.config.d.ts +0 -166
- package/datepicker/bs-datepicker.module.d.ts +0 -30
- package/datepicker/bs-daterangepicker-inline.component.d.ts +0 -66
- package/datepicker/bs-daterangepicker-inline.config.d.ts +0 -9
- package/datepicker/bs-daterangepicker-input.directive.d.ts +0 -33
- package/datepicker/bs-daterangepicker.component.d.ts +0 -123
- package/datepicker/bs-daterangepicker.config.d.ts +0 -7
- package/datepicker/bs-locale.service.d.ts +0 -13
- package/datepicker/datepicker-animations.d.ts +0 -3
- package/datepicker/engine/calc-days-calendar.d.ts +0 -2
- package/datepicker/engine/flag-days-calendar.d.ts +0 -17
- package/datepicker/engine/flag-months-calendar.d.ts +0 -14
- package/datepicker/engine/flag-years-calendar.d.ts +0 -14
- package/datepicker/engine/format-days-calendar.d.ts +0 -4
- package/datepicker/engine/format-months-calendar.d.ts +0 -2
- package/datepicker/engine/format-years-calendar.d.ts +0 -4
- package/datepicker/engine/view-mode.d.ts +0 -2
- package/datepicker/models/index.d.ts +0 -102
- package/datepicker/public_api.d.ts +0 -17
- package/datepicker/reducer/_defaults.d.ts +0 -3
- package/datepicker/reducer/bs-datepicker.actions.d.ts +0 -48
- package/datepicker/reducer/bs-datepicker.effects.d.ts +0 -41
- package/datepicker/reducer/bs-datepicker.reducer.d.ts +0 -3
- package/datepicker/reducer/bs-datepicker.state.d.ts +0 -45
- package/datepicker/reducer/bs-datepicker.store.d.ts +0 -8
- package/datepicker/themes/bs/bs-calendar-layout.component.d.ts +0 -5
- package/datepicker/themes/bs/bs-current-date-view.component.d.ts +0 -6
- package/datepicker/themes/bs/bs-custom-dates-view.component.d.ts +0 -16
- package/datepicker/themes/bs/bs-datepicker-container.component.d.ts +0 -41
- package/datepicker/themes/bs/bs-datepicker-day-decorator.directive.d.ts +0 -14
- package/datepicker/themes/bs/bs-datepicker-inline-container.component.d.ts +0 -15
- package/datepicker/themes/bs/bs-datepicker-navigation-view.component.d.ts +0 -13
- package/datepicker/themes/bs/bs-daterangepicker-container.component.d.ts +0 -46
- package/datepicker/themes/bs/bs-daterangepicker-inline-container.component.d.ts +0 -15
- package/datepicker/themes/bs/bs-days-calendar-view.component.d.ts +0 -27
- package/datepicker/themes/bs/bs-months-calendar-view.component.d.ts +0 -16
- package/datepicker/themes/bs/bs-timepicker-view.component.d.ts +0 -8
- package/datepicker/themes/bs/bs-years-calendar-view.component.d.ts +0 -16
- package/datepicker/utils/bs-calendar-utils.d.ts +0 -15
- package/datepicker/utils/copy-time-utils.d.ts +0 -1
- package/datepicker/utils/matrix-utils.d.ts +0 -9
- package/dropdown/bs-dropdown-container.component.d.ts +0 -20
- package/dropdown/bs-dropdown-menu.directive.d.ts +0 -8
- package/dropdown/bs-dropdown-toggle.directive.d.ts +0 -21
- package/dropdown/bs-dropdown.config.d.ts +0 -14
- package/dropdown/bs-dropdown.directive.d.ts +0 -108
- package/dropdown/bs-dropdown.module.d.ts +0 -12
- package/dropdown/bs-dropdown.state.d.ts +0 -23
- package/dropdown/dropdown-animations.d.ts +0 -3
- package/dropdown/public_api.d.ts +0 -7
- package/focus-trap/boolean-property.d.ts +0 -14
- package/focus-trap/focus-trap-manager.d.ts +0 -26
- package/focus-trap/focus-trap.d.ts +0 -162
- package/focus-trap/focus-trap.module.d.ts +0 -10
- package/focus-trap/interactivity-checker.d.ts +0 -60
- package/focus-trap/platform.d.ts +0 -29
- package/focus-trap/public_api.d.ts +0 -3
- package/locale/public_api.d.ts +0 -46
- package/mini-ngrx/public_api.d.ts +0 -7
- package/mini-ngrx/state.class.d.ts +0 -8
- package/mini-ngrx/store.class.d.ts +0 -16
- package/modal/bs-modal-ref.service.d.ts +0 -30
- package/modal/bs-modal.service.d.ts +0 -50
- package/modal/modal-backdrop.component.d.ts +0 -17
- package/modal/modal-backdrop.options.d.ts +0 -4
- package/modal/modal-container.component.d.ts +0 -27
- package/modal/modal-options.class.d.ts +0 -63
- package/modal/modal.directive.d.ts +0 -90
- package/modal/modal.module.d.ts +0 -13
- package/modal/models/index.d.ts +0 -24
- package/modal/public_api.d.ts +0 -9
- package/pagination/models/index.d.ts +0 -53
- package/pagination/pager.component.d.ts +0 -78
- package/pagination/pagination.component.d.ts +0 -91
- package/pagination/pagination.config.d.ts +0 -9
- package/pagination/pagination.module.d.ts +0 -11
- package/pagination/public_api.d.ts +0 -5
- package/popover/popover-container.component.d.ts +0 -16
- package/popover/popover.config.d.ts +0 -30
- package/popover/popover.directive.d.ts +0 -98
- package/popover/popover.module.d.ts +0 -11
- package/popover/public_api.d.ts +0 -4
- package/positioning/models/index.d.ts +0 -96
- package/positioning/modifiers/arrow.d.ts +0 -2
- package/positioning/modifiers/flip.d.ts +0 -2
- package/positioning/modifiers/index.d.ts +0 -5
- package/positioning/modifiers/initData.d.ts +0 -2
- package/positioning/modifiers/preventOverflow.d.ts +0 -2
- package/positioning/modifiers/shift.d.ts +0 -2
- package/positioning/ng-positioning.d.ts +0 -12
- package/positioning/positioning.service.d.ts +0 -48
- package/positioning/public_api.d.ts +0 -4
- package/positioning/utils/checkMargin.d.ts +0 -3
- package/positioning/utils/computeAutoPlacement.d.ts +0 -2
- package/positioning/utils/findCommonOffsetParent.d.ts +0 -1
- package/positioning/utils/getBordersSize.d.ts +0 -4
- package/positioning/utils/getBoundaries.d.ts +0 -5
- package/positioning/utils/getBoundingClientRect.d.ts +0 -2
- package/positioning/utils/getClientRect.d.ts +0 -5
- package/positioning/utils/getFixedPositionOffsetParent.d.ts +0 -4
- package/positioning/utils/getOffsetParent.d.ts +0 -1
- package/positioning/utils/getOffsetRectRelativeToArbitraryNode.d.ts +0 -2
- package/positioning/utils/getOffsets.d.ts +0 -2
- package/positioning/utils/getOppositePlacement.d.ts +0 -4
- package/positioning/utils/getOppositeVariation.d.ts +0 -4
- package/positioning/utils/getOuterSizes.d.ts +0 -5
- package/positioning/utils/getParentNode.d.ts +0 -4
- package/positioning/utils/getReferenceOffsets.d.ts +0 -2
- package/positioning/utils/getRoot.d.ts +0 -4
- package/positioning/utils/getScroll.d.ts +0 -4
- package/positioning/utils/getScrollParent.d.ts +0 -1
- package/positioning/utils/getStyleComputedProperty.d.ts +0 -5
- package/positioning/utils/getTargetOffsets.d.ts +0 -2
- package/positioning/utils/getViewportOffsetRectRelativeToArtbitraryNode.d.ts +0 -2
- package/positioning/utils/getWindowSizes.d.ts +0 -4
- package/positioning/utils/index.d.ts +0 -23
- package/positioning/utils/isFixed.d.ts +0 -1
- package/positioning/utils/isModifierEnabled.d.ts +0 -5
- package/positioning/utils/isNumeric.d.ts +0 -5
- package/positioning/utils/isOffsetContainer.d.ts +0 -1
- package/positioning/utils/setStyles.d.ts +0 -5
- package/positioning/utils/updateContainerClass.d.ts +0 -6
- package/progressbar/bar.component.d.ts +0 -24
- package/progressbar/progressbar-type.interface.d.ts +0 -7
- package/progressbar/progressbar.component.d.ts +0 -23
- package/progressbar/progressbar.config.d.ts +0 -9
- package/progressbar/progressbar.module.d.ts +0 -10
- package/progressbar/public_api.d.ts +0 -5
- package/rating/models/index.d.ts +0 -4
- package/rating/public_api.d.ts +0 -3
- package/rating/rating.component.d.ts +0 -40
- package/rating/rating.config.d.ts +0 -8
- package/rating/rating.module.d.ts +0 -9
- package/sortable/draggable-item.d.ts +0 -8
- package/sortable/draggable-item.service.d.ts +0 -13
- package/sortable/public_api.d.ts +0 -4
- package/sortable/sortable.component.d.ts +0 -62
- package/sortable/sortable.module.d.ts +0 -9
- package/tabs/ng-transclude.directive.d.ts +0 -11
- package/tabs/public_api.d.ts +0 -6
- package/tabs/tab-heading.directive.d.ts +0 -10
- package/tabs/tab.directive.d.ts +0 -39
- package/tabs/tabs.module.d.ts +0 -13
- package/tabs/tabset.component.d.ts +0 -44
- package/tabs/tabset.config.d.ts +0 -11
- package/timepicker/models/index.d.ts +0 -7
- package/timepicker/public_api.d.ts +0 -5
- package/timepicker/reducer/timepicker.actions.d.ts +0 -28
- package/timepicker/reducer/timepicker.reducer.d.ts +0 -9
- package/timepicker/reducer/timepicker.store.d.ts +0 -8
- package/timepicker/timepicker-controls.util.d.ts +0 -7
- package/timepicker/timepicker.component.d.ts +0 -116
- package/timepicker/timepicker.config.d.ts +0 -48
- package/timepicker/timepicker.models.d.ts +0 -35
- package/timepicker/timepicker.module.d.ts +0 -9
- package/timepicker/timepicker.utils.d.ts +0 -19
- package/tooltip/public_api.d.ts +0 -4
- package/tooltip/tooltip-container.component.d.ts +0 -18
- package/tooltip/tooltip.config.d.ts +0 -16
- package/tooltip/tooltip.directive.d.ts +0 -113
- package/tooltip/tooltip.module.d.ts +0 -11
- package/typeahead/latin-map.d.ts +0 -3
- package/typeahead/models/index.d.ts +0 -41
- package/typeahead/public_api.d.ts +0 -10
- package/typeahead/typeahead-animations.d.ts +0 -3
- package/typeahead/typeahead-container.component.d.ts +0 -66
- package/typeahead/typeahead-match.class.d.ts +0 -8
- package/typeahead/typeahead-options.class.d.ts +0 -7
- package/typeahead/typeahead-order.class.d.ts +0 -6
- package/typeahead/typeahead-utils.d.ts +0 -4
- package/typeahead/typeahead.config.d.ts +0 -26
- package/typeahead/typeahead.directive.d.ts +0 -176
- package/typeahead/typeahead.module.d.ts +0 -11
- package/utils/decorators.d.ts +0 -1
- package/utils/facade/browser.d.ts +0 -23
- package/utils/linked-list.class.d.ts +0 -35
- package/utils/public_api.d.ts +0 -9
- package/utils/theme-provider.d.ts +0 -18
- package/utils/trigger.class.d.ts +0 -10
- package/utils/triggers.d.ts +0 -22
- package/utils/utils.class.d.ts +0 -9
- package/utils/warn-once.d.ts +0 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ngx-bootstrap-typeahead.mjs","sources":["../../../../src/typeahead/latin-map.ts","../../../../src/typeahead/typeahead-options.class.ts","../../../../src/typeahead/typeahead-match.class.ts","../../../../src/typeahead/typeahead-utils.ts","../../../../src/typeahead/typeahead-animations.ts","../../../../src/typeahead/typeahead-container.component.ts","../../../../src/typeahead/typeahead-container.component.html","../../../../src/typeahead/typeahead.config.ts","../../../../src/typeahead/typeahead.directive.ts","../../../../src/typeahead/typeahead.module.ts","../../../../src/typeahead/ngx-bootstrap-typeahead.ts"],"sourcesContent":["export const latinMap: { [key: string]: string } = {\n 'Á': 'A',\n 'Ă': 'A',\n 'Ắ': 'A',\n 'Ặ': 'A',\n 'Ằ': 'A',\n 'Ẳ': 'A',\n 'Ẵ': 'A',\n 'Ǎ': 'A',\n 'Â': 'A',\n 'Ấ': 'A',\n 'Ậ': 'A',\n 'Ầ': 'A',\n 'Ẩ': 'A',\n 'Ẫ': 'A',\n 'Ä': 'A',\n 'Ǟ': 'A',\n 'Ȧ': 'A',\n 'Ǡ': 'A',\n 'Ạ': 'A',\n 'Ȁ': 'A',\n 'À': 'A',\n 'Ả': 'A',\n 'Ȃ': 'A',\n 'Ā': 'A',\n 'Ą': 'A',\n 'Å': 'A',\n 'Ǻ': 'A',\n 'Ḁ': 'A',\n 'Ⱥ': 'A',\n 'Ã': 'A',\n 'Ꜳ': 'AA',\n 'Æ': 'AE',\n 'Ǽ': 'AE',\n 'Ǣ': 'AE',\n 'Ꜵ': 'AO',\n 'Ꜷ': 'AU',\n 'Ꜹ': 'AV',\n 'Ꜻ': 'AV',\n 'Ꜽ': 'AY',\n 'Ḃ': 'B',\n 'Ḅ': 'B',\n 'Ɓ': 'B',\n 'Ḇ': 'B',\n 'Ƀ': 'B',\n 'Ƃ': 'B',\n 'Ć': 'C',\n 'Č': 'C',\n 'Ç': 'C',\n 'Ḉ': 'C',\n 'Ĉ': 'C',\n 'Ċ': 'C',\n 'Ƈ': 'C',\n 'Ȼ': 'C',\n 'Ď': 'D',\n 'Ḑ': 'D',\n 'Ḓ': 'D',\n 'Ḋ': 'D',\n 'Ḍ': 'D',\n 'Ɗ': 'D',\n 'Ḏ': 'D',\n 'Dz': 'D',\n 'Dž': 'D',\n 'Đ': 'D',\n 'Ƌ': 'D',\n 'DZ': 'DZ',\n 'DŽ': 'DZ',\n 'É': 'E',\n 'Ĕ': 'E',\n 'Ě': 'E',\n 'Ȩ': 'E',\n 'Ḝ': 'E',\n 'Ê': 'E',\n 'Ế': 'E',\n 'Ệ': 'E',\n 'Ề': 'E',\n 'Ể': 'E',\n 'Ễ': 'E',\n 'Ḙ': 'E',\n 'Ë': 'E',\n 'Ė': 'E',\n 'Ẹ': 'E',\n 'Ȅ': 'E',\n 'È': 'E',\n 'Ẻ': 'E',\n 'Ȇ': 'E',\n 'Ē': 'E',\n 'Ḗ': 'E',\n 'Ḕ': 'E',\n 'Ę': 'E',\n 'Ɇ': 'E',\n 'Ẽ': 'E',\n 'Ḛ': 'E',\n 'Ꝫ': 'ET',\n 'Ḟ': 'F',\n 'Ƒ': 'F',\n 'Ǵ': 'G',\n 'Ğ': 'G',\n 'Ǧ': 'G',\n 'Ģ': 'G',\n 'Ĝ': 'G',\n 'Ġ': 'G',\n 'Ɠ': 'G',\n 'Ḡ': 'G',\n 'Ǥ': 'G',\n 'Ḫ': 'H',\n 'Ȟ': 'H',\n 'Ḩ': 'H',\n 'Ĥ': 'H',\n 'Ⱨ': 'H',\n 'Ḧ': 'H',\n 'Ḣ': 'H',\n 'Ḥ': 'H',\n 'Ħ': 'H',\n 'Í': 'I',\n 'Ĭ': 'I',\n 'Ǐ': 'I',\n 'Î': 'I',\n 'Ï': 'I',\n 'Ḯ': 'I',\n 'İ': 'I',\n 'Ị': 'I',\n 'Ȉ': 'I',\n 'Ì': 'I',\n 'Ỉ': 'I',\n 'Ȋ': 'I',\n 'Ī': 'I',\n 'Į': 'I',\n 'Ɨ': 'I',\n 'Ĩ': 'I',\n 'Ḭ': 'I',\n 'Ꝺ': 'D',\n 'Ꝼ': 'F',\n 'Ᵹ': 'G',\n 'Ꞃ': 'R',\n 'Ꞅ': 'S',\n 'Ꞇ': 'T',\n 'Ꝭ': 'IS',\n 'Ĵ': 'J',\n 'Ɉ': 'J',\n 'Ḱ': 'K',\n 'Ǩ': 'K',\n 'Ķ': 'K',\n 'Ⱪ': 'K',\n 'Ꝃ': 'K',\n 'Ḳ': 'K',\n 'Ƙ': 'K',\n 'Ḵ': 'K',\n 'Ꝁ': 'K',\n 'Ꝅ': 'K',\n 'Ĺ': 'L',\n 'Ƚ': 'L',\n 'Ľ': 'L',\n 'Ļ': 'L',\n 'Ḽ': 'L',\n 'Ḷ': 'L',\n 'Ḹ': 'L',\n 'Ⱡ': 'L',\n 'Ꝉ': 'L',\n 'Ḻ': 'L',\n 'Ŀ': 'L',\n 'Ɫ': 'L',\n 'Lj': 'L',\n 'Ł': 'L',\n 'LJ': 'LJ',\n 'Ḿ': 'M',\n 'Ṁ': 'M',\n 'Ṃ': 'M',\n 'Ɱ': 'M',\n 'Ń': 'N',\n 'Ň': 'N',\n 'Ņ': 'N',\n 'Ṋ': 'N',\n 'Ṅ': 'N',\n 'Ṇ': 'N',\n 'Ǹ': 'N',\n 'Ɲ': 'N',\n 'Ṉ': 'N',\n 'Ƞ': 'N',\n 'Nj': 'N',\n 'Ñ': 'N',\n 'NJ': 'NJ',\n 'Ó': 'O',\n 'Ŏ': 'O',\n 'Ǒ': 'O',\n 'Ô': 'O',\n 'Ố': 'O',\n 'Ộ': 'O',\n 'Ồ': 'O',\n 'Ổ': 'O',\n 'Ỗ': 'O',\n 'Ö': 'O',\n 'Ȫ': 'O',\n 'Ȯ': 'O',\n 'Ȱ': 'O',\n 'Ọ': 'O',\n 'Ő': 'O',\n 'Ȍ': 'O',\n 'Ò': 'O',\n 'Ỏ': 'O',\n 'Ơ': 'O',\n 'Ớ': 'O',\n 'Ợ': 'O',\n 'Ờ': 'O',\n 'Ở': 'O',\n 'Ỡ': 'O',\n 'Ȏ': 'O',\n 'Ꝋ': 'O',\n 'Ꝍ': 'O',\n 'Ō': 'O',\n 'Ṓ': 'O',\n 'Ṑ': 'O',\n 'Ɵ': 'O',\n 'Ǫ': 'O',\n 'Ǭ': 'O',\n 'Ø': 'O',\n 'Ǿ': 'O',\n 'Õ': 'O',\n 'Ṍ': 'O',\n 'Ṏ': 'O',\n 'Ȭ': 'O',\n 'Ƣ': 'OI',\n 'Ꝏ': 'OO',\n 'Ɛ': 'E',\n 'Ɔ': 'O',\n 'Ȣ': 'OU',\n 'Ṕ': 'P',\n 'Ṗ': 'P',\n 'Ꝓ': 'P',\n 'Ƥ': 'P',\n 'Ꝕ': 'P',\n 'Ᵽ': 'P',\n 'Ꝑ': 'P',\n 'Ꝙ': 'Q',\n 'Ꝗ': 'Q',\n 'Ŕ': 'R',\n 'Ř': 'R',\n 'Ŗ': 'R',\n 'Ṙ': 'R',\n 'Ṛ': 'R',\n 'Ṝ': 'R',\n 'Ȑ': 'R',\n 'Ȓ': 'R',\n 'Ṟ': 'R',\n 'Ɍ': 'R',\n 'Ɽ': 'R',\n 'Ꜿ': 'C',\n 'Ǝ': 'E',\n 'Ś': 'S',\n 'Ṥ': 'S',\n 'Š': 'S',\n 'Ṧ': 'S',\n 'Ş': 'S',\n 'Ŝ': 'S',\n 'Ș': 'S',\n 'Ṡ': 'S',\n 'Ṣ': 'S',\n 'Ṩ': 'S',\n 'Ť': 'T',\n 'Ţ': 'T',\n 'Ṱ': 'T',\n 'Ț': 'T',\n 'Ⱦ': 'T',\n 'Ṫ': 'T',\n 'Ṭ': 'T',\n 'Ƭ': 'T',\n 'Ṯ': 'T',\n 'Ʈ': 'T',\n 'Ŧ': 'T',\n 'Ɐ': 'A',\n 'Ꞁ': 'L',\n 'Ɯ': 'M',\n 'Ʌ': 'V',\n 'Ꜩ': 'TZ',\n 'Ú': 'U',\n 'Ŭ': 'U',\n 'Ǔ': 'U',\n 'Û': 'U',\n 'Ṷ': 'U',\n 'Ü': 'U',\n 'Ǘ': 'U',\n 'Ǚ': 'U',\n 'Ǜ': 'U',\n 'Ǖ': 'U',\n 'Ṳ': 'U',\n 'Ụ': 'U',\n 'Ű': 'U',\n 'Ȕ': 'U',\n 'Ù': 'U',\n 'Ủ': 'U',\n 'Ư': 'U',\n 'Ứ': 'U',\n 'Ự': 'U',\n 'Ừ': 'U',\n 'Ử': 'U',\n 'Ữ': 'U',\n 'Ȗ': 'U',\n 'Ū': 'U',\n 'Ṻ': 'U',\n 'Ų': 'U',\n 'Ů': 'U',\n 'Ũ': 'U',\n 'Ṹ': 'U',\n 'Ṵ': 'U',\n 'Ꝟ': 'V',\n 'Ṿ': 'V',\n 'Ʋ': 'V',\n 'Ṽ': 'V',\n 'Ꝡ': 'VY',\n 'Ẃ': 'W',\n 'Ŵ': 'W',\n 'Ẅ': 'W',\n 'Ẇ': 'W',\n 'Ẉ': 'W',\n 'Ẁ': 'W',\n 'Ⱳ': 'W',\n 'Ẍ': 'X',\n 'Ẋ': 'X',\n 'Ý': 'Y',\n 'Ŷ': 'Y',\n 'Ÿ': 'Y',\n 'Ẏ': 'Y',\n 'Ỵ': 'Y',\n 'Ỳ': 'Y',\n 'Ƴ': 'Y',\n 'Ỷ': 'Y',\n 'Ỿ': 'Y',\n 'Ȳ': 'Y',\n 'Ɏ': 'Y',\n 'Ỹ': 'Y',\n 'Ź': 'Z',\n 'Ž': 'Z',\n 'Ẑ': 'Z',\n 'Ⱬ': 'Z',\n 'Ż': 'Z',\n 'Ẓ': 'Z',\n 'Ȥ': 'Z',\n 'Ẕ': 'Z',\n 'Ƶ': 'Z',\n 'IJ': 'IJ',\n 'Œ': 'OE',\n 'ᴀ': 'A',\n 'ᴁ': 'AE',\n 'ʙ': 'B',\n 'ᴃ': 'B',\n 'ᴄ': 'C',\n 'ᴅ': 'D',\n 'ᴇ': 'E',\n 'ꜰ': 'F',\n 'ɢ': 'G',\n 'ʛ': 'G',\n 'ʜ': 'H',\n 'ɪ': 'I',\n 'ʁ': 'R',\n 'ᴊ': 'J',\n 'ᴋ': 'K',\n 'ʟ': 'L',\n 'ᴌ': 'L',\n 'ᴍ': 'M',\n 'ɴ': 'N',\n 'ᴏ': 'O',\n 'ɶ': 'OE',\n 'ᴐ': 'O',\n 'ᴕ': 'OU',\n 'ᴘ': 'P',\n 'ʀ': 'R',\n 'ᴎ': 'N',\n 'ᴙ': 'R',\n 'ꜱ': 'S',\n 'ᴛ': 'T',\n 'ⱻ': 'E',\n 'ᴚ': 'R',\n 'ᴜ': 'U',\n 'ᴠ': 'V',\n 'ᴡ': 'W',\n 'ʏ': 'Y',\n 'ᴢ': 'Z',\n 'á': 'a',\n 'ă': 'a',\n 'ắ': 'a',\n 'ặ': 'a',\n 'ằ': 'a',\n 'ẳ': 'a',\n 'ẵ': 'a',\n 'ǎ': 'a',\n 'â': 'a',\n 'ấ': 'a',\n 'ậ': 'a',\n 'ầ': 'a',\n 'ẩ': 'a',\n 'ẫ': 'a',\n 'ä': 'a',\n 'ǟ': 'a',\n 'ȧ': 'a',\n 'ǡ': 'a',\n 'ạ': 'a',\n 'ȁ': 'a',\n 'à': 'a',\n 'ả': 'a',\n 'ȃ': 'a',\n 'ā': 'a',\n 'ą': 'a',\n 'ᶏ': 'a',\n 'ẚ': 'a',\n 'å': 'a',\n 'ǻ': 'a',\n 'ḁ': 'a',\n 'ⱥ': 'a',\n 'ã': 'a',\n 'ꜳ': 'aa',\n 'æ': 'ae',\n 'ǽ': 'ae',\n 'ǣ': 'ae',\n 'ꜵ': 'ao',\n 'ꜷ': 'au',\n 'ꜹ': 'av',\n 'ꜻ': 'av',\n 'ꜽ': 'ay',\n 'ḃ': 'b',\n 'ḅ': 'b',\n 'ɓ': 'b',\n 'ḇ': 'b',\n 'ᵬ': 'b',\n 'ᶀ': 'b',\n 'ƀ': 'b',\n 'ƃ': 'b',\n 'ɵ': 'o',\n 'ć': 'c',\n 'č': 'c',\n 'ç': 'c',\n 'ḉ': 'c',\n 'ĉ': 'c',\n 'ɕ': 'c',\n 'ċ': 'c',\n 'ƈ': 'c',\n 'ȼ': 'c',\n 'ď': 'd',\n 'ḑ': 'd',\n 'ḓ': 'd',\n 'ȡ': 'd',\n 'ḋ': 'd',\n 'ḍ': 'd',\n 'ɗ': 'd',\n 'ᶑ': 'd',\n 'ḏ': 'd',\n 'ᵭ': 'd',\n 'ᶁ': 'd',\n 'đ': 'd',\n 'ɖ': 'd',\n 'ƌ': 'd',\n 'ı': 'i',\n 'ȷ': 'j',\n 'ɟ': 'j',\n 'ʄ': 'j',\n 'dz': 'dz',\n 'dž': 'dz',\n 'é': 'e',\n 'ĕ': 'e',\n 'ě': 'e',\n 'ȩ': 'e',\n 'ḝ': 'e',\n 'ê': 'e',\n 'ế': 'e',\n 'ệ': 'e',\n 'ề': 'e',\n 'ể': 'e',\n 'ễ': 'e',\n 'ḙ': 'e',\n 'ë': 'e',\n 'ė': 'e',\n 'ẹ': 'e',\n 'ȅ': 'e',\n 'è': 'e',\n 'ẻ': 'e',\n 'ȇ': 'e',\n 'ē': 'e',\n 'ḗ': 'e',\n 'ḕ': 'e',\n 'ⱸ': 'e',\n 'ę': 'e',\n 'ᶒ': 'e',\n 'ɇ': 'e',\n 'ẽ': 'e',\n 'ḛ': 'e',\n 'ꝫ': 'et',\n 'ḟ': 'f',\n 'ƒ': 'f',\n 'ᵮ': 'f',\n 'ᶂ': 'f',\n 'ǵ': 'g',\n 'ğ': 'g',\n 'ǧ': 'g',\n 'ģ': 'g',\n 'ĝ': 'g',\n 'ġ': 'g',\n 'ɠ': 'g',\n 'ḡ': 'g',\n 'ᶃ': 'g',\n 'ǥ': 'g',\n 'ḫ': 'h',\n 'ȟ': 'h',\n 'ḩ': 'h',\n 'ĥ': 'h',\n 'ⱨ': 'h',\n 'ḧ': 'h',\n 'ḣ': 'h',\n 'ḥ': 'h',\n 'ɦ': 'h',\n 'ẖ': 'h',\n 'ħ': 'h',\n 'ƕ': 'hv',\n 'í': 'i',\n 'ĭ': 'i',\n 'ǐ': 'i',\n 'î': 'i',\n 'ï': 'i',\n 'ḯ': 'i',\n 'ị': 'i',\n 'ȉ': 'i',\n 'ì': 'i',\n 'ỉ': 'i',\n 'ȋ': 'i',\n 'ī': 'i',\n 'į': 'i',\n 'ᶖ': 'i',\n 'ɨ': 'i',\n 'ĩ': 'i',\n 'ḭ': 'i',\n 'ꝺ': 'd',\n 'ꝼ': 'f',\n 'ᵹ': 'g',\n 'ꞃ': 'r',\n 'ꞅ': 's',\n 'ꞇ': 't',\n 'ꝭ': 'is',\n 'ǰ': 'j',\n 'ĵ': 'j',\n 'ʝ': 'j',\n 'ɉ': 'j',\n 'ḱ': 'k',\n 'ǩ': 'k',\n 'ķ': 'k',\n 'ⱪ': 'k',\n 'ꝃ': 'k',\n 'ḳ': 'k',\n 'ƙ': 'k',\n 'ḵ': 'k',\n 'ᶄ': 'k',\n 'ꝁ': 'k',\n 'ꝅ': 'k',\n 'ĺ': 'l',\n 'ƚ': 'l',\n 'ɬ': 'l',\n 'ľ': 'l',\n 'ļ': 'l',\n 'ḽ': 'l',\n 'ȴ': 'l',\n 'ḷ': 'l',\n 'ḹ': 'l',\n 'ⱡ': 'l',\n 'ꝉ': 'l',\n 'ḻ': 'l',\n 'ŀ': 'l',\n 'ɫ': 'l',\n 'ᶅ': 'l',\n 'ɭ': 'l',\n 'ł': 'l',\n 'lj': 'lj',\n 'ſ': 's',\n 'ẜ': 's',\n 'ẛ': 's',\n 'ẝ': 's',\n 'ḿ': 'm',\n 'ṁ': 'm',\n 'ṃ': 'm',\n 'ɱ': 'm',\n 'ᵯ': 'm',\n 'ᶆ': 'm',\n 'ń': 'n',\n 'ň': 'n',\n 'ņ': 'n',\n 'ṋ': 'n',\n 'ȵ': 'n',\n 'ṅ': 'n',\n 'ṇ': 'n',\n 'ǹ': 'n',\n 'ɲ': 'n',\n 'ṉ': 'n',\n 'ƞ': 'n',\n 'ᵰ': 'n',\n 'ᶇ': 'n',\n 'ɳ': 'n',\n 'ñ': 'n',\n 'nj': 'nj',\n 'ó': 'o',\n 'ŏ': 'o',\n 'ǒ': 'o',\n 'ô': 'o',\n 'ố': 'o',\n 'ộ': 'o',\n 'ồ': 'o',\n 'ổ': 'o',\n 'ỗ': 'o',\n 'ö': 'o',\n 'ȫ': 'o',\n 'ȯ': 'o',\n 'ȱ': 'o',\n 'ọ': 'o',\n 'ő': 'o',\n 'ȍ': 'o',\n 'ò': 'o',\n 'ỏ': 'o',\n 'ơ': 'o',\n 'ớ': 'o',\n 'ợ': 'o',\n 'ờ': 'o',\n 'ở': 'o',\n 'ỡ': 'o',\n 'ȏ': 'o',\n 'ꝋ': 'o',\n 'ꝍ': 'o',\n 'ⱺ': 'o',\n 'ō': 'o',\n 'ṓ': 'o',\n 'ṑ': 'o',\n 'ǫ': 'o',\n 'ǭ': 'o',\n 'ø': 'o',\n 'ǿ': 'o',\n 'õ': 'o',\n 'ṍ': 'o',\n 'ṏ': 'o',\n 'ȭ': 'o',\n 'ƣ': 'oi',\n 'ꝏ': 'oo',\n 'ɛ': 'e',\n 'ᶓ': 'e',\n 'ɔ': 'o',\n 'ᶗ': 'o',\n 'ȣ': 'ou',\n 'ṕ': 'p',\n 'ṗ': 'p',\n 'ꝓ': 'p',\n 'ƥ': 'p',\n 'ᵱ': 'p',\n 'ᶈ': 'p',\n 'ꝕ': 'p',\n 'ᵽ': 'p',\n 'ꝑ': 'p',\n 'ꝙ': 'q',\n 'ʠ': 'q',\n 'ɋ': 'q',\n 'ꝗ': 'q',\n 'ŕ': 'r',\n 'ř': 'r',\n 'ŗ': 'r',\n 'ṙ': 'r',\n 'ṛ': 'r',\n 'ṝ': 'r',\n 'ȑ': 'r',\n 'ɾ': 'r',\n 'ᵳ': 'r',\n 'ȓ': 'r',\n 'ṟ': 'r',\n 'ɼ': 'r',\n 'ᵲ': 'r',\n 'ᶉ': 'r',\n 'ɍ': 'r',\n 'ɽ': 'r',\n 'ↄ': 'c',\n 'ꜿ': 'c',\n 'ɘ': 'e',\n 'ɿ': 'r',\n 'ś': 's',\n 'ṥ': 's',\n 'š': 's',\n 'ṧ': 's',\n 'ş': 's',\n 'ŝ': 's',\n 'ș': 's',\n 'ṡ': 's',\n 'ṣ': 's',\n 'ṩ': 's',\n 'ʂ': 's',\n 'ᵴ': 's',\n 'ᶊ': 's',\n 'ȿ': 's',\n 'ɡ': 'g',\n 'ᴑ': 'o',\n 'ᴓ': 'o',\n 'ᴝ': 'u',\n 'ť': 't',\n 'ţ': 't',\n 'ṱ': 't',\n 'ț': 't',\n 'ȶ': 't',\n 'ẗ': 't',\n 'ⱦ': 't',\n 'ṫ': 't',\n 'ṭ': 't',\n 'ƭ': 't',\n 'ṯ': 't',\n 'ᵵ': 't',\n 'ƫ': 't',\n 'ʈ': 't',\n 'ŧ': 't',\n 'ᵺ': 'th',\n 'ɐ': 'a',\n 'ᴂ': 'ae',\n 'ǝ': 'e',\n 'ᵷ': 'g',\n 'ɥ': 'h',\n 'ʮ': 'h',\n 'ʯ': 'h',\n 'ᴉ': 'i',\n 'ʞ': 'k',\n 'ꞁ': 'l',\n 'ɯ': 'm',\n 'ɰ': 'm',\n 'ᴔ': 'oe',\n 'ɹ': 'r',\n 'ɻ': 'r',\n 'ɺ': 'r',\n 'ⱹ': 'r',\n 'ʇ': 't',\n 'ʌ': 'v',\n 'ʍ': 'w',\n 'ʎ': 'y',\n 'ꜩ': 'tz',\n 'ú': 'u',\n 'ŭ': 'u',\n 'ǔ': 'u',\n 'û': 'u',\n 'ṷ': 'u',\n 'ü': 'u',\n 'ǘ': 'u',\n 'ǚ': 'u',\n 'ǜ': 'u',\n 'ǖ': 'u',\n 'ṳ': 'u',\n 'ụ': 'u',\n 'ű': 'u',\n 'ȕ': 'u',\n 'ù': 'u',\n 'ủ': 'u',\n 'ư': 'u',\n 'ứ': 'u',\n 'ự': 'u',\n 'ừ': 'u',\n 'ử': 'u',\n 'ữ': 'u',\n 'ȗ': 'u',\n 'ū': 'u',\n 'ṻ': 'u',\n 'ų': 'u',\n 'ᶙ': 'u',\n 'ů': 'u',\n 'ũ': 'u',\n 'ṹ': 'u',\n 'ṵ': 'u',\n 'ᵫ': 'ue',\n 'ꝸ': 'um',\n 'ⱴ': 'v',\n 'ꝟ': 'v',\n 'ṿ': 'v',\n 'ʋ': 'v',\n 'ᶌ': 'v',\n 'ⱱ': 'v',\n 'ṽ': 'v',\n 'ꝡ': 'vy',\n 'ẃ': 'w',\n 'ŵ': 'w',\n 'ẅ': 'w',\n 'ẇ': 'w',\n 'ẉ': 'w',\n 'ẁ': 'w',\n 'ⱳ': 'w',\n 'ẘ': 'w',\n 'ẍ': 'x',\n 'ẋ': 'x',\n 'ᶍ': 'x',\n 'ý': 'y',\n 'ŷ': 'y',\n 'ÿ': 'y',\n 'ẏ': 'y',\n 'ỵ': 'y',\n 'ỳ': 'y',\n 'ƴ': 'y',\n 'ỷ': 'y',\n 'ỿ': 'y',\n 'ȳ': 'y',\n 'ẙ': 'y',\n 'ɏ': 'y',\n 'ỹ': 'y',\n 'ź': 'z',\n 'ž': 'z',\n 'ẑ': 'z',\n 'ʑ': 'z',\n 'ⱬ': 'z',\n 'ż': 'z',\n 'ẓ': 'z',\n 'ȥ': 'z',\n 'ẕ': 'z',\n 'ᵶ': 'z',\n 'ᶎ': 'z',\n 'ʐ': 'z',\n 'ƶ': 'z',\n 'ɀ': 'z',\n 'ff': 'ff',\n 'ffi': 'ffi',\n 'ffl': 'ffl',\n 'fi': 'fi',\n 'fl': 'fl',\n 'ij': 'ij',\n 'œ': 'oe',\n 'st': 'st',\n 'ₐ': 'a',\n 'ₑ': 'e',\n 'ᵢ': 'i',\n 'ⱼ': 'j',\n 'ₒ': 'o',\n 'ᵣ': 'r',\n 'ᵤ': 'u',\n 'ᵥ': 'v',\n 'ₓ': 'x'\n};\n","import { TypeaheadDirective } from './typeahead.directive';\n\nexport class TypeaheadOptions {\n placement: string;\n animation: boolean;\n typeaheadRef: TypeaheadDirective;\n\n constructor(options: TypeaheadOptions) {\n this.placement = options.placement;\n this.animation = options.animation;\n this.typeaheadRef = options.typeaheadRef;\n }\n}\n","// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class TypeaheadMatch<ItemType = any> {\n readonly value: string;\n\n readonly item: ItemType;\n protected header: boolean;\n\n constructor(item: ItemType, value = item as string, header = false) {\n this.item = item;\n this.value = value;\n this.header = header;\n }\n\n isHeader(): boolean {\n return this.header;\n }\n\n toString(): string {\n return this.value;\n }\n}\n","import { latinMap } from './latin-map';\n\nexport function latinize(str: string): string {\n if (!str) {\n return '';\n }\n\n return str.replace(/[^A-Za-z0-9[\\] ]/g, function(a: string): string {\n return latinMap[a] || a;\n });\n}\n\nexport function escapeRegexp(queryToEscape: string): string {\n // Regex: capture the whole query string and replace it with the string\n // that will be used to match the results, for example if the capture is\n // 'a' the result will be \\a\n return queryToEscape.replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1');\n}\n\nexport function tokenize(str: string,\n wordRegexDelimiters = ' ',\n phraseRegexDelimiters = '', delimitersForMultipleSearch?: string): Array<string> {\n\n let result: string[] = [];\n if (!delimitersForMultipleSearch) {\n result = tokenizeWordsAndPhrases(str, wordRegexDelimiters, phraseRegexDelimiters);\n } else {\n const multipleSearchRegexStr = `([${delimitersForMultipleSearch}]+)`;\n const delimitedTokens = str.split(new RegExp(multipleSearchRegexStr, 'g'));\n const lastToken = delimitedTokens[delimitedTokens.length - 1];\n if (lastToken > '') {\n if (wordRegexDelimiters && phraseRegexDelimiters) {\n result = tokenizeWordsAndPhrases(lastToken, wordRegexDelimiters, phraseRegexDelimiters);\n } else {\n result.push(lastToken);\n }\n }\n }\n\n return result;\n}\n\nfunction tokenizeWordsAndPhrases(str: string, wordRegexDelimiters: string, phraseRegexDelimiters: string): Array<string> {\n const result: string[] = [];\n const regexStr = `(?:[${phraseRegexDelimiters}])([^${phraseRegexDelimiters}]+)` +\n `(?:[${phraseRegexDelimiters}])|([^${wordRegexDelimiters}]+)`;\n const preTokenized: string[] = str.split(new RegExp(regexStr, 'g'));\n const preTokenizedLength: number = preTokenized.length;\n let token: string;\n const replacePhraseDelimiters = new RegExp(`[${phraseRegexDelimiters}]+`, 'g');\n\n for (let i = 0; i < preTokenizedLength; i += 1) {\n token = preTokenized[i];\n if (token && token.length && token !== wordRegexDelimiters) {\n result.push(token.replace(replacePhraseDelimiters, ''));\n }\n }\n\n return result;\n}\n\n// eslint-disable-next-line\nexport function getValueFromObject(object: string | Record<string | number, any>, option?: string): string {\n if (!option || typeof object !== 'object') {\n return object.toString();\n }\n\n if (option.endsWith('()')) {\n const functionName = option.slice(0, option.length - 2);\n\n return (object[functionName] as () => string)().toString();\n }\n\n const properties: string = option\n .replace(/\\[(\\w+)\\]/g, '.$1')\n .replace(/^\\./, '');\n const propertiesArray: string[] = properties.split('.');\n\n for (const property of propertiesArray) {\n if (property in (object as Record<string, unknown>)) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n object = object[property];\n }\n }\n if (!object) {\n return '';\n }\n\n return object.toString();\n}\n","import {\n animate,\n style,\n AnimationTriggerMetadata,\n state,\n transition,\n trigger\n} from '@angular/animations';\n\nexport const TYPEAHEAD_ANIMATION_TIMING = '220ms cubic-bezier(0, 0, 0.2, 1)';\n\nexport const typeaheadAnimation: AnimationTriggerMetadata =\n trigger('typeaheadAnimation', [\n state('animated-down', style({ height: '*', overflow: 'hidden'})),\n transition('* => animated-down', [\n style({ height: 0, overflow: 'hidden' }),\n animate(TYPEAHEAD_ANIMATION_TIMING)\n ]),\n state('animated-up', style({ height: '*', overflow: 'hidden'})),\n transition('* => animated-up', [\n style({ height: '*', overflow: 'hidden' }),\n animate(TYPEAHEAD_ANIMATION_TIMING)\n ]),\n transition('* => unanimated', animate('0s'))\n ]);\n","import {\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostListener,\n OnDestroy,\n QueryList,\n Renderer2,\n TemplateRef,\n ViewChild,\n ViewChildren,\n Output,\n EventEmitter\n} from '@angular/core';\n\nimport { Utils } from 'ngx-bootstrap/utils';\nimport { PositioningService } from 'ngx-bootstrap/positioning';\nimport { Subscription } from 'rxjs';\n\nimport { latinize } from './typeahead-utils';\nimport { TypeaheadMatch } from './typeahead-match.class';\nimport { TypeaheadDirective } from './typeahead.directive';\nimport { typeaheadAnimation } from './typeahead-animations';\nimport { TypeaheadOptionItemContext, TypeaheadOptionListContext, TypeaheadTemplateMethods } from './models';\nimport { NgTemplateOutlet, NgFor, NgIf } from '@angular/common';\n\nlet nextWindowId = 0;\n\n@Component({\n selector: 'typeahead-container',\n templateUrl: './typeahead-container.component.html',\n host: {\n class: 'dropdown open bottom dropdown-menu',\n '[style.height]': `needScrollbar ? guiHeight: 'auto'`,\n '[style.visibility]': `'inherit'`,\n '[class.dropup]': 'dropup',\n style: 'position: absolute;display: block;',\n '[attr.role]': `'listbox'`\n },\n styles: [\n `\n :host.dropdown {\n z-index: 1000;\n }\n\n :host.dropdown-menu, .dropdown-menu {\n overflow-y: auto;\n height: 100px;\n }\n `\n ],\n animations: [typeaheadAnimation],\n standalone: true,\n imports: [NgTemplateOutlet, NgFor, NgIf],\n providers: [PositioningService]\n})\n\nexport class TypeaheadContainerComponent implements OnDestroy {\n // eslint-disable-next-line @angular-eslint/no-output-rename\n @Output('activeChange') activeChangeEvent = new EventEmitter();\n\n parent?: TypeaheadDirective;\n query?: string[] | string;\n isFocused = false;\n top?: string;\n left?: string;\n display?: string;\n placemen?: string;\n dropup?: boolean;\n guiHeight?: string;\n needScrollbar?: boolean;\n animationState?: string;\n positionServiceSubscription = new Subscription();\n height = 0;\n popupId = `ngb-typeahead-${nextWindowId++}`;\n\n get typeaheadTemplateMethods(): TypeaheadTemplateMethods {\n return {\n selectMatch: this.selectMatch.bind(this),\n selectActive: this.selectActive.bind(this),\n isActive: this.isActive.bind(this)\n };\n }\n\n protected _active?: TypeaheadMatch;\n protected _matches: TypeaheadMatch[] = [];\n\n @ViewChild('ulElement', { static: false })\n private ulElement?: ElementRef;\n\n @ViewChildren('liElements')\n private liElements?: QueryList<ElementRef>;\n\n constructor(\n private positionService: PositioningService,\n private renderer: Renderer2,\n public element: ElementRef,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n this.renderer.setAttribute(this.element.nativeElement, 'id', this.popupId);\n this.positionServiceSubscription.add(this.positionService.event$?.subscribe(\n () => {\n if (this.isAnimated) {\n this.animationState = this.isTopPosition ? 'animated-up' : 'animated-down';\n this.changeDetectorRef.detectChanges();\n\n return;\n }\n\n this.animationState = 'unanimated';\n this.changeDetectorRef.detectChanges();\n }\n ));\n }\n\n get active(): TypeaheadMatch | undefined {\n return this._active;\n }\n\n set active(active: TypeaheadMatch | undefined) {\n this._active = active;\n this.activeChanged();\n }\n\n get matches(): TypeaheadMatch[] {\n return this._matches;\n }\n\n set matches(value: TypeaheadMatch[]) {\n this.positionService.setOptions({\n modifiers: { flip: { enabled: this.adaptivePosition } },\n allowedPositions: ['top', 'bottom']\n });\n\n this._matches = value;\n\n this.needScrollbar = this.typeaheadScrollable && this.typeaheadOptionsInScrollableView < this.matches.length;\n\n if (this.typeaheadScrollable) {\n setTimeout(() => {\n this.setScrollableMode();\n });\n }\n\n if (this.typeaheadIsFirstItemActive && this._matches.length > 0) {\n this.setActive(this._matches[0]);\n\n if (this._active?.isHeader()) {\n this.nextActiveMatch();\n }\n }\n\n if (this._active && !this.typeaheadIsFirstItemActive) {\n const concurrency = this._matches.find(match => match.value === this._active?.value);\n\n if (concurrency) {\n this.selectActive(concurrency);\n\n return;\n }\n\n this.active = void 0;\n }\n }\n\n get isTopPosition(): boolean {\n return this.element.nativeElement.classList.contains('top');\n }\n\n get optionsListTemplate(): TemplateRef<TypeaheadOptionListContext> | undefined {\n return this.parent ? this.parent.optionsListTemplate : undefined;\n }\n\n get isAnimated(): boolean {\n return this.parent ? this.parent.isAnimated : false;\n }\n\n get adaptivePosition(): boolean {\n return this.parent ? this.parent.adaptivePosition : false;\n }\n\n get typeaheadScrollable(): boolean {\n return this.parent ? this.parent.typeaheadScrollable : false;\n }\n\n get typeaheadOptionsInScrollableView(): number {\n return this.parent ? this.parent.typeaheadOptionsInScrollableView : 5;\n }\n\n get typeaheadIsFirstItemActive(): boolean {\n return this.parent ? this.parent.typeaheadIsFirstItemActive : true;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get itemTemplate(): TemplateRef<TypeaheadOptionItemContext> | undefined {\n return this.parent ? this.parent.typeaheadItemTemplate : undefined;\n }\n\n get canSelectItemsOnBlur(): boolean {\n return !!this.parent?.selectItemOnBlur;\n }\n\n selectActiveMatch(isActiveItemChanged?: boolean): void {\n if (this._active && this.parent?.typeaheadSelectFirstItem) {\n this.selectMatch(this._active);\n }\n\n if (!this.parent?.typeaheadSelectFirstItem && isActiveItemChanged) {\n this.selectMatch(this._active);\n }\n }\n\n activeChanged(): void {\n if (!this._active) {\n return;\n }\n const index = this.matches.indexOf(this._active);\n this.activeChangeEvent.emit(`${this.popupId}-${index}`);\n }\n\n prevActiveMatch(): void {\n if (!this._active) {\n return;\n }\n\n const index = this.matches.indexOf(this._active);\n this.setActive(this.matches[\n index - 1 < 0 ? this.matches.length - 1 : index - 1\n ]);\n\n if (this._active.isHeader()) {\n this.prevActiveMatch();\n }\n\n if (this.typeaheadScrollable) {\n this.scrollPrevious(index);\n }\n }\n\n nextActiveMatch(): void {\n const index = this._active ? this.matches.indexOf(this._active) : -1;\n this.setActive(this.matches[\n index + 1 > this.matches.length - 1 ? 0 : index + 1\n ]);\n\n if (this._active?.isHeader()) {\n this.nextActiveMatch();\n }\n\n if (this.typeaheadScrollable) {\n this.scrollNext(index);\n }\n }\n\n selectActive(value: TypeaheadMatch): void {\n this.isFocused = true;\n this.setActive(value);\n }\n\n highlight(match: TypeaheadMatch, query: string[] | string): string {\n let itemStr: string = match.value;\n let itemStrHelper: string = (this.parent && this.parent.typeaheadLatinize\n ? latinize(itemStr)\n : itemStr).toLowerCase();\n let startIdx: number;\n let tokenLen: number;\n // Replaces the capture string with the same string inside of a \"strong\" tag\n if (typeof query === 'object') {\n const queryLen: number = query.length;\n for (let i = 0; i < queryLen; i += 1) {\n // query[i] is already latinized and lower case\n startIdx = itemStrHelper.indexOf(query[i]);\n tokenLen = query[i].length;\n if (startIdx >= 0 && tokenLen > 0) {\n itemStr =\n `${itemStr.substring(0, startIdx)}<strong>${itemStr.substring(startIdx, startIdx + tokenLen)}</strong>` +\n `${itemStr.substring(startIdx + tokenLen)}`;\n itemStrHelper =\n `${itemStrHelper.substring(0, startIdx)}????????${'??'.repeat(tokenLen)}??????????` +\n `${itemStrHelper.substring(startIdx + tokenLen)}`;\n }\n }\n } else if (query) {\n // query is already latinized and lower case\n startIdx = itemStrHelper.indexOf(query);\n tokenLen = query.length;\n if (startIdx >= 0 && tokenLen > 0) {\n itemStr =\n `${itemStr.substring(0, startIdx)}<strong>${itemStr.substring(startIdx, startIdx + tokenLen)}</strong>` +\n `${itemStr.substring(startIdx + tokenLen)}`;\n }\n }\n\n return itemStr;\n }\n\n @HostListener('mouseleave')\n @HostListener('blur')\n focusLost(): void {\n this.isFocused = false;\n if (!this.canSelectItemsOnBlur) {\n this.setActive(void 0);\n }\n }\n\n isActive(value: TypeaheadMatch): boolean {\n return this.active === value;\n }\n\n selectMatch(value?: TypeaheadMatch, event?: Event): boolean {\n if (event) {\n event.stopPropagation();\n event.preventDefault();\n }\n this.parent?.changeModel(value);\n setTimeout(() => this.parent?.typeaheadOnSelect.emit(value), 0);\n\n return false;\n }\n\n setScrollableMode(): void {\n if (!this.ulElement) {\n this.ulElement = this.element;\n }\n\n if (this.liElements?.first) {\n const ulStyles = Utils.getStyles(this.ulElement.nativeElement);\n const liStyles = Utils.getStyles(this.liElements.first.nativeElement);\n const ulPaddingBottom = parseFloat((ulStyles['padding-bottom'] ? ulStyles['padding-bottom'] : '')\n .replace('px', ''));\n const ulPaddingTop = parseFloat((ulStyles['padding-top'] ? ulStyles['padding-top'] : '0')\n .replace('px', ''));\n const optionHeight = parseFloat((liStyles.height ? liStyles.height : '0')\n .replace('px', ''));\n const height = this.typeaheadOptionsInScrollableView * optionHeight;\n this.guiHeight = `${height + ulPaddingTop + ulPaddingBottom}px`;\n }\n\n this.renderer.setStyle(this.element.nativeElement, 'visibility', 'visible');\n }\n\n scrollPrevious(index: number): void {\n if (index === 0) {\n this.scrollToBottom();\n\n return;\n }\n if (this.liElements && this.ulElement) {\n const liElement = this.liElements.toArray()[index - 1];\n if (liElement && !this.isScrolledIntoView(liElement.nativeElement)) {\n this.ulElement.nativeElement.scrollTop = liElement.nativeElement.offsetTop;\n }\n }\n }\n\n scrollNext(index: number): void {\n if (index + 1 > this.matches.length - 1) {\n this.scrollToTop();\n\n return;\n }\n if (this.liElements && this.ulElement) {\n const liElement = this.liElements.toArray()[index + 1];\n if (liElement && !this.isScrolledIntoView(liElement.nativeElement)) {\n this.ulElement.nativeElement.scrollTop =\n liElement.nativeElement.offsetTop -\n Number(this.ulElement.nativeElement.offsetHeight) +\n Number(liElement.nativeElement.offsetHeight);\n }\n }\n }\n\n ngOnDestroy(): void {\n this.positionServiceSubscription.unsubscribe();\n }\n\n protected setActive(value?: TypeaheadMatch): void {\n this._active = value;\n let preview;\n if (!(this._active == null || this._active.isHeader())) {\n preview = value;\n }\n this.parent?.typeaheadOnPreview.emit(preview);\n }\n\n private isScrolledIntoView(elem: HTMLElement): boolean {\n if (!this.ulElement) {\n return false;\n }\n const containerViewTop: number = this.ulElement.nativeElement.scrollTop;\n const containerViewBottom = containerViewTop + Number(this.ulElement.nativeElement.offsetHeight);\n const elemTop = elem.offsetTop;\n const elemBottom = elemTop + elem.offsetHeight;\n\n return ((elemBottom <= containerViewBottom) && (elemTop >= containerViewTop));\n }\n\n private scrollToBottom(): void {\n if (!this.ulElement?.nativeElement) {\n return;\n }\n this.ulElement.nativeElement.scrollTop = this.ulElement.nativeElement.scrollHeight;\n }\n\n private scrollToTop(): void {\n if (!this.ulElement?.nativeElement) {\n return;\n }\n this.ulElement.nativeElement.scrollTop = 0;\n }\n}\n","<!-- inject options list template -->\n<ng-template [ngTemplateOutlet]=\"optionsListTemplate || bs4Template\"\n [ngTemplateOutletContext]=\"{\n matches: matches,\n itemTemplate: itemTemplate || bsItemTemplate,\n query: query,\n $implicit: typeaheadTemplateMethods\n }\">\n</ng-template>\n\n<!-- default options item template -->\n<ng-template #bsItemTemplate let-match=\"match\" let-query=\"query\">\n <span [innerHtml]=\"highlight(match, query)\"></span>\n</ng-template>\n\n<!-- Bootstrap 4 options list template -->\n<ng-template #bs4Template>\n <ng-template ngFor let-match let-i=\"index\" [ngForOf]=\"matches\">\n <h6 *ngIf=\"match.isHeader()\" class=\"dropdown-header\">{{ match }}</h6>\n <ng-template [ngIf]=\"!match.isHeader()\">\n <button #liElements\n [id]=\"popupId + '-' + i\"\n role=\"option\"\n [@typeaheadAnimation]=\"animationState\"\n class=\"dropdown-item\"\n (click)=\"selectMatch(match, $event)\"\n (mouseenter)=\"selectActive(match)\"\n [class.active]=\"isActive(match)\">\n <ng-template [ngTemplateOutlet]=\"itemTemplate || bsItemTemplate\"\n [ngTemplateOutletContext]=\"{item: match.item, index: i, match: match, query: query}\">\n </ng-template>\n </button>\n </ng-template>\n </ng-template>\n</ng-template>\n","import { Injectable } from '@angular/core';\n\n/** Default values provider for typeahead */\n@Injectable({ providedIn: 'root' })\nexport class TypeaheadConfig {\n /** sets use adaptive position */\n adaptivePosition = false;\n /** turn on/off animation */\n isAnimated = false;\n /** used to hide results on blur */\n hideResultsOnBlur = true;\n /** if true, typeahead will cancel async request on blur */\n cancelRequestOnFocusLost = false;\n /** used to choose the first item in typeahead container */\n selectFirstItem = true;\n /** used to active/inactive the first item in typeahead container */\n isFirstItemActive = true;\n /** used to choose set minimal no of characters that needs to\n * be entered before typeahead kicks-in\n */\n minLength = 1;\n /**\n * used to choose item on blur event\n */\n selectItemOnBlur = false;\n}\n","import {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n TemplateRef,\n ViewContainerRef\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { ComponentLoader, ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\n\nimport { EMPTY, from, isObservable, Observable, Subscription } from 'rxjs';\nimport { debounceTime, filter, mergeMap, switchMap, tap, toArray } from 'rxjs/operators';\nimport { TypeaheadOptionItemContext, TypeaheadOptionListContext } from './models';\n\nimport { TypeaheadContainerComponent } from './typeahead-container.component';\nimport { TypeaheadMatch } from './typeahead-match.class';\nimport { TypeaheadOrder } from './typeahead-order.class';\nimport { getValueFromObject, latinize, tokenize } from './typeahead-utils';\nimport { TypeaheadConfig } from './typeahead.config';\nimport { PositioningService } from 'ngx-bootstrap/positioning';\n\n// eslint-disable-next-line\ntype TypeaheadOption = string | Record<string | number, any>;\ntype TypeaheadOptionArr = TypeaheadOption[] | Observable<TypeaheadOption>;\n\n@Directive({\n selector: '[typeahead]',\n exportAs: 'bs-typeahead',\n host: {\n '[attr.aria-activedescendant]': 'activeDescendant',\n '[attr.aria-owns]': 'isOpen ? this._container.popupId : null',\n '[attr.aria-expanded]': 'isOpen',\n '[attr.aria-autocomplete]': 'list'\n },\n standalone: true,\n providers: [ComponentLoaderFactory, PositioningService]\n})\nexport class TypeaheadDirective implements OnInit, OnDestroy {\n /** options source, can be Array of strings, objects or\n * an Observable for external matching process\n */\n @Input() typeahead?: TypeaheadOptionArr;\n /** minimal no of characters that needs to be entered before\n * typeahead kicks-in. When set to 0, typeahead shows on focus with full\n * list of options (limited as normal by typeaheadOptionsLimit)\n */\n @Input() typeaheadMinLength = 1;\n /** sets use adaptive position */\n @Input() adaptivePosition = false;\n /** turn on/off animation */\n @Input() isAnimated = false;\n /** minimal wait time after last character typed before typeahead kicks-in */\n @Input() typeaheadWaitMs = 0;\n /** maximum length of options items list. The default value is 20 */\n @Input() typeaheadOptionsLimit?: number;\n /** when options source is an array of objects, the name of field\n * that contains the options value, we use array item as option in case\n * of this field is missing. Supports nested properties and methods.\n */\n @Input() typeaheadOptionField?: string;\n /** when options source is an array of objects, the name of field that\n * contains the group value, matches are grouped by this field when set.\n */\n @Input() typeaheadGroupField?: string;\n /** Used to specify a custom order of matches. When options source is an array of objects\n * a field for sorting has to be set up. In case of options source is an array of string,\n * a field for sorting is absent. The ordering direction could be changed to ascending or descending.\n */\n @Input() typeaheadOrderBy?: TypeaheadOrder;\n /** should be used only in case of typeahead attribute is Observable of array.\n * If true - loading of options will be async, otherwise - sync.\n * true make sense if options array is large.\n */\n @Input() typeaheadAsync?: boolean;\n /** match latin symbols.\n * If true the word súper would match super and vice versa.\n */\n @Input() typeaheadLatinize = true;\n /** Can be use to search words by inserting a single white space between each characters\n * for example 'C a l i f o r n i a' will match 'California'.\n */\n @Input() typeaheadSingleWords = true;\n /** should be used only in case typeaheadSingleWords attribute is true.\n * Sets the word delimiter to break words. Defaults to space.\n */\n @Input() typeaheadWordDelimiters = ' ';\n /** Can be used to conduct a search of multiple items and have suggestion not for the\n * whole value of the input but for the value that comes after a delimiter provided via\n * typeaheadMultipleSearchDelimiters attribute. This option can only be used together with\n * typeaheadSingleWords option if typeaheadWordDelimiters and typeaheadPhraseDelimiters\n * are different from typeaheadMultipleSearchDelimiters to avoid conflict in determining\n * when to delimit multiple searches and when a single word.\n */\n @Input() typeaheadMultipleSearch?: boolean;\n /** should be used only in case typeaheadMultipleSearch attribute is true.\n * Sets the multiple search delimiter to know when to start a new search. Defaults to comma.\n * If space needs to be used, then explicitly set typeaheadWordDelimiters to something else than space\n * because space is used by default OR set typeaheadSingleWords attribute to false if you don't need\n * to use it together with multiple search.\n */\n @Input() typeaheadMultipleSearchDelimiters = ',';\n /** should be used only in case typeaheadSingleWords attribute is true.\n * Sets the word delimiter to match exact phrase.\n * Defaults to simple and double quotes.\n */\n @Input() typeaheadPhraseDelimiters = '\\'\"';\n /** used to specify a custom item template.\n * Template variables exposed are called item and index;\n */\n @Input() typeaheadItemTemplate?: TemplateRef<TypeaheadOptionItemContext>;\n /** used to specify a custom options list template.\n * Template variables: matches, itemTemplate, query\n */\n @Input() optionsListTemplate?: TemplateRef<TypeaheadOptionListContext>;\n /** specifies if typeahead is scrollable */\n @Input() typeaheadScrollable = false;\n /** specifies number of options to show in scroll view */\n @Input() typeaheadOptionsInScrollableView = 5;\n /** used to hide result on blur */\n @Input() typeaheadHideResultsOnBlur?: boolean;\n /** fired when an options list was opened and the user clicked Tab\n * If a value equal true, it will be chosen first or active item in the list\n * If value equal false, it will be chosen an active item in the list or nothing\n */\n @Input() typeaheadSelectFirstItem = true;\n /** makes active first item in a list */\n @Input() typeaheadIsFirstItemActive = true;\n /** fired when 'busy' state of this component was changed,\n * fired on async mode only, returns boolean\n */\n @Output() typeaheadLoading = new EventEmitter<boolean>();\n /** fired on every key event and returns true\n * in case of matches are not detected\n */\n @Output() typeaheadNoResults = new EventEmitter<boolean>();\n /** fired when option was selected, return object with data of this option. */\n @Output() typeaheadOnSelect = new EventEmitter<TypeaheadMatch>();\n /** fired when option was previewed, return object with data of this option. */\n @Output() typeaheadOnPreview = new EventEmitter<TypeaheadMatch>();\n /** fired when blur event occurs. returns the active item */\n @Output() typeaheadOnBlur = new EventEmitter<TypeaheadMatch | undefined>();\n\n /**\n * A selector specifying the element the typeahead should be appended to.\n */\n @Input() container?: string;\n\n /** This attribute indicates that the dropdown should be opened upwards */\n @Input() dropup = false;\n\n // not yet implemented\n /** if false restrict model values to the ones selected from the popup only will be provided */\n // @Input() protected typeaheadEditable:boolean;\n /** if false the first match automatically will not be focused as you type */\n // @Input() protected typeaheadFocusFirst:boolean;\n /** format the ng-model result after selection */\n // @Input() protected typeaheadInputFormatter:any;\n /** if true automatically select an item when there is one option that exactly matches the user input */\n // @Input() protected typeaheadSelectOnExact:boolean;\n /** if true select the currently highlighted match on blur */\n // @Input() protected typeaheadSelectOnBlur:boolean;\n /** if false don't focus the input element the typeahead directive is associated with on selection */\n // @Input() protected typeaheadFocusOnSelect:boolean;\n\n activeDescendant?: string;\n isOpen = false;\n list = 'list';\n _container?: TypeaheadContainerComponent;\n isActiveItemChanged = false;\n isFocused = false;\n cancelRequestOnFocusLost = false;\n selectItemOnBlur = false;\n protected keyUpEventEmitter = new EventEmitter<string>();\n protected placement = 'bottom left';\n protected _matches: TypeaheadMatch[] = [];\n\n private _typeahead: ComponentLoader<TypeaheadContainerComponent>;\n private _subscriptions: Subscription[] = [];\n private _allEnteredValue?: string;\n private _outsideClickListener: () => void = () => void 0;\n\n constructor(\n cis: ComponentLoaderFactory,\n config: TypeaheadConfig,\n private changeDetection: ChangeDetectorRef,\n private element: ElementRef,\n private ngControl: NgControl,\n private renderer: Renderer2,\n viewContainerRef: ViewContainerRef\n ) {\n this._typeahead = cis\n .createLoader<TypeaheadContainerComponent>(element, viewContainerRef, renderer)\n .provide({ provide: TypeaheadConfig, useValue: config });\n\n Object.assign(this, {\n typeaheadHideResultsOnBlur: config.hideResultsOnBlur,\n cancelRequestOnFocusLost: config.cancelRequestOnFocusLost,\n typeaheadSelectFirstItem: config.selectFirstItem,\n typeaheadIsFirstItemActive: config.isFirstItemActive,\n typeaheadMinLength: config.minLength,\n adaptivePosition: config.adaptivePosition,\n isAnimated: config.isAnimated,\n selectItemOnBlur: config.selectItemOnBlur\n });\n }\n\n get matches(): TypeaheadMatch[] {\n return this._matches;\n }\n\n ngOnInit(): void {\n this.typeaheadOptionsLimit = this.typeaheadOptionsLimit || 20;\n\n this.typeaheadMinLength = this.typeaheadMinLength === void 0 ? 1 : this.typeaheadMinLength;\n\n // async should be false in case of array\n if (this.typeaheadAsync === undefined && !isObservable(this.typeahead)) {\n this.typeaheadAsync = false;\n }\n\n if (isObservable(this.typeahead)) {\n this.typeaheadAsync = true;\n }\n\n if (this.typeaheadAsync) {\n this.asyncActions();\n } else {\n this.syncActions();\n }\n\n this.checkDelimitersConflict();\n }\n\n @HostListener('input', ['$event'])\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onInput(e: any): void {\n // For `<input>`s, use the `value` property. For others that don't have a\n // `value` (such as `<span contenteditable=\"true\">`), use either\n // `textContent` or `innerText` (depending on which one is supported, i.e.\n // Firefox or IE).\n const value =\n e.target.value !== undefined\n ? e.target.value\n : e.target.textContent !== undefined\n ? e.target.textContent\n : e.target.innerText;\n\n if (value != null && value.trim().length >= this.typeaheadMinLength) {\n this.typeaheadLoading.emit(true);\n this.keyUpEventEmitter.emit(e.target.value);\n } else {\n this.typeaheadLoading.emit(false);\n this.typeaheadNoResults.emit(false);\n this.hide();\n }\n }\n\n @HostListener('keyup', ['$event'])\n onChange(event: KeyboardEvent): void {\n if (this._container) {\n // esc\n if (event.keyCode === 27 || event.key === 'Escape') {\n this.hide();\n\n return;\n }\n\n // up\n if (event.keyCode === 38 || event.key === 'ArrowUp') {\n this.isActiveItemChanged = true;\n this._container.prevActiveMatch();\n\n return;\n }\n\n // down\n if (event.keyCode === 40 || event.key === 'ArrowDown') {\n this.isActiveItemChanged = true;\n this._container.nextActiveMatch();\n\n return;\n }\n\n // enter\n if (event.keyCode === 13 || event.key === 'Enter') {\n this._container.selectActiveMatch();\n\n return;\n }\n }\n }\n\n @HostListener('click')\n @HostListener('focus')\n onFocus(): void {\n this.isFocused = true;\n // add setTimeout to fix issue #5251\n // to get and emit updated value if it's changed on focus\n setTimeout(() => {\n if (this.typeaheadMinLength === 0) {\n this.typeaheadLoading.emit(true);\n this.keyUpEventEmitter.emit(this.element.nativeElement.value || '');\n }\n }, 0);\n }\n\n @HostListener('blur')\n onBlur(): void {\n this.isFocused = false;\n if (this._container && !this._container.isFocused) {\n this.typeaheadOnBlur.emit(this._container.active);\n }\n\n if (!this.container && this._matches?.length === 0) {\n this.typeaheadOnBlur.emit(\n new TypeaheadMatch(this.element.nativeElement.value, this.element.nativeElement.value, false)\n );\n }\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent): void {\n // no container - no problems\n if (!this._container) {\n return;\n }\n\n if (event.keyCode === 9 || event.key === 'Tab') {\n this.onBlur();\n }\n\n if (event.keyCode === 9 || event.key === 'Tab' || event.keyCode === 13 || event.key === 'Enter') {\n event.preventDefault();\n if (this.typeaheadSelectFirstItem) {\n this._container.selectActiveMatch();\n\n return;\n }\n\n if (!this.typeaheadSelectFirstItem) {\n this._container.selectActiveMatch(this.isActiveItemChanged);\n this.isActiveItemChanged = false;\n this.hide();\n }\n }\n }\n\n changeModel(match?: TypeaheadMatch): void {\n if (!match) {\n return;\n }\n let valueStr: string;\n if (this.typeaheadMultipleSearch && this._allEnteredValue) {\n const tokens = this._allEnteredValue.split(new RegExp(`([${this.typeaheadMultipleSearchDelimiters}]+)`));\n this._allEnteredValue = tokens\n .slice(0, tokens.length - 1)\n .concat(match.value)\n .join('');\n valueStr = this._allEnteredValue;\n } else {\n valueStr = match.value;\n }\n this.ngControl.viewToModelUpdate(valueStr);\n this.ngControl.control?.setValue(valueStr);\n this.changeDetection.markForCheck();\n this.hide();\n }\n\n show(): void {\n this._typeahead\n .attach(TypeaheadContainerComponent)\n .to(this.container)\n .position({ attachment: `${this.dropup ? 'top' : 'bottom'} left` })\n .show({\n typeaheadRef: this,\n placement: this.placement,\n animation: false,\n dropup: this.dropup\n });\n\n this._outsideClickListener = this.renderer.listen('document', 'click', (event: MouseEvent) => {\n if (this.typeaheadMinLength === 0 && this.element.nativeElement.contains(event.target)) {\n return;\n }\n if (!this.typeaheadHideResultsOnBlur || this.element.nativeElement.contains(event.target)) {\n return;\n }\n this.onOutsideClick();\n });\n\n if (!this._typeahead.instance || !this.ngControl.control) {\n return;\n }\n\n this._container = this._typeahead.instance;\n this._container.parent = this;\n // This improves the speed as it won't have to be done for each list item\n\n const normalizedQuery = (\n this.typeaheadLatinize ? latinize(this.ngControl.control.value) : this.ngControl.control.value\n )\n .toString()\n .toLowerCase();\n\n this._container.query = this.tokenizeQuery(normalizedQuery);\n\n this._container.matches = this._matches;\n this.element.nativeElement.focus();\n\n this._container.activeChangeEvent.subscribe((activeId: string) => {\n this.activeDescendant = activeId;\n this.changeDetection.markForCheck();\n });\n this.isOpen = true;\n }\n\n hide(): void {\n if (this._typeahead.isShown) {\n this._typeahead.hide();\n this._outsideClickListener();\n this._container = void 0;\n this.isOpen = false;\n this.changeDetection.markForCheck();\n }\n this.typeaheadOnPreview.emit();\n }\n\n onOutsideClick(): void {\n if (this._container && !this._container.isFocused) {\n this.hide();\n }\n }\n\n ngOnDestroy() {\n // clean up subscriptions\n for (const sub of this._subscriptions) {\n sub.unsubscribe();\n }\n this._typeahead.dispose();\n }\n\n protected asyncActions(): void {\n this._subscriptions.push(\n this.keyUpEventEmitter\n .pipe(\n debounceTime<string>(this.typeaheadWaitMs),\n tap((value) => (this._allEnteredValue = value)),\n switchMap(() => {\n if (!this.typeahead) {\n return EMPTY;\n }\n return this.typeahead;\n })\n )\n .subscribe((matches) => {\n this.finalizeAsyncCall(matches);\n })\n );\n }\n\n protected syncActions(): void {\n this._subscriptions.push(\n this.keyUpEventEmitter\n .pipe(\n debounceTime<string>(this.typeaheadWaitMs),\n mergeMap((value: string) => {\n this._allEnteredValue = value;\n const normalizedQuery = this.normalizeQuery(value);\n\n if (!this.typeahead) {\n return EMPTY;\n }\n\n const typeahead = isObservable(this.typeahead) ? this.typeahead : from(this.typeahead);\n\n return typeahead.pipe(\n filter((option: TypeaheadOption) => {\n return !!option && this.testMatch(this.normalizeOption(option), normalizedQuery);\n }),\n toArray()\n );\n })\n )\n .subscribe((matches: TypeaheadOption[]) => {\n this.finalizeAsyncCall(matches);\n })\n );\n }\n\n protected normalizeOption(option: TypeaheadOption): string {\n const optionValue: string = getValueFromObject(option, this.typeaheadOptionField);\n const normalizedOption = this.typeaheadLatinize ? latinize(optionValue) : optionValue;\n\n return normalizedOption.toLowerCase();\n }\n\n protected tokenizeQuery(currentQuery: string | string[]): string | string[] {\n let query = currentQuery;\n if (this.typeaheadMultipleSearch && this.typeaheadSingleWords) {\n if (\n !this.haveCommonCharacters(\n `${this.typeaheadPhraseDelimiters}${this.typeaheadWordDelimiters}`,\n this.typeaheadMultipleSearchDelimiters\n )\n ) {\n // single words and multiple search delimiters are different, can be used together\n query = tokenize(\n query as string,\n this.typeaheadWordDelimiters,\n this.typeaheadPhraseDelimiters,\n this.typeaheadMultipleSearchDelimiters\n );\n }\n } else if (this.typeaheadSingleWords) {\n query = tokenize(query as string, this.typeaheadWordDelimiters, this.typeaheadPhraseDelimiters);\n } else {\n // multiple searches\n query = tokenize(query as string, void 0, void 0, this.typeaheadMultipleSearchDelimiters);\n }\n\n return query;\n }\n\n protected normalizeQuery(value: string): string | string[] {\n // If singleWords, break model here to not be doing extra work on each iteration\n let normalizedQuery: string | string[] = (this.typeaheadLatinize ? latinize(value) : value)\n .toString()\n .toLowerCase();\n\n normalizedQuery = this.tokenizeQuery(normalizedQuery);\n\n return normalizedQuery;\n }\n\n protected testMatch(match: string, test: string[] | string): boolean {\n let spaceLength: number;\n\n if (typeof test === 'object') {\n spaceLength = test.length;\n for (let i = 0; i < spaceLength; i += 1) {\n if (test[i].length > 0 && match.indexOf(test[i]) < 0) {\n return false;\n }\n }\n\n return true;\n }\n\n return match.indexOf(test) >= 0;\n }\n\n protected finalizeAsyncCall(matches?: TypeaheadOption | TypeaheadOption[]): void {\n this.prepareMatches(matches || []);\n\n this.typeaheadLoading.emit(false);\n this.typeaheadNoResults.emit(!this.hasMatches());\n\n if (!this.hasMatches()) {\n this.hide();\n\n return;\n }\n\n if (!this.isFocused && this.cancelRequestOnFocusLost) {\n return;\n }\n\n if (this._container && this.ngControl.control) {\n // fix: remove usage of ngControl internals\n const _controlValue =\n (this.typeaheadLatinize ? latinize(this.ngControl.control.value) : this.ngControl.control.value) || '';\n\n // This improves the speed as it won't have to be done for each list item\n const normalizedQuery = _controlValue.toString().toLowerCase();\n\n this._container.query = this.tokenizeQuery(normalizedQuery);\n this._container.matches = this._matches;\n } else {\n this.show();\n }\n }\n\n protected prepareMatches(options: TypeaheadOption | TypeaheadOption[]): void {\n const limited = options.slice(0, this.typeaheadOptionsLimit);\n const sorted = !this.typeaheadOrderBy ? limited : this.orderMatches(limited);\n\n if (this.typeaheadGroupField) {\n let matches: TypeaheadMatch[] = [];\n\n // extract all group names\n const groups = sorted\n .map((option: TypeaheadOption) => getValueFromObject(option, this.typeaheadGroupField))\n .filter((v: string, i: number, a: string[]) => a.indexOf(v) === i);\n\n groups.forEach((group: string) => {\n // add group header to array of matches\n matches.push(new TypeaheadMatch(group, group, true));\n\n // add each item of group to array of matches\n matches = matches.concat(\n sorted\n .filter((option: TypeaheadOption) => getValueFromObject(option, this.typeaheadGroupField) === group)\n .map(\n (option: TypeaheadOption) =>\n new TypeaheadMatch(option, getValueFromObject(option, this.typeaheadOptionField))\n )\n );\n });\n\n this._matches = matches;\n } else {\n this._matches = sorted.map(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (option: any) => new TypeaheadMatch(option, getValueFromObject(option, this.typeaheadOptionField))\n );\n }\n }\n\n protected orderMatches(options: TypeaheadOption[]): TypeaheadOption[] {\n if (!options.length) {\n return options;\n }\n\n if (\n this.typeaheadOrderBy !== null &&\n this.typeaheadOrderBy !== undefined &&\n typeof this.typeaheadOrderBy === 'object' &&\n Object.keys(this.typeaheadOrderBy).length === 0\n ) {\n console.error('Field and direction properties for typeaheadOrderBy have to be set according to documentation!');\n\n return options;\n }\n\n const { field, direction } = this.typeaheadOrderBy || {};\n\n if (!direction || !(direction === 'asc' || direction === 'desc')) {\n console.error('typeaheadOrderBy direction has to equal \"asc\" or \"desc\". Please follow the documentation.');\n\n return options;\n }\n\n if (typeof options[0] === 'string') {\n return direction === 'asc' ? options.sort() : options.sort().reverse();\n }\n\n if (!field || typeof field !== 'string') {\n console.error('typeaheadOrderBy field has to set according to the documentation.');\n\n return options;\n }\n\n return options.sort((a: TypeaheadOption, b: TypeaheadOption) => {\n const stringA = getValueFromObject(a, field);\n const stringB = getValueFromObject(b, field);\n\n if (stringA < stringB) {\n return direction === 'asc' ? -1 : 1;\n }\n\n if (stringA > stringB) {\n return direction === 'asc' ? 1 : -1;\n }\n\n return 0;\n });\n }\n\n protected hasMatches(): boolean {\n return this._matches.length > 0;\n }\n\n protected checkDelimitersConflict(): void {\n if (\n this.typeaheadMultipleSearch &&\n this.typeaheadSingleWords &&\n this.haveCommonCharacters(\n `${this.typeaheadPhraseDelimiters}${this.typeaheadWordDelimiters}`,\n this.typeaheadMultipleSearchDelimiters\n )\n ) {\n throw new Error(`Delimiters used in typeaheadMultipleSearchDelimiters must be different\n from delimiters used in typeaheadWordDelimiters (current value: ${this.typeaheadWordDelimiters}) and\n typeaheadPhraseDelimiters (current value: ${this.typeaheadPhraseDelimiters}).\n Please refer to the documentation`);\n }\n }\n\n protected haveCommonCharacters(str1: string, str2: string) {\n for (let i = 0; i < str1.length; i++) {\n if (str1.charAt(i).indexOf(str2) > -1) {\n return true;\n }\n }\n\n return false;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { TypeaheadContainerComponent } from './typeahead-container.component';\nimport { TypeaheadDirective } from './typeahead.directive';\n\n@NgModule({\n imports: [CommonModule, TypeaheadContainerComponent, TypeaheadDirective],\n exports: [TypeaheadContainerComponent, TypeaheadDirective]\n})\nexport class TypeaheadModule {\n // @deprecated method not required anymore, will be deleted in v19.0.0\n static forRoot(): ModuleWithProviders<TypeaheadModule> {\n return {\n ngModule: TypeaheadModule,\n providers: []\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.TypeaheadConfig"],"mappings":";;;;;;;;;;;;;AAAa,MAAA,QAAQ,GAA8B;AAC/C,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,EAAE,IAAI;AACT,IAAA,GAAG,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"}
|
1
|
+
{"version":3,"file":"ngx-bootstrap-typeahead.mjs","sources":["../tmp-esm2022/latin-map.js","../tmp-esm2022/typeahead-options.class.js","../tmp-esm2022/typeahead-match.class.js","../tmp-esm2022/typeahead-utils.js","../tmp-esm2022/typeahead-animations.js","../tmp-esm2022/typeahead-container.component.js","../tmp-esm2022/typeahead.config.js","../tmp-esm2022/typeahead.directive.js","../tmp-esm2022/typeahead.module.js","../tmp-esm2022/ngx-bootstrap-typeahead.js"],"sourcesContent":["export const latinMap = {\n 'Á': 'A',\n 'Ă': 'A',\n 'Ắ': 'A',\n 'Ặ': 'A',\n 'Ằ': 'A',\n 'Ẳ': 'A',\n 'Ẵ': 'A',\n 'Ǎ': 'A',\n 'Â': 'A',\n 'Ấ': 'A',\n 'Ậ': 'A',\n 'Ầ': 'A',\n 'Ẩ': 'A',\n 'Ẫ': 'A',\n 'Ä': 'A',\n 'Ǟ': 'A',\n 'Ȧ': 'A',\n 'Ǡ': 'A',\n 'Ạ': 'A',\n 'Ȁ': 'A',\n 'À': 'A',\n 'Ả': 'A',\n 'Ȃ': 'A',\n 'Ā': 'A',\n 'Ą': 'A',\n 'Å': 'A',\n 'Ǻ': 'A',\n 'Ḁ': 'A',\n 'Ⱥ': 'A',\n 'Ã': 'A',\n 'Ꜳ': 'AA',\n 'Æ': 'AE',\n 'Ǽ': 'AE',\n 'Ǣ': 'AE',\n 'Ꜵ': 'AO',\n 'Ꜷ': 'AU',\n 'Ꜹ': 'AV',\n 'Ꜻ': 'AV',\n 'Ꜽ': 'AY',\n 'Ḃ': 'B',\n 'Ḅ': 'B',\n 'Ɓ': 'B',\n 'Ḇ': 'B',\n 'Ƀ': 'B',\n 'Ƃ': 'B',\n 'Ć': 'C',\n 'Č': 'C',\n 'Ç': 'C',\n 'Ḉ': 'C',\n 'Ĉ': 'C',\n 'Ċ': 'C',\n 'Ƈ': 'C',\n 'Ȼ': 'C',\n 'Ď': 'D',\n 'Ḑ': 'D',\n 'Ḓ': 'D',\n 'Ḋ': 'D',\n 'Ḍ': 'D',\n 'Ɗ': 'D',\n 'Ḏ': 'D',\n 'Dz': 'D',\n 'Dž': 'D',\n 'Đ': 'D',\n 'Ƌ': 'D',\n 'DZ': 'DZ',\n 'DŽ': 'DZ',\n 'É': 'E',\n 'Ĕ': 'E',\n 'Ě': 'E',\n 'Ȩ': 'E',\n 'Ḝ': 'E',\n 'Ê': 'E',\n 'Ế': 'E',\n 'Ệ': 'E',\n 'Ề': 'E',\n 'Ể': 'E',\n 'Ễ': 'E',\n 'Ḙ': 'E',\n 'Ë': 'E',\n 'Ė': 'E',\n 'Ẹ': 'E',\n 'Ȅ': 'E',\n 'È': 'E',\n 'Ẻ': 'E',\n 'Ȇ': 'E',\n 'Ē': 'E',\n 'Ḗ': 'E',\n 'Ḕ': 'E',\n 'Ę': 'E',\n 'Ɇ': 'E',\n 'Ẽ': 'E',\n 'Ḛ': 'E',\n 'Ꝫ': 'ET',\n 'Ḟ': 'F',\n 'Ƒ': 'F',\n 'Ǵ': 'G',\n 'Ğ': 'G',\n 'Ǧ': 'G',\n 'Ģ': 'G',\n 'Ĝ': 'G',\n 'Ġ': 'G',\n 'Ɠ': 'G',\n 'Ḡ': 'G',\n 'Ǥ': 'G',\n 'Ḫ': 'H',\n 'Ȟ': 'H',\n 'Ḩ': 'H',\n 'Ĥ': 'H',\n 'Ⱨ': 'H',\n 'Ḧ': 'H',\n 'Ḣ': 'H',\n 'Ḥ': 'H',\n 'Ħ': 'H',\n 'Í': 'I',\n 'Ĭ': 'I',\n 'Ǐ': 'I',\n 'Î': 'I',\n 'Ï': 'I',\n 'Ḯ': 'I',\n 'İ': 'I',\n 'Ị': 'I',\n 'Ȉ': 'I',\n 'Ì': 'I',\n 'Ỉ': 'I',\n 'Ȋ': 'I',\n 'Ī': 'I',\n 'Į': 'I',\n 'Ɨ': 'I',\n 'Ĩ': 'I',\n 'Ḭ': 'I',\n 'Ꝺ': 'D',\n 'Ꝼ': 'F',\n 'Ᵹ': 'G',\n 'Ꞃ': 'R',\n 'Ꞅ': 'S',\n 'Ꞇ': 'T',\n 'Ꝭ': 'IS',\n 'Ĵ': 'J',\n 'Ɉ': 'J',\n 'Ḱ': 'K',\n 'Ǩ': 'K',\n 'Ķ': 'K',\n 'Ⱪ': 'K',\n 'Ꝃ': 'K',\n 'Ḳ': 'K',\n 'Ƙ': 'K',\n 'Ḵ': 'K',\n 'Ꝁ': 'K',\n 'Ꝅ': 'K',\n 'Ĺ': 'L',\n 'Ƚ': 'L',\n 'Ľ': 'L',\n 'Ļ': 'L',\n 'Ḽ': 'L',\n 'Ḷ': 'L',\n 'Ḹ': 'L',\n 'Ⱡ': 'L',\n 'Ꝉ': 'L',\n 'Ḻ': 'L',\n 'Ŀ': 'L',\n 'Ɫ': 'L',\n 'Lj': 'L',\n 'Ł': 'L',\n 'LJ': 'LJ',\n 'Ḿ': 'M',\n 'Ṁ': 'M',\n 'Ṃ': 'M',\n 'Ɱ': 'M',\n 'Ń': 'N',\n 'Ň': 'N',\n 'Ņ': 'N',\n 'Ṋ': 'N',\n 'Ṅ': 'N',\n 'Ṇ': 'N',\n 'Ǹ': 'N',\n 'Ɲ': 'N',\n 'Ṉ': 'N',\n 'Ƞ': 'N',\n 'Nj': 'N',\n 'Ñ': 'N',\n 'NJ': 'NJ',\n 'Ó': 'O',\n 'Ŏ': 'O',\n 'Ǒ': 'O',\n 'Ô': 'O',\n 'Ố': 'O',\n 'Ộ': 'O',\n 'Ồ': 'O',\n 'Ổ': 'O',\n 'Ỗ': 'O',\n 'Ö': 'O',\n 'Ȫ': 'O',\n 'Ȯ': 'O',\n 'Ȱ': 'O',\n 'Ọ': 'O',\n 'Ő': 'O',\n 'Ȍ': 'O',\n 'Ò': 'O',\n 'Ỏ': 'O',\n 'Ơ': 'O',\n 'Ớ': 'O',\n 'Ợ': 'O',\n 'Ờ': 'O',\n 'Ở': 'O',\n 'Ỡ': 'O',\n 'Ȏ': 'O',\n 'Ꝋ': 'O',\n 'Ꝍ': 'O',\n 'Ō': 'O',\n 'Ṓ': 'O',\n 'Ṑ': 'O',\n 'Ɵ': 'O',\n 'Ǫ': 'O',\n 'Ǭ': 'O',\n 'Ø': 'O',\n 'Ǿ': 'O',\n 'Õ': 'O',\n 'Ṍ': 'O',\n 'Ṏ': 'O',\n 'Ȭ': 'O',\n 'Ƣ': 'OI',\n 'Ꝏ': 'OO',\n 'Ɛ': 'E',\n 'Ɔ': 'O',\n 'Ȣ': 'OU',\n 'Ṕ': 'P',\n 'Ṗ': 'P',\n 'Ꝓ': 'P',\n 'Ƥ': 'P',\n 'Ꝕ': 'P',\n 'Ᵽ': 'P',\n 'Ꝑ': 'P',\n 'Ꝙ': 'Q',\n 'Ꝗ': 'Q',\n 'Ŕ': 'R',\n 'Ř': 'R',\n 'Ŗ': 'R',\n 'Ṙ': 'R',\n 'Ṛ': 'R',\n 'Ṝ': 'R',\n 'Ȑ': 'R',\n 'Ȓ': 'R',\n 'Ṟ': 'R',\n 'Ɍ': 'R',\n 'Ɽ': 'R',\n 'Ꜿ': 'C',\n 'Ǝ': 'E',\n 'Ś': 'S',\n 'Ṥ': 'S',\n 'Š': 'S',\n 'Ṧ': 'S',\n 'Ş': 'S',\n 'Ŝ': 'S',\n 'Ș': 'S',\n 'Ṡ': 'S',\n 'Ṣ': 'S',\n 'Ṩ': 'S',\n 'Ť': 'T',\n 'Ţ': 'T',\n 'Ṱ': 'T',\n 'Ț': 'T',\n 'Ⱦ': 'T',\n 'Ṫ': 'T',\n 'Ṭ': 'T',\n 'Ƭ': 'T',\n 'Ṯ': 'T',\n 'Ʈ': 'T',\n 'Ŧ': 'T',\n 'Ɐ': 'A',\n 'Ꞁ': 'L',\n 'Ɯ': 'M',\n 'Ʌ': 'V',\n 'Ꜩ': 'TZ',\n 'Ú': 'U',\n 'Ŭ': 'U',\n 'Ǔ': 'U',\n 'Û': 'U',\n 'Ṷ': 'U',\n 'Ü': 'U',\n 'Ǘ': 'U',\n 'Ǚ': 'U',\n 'Ǜ': 'U',\n 'Ǖ': 'U',\n 'Ṳ': 'U',\n 'Ụ': 'U',\n 'Ű': 'U',\n 'Ȕ': 'U',\n 'Ù': 'U',\n 'Ủ': 'U',\n 'Ư': 'U',\n 'Ứ': 'U',\n 'Ự': 'U',\n 'Ừ': 'U',\n 'Ử': 'U',\n 'Ữ': 'U',\n 'Ȗ': 'U',\n 'Ū': 'U',\n 'Ṻ': 'U',\n 'Ų': 'U',\n 'Ů': 'U',\n 'Ũ': 'U',\n 'Ṹ': 'U',\n 'Ṵ': 'U',\n 'Ꝟ': 'V',\n 'Ṿ': 'V',\n 'Ʋ': 'V',\n 'Ṽ': 'V',\n 'Ꝡ': 'VY',\n 'Ẃ': 'W',\n 'Ŵ': 'W',\n 'Ẅ': 'W',\n 'Ẇ': 'W',\n 'Ẉ': 'W',\n 'Ẁ': 'W',\n 'Ⱳ': 'W',\n 'Ẍ': 'X',\n 'Ẋ': 'X',\n 'Ý': 'Y',\n 'Ŷ': 'Y',\n 'Ÿ': 'Y',\n 'Ẏ': 'Y',\n 'Ỵ': 'Y',\n 'Ỳ': 'Y',\n 'Ƴ': 'Y',\n 'Ỷ': 'Y',\n 'Ỿ': 'Y',\n 'Ȳ': 'Y',\n 'Ɏ': 'Y',\n 'Ỹ': 'Y',\n 'Ź': 'Z',\n 'Ž': 'Z',\n 'Ẑ': 'Z',\n 'Ⱬ': 'Z',\n 'Ż': 'Z',\n 'Ẓ': 'Z',\n 'Ȥ': 'Z',\n 'Ẕ': 'Z',\n 'Ƶ': 'Z',\n 'IJ': 'IJ',\n 'Œ': 'OE',\n 'ᴀ': 'A',\n 'ᴁ': 'AE',\n 'ʙ': 'B',\n 'ᴃ': 'B',\n 'ᴄ': 'C',\n 'ᴅ': 'D',\n 'ᴇ': 'E',\n 'ꜰ': 'F',\n 'ɢ': 'G',\n 'ʛ': 'G',\n 'ʜ': 'H',\n 'ɪ': 'I',\n 'ʁ': 'R',\n 'ᴊ': 'J',\n 'ᴋ': 'K',\n 'ʟ': 'L',\n 'ᴌ': 'L',\n 'ᴍ': 'M',\n 'ɴ': 'N',\n 'ᴏ': 'O',\n 'ɶ': 'OE',\n 'ᴐ': 'O',\n 'ᴕ': 'OU',\n 'ᴘ': 'P',\n 'ʀ': 'R',\n 'ᴎ': 'N',\n 'ᴙ': 'R',\n 'ꜱ': 'S',\n 'ᴛ': 'T',\n 'ⱻ': 'E',\n 'ᴚ': 'R',\n 'ᴜ': 'U',\n 'ᴠ': 'V',\n 'ᴡ': 'W',\n 'ʏ': 'Y',\n 'ᴢ': 'Z',\n 'á': 'a',\n 'ă': 'a',\n 'ắ': 'a',\n 'ặ': 'a',\n 'ằ': 'a',\n 'ẳ': 'a',\n 'ẵ': 'a',\n 'ǎ': 'a',\n 'â': 'a',\n 'ấ': 'a',\n 'ậ': 'a',\n 'ầ': 'a',\n 'ẩ': 'a',\n 'ẫ': 'a',\n 'ä': 'a',\n 'ǟ': 'a',\n 'ȧ': 'a',\n 'ǡ': 'a',\n 'ạ': 'a',\n 'ȁ': 'a',\n 'à': 'a',\n 'ả': 'a',\n 'ȃ': 'a',\n 'ā': 'a',\n 'ą': 'a',\n 'ᶏ': 'a',\n 'ẚ': 'a',\n 'å': 'a',\n 'ǻ': 'a',\n 'ḁ': 'a',\n 'ⱥ': 'a',\n 'ã': 'a',\n 'ꜳ': 'aa',\n 'æ': 'ae',\n 'ǽ': 'ae',\n 'ǣ': 'ae',\n 'ꜵ': 'ao',\n 'ꜷ': 'au',\n 'ꜹ': 'av',\n 'ꜻ': 'av',\n 'ꜽ': 'ay',\n 'ḃ': 'b',\n 'ḅ': 'b',\n 'ɓ': 'b',\n 'ḇ': 'b',\n 'ᵬ': 'b',\n 'ᶀ': 'b',\n 'ƀ': 'b',\n 'ƃ': 'b',\n 'ɵ': 'o',\n 'ć': 'c',\n 'č': 'c',\n 'ç': 'c',\n 'ḉ': 'c',\n 'ĉ': 'c',\n 'ɕ': 'c',\n 'ċ': 'c',\n 'ƈ': 'c',\n 'ȼ': 'c',\n 'ď': 'd',\n 'ḑ': 'd',\n 'ḓ': 'd',\n 'ȡ': 'd',\n 'ḋ': 'd',\n 'ḍ': 'd',\n 'ɗ': 'd',\n 'ᶑ': 'd',\n 'ḏ': 'd',\n 'ᵭ': 'd',\n 'ᶁ': 'd',\n 'đ': 'd',\n 'ɖ': 'd',\n 'ƌ': 'd',\n 'ı': 'i',\n 'ȷ': 'j',\n 'ɟ': 'j',\n 'ʄ': 'j',\n 'dz': 'dz',\n 'dž': 'dz',\n 'é': 'e',\n 'ĕ': 'e',\n 'ě': 'e',\n 'ȩ': 'e',\n 'ḝ': 'e',\n 'ê': 'e',\n 'ế': 'e',\n 'ệ': 'e',\n 'ề': 'e',\n 'ể': 'e',\n 'ễ': 'e',\n 'ḙ': 'e',\n 'ë': 'e',\n 'ė': 'e',\n 'ẹ': 'e',\n 'ȅ': 'e',\n 'è': 'e',\n 'ẻ': 'e',\n 'ȇ': 'e',\n 'ē': 'e',\n 'ḗ': 'e',\n 'ḕ': 'e',\n 'ⱸ': 'e',\n 'ę': 'e',\n 'ᶒ': 'e',\n 'ɇ': 'e',\n 'ẽ': 'e',\n 'ḛ': 'e',\n 'ꝫ': 'et',\n 'ḟ': 'f',\n 'ƒ': 'f',\n 'ᵮ': 'f',\n 'ᶂ': 'f',\n 'ǵ': 'g',\n 'ğ': 'g',\n 'ǧ': 'g',\n 'ģ': 'g',\n 'ĝ': 'g',\n 'ġ': 'g',\n 'ɠ': 'g',\n 'ḡ': 'g',\n 'ᶃ': 'g',\n 'ǥ': 'g',\n 'ḫ': 'h',\n 'ȟ': 'h',\n 'ḩ': 'h',\n 'ĥ': 'h',\n 'ⱨ': 'h',\n 'ḧ': 'h',\n 'ḣ': 'h',\n 'ḥ': 'h',\n 'ɦ': 'h',\n 'ẖ': 'h',\n 'ħ': 'h',\n 'ƕ': 'hv',\n 'í': 'i',\n 'ĭ': 'i',\n 'ǐ': 'i',\n 'î': 'i',\n 'ï': 'i',\n 'ḯ': 'i',\n 'ị': 'i',\n 'ȉ': 'i',\n 'ì': 'i',\n 'ỉ': 'i',\n 'ȋ': 'i',\n 'ī': 'i',\n 'į': 'i',\n 'ᶖ': 'i',\n 'ɨ': 'i',\n 'ĩ': 'i',\n 'ḭ': 'i',\n 'ꝺ': 'd',\n 'ꝼ': 'f',\n 'ᵹ': 'g',\n 'ꞃ': 'r',\n 'ꞅ': 's',\n 'ꞇ': 't',\n 'ꝭ': 'is',\n 'ǰ': 'j',\n 'ĵ': 'j',\n 'ʝ': 'j',\n 'ɉ': 'j',\n 'ḱ': 'k',\n 'ǩ': 'k',\n 'ķ': 'k',\n 'ⱪ': 'k',\n 'ꝃ': 'k',\n 'ḳ': 'k',\n 'ƙ': 'k',\n 'ḵ': 'k',\n 'ᶄ': 'k',\n 'ꝁ': 'k',\n 'ꝅ': 'k',\n 'ĺ': 'l',\n 'ƚ': 'l',\n 'ɬ': 'l',\n 'ľ': 'l',\n 'ļ': 'l',\n 'ḽ': 'l',\n 'ȴ': 'l',\n 'ḷ': 'l',\n 'ḹ': 'l',\n 'ⱡ': 'l',\n 'ꝉ': 'l',\n 'ḻ': 'l',\n 'ŀ': 'l',\n 'ɫ': 'l',\n 'ᶅ': 'l',\n 'ɭ': 'l',\n 'ł': 'l',\n 'lj': 'lj',\n 'ſ': 's',\n 'ẜ': 's',\n 'ẛ': 's',\n 'ẝ': 's',\n 'ḿ': 'm',\n 'ṁ': 'm',\n 'ṃ': 'm',\n 'ɱ': 'm',\n 'ᵯ': 'm',\n 'ᶆ': 'm',\n 'ń': 'n',\n 'ň': 'n',\n 'ņ': 'n',\n 'ṋ': 'n',\n 'ȵ': 'n',\n 'ṅ': 'n',\n 'ṇ': 'n',\n 'ǹ': 'n',\n 'ɲ': 'n',\n 'ṉ': 'n',\n 'ƞ': 'n',\n 'ᵰ': 'n',\n 'ᶇ': 'n',\n 'ɳ': 'n',\n 'ñ': 'n',\n 'nj': 'nj',\n 'ó': 'o',\n 'ŏ': 'o',\n 'ǒ': 'o',\n 'ô': 'o',\n 'ố': 'o',\n 'ộ': 'o',\n 'ồ': 'o',\n 'ổ': 'o',\n 'ỗ': 'o',\n 'ö': 'o',\n 'ȫ': 'o',\n 'ȯ': 'o',\n 'ȱ': 'o',\n 'ọ': 'o',\n 'ő': 'o',\n 'ȍ': 'o',\n 'ò': 'o',\n 'ỏ': 'o',\n 'ơ': 'o',\n 'ớ': 'o',\n 'ợ': 'o',\n 'ờ': 'o',\n 'ở': 'o',\n 'ỡ': 'o',\n 'ȏ': 'o',\n 'ꝋ': 'o',\n 'ꝍ': 'o',\n 'ⱺ': 'o',\n 'ō': 'o',\n 'ṓ': 'o',\n 'ṑ': 'o',\n 'ǫ': 'o',\n 'ǭ': 'o',\n 'ø': 'o',\n 'ǿ': 'o',\n 'õ': 'o',\n 'ṍ': 'o',\n 'ṏ': 'o',\n 'ȭ': 'o',\n 'ƣ': 'oi',\n 'ꝏ': 'oo',\n 'ɛ': 'e',\n 'ᶓ': 'e',\n 'ɔ': 'o',\n 'ᶗ': 'o',\n 'ȣ': 'ou',\n 'ṕ': 'p',\n 'ṗ': 'p',\n 'ꝓ': 'p',\n 'ƥ': 'p',\n 'ᵱ': 'p',\n 'ᶈ': 'p',\n 'ꝕ': 'p',\n 'ᵽ': 'p',\n 'ꝑ': 'p',\n 'ꝙ': 'q',\n 'ʠ': 'q',\n 'ɋ': 'q',\n 'ꝗ': 'q',\n 'ŕ': 'r',\n 'ř': 'r',\n 'ŗ': 'r',\n 'ṙ': 'r',\n 'ṛ': 'r',\n 'ṝ': 'r',\n 'ȑ': 'r',\n 'ɾ': 'r',\n 'ᵳ': 'r',\n 'ȓ': 'r',\n 'ṟ': 'r',\n 'ɼ': 'r',\n 'ᵲ': 'r',\n 'ᶉ': 'r',\n 'ɍ': 'r',\n 'ɽ': 'r',\n 'ↄ': 'c',\n 'ꜿ': 'c',\n 'ɘ': 'e',\n 'ɿ': 'r',\n 'ś': 's',\n 'ṥ': 's',\n 'š': 's',\n 'ṧ': 's',\n 'ş': 's',\n 'ŝ': 's',\n 'ș': 's',\n 'ṡ': 's',\n 'ṣ': 's',\n 'ṩ': 's',\n 'ʂ': 's',\n 'ᵴ': 's',\n 'ᶊ': 's',\n 'ȿ': 's',\n 'ɡ': 'g',\n 'ᴑ': 'o',\n 'ᴓ': 'o',\n 'ᴝ': 'u',\n 'ť': 't',\n 'ţ': 't',\n 'ṱ': 't',\n 'ț': 't',\n 'ȶ': 't',\n 'ẗ': 't',\n 'ⱦ': 't',\n 'ṫ': 't',\n 'ṭ': 't',\n 'ƭ': 't',\n 'ṯ': 't',\n 'ᵵ': 't',\n 'ƫ': 't',\n 'ʈ': 't',\n 'ŧ': 't',\n 'ᵺ': 'th',\n 'ɐ': 'a',\n 'ᴂ': 'ae',\n 'ǝ': 'e',\n 'ᵷ': 'g',\n 'ɥ': 'h',\n 'ʮ': 'h',\n 'ʯ': 'h',\n 'ᴉ': 'i',\n 'ʞ': 'k',\n 'ꞁ': 'l',\n 'ɯ': 'm',\n 'ɰ': 'm',\n 'ᴔ': 'oe',\n 'ɹ': 'r',\n 'ɻ': 'r',\n 'ɺ': 'r',\n 'ⱹ': 'r',\n 'ʇ': 't',\n 'ʌ': 'v',\n 'ʍ': 'w',\n 'ʎ': 'y',\n 'ꜩ': 'tz',\n 'ú': 'u',\n 'ŭ': 'u',\n 'ǔ': 'u',\n 'û': 'u',\n 'ṷ': 'u',\n 'ü': 'u',\n 'ǘ': 'u',\n 'ǚ': 'u',\n 'ǜ': 'u',\n 'ǖ': 'u',\n 'ṳ': 'u',\n 'ụ': 'u',\n 'ű': 'u',\n 'ȕ': 'u',\n 'ù': 'u',\n 'ủ': 'u',\n 'ư': 'u',\n 'ứ': 'u',\n 'ự': 'u',\n 'ừ': 'u',\n 'ử': 'u',\n 'ữ': 'u',\n 'ȗ': 'u',\n 'ū': 'u',\n 'ṻ': 'u',\n 'ų': 'u',\n 'ᶙ': 'u',\n 'ů': 'u',\n 'ũ': 'u',\n 'ṹ': 'u',\n 'ṵ': 'u',\n 'ᵫ': 'ue',\n 'ꝸ': 'um',\n 'ⱴ': 'v',\n 'ꝟ': 'v',\n 'ṿ': 'v',\n 'ʋ': 'v',\n 'ᶌ': 'v',\n 'ⱱ': 'v',\n 'ṽ': 'v',\n 'ꝡ': 'vy',\n 'ẃ': 'w',\n 'ŵ': 'w',\n 'ẅ': 'w',\n 'ẇ': 'w',\n 'ẉ': 'w',\n 'ẁ': 'w',\n 'ⱳ': 'w',\n 'ẘ': 'w',\n 'ẍ': 'x',\n 'ẋ': 'x',\n 'ᶍ': 'x',\n 'ý': 'y',\n 'ŷ': 'y',\n 'ÿ': 'y',\n 'ẏ': 'y',\n 'ỵ': 'y',\n 'ỳ': 'y',\n 'ƴ': 'y',\n 'ỷ': 'y',\n 'ỿ': 'y',\n 'ȳ': 'y',\n 'ẙ': 'y',\n 'ɏ': 'y',\n 'ỹ': 'y',\n 'ź': 'z',\n 'ž': 'z',\n 'ẑ': 'z',\n 'ʑ': 'z',\n 'ⱬ': 'z',\n 'ż': 'z',\n 'ẓ': 'z',\n 'ȥ': 'z',\n 'ẕ': 'z',\n 'ᵶ': 'z',\n 'ᶎ': 'z',\n 'ʐ': 'z',\n 'ƶ': 'z',\n 'ɀ': 'z',\n 'ff': 'ff',\n 'ffi': 'ffi',\n 'ffl': 'ffl',\n 'fi': 'fi',\n 'fl': 'fl',\n 'ij': 'ij',\n 'œ': 'oe',\n 'st': 'st',\n 'ₐ': 'a',\n 'ₑ': 'e',\n 'ᵢ': 'i',\n 'ⱼ': 'j',\n 'ₒ': 'o',\n 'ᵣ': 'r',\n 'ᵤ': 'u',\n 'ᵥ': 'v',\n 'ₓ': 'x'\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF0aW4tbWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3R5cGVhaGVhZC9sYXRpbi1tYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUE4QjtJQUMvQyxHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxLQUFLO0lBQ1YsR0FBRyxFQUFFLEtBQUs7SUFDVixHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0NBQ1gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBsYXRpbk1hcDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAnw4EnOiAnQScsXG4gICAgJ8SCJzogJ0EnLFxuICAgICfhuq4nOiAnQScsXG4gICAgJ+G6tic6ICdBJyxcbiAgICAn4bqwJzogJ0EnLFxuICAgICfhurInOiAnQScsXG4gICAgJ+G6tCc6ICdBJyxcbiAgICAnx40nOiAnQScsXG4gICAgJ8OCJzogJ0EnLFxuICAgICfhuqQnOiAnQScsXG4gICAgJ+G6rCc6ICdBJyxcbiAgICAn4bqmJzogJ0EnLFxuICAgICfhuqgnOiAnQScsXG4gICAgJ+G6qic6ICdBJyxcbiAgICAnw4QnOiAnQScsXG4gICAgJ8eeJzogJ0EnLFxuICAgICfIpic6ICdBJyxcbiAgICAnx6AnOiAnQScsXG4gICAgJ+G6oCc6ICdBJyxcbiAgICAnyIAnOiAnQScsXG4gICAgJ8OAJzogJ0EnLFxuICAgICfhuqInOiAnQScsXG4gICAgJ8iCJzogJ0EnLFxuICAgICfEgCc6ICdBJyxcbiAgICAnxIQnOiAnQScsXG4gICAgJ8OFJzogJ0EnLFxuICAgICfHuic6ICdBJyxcbiAgICAn4biAJzogJ0EnLFxuICAgICfIuic6ICdBJyxcbiAgICAnw4MnOiAnQScsXG4gICAgJ+qcsic6ICdBQScsXG4gICAgJ8OGJzogJ0FFJyxcbiAgICAnx7wnOiAnQUUnLFxuICAgICfHoic6ICdBRScsXG4gICAgJ+qctCc6ICdBTycsXG4gICAgJ+qctic6ICdBVScsXG4gICAgJ+qcuCc6ICdBVicsXG4gICAgJ+qcuic6ICdBVicsXG4gICAgJ+qcvCc6ICdBWScsXG4gICAgJ+G4gic6ICdCJyxcbiAgICAn4biEJzogJ0InLFxuICAgICfGgSc6ICdCJyxcbiAgICAn4biGJzogJ0InLFxuICAgICfJgyc6ICdCJyxcbiAgICAnxoInOiAnQicsXG4gICAgJ8SGJzogJ0MnLFxuICAgICfEjCc6ICdDJyxcbiAgICAnw4cnOiAnQycsXG4gICAgJ+G4iCc6ICdDJyxcbiAgICAnxIgnOiAnQycsXG4gICAgJ8SKJzogJ0MnLFxuICAgICfGhyc6ICdDJyxcbiAgICAnyLsnOiAnQycsXG4gICAgJ8SOJzogJ0QnLFxuICAgICfhuJAnOiAnRCcsXG4gICAgJ+G4kic6ICdEJyxcbiAgICAn4biKJzogJ0QnLFxuICAgICfhuIwnOiAnRCcsXG4gICAgJ8aKJzogJ0QnLFxuICAgICfhuI4nOiAnRCcsXG4gICAgJ8eyJzogJ0QnLFxuICAgICfHhSc6ICdEJyxcbiAgICAnxJAnOiAnRCcsXG4gICAgJ8aLJzogJ0QnLFxuICAgICfHsSc6ICdEWicsXG4gICAgJ8eEJzogJ0RaJyxcbiAgICAnw4knOiAnRScsXG4gICAgJ8SUJzogJ0UnLFxuICAgICfEmic6ICdFJyxcbiAgICAnyKgnOiAnRScsXG4gICAgJ+G4nCc6ICdFJyxcbiAgICAnw4onOiAnRScsXG4gICAgJ+G6vic6ICdFJyxcbiAgICAn4buGJzogJ0UnLFxuICAgICfhu4AnOiAnRScsXG4gICAgJ+G7gic6ICdFJyxcbiAgICAn4buEJzogJ0UnLFxuICAgICfhuJgnOiAnRScsXG4gICAgJ8OLJzogJ0UnLFxuICAgICfElic6ICdFJyxcbiAgICAn4bq4JzogJ0UnLFxuICAgICfIhCc6ICdFJyxcbiAgICAnw4gnOiAnRScsXG4gICAgJ+G6uic6ICdFJyxcbiAgICAnyIYnOiAnRScsXG4gICAgJ8SSJzogJ0UnLFxuICAgICfhuJYnOiAnRScsXG4gICAgJ+G4lCc6ICdFJyxcbiAgICAnxJgnOiAnRScsXG4gICAgJ8mGJzogJ0UnLFxuICAgICfhurwnOiAnRScsXG4gICAgJ+G4mic6ICdFJyxcbiAgICAn6p2qJzogJ0VUJyxcbiAgICAn4bieJzogJ0YnLFxuICAgICfGkSc6ICdGJyxcbiAgICAnx7QnOiAnRycsXG4gICAgJ8SeJzogJ0cnLFxuICAgICfHpic6ICdHJyxcbiAgICAnxKInOiAnRycsXG4gICAgJ8ScJzogJ0cnLFxuICAgICfEoCc6ICdHJyxcbiAgICAnxpMnOiAnRycsXG4gICAgJ+G4oCc6ICdHJyxcbiAgICAnx6QnOiAnRycsXG4gICAgJ+G4qic6ICdIJyxcbiAgICAnyJ4nOiAnSCcsXG4gICAgJ+G4qCc6ICdIJyxcbiAgICAnxKQnOiAnSCcsXG4gICAgJ+Kxpyc6ICdIJyxcbiAgICAn4bimJzogJ0gnLFxuICAgICfhuKInOiAnSCcsXG4gICAgJ+G4pCc6ICdIJyxcbiAgICAnxKYnOiAnSCcsXG4gICAgJ8ONJzogJ0knLFxuICAgICfErCc6ICdJJyxcbiAgICAnx48nOiAnSScsXG4gICAgJ8OOJzogJ0knLFxuICAgICfDjyc6ICdJJyxcbiAgICAn4biuJzogJ0knLFxuICAgICfEsCc6ICdJJyxcbiAgICAn4buKJzogJ0knLFxuICAgICfIiCc6ICdJJyxcbiAgICAnw4wnOiAnSScsXG4gICAgJ+G7iCc6ICdJJyxcbiAgICAnyIonOiAnSScsXG4gICAgJ8SqJzogJ0knLFxuICAgICfEric6ICdJJyxcbiAgICAnxpcnOiAnSScsXG4gICAgJ8SoJzogJ0knLFxuICAgICfhuKwnOiAnSScsXG4gICAgJ+qduSc6ICdEJyxcbiAgICAn6p27JzogJ0YnLFxuICAgICfqnb0nOiAnRycsXG4gICAgJ+qegic6ICdSJyxcbiAgICAn6p6EJzogJ1MnLFxuICAgICfqnoYnOiAnVCcsXG4gICAgJ+qdrCc6ICdJUycsXG4gICAgJ8S0JzogJ0onLFxuICAgICfJiCc6ICdKJyxcbiAgICAn4biwJzogJ0snLFxuICAgICfHqCc6ICdLJyxcbiAgICAnxLYnOiAnSycsXG4gICAgJ+KxqSc6ICdLJyxcbiAgICAn6p2CJzogJ0snLFxuICAgICfhuLInOiAnSycsXG4gICAgJ8aYJzogJ0snLFxuICAgICfhuLQnOiAnSycsXG4gICAgJ+qdgCc6ICdLJyxcbiAgICAn6p2EJzogJ0snLFxuICAgICfEuSc6ICdMJyxcbiAgICAnyL0nOiAnTCcsXG4gICAgJ8S9JzogJ0wnLFxuICAgICfEuyc6ICdMJyxcbiAgICAn4bi8JzogJ0wnLFxuICAgICfhuLYnOiAnTCcsXG4gICAgJ+G4uCc6ICdMJyxcbiAgICAn4rGgJzogJ0wnLFxuICAgICfqnYgnOiAnTCcsXG4gICAgJ+G4uic6ICdMJyxcbiAgICAnxL8nOiAnTCcsXG4gICAgJ+Kxoic6ICdMJyxcbiAgICAnx4gnOiAnTCcsXG4gICAgJ8WBJzogJ0wnLFxuICAgICfHhyc6ICdMSicsXG4gICAgJ+G4vic6ICdNJyxcbiAgICAn4bmAJzogJ00nLFxuICAgICfhuYInOiAnTScsXG4gICAgJ+Kxric6ICdNJyxcbiAgICAnxYMnOiAnTicsXG4gICAgJ8WHJzogJ04nLFxuICAgICfFhSc6ICdOJyxcbiAgICAn4bmKJzogJ04nLFxuICAgICfhuYQnOiAnTicsXG4gICAgJ+G5hic6ICdOJyxcbiAgICAnx7gnOiAnTicsXG4gICAgJ8adJzogJ04nLFxuICAgICfhuYgnOiAnTicsXG4gICAgJ8igJzogJ04nLFxuICAgICfHiyc6ICdOJyxcbiAgICAnw5EnOiAnTicsXG4gICAgJ8eKJzogJ05KJyxcbiAgICAnw5MnOiAnTycsXG4gICAgJ8WOJzogJ08nLFxuICAgICfHkSc6ICdPJyxcbiAgICAnw5QnOiAnTycsXG4gICAgJ+G7kCc6ICdPJyxcbiAgICAn4buYJzogJ08nLFxuICAgICfhu5InOiAnTycsXG4gICAgJ+G7lCc6ICdPJyxcbiAgICAn4buWJzogJ08nLFxuICAgICfDlic6ICdPJyxcbiAgICAnyKonOiAnTycsXG4gICAgJ8iuJzogJ08nLFxuICAgICfIsCc6ICdPJyxcbiAgICAn4buMJzogJ08nLFxuICAgICfFkCc6ICdPJyxcbiAgICAnyIwnOiAnTycsXG4gICAgJ8OSJzogJ08nLFxuICAgICfhu44nOiAnTycsXG4gICAgJ8agJzogJ08nLFxuICAgICfhu5onOiAnTycsXG4gICAgJ+G7oic6ICdPJyxcbiAgICAn4bucJzogJ08nLFxuICAgICfhu54nOiAnTycsXG4gICAgJ+G7oCc6ICdPJyxcbiAgICAnyI4nOiAnTycsXG4gICAgJ+qdiic6ICdPJyxcbiAgICAn6p2MJzogJ08nLFxuICAgICfFjCc6ICdPJyxcbiAgICAn4bmSJzogJ08nLFxuICAgICfhuZAnOiAnTycsXG4gICAgJ8afJzogJ08nLFxuICAgICfHqic6ICdPJyxcbiAgICAnx6wnOiAnTycsXG4gICAgJ8OYJzogJ08nLFxuICAgICfHvic6ICdPJyxcbiAgICAnw5UnOiAnTycsXG4gICAgJ+G5jCc6ICdPJyxcbiAgICAn4bmOJzogJ08nLFxuICAgICfIrCc6ICdPJyxcbiAgICAnxqInOiAnT0knLFxuICAgICfqnY4nOiAnT08nLFxuICAgICfGkCc6ICdFJyxcbiAgICAnxoYnOiAnTycsXG4gICAgJ8iiJzogJ09VJyxcbiAgICAn4bmUJzogJ1AnLFxuICAgICfhuZYnOiAnUCcsXG4gICAgJ+qdkic6ICdQJyxcbiAgICAnxqQnOiAnUCcsXG4gICAgJ+qdlCc6ICdQJyxcbiAgICAn4rGjJzogJ1AnLFxuICAgICfqnZAnOiAnUCcsXG4gICAgJ+qdmCc6ICdRJyxcbiAgICAn6p2WJzogJ1EnLFxuICAgICfFlCc6ICdSJyxcbiAgICAnxZgnOiAnUicsXG4gICAgJ8WWJzogJ1InLFxuICAgICfhuZgnOiAnUicsXG4gICAgJ+G5mic6ICdSJyxcbiAgICAn4bmcJzogJ1InLFxuICAgICfIkCc6ICdSJyxcbiAgICAnyJInOiAnUicsXG4gICAgJ+G5nic6ICdSJyxcbiAgICAnyYwnOiAnUicsXG4gICAgJ+KxpCc6ICdSJyxcbiAgICAn6py+JzogJ0MnLFxuICAgICfGjic6ICdFJyxcbiAgICAnxZonOiAnUycsXG4gICAgJ+G5pCc6ICdTJyxcbiAgICAnxaAnOiAnUycsXG4gICAgJ+G5pic6ICdTJyxcbiAgICAnxZ4nOiAnUycsXG4gICAgJ8WcJzogJ1MnLFxuICAgICfImCc6ICdTJyxcbiAgICAn4bmgJzogJ1MnLFxuICAgICfhuaInOiAnUycsXG4gICAgJ+G5qCc6ICdTJyxcbiAgICAnxaQnOiAnVCcsXG4gICAgJ8WiJzogJ1QnLFxuICAgICfhubAnOiAnVCcsXG4gICAgJ8iaJzogJ1QnLFxuICAgICfIvic6ICdUJyxcbiAgICAn4bmqJzogJ1QnLFxuICAgICfhuawnOiAnVCcsXG4gICAgJ8asJzogJ1QnLFxuICAgICfhua4nOiAnVCcsXG4gICAgJ8auJzogJ1QnLFxuICAgICfFpic6ICdUJyxcbiAgICAn4rGvJzogJ0EnLFxuICAgICfqnoAnOiAnTCcsXG4gICAgJ8acJzogJ00nLFxuICAgICfJhSc6ICdWJyxcbiAgICAn6pyoJzogJ1RaJyxcbiAgICAnw5onOiAnVScsXG4gICAgJ8WsJzogJ1UnLFxuICAgICfHkyc6ICdVJyxcbiAgICAnw5snOiAnVScsXG4gICAgJ+G5tic6ICdVJyxcbiAgICAnw5wnOiAnVScsXG4gICAgJ8eXJzogJ1UnLFxuICAgICfHmSc6ICdVJyxcbiAgICAnx5snOiAnVScsXG4gICAgJ8eVJzogJ1UnLFxuICAgICfhubInOiAnVScsXG4gICAgJ+G7pCc6ICdVJyxcbiAgICAnxbAnOiAnVScsXG4gICAgJ8iUJzogJ1UnLFxuICAgICfDmSc6ICdVJyxcbiAgICAn4bumJzogJ1UnLFxuICAgICfGryc6ICdVJyxcbiAgICAn4buoJzogJ1UnLFxuICAgICfhu7AnOiAnVScsXG4gICAgJ+G7qic6ICdVJyxcbiAgICAn4busJzogJ1UnLFxuICAgICfhu64nOiAnVScsXG4gICAgJ8iWJzogJ1UnLFxuICAgICfFqic6ICdVJyxcbiAgICAn4bm6JzogJ1UnLFxuICAgICfFsic6ICdVJyxcbiAgICAnxa4nOiAnVScsXG4gICAgJ8WoJzogJ1UnLFxuICAgICfhubgnOiAnVScsXG4gICAgJ+G5tCc6ICdVJyxcbiAgICAn6p2eJzogJ1YnLFxuICAgICfhub4nOiAnVicsXG4gICAgJ8ayJzogJ1YnLFxuICAgICfhubwnOiAnVicsXG4gICAgJ+qdoCc6ICdWWScsXG4gICAgJ+G6gic6ICdXJyxcbiAgICAnxbQnOiAnVycsXG4gICAgJ+G6hCc6ICdXJyxcbiAgICAn4bqGJzogJ1cnLFxuICAgICfhuognOiAnVycsXG4gICAgJ+G6gCc6ICdXJyxcbiAgICAn4rGyJzogJ1cnLFxuICAgICfhuownOiAnWCcsXG4gICAgJ+G6iic6ICdYJyxcbiAgICAnw50nOiAnWScsXG4gICAgJ8W2JzogJ1knLFxuICAgICfFuCc6ICdZJyxcbiAgICAn4bqOJzogJ1knLFxuICAgICfhu7QnOiAnWScsXG4gICAgJ+G7sic6ICdZJyxcbiAgICAnxrMnOiAnWScsXG4gICAgJ+G7tic6ICdZJyxcbiAgICAn4bu+JzogJ1knLFxuICAgICfIsic6ICdZJyxcbiAgICAnyY4nOiAnWScsXG4gICAgJ+G7uCc6ICdZJyxcbiAgICAnxbknOiAnWicsXG4gICAgJ8W9JzogJ1onLFxuICAgICfhupAnOiAnWicsXG4gICAgJ+Kxqyc6ICdaJyxcbiAgICAnxbsnOiAnWicsXG4gICAgJ+G6kic6ICdaJyxcbiAgICAnyKQnOiAnWicsXG4gICAgJ+G6lCc6ICdaJyxcbiAgICAnxrUnOiAnWicsXG4gICAgJ8SyJzogJ0lKJyxcbiAgICAnxZInOiAnT0UnLFxuICAgICfhtIAnOiAnQScsXG4gICAgJ+G0gSc6ICdBRScsXG4gICAgJ8qZJzogJ0InLFxuICAgICfhtIMnOiAnQicsXG4gICAgJ+G0hCc6ICdDJyxcbiAgICAn4bSFJzogJ0QnLFxuICAgICfhtIcnOiAnRScsXG4gICAgJ+qcsCc6ICdGJyxcbiAgICAnyaInOiAnRycsXG4gICAgJ8qbJzogJ0cnLFxuICAgICfKnCc6ICdIJyxcbiAgICAnyaonOiAnSScsXG4gICAgJ8qBJzogJ1InLFxuICAgICfhtIonOiAnSicsXG4gICAgJ+G0iyc6ICdLJyxcbiAgICAnyp8nOiAnTCcsXG4gICAgJ+G0jCc6ICdMJyxcbiAgICAn4bSNJzogJ00nLFxuICAgICfJtCc6ICdOJyxcbiAgICAn4bSPJzogJ08nLFxuICAgICfJtic6ICdPRScsXG4gICAgJ+G0kCc6ICdPJyxcbiAgICAn4bSVJzogJ09VJyxcbiAgICAn4bSYJzogJ1AnLFxuICAgICfKgCc6ICdSJyxcbiAgICAn4bSOJzogJ04nLFxuICAgICfhtJknOiAnUicsXG4gICAgJ+qcsSc6ICdTJyxcbiAgICAn4bSbJzogJ1QnLFxuICAgICfisbsnOiAnRScsXG4gICAgJ+G0mic6ICdSJyxcbiAgICAn4bScJzogJ1UnLFxuICAgICfhtKAnOiAnVicsXG4gICAgJ+G0oSc6ICdXJyxcbiAgICAnyo8nOiAnWScsXG4gICAgJ+G0oic6ICdaJyxcbiAgICAnw6EnOiAnYScsXG4gICAgJ8SDJzogJ2EnLFxuICAgICfhuq8nOiAnYScsXG4gICAgJ+G6tyc6ICdhJyxcbiAgICAn4bqxJzogJ2EnLFxuICAgICfhurMnOiAnYScsXG4gICAgJ+G6tSc6ICdhJyxcbiAgICAnx44nOiAnYScsXG4gICAgJ8OiJzogJ2EnLFxuICAgICfhuqUnOiAnYScsXG4gICAgJ+G6rSc6ICdhJyxcbiAgICAn4bqnJzogJ2EnLFxuICAgICfhuqknOiAnYScsXG4gICAgJ+G6qyc6ICdhJyxcbiAgICAnw6QnOiAnYScsXG4gICAgJ8efJzogJ2EnLFxuICAgICfIpyc6ICdhJyxcbiAgICAnx6EnOiAnYScsXG4gICAgJ+G6oSc6ICdhJyxcbiAgICAnyIEnOiAnYScsXG4gICAgJ8OgJzogJ2EnLFxuICAgICfhuqMnOiAnYScsXG4gICAgJ8iDJzogJ2EnLFxuICAgICfEgSc6ICdhJyxcbiAgICAnxIUnOiAnYScsXG4gICAgJ+G2jyc6ICdhJyxcbiAgICAn4bqaJzogJ2EnLFxuICAgICfDpSc6ICdhJyxcbiAgICAnx7snOiAnYScsXG4gICAgJ+G4gSc6ICdhJyxcbiAgICAn4rGlJzogJ2EnLFxuICAgICfDoyc6ICdhJyxcbiAgICAn6pyzJzogJ2FhJyxcbiAgICAnw6YnOiAnYWUnLFxuICAgICfHvSc6ICdhZScsXG4gICAgJ8ejJzogJ2FlJyxcbiAgICAn6py1JzogJ2FvJyxcbiAgICAn6py3JzogJ2F1JyxcbiAgICAn6py5JzogJ2F2JyxcbiAgICAn6py7JzogJ2F2JyxcbiAgICAn6py9JzogJ2F5JyxcbiAgICAn4biDJzogJ2InLFxuICAgICfhuIUnOiAnYicsXG4gICAgJ8mTJzogJ2InLFxuICAgICfhuIcnOiAnYicsXG4gICAgJ+G1rCc6ICdiJyxcbiAgICAn4baAJzogJ2InLFxuICAgICfGgCc6ICdiJyxcbiAgICAnxoMnOiAnYicsXG4gICAgJ8m1JzogJ28nLFxuICAgICfEhyc6ICdjJyxcbiAgICAnxI0nOiAnYycsXG4gICAgJ8OnJzogJ2MnLFxuICAgICfhuIknOiAnYycsXG4gICAgJ8SJJzogJ2MnLFxuICAgICfJlSc6ICdjJyxcbiAgICAnxIsnOiAnYycsXG4gICAgJ8aIJzogJ2MnLFxuICAgICfIvCc6ICdjJyxcbiAgICAnxI8nOiAnZCcsXG4gICAgJ+G4kSc6ICdkJyxcbiAgICAn4biTJzogJ2QnLFxuICAgICfIoSc6ICdkJyxcbiAgICAn4biLJzogJ2QnLFxuICAgICfhuI0nOiAnZCcsXG4gICAgJ8mXJzogJ2QnLFxuICAgICfhtpEnOiAnZCcsXG4gICAgJ+G4jyc6ICdkJyxcbiAgICAn4bWtJzogJ2QnLFxuICAgICfhtoEnOiAnZCcsXG4gICAgJ8SRJzogJ2QnLFxuICAgICfJlic6ICdkJyxcbiAgICAnxownOiAnZCcsXG4gICAgJ8SxJzogJ2knLFxuICAgICfItyc6ICdqJyxcbiAgICAnyZ8nOiAnaicsXG4gICAgJ8qEJzogJ2onLFxuICAgICfHsyc6ICdkeicsXG4gICAgJ8eGJzogJ2R6JyxcbiAgICAnw6knOiAnZScsXG4gICAgJ8SVJzogJ2UnLFxuICAgICfEmyc6ICdlJyxcbiAgICAnyKknOiAnZScsXG4gICAgJ+G4nSc6ICdlJyxcbiAgICAnw6onOiAnZScsXG4gICAgJ+G6vyc6ICdlJyxcbiAgICAn4buHJzogJ2UnLFxuICAgICfhu4EnOiAnZScsXG4gICAgJ+G7gyc6ICdlJyxcbiAgICAn4buFJzogJ2UnLFxuICAgICfhuJknOiAnZScsXG4gICAgJ8OrJzogJ2UnLFxuICAgICfElyc6ICdlJyxcbiAgICAn4bq5JzogJ2UnLFxuICAgICfIhSc6ICdlJyxcbiAgICAnw6gnOiAnZScsXG4gICAgJ+G6uyc6ICdlJyxcbiAgICAnyIcnOiAnZScsXG4gICAgJ8STJzogJ2UnLFxuICAgICfhuJcnOiAnZScsXG4gICAgJ+G4lSc6ICdlJyxcbiAgICAn4rG4JzogJ2UnLFxuICAgICfEmSc6ICdlJyxcbiAgICAn4baSJzogJ2UnLFxuICAgICfJhyc6ICdlJyxcbiAgICAn4bq9JzogJ2UnLFxuICAgICfhuJsnOiAnZScsXG4gICAgJ+qdqyc6ICdldCcsXG4gICAgJ+G4nyc6ICdmJyxcbiAgICAnxpInOiAnZicsXG4gICAgJ+G1ric6ICdmJyxcbiAgICAn4baCJzogJ2YnLFxuICAgICfHtSc6ICdnJyxcbiAgICAnxJ8nOiAnZycsXG4gICAgJ8enJzogJ2cnLFxuICAgICfEoyc6ICdnJyxcbiAgICAnxJ0nOiAnZycsXG4gICAgJ8ShJzogJ2cnLFxuICAgICfJoCc6ICdnJyxcbiAgICAn4bihJzogJ2cnLFxuICAgICfhtoMnOiAnZycsXG4gICAgJ8elJzogJ2cnLFxuICAgICfhuKsnOiAnaCcsXG4gICAgJ8ifJzogJ2gnLFxuICAgICfhuKknOiAnaCcsXG4gICAgJ8SlJzogJ2gnLFxuICAgICfisagnOiAnaCcsXG4gICAgJ+G4pyc6ICdoJyxcbiAgICAn4bijJzogJ2gnLFxuICAgICfhuKUnOiAnaCcsXG4gICAgJ8mmJzogJ2gnLFxuICAgICfhupYnOiAnaCcsXG4gICAgJ8SnJzogJ2gnLFxuICAgICfGlSc6ICdodicsXG4gICAgJ8OtJzogJ2knLFxuICAgICfErSc6ICdpJyxcbiAgICAnx5AnOiAnaScsXG4gICAgJ8OuJzogJ2knLFxuICAgICfDryc6ICdpJyxcbiAgICAn4bivJzogJ2knLFxuICAgICfhu4snOiAnaScsXG4gICAgJ8iJJzogJ2knLFxuICAgICfDrCc6ICdpJyxcbiAgICAn4buJJzogJ2knLFxuICAgICfIiyc6ICdpJyxcbiAgICAnxKsnOiAnaScsXG4gICAgJ8SvJzogJ2knLFxuICAgICfhtpYnOiAnaScsXG4gICAgJ8moJzogJ2knLFxuICAgICfEqSc6ICdpJyxcbiAgICAn4bitJzogJ2knLFxuICAgICfqnbonOiAnZCcsXG4gICAgJ+qdvCc6ICdmJyxcbiAgICAn4bW5JzogJ2cnLFxuICAgICfqnoMnOiAncicsXG4gICAgJ+qehSc6ICdzJyxcbiAgICAn6p6HJzogJ3QnLFxuICAgICfqna0nOiAnaXMnLFxuICAgICfHsCc6ICdqJyxcbiAgICAnxLUnOiAnaicsXG4gICAgJ8qdJzogJ2onLFxuICAgICfJiSc6ICdqJyxcbiAgICAn4bixJzogJ2snLFxuICAgICfHqSc6ICdrJyxcbiAgICAnxLcnOiAnaycsXG4gICAgJ+Kxqic6ICdrJyxcbiAgICAn6p2DJzogJ2snLFxuICAgICfhuLMnOiAnaycsXG4gICAgJ8aZJzogJ2snLFxuICAgICfhuLUnOiAnaycsXG4gICAgJ+G2hCc6ICdrJyxcbiAgICAn6p2BJzogJ2snLFxuICAgICfqnYUnOiAnaycsXG4gICAgJ8S6JzogJ2wnLFxuICAgICfGmic6ICdsJyxcbiAgICAnyawnOiAnbCcsXG4gICAgJ8S+JzogJ2wnLFxuICAgICfEvCc6ICdsJyxcbiAgICAn4bi9JzogJ2wnLFxuICAgICfItCc6ICdsJyxcbiAgICAn4bi3JzogJ2wnLFxuICAgICfhuLknOiAnbCcsXG4gICAgJ+KxoSc6ICdsJyxcbiAgICAn6p2JJzogJ2wnLFxuICAgICfhuLsnOiAnbCcsXG4gICAgJ8WAJzogJ2wnLFxuICAgICfJqyc6ICdsJyxcbiAgICAn4baFJzogJ2wnLFxuICAgICfJrSc6ICdsJyxcbiAgICAnxYInOiAnbCcsXG4gICAgJ8eJJzogJ2xqJyxcbiAgICAnxb8nOiAncycsXG4gICAgJ+G6nCc6ICdzJyxcbiAgICAn4bqbJzogJ3MnLFxuICAgICfhup0nOiAncycsXG4gICAgJ+G4vyc6ICdtJyxcbiAgICAn4bmBJzogJ20nLFxuICAgICfhuYMnOiAnbScsXG4gICAgJ8mxJzogJ20nLFxuICAgICfhta8nOiAnbScsXG4gICAgJ+G2hic6ICdtJyxcbiAgICAnxYQnOiAnbicsXG4gICAgJ8WIJzogJ24nLFxuICAgICfFhic6ICduJyxcbiAgICAn4bmLJzogJ24nLFxuICAgICfItSc6ICduJyxcbiAgICAn4bmFJzogJ24nLFxuICAgICfhuYcnOiAnbicsXG4gICAgJ8e5JzogJ24nLFxuICAgICfJsic6ICduJyxcbiAgICAn4bmJJzogJ24nLFxuICAgICfGnic6ICduJyxcbiAgICAn4bWwJzogJ24nLFxuICAgICfhtocnOiAnbicsXG4gICAgJ8mzJzogJ24nLFxuICAgICfDsSc6ICduJyxcbiAgICAnx4wnOiAnbmonLFxuICAgICfDsyc6ICdvJyxcbiAgICAnxY8nOiAnbycsXG4gICAgJ8eSJzogJ28nLFxuICAgICfDtCc6ICdvJyxcbiAgICAn4buRJzogJ28nLFxuICAgICfhu5knOiAnbycsXG4gICAgJ+G7kyc6ICdvJyxcbiAgICAn4buVJzogJ28nLFxuICAgICfhu5cnOiAnbycsXG4gICAgJ8O2JzogJ28nLFxuICAgICfIqyc6ICdvJyxcbiAgICAnyK8nOiAnbycsXG4gICAgJ8ixJzogJ28nLFxuICAgICfhu40nOiAnbycsXG4gICAgJ8WRJzogJ28nLFxuICAgICfIjSc6ICdvJyxcbiAgICAnw7InOiAnbycsXG4gICAgJ+G7jyc6ICdvJyxcbiAgICAnxqEnOiAnbycsXG4gICAgJ+G7myc6ICdvJyxcbiAgICAn4bujJzogJ28nLFxuICAgICfhu50nOiAnbycsXG4gICAgJ+G7nyc6ICdvJyxcbiAgICAn4buhJzogJ28nLFxuICAgICfIjyc6ICdvJyxcbiAgICAn6p2LJzogJ28nLFxuICAgICfqnY0nOiAnbycsXG4gICAgJ+Kxuic6ICdvJyxcbiAgICAnxY0nOiAnbycsXG4gICAgJ+G5kyc6ICdvJyxcbiAgICAn4bmRJzogJ28nLFxuICAgICfHqyc6ICdvJyxcbiAgICAnx60nOiAnbycsXG4gICAgJ8O4JzogJ28nLFxuICAgICfHvyc6ICdvJyxcbiAgICAnw7UnOiAnbycsXG4gICAgJ+G5jSc6ICdvJyxcbiAgICAn4bmPJzogJ28nLFxuICAgICfIrSc6ICdvJyxcbiAgICAnxqMnOiAnb2knLFxuICAgICfqnY8nOiAnb28nLFxuICAgICfJmyc6ICdlJyxcbiAgICAn4baTJzogJ2UnLFxuICAgICfJlCc6ICdvJyxcbiAgICAn4baXJzogJ28nLFxuICAgICfIoyc6ICdvdScsXG4gICAgJ+G5lSc6ICdwJyxcbiAgICAn4bmXJzogJ3AnLFxuICAgICfqnZMnOiAncCcsXG4gICAgJ8alJzogJ3AnLFxuICAgICfhtbEnOiAncCcsXG4gICAgJ+G2iCc6ICdwJyxcbiAgICAn6p2VJzogJ3AnLFxuICAgICfhtb0nOiAncCcsXG4gICAgJ+qdkSc6ICdwJyxcbiAgICAn6p2ZJzogJ3EnLFxuICAgICfKoCc6ICdxJyxcbiAgICAnyYsnOiAncScsXG4gICAgJ+qdlyc6ICdxJyxcbiAgICAnxZUnOiAncicsXG4gICAgJ8WZJzogJ3InLFxuICAgICfFlyc6ICdyJyxcbiAgICAn4bmZJzogJ3InLFxuICAgICfhuZsnOiAncicsXG4gICAgJ+G5nSc6ICdyJyxcbiAgICAnyJEnOiAncicsXG4gICAgJ8m+JzogJ3InLFxuICAgICfhtbMnOiAncicsXG4gICAgJ8iTJzogJ3InLFxuICAgICfhuZ8nOiAncicsXG4gICAgJ8m8JzogJ3InLFxuICAgICfhtbInOiAncicsXG4gICAgJ+G2iSc6ICdyJyxcbiAgICAnyY0nOiAncicsXG4gICAgJ8m9JzogJ3InLFxuICAgICfihoQnOiAnYycsXG4gICAgJ+qcvyc6ICdjJyxcbiAgICAnyZgnOiAnZScsXG4gICAgJ8m/JzogJ3InLFxuICAgICfFmyc6ICdzJyxcbiAgICAn4bmlJzogJ3MnLFxuICAgICfFoSc6ICdzJyxcbiAgICAn4bmnJzogJ3MnLFxuICAgICfFnyc6ICdzJyxcbiAgICAnxZ0nOiAncycsXG4gICAgJ8iZJzogJ3MnLFxuICAgICfhuaEnOiAncycsXG4gICAgJ+G5oyc6ICdzJyxcbiAgICAn4bmpJzogJ3MnLFxuICAgICfKgic6ICdzJyxcbiAgICAn4bW0JzogJ3MnLFxuICAgICfhtoonOiAncycsXG4gICAgJ8i/JzogJ3MnLFxuICAgICfJoSc6ICdnJyxcbiAgICAn4bSRJzogJ28nLFxuICAgICfhtJMnOiAnbycsXG4gICAgJ+G0nSc6ICd1JyxcbiAgICAnxaUnOiAndCcsXG4gICAgJ8WjJzogJ3QnLFxuICAgICfhubEnOiAndCcsXG4gICAgJ8ibJzogJ3QnLFxuICAgICfItic6ICd0JyxcbiAgICAn4bqXJzogJ3QnLFxuICAgICfisaYnOiAndCcsXG4gICAgJ+G5qyc6ICd0JyxcbiAgICAn4bmtJzogJ3QnLFxuICAgICfGrSc6ICd0JyxcbiAgICAn4bmvJzogJ3QnLFxuICAgICfhtbUnOiAndCcsXG4gICAgJ8arJzogJ3QnLFxuICAgICfKiCc6ICd0JyxcbiAgICAnxacnOiAndCcsXG4gICAgJ+G1uic6ICd0aCcsXG4gICAgJ8mQJzogJ2EnLFxuICAgICfhtIInOiAnYWUnLFxuICAgICfHnSc6ICdlJyxcbiAgICAn4bW3JzogJ2cnLFxuICAgICfJpSc6ICdoJyxcbiAgICAnyq4nOiAnaCcsXG4gICAgJ8qvJzogJ2gnLFxuICAgICfhtIknOiAnaScsXG4gICAgJ8qeJzogJ2snLFxuICAgICfqnoEnOiAnbCcsXG4gICAgJ8mvJzogJ20nLFxuICAgICfJsCc6ICdtJyxcbiAgICAn4bSUJzogJ29lJyxcbiAgICAnybknOiAncicsXG4gICAgJ8m7JzogJ3InLFxuICAgICfJuic6ICdyJyxcbiAgICAn4rG5JzogJ3InLFxuICAgICfKhyc6ICd0JyxcbiAgICAnyownOiAndicsXG4gICAgJ8qNJzogJ3cnLFxuICAgICfKjic6ICd5JyxcbiAgICAn6pypJzogJ3R6JyxcbiAgICAnw7onOiAndScsXG4gICAgJ8WtJzogJ3UnLFxuICAgICfHlCc6ICd1JyxcbiAgICAnw7snOiAndScsXG4gICAgJ+G5tyc6ICd1JyxcbiAgICAnw7wnOiAndScsXG4gICAgJ8eYJzogJ3UnLFxuICAgICfHmic6ICd1JyxcbiAgICAnx5wnOiAndScsXG4gICAgJ8eWJzogJ3UnLFxuICAgICfhubMnOiAndScsXG4gICAgJ+G7pSc6ICd1JyxcbiAgICAnxbEnOiAndScsXG4gICAgJ8iVJzogJ3UnLFxuICAgICfDuSc6ICd1JyxcbiAgICAn4bunJzogJ3UnLFxuICAgICfGsCc6ICd1JyxcbiAgICAn4bupJzogJ3UnLFxuICAgICfhu7EnOiAndScsXG4gICAgJ+G7qyc6ICd1JyxcbiAgICAn4butJzogJ3UnLFxuICAgICfhu68nOiAndScsXG4gICAgJ8iXJzogJ3UnLFxuICAgICfFqyc6ICd1JyxcbiAgICAn4bm7JzogJ3UnLFxuICAgICfFsyc6ICd1JyxcbiAgICAn4baZJzogJ3UnLFxuICAgICfFryc6ICd1JyxcbiAgICAnxaknOiAndScsXG4gICAgJ+G5uSc6ICd1JyxcbiAgICAn4bm1JzogJ3UnLFxuICAgICfhtasnOiAndWUnLFxuICAgICfqnbgnOiAndW0nLFxuICAgICfisbQnOiAndicsXG4gICAgJ+qdnyc6ICd2JyxcbiAgICAn4bm/JzogJ3YnLFxuICAgICfKiyc6ICd2JyxcbiAgICAn4baMJzogJ3YnLFxuICAgICfisbEnOiAndicsXG4gICAgJ+G5vSc6ICd2JyxcbiAgICAn6p2hJzogJ3Z5JyxcbiAgICAn4bqDJzogJ3cnLFxuICAgICfFtSc6ICd3JyxcbiAgICAn4bqFJzogJ3cnLFxuICAgICfhuocnOiAndycsXG4gICAgJ+G6iSc6ICd3JyxcbiAgICAn4bqBJzogJ3cnLFxuICAgICfisbMnOiAndycsXG4gICAgJ+G6mCc6ICd3JyxcbiAgICAn4bqNJzogJ3gnLFxuICAgICfhuosnOiAneCcsXG4gICAgJ+G2jSc6ICd4JyxcbiAgICAnw70nOiAneScsXG4gICAgJ8W3JzogJ3knLFxuICAgICfDvyc6ICd5JyxcbiAgICAn4bqPJzogJ3knLFxuICAgICfhu7UnOiAneScsXG4gICAgJ+G7syc6ICd5JyxcbiAgICAnxrQnOiAneScsXG4gICAgJ+G7tyc6ICd5JyxcbiAgICAn4bu/JzogJ3knLFxuICAgICfIsyc6ICd5JyxcbiAgICAn4bqZJzogJ3knLFxuICAgICfJjyc6ICd5JyxcbiAgICAn4bu5JzogJ3knLFxuICAgICfFuic6ICd6JyxcbiAgICAnxb4nOiAneicsXG4gICAgJ+G6kSc6ICd6JyxcbiAgICAnypEnOiAneicsXG4gICAgJ+KxrCc6ICd6JyxcbiAgICAnxbwnOiAneicsXG4gICAgJ+G6kyc6ICd6JyxcbiAgICAnyKUnOiAneicsXG4gICAgJ+G6lSc6ICd6JyxcbiAgICAn4bW2JzogJ3onLFxuICAgICfhto4nOiAneicsXG4gICAgJ8qQJzogJ3onLFxuICAgICfGtic6ICd6JyxcbiAgICAnyYAnOiAneicsXG4gICAgJ++sgCc6ICdmZicsXG4gICAgJ++sgyc6ICdmZmknLFxuICAgICfvrIQnOiAnZmZsJyxcbiAgICAn76yBJzogJ2ZpJyxcbiAgICAn76yCJzogJ2ZsJyxcbiAgICAnxLMnOiAnaWonLFxuICAgICfFkyc6ICdvZScsXG4gICAgJ++shic6ICdzdCcsXG4gICAgJ+KCkCc6ICdhJyxcbiAgICAn4oKRJzogJ2UnLFxuICAgICfhtaInOiAnaScsXG4gICAgJ+KxvCc6ICdqJyxcbiAgICAn4oKSJzogJ28nLFxuICAgICfhtaMnOiAncicsXG4gICAgJ+G1pCc6ICd1JyxcbiAgICAn4bWlJzogJ3YnLFxuICAgICfigpMnOiAneCdcbn07XG4iXX0=","export class TypeaheadOptions {\n constructor(options) {\n this.placement = options.placement;\n this.animation = options.animation;\n this.typeaheadRef = options.typeaheadRef;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWFoZWFkLW9wdGlvbnMuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHlwZWFoZWFkL3R5cGVhaGVhZC1vcHRpb25zLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxnQkFBZ0I7SUFLM0IsWUFBWSxPQUF5QjtRQUNuQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFDbkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO1FBQ25DLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQztJQUMzQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlYWhlYWREaXJlY3RpdmUgfSBmcm9tICcuL3R5cGVhaGVhZC5kaXJlY3RpdmUnO1xuXG5leHBvcnQgY2xhc3MgVHlwZWFoZWFkT3B0aW9ucyB7XG4gIHBsYWNlbWVudDogc3RyaW5nO1xuICBhbmltYXRpb246IGJvb2xlYW47XG4gIHR5cGVhaGVhZFJlZjogVHlwZWFoZWFkRGlyZWN0aXZlO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFR5cGVhaGVhZE9wdGlvbnMpIHtcbiAgICB0aGlzLnBsYWNlbWVudCA9IG9wdGlvbnMucGxhY2VtZW50O1xuICAgIHRoaXMuYW5pbWF0aW9uID0gb3B0aW9ucy5hbmltYXRpb247XG4gICAgdGhpcy50eXBlYWhlYWRSZWYgPSBvcHRpb25zLnR5cGVhaGVhZFJlZjtcbiAgfVxufVxuIl19","// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class TypeaheadMatch {\n constructor(item, value = item, header = false) {\n this.item = item;\n this.value = value;\n this.header = header;\n }\n isHeader() {\n return this.header;\n }\n toString() {\n return this.value;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWFoZWFkLW1hdGNoLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3R5cGVhaGVhZC90eXBlYWhlYWQtbWF0Y2guY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsOERBQThEO0FBQzlELE1BQU0sT0FBTyxjQUFjO0lBTXpCLFlBQVksSUFBYyxFQUFFLFFBQVEsSUFBYyxFQUFFLE1BQU0sR0FBRyxLQUFLO1FBQ2hFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgY2xhc3MgVHlwZWFoZWFkTWF0Y2g8SXRlbVR5cGUgPSBhbnk+IHtcbiAgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcblxuICByZWFkb25seSBpdGVtOiBJdGVtVHlwZTtcbiAgcHJvdGVjdGVkIGhlYWRlcjogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihpdGVtOiBJdGVtVHlwZSwgdmFsdWUgPSBpdGVtIGFzIHN0cmluZywgaGVhZGVyID0gZmFsc2UpIHtcbiAgICB0aGlzLml0ZW0gPSBpdGVtO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmhlYWRlciA9IGhlYWRlcjtcbiAgfVxuXG4gIGlzSGVhZGVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhlYWRlcjtcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gIH1cbn1cbiJdfQ==","import { latinMap } from './latin-map';\nexport function latinize(str) {\n if (!str) {\n return '';\n }\n return str.replace(/[^A-Za-z0-9[\\] ]/g, function (a) {\n return latinMap[a] || a;\n });\n}\nexport function escapeRegexp(queryToEscape) {\n // Regex: capture the whole query string and replace it with the string\n // that will be used to match the results, for example if the capture is\n // 'a' the result will be \\a\n return queryToEscape.replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1');\n}\nexport function tokenize(str, wordRegexDelimiters = ' ', phraseRegexDelimiters = '', delimitersForMultipleSearch) {\n let result = [];\n if (!delimitersForMultipleSearch) {\n result = tokenizeWordsAndPhrases(str, wordRegexDelimiters, phraseRegexDelimiters);\n }\n else {\n const multipleSearchRegexStr = `([${delimitersForMultipleSearch}]+)`;\n const delimitedTokens = str.split(new RegExp(multipleSearchRegexStr, 'g'));\n const lastToken = delimitedTokens[delimitedTokens.length - 1];\n if (lastToken > '') {\n if (wordRegexDelimiters && phraseRegexDelimiters) {\n result = tokenizeWordsAndPhrases(lastToken, wordRegexDelimiters, phraseRegexDelimiters);\n }\n else {\n result.push(lastToken);\n }\n }\n }\n return result;\n}\nfunction tokenizeWordsAndPhrases(str, wordRegexDelimiters, phraseRegexDelimiters) {\n const result = [];\n const regexStr = `(?:[${phraseRegexDelimiters}])([^${phraseRegexDelimiters}]+)` +\n `(?:[${phraseRegexDelimiters}])|([^${wordRegexDelimiters}]+)`;\n const preTokenized = str.split(new RegExp(regexStr, 'g'));\n const preTokenizedLength = preTokenized.length;\n let token;\n const replacePhraseDelimiters = new RegExp(`[${phraseRegexDelimiters}]+`, 'g');\n for (let i = 0; i < preTokenizedLength; i += 1) {\n token = preTokenized[i];\n if (token && token.length && token !== wordRegexDelimiters) {\n result.push(token.replace(replacePhraseDelimiters, ''));\n }\n }\n return result;\n}\n// eslint-disable-next-line\nexport function getValueFromObject(object, option) {\n if (!option || typeof object !== 'object') {\n return object.toString();\n }\n if (option.endsWith('()')) {\n const functionName = option.slice(0, option.length - 2);\n return object[functionName]().toString();\n }\n const properties = option\n .replace(/\\[(\\w+)\\]/g, '.$1')\n .replace(/^\\./, '');\n const propertiesArray = properties.split('.');\n for (const property of propertiesArray) {\n if (property in object) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n object = object[property];\n }\n }\n if (!object) {\n return '';\n }\n return object.toString();\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWFoZWFkLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3R5cGVhaGVhZC90eXBlYWhlYWQtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV2QyxNQUFNLFVBQVUsUUFBUSxDQUFDLEdBQVc7SUFDbEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLFVBQVMsQ0FBUztRQUN4RCxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBQyxhQUFxQjtJQUNoRCx1RUFBdUU7SUFDdkUsd0VBQXdFO0lBQ3hFLDRCQUE0QjtJQUM1QixPQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDakUsQ0FBQztBQUVELE1BQU0sVUFBVSxRQUFRLENBQUMsR0FBVyxFQUNYLG1CQUFtQixHQUFHLEdBQUcsRUFDekIscUJBQXFCLEdBQUcsRUFBRSxFQUFFLDJCQUFvQztJQUV2RixJQUFJLE1BQU0sR0FBYSxFQUFFLENBQUM7SUFDMUIsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFDakMsTUFBTSxHQUFHLHVCQUF1QixDQUFDLEdBQUcsRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxzQkFBc0IsR0FBRyxLQUFLLDJCQUEyQixLQUFLLENBQUM7UUFDckUsTUFBTSxlQUFlLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLENBQUMs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Q1osQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsYXRpbk1hcCB9IGZyb20gJy4vbGF0aW4tbWFwJztcblxuZXhwb3J0IGZ1bmN0aW9uIGxhdGluaXplKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFzdHIpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICByZXR1cm4gc3RyLnJlcGxhY2UoL1teQS1aYS16MC05W1xcXSBdL2csIGZ1bmN0aW9uKGE6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGxhdGluTWFwW2FdIHx8IGE7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlUmVnZXhwKHF1ZXJ5VG9Fc2NhcGU6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIFJlZ2V4OiBjYXB0dXJlIHRoZSB3aG9sZSBxdWVyeSBzdHJpbmcgYW5kIHJlcGxhY2UgaXQgd2l0aCB0aGUgc3RyaW5nXG4gIC8vIHRoYXQgd2lsbCBiZSB1c2VkIHRvIG1hdGNoIHRoZSByZXN1bHRzLCBmb3IgZXhhbXBsZSBpZiB0aGUgY2FwdHVyZSBpc1xuICAvLyAnYScgdGhlIHJlc3VsdCB3aWxsIGJlIFxcYVxuICByZXR1cm4gcXVlcnlUb0VzY2FwZS5yZXBsYWNlKC8oWy4/KiteJFtcXF1cXFxcKCl7fXwtXSkvZywgJ1xcXFwkMScpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9rZW5pemUoc3RyOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgd29yZFJlZ2V4RGVsaW1pdGVycyA9ICcgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICBwaHJhc2VSZWdleERlbGltaXRlcnMgPSAnJywgZGVsaW1pdGVyc0Zvck11bHRpcGxlU2VhcmNoPzogc3RyaW5nKTogQXJyYXk8c3RyaW5nPiB7XG5cbiAgbGV0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcbiAgaWYgKCFkZWxpbWl0ZXJzRm9yTXVsdGlwbGVTZWFyY2gpIHtcbiAgICByZXN1bHQgPSB0b2tlbml6ZVdvcmRzQW5kUGhyYXNlcyhzdHIsIHdvcmRSZWdleERlbGltaXRlcnMsIHBocmFzZVJlZ2V4RGVsaW1pdGVycyk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgbXVsdGlwbGVTZWFyY2hSZWdleFN0ciA9IGAoWyR7ZGVsaW1pdGVyc0Zvck11bHRpcGxlU2VhcmNofV0rKWA7XG4gICAgY29uc3QgZGVsaW1pdGVkVG9rZW5zID0gc3RyLnNwbGl0KG5ldyBSZWdFeHAobXVsdGlwbGVTZWFyY2hSZWdleFN0ciwgJ2cnKSk7XG4gICAgY29uc3QgbGFzdFRva2VuID0gZGVsaW1pdGVkVG9rZW5zW2RlbGltaXRlZFRva2Vucy5sZW5ndGggLSAxXTtcbiAgICBpZiAobGFzdFRva2VuID4gJycpIHtcbiAgICAgIGlmICh3b3JkUmVnZXhEZWxpbWl0ZXJzICYmIHBocmFzZVJlZ2V4RGVsaW1pdGVycykge1xuICAgICAgICByZXN1bHQgPSB0b2tlbml6ZVdvcmRzQW5kUGhyYXNlcyhsYXN0VG9rZW4sIHdvcmRSZWdleERlbGltaXRlcnMsIHBocmFzZVJlZ2V4RGVsaW1pdGVycyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQucHVzaChsYXN0VG9rZW4pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHRva2VuaXplV29yZHNBbmRQaHJhc2VzKHN0cjogc3RyaW5nLCB3b3JkUmVnZXhEZWxpbWl0ZXJzOiBzdHJpbmcsIHBocmFzZVJlZ2V4RGVsaW1pdGVyczogc3RyaW5nKTogQXJyYXk8c3RyaW5nPiB7XG4gIGNvbnN0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcbiAgY29uc3QgcmVnZXhTdHIgPSBgKD86WyR7cGhyYXNlUmVnZXhEZWxpbWl0ZXJzfV0pKFteJHtwaHJhc2VSZWdleERlbGltaXRlcnN9XSspYCArXG4gICAgYCg/Olske3BocmFzZVJlZ2V4RGVsaW1pdGVyc31dKXwoW14ke3dvcmRSZWdleERlbGltaXRlcnN9XSspYDtcbiAgY29uc3QgcHJlVG9rZW5pemVkOiBzdHJpbmdbXSA9IHN0ci5zcGxpdChuZXcgUmVnRXhwKHJlZ2V4U3RyLCAnZycpKTtcbiAgY29uc3QgcHJlVG9rZW5pemVkTGVuZ3RoOiBudW1iZXIgPSBwcmVUb2tlbml6ZWQubGVuZ3RoO1xuICBsZXQgdG9rZW46IHN0cmluZztcbiAgY29uc3QgcmVwbGFjZVBocmFzZURlbGltaXRlcnMgPSBuZXcgUmVnRXhwKGBbJHtwaHJhc2VSZWdleERlbGltaXRlcnN9XStgLCAnZycpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcHJlVG9rZW5pemVkTGVuZ3RoOyBpICs9IDEpIHtcbiAgICB0b2tlbiA9IHByZVRva2VuaXplZFtpXTtcbiAgICBpZiAodG9rZW4gJiYgdG9rZW4ubGVuZ3RoICYmIHRva2VuICE9PSB3b3JkUmVnZXhEZWxpbWl0ZXJzKSB7XG4gICAgICByZXN1bHQucHVzaCh0b2tlbi5yZXBsYWNlKHJlcGxhY2VQaHJhc2VEZWxpbWl0ZXJzLCAnJykpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbHVlRnJvbU9iamVjdChvYmplY3Q6IHN0cmluZyB8IFJlY29yZDxzdHJpbmcgfCBudW1iZXIsIGFueT4sIG9wdGlvbj86IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICghb3B0aW9uIHx8IHR5cGVvZiBvYmplY3QgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG9iamVjdC50b1N0cmluZygpO1xuICB9XG5cbiAgaWYgKG9wdGlvbi5lbmRzV2l0aCgnKCknKSkge1xuICAgIGNvbnN0IGZ1bmN0aW9uTmFtZSA9IG9wdGlvbi5zbGljZSgwLCBvcHRpb24ubGVuZ3RoIC0gMik7XG5cbiAgICByZXR1cm4gKG9iamVjdFtmdW5jdGlvbk5hbWVdIGFzICgpID0+IHN0cmluZykoKS50b1N0cmluZygpO1xuICB9XG5cbiAgY29uc3QgcHJvcGVydGllczogc3RyaW5nID0gb3B0aW9uXG4gICAgLnJlcGxhY2UoL1xcWyhcXHcrKVxcXS9nLCAnLiQxJylcbiAgICAucmVwbGFjZSgvXlxcLi8sICcnKTtcbiAgY29uc3QgcHJvcGVydGllc0FycmF5OiBzdHJpbmdbXSA9IHByb3BlcnRpZXMuc3BsaXQoJy4nKTtcblxuICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHByb3BlcnRpZXNBcnJheSkge1xuICAgIGlmIChwcm9wZXJ0eSBpbiAob2JqZWN0IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgb2JqZWN0ID0gb2JqZWN0W3Byb3BlcnR5XTtcbiAgICB9XG4gIH1cbiAgaWYgKCFvYmplY3QpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICByZXR1cm4gb2JqZWN0LnRvU3RyaW5nKCk7XG59XG4iXX0=","import { animate, style, state, transition, trigger } from '@angular/animations';\nexport const TYPEAHEAD_ANIMATION_TIMING = '220ms cubic-bezier(0, 0, 0.2, 1)';\nexport const typeaheadAnimation = trigger('typeaheadAnimation', [\n state('animated-down', style({ height: '*', overflow: 'hidden' })),\n transition('* => animated-down', [\n style({ height: 0, overflow: 'hidden' }),\n animate(TYPEAHEAD_ANIMATION_TIMING)\n ]),\n state('animated-up', style({ height: '*', overflow: 'hidden' })),\n transition('* => animated-up', [\n style({ height: '*', overflow: 'hidden' }),\n animate(TYPEAHEAD_ANIMATION_TIMING)\n ]),\n transition('* => unanimated', animate('0s'))\n]);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWFoZWFkLWFuaW1hdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHlwZWFoZWFkL3R5cGVhaGVhZC1hbmltYXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxPQUFPLEVBQ1AsS0FBSyxFQUVMLEtBQUssRUFDTCxVQUFVLEVBQ1YsT0FBTyxFQUNSLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsa0NBQWtDLENBQUM7QUFFN0UsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQzdCLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRTtJQUM1QixLQUFLLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQUM7SUFDakUsVUFBVSxDQUFDLG9CQUFvQixFQUFFO1FBQy9CLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDO1FBQ3hDLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQztLQUNwQyxDQUFDO0lBQ0YsS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUMsQ0FBQyxDQUFDO0lBQy9ELFVBQVUsQ0FBQyxrQkFBa0IsRUFBRTtRQUM3QixLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUMxQyxPQUFPLENBQUMsMEJBQTBCLENBQUM7S0FDcEMsQ0FBQztJQUNGLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7Q0FDN0MsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYW5pbWF0ZSxcbiAgc3R5bGUsXG4gIEFuaW1hdGlvblRyaWdnZXJNZXRhZGF0YSxcbiAgc3RhdGUsXG4gIHRyYW5zaXRpb24sXG4gIHRyaWdnZXJcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5cbmV4cG9ydCBjb25zdCBUWVBFQUhFQURfQU5JTUFUSU9OX1RJTUlORyA9ICcyMjBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSc7XG5cbmV4cG9ydCBjb25zdCB0eXBlYWhlYWRBbmltYXRpb246IEFuaW1hdGlvblRyaWdnZXJNZXRhZGF0YSA9XG4gIHRyaWdnZXIoJ3R5cGVhaGVhZEFuaW1hdGlvbicsIFtcbiAgICBzdGF0ZSgnYW5pbWF0ZWQtZG93bicsIHN0eWxlKHsgaGVpZ2h0OiAnKicsIG92ZXJmbG93OiAnaGlkZGVuJ30pKSxcbiAgICB0cmFuc2l0aW9uKCcqID0+IGFuaW1hdGVkLWRvd24nLCBbXG4gICAgICBzdHlsZSh7IGhlaWdodDogMCwgb3ZlcmZsb3c6ICdoaWRkZW4nIH0pLFxuICAgICAgYW5pbWF0ZShUWVBFQUhFQURfQU5JTUFUSU9OX1RJTUlORylcbiAgICBdKSxcbiAgICBzdGF0ZSgnYW5pbWF0ZWQtdXAnLCBzdHlsZSh7IGhlaWdodDogJyonLCBvdmVyZmxvdzogJ2hpZGRlbid9KSksXG4gICAgdHJhbnNpdGlvbignKiA9PiBhbmltYXRlZC11cCcsIFtcbiAgICAgIHN0eWxlKHsgaGVpZ2h0OiAnKicsIG92ZXJmbG93OiAnaGlkZGVuJyB9KSxcbiAgICAgIGFuaW1hdGUoVFlQRUFIRUFEX0FOSU1BVElPTl9USU1JTkcpXG4gICAgXSksXG4gICAgdHJhbnNpdGlvbignKiA9PiB1bmFuaW1hdGVkJywgYW5pbWF0ZSgnMHMnKSlcbiAgXSk7XG4iXX0=","import { ChangeDetectorRef, Component, ElementRef, HostListener, QueryList, Renderer2, ViewChild, ViewChildren, Output, EventEmitter } from '@angular/core';\nimport { Utils } from 'ngx-bootstrap/utils';\nimport { PositioningService } from 'ngx-bootstrap/positioning';\nimport { Subscription } from 'rxjs';\nimport { latinize } from './typeahead-utils';\nimport { typeaheadAnimation } from './typeahead-animations';\nimport { NgTemplateOutlet, NgFor, NgIf } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"ngx-bootstrap/positioning\";\nlet nextWindowId = 0;\nexport class TypeaheadContainerComponent {\n get typeaheadTemplateMethods() {\n return {\n selectMatch: this.selectMatch.bind(this),\n selectActive: this.selectActive.bind(this),\n isActive: this.isActive.bind(this)\n };\n }\n constructor(positionService, renderer, element, changeDetectorRef) {\n this.positionService = positionService;\n this.renderer = renderer;\n this.element = element;\n this.changeDetectorRef = changeDetectorRef;\n // eslint-disable-next-line @angular-eslint/no-output-rename\n this.activeChangeEvent = new EventEmitter();\n this.isFocused = false;\n this.positionServiceSubscription = new Subscription();\n this.height = 0;\n this.popupId = `ngb-typeahead-${nextWindowId++}`;\n this._matches = [];\n this.renderer.setAttribute(this.element.nativeElement, 'id', this.popupId);\n this.positionServiceSubscription.add(this.positionService.event$?.subscribe(() => {\n if (this.isAnimated) {\n this.animationState = this.isTopPosition ? 'animated-up' : 'animated-down';\n this.changeDetectorRef.detectChanges();\n return;\n }\n this.animationState = 'unanimated';\n this.changeDetectorRef.detectChanges();\n }));\n }\n get active() {\n return this._active;\n }\n set active(active) {\n this._active = active;\n this.activeChanged();\n }\n get matches() {\n return this._matches;\n }\n set matches(value) {\n this.positionService.setOptions({\n modifiers: { flip: { enabled: this.adaptivePosition } },\n allowedPositions: ['top', 'bottom']\n });\n this._matches = value;\n this.needScrollbar = this.typeaheadScrollable && this.typeaheadOptionsInScrollableView < this.matches.length;\n if (this.typeaheadScrollable) {\n setTimeout(() => {\n this.setScrollableMode();\n });\n }\n if (this.typeaheadIsFirstItemActive && this._matches.length > 0) {\n this.setActive(this._matches[0]);\n if (this._active?.isHeader()) {\n this.nextActiveMatch();\n }\n }\n if (this._active && !this.typeaheadIsFirstItemActive) {\n const concurrency = this._matches.find(match => match.value === this._active?.value);\n if (concurrency) {\n this.selectActive(concurrency);\n return;\n }\n this.active = void 0;\n }\n }\n get isTopPosition() {\n return this.element.nativeElement.classList.contains('top');\n }\n get optionsListTemplate() {\n return this.parent ? this.parent.optionsListTemplate : undefined;\n }\n get isAnimated() {\n return this.parent ? this.parent.isAnimated : false;\n }\n get adaptivePosition() {\n return this.parent ? this.parent.adaptivePosition : false;\n }\n get typeaheadScrollable() {\n return this.parent ? this.parent.typeaheadScrollable : false;\n }\n get typeaheadOptionsInScrollableView() {\n return this.parent ? this.parent.typeaheadOptionsInScrollableView : 5;\n }\n get typeaheadIsFirstItemActive() {\n return this.parent ? this.parent.typeaheadIsFirstItemActive : true;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get itemTemplate() {\n return this.parent ? this.parent.typeaheadItemTemplate : undefined;\n }\n get canSelectItemsOnBlur() {\n return !!this.parent?.selectItemOnBlur;\n }\n selectActiveMatch(isActiveItemChanged) {\n if (this._active && this.parent?.typeaheadSelectFirstItem) {\n this.selectMatch(this._active);\n }\n if (!this.parent?.typeaheadSelectFirstItem && isActiveItemChanged) {\n this.selectMatch(this._active);\n }\n }\n activeChanged() {\n if (!this._active) {\n return;\n }\n const index = this.matches.indexOf(this._active);\n this.activeChangeEvent.emit(`${this.popupId}-${index}`);\n }\n prevActiveMatch() {\n if (!this._active) {\n return;\n }\n const index = this.matches.indexOf(this._active);\n this.setActive(this.matches[index - 1 < 0 ? this.matches.length - 1 : index - 1]);\n if (this._active.isHeader()) {\n this.prevActiveMatch();\n }\n if (this.typeaheadScrollable) {\n this.scrollPrevious(index);\n }\n }\n nextActiveMatch() {\n const index = this._active ? this.matches.indexOf(this._active) : -1;\n this.setActive(this.matches[index + 1 > this.matches.length - 1 ? 0 : index + 1]);\n if (this._active?.isHeader()) {\n this.nextActiveMatch();\n }\n if (this.typeaheadScrollable) {\n this.scrollNext(index);\n }\n }\n selectActive(value) {\n this.isFocused = true;\n this.setActive(value);\n }\n highlight(match, query) {\n let itemStr = match.value;\n let itemStrHelper = (this.parent && this.parent.typeaheadLatinize\n ? latinize(itemStr)\n : itemStr).toLowerCase();\n let startIdx;\n let tokenLen;\n // Replaces the capture string with the same string inside of a \"strong\" tag\n if (typeof query === 'object') {\n const queryLen = query.length;\n for (let i = 0; i < queryLen; i += 1) {\n // query[i] is already latinized and lower case\n startIdx = itemStrHelper.indexOf(query[i]);\n tokenLen = query[i].length;\n if (startIdx >= 0 && tokenLen > 0) {\n itemStr =\n `${itemStr.substring(0, startIdx)}<strong>${itemStr.substring(startIdx, startIdx + tokenLen)}</strong>` +\n `${itemStr.substring(startIdx + tokenLen)}`;\n itemStrHelper =\n `${itemStrHelper.substring(0, startIdx)}????????${'??'.repeat(tokenLen)}??????????` +\n `${itemStrHelper.substring(startIdx + tokenLen)}`;\n }\n }\n }\n else if (query) {\n // query is already latinized and lower case\n startIdx = itemStrHelper.indexOf(query);\n tokenLen = query.length;\n if (startIdx >= 0 && tokenLen > 0) {\n itemStr =\n `${itemStr.substring(0, startIdx)}<strong>${itemStr.substring(startIdx, startIdx + tokenLen)}</strong>` +\n `${itemStr.substring(startIdx + tokenLen)}`;\n }\n }\n return itemStr;\n }\n focusLost() {\n this.isFocused = false;\n if (!this.canSelectItemsOnBlur) {\n this.setActive(void 0);\n }\n }\n isActive(value) {\n return this.active === value;\n }\n selectMatch(value, event) {\n if (event) {\n event.stopPropagation();\n event.preventDefault();\n }\n this.parent?.changeModel(value);\n setTimeout(() => this.parent?.typeaheadOnSelect.emit(value), 0);\n return false;\n }\n setScrollableMode() {\n if (!this.ulElement) {\n this.ulElement = this.element;\n }\n if (this.liElements?.first) {\n const ulStyles = Utils.getStyles(this.ulElement.nativeElement);\n const liStyles = Utils.getStyles(this.liElements.first.nativeElement);\n const ulPaddingBottom = parseFloat((ulStyles['padding-bottom'] ? ulStyles['padding-bottom'] : '')\n .replace('px', ''));\n const ulPaddingTop = parseFloat((ulStyles['padding-top'] ? ulStyles['padding-top'] : '0')\n .replace('px', ''));\n const optionHeight = parseFloat((liStyles.height ? liStyles.height : '0')\n .replace('px', ''));\n const height = this.typeaheadOptionsInScrollableView * optionHeight;\n this.guiHeight = `${height + ulPaddingTop + ulPaddingBottom}px`;\n }\n this.renderer.setStyle(this.element.nativeElement, 'visibility', 'visible');\n }\n scrollPrevious(index) {\n if (index === 0) {\n this.scrollToBottom();\n return;\n }\n if (this.liElements && this.ulElement) {\n const liElement = this.liElements.toArray()[index - 1];\n if (liElement && !this.isScrolledIntoView(liElement.nativeElement)) {\n this.ulElement.nativeElement.scrollTop = liElement.nativeElement.offsetTop;\n }\n }\n }\n scrollNext(index) {\n if (index + 1 > this.matches.length - 1) {\n this.scrollToTop();\n return;\n }\n if (this.liElements && this.ulElement) {\n const liElement = this.liElements.toArray()[index + 1];\n if (liElement && !this.isScrolledIntoView(liElement.nativeElement)) {\n this.ulElement.nativeElement.scrollTop =\n liElement.nativeElement.offsetTop -\n Number(this.ulElement.nativeElement.offsetHeight) +\n Number(liElement.nativeElement.offsetHeight);\n }\n }\n }\n ngOnDestroy() {\n this.positionServiceSubscription.unsubscribe();\n }\n setActive(value) {\n this._active = value;\n let preview;\n if (!(this._active == null || this._active.isHeader())) {\n preview = value;\n }\n this.parent?.typeaheadOnPreview.emit(preview);\n }\n isScrolledIntoView(elem) {\n if (!this.ulElement) {\n return false;\n }\n const containerViewTop = this.ulElement.nativeElement.scrollTop;\n const containerViewBottom = containerViewTop + Number(this.ulElement.nativeElement.offsetHeight);\n const elemTop = elem.offsetTop;\n const elemBottom = elemTop + elem.offsetHeight;\n return ((elemBottom <= containerViewBottom) && (elemTop >= containerViewTop));\n }\n scrollToBottom() {\n if (!this.ulElement?.nativeElement) {\n return;\n }\n this.ulElement.nativeElement.scrollTop = this.ulElement.nativeElement.scrollHeight;\n }\n scrollToTop() {\n if (!this.ulElement?.nativeElement) {\n return;\n }\n this.ulElement.nativeElement.scrollTop = 0;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.2\", ngImport: i0, type: TypeaheadContainerComponent, deps: [{ token: i1.PositioningService }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.2\", type: TypeaheadContainerComponent, isStandalone: true, selector: \"typeahead-container\", outputs: { activeChangeEvent: \"activeChange\" }, host: { listeners: { \"mouseleave\": \"focusLost()\", \"blur\": \"focusLost()\" }, properties: { \"style.height\": \"needScrollbar ? guiHeight: 'auto'\", \"style.visibility\": \"'inherit'\", \"class.dropup\": \"dropup\", \"attr.role\": \"'listbox'\" }, styleAttribute: \"position: absolute;display: block;\", classAttribute: \"dropdown open bottom dropdown-menu\" }, providers: [PositioningService], viewQueries: [{ propertyName: \"ulElement\", first: true, predicate: [\"ulElement\"], descendants: true }, { propertyName: \"liElements\", predicate: [\"liElements\"], descendants: true }], ngImport: i0, template: \"<!-- inject options list template -->\\n<ng-template [ngTemplateOutlet]=\\\"optionsListTemplate || bs4Template\\\"\\n [ngTemplateOutletContext]=\\\"{\\n matches: matches,\\n itemTemplate: itemTemplate || bsItemTemplate,\\n query: query,\\n $implicit: typeaheadTemplateMethods\\n }\\\">\\n</ng-template>\\n\\n<!-- default options item template -->\\n<ng-template #bsItemTemplate let-match=\\\"match\\\" let-query=\\\"query\\\">\\n <span [innerHtml]=\\\"highlight(match, query)\\\"></span>\\n</ng-template>\\n\\n<!-- Bootstrap 4 options list template -->\\n<ng-template #bs4Template>\\n <ng-template ngFor let-match let-i=\\\"index\\\" [ngForOf]=\\\"matches\\\">\\n <h6 *ngIf=\\\"match.isHeader()\\\" class=\\\"dropdown-header\\\">{{ match }}</h6>\\n <ng-template [ngIf]=\\\"!match.isHeader()\\\">\\n <button #liElements\\n [id]=\\\"popupId + '-' + i\\\"\\n role=\\\"option\\\"\\n [@typeaheadAnimation]=\\\"animationState\\\"\\n class=\\\"dropdown-item\\\"\\n (click)=\\\"selectMatch(match, $event)\\\"\\n (mouseenter)=\\\"selectActive(match)\\\"\\n [class.active]=\\\"isActive(match)\\\">\\n <ng-template [ngTemplateOutlet]=\\\"itemTemplate || bsItemTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{item: match.item, index: i, match: match, query: query}\\\">\\n </ng-template>\\n </button>\\n </ng-template>\\n </ng-template>\\n</ng-template>\\n\", styles: [\":host.dropdown{z-index:1000}:host.dropdown-menu,.dropdown-menu{overflow-y:auto;height:100px}\\n\"], dependencies: [{ kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: NgFor, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], animations: [typeaheadAnimation] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.2\", ngImport: i0, type: TypeaheadContainerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'typeahead-container', host: {\n class: 'dropdown open bottom dropdown-menu',\n '[style.height]': `needScrollbar ? guiHeight: 'auto'`,\n '[style.visibility]': `'inherit'`,\n '[class.dropup]': 'dropup',\n style: 'position: absolute;display: block;',\n '[attr.role]': `'listbox'`\n }, animations: [typeaheadAnimation], standalone: true, imports: [NgTemplateOutlet, NgFor, NgIf], providers: [PositioningService], template: \"<!-- inject options list template -->\\n<ng-template [ngTemplateOutlet]=\\\"optionsListTemplate || bs4Template\\\"\\n [ngTemplateOutletContext]=\\\"{\\n matches: matches,\\n itemTemplate: itemTemplate || bsItemTemplate,\\n query: query,\\n $implicit: typeaheadTemplateMethods\\n }\\\">\\n</ng-template>\\n\\n<!-- default options item template -->\\n<ng-template #bsItemTemplate let-match=\\\"match\\\" let-query=\\\"query\\\">\\n <span [innerHtml]=\\\"highlight(match, query)\\\"></span>\\n</ng-template>\\n\\n<!-- Bootstrap 4 options list template -->\\n<ng-template #bs4Template>\\n <ng-template ngFor let-match let-i=\\\"index\\\" [ngForOf]=\\\"matches\\\">\\n <h6 *ngIf=\\\"match.isHeader()\\\" class=\\\"dropdown-header\\\">{{ match }}</h6>\\n <ng-template [ngIf]=\\\"!match.isHeader()\\\">\\n <button #liElements\\n [id]=\\\"popupId + '-' + i\\\"\\n role=\\\"option\\\"\\n [@typeaheadAnimation]=\\\"animationState\\\"\\n class=\\\"dropdown-item\\\"\\n (click)=\\\"selectMatch(match, $event)\\\"\\n (mouseenter)=\\\"selectActive(match)\\\"\\n [class.active]=\\\"isActive(match)\\\">\\n <ng-template [ngTemplateOutlet]=\\\"itemTemplate || bsItemTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{item: match.item, index: i, match: match, query: query}\\\">\\n </ng-template>\\n </button>\\n </ng-template>\\n </ng-template>\\n</ng-template>\\n\", styles: [\":host.dropdown{z-index:1000}:host.dropdown-menu,.dropdown-menu{overflow-y:auto;height:100px}\\n\"] }]\n }], ctorParameters: () => [{ type: i1.PositioningService }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { activeChangeEvent: [{\n type: Output,\n args: ['activeChange']\n }], ulElement: [{\n type: ViewChild,\n args: ['ulElement', { static: false }]\n }], liElements: [{\n type: ViewChildren,\n args: ['liElements']\n }], focusLost: [{\n type: HostListener,\n args: ['mouseleave']\n }, {\n type: HostListener,\n args: ['blur']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWFoZWFkLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHlwZWFoZWFkL3R5cGVhaGVhZC1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL3R5cGVhaGVhZC90eXBlYWhlYWQtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBRVosU0FBUyxFQUNULFNBQVMsRUFFVCxTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRzdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUVoRSxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7QUErQnJCLE1BQU0sT0FBTywyQkFBMkI7SUFtQnRDLElBQUksd0JBQXdCO1FBQzFCLE9BQU87WUFDTCxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3hDLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDMUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztT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Q0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUM3QyxDQUFDOzhHQS9WVSwyQkFBMkI7a0dBQTNCLDJCQUEyQixxY0FIekIsQ0FBQyxrQkFBa0IsQ0FBQyxnTkN0RG5DLHE3Q0FtQ0Esd0pEa0JjLGdCQUFnQixvSkFBRSxLQUFLLG1IQUFFLElBQUksK0VBRjNCLENBQUMsa0JBQWtCLENBQUM7OzJGQU12QiwyQkFBMkI7a0JBN0J2QyxTQUFTOytCQUNJLHFCQUFxQixRQUV6Qjt3QkFDRixLQUFLLEVBQUUsb0NBQW9DO3dCQUMzQyxnQkFBZ0IsRUFBRSxtQ0FBbUM7d0JBQ3JELG9CQUFvQixFQUFFLFdBQVc7d0JBQ2pDLGdCQUFnQixFQUFFLFFBQVE7d0JBQzFCLEtBQUssRUFBRSxvQ0FBb0M7d0JBQzNDLGFBQWEsRUFBRSxXQUFXO3FCQUM3QixjQWFXLENBQUMsa0JBQWtCLENBQUMsY0FDcEIsSUFBSSxXQUNQLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxhQUM3QixDQUFDLGtCQUFrQixDQUFDO3dLQUtULGlCQUFpQjtzQkFBeEMsTUFBTTt1QkFBQyxjQUFjO2dCQTZCZCxTQUFTO3NCQURoQixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSWpDLFVBQVU7c0JBRGpCLFlBQVk7dUJBQUMsWUFBWTtnQkErTTFCLFNBQVM7c0JBRlIsWUFBWTt1QkFBQyxZQUFZOztzQkFDekIsWUFBWTt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBPbkRlc3Ryb3ksXG4gIFF1ZXJ5TGlzdCxcbiAgUmVuZGVyZXIyLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJ25neC1ib290c3RyYXAvdXRpbHMnO1xuaW1wb3J0IHsgUG9zaXRpb25pbmdTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9wb3NpdGlvbmluZyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgbGF0aW5pemUgfSBmcm9tICcuL3R5cGVhaGVhZC11dGlscyc7XG5pbXBvcnQgeyBUeXBlYWhlYWRNYXRjaCB9IGZyb20gJy4vdHlwZWFoZWFkLW1hdGNoLmNsYXNzJztcbmltcG9ydCB7IFR5cGVhaGVhZERpcmVjdGl2ZSB9IGZyb20gJy4vdHlwZWFoZWFkLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyB0eXBlYWhlYWRBbmltYXRpb24gfSBmcm9tICcuL3R5cGVhaGVhZC1hbmltYXRpb25zJztcbmltcG9ydCB7IFR5cGVhaGVhZE9wdGlvbkl0ZW1Db250ZXh0LCBUeXBlYWhlYWRPcHRpb25MaXN0Q29udGV4dCwgVHlwZWFoZWFkVGVtcGxhdGVNZXRob2RzIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCwgTmdGb3IsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5sZXQgbmV4dFdpbmRvd0lkID0gMDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0eXBlYWhlYWQtY29udGFpbmVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdHlwZWFoZWFkLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2Ryb3Bkb3duIG9wZW4gYm90dG9tIGRyb3Bkb3duLW1lbnUnLFxuICAgICAgICAnW3N0eWxlLmhlaWdodF0nOiBgbmVlZFNjcm9sbGJhciA/IGd1aUhlaWdodDogJ2F1dG8nYCxcbiAgICAgICAgJ1tzdHlsZS52aXNpYmlsaXR5XSc6IGAnaW5oZXJpdCdgLFxuICAgICAgICAnW2NsYXNzLmRyb3B1cF0nOiAnZHJvcHVwJyxcbiAgICAgICAgc3R5bGU6ICdwb3NpdGlvbjogYWJzb2x1dGU7ZGlzcGxheTogYmxvY2s7JyxcbiAgICAgICAgJ1thdHRyLnJvbGVdJzogYCdsaXN0Ym94J2BcbiAgICB9LFxuICAgIHN0eWxlczogW1xuICAgICAgICBgXG4gICAgOmhvc3QuZHJvcGRvd24ge1xuICAgICAgei1pbmRleDogMTAwMDtcbiAgICB9XG5cbiAgICA6aG9zdC5kcm9wZG93bi1tZW51LCAuZHJvcGRvd24tbWVudSB7XG4gICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgaGVpZ2h0OiAxMDBweDtcbiAgICB9XG4gIGBcbiAgICBdLFxuICAgIGFuaW1hdGlvbnM6IFt0eXBlYWhlYWRBbmltYXRpb25dLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nVGVtcGxhdGVPdXRsZXQsIE5nRm9yLCBOZ0lmXSxcbiAgICBwcm92aWRlcnM6IFtQb3NpdGlvbmluZ1NlcnZpY2VdXG59KVxuXG5leHBvcnQgY2xhc3MgVHlwZWFoZWFkQ29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtcmVuYW1lXG4gIEBPdXRwdXQoJ2FjdGl2ZUNoYW5nZScpIGFjdGl2ZUNoYW5nZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHBhcmVudD86IFR5cGVhaGVhZERpcmVjdGl2ZTtcbiAgcXVlcnk/OiBzdHJpbmdbXSB8IHN0cmluZztcbiAgaXNGb2N1c2VkID0gZmFsc2U7XG4gIHRvcD86IHN0cmluZztcbiAgbGVmdD86IHN0cmluZztcbiAgZGlzcGxheT86IHN0cmluZztcbiAgcGxhY2VtZW4/OiBzdHJpbmc7XG4gIGRyb3B1cD86IGJvb2xlYW47XG4gIGd1aUhlaWdodD86IHN0cmluZztcbiAgbmVlZFNjcm9sbGJhcj86IGJvb2xlYW47XG4gIGFuaW1hdGlvblN0YXRlPzogc3RyaW5nO1xuICBwb3NpdGlvblNlcnZpY2VTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIGhlaWdodCA9IDA7XG4gIHBvcHVwSWQgPSBgbmdiLXR5cGVhaGVhZC0ke25leHRXaW5kb3dJZCsrfWA7XG5cbiAgZ2V0IHR5cGVhaGVhZFRlbXBsYXRlTWV0aG9kcygpOiBUeXBlYWhlYWRUZW1wbGF0ZU1ldGhvZHMge1xuICAgIHJldHVybiB7XG4gICAgICBzZWxlY3RNYXRjaDogdGhpcy5zZWxlY3RNYXRjaC5iaW5kKHRoaXMpLFxuICAgICAgc2VsZWN0QWN0aXZlOiB0aGlzLnNlbGVjdEFjdGl2ZS5iaW5kKHRoaXMpLFxuICAgICAgaXNBY3RpdmU6IHRoaXMuaXNBY3RpdmUuYmluZCh0aGlzKVxuICAgIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgX2FjdGl2ZT86IFR5cGVhaGVhZE1hdGNoO1xuICBwcm90ZWN0ZWQgX21hdGNoZXM6IFR5cGVhaGVhZE1hdGNoW10gPSBbXTtcblxuICBAVmlld0NoaWxkKCd1bEVsZW1lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcHJpdmF0ZSB1bEVsZW1lbnQ/OiBFbGVtZW50UmVmO1xuXG4gIEBWaWV3Q2hpbGRyZW4oJ2xpRWxlbWVudHMnKVxuICBwcml2YXRlIGxpRWxlbWVudHM/OiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwb3NpdGlvblNlcnZpY2U6IFBvc2l0aW9uaW5nU2VydmljZSxcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHVibGljIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdpZCcsIHRoaXMucG9wdXBJZCk7XG4gICAgdGhpcy5wb3NpdGlvblNlcnZpY2VTdWJzY3JpcHRpb24uYWRkKHRoaXMucG9zaXRpb25TZXJ2aWNlLmV2ZW50JD8uc3Vic2NyaWJlKFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5pc0FuaW1hdGVkKSB7XG4gICAgICAgICAgdGhpcy5hbmltYXRpb25TdGF0ZSA9IHRoaXMuaXNUb3BQb3NpdGlvbiA/ICdhbmltYXRlZC11cCcgOiAnYW5pbWF0ZWQtZG93bic7XG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFuaW1hdGlvblN0YXRlID0gJ3VuYW5pbWF0ZWQnO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH1cbiAgICApKTtcbiAgfVxuXG4gIGdldCBhY3RpdmUoKTogVHlwZWFoZWFkTWF0Y2ggfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmU7XG4gIH1cblxuICBzZXQgYWN0aXZlKGFjdGl2ZTogVHlwZWFoZWFkTWF0Y2ggfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9hY3RpdmUgPSBhY3RpdmU7XG4gICAgdGhpcy5hY3RpdmVDaGFuZ2VkKCk7XG4gIH1cblxuICBnZXQgbWF0Y2hlcygpOiBUeXBlYWhlYWRNYXRjaFtdIHtcbiAgICByZXR1cm4gdGhpcy5fbWF0Y2hlcztcbiAgfVxuXG4gIHNldCBtYXRjaGVzKHZhbHVlOiBUeXBlYWhlYWRNYXRjaFtdKSB7XG4gICAgdGhpcy5wb3NpdGlvblNlcnZpY2Uuc2V0T3B0aW9ucyh7XG4gICAgICBtb2RpZmllcnM6IHsgZmxpcDogeyBlbmFibGVkOiB0aGlzLmFkYXB0aXZlUG9zaXRpb24gfSB9LFxuICAgICAgYWxsb3dlZFBvc2l0aW9uczogWyd0b3AnLCAnYm90dG9tJ11cbiAgICB9KTtcblxuICAgIHRoaXMuX21hdGNoZXMgPSB2YWx1ZTtcblxuICAgIHRoaXMubmVlZFNjcm9sbGJhciA9IHRoaXMudHlwZWFoZWFkU2Nyb2xsYWJsZSAmJiB0aGlzLnR5cGVhaGVhZE9wdGlvbnNJblNjcm9sbGFibGVWaWV3IDwgdGhpcy5tYXRjaGVzLmxlbmd0aDtcblxuICAgIGlmICh0aGlzLnR5cGVhaGVhZFNjcm9sbGFibGUpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnNldFNjcm9sbGFibGVNb2RlKCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50eXBlYWhlYWRJc0ZpcnN0SXRlbUFjdGl2ZSAmJiB0aGlzLl9tYXRjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2V0QWN0aXZlKHRoaXMuX21hdGNoZXNbMF0pO1xuXG4gICAgICBpZiAodGhpcy5fYWN0aXZlPy5pc0hlYWRlcigpKSB7XG4gICAgICAgIHRoaXMubmV4dEFjdGl2ZU1hdGNoKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2FjdGl2ZSAmJiAhdGhpcy50eXBlYWhlYWRJc0ZpcnN0SXRlbUFjdGl2ZSkge1xuICAgICAgY29uc3QgY29uY3VycmVuY3kgPSB0aGlzLl9tYXRjaGVzLmZpbmQobWF0Y2ggPT4gbWF0Y2gudmFsdWUgPT09IHRoaXMuX2FjdGl2ZT8udmFsdWUpO1xuXG4gICAgICBpZiAoY29uY3VycmVuY3kpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RBY3RpdmUoY29uY3VycmVuY3kpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5hY3RpdmUgPSB2b2lkIDA7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGlzVG9wUG9zaXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygndG9wJyk7XG4gIH1cblxuICBnZXQgb3B0aW9uc0xpc3RUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjxUeXBlYWhlYWRPcHRpb25MaXN0Q29udGV4dD4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnBhcmVudCA/IHRoaXMucGFyZW50Lm9wdGlvbnNMaXN0VGVtcGxhdGUgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgaXNBbmltYXRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQgPyB0aGlzLnBhcmVudC5pc0FuaW1hdGVkIDogZmFsc2U7XG4gIH1cblxuICBnZXQgYWRhcHRpdmVQb3NpdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQgPyB0aGlzLnBhcmVudC5hZGFwdGl2ZVBvc2l0aW9uIDogZmFsc2U7XG4gIH1cblxuICBnZXQgdHlwZWFoZWFkU2Nyb2xsYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQgPyB0aGlzLnBhcmVudC50eXBlYWhlYWRTY3JvbGxhYmxlIDogZmFsc2U7XG4gIH1cblxuICBnZXQgdHlwZWFoZWFkT3B0aW9uc0luU2Nyb2xsYWJsZVZpZXcoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQgPyB0aGlzLnBhcmVudC50eXBlYWhlYWRPcHRpb25zSW5TY3JvbGxhYmxlVmlldyA6IDU7XG4gIH1cblxuICBnZXQgdHlwZWFoZWFkSXNGaXJzdEl0ZW1BY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50ID8gdGhpcy5wYXJlbnQudHlwZWFoZWFkSXNGaXJzdEl0ZW1BY3RpdmUgOiB0cnVlO1xuICB9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIGdldCBpdGVtVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8VHlwZWFoZWFkT3B0aW9uSXRlbUNvbnRleHQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQgPyB0aGlzLnBhcmVudC50eXBlYWhlYWRJdGVtVGVtcGxhdGUgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgY2FuU2VsZWN0SXRlbXNPbkJsdXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5wYXJlbnQ/LnNlbGVjdEl0ZW1PbkJsdXI7XG4gIH1cblxuICBzZWxlY3RBY3RpdmVNYXRjaChpc0FjdGl2ZUl0ZW1DaGFuZ2VkPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLl9hY3RpdmUgJiYgdGhpcy5wYXJlbnQ/LnR5cGVhaGVhZFNlbGVjdEZpcnN0SXRlbSkge1xuICAgICAgdGhpcy5zZWxlY3RNYXRjaCh0aGlzLl9hY3RpdmUpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5wYXJlbnQ/LnR5cGVhaGVhZFNlbGVjdEZpcnN0SXRlbSAmJiBpc0FjdGl2ZUl0ZW1DaGFuZ2VkKSB7XG4gICAgICB0aGlzLnNlbGVjdE1hdGNoKHRoaXMuX2FjdGl2ZSk7XG4gICAgfVxuICB9XG5cbiAgYWN0aXZlQ2hhbmdlZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2FjdGl2ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpbmRleCA9IHRoaXMubWF0Y2hlcy5pbmRleE9mKHRoaXMuX2FjdGl2ZSk7XG4gICAgdGhpcy5hY3RpdmVDaGFuZ2VFdmVudC5lbWl0KGAke3RoaXMucG9wdXBJZH0tJHtpbmRleH1gKTtcbiAgfVxuXG4gIHByZXZBY3RpdmVNYXRjaCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2FjdGl2ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5tYXRjaGVzLmluZGV4T2YodGhpcy5fYWN0aXZlKTtcbiAgICB0aGlzLnNldEFjdGl2ZSh0aGlzLm1hdGNoZXNbXG4gICAgICBpbmRleCAtIDEgPCAwID8gdGhpcy5tYXRjaGVzLmxlbmd0aCAtIDEgOiBpbmRleCAtIDFcbiAgICAgIF0pO1xuXG4gICAgaWYgKHRoaXMuX2FjdGl2ZS5pc0hlYWRlcigpKSB7XG4gICAgICB0aGlzLnByZXZBY3RpdmVNYXRjaCgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGVhaGVhZFNjcm9sbGFibGUpIHtcbiAgICAgIHRoaXMuc2Nyb2xsUHJldmlvdXMoaW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIG5leHRBY3RpdmVNYXRjaCgpOiB2b2lkIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuX2FjdGl2ZSA/IHRoaXMubWF0Y2hlcy5pbmRleE9mKHRoaXMuX2FjdGl2ZSkgOiAtMTtcbiAgICB0aGlzLnNldEFjdGl2ZSh0aGlzLm1hdGNoZXNbXG4gICAgICBpbmRleCArIDEgPiB0aGlzLm1hdGNoZXMubGVuZ3RoIC0gMSA/IDAgOiBpbmRleCArIDFcbiAgICAgIF0pO1xuXG4gICAgaWYgKHRoaXMuX2FjdGl2ZT8uaXNIZWFkZXIoKSkge1xuICAgICAgdGhpcy5uZXh0QWN0aXZlTWF0Y2goKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50eXBlYWhlYWRTY3JvbGxhYmxlKSB7XG4gICAgICB0aGlzLnNjcm9sbE5leHQoaW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdEFjdGl2ZSh2YWx1ZTogVHlwZWFoZWFkTWF0Y2gpOiB2b2lkIHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IHRydWU7XG4gICAgdGhpcy5zZXRBY3RpdmUodmFsdWUpO1xuICB9XG5cbiAgaGlnaGxpZ2h0KG1hdGNoOiBUeXBlYWhlYWRNYXRjaCwgcXVlcnk6IHN0cmluZ1tdIHwgc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgaXRlbVN0cjogc3RyaW5nID0gbWF0Y2gudmFsdWU7XG4gICAgbGV0IGl0ZW1TdHJIZWxwZXI6IHN0cmluZyA9ICh0aGlzLnBhcmVudCAmJiB0aGlzLnBhcmVudC50eXBlYWhlYWRMYXRpbml6ZVxuICAgICAgPyBsYXRpbml6ZShpdGVtU3RyKVxuICAgICAgOiBpdGVtU3RyKS50b0xvd2VyQ2FzZSgpO1xuICAgIGxldCBzdGFydElkeDogbnVtYmVyO1xuICAgIGxldCB0b2tlbkxlbjogbnVtYmVyO1xuICAgIC8vIFJlcGxhY2VzIHRoZSBjYXB0dXJlIHN0cmluZyB3aXRoIHRoZSBzYW1lIHN0cmluZyBpbnNpZGUgb2YgYSBcInN0cm9uZ1wiIHRhZ1xuICAgIGlmICh0eXBlb2YgcXVlcnkgPT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zdCBxdWVyeUxlbjogbnVtYmVyID0gcXVlcnkubGVuZ3RoO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBxdWVyeUxlbjsgaSArPSAxKSB7XG4gICAgICAgIC8vIHF1ZXJ5W2ldIGlzIGFscmVhZHkgbGF0aW5pemVkIGFuZCBsb3dlciBjYXNlXG4gICAgICAgIHN0YXJ0SWR4ID0gaXRlbVN0ckhlbHBlci5pbmRleE9mKHF1ZXJ5W2ldKTtcbiAgICAgICAgdG9rZW5MZW4gPSBxdWVyeVtpXS5sZW5ndGg7XG4gICAgICAgIGlmIChzdGFydElkeCA+PSAwICYmIHRva2VuTGVuID4gMCkge1xuICAgICAgICAgIGl0ZW1TdHIgPVxuICAgICAgICAgICAgYCR7aXRlbVN0ci5zdWJzdHJpbmcoMCwgc3RhcnRJZHgpfTxzdHJvbmc+JHtpdGVtU3RyLnN1YnN0cmluZyhzdGFydElkeCwgc3RhcnRJZHggKyB0b2tlbkxlbil9PC9zdHJvbmc+YCArXG4gICAgICAgICAgICBgJHtpdGVtU3RyLnN1YnN0cmluZyhzdGFydElkeCArIHRva2VuTGVuKX1gO1xuICAgICAgICAgIGl0ZW1TdHJIZWxwZXIgPVxuICAgICAgICAgICAgYCR7aXRlbVN0ckhlbHBlci5zdWJzdHJpbmcoMCwgc3RhcnRJZHgpfT8/Pz8/Pz8/JHsnPz8nLnJlcGVhdCh0b2tlbkxlbil9Pz8/Pz8/Pz8/P2AgK1xuICAgICAgICAgICAgYCR7aXRlbVN0ckhlbHBlci5zdWJzdHJpbmcoc3RhcnRJZHggKyB0b2tlbkxlbil9YDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocXVlcnkpIHtcbiAgICAgIC8vIHF1ZXJ5IGlzIGFscmVhZHkgbGF0aW5pemVkIGFuZCBsb3dlciBjYXNlXG4gICAgICBzdGFydElkeCA9IGl0ZW1TdHJIZWxwZXIuaW5kZXhPZihxdWVyeSk7XG4gICAgICB0b2tlbkxlbiA9IHF1ZXJ5Lmxlbmd0aDtcbiAgICAgIGlmIChzdGFydElkeCA+PSAwICYmIHRva2VuTGVuID4gMCkge1xuICAgICAgICBpdGVtU3RyID1cbiAgICAgICAgICBgJHtpdGVtU3RyLnN1YnN0cmluZygwLCBzdGFydElkeCl9PHN0cm9uZz4ke2l0ZW1TdHIuc3Vic3RyaW5nKHN0YXJ0SWR4LCBzdGFydElkeCArIHRva2VuTGVuKX08L3N0cm9uZz5gICtcbiAgICAgICAgICBgJHtpdGVtU3RyLnN1YnN0cmluZyhzdGFydElkeCArIHRva2VuTGVuKX1gO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpdGVtU3RyO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInKVxuICBmb2N1c0xvc3QoKTogdm9pZCB7XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSBmYWxzZTtcbiAgICBpZiAoIXRoaXMuY2FuU2VsZWN0SXRlbXNPbkJsdXIpIHtcbiAgICAgIHRoaXMuc2V0QWN0aXZlKHZvaWQgMCk7XG4gICAgfVxuICB9XG5cbiAgaXNBY3RpdmUodmFsdWU6IFR5cGVhaGVhZE1hdGNoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlID09PSB2YWx1ZTtcbiAgfVxuXG4gIHNlbGVjdE1hdGNoKHZhbHVlPzogVHlwZWFoZWFkTWF0Y2gsIGV2ZW50PzogRXZlbnQpOiBib29sZWFuIHtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgdGhpcy5wYXJlbnQ/LmNoYW5nZU1vZGVsKHZhbHVlKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucGFyZW50Py50eXBlYWhlYWRPblNlbGVjdC5lbWl0KHZhbHVlKSwgMCk7XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzZXRTY3JvbGxhYmxlTW9kZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudWxFbGVtZW50KSB7XG4gICAgICB0aGlzLnVsRWxlbWVudCA9IHRoaXMuZWxlbWVudDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5saUVsZW1lbnRzPy5maXJzdCkge1xuICAgICAgY29uc3QgdWxTdHlsZXMgPSBVdGlscy5nZXRTdHlsZXModGhpcy51bEVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gICAgICBjb25zdCBsaVN0eWxlcyA9IFV0aWxzLmdldFN0eWxlcyh0aGlzLmxpRWxlbWVudHMuZmlyc3QubmF0aXZlRWxlbWVudCk7XG4gICAgICBjb25zdCB1bFBhZGRpbmdCb3R0b20gPSBwYXJzZUZsb2F0KCh1bFN0eWxlc1sncGFkZGluZy1ib3R0b20nXSA/IHVsU3R5bGVzWydwYWRkaW5nLWJvdHRvbSddIDogJycpXG4gICAgICAgIC5yZXBsYWNlKCdweCcsICcnKSk7XG4gICAgICBjb25zdCB1bFBhZGRpbmdUb3AgPSBwYXJzZUZsb2F0KCh1bFN0eWxlc1sncGFkZGluZy10b3AnXSA/IHVsU3R5bGVzWydwYWRkaW5nLXRvcCddIDogJzAnKVxuICAgICAgICAucmVwbGFjZSgncHgnLCAnJykpO1xuICAgICAgY29uc3Qgb3B0aW9uSGVpZ2h0ID0gcGFyc2VGbG9hdCgobGlTdHlsZXMuaGVpZ2h0ID8gbGlTdHlsZXMuaGVpZ2h0IDogJzAnKVxuICAgICAgICAucmVwbGFjZSgncHgnLCAnJykpO1xuICAgICAgY29uc3QgaGVpZ2h0ID0gdGhpcy50eXBlYWhlYWRPcHRpb25zSW5TY3JvbGxhYmxlVmlldyAqIG9wdGlvbkhlaWdodDtcbiAgICAgIHRoaXMuZ3VpSGVpZ2h0ID0gYCR7aGVpZ2h0ICsgdWxQYWRkaW5nVG9wICsgdWxQYWRkaW5nQm90dG9tfXB4YDtcbiAgICB9XG5cbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCAndmlzaWJpbGl0eScsICd2aXNpYmxlJyk7XG4gIH1cblxuICBzY3JvbGxQcmV2aW91cyhpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMubGlFbGVtZW50cyAmJiB0aGlzLnVsRWxlbWVudCkge1xuICAgICAgY29uc3QgbGlFbGVtZW50ID0gdGhpcy5saUVsZW1lbnRzLnRvQXJyYXkoKVtpbmRleCAtIDFdO1xuICAgICAgaWYgKGxpRWxlbWVudCAmJiAhdGhpcy5pc1Njcm9sbGVkSW50b1ZpZXcobGlFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgIHRoaXMudWxFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gbGlFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0VG9wO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNjcm9sbE5leHQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChpbmRleCArIDEgPiB0aGlzLm1hdGNoZXMubGVuZ3RoIC0gMSkge1xuICAgICAgdGhpcy5zY3JvbGxUb1RvcCgpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmxpRWxlbWVudHMgJiYgdGhpcy51bEVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IGxpRWxlbWVudCA9IHRoaXMubGlFbGVtZW50cy50b0FycmF5KClbaW5kZXggKyAxXTtcbiAgICAgIGlmIChsaUVsZW1lbnQgJiYgIXRoaXMuaXNTY3JvbGxlZEludG9WaWV3KGxpRWxlbWVudC5uYXRpdmVFbGVtZW50KSkge1xuICAgICAgICB0aGlzLnVsRWxlbWVudC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9XG4gICAgICAgICAgbGlFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0VG9wIC1cbiAgICAgICAgICBOdW1iZXIodGhpcy51bEVsZW1lbnQubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQpICtcbiAgICAgICAgICBOdW1iZXIobGlFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnBvc2l0aW9uU2VydmljZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldEFjdGl2ZSh2YWx1ZT86IFR5cGVhaGVhZE1hdGNoKTogdm9pZCB7XG4gICAgdGhpcy5fYWN0aXZlID0gdmFsdWU7XG4gICAgbGV0IHByZXZpZXc7XG4gICAgaWYgKCEodGhpcy5fYWN0aXZlID09IG51bGwgfHwgdGhpcy5fYWN0aXZlLmlzSGVhZGVyKCkpKSB7XG4gICAgICBwcmV2aWV3ID0gdmFsdWU7XG4gICAgfVxuICAgIHRoaXMucGFyZW50Py50eXBlYWhlYWRPblByZXZpZXcuZW1pdChwcmV2aWV3KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNTY3JvbGxlZEludG9WaWV3KGVsZW06IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLnVsRWxlbWVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBjb250YWluZXJWaWV3VG9wOiBudW1iZXIgPSB0aGlzLnVsRWxlbWVudC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcDtcbiAgICBjb25zdCBjb250YWluZXJWaWV3Qm90dG9tID0gY29udGFpbmVyVmlld1RvcCArIE51bWJlcih0aGlzLnVsRWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCk7XG4gICAgY29uc3QgZWxlbVRvcCA9IGVsZW0ub2Zmc2V0VG9wO1xuICAgIGNvbnN0IGVsZW1Cb3R0b20gPSBlbGVtVG9wICsgZWxlbS5vZmZzZXRIZWlnaHQ7XG5cbiAgICByZXR1cm4gKChlbGVtQm90dG9tIDw9IGNvbnRhaW5lclZpZXdCb3R0b20pICYmIChlbGVtVG9wID49IGNvbnRhaW5lclZpZXdUb3ApKTtcbiAgfVxuXG4gIHByaXZhdGUgc2Nyb2xsVG9Cb3R0b20oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnVsRWxlbWVudD8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnVsRWxlbWVudC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHRoaXMudWxFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICB9XG5cbiAgcHJpdmF0ZSBzY3JvbGxUb1RvcCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudWxFbGVtZW50Py5uYXRpdmVFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudWxFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcbiAgfVxufVxuIiwiPCEtLSBpbmplY3Qgb3B0aW9ucyBsaXN0IHRlbXBsYXRlIC0tPlxuPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm9wdGlvbnNMaXN0VGVtcGxhdGUgfHwgYnM0VGVtcGxhdGVcIlxuICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICBtYXRjaGVzOiBtYXRjaGVzLFxuICAgICAgICAgICAgICAgaXRlbVRlbXBsYXRlOiBpdGVtVGVtcGxhdGUgfHwgYnNJdGVtVGVtcGxhdGUsXG4gICAgICAgICAgICAgICBxdWVyeTogcXVlcnksXG4gICAgICAgICAgICAgICAkaW1wbGljaXQ6IHR5cGVhaGVhZFRlbXBsYXRlTWV0aG9kc1xuICAgICAgICAgICAgIH1cIj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gZGVmYXVsdCBvcHRpb25zIGl0ZW0gdGVtcGxhdGUgLS0+XG48bmctdGVtcGxhdGUgI2JzSXRlbVRlbXBsYXRlIGxldC1tYXRjaD1cIm1hdGNoXCIgbGV0LXF1ZXJ5PVwicXVlcnlcIj5cbiAgPHNwYW4gW2lubmVySHRtbF09XCJoaWdobGlnaHQobWF0Y2gsIHF1ZXJ5KVwiPjwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gQm9vdHN0cmFwIDQgb3B0aW9ucyBsaXN0IHRlbXBsYXRlIC0tPlxuPG5nLXRlbXBsYXRlICNiczRUZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1tYXRjaCBsZXQtaT1cImluZGV4XCIgW25nRm9yT2ZdPVwibWF0Y2hlc1wiPlxuICAgIDxoNiAqbmdJZj1cIm1hdGNoLmlzSGVhZGVyKClcIiBjbGFzcz1cImRyb3Bkb3duLWhlYWRlclwiPnt7IG1hdGNoIH19PC9oNj5cbiAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiIW1hdGNoLmlzSGVhZGVyKClcIj5cbiAgICAgIDxidXR0b24gI2xpRWxlbWVudHNcbiAgICAgICAgICAgICAgW2lkXT1cInBvcHVwSWQgKyAnLScgKyBpXCJcbiAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgIFtAdHlwZWFoZWFkQW5pbWF0aW9uXT1cImFuaW1hdGlvblN0YXRlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE1hdGNoKG1hdGNoLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwic2VsZWN0QWN0aXZlKG1hdGNoKVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaXNBY3RpdmUobWF0Y2gpXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtVGVtcGxhdGUgfHwgYnNJdGVtVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntpdGVtOiBtYXRjaC5pdGVtLCBpbmRleDogaSwgbWF0Y2g6IG1hdGNoLCBxdWVyeTogcXVlcnl9XCI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/** Default values provider for typeahead */\nexport class TypeaheadConfig {\n constructor() {\n /** sets use adaptive position */\n this.adaptivePosition = false;\n /** turn on/off animation */\n this.isAnimated = false;\n /** used to hide results on blur */\n this.hideResultsOnBlur = true;\n /** if true, typeahead will cancel async request on blur */\n this.cancelRequestOnFocusLost = false;\n /** used to choose the first item in typeahead container */\n this.selectFirstItem = true;\n /** used to active/inactive the first item in typeahead container */\n this.isFirstItemActive = true;\n /** used to choose set minimal no of characters that needs to\n * be entered before typeahead kicks-in\n */\n this.minLength = 1;\n /**\n * used to choose item on blur event\n */\n this.selectItemOnBlur = false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.2\", ngImport: i0, type: TypeaheadConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.2\", ngImport: i0, type: TypeaheadConfig, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.2\", ngImport: i0, type: TypeaheadConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWFoZWFkLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90eXBlYWhlYWQvdHlwZWFoZWFkLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzQyw0Q0FBNEM7QUFFNUMsTUFBTSxPQUFPLGVBQWU7SUFENUI7UUFFRSxpQ0FBaUM7UUFDakMscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLDRCQUE0QjtRQUM1QixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLG1DQUFtQztRQUNuQyxzQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDekIsMkRBQTJEO1FBQzNELDZCQUF3QixHQUFHLEtBQUssQ0FBQztRQUNqQywyREFBMkQ7UUFDM0Qsb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFDdkIsb0VBQW9FO1FBQ3BFLHNCQUFpQixHQUFHLElBQUksQ0FBQztRQUN6Qjs7V0FFRztRQUNILGNBQVMsR0FBRyxDQUFDLENBQUM7UUFDZDs7V0FFRztRQUNILHFCQUFnQixHQUFHLEtBQUssQ0FBQztLQUMxQjs4R0FyQlksZUFBZTtrSEFBZixlQUFlLGNBREYsTUFBTTs7MkZBQ25CLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKiogRGVmYXVsdCB2YWx1ZXMgcHJvdmlkZXIgZm9yIHR5cGVhaGVhZCAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBUeXBlYWhlYWRDb25maWcge1xuICAvKiogc2V0cyB1c2UgYWRhcHRpdmUgcG9zaXRpb24gKi9cbiAgYWRhcHRpdmVQb3NpdGlvbiA9IGZhbHNlO1xuICAvKiogdHVybiBvbi9vZmYgYW5pbWF0aW9uICovXG4gIGlzQW5pbWF0ZWQgPSBmYWxzZTtcbiAgLyoqIHVzZWQgdG8gaGlkZSByZXN1bHRzIG9uIGJsdXIgKi9cbiAgaGlkZVJlc3VsdHNPbkJsdXIgPSB0cnVlO1xuICAvKiogaWYgdHJ1ZSwgdHlwZWFoZWFkIHdpbGwgY2FuY2VsIGFzeW5jIHJlcXVlc3Qgb24gYmx1ciAqL1xuICBjYW5jZWxSZXF1ZXN0T25Gb2N1c0xvc3QgPSBmYWxzZTtcbiAgLyoqIHVzZWQgdG8gY2hvb3NlIHRoZSBmaXJzdCBpdGVtIGluIHR5cGVhaGVhZCBjb250YWluZXIgKi9cbiAgc2VsZWN0Rmlyc3RJdGVtID0gdHJ1ZTtcbiAgLyoqIHVzZWQgdG8gYWN0aXZlL2luYWN0aXZlIHRoZSBmaXJzdCBpdGVtIGluIHR5cGVhaGVhZCBjb250YWluZXIgKi9cbiAgaXNGaXJzdEl0ZW1BY3RpdmUgPSB0cnVlO1xuICAvKiogdXNlZCB0byBjaG9vc2Ugc2V0IG1pbmltYWwgbm8gb2YgY2hhcmFjdGVycyB0aGF0IG5lZWRzIHRvXG4gICAqIGJlIGVudGVyZWQgYmVmb3JlIHR5cGVhaGVhZCBraWNrcy1pblxuICAgKi9cbiAgbWluTGVuZ3RoID0gMTtcbiAgLyoqXG4gICAqIHVzZWQgdG8gY2hvb3NlIGl0ZW0gb24gYmx1ciBldmVudFxuICAgKi9cbiAgc2VsZWN0SXRlbU9uQmx1ciA9IGZhbHNlO1xufVxuIl19","import { ChangeDetectorRef, Directive, ElementRef, EventEmitter, HostListener, Input, Output, Renderer2, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\nimport { EMPTY, from, isObservable } from 'rxjs';\nimport { debounceTime, filter, mergeMap, switchMap, tap, toArray } from 'rxjs/operators';\nimport { TypeaheadContainerComponent } from './typeahead-container.component';\nimport { TypeaheadMatch } from './typeahead-match.class';\nimport { getValueFromObject, latinize, tokenize } from './typeahead-utils';\nimport { TypeaheadConfig } from './typeahead.config';\nimport { PositioningService } from 'ngx-bootstrap/positioning';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"ngx-bootstrap/component-loader\";\nimport * as i2 from \"./typeahead.config\";\nimport * as i3 from \"@angular/forms\";\nexport class TypeaheadDirective {\n constructor(cis, config, changeDetection, element, ngControl, renderer, viewContainerRef) {\n this.changeDetection = changeDetection;\n this.element = element;\n this.ngControl = ngControl;\n this.renderer = renderer;\n /** minimal no of characters that needs to be entered before\n * typeahead kicks-in. When set to 0, typeahead shows on focus with full\n * list of options (limited as normal by typeaheadOptionsLimit)\n */\n this.typeaheadMinLength = 1;\n /** sets use adaptive position */\n this.adaptivePosition = false;\n /** turn on/off animation */\n this.isAnimated = false;\n /** minimal wait time after last character typed before typeahead kicks-in */\n this.typeaheadWaitMs = 0;\n /** match latin symbols.\n * If true the word súper would match super and vice versa.\n */\n this.typeaheadLatinize = true;\n /** Can be use to search words by inserting a single white space between each characters\n * for example 'C a l i f o r n i a' will match 'California'.\n */\n this.typeaheadSingleWords = true;\n /** should be used only in case typeaheadSingleWords attribute is true.\n * Sets the word delimiter to break words. Defaults to space.\n */\n this.typeaheadWordDelimiters = ' ';\n /** should be used only in case typeaheadMultipleSearch attribute is true.\n * Sets the multiple search delimiter to know when to start a new search. Defaults to comma.\n * If space needs to be used, then explicitly set typeaheadWordDelimiters to something else than space\n * because space is used by default OR set typeaheadSingleWords attribute to false if you don't need\n * to use it together with multiple search.\n */\n this.typeaheadMultipleSearchDelimiters = ',';\n /** should be used only in case typeaheadSingleWords attribute is true.\n * Sets the word delimiter to match exact phrase.\n * Defaults to simple and double quotes.\n */\n this.typeaheadPhraseDelimiters = '\\'\"';\n /** specifies if typeahead is scrollable */\n this.typeaheadScrollable = false;\n /** specifies number of options to show in scroll view */\n this.typeaheadOptionsInScrollableView = 5;\n /** fired when an options list was opened and the user clicked Tab\n * If a value equal true, it will be chosen first or active item in the list\n * If value equal false, it will be chosen an active item in the list or nothing\n */\n this.typeaheadSelectFirstItem = true;\n /** makes active first item in a list */\n this.typeaheadIsFirstItemActive = true;\n /** fired when 'busy' state of this component was changed,\n * fired on async mode only, returns boolean\n */\n this.typeaheadLoading = new EventEmitter();\n /** fired on every key event and returns true\n * in case of matches are not detected\n */\n this.typeaheadNoResults = new EventEmitter();\n /** fired when option was selected, return object with data of this option. */\n this.typeaheadOnSelect = new EventEmitter();\n /** fired when option was previewed, return object with data of this option. */\n this.typeaheadOnPreview = new EventEmitter();\n /** fired when blur event occurs. returns the active item */\n this.typeaheadOnBlur = new EventEmitter();\n /** This attribute indicates that the dropdown should be opened upwards */\n this.dropup = false;\n this.isOpen = false;\n this.list = 'list';\n this.isActiveItemChanged = false;\n this.isFocused = false;\n this.cancelRequestOnFocusLost = false;\n this.selectItemOnBlur = false;\n this.keyUpEventEmitter = new EventEmitter();\n this.placement = 'bottom left';\n this._matches = [];\n this._subscriptions = [];\n this._outsideClickListener = () => void 0;\n this._typeahead = cis\n .createLoader(element, viewContainerRef, renderer)\n .provide({ provide: TypeaheadConfig, useValue: config });\n Object.assign(this, {\n typeaheadHideResultsOnBlur: config.hideResultsOnBlur,\n cancelRequestOnFocusLost: config.cancelRequestOnFocusLost,\n typeaheadSelectFirstItem: config.selectFirstItem,\n typeaheadIsFirstItemActive: config.isFirstItemActive,\n typeaheadMinLength: config.minLength,\n adaptivePosition: config.adaptivePosition,\n isAnimated: config.isAnimated,\n selectItemOnBlur: config.selectItemOnBlur\n });\n }\n get matches() {\n return this._matches;\n }\n ngOnInit() {\n this.typeaheadOptionsLimit = this.typeaheadOptionsLimit || 20;\n this.typeaheadMinLength = this.typeaheadMinLength === void 0 ? 1 : this.typeaheadMinLength;\n // async should be false in case of array\n if (this.typeaheadAsync === undefined && !isObservable(this.typeahead)) {\n this.typeaheadAsync = false;\n }\n if (isObservable(this.typeahead)) {\n this.typeaheadAsync = true;\n }\n if (this.typeaheadAsync) {\n this.asyncActions();\n }\n else {\n this.syncActions();\n }\n this.checkDelimitersConflict();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onInput(e) {\n // For `<input>`s, use the `value` property. For others that don't have a\n // `value` (such as `<span contenteditable=\"true\">`), use either\n // `textContent` or `innerText` (depending on which one is supported, i.e.\n // Firefox or IE).\n const value = e.target.value !== undefined\n ? e.target.value\n : e.target.textContent !== undefined\n ? e.target.textContent\n : e.target.innerText;\n if (value != null && value.trim().length >= this.typeaheadMinLength) {\n this.typeaheadLoading.emit(true);\n this.keyUpEventEmitter.emit(e.target.value);\n }\n else {\n this.typeaheadLoading.emit(false);\n this.typeaheadNoResults.emit(false);\n this.hide();\n }\n }\n onChange(event) {\n if (this._container) {\n // esc\n if (event.keyCode === 27 || event.key === 'Escape') {\n this.hide();\n return;\n }\n // up\n if (event.keyCode === 38 || event.key === 'ArrowUp') {\n this.isActiveItemChanged = true;\n this._container.prevActiveMatch();\n return;\n }\n // down\n if (event.keyCode === 40 || event.key === 'ArrowDown') {\n this.isActiveItemChanged = true;\n this._container.nextActiveMatch();\n return;\n }\n // enter\n if (event.keyCode === 13 || event.key === 'Enter') {\n this._container.selectActiveMatch();\n return;\n }\n }\n }\n onFocus() {\n this.isFocused = true;\n // add setTimeout to fix issue #5251\n // to get and emit updated value if it's changed on focus\n setTimeout(() => {\n if (this.typeaheadMinLength === 0) {\n this.typeaheadLoading.emit(true);\n this.keyUpEventEmitter.emit(this.element.nativeElement.value || '');\n }\n }, 0);\n }\n onBlur() {\n this.isFocused = false;\n if (this._container && !this._container.isFocused) {\n this.typeaheadOnBlur.emit(this._container.active);\n }\n if (!this.container && this._matches?.length === 0) {\n this.typeaheadOnBlur.emit(new TypeaheadMatch(this.element.nativeElement.value, this.element.nativeElement.value, false));\n }\n }\n onKeydown(event) {\n // no container - no problems\n if (!this._container) {\n return;\n }\n if (event.keyCode === 9 || event.key === 'Tab') {\n this.onBlur();\n }\n if (event.keyCode === 9 || event.key === 'Tab' || event.keyCode === 13 || event.key === 'Enter') {\n event.preventDefault();\n if (this.typeaheadSelectFirstItem) {\n this._container.selectActiveMatch();\n return;\n }\n if (!this.typeaheadSelectFirstItem) {\n this._container.selectActiveMatch(this.isActiveItemChanged);\n this.isActiveItemChanged = false;\n this.hide();\n }\n }\n }\n changeModel(match) {\n if (!match) {\n return;\n }\n let valueStr;\n if (this.typeaheadMultipleSearch && this._allEnteredValue) {\n const tokens = this._allEnteredValue.split(new RegExp(`([${this.typeaheadMultipleSearchDelimiters}]+)`));\n this._allEnteredValue = tokens\n .slice(0, tokens.length - 1)\n .concat(match.value)\n .join('');\n valueStr = this._allEnteredValue;\n }\n else {\n valueStr = match.value;\n }\n this.ngControl.viewToModelUpdate(valueStr);\n this.ngControl.control?.setValue(valueStr);\n this.changeDetection.markForCheck();\n this.hide();\n }\n show() {\n this._typeahead\n .attach(TypeaheadContainerComponent)\n .to(this.container)\n .position({ attachment: `${this.dropup ? 'top' : 'bottom'} left` })\n .show({\n typeaheadRef: this,\n placement: this.placement,\n animation: false,\n dropup: this.dropup\n });\n this._outsideClickListener = this.renderer.listen('document', 'click', (event) => {\n if (this.typeaheadMinLength === 0 && this.element.nativeElement.contains(event.target)) {\n return;\n }\n if (!this.typeaheadHideResultsOnBlur || this.element.nativeElement.contains(event.target)) {\n return;\n }\n this.onOutsideClick();\n });\n if (!this._typeahead.instance || !this.ngControl.control) {\n return;\n }\n this._container = this._typeahead.instance;\n this._container.parent = this;\n // This improves the speed as it won't have to be done for each list item\n const normalizedQuery = (this.typeaheadLatinize ? latinize(this.ngControl.control.value) : this.ngControl.control.value)\n .toString()\n .toLowerCase();\n this._container.query = this.tokenizeQuery(normalizedQuery);\n this._container.matches = this._matches;\n this.element.nativeElement.focus();\n this._container.activeChangeEvent.subscribe((activeId) => {\n this.activeDescendant = activeId;\n this.changeDetection.markForCheck();\n });\n this.isOpen = true;\n }\n hide() {\n if (this._typeahead.isShown) {\n this._typeahead.hide();\n this._outsideClickListener();\n this._container = void 0;\n this.isOpen = false;\n this.changeDetection.markForCheck();\n }\n this.typeaheadOnPreview.emit();\n }\n onOutsideClick() {\n if (this._container && !this._container.isFocused) {\n this.hide();\n }\n }\n ngOnDestroy() {\n // clean up subscriptions\n for (const sub of this._subscriptions) {\n sub.unsubscribe();\n }\n this._typeahead.dispose();\n }\n asyncActions() {\n this._subscriptions.push(this.keyUpEventEmitter\n .pipe(debounceTime(this.typeaheadWaitMs), tap((value) => (this._allEnteredValue = value)), switchMap(() => {\n if (!this.typeahead) {\n return EMPTY;\n }\n return this.typeahead;\n }))\n .subscribe((matches) => {\n this.finalizeAsyncCall(matches);\n }));\n }\n syncActions() {\n this._subscriptions.push(this.keyUpEventEmitter\n .pipe(debounceTime(this.typeaheadWaitMs), mergeMap((value) => {\n this._allEnteredValue = value;\n const normalizedQuery = this.normalizeQuery(value);\n if (!this.typeahead) {\n return EMPTY;\n }\n const typeahead = isObservable(this.typeahead) ? this.typeahead : from(this.typeahead);\n return typeahead.pipe(filter((option) => {\n return !!option && this.testMatch(this.normalizeOption(option), normalizedQuery);\n }), toArray());\n }))\n .subscribe((matches) => {\n this.finalizeAsyncCall(matches);\n }));\n }\n normalizeOption(option) {\n const optionValue = getValueFromObject(option, this.typeaheadOptionField);\n const normalizedOption = this.typeaheadLatinize ? latinize(optionValue) : optionValue;\n return normalizedOption.toLowerCase();\n }\n tokenizeQuery(currentQuery) {\n let query = currentQuery;\n if (this.typeaheadMultipleSearch && this.typeaheadSingleWords) {\n if (!this.haveCommonCharacters(`${this.typeaheadPhraseDelimiters}${this.typeaheadWordDelimiters}`, this.typeaheadMultipleSearchDelimiters)) {\n // single words and multiple search delimiters are different, can be used together\n query = tokenize(query, this.typeaheadWordDelimiters, this.typeaheadPhraseDelimiters, this.typeaheadMultipleSearchDelimiters);\n }\n }\n else if (this.typeaheadSingleWords) {\n query = tokenize(query, this.typeaheadWordDelimiters, this.typeaheadPhraseDelimiters);\n }\n else {\n // multiple searches\n query = tokenize(query, void 0, void 0, this.typeaheadMultipleSearchDelimiters);\n }\n return query;\n }\n normalizeQuery(value) {\n // If singleWords, break model here to not be doing extra work on each iteration\n let normalizedQuery = (this.typeaheadLatinize ? latinize(value) : value)\n .toString()\n .toLowerCase();\n normalizedQuery = this.tokenizeQuery(normalizedQuery);\n return normalizedQuery;\n }\n testMatch(match, test) {\n let spaceLength;\n if (typeof test === 'object') {\n spaceLength = test.length;\n for (let i = 0; i < spaceLength; i += 1) {\n if (test[i].length > 0 && match.indexOf(test[i]) < 0) {\n return false;\n }\n }\n return true;\n }\n return match.indexOf(test) >= 0;\n }\n finalizeAsyncCall(matches) {\n this.prepareMatches(matches || []);\n this.typeaheadLoading.emit(false);\n this.typeaheadNoResults.emit(!this.hasMatches());\n if (!this.hasMatches()) {\n this.hide();\n return;\n }\n if (!this.isFocused && this.cancelRequestOnFocusLost) {\n return;\n }\n if (this._container && this.ngControl.control) {\n // fix: remove usage of ngControl internals\n const _controlValue = (this.typeaheadLatinize ? latinize(this.ngControl.control.value) : this.ngControl.control.value) || '';\n // This improves the speed as it won't have to be done for each list item\n const normalizedQuery = _controlValue.toString().toLowerCase();\n this._container.query = this.tokenizeQuery(normalizedQuery);\n this._container.matches = this._matches;\n }\n else {\n this.show();\n }\n }\n prepareMatches(options) {\n const limited = options.slice(0, this.typeaheadOptionsLimit);\n const sorted = !this.typeaheadOrderBy ? limited : this.orderMatches(limited);\n if (this.typeaheadGroupField) {\n let matches = [];\n // extract all group names\n const groups = sorted\n .map((option) => getValueFromObject(option, this.typeaheadGroupField))\n .filter((v, i, a) => a.indexOf(v) === i);\n groups.forEach((group) => {\n // add group header to array of matches\n matches.push(new TypeaheadMatch(group, group, true));\n // add each item of group to array of matches\n matches = matches.concat(sorted\n .filter((option) => getValueFromObject(option, this.typeaheadGroupField) === group)\n .map((option) => new TypeaheadMatch(option, getValueFromObject(option, this.typeaheadOptionField))));\n });\n this._matches = matches;\n }\n else {\n this._matches = sorted.map(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (option) => new TypeaheadMatch(option, getValueFromObject(option, this.typeaheadOptionField)));\n }\n }\n orderMatches(options) {\n if (!options.length) {\n return options;\n }\n if (this.typeaheadOrderBy !== null &&\n this.typeaheadOrderBy !== undefined &&\n typeof this.typeaheadOrderBy === 'object' &&\n Object.keys(this.typeaheadOrderBy).length === 0) {\n console.error('Field and direction properties for typeaheadOrderBy have to be set according to documentation!');\n return options;\n }\n const { field, direction } = this.typeaheadOrderBy || {};\n if (!direction || !(direction === 'asc' || direction === 'desc')) {\n console.error('typeaheadOrderBy direction has to equal \"asc\" or \"desc\". Please follow the documentation.');\n return options;\n }\n if (typeof options[0] === 'string') {\n return direction === 'asc' ? options.sort() : options.sort().reverse();\n }\n if (!field || typeof field !== 'string') {\n console.error('typeaheadOrderBy field has to set according to the documentation.');\n return options;\n }\n return options.sort((a, b) => {\n const stringA = getValueFromObject(a, field);\n const stringB = getValueFromObject(b, field);\n if (stringA < stringB) {\n return direction === 'asc' ? -1 : 1;\n }\n if (stringA > stringB) {\n return direction === 'asc' ? 1 : -1;\n }\n return 0;\n });\n }\n hasMatches() {\n return this._matches.length > 0;\n }\n checkDelimitersConflict() {\n if (this.typeaheadMultipleSearch &&\n this.typeaheadSingleWords &&\n this.haveCommonCharacters(`${this.typeaheadPhraseDelimiters}${this.typeaheadWordDelimiters}`, this.typeaheadMultipleSearchDelimiters)) {\n throw new Error(`Delimiters used in typeaheadMultipleSearchDelimiters must be different\n from delimiters used in typeaheadWordDelimiters (current value: ${this.typeaheadWordDelimiters}) and\n typeaheadPhraseDelimiters (current value: ${this.typeaheadPhraseDelimiters}).\n Please refer to the documentation`);\n }\n }\n haveCommonCharacters(str1, str2) {\n for (let i = 0; i < str1.length; i++) {\n if (str1.charAt(i).indexOf(str2) > -1) {\n return true;\n }\n }\n return false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.2\", ngImport: i0, type: TypeaheadDirective, deps: [{ token: i1.ComponentLoaderFactory }, { token: i2.TypeaheadConfig }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i3.NgControl }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.2\", type: TypeaheadDirective, isStandalone: true, selector: \"[typeahead]\", inputs: { typeahead: \"typeahead\", typeaheadMinLength: \"typeaheadMinLength\", adaptivePosition: \"adaptivePosition\", isAnimated: \"isAnimated\", typeaheadWaitMs: \"typeaheadWaitMs\", typeaheadOptionsLimit: \"typeaheadOptionsLimit\", typeaheadOptionField: \"typeaheadOptionField\", typeaheadGroupField: \"typeaheadGroupField\", typeaheadOrderBy: \"typeaheadOrderBy\", typeaheadAsync: \"typeaheadAsync\", typeaheadLatinize: \"typeaheadLatinize\", typeaheadSingleWords: \"typeaheadSingleWords\", typeaheadWordDelimiters: \"typeaheadWordDelimiters\", typeaheadMultipleSearch: \"typeaheadMultipleSearch\", typeaheadMultipleSearchDelimiters: \"typeaheadMultipleSearchDelimiters\", typeaheadPhraseDelimiters: \"typeaheadPhraseDelimiters\", typeaheadItemTemplate: \"typeaheadItemTemplate\", optionsListTemplate: \"optionsListTemplate\", typeaheadScrollable: \"typeaheadScrollable\", typeaheadOptionsInScrollableView: \"typeaheadOptionsInScrollableView\", typeaheadHideResultsOnBlur: \"typeaheadHideResultsOnBlur\", typeaheadSelectFirstItem: \"typeaheadSelectFirstItem\", typeaheadIsFirstItemActive: \"typeaheadIsFirstItemActive\", container: \"container\", dropup: \"dropup\" }, outputs: { typeaheadLoading: \"typeaheadLoading\", typeaheadNoResults: \"typeaheadNoResults\", typeaheadOnSelect: \"typeaheadOnSelect\", typeaheadOnPreview: \"typeaheadOnPreview\", typeaheadOnBlur: \"typeaheadOnBlur\" }, host: { listeners: { \"input\": \"onInput($event)\", \"keyup\": \"onChange($event)\", \"click\": \"onFocus()\", \"focus\": \"onFocus()\", \"blur\": \"onBlur()\", \"keydown\": \"onKeydown($event)\" }, properties: { \"attr.aria-activedescendant\": \"activeDescendant\", \"attr.aria-owns\": \"isOpen ? this._container.popupId : null\", \"attr.aria-expanded\": \"isOpen\", \"attr.aria-autocomplete\": \"list\" } }, providers: [ComponentLoaderFactory, PositioningService], exportAs: [\"bs-typeahead\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.2\", ngImport: i0, type: TypeaheadDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[typeahead]',\n exportAs: 'bs-typeahead',\n host: {\n '[attr.aria-activedescendant]': 'activeDescendant',\n '[attr.aria-owns]': 'isOpen ? this._container.popupId : null',\n '[attr.aria-expanded]': 'isOpen',\n '[attr.aria-autocomplete]': 'list'\n },\n standalone: true,\n providers: [ComponentLoaderFactory, PositioningService]\n }]\n }], ctorParameters: () => [{ type: i1.ComponentLoaderFactory }, { type: i2.TypeaheadConfig }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i3.NgControl }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }], propDecorators: { typeahead: [{\n type: Input\n }], typeaheadMinLength: [{\n type: Input\n }], adaptivePosition: [{\n type: Input\n }], isAnimated: [{\n type: Input\n }], typeaheadWaitMs: [{\n type: Input\n }], typeaheadOptionsLimit: [{\n type: Input\n }], typeaheadOptionField: [{\n type: Input\n }], typeaheadGroupField: [{\n type: Input\n }], typeaheadOrderBy: [{\n type: Input\n }], typeaheadAsync: [{\n type: Input\n }], typeaheadLatinize: [{\n type: Input\n }], typeaheadSingleWords: [{\n type: Input\n }], typeaheadWordDelimiters: [{\n type: Input\n }], typeaheadMultipleSearch: [{\n type: Input\n }], typeaheadMultipleSearchDelimiters: [{\n type: Input\n }], typeaheadPhraseDelimiters: [{\n type: Input\n }], typeaheadItemTemplate: [{\n type: Input\n }], optionsListTemplate: [{\n type: Input\n }], typeaheadScrollable: [{\n type: Input\n }], typeaheadOptionsInScrollableView: [{\n type: Input\n }], typeaheadHideResultsOnBlur: [{\n type: Input\n }], typeaheadSelectFirstItem: [{\n type: Input\n }], typeaheadIsFirstItemActive: [{\n type: Input\n }], typeaheadLoading: [{\n type: Output\n }], typeaheadNoResults: [{\n type: Output\n }], typeaheadOnSelect: [{\n type: Output\n }], typeaheadOnPreview: [{\n type: Output\n }], typeaheadOnBlur: [{\n type: Output\n }], container: [{\n type: Input\n }], dropup: [{\n type: Input\n }], \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onInput: [{\n type: HostListener,\n args: ['input', ['$event']]\n }], onChange: [{\n type: HostListener,\n args: ['keyup', ['$event']]\n }], onFocus: [{\n type: HostListener,\n args: ['click']\n }, {\n type: HostListener,\n args: ['focus']\n }], onBlur: [{\n type: HostListener,\n args: ['blur']\n }], onKeydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWFoZWFkLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90eXBlYWhlYWQvdHlwZWFoZWFkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQW1CLHNCQUFzQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFekYsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUE0QixNQUFNLE1BQU0sQ0FBQztBQUMzRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd6RixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7O0FBa0IvRCxNQUFNLE9BQU8sa0JBQWtCO0lBZ0o3QixZQUNFLEdBQTJCLEVBQzNCLE1BQXVCLEVBQ2YsZUFBa0MsRUFDbEMsT0FBbUIsRUFDbkIsU0FBb0IsRUFDcEIsUUFBbUIsRUFDM0IsZ0JBQWtDO1FBSjFCLG9CQUFlLEdB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QkFFRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBRUcsa0JBQWtCO3NCQUEzQixNQUFNO2dCQUVHLGVBQWU7c0JBQXhCLE1BQU07Z0JBS0UsU0FBUztzQkFBakIsS0FBSztnQkFHRyxNQUFNO3NCQUFkLEtBQUs7O1FBc0ZOLDhEQUE4RDtRQUM5RCxPQUFPO3NCQUZOLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQXlCakMsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFxQ2pDLE9BQU87c0JBRk4sWUFBWTt1QkFBQyxPQUFPOztzQkFDcEIsWUFBWTt1QkFBQyxPQUFPO2dCQWNyQixNQUFNO3NCQURMLFlBQVk7dUJBQUMsTUFBTTtnQkFlcEIsU0FBUztzQkFEUixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbXBvbmVudExvYWRlciwgQ29tcG9uZW50TG9hZGVyRmFjdG9yeSB9IGZyb20gJ25neC1ib290c3RyYXAvY29tcG9uZW50LWxvYWRlcic7XG5cbmltcG9ydCB7IEVNUFRZLCBmcm9tLCBpc09ic2VydmFibGUsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1lcmdlTWFwLCBzd2l0Y2hNYXAsIHRhcCwgdG9BcnJheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFR5cGVhaGVhZE9wdGlvbkl0ZW1Db250ZXh0LCBUeXBlYWhlYWRPcHRpb25MaXN0Q29udGV4dCB9IGZyb20gJy4vbW9kZWxzJztcblxuaW1wb3J0IHsgVHlwZWFoZWFkQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi90eXBlYWhlYWQtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUeXBlYWhlYWRNYXRjaCB9IGZyb20gJy4vdHlwZWFoZWFkLW1hdGNoLmNsYXNzJztcbmltcG9ydCB7IFR5cGVhaGVhZE9yZGVyIH0gZnJvbSAnLi90eXBlYWhlYWQtb3JkZXIuY2xhc3MnO1xuaW1wb3J0IHsgZ2V0VmFsdWVGcm9tT2JqZWN0LCBsYXRpbml6ZSwgdG9rZW5pemUgfSBmcm9tICcuL3R5cGVhaGVhZC11dGlscyc7XG5pbXBvcnQgeyBUeXBlYWhlYWRDb25maWcgfSBmcm9tICcuL3R5cGVhaGVhZC5jb25maWcnO1xuaW1wb3J0IHsgUG9zaXRpb25pbmdTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9wb3NpdGlvbmluZyc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxudHlwZSBUeXBlYWhlYWRPcHRpb24gPSBzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nIHwgbnVtYmVyLCBhbnk+O1xudHlwZSBUeXBlYWhlYWRPcHRpb25BcnIgPSBUeXBlYWhlYWRPcHRpb25bXSB8IE9ic2VydmFibGU8VHlwZWFoZWFkT3B0aW9uPjtcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbdHlwZWFoZWFkXScsXG4gICAgZXhwb3J0QXM6ICdicy10eXBlYWhlYWQnLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1thdHRyLmFyaWEtYWN0aXZlZGVzY2VuZGFudF0nOiAnYWN0aXZlRGVzY2VuZGFudCcsXG4gICAgICAgICdbYXR0ci5hcmlhLW93bnNdJzogJ2lzT3BlbiA/IHRoaXMuX2NvbnRhaW5lci5wb3B1cElkIDogbnVsbCcsXG4gICAgICAgICdbYXR0ci5hcmlhLWV4cGFuZGVkXSc6ICdpc09wZW4nLFxuICAgICAgICAnW2F0dHIuYXJpYS1hdXRvY29tcGxldGVdJzogJ2xpc3QnXG4gICAgfSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW0NvbXBvbmVudExvYWRlckZhY3RvcnksIFBvc2l0aW9uaW5nU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgVHlwZWFoZWFkRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKiogb3B0aW9ucyBzb3VyY2UsIGNhbiBiZSBBcnJheSBvZiBzdHJpbmdzLCBvYmplY3RzIG9yXG4gICAqIGFuIE9ic2VydmFibGUgZm9yIGV4dGVybmFsIG1hdGNoaW5nIHByb2Nlc3NcbiAgICovXG4gIEBJbnB1dCgpIHR5cGVhaGVhZD86IFR5cGVhaGVhZE9wdGlvbkFycjtcbiAgLyoqIG1pbmltYWwgbm8gb2YgY2hhcmFjdGVycyB0aGF0IG5lZWRzIHRvIGJlIGVudGVyZWQgYmVmb3JlXG4gICAqIHR5cGVhaGVhZCBraWNrcy1pbi4gV2hlbiBzZXQgdG8gMCwgdHlwZWFoZWFkIHNob3dzIG9uIGZvY3VzIHdpdGggZnVsbFxuICAgKiBsaXN0IG9mIG9wdGlvbnMgKGxpbWl0ZWQgYXMgbm9ybWFsIGJ5IHR5cGVhaGVhZE9wdGlvbnNMaW1pdClcbiAgICovXG4gIEBJbnB1dCgpIHR5cGVhaGVhZE1pbkxlbmd0aCA9IDE7XG4gIC8qKiBzZXRzIHVzZSBhZGFwdGl2ZSBwb3NpdGlvbiAqL1xuICBASW5wdXQoKSBhZGFwdGl2ZVBvc2l0aW9uID0gZmFsc2U7XG4gIC8qKiB0dXJuIG9uL29mZiBhbmltYXRpb24gKi9cbiAgQElucHV0KCkgaXNBbmltYXRlZCA9IGZhbHNlO1xuICAvKiogbWluaW1hbCB3YWl0IHRpbWUgYWZ0ZXIgbGFzdCBjaGFyYWN0ZXIgdHlwZWQgYmVmb3JlIHR5cGVhaGVhZCBraWNrcy1pbiAqL1xuICBASW5wdXQoKSB0eXBlYWhlYWRXYWl0TXMgPSAwO1xuICAvKiogbWF4aW11bSBsZW5ndGggb2Ygb3B0aW9ucyBpdGVtcyBsaXN0LiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAyMCAqL1xuICBASW5wdXQoKSB0eXBlYWhlYWRPcHRpb25zTGltaXQ/OiBudW1iZXI7XG4gIC8qKiB3aGVuIG9wdGlvbnMgc291cmNlIGlzIGFuIGFycmF5IG9mIG9iamVjdHMsIHRoZSBuYW1lIG9mIGZpZWxkXG4gICAqIHRoYXQgY29udGFpbnMgdGhlIG9wdGlvbnMgdmFsdWUsIHdlIHVzZSBhcnJheSBpdGVtIGFzIG9wdGlvbiBpbiBjYXNlXG4gICAqIG9mIHRoaXMgZmllbGQgaXMgbWlzc2luZy4gU3VwcG9ydHMgbmVzdGVkIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMuXG4gICAqL1xuICBASW5wdXQoKSB0eXBlYWhlYWRPcHRpb25GaWVsZD86IHN0cmluZztcbiAgLyoqIHdoZW4gb3B0aW9ucyBzb3VyY2UgaXMgYW4gYXJyYXkgb2Ygb2JqZWN0cywgdGhlIG5hbWUgb2YgZmllbGQgdGhhdFxuICAgKiBjb250YWlucyB0aGUgZ3JvdXAgdmFsdWUsIG1hdGNoZXMgYXJlIGdyb3VwZWQgYnkgdGhpcyBmaWVsZCB3aGVuIHNldC5cbiAgICovXG4gIEBJbnB1dCgpIHR5cGVhaGVhZEdyb3VwRmllbGQ/OiBzdHJpbmc7XG4gIC8qKiBVc2VkIHRvIHNwZWNpZnkgYSBjdXN0b20gb3JkZXIgb2YgbWF0Y2hlcy4gV2hlbiBvcHRpb25zIHNvdXJjZSBpcyBhbiBhcnJheSBvZiBvYmplY3RzXG4gICAqIGEgZmllbGQgZm9yIHNvcnRpbmcgaGFzIHRvIGJlIHNldCB1cC4gSW4gY2FzZSBvZiBvcHRpb25zIHNvdXJjZSBpcyBhbiBhcnJheSBvZiBzdHJpbmcsXG4gICAqIGEgZmllbGQgZm9yIHNvcnRpbmcgaXMgYWJzZW50LiBUaGUgb3JkZXJpbmcgZGlyZWN0aW9uIGNvdWxkIGJlIGNoYW5nZWQgdG8gYXNjZW5kaW5nIG9yIGRlc2NlbmRpbmcuXG4gICAqL1xuICBASW5wdXQoKSB0eXBlYWhlYWRPcmRlckJ5PzogVHlwZWFoZWFkT3JkZXI7XG4gIC8qKiBzaG91bGQgYmUgdXNlZCBvbmx5IGluIGNhc2Ugb2YgdHlwZWFoZWFkIGF0dHJpYnV0ZSBpcyBPYnNlcnZhYmxlIG9mIGFycmF5LlxuICAgKiBJZiB0cnVlIC0gbG9hZGluZyBvZiBvcHRpb25zIHdpbGwgYmUgYXN5bmMsIG90aGVyd2lzZSAtIHN5bmMuXG4gICAqIHRydWUgbWFrZSBzZW5zZSBpZiBvcHRpb25zIGFycmF5IGlzIGxhcmdlLlxuICAgKi9cbiAgQElucHV0KCkgdHlwZWFoZWFkQXN5bmM/OiBib29sZWFuO1xuICAvKiogbWF0Y2ggbGF0aW4gc3ltYm9scy5cbiAgICogSWYgdHJ1ZSB0aGUgd29yZCBzw7pwZXIgd291bGQgbWF0Y2ggc3VwZXIgYW5kIHZpY2UgdmVyc2EuXG4gICAqL1xuICBASW5wdXQoKSB0eXBlYWhlYWRMYXRpbml6ZSA9IHRydWU7XG4gIC8qKiBDYW4gYmUgdXNlIHRvIHNlYXJjaCB3b3JkcyBieSBpbnNlcnRpbmcgYSBzaW5nbGUgd2hpdGUgc3BhY2UgYmV0d2VlbiBlYWNoIGNoYXJhY3RlcnNcbiAgICogIGZvciBleGFtcGxlICdDIGEgbCBpIGYgbyByIG4gaSBhJyB3aWxsIG1hdGNoICdDYWxpZm9ybmlhJy5cbiAgICovXG4gIEBJbnB1dCgpIHR5cGVhaGVhZFNpbmdsZVdvcmRzID0gdHJ1ZTtcbiAgLyoqIHNob3VsZCBiZSB1c2VkIG9ubHkgaW4gY2FzZSB0eXBlYWhlYWRTaW5nbGVXb3JkcyBhdHRyaWJ1dGUgaXMgdHJ1ZS5cbiAgICogU2V0cyB0aGUgd29yZCBkZWxpbWl0ZXIgdG8gYnJlYWsgd29yZHMuIERlZmF1bHRzIHRvIHNwYWNlLlxuICAgKi9cbiAgQElucHV0KCkgdHlwZWFoZWFkV29yZERlbGltaXRlcnMgPSAnICc7XG4gIC8qKiBDYW4gYmUgdXNlZCB0byBjb25kdWN0IGEgc2VhcmNoIG9mIG11bHRpcGxlIGl0ZW1zIGFuZCBoYXZlIHN1Z2dlc3Rpb24gbm90IGZvciB0aGVcbiAgICogd2hvbGUgdmFsdWUgb2YgdGhlIGlucHV0IGJ1dCBmb3IgdGhlIHZhbHVlIHRoYXQgY29tZXMgYWZ0ZXIgYSBkZWxpbWl0ZXIgcHJvdmlkZWQgdmlhXG4gICAqIHR5cGVhaGVhZE11bHRpcGxlU2VhcmNoRGVsaW1pdGVycyBhdHRyaWJ1dGUuIFRoaXMgb3B0aW9uIGNhbiBvbmx5IGJlIHVzZWQgdG9nZXRoZXIgd2l0aFxuICAgKiB0eXBlYWhlYWRTaW5nbGVXb3JkcyBvcHRpb24gaWYgdHlwZWFoZWFkV29yZERlbGltaXRlcnMgYW5kIHR5cGVhaGVhZFBocmFzZURlbGltaXRlcnNcbiAgICogYXJlIGRpZmZlcmVudCBmcm9tIHR5cGVhaGVhZE11bHRpcGxlU2VhcmNoRGVsaW1pdGVycyB0byBhdm9pZCBjb25mbGljdCBpbiBkZXRlcm1pbmluZ1xuICAgKiB3aGVuIHRvIGRlbGltaXQgbXVsdGlwbGUgc2VhcmNoZXMgYW5kIHdoZW4gYSBzaW5nbGUgd29yZC5cbiAgICovXG4gIEBJbnB1dCgpIHR5cGVhaGVhZE11bHRpcGxlU2VhcmNoPzogYm9vbGVhbjtcbiAgLyoqIHNob3VsZCBiZSB1c2VkIG9ubHkgaW4gY2FzZSB0eXBlYWhlYWRNdWx0aXBsZVNlYXJjaCBhdHRyaWJ1dGUgaXMgdHJ1ZS5cbiAgICogU2V0cyB0aGUgbXVsdGlwbGUgc2VhcmNoIGRlbGltaXRlciB0byBrbm93IHdoZW4gdG8gc3RhcnQgYSBuZXcgc2VhcmNoLiBEZWZhdWx0cyB0byBjb21tYS5cbiAgICogSWYgc3BhY2UgbmVlZHMgdG8gYmUgdXNlZCwgdGhlbiBleHBsaWNpdGx5IHNldCB0eXBlYWhlYWRXb3JkRGVsaW1pdGVycyB0byBzb21ldGhpbmcgZWxzZSB0aGFuIHNwYWNlXG4gICAqIGJlY2F1c2Ugc3BhY2UgaXMgdXNlZCBieSBkZWZhdWx0IE9SIHNldCB0eXBlYWhlYWRTaW5nbGVXb3JkcyBhdHRyaWJ1dGUgdG8gZmFsc2UgaWYgeW91IGRvbid0IG5lZWRcbiAgICogdG8gdXNlIGl0IHRvZ2V0aGVyIHdpdGggbXVsdGlwbGUgc2VhcmNoLlxuICAgKi9cbiAgQElucHV0KCkgdHlwZWFoZWFkTXVsdGlwbGVTZWFyY2hEZWxpbWl0ZXJzID0gJywnO1xuICAvKiogc2hvdWxkIGJlIHVzZWQgb25seSBpbiBjYXNlIHR5cGVhaGVhZFNpbmdsZVdvcmRzIGF0dHJpYnV0ZSBpcyB0cnVlLlxuICAgKiBTZXRzIHRoZSB3b3JkIGRlbGltaXRlciB0byBtYXRjaCBleGFjdCBwaHJhc2UuXG4gICAqIERlZmF1bHRzIHRvIHNpbXBsZSBhbmQgZG91YmxlIHF1b3Rlcy5cbiAgICovXG4gIEBJbnB1dCgpIHR5cGVhaGVhZFBocmFzZURlbGltaXRlcnMgPSAnXFwnXCInO1xuICAvKiogdXNlZCB0byBzcGVjaWZ5IGEgY3VzdG9tIGl0ZW0gdGVtcGxhdGUuXG4gICAqIFRlbXBsYXRlIHZhcmlhYmxlcyBleHBvc2VkIGFyZSBjYWxsZWQgaXRlbSBhbmQgaW5kZXg7XG4gICAqL1xuICBASW5wdXQoKSB0eXBlYWhlYWRJdGVtVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxUeXBlYWhlYWRPcHRpb25JdGVtQ29udGV4dD47XG4gIC8qKiB1c2VkIHRvIHNwZWNpZnkgYSBjdXN0b20gb3B0aW9ucyBsaXN0IHRlbXBsYXRlLlxuICAgKiBUZW1wbGF0ZSB2YXJpYWJsZXM6IG1hdGNoZXMsIGl0ZW1UZW1wbGF0ZSwgcXVlcnlcbiAgICovXG4gIEBJbnB1dCgpIG9wdGlvbnNMaXN0VGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxUeXBlYWhlYWRPcHRpb25MaXN0Q29udGV4dD47XG4gIC8qKiBzcGVjaWZpZXMgaWYgdHlwZWFoZWFkIGlzIHNjcm9sbGFibGUgICovXG4gIEBJbnB1dCgpIHR5cGVhaGVhZFNjcm9sbGFibGUgPSBmYWxzZTtcbiAgLyoqIHNwZWNpZmllcyBudW1iZXIgb2Ygb3B0aW9ucyB0byBzaG93IGluIHNjcm9sbCB2aWV3ICAqL1xuICBASW5wdXQoKSB0eXBlYWhlYWRPcHRpb25zSW5TY3JvbGxhYmxlVmlldyA9IDU7XG4gIC8qKiB1c2VkIHRvIGhpZGUgcmVzdWx0IG9uIGJsdXIgKi9cbiAgQElucHV0KCkgdHlwZWFoZWFkSGlkZVJlc3VsdHNPbkJsdXI/OiBib29sZWFuO1xuICAvKiogZmlyZWQgd2hlbiBhbiBvcHRpb25zIGxpc3Qgd2FzIG9wZW5lZCBhbmQgdGhlIHVzZXIgY2xpY2tlZCBUYWJcbiAgICogSWYgYSB2YWx1ZSBlcXVhbCB0cnVlLCBpdCB3aWxsIGJlIGNob3NlbiBmaXJzdCBvciBhY3RpdmUgaXRlbSBpbiB0aGUgbGlzdFxuICAgKiBJZiB2YWx1ZSBlcXVhbCBmYWxzZSwgaXQgd2lsbCBiZSBjaG9zZW4gYW4gYWN0aXZlIGl0ZW0gaW4gdGhlIGxpc3Qgb3Igbm90aGluZ1xuICAgKi9cbiAgQElucHV0KCkgdHlwZWFoZWFkU2VsZWN0Rmlyc3RJdGVtID0gdHJ1ZTtcbiAgLyoqIG1ha2VzIGFjdGl2ZSBmaXJzdCBpdGVtIGluIGEgbGlzdCAqL1xuICBASW5wdXQoKSB0eXBlYWhlYWRJc0ZpcnN0SXRlbUFjdGl2ZSA9IHRydWU7XG4gIC8qKiBmaXJlZCB3aGVuICdidXN5JyBzdGF0ZSBvZiB0aGlzIGNvbXBvbmVudCB3YXMgY2hhbmdlZCxcbiAgICogZmlyZWQgb24gYXN5bmMgbW9kZSBvbmx5LCByZXR1cm5zIGJvb2xlYW5cbiAgICovXG4gIEBPdXRwdXQoKSB0eXBlYWhlYWRMb2FkaW5nID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAvKiogZmlyZWQgb24gZXZlcnkga2V5IGV2ZW50IGFuZCByZXR1cm5zIHRydWVcbiAgICogaW4gY2FzZSBvZiBtYXRjaGVzIGFyZSBub3QgZGV0ZWN0ZWRcbiAgICovXG4gIEBPdXRwdXQoKSB0eXBlYWhlYWROb1Jlc3VsdHMgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIC8qKiBmaXJlZCB3aGVuIG9wdGlvbiB3YXMgc2VsZWN0ZWQsIHJldHVybiBvYmplY3Qgd2l0aCBkYXRhIG9mIHRoaXMgb3B0aW9uLiAqL1xuICBAT3V0cHV0KCkgdHlwZWFoZWFkT25TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPFR5cGVhaGVhZE1hdGNoPigpO1xuICAvKiogZmlyZWQgd2hlbiBvcHRpb24gd2FzIHByZXZpZXdlZCwgcmV0dXJuIG9iamVjdCB3aXRoIGRhdGEgb2YgdGhpcyBvcHRpb24uICovXG4gIEBPdXRwdXQoKSB0eXBlYWhlYWRPblByZXZpZXcgPSBuZXcgRXZlbnRFbWl0dGVyPFR5cGVhaGVhZE1hdGNoPigpO1xuICAvKiogZmlyZWQgd2hlbiBibHVyIGV2ZW50IG9jY3Vycy4gcmV0dXJucyB0aGUgYWN0aXZlIGl0ZW0gKi9cbiAgQE91dHB1dCgpIHR5cGVhaGVhZE9uQmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8VHlwZWFoZWFkTWF0Y2ggfCB1bmRlZmluZWQ+KCk7XG5cbiAgLyoqXG4gICAqIEEgc2VsZWN0b3Igc3BlY2lmeWluZyB0aGUgZWxlbWVudCB0aGUgdHlwZWFoZWFkIHNob3VsZCBiZSBhcHBlbmRlZCB0by5cbiAgICovXG4gIEBJbnB1dCgpIGNvbnRhaW5lcj86IHN0cmluZztcblxuICAvKiogVGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoYXQgdGhlIGRyb3Bkb3duIHNob3VsZCBiZSBvcGVuZWQgdXB3YXJkcyAqL1xuICBASW5wdXQoKSBkcm9wdXAgPSBmYWxzZTtcblxuICAvLyBub3QgeWV0IGltcGxlbWVudGVkXG4gIC8qKiBpZiBmYWxzZSByZXN0cmljdCBtb2RlbCB2YWx1ZXMgdG8gdGhlIG9uZXMgc2VsZWN0ZWQgZnJvbSB0aGUgcG9wdXAgb25seSB3aWxsIGJlIHByb3ZpZGVkICovXG4gIC8vIEBJbnB1dCgpIHByb3RlY3RlZCB0eXBlYWhlYWRFZGl0YWJsZTpib29sZWFuO1xuICAvKiogaWYgZmFsc2UgdGhlIGZpcnN0IG1hdGNoIGF1dG9tYXRpY2FsbHkgd2lsbCBub3QgYmUgZm9jdXNlZCBhcyB5b3UgdHlwZSAqL1xuICAvLyBASW5wdXQoKSBwcm90ZWN0ZWQgdHlwZWFoZWFkRm9jdXNGaXJzdDpib29sZWFuO1xuICAvKiogZm9ybWF0IHRoZSBuZy1tb2RlbCByZXN1bHQgYWZ0ZXIgc2VsZWN0aW9uICovXG4gIC8vIEBJbnB1dCgpIHByb3RlY3RlZCB0eXBlYWhlYWRJbnB1dEZvcm1hdHRlcjphbnk7XG4gIC8qKiBpZiB0cnVlIGF1dG9tYXRpY2FsbHkgc2VsZWN0IGFuIGl0ZW0gd2hlbiB0aGVyZSBpcyBvbmUgb3B0aW9uIHRoYXQgZXhhY3RseSBtYXRjaGVzIHRoZSB1c2VyIGlucHV0ICovXG4gIC8vIEBJbnB1dCgpIHByb3RlY3RlZCB0eXBlYWhlYWRTZWxlY3RPbkV4YWN0OmJvb2xlYW47XG4gIC8qKiAgaWYgdHJ1ZSBzZWxlY3QgdGhlIGN1cnJlbnRseSBoaWdobGlnaHRlZCBtYXRjaCBvbiBibHVyICovXG4gIC8vIEBJbnB1dCgpIHByb3RlY3RlZCB0eXBlYWhlYWRTZWxlY3RPbkJsdXI6Ym9vbGVhbjtcbiAgLyoqICBpZiBmYWxzZSBkb24ndCBmb2N1cyB0aGUgaW5wdXQgZWxlbWVudCB0aGUgdHlwZWFoZWFkIGRpcmVjdGl2ZSBpcyBhc3NvY2lhdGVkIHdpdGggb24gc2VsZWN0aW9uICovXG4gIC8vIEBJbnB1dCgpIHByb3RlY3RlZCB0eXBlYWhlYWRGb2N1c09uU2VsZWN0OmJvb2xlYW47XG5cbiAgYWN0aXZlRGVzY2VuZGFudD86IHN0cmluZztcbiAgaXNPcGVuID0gZmFsc2U7XG4gIGxpc3QgPSAnbGlzdCc7XG4gIF9jb250YWluZXI/OiBUeXBlYWhlYWRDb250YWluZXJDb21wb25lbnQ7XG4gIGlzQWN0aXZlSXRlbUNoYW5nZWQgPSBmYWxzZTtcbiAgaXNGb2N1c2VkID0gZmFsc2U7XG4gIGNhbmNlbFJlcXVlc3RPbkZvY3VzTG9zdCA9IGZhbHNlO1xuICBzZWxlY3RJdGVtT25CbHVyID0gZmFsc2U7XG4gIHByb3RlY3RlZCBrZXlVcEV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBwcm90ZWN0ZWQgcGxhY2VtZW50ID0gJ2JvdHRvbSBsZWZ0JztcbiAgcHJvdGVjdGVkIF9tYXRjaGVzOiBUeXBlYWhlYWRNYXRjaFtdID0gW107XG5cbiAgcHJpdmF0ZSBfdHlwZWFoZWFkOiBDb21wb25lbnRMb2FkZXI8VHlwZWFoZWFkQ29udGFpbmVyQ29tcG9uZW50PjtcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBfYWxsRW50ZXJlZFZhbHVlPzogc3RyaW5nO1xuICBwcml2YXRlIF9vdXRzaWRlQ2xpY2tMaXN0ZW5lcjogKCkgPT4gdm9pZCA9ICgpID0+IHZvaWQgMDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjaXM6IENvbXBvbmVudExvYWRlckZhY3RvcnksXG4gICAgY29uZmlnOiBUeXBlYWhlYWRDb25maWcsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmXG4gICkge1xuICAgIHRoaXMuX3R5cGVhaGVhZCA9IGNpc1xuICAgICAgLmNyZWF0ZUxvYWRlcjxUeXBlYWhlYWRDb250YWluZXJDb21wb25lbnQ+KGVsZW1lbnQsIHZpZXdDb250YWluZXJSZWYsIHJlbmRlcmVyKVxuICAgICAgLnByb3ZpZGUoeyBwcm92aWRlOiBUeXBlYWhlYWRDb25maWcsIHVzZVZhbHVlOiBjb25maWcgfSk7XG5cbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIHtcbiAgICAgIHR5cGVhaGVhZEhpZGVSZXN1bHRzT25CbHVyOiBjb25maWcuaGlkZVJlc3VsdHNPbkJsdXIsXG4gICAgICBjYW5jZWxSZXF1ZXN0T25Gb2N1c0xvc3Q6IGNvbmZpZy5jYW5jZWxSZXF1ZXN0T25Gb2N1c0xvc3QsXG4gICAgICB0eXBlYWhlYWRTZWxlY3RGaXJzdEl0ZW06IGNvbmZpZy5zZWxlY3RGaXJzdEl0ZW0sXG4gICAgICB0eXBlYWhlYWRJc0ZpcnN0SXRlbUFjdGl2ZTogY29uZmlnLmlzRmlyc3RJdGVtQWN0aXZlLFxuICAgICAgdHlwZWFoZWFkTWluTGVuZ3RoOiBjb25maWcubWluTGVuZ3RoLFxuICAgICAgYWRhcHRpdmVQb3NpdGlvbjogY29uZmlnLmFkYXB0aXZlUG9zaXRpb24sXG4gICAgICBpc0FuaW1hdGVkOiBjb25maWcuaXNBbmltYXRlZCxcbiAgICAgIHNlbGVjdEl0ZW1PbkJsdXI6IGNvbmZpZy5zZWxlY3RJdGVtT25CbHVyXG4gICAgfSk7XG4gIH1cblxuICBnZXQgbWF0Y2hlcygpOiBUeXBlYWhlYWRNYXRjaFtdIHtcbiAgICByZXR1cm4gdGhpcy5fbWF0Y2hlcztcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudHlwZWFoZWFkT3B0aW9uc0xpbWl0ID0gdGhpcy50eXBlYWhlYWRPcHRpb25zTGltaXQgfHwgMjA7XG5cbiAgICB0aGlzLnR5cGVhaGVhZE1pbkxlbmd0aCA9IHRoaXMudHlwZWFoZWFkTWluTGVuZ3RoID09PSB2b2lkIDAgPyAxIDogdGhpcy50eXBlYWhlYWRNaW5MZW5ndGg7XG5cbiAgICAvLyBhc3luYyBzaG91bGQgYmUgZmFsc2UgaW4gY2FzZSBvZiBhcnJheVxuICAgIGlmICh0aGlzLnR5cGVhaGVhZEFzeW5jID09PSB1bmRlZmluZWQgJiYgIWlzT2JzZXJ2YWJsZSh0aGlzLnR5cGVhaGVhZCkpIHtcbiAgICAgIHRoaXMudHlwZWFoZWFkQXN5bmMgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoaXNPYnNlcnZhYmxlKHRoaXMudHlwZWFoZWFkKSkge1xuICAgICAgdGhpcy50eXBlYWhlYWRBc3luYyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHlwZWFoZWFkQXN5bmMpIHtcbiAgICAgIHRoaXMuYXN5bmNBY3Rpb25zKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3luY0FjdGlvbnMoKTtcbiAgICB9XG5cbiAgICB0aGlzLmNoZWNrRGVsaW1pdGVyc0NvbmZsaWN0KCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdpbnB1dCcsIFsnJGV2ZW50J10pXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIG9uSW5wdXQoZTogYW55KTogdm9pZCB7XG4gICAgLy8gRm9yIGA8aW5wdXQ+YHMsIHVzZSB0aGUgYHZhbHVlYCBwcm9wZXJ0eS4gRm9yIG90aGVycyB0aGF0IGRvbid0IGhhdmUgYVxuICAgIC8vIGB2YWx1ZWAgKHN1Y2ggYXMgYDxzcGFuIGNvbnRlbnRlZGl0YWJsZT1cInRydWVcIj5gKSwgdXNlIGVpdGhlclxuICAgIC8vIGB0ZXh0Q29udGVudGAgb3IgYGlubmVyVGV4dGAgKGRlcGVuZGluZyBvbiB3aGljaCBvbmUgaXMgc3VwcG9ydGVkLCBpLmUuXG4gICAgLy8gRmlyZWZveCBvciBJRSkuXG4gICAgY29uc3QgdmFsdWUgPVxuICAgICAgZS50YXJnZXQudmFsdWUgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IGUudGFyZ2V0LnZhbHVlXG4gICAgICAgIDogZS50YXJnZXQudGV4dENvbnRlbnQgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IGUudGFyZ2V0LnRleHRDb250ZW50XG4gICAgICAgIDogZS50YXJnZXQuaW5uZXJUZXh0O1xuXG4gICAgaWYgKHZhbHVlICE9IG51bGwgJiYgdmFsdWUudHJpbSgpLmxlbmd0aCA+PSB0aGlzLnR5cGVhaGVhZE1pbkxlbmd0aCkge1xuICAgICAgdGhpcy50eXBlYWhlYWRMb2FkaW5nLmVtaXQodHJ1ZSk7XG4gICAgICB0aGlzLmtleVVwRXZlbnRFbWl0dGVyLmVtaXQoZS50YXJnZXQudmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnR5cGVhaGVhZExvYWRpbmcuZW1pdChmYWxzZSk7XG4gICAgICB0aGlzLnR5cGVhaGVhZE5vUmVzdWx0cy5lbWl0KGZhbHNlKTtcbiAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleXVwJywgWyckZXZlbnQnXSlcbiAgb25DaGFuZ2UoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY29udGFpbmVyKSB7XG4gICAgICAvLyBlc2NcbiAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSAyNyB8fCBldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgIHRoaXMuaGlkZSgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gdXBcbiAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSAzOCB8fCBldmVudC5rZXkgPT09ICdBcnJvd1VwJykge1xuICAgICAgICB0aGlzLmlzQWN0aXZlSXRlbUNoYW5nZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLl9jb250YWluZXIucHJldkFjdGl2ZU1hdGNoKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBkb3duXG4gICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gNDAgfHwgZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICB0aGlzLmlzQWN0aXZlSXRlbUNoYW5nZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLl9jb250YWluZXIubmV4dEFjdGl2ZU1hdGNoKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBlbnRlclxuICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDEzIHx8IGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICB0aGlzLl9jb250YWluZXIuc2VsZWN0QWN0aXZlTWF0Y2goKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICBASG9zdExpc3RlbmVyKCdmb2N1cycpXG4gIG9uRm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSB0cnVlO1xuICAgIC8vIGFkZCBzZXRUaW1lb3V0IHRvIGZpeCBpc3N1ZSAjNTI1MVxuICAgIC8vIHRvIGdldCBhbmQgZW1pdCB1cGRhdGVkIHZhbHVlIGlmIGl0J3MgY2hhbmdlZCBvbiBmb2N1c1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMudHlwZWFoZWFkTWluTGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMudHlwZWFoZWFkTG9hZGluZy5lbWl0KHRydWUpO1xuICAgICAgICB0aGlzLmtleVVwRXZlbnRFbWl0dGVyLmVtaXQodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUgfHwgJycpO1xuICAgICAgfVxuICAgIH0sIDApO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignYmx1cicpXG4gIG9uQmx1cigpOiB2b2lkIHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xuICAgIGlmICh0aGlzLl9jb250YWluZXIgJiYgIXRoaXMuX2NvbnRhaW5lci5pc0ZvY3VzZWQpIHtcbiAgICAgIHRoaXMudHlwZWFoZWFkT25CbHVyLmVtaXQodGhpcy5fY29udGFpbmVyLmFjdGl2ZSk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmNvbnRhaW5lciAmJiB0aGlzLl9tYXRjaGVzPy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMudHlwZWFoZWFkT25CbHVyLmVtaXQoXG4gICAgICAgIG5ldyBUeXBlYWhlYWRNYXRjaCh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSwgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUsIGZhbHNlKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgLy8gbm8gY29udGFpbmVyIC0gbm8gcHJvYmxlbXNcbiAgICBpZiAoIXRoaXMuX2NvbnRhaW5lcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChldmVudC5rZXlDb2RlID09PSA5IHx8IGV2ZW50LmtleSA9PT0gJ1RhYicpIHtcbiAgICAgIHRoaXMub25CbHVyKCk7XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDkgfHwgZXZlbnQua2V5ID09PSAnVGFiJyB8fCBldmVudC5rZXlDb2RlID09PSAxMyB8fCBldmVudC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBpZiAodGhpcy50eXBlYWhlYWRTZWxlY3RGaXJzdEl0ZW0pIHtcbiAgICAgICAgdGhpcy5fY29udGFpbmVyLnNlbGVjdEFjdGl2ZU1hdGNoKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMudHlwZWFoZWFkU2VsZWN0Rmlyc3RJdGVtKSB7XG4gICAgICAgIHRoaXMuX2NvbnRhaW5lci5zZWxlY3RBY3RpdmVNYXRjaCh0aGlzLmlzQWN0aXZlSXRlbUNoYW5nZWQpO1xuICAgICAgICB0aGlzLmlzQWN0aXZlSXRlbUNoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlTW9kZWwobWF0Y2g/OiBUeXBlYWhlYWRNYXRjaCk6IHZvaWQge1xuICAgIGlmICghbWF0Y2gpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IHZhbHVlU3RyOiBzdHJpbmc7XG4gICAgaWYgKHRoaXMudHlwZWFoZWFkTXVsdGlwbGVTZWFyY2ggJiYgdGhpcy5fYWxsRW50ZXJlZFZhbHVlKSB7XG4gICAgICBjb25zdCB0b2tlbnMgPSB0aGlzLl9hbGxFbnRlcmVkVmFsdWUuc3BsaXQobmV3IFJlZ0V4cChgKFske3RoaXMudHlwZWFoZWFkTXVsdGlwbGVTZWFyY2hEZWxpbWl0ZXJzfV0rKWApKTtcbiAgICAgIHRoaXMuX2FsbEVudGVyZWRWYWx1ZSA9IHRva2Vuc1xuICAgICAgICAuc2xpY2UoMCwgdG9rZW5zLmxlbmd0aCAtIDEpXG4gICAgICAgIC5jb25jYXQobWF0Y2gudmFsdWUpXG4gICAgICAgIC5qb2luKCcnKTtcbiAgICAgIHZhbHVlU3RyID0gdGhpcy5fYWxsRW50ZXJlZFZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZVN0ciA9IG1hdGNoLnZhbHVlO1xuICAgIH1cbiAgICB0aGlzLm5nQ29udHJvbC52aWV3VG9Nb2RlbFVwZGF0ZSh2YWx1ZVN0cik7XG4gICAgdGhpcy5uZ0NvbnRyb2wuY29udHJvbD8uc2V0VmFsdWUodmFsdWVTdHIpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uLm1hcmtGb3JDaGVjaygpO1xuICAgIHRoaXMuaGlkZSgpO1xuICB9XG5cbiAgc2hvdygpOiB2b2lkIHtcbiAgICB0aGlzLl90eXBlYWhlYWRcbiAgICAgIC5hdHRhY2goVHlwZWFoZWFkQ29udGFpbmVyQ29tcG9uZW50KVxuICAgICAgLnRvKHRoaXMuY29udGFpbmVyKVxuICAgICAgLnBvc2l0aW9uKHsgYXR0YWNobWVudDogYCR7dGhpcy5kcm9wdXAgPyAndG9wJyA6ICdib3R0b20nfSBsZWZ0YCB9KVxuICAgICAgLnNob3coe1xuICAgICAgICB0eXBlYWhlYWRSZWY6IHRoaXMsXG4gICAgICAgIHBsYWNlbWVudDogdGhpcy5wbGFjZW1lbnQsXG4gICAgICAgIGFuaW1hdGlvbjogZmFsc2UsXG4gICAgICAgIGRyb3B1cDogdGhpcy5kcm9wdXBcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5fb3V0c2lkZUNsaWNrTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAnY2xpY2snLCAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmICh0aGlzLnR5cGVhaGVhZE1pbkxlbmd0aCA9PT0gMCAmJiB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy50eXBlYWhlYWRIaWRlUmVzdWx0c09uQmx1ciB8fCB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMub25PdXRzaWRlQ2xpY2soKTtcbiAgICB9KTtcblxuICAgIGlmICghdGhpcy5fdHlwZWFoZWFkLmluc3RhbmNlIHx8ICF0aGlzLm5nQ29udHJvbC5jb250cm9sKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fY29udGFpbmVyID0gdGhpcy5fdHlwZWFoZWFkLmluc3RhbmNlO1xuICAgIHRoaXMuX2NvbnRhaW5lci5wYXJlbnQgPSB0aGlzO1xuICAgIC8vIFRoaXMgaW1wcm92ZXMgdGhlIHNwZWVkIGFzIGl0IHdvbid0IGhhdmUgdG8gYmUgZG9uZSBmb3IgZWFjaCBsaXN0IGl0ZW1cblxuICAgIGNvbnN0IG5vcm1hbGl6ZWRRdWVyeSA9IChcbiAgICAgIHRoaXMudHlwZWFoZWFkTGF0aW5pemUgPyBsYXRpbml6ZSh0aGlzLm5nQ29udHJvbC5jb250cm9sLnZhbHVlKSA6IHRoaXMubmdDb250cm9sLmNvbnRyb2wudmFsdWVcbiAgICApXG4gICAgICAudG9TdHJpbmcoKVxuICAgICAgLnRvTG93ZXJDYXNlKCk7XG5cbiAgICB0aGlzLl9jb250YWluZXIucXVlcnkgPSB0aGlzLnRva2VuaXplUXVlcnkobm9ybWFsaXplZFF1ZXJ5KTtcblxuICAgIHRoaXMuX2NvbnRhaW5lci5tYXRjaGVzID0gdGhpcy5fbWF0Y2hlcztcbiAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXG4gICAgdGhpcy5fY29udGFpbmVyLmFjdGl2ZUNoYW5nZUV2ZW50LnN1YnNjcmliZSgoYWN0aXZlSWQ6IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50ID0gYWN0aXZlSWQ7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdGlvbi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gIH1cblxuICBoaWRlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl90eXBlYWhlYWQuaXNTaG93bikge1xuICAgICAgdGhpcy5fdHlwZWFoZWFkLmhpZGUoKTtcbiAgICAgIHRoaXMuX291dHNpZGVDbGlja0xpc3RlbmVyKCk7XG4gICAgICB0aGlzLl9jb250YWluZXIgPSB2b2lkIDA7XG4gICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rpb24ubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICAgIHRoaXMudHlwZWFoZWFkT25QcmV2aWV3LmVtaXQoKTtcbiAgfVxuXG4gIG9uT3V0c2lkZUNsaWNrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jb250YWluZXIgJiYgIXRoaXMuX2NvbnRhaW5lci5pc0ZvY3VzZWQpIHtcbiAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIC8vIGNsZWFuIHVwIHN1YnNjcmlwdGlvbnNcbiAgICBmb3IgKGNvbnN0IHN1YiBvZiB0aGlzLl9zdWJzY3JpcHRpb25zKSB7XG4gICAgICBzdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgdGhpcy5fdHlwZWFoZWFkLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luY0FjdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5rZXlVcEV2ZW50RW1pdHRlclxuICAgICAgICAucGlwZShcbiAgICAgICAgICBkZWJvdW5jZVRpbWU8c3RyaW5nPih0aGlzLnR5cGVhaGVhZFdhaXRNcyksXG4gICAgICAgICAgdGFwKCh2YWx1ZSkgPT4gKHRoaXMuX2FsbEVudGVyZWRWYWx1ZSA9IHZhbHVlKSksXG4gICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy50eXBlYWhlYWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudHlwZWFoZWFkO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgobWF0Y2hlcykgPT4ge1xuICAgICAgICAgIHRoaXMuZmluYWxpemVBc3luY0NhbGwobWF0Y2hlcyk7XG4gICAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzeW5jQWN0aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmtleVVwRXZlbnRFbWl0dGVyXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGRlYm91bmNlVGltZTxzdHJpbmc+KHRoaXMudHlwZWFoZWFkV2FpdE1zKSxcbiAgICAgICAgICBtZXJnZU1hcCgodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgdGhpcy5fYWxsRW50ZXJlZFZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICBjb25zdCBub3JtYWxpemVkUXVlcnkgPSB0aGlzLm5vcm1hbGl6ZVF1ZXJ5KHZhbHVlKTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLnR5cGVhaGVhZCkge1xuICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHR5cGVhaGVhZCA9IGlzT2JzZXJ2YWJsZSh0aGlzLnR5cGVhaGVhZCkgPyB0aGlzLnR5cGVhaGVhZCA6IGZyb20odGhpcy50eXBlYWhlYWQpO1xuXG4gICAgICAgICAgICByZXR1cm4gdHlwZWFoZWFkLnBpcGUoXG4gICAgICAgICAgICAgIGZpbHRlcigob3B0aW9uOiBUeXBlYWhlYWRPcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gISFvcHRpb24gJiYgdGhpcy50ZXN0TWF0Y2godGhpcy5ub3JtYWxpemVPcHRpb24ob3B0aW9uKSwgbm9ybWFsaXplZFF1ZXJ5KTtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIHRvQXJyYXkoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKG1hdGNoZXM6IFR5cGVhaGVhZE9wdGlvbltdKSA9PiB7XG4gICAgICAgICAgdGhpcy5maW5hbGl6ZUFzeW5jQ2FsbChtYXRjaGVzKTtcbiAgICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIG5vcm1hbGl6ZU9wdGlvbihvcHRpb246IFR5cGVhaGVhZE9wdGlvbik6IHN0cmluZyB7XG4gICAgY29uc3Qgb3B0aW9uVmFsdWU6IHN0cmluZyA9IGdldFZhbHVlRnJvbU9iamVjdChvcHRpb24sIHRoaXMudHlwZWFoZWFkT3B0aW9uRmllbGQpO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRPcHRpb24gPSB0aGlzLnR5cGVhaGVhZExhdGluaXplID8gbGF0aW5pemUob3B0aW9uVmFsdWUpIDogb3B0aW9uVmFsdWU7XG5cbiAgICByZXR1cm4gbm9ybWFsaXplZE9wdGlvbi50b0xvd2VyQ2FzZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRva2VuaXplUXVlcnkoY3VycmVudFF1ZXJ5OiBzdHJpbmcgfCBzdHJpbmdbXSk6IHN0cmluZyB8IHN0cmluZ1tdIHtcbiAgICBsZXQgcXVlcnkgPSBjdXJyZW50UXVlcnk7XG4gICAgaWYgKHRoaXMudHlwZWFoZWFkTXVsdGlwbGVTZWFyY2ggJiYgdGhpcy50eXBlYWhlYWRTaW5nbGVXb3Jkcykge1xuICAgICAgaWYgKFxuICAgICAgICAhdGhpcy5oYXZlQ29tbW9uQ2hhcmFjdGVycyhcbiAgICAgICAgICBgJHt0aGlzLnR5cGVhaGVhZFBocmFzZURlbGltaXRlcnN9JHt0aGlzLnR5cGVhaGVhZFdvcmREZWxpbWl0ZXJzfWAsXG4gICAgICAgICAgdGhpcy50eXBlYWhlYWRNdWx0aXBsZVNlYXJjaERlbGltaXRlcnNcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIC8vIHNpbmdsZSB3b3JkcyBhbmQgbXVsdGlwbGUgc2VhcmNoIGRlbGltaXRlcnMgYXJlIGRpZmZlcmVudCwgY2FuIGJlIHVzZWQgdG9nZXRoZXJcbiAgICAgICAgcXVlcnkgPSB0b2tlbml6ZShcbiAgICAgICAgICBxdWVyeSBhcyBzdHJpbmcsXG4gICAgICAgICAgdGhpcy50eXBlYWhlYWRXb3JkRGVsaW1pdGVycyxcbiAgICAgICAgICB0aGlzLnR5cGVhaGVhZFBocmFzZURlbGltaXRlcnMsXG4gICAgICAgICAgdGhpcy50eXBlYWhlYWRNdWx0aXBsZVNlYXJjaERlbGltaXRlcnNcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZWFoZWFkU2luZ2xlV29yZHMpIHtcbiAgICAgIHF1ZXJ5ID0gdG9rZW5pemUocXVlcnkgYXMgc3RyaW5nLCB0aGlzLnR5cGVhaGVhZFdvcmREZWxpbWl0ZXJzLCB0aGlzLnR5cGVhaGVhZFBocmFzZURlbGltaXRlcnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBtdWx0aXBsZSBzZWFyY2hlc1xuICAgICAgcXVlcnkgPSB0b2tlbml6ZShxdWVyeSBhcyBzdHJpbmcsIHZvaWQgMCwgdm9pZCAwLCB0aGlzLnR5cGVhaGVhZE11bHRpcGxlU2VhcmNoRGVsaW1pdGVycyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHF1ZXJ5O1xuICB9XG5cbiAgcHJvdGVjdGVkIG5vcm1hbGl6ZVF1ZXJ5KHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgfCBzdHJpbmdbXSB7XG4gICAgLy8gSWYgc2luZ2xlV29yZHMsIGJyZWFrIG1vZGVsIGhlcmUgdG8gbm90IGJlIGRvaW5nIGV4dHJhIHdvcmsgb24gZWFjaCBpdGVyYXRpb25cbiAgICBsZXQgbm9ybWFsaXplZFF1ZXJ5OiBzdHJpbmcgfCBzdHJpbmdbXSA9ICh0aGlzLnR5cGVhaGVhZExhdGluaXplID8gbGF0aW5pemUodmFsdWUpIDogdmFsdWUpXG4gICAgICAudG9TdHJpbmcoKVxuICAgICAgLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBub3JtYWxpemVkUXVlcnkgPSB0aGlzLnRva2VuaXplUXVlcnkobm9ybWFsaXplZFF1ZXJ5KTtcblxuICAgIHJldHVybiBub3JtYWxpemVkUXVlcnk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdGVzdE1hdGNoKG1hdGNoOiBzdHJpbmcsIHRlc3Q6IHN0cmluZ1tdIHwgc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgbGV0IHNwYWNlTGVuZ3RoOiBudW1iZXI7XG5cbiAgICBpZiAodHlwZW9mIHRlc3QgPT09ICdvYmplY3QnKSB7XG4gICAgICBzcGFjZUxlbmd0aCA9IHRlc3QubGVuZ3RoO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzcGFjZUxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGlmICh0ZXN0W2ldLmxlbmd0aCA+IDAgJiYgbWF0Y2guaW5kZXhPZih0ZXN0W2ldKSA8IDApIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hdGNoLmluZGV4T2YodGVzdCkgPj0gMDtcbiAgfVxuXG4gIHByb3RlY3RlZCBmaW5hbGl6ZUFzeW5jQ2FsbChtYXRjaGVzPzogVHlwZWFoZWFkT3B0aW9uIHwgVHlwZWFoZWFkT3B0aW9uW10pOiB2b2lkIHtcbiAgICB0aGlzLnByZXBhcmVNYXRjaGVzKG1hdGNoZXMgfHwgW10pO1xuXG4gICAgdGhpcy50eXBlYWhlYWRMb2FkaW5nLmVtaXQoZmFsc2UpO1xuICAgIHRoaXMudHlwZWFoZWFkTm9SZXN1bHRzLmVtaXQoIXRoaXMuaGFzTWF0Y2hlcygpKTtcblxuICAgIGlmICghdGhpcy5oYXNNYXRjaGVzKCkpIHtcbiAgICAgIHRoaXMuaGlkZSgpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmlzRm9jdXNlZCAmJiB0aGlzLmNhbmNlbFJlcXVlc3RPbkZvY3VzTG9zdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9jb250YWluZXIgJiYgdGhpcy5uZ0NvbnRyb2wuY29udHJvbCkge1xuICAgICAgLy8gZml4OiByZW1vdmUgdXNhZ2Ugb2YgbmdDb250cm9sIGludGVybmFsc1xuICAgICAgY29uc3QgX2NvbnRyb2xWYWx1ZSA9XG4gICAgICAgICh0aGlzLnR5cGVhaGVhZExhdGluaXplID8gbGF0aW5pemUodGhpcy5uZ0NvbnRyb2wuY29udHJvbC52YWx1ZSkgOiB0aGlzLm5nQ29udHJvbC5jb250cm9sLnZhbHVlKSB8fCAnJztcblxuICAgICAgLy8gVGhpcyBpbXByb3ZlcyB0aGUgc3BlZWQgYXMgaXQgd29uJ3QgaGF2ZSB0byBiZSBkb25lIGZvciBlYWNoIGxpc3QgaXRlbVxuICAgICAgY29uc3Qgbm9ybWFsaXplZFF1ZXJ5ID0gX2NvbnRyb2xWYWx1ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgIHRoaXMuX2NvbnRhaW5lci5xdWVyeSA9IHRoaXMudG9rZW5pemVRdWVyeShub3JtYWxpemVkUXVlcnkpO1xuICAgICAgdGhpcy5fY29udGFpbmVyLm1hdGNoZXMgPSB0aGlzLl9tYXRjaGVzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNob3coKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcHJlcGFyZU1hdGNoZXMob3B0aW9uczogVHlwZWFoZWFkT3B0aW9uIHwgVHlwZWFoZWFkT3B0aW9uW10pOiB2b2lkIHtcbiAgICBjb25zdCBsaW1pdGVkID0gb3B0aW9ucy5zbGljZSgwLCB0aGlzLnR5cGVhaGVhZE9wdGlvbnNMaW1pdCk7XG4gICAgY29uc3Qgc29ydGVkID0gIXRoaXMudHlwZWFoZWFkT3JkZXJCeSA/IGxpbWl0ZWQgOiB0aGlzLm9yZGVyTWF0Y2hlcyhsaW1pdGVkKTtcblxuICAgIGlmICh0aGlzLnR5cGVhaGVhZEdyb3VwRmllbGQpIHtcbiAgICAgIGxldCBtYXRjaGVzOiBUeXBlYWhlYWRNYXRjaFtdID0gW107XG5cbiAgICAgIC8vIGV4dHJhY3QgYWxsIGdyb3VwIG5hbWVzXG4gICAgICBjb25zdCBncm91cHMgPSBzb3J0ZWRcbiAgICAgICAgLm1hcCgob3B0aW9uOiBUeXBlYWhlYWRPcHRpb24pID0+IGdldFZhbHVlRnJvbU9iamVjdChvcHRpb24sIHRoaXMudHlwZWFoZWFkR3JvdXBGaWVsZCkpXG4gICAgICAgIC5maWx0ZXIoKHY6IHN0cmluZywgaTogbnVtYmVyLCBhOiBzdHJpbmdbXSkgPT4gYS5pbmRleE9mKHYpID09PSBpKTtcblxuICAgICAgZ3JvdXBzLmZvckVhY2goKGdyb3VwOiBzdHJpbmcpID0+IHtcbiAgICAgICAgLy8gYWRkIGdyb3VwIGhlYWRlciB0byBhcnJheSBvZiBtYXRjaGVzXG4gICAgICAgIG1hdGNoZXMucHVzaChuZXcgVHlwZWFoZWFkTWF0Y2goZ3JvdXAsIGdyb3VwLCB0cnVlKSk7XG5cbiAgICAgICAgLy8gYWRkIGVhY2ggaXRlbSBvZiBncm91cCB0byBhcnJheSBvZiBtYXRjaGVzXG4gICAgICAgIG1hdGNoZXMgPSBtYXRjaGVzLmNvbmNhdChcbiAgICAgICAgICBzb3J0ZWRcbiAgICAgICAgICAgIC5maWx0ZXIoKG9wdGlvbjogVHlwZWFoZWFkT3B0aW9uKSA9PiBnZXRWYWx1ZUZyb21PYmplY3Qob3B0aW9uLCB0aGlzLnR5cGVhaGVhZEdyb3VwRmllbGQpID09PSBncm91cClcbiAgICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAgIChvcHRpb246IFR5cGVhaGVhZE9wdGlvbikgPT5cbiAgICAgICAgICAgICAgICBuZXcgVHlwZWFoZWFkTWF0Y2gob3B0aW9uLCBnZXRWYWx1ZUZyb21PYmplY3Qob3B0aW9uLCB0aGlzLnR5cGVhaGVhZE9wdGlvbkZpZWxkKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLl9tYXRjaGVzID0gbWF0Y2hlcztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbWF0Y2hlcyA9IHNvcnRlZC5tYXAoXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIChvcHRpb246IGFueSkgPT4gbmV3IFR5cGVhaGVhZE1hdGNoKG9wdGlvbiwgZ2V0VmFsdWVGcm9tT2JqZWN0KG9wdGlvbiwgdGhpcy50eXBlYWhlYWRPcHRpb25GaWVsZCkpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvcmRlck1hdGNoZXMob3B0aW9uczogVHlwZWFoZWFkT3B0aW9uW10pOiBUeXBlYWhlYWRPcHRpb25bXSB7XG4gICAgaWYgKCFvcHRpb25zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy50eXBlYWhlYWRPcmRlckJ5ICE9PSBudWxsICYmXG4gICAgICB0aGlzLnR5cGVhaGVhZE9yZGVyQnkgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdHlwZW9mIHRoaXMudHlwZWFoZWFkT3JkZXJCeSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMudHlwZWFoZWFkT3JkZXJCeSkubGVuZ3RoID09PSAwXG4gICAgKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGaWVsZCBhbmQgZGlyZWN0aW9uIHByb3BlcnRpZXMgZm9yIHR5cGVhaGVhZE9yZGVyQnkgaGF2ZSB0byBiZSBzZXQgYWNjb3JkaW5nIHRvIGRvY3VtZW50YXRpb24hJyk7XG5cbiAgICAgIHJldHVybiBvcHRpb25zO1xuICAgIH1cblxuICAgIGNvbnN0IHsgZmllbGQsIGRpcmVjdGlvbiB9ID0gdGhpcy50eXBlYWhlYWRPcmRlckJ5IHx8IHt9O1xuXG4gICAgaWYgKCFkaXJlY3Rpb24gfHwgIShkaXJlY3Rpb24gPT09ICdhc2MnIHx8IGRpcmVjdGlvbiA9PT0gJ2Rlc2MnKSkge1xuICAgICAgY29uc29sZS5lcnJvcigndHlwZWFoZWFkT3JkZXJCeSBkaXJlY3Rpb24gaGFzIHRvIGVxdWFsIFwiYXNjXCIgb3IgXCJkZXNjXCIuIFBsZWFzZSBmb2xsb3cgdGhlIGRvY3VtZW50YXRpb24uJyk7XG5cbiAgICAgIHJldHVybiBvcHRpb25zO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb3B0aW9uc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBkaXJlY3Rpb24gPT09ICdhc2MnID8gb3B0aW9ucy5zb3J0KCkgOiBvcHRpb25zLnNvcnQoKS5yZXZlcnNlKCk7XG4gICAgfVxuXG4gICAgaWYgKCFmaWVsZCB8fCB0eXBlb2YgZmllbGQgIT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCd0eXBlYWhlYWRPcmRlckJ5IGZpZWxkIGhhcyB0byBzZXQgYWNjb3JkaW5nIHRvIHRoZSBkb2N1bWVudGF0aW9uLicpO1xuXG4gICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9XG5cbiAgICByZXR1cm4gb3B0aW9ucy5zb3J0KChhOiBUeXBlYWhlYWRPcHRpb24sIGI6IFR5cGVhaGVhZE9wdGlvbikgPT4ge1xuICAgICAgY29uc3Qgc3RyaW5nQSA9IGdldFZhbHVlRnJvbU9iamVjdChhLCBmaWVsZCk7XG4gICAgICBjb25zdCBzdHJpbmdCID0gZ2V0VmFsdWVGcm9tT2JqZWN0KGIsIGZpZWxkKTtcblxuICAgICAgaWYgKHN0cmluZ0EgPCBzdHJpbmdCKSB7XG4gICAgICAgIHJldHVybiBkaXJlY3Rpb24gPT09ICdhc2MnID8gLTEgOiAxO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RyaW5nQSA+IHN0cmluZ0IpIHtcbiAgICAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PT0gJ2FzYycgPyAxIDogLTE7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAwO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhc01hdGNoZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX21hdGNoZXMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIHByb3RlY3RlZCBjaGVja0RlbGltaXRlcnNDb25mbGljdCgpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnR5cGVhaGVhZE11bHRpcGxlU2VhcmNoICYmXG4gICAgICB0aGlzLnR5cGVhaGVhZFNpbmdsZVdvcmRzICYmXG4gICAgICB0aGlzLmhhdmVDb21tb25DaGFyYWN0ZXJzKFxuICAgICAgICBgJHt0aGlzLnR5cGVhaGVhZFBocmFzZURlbGltaXRlcnN9JHt0aGlzLnR5cGVhaGVhZFdvcmREZWxpbWl0ZXJzfWAsXG4gICAgICAgIHRoaXMudHlwZWFoZWFkTXVsdGlwbGVTZWFyY2hEZWxpbWl0ZXJzXG4gICAgICApXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYERlbGltaXRlcnMgdXNlZCBpbiB0eXBlYWhlYWRNdWx0aXBsZVNlYXJjaERlbGltaXRlcnMgbXVzdCBiZSBkaWZmZXJlbnRcbiAgICAgICAgICBmcm9tIGRlbGltaXRlcnMgdXNlZCBpbiB0eXBlYWhlYWRXb3JkRGVsaW1pdGVycyAoY3VycmVudCB2YWx1ZTogJHt0aGlzLnR5cGVhaGVhZFdvcmREZWxpbWl0ZXJzfSkgYW5kXG4gICAgICAgICAgdHlwZWFoZWFkUGhyYXNlRGVsaW1pdGVycyAoY3VycmVudCB2YWx1ZTogJHt0aGlzLnR5cGVhaGVhZFBocmFzZURlbGltaXRlcnN9KS5cbiAgICAgICAgICBQbGVhc2UgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb25gKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGF2ZUNvbW1vbkNoYXJhY3RlcnMoc3RyMTogc3RyaW5nLCBzdHIyOiBzdHJpbmcpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0cjEubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChzdHIxLmNoYXJBdChpKS5pbmRleE9mKHN0cjIpID4gLTEpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TypeaheadContainerComponent } from './typeahead-container.component';\nimport { TypeaheadDirective } from './typeahead.directive';\nimport * as i0 from \"@angular/core\";\nexport class TypeaheadModule {\n // @deprecated method not required anymore, will be deleted in v19.0.0\n static forRoot() {\n return {\n ngModule: TypeaheadModule,\n providers: []\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.2\", ngImport: i0, type: TypeaheadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.2\", ngImport: i0, type: TypeaheadModule, imports: [CommonModule, TypeaheadContainerComponent, TypeaheadDirective], exports: [TypeaheadContainerComponent, TypeaheadDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.2\", ngImport: i0, type: TypeaheadModule, imports: [CommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.2\", ngImport: i0, type: TypeaheadModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, TypeaheadContainerComponent, TypeaheadDirective],\n exports: [TypeaheadContainerComponent, TypeaheadDirective]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWFoZWFkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90eXBlYWhlYWQvdHlwZWFoZWFkLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBTTNELE1BQU0sT0FBTyxlQUFlO0lBQzFCLHNFQUFzRTtJQUN0RSxNQUFNLENBQUMsT0FBTztRQUNaLE9BQU87WUFDTCxRQUFRLEVBQUUsZUFBZTtZQUN6QixTQUFTLEVBQUUsRUFBRTtTQUNkLENBQUM7SUFDSixDQUFDOzhHQVBVLGVBQWU7K0dBQWYsZUFBZSxZQUhkLFlBQVksRUFBRSwyQkFBMkIsRUFBRSxrQkFBa0IsYUFDN0QsMkJBQTJCLEVBQUUsa0JBQWtCOytHQUVoRCxlQUFlLFlBSGQsWUFBWTs7MkZBR2IsZUFBZTtrQkFKM0IsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsMkJBQTJCLEVBQUUsa0JBQWtCLENBQUM7b0JBQ3hFLE9BQU8sRUFBRSxDQUFDLDJCQUEyQixFQUFFLGtCQUFrQixDQUFDO2lCQUM3RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBUeXBlYWhlYWRDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuL3R5cGVhaGVhZC1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFR5cGVhaGVhZERpcmVjdGl2ZSB9IGZyb20gJy4vdHlwZWFoZWFkLmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVHlwZWFoZWFkQ29udGFpbmVyQ29tcG9uZW50LCBUeXBlYWhlYWREaXJlY3RpdmVdLFxuICAgIGV4cG9ydHM6IFtUeXBlYWhlYWRDb250YWluZXJDb21wb25lbnQsIFR5cGVhaGVhZERpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgVHlwZWFoZWFkTW9kdWxlIHtcbiAgLy8gQGRlcHJlY2F0ZWQgbWV0aG9kIG5vdCByZXF1aXJlZCBhbnltb3JlLCB3aWxsIGJlIGRlbGV0ZWQgaW4gdjE5LjAuMFxuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFR5cGVhaGVhZE1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogVHlwZWFoZWFkTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXVxuICAgIH07XG4gIH1cbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWJvb3RzdHJhcC10eXBlYWhlYWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHlwZWFoZWFkL25neC1ib290c3RyYXAtdHlwZWFoZWFkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i1","i2.TypeaheadConfig"],"mappings":";;;;;;;;;;;;;AAAY,MAAC,QAAQ,GAAG;AACxB,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,GAAG,E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"}
|