{"version":3,"file":"nebular-theme.mjs","sources":["../../../src/framework/theme/theme.options.ts","../../../src/framework/theme/services/breakpoints.service.ts","../../../src/framework/theme/services/js-themes/default.theme.ts","../../../src/framework/theme/services/js-themes/cosmic.theme.ts","../../../src/framework/theme/services/js-themes/corporate.theme.ts","../../../src/framework/theme/services/js-themes/dark.theme.ts","../../../src/framework/theme/services/js-themes-registry.service.ts","../../../src/framework/theme/services/theme.service.ts","../../../src/framework/theme/services/spinner.service.ts","../../../src/framework/theme/services/direction.service.ts","../../../src/framework/theme/services/scroll.service.ts","../../../src/framework/theme/services/ruler.service.ts","../../../src/framework/theme/components/shared/shared.module.ts","../../../src/framework/theme/components/cdk/a11y/focus-trap.ts","../../../src/framework/theme/components/cdk/a11y/focus-key-manager.ts","../../../src/framework/theme/components/cdk/a11y/descendant-key-manager.ts","../../../src/framework/theme/components/cdk/a11y/a11y.module.ts","../../../src/framework/theme/components/cdk/overlay/mapping.ts","../../../src/framework/theme/components/cdk/overlay/position-helper.ts","../../../src/framework/theme/components/cdk/platform/platform-service.ts","../../../src/framework/theme/components/cdk/adapter/viewport-ruler-adapter.ts","../../../src/framework/theme/components/cdk/adapter/overlay-container-adapter.ts","../../../src/framework/theme/components/cdk/overlay/overlay-position.ts","../../../src/framework/theme/components/cdk/overlay/overlay-container.ts","../../../src/framework/theme/components/cdk/overlay/overlay-service.ts","../../../src/framework/theme/components/cdk/adapter/scroll-dispatcher-adapter.ts","../../../src/framework/theme/components/cdk/adapter/block-scroll-strategy-adapter.ts","../../../src/framework/theme/components/cdk/adapter/adapter.module.ts","../../../src/framework/theme/components/cdk/overlay/overlay-trigger.ts","../../../src/framework/theme/components/cdk/overlay/overlay.module.ts","../../../src/framework/theme/services/status.service.ts","../../../src/framework/theme/theme.module.ts","../../../src/framework/theme/services/color.helper.ts","../../../src/framework/theme/components/icon/icon-pack.ts","../../../src/framework/theme/components/icon/icon.ts","../../../src/framework/theme/components/icon/icon-libraries.ts","../../../src/framework/theme/components/icon/icon.component.ts","../../../src/framework/theme/components/icon/icon.module.ts","../../../src/framework/theme/components/card/card.component.ts","../../../src/framework/theme/components/card/reveal-card/reveal-card.component.ts","../../../src/framework/theme/components/card/flip-card/flip-card.component.ts","../../../src/framework/theme/components/card/shared/shared.component.ts","../../../src/framework/theme/components/card/card.module.ts","../../../src/framework/theme/components/calendar-kit/model.ts","../../../src/framework/theme/components/helpers.ts","../../../src/framework/theme/components/calendar-kit/services/date.service.ts","../../../src/framework/theme/components/calendar-kit/helpers.ts","../../../src/framework/theme/components/calendar-kit/services/calendar-year-model.service.ts","../../../src/framework/theme/components/button/base-button.ts","../../../src/framework/theme/components/button/button.component.ts","../../../src/framework/theme/components/calendar-kit/components/calendar-navigation/calendar-view-mode.component.ts","../../../src/framework/theme/components/calendar-kit/components/calendar-navigation/calendar-pageable-navigation.component.ts","../../../src/framework/theme/components/calendar-kit/components/calendar-year-picker/calendar-year-cell.component.ts","../../../src/framework/theme/components/calendar-kit/components/calendar-picker/calendar-picker-row.component.ts","../../../src/framework/theme/components/calendar-kit/components/calendar-picker/calendar-picker.component.ts","../../../src/framework/theme/components/calendar-kit/components/calendar-year-picker/calendar-year-picker.component.ts","../../../src/framework/theme/components/calendar-kit/components/calendar-month-picker/calendar-month-cell.component.ts","../../../src/framework/theme/components/calendar-kit/components/calendar-month-picker/calendar-month-picker.component.ts","../../../src/framework/theme/components/calendar-kit/components/calendar-day-picker/calendar-day-cell.component.ts","../../../src/framework/theme/components/calendar-kit/services/calendar-month-model.service.ts","../../../src/framework/theme/components/calendar-kit/components/calendar-days-names/calendar-days-names.component.ts","../../../src/framework/theme/components/calendar-kit/components/calendar-week-number/calendar-week-number.component.ts","../../../src/framework/theme/components/calendar-kit/components/calendar-day-picker/calendar-day-picker.component.ts","../../../src/framework/theme/components/calendar/base-calendar.component.ts","../../../src/framework/theme/components/calendar/base-calendar.component.html","../../../src/framework/theme/components/calendar/calendar.component.ts","../../../src/framework/theme/components/button/button.module.ts","../../../src/framework/theme/components/calendar-kit/services/native-date.service.ts","../../../src/framework/theme/components/calendar-kit/services/calendar-time-model.service.ts","../../../src/framework/theme/components/calendar-kit/components/calendar-actions/calendar-actions.component.ts","../../../src/framework/theme/components/calendar-kit/calendar-kit.module.ts","../../../src/framework/theme/components/calendar/base-calendar.module.ts","../../../src/framework/theme/components/calendar/calendar.module.ts","../../../src/framework/theme/components/calendar/base-calendar-range-cell.ts","../../../src/framework/theme/components/calendar/calendar-range-day-cell.component.ts","../../../src/framework/theme/components/calendar/calendar-range-year-cell.component.ts","../../../src/framework/theme/components/calendar/calendar-range-month-cell.component.ts","../../../src/framework/theme/components/calendar/calendar-range.component.ts","../../../src/framework/theme/components/calendar/calendar-range.module.ts","../../../src/framework/theme/components/timepicker/model.ts","../../../src/framework/theme/components/list/list.component.ts","../../../src/framework/theme/components/timepicker/timepicker-cell.component.ts","../../../src/framework/theme/components/timepicker/timepicker.component.ts","../../../src/framework/theme/components/timepicker/timepicker.component.html","../../../src/framework/theme/components/datepicker/calendar-with-time.component.ts","../../../src/framework/theme/components/datepicker/datepicker-container.component.ts","../../../src/framework/theme/components/datepicker/datepicker.directive.ts","../../../src/framework/theme/components/datepicker/datepicker.component.ts","../../../src/framework/theme/components/datepicker/date-timepicker.component.ts","../../../src/framework/theme/components/menu/url-matching-helpers.ts","../../../src/framework/theme/components/layout/restore-scroll-top.service.ts","../../../src/framework/theme/components/layout/layout.component.ts","../../../src/framework/theme/components/layout/layout-direction.directive.ts","../../../src/framework/theme/components/layout/layout.module.ts","../../../src/framework/theme/components/menu/menu.service.ts","../../../src/framework/theme/components/badge/badge.component.ts","../../../src/framework/theme/components/menu/menu.component.ts","../../../src/framework/theme/components/menu/menu-item.component.html","../../../src/framework/theme/components/badge/badge.module.ts","../../../src/framework/theme/components/menu/menu.module.ts","../../../src/framework/theme/components/route-tabset/merge-configs.pipe.ts","../../../src/framework/theme/components/route-tabset/route-tabset.component.ts","../../../src/framework/theme/components/route-tabset/route-tabset.module.ts","../../../src/framework/theme/components/sidebar/sidebar.service.ts","../../../src/framework/theme/components/sidebar/sidebar.component.ts","../../../src/framework/theme/components/sidebar/sidebar.module.ts","../../../src/framework/theme/components/tabset/tab-content.directive.ts","../../../src/framework/theme/components/tabset/tab-title.directive.ts","../../../src/framework/theme/components/tabset/tabset.component.ts","../../../src/framework/theme/components/tabset/tabset.module.ts","../../../src/framework/theme/components/user/user.component.ts","../../../src/framework/theme/components/user/user.component.html","../../../src/framework/theme/components/user/user.module.ts","../../../src/framework/theme/components/actions/actions.component.ts","../../../src/framework/theme/components/actions/actions.module.ts","../../../src/framework/theme/components/search/search.service.ts","../../../src/framework/theme/components/search/search.component.ts","../../../src/framework/theme/components/search/search.module.ts","../../../src/framework/theme/components/checkbox/checkbox.component.ts","../../../src/framework/theme/components/checkbox/checkbox.module.ts","../../../src/framework/theme/components/cdk/overlay/dynamic/dynamic-overlay.ts","../../../src/framework/theme/components/cdk/overlay/dynamic/dynamic-overlay-handler.ts","../../../src/framework/theme/components/popover/popover.component.ts","../../../src/framework/theme/components/popover/popover.directive.ts","../../../src/framework/theme/components/popover/popover.module.ts","../../../src/framework/theme/components/context-menu/context-menu.component.ts","../../../src/framework/theme/components/context-menu/context-menu.directive.ts","../../../src/framework/theme/components/context-menu/context-menu.module.ts","../../../src/framework/theme/components/progress-bar/progress-bar.component.ts","../../../src/framework/theme/components/progress-bar/progress-bar.module.ts","../../../src/framework/theme/components/alert/alert.component.ts","../../../src/framework/theme/components/alert/alert.module.ts","../../../src/framework/theme/components/form-field/form-field-control.ts","../../../src/framework/theme/components/input/input.directive.ts","../../../src/framework/theme/components/chat/chat-form.component.ts","../../../src/framework/theme/components/chat/chat-custom-message.service.ts","../../../src/framework/theme/components/chat/chat-message-text.component.ts","../../../src/framework/theme/components/chat/chat-message-file.component.ts","../../../src/framework/theme/components/chat/chat-message-quote.component.ts","../../../src/framework/theme/components/chat/chat.options.ts","../../../src/framework/theme/components/chat/chat-message-map.component.ts","../../../src/framework/theme/components/chat/chat-avatar.component.ts","../../../src/framework/theme/components/chat/chat-message.component.ts","../../../src/framework/theme/components/chat/chat-title.directive.ts","../../../src/framework/theme/components/chat/chat.component.ts","../../../src/framework/theme/components/input/input.module.ts","../../../src/framework/theme/components/chat/chat-custom-message.directive.ts","../../../src/framework/theme/components/chat/chat.module.ts","../../../src/framework/theme/components/spinner/spinner.component.ts","../../../src/framework/theme/components/spinner/spinner.directive.ts","../../../src/framework/theme/components/spinner/spinner.module.ts","../../../src/framework/theme/components/stepper/stepper-tokens.ts","../../../src/framework/theme/components/stepper/step.component.ts","../../../src/framework/theme/components/stepper/stepper.component.ts","../../../src/framework/theme/components/stepper/stepper.component.html","../../../src/framework/theme/components/stepper/stepper-button.directive.ts","../../../src/framework/theme/components/stepper/stepper.module.ts","../../../src/framework/theme/components/accordion/accordion.component.ts","../../../src/framework/theme/components/accordion/accordion-item.component.ts","../../../src/framework/theme/components/accordion/accordion-item-body.component.ts","../../../src/framework/theme/components/accordion/accordion-item-header.component.ts","../../../src/framework/theme/components/accordion/accordion.module.ts","../../../src/framework/theme/components/button-group/button-group-injection-tokens.ts","../../../src/framework/theme/components/button-group/button-toggle.directive.ts","../../../src/framework/theme/components/button-group/button-group.component.ts","../../../src/framework/theme/components/button-group/button-group.module.ts","../../../src/framework/theme/components/list/list-page-tracker.directive.ts","../../../src/framework/theme/components/list/infinite-list.directive.ts","../../../src/framework/theme/components/list/list.module.ts","../../../src/framework/theme/components/cdk/bidi/bidi-service.ts","../../../src/framework/theme/components/cdk/bidi/bidi.module.ts","../../../src/framework/theme/components/cdk/table/cell.ts","../../../src/framework/theme/components/cdk/table/data-source.ts","../../../src/framework/theme/components/cdk/table/row.ts","../../../src/framework/theme/components/cdk/table/type-mappings.ts","../../../src/framework/theme/components/cdk/table/table.module.ts","../../../src/framework/theme/components/dialog/dialog-config.ts","../../../src/framework/theme/components/dialog/dialog-ref.ts","../../../src/framework/theme/components/dialog/dialog-container.ts","../../../src/framework/theme/components/dialog/dialog.service.ts","../../../src/framework/theme/components/dialog/dialog.module.ts","../../../src/framework/theme/components/toastr/toast.component.ts","../../../src/framework/theme/components/toastr/toast.component.html","../../../src/framework/theme/components/toastr/toastr-container.component.ts","../../../src/framework/theme/components/toastr/toastr-config.ts","../../../src/framework/theme/components/toastr/toastr.service.ts","../../../src/framework/theme/components/toastr/toastr.module.ts","../../../src/framework/theme/components/toastr/model.ts","../../../src/framework/theme/components/tooltip/tooltip.component.ts","../../../src/framework/theme/components/tooltip/tooltip.directive.ts","../../../src/framework/theme/components/tooltip/tooltip.module.ts","../../../src/framework/theme/components/select/select-injection-tokens.ts","../../../src/framework/theme/components/option/option.component.ts","../../../src/framework/theme/components/option/option-list.component.ts","../../../src/framework/theme/components/select/select.component.ts","../../../src/framework/theme/components/select/select.component.html","../../../src/framework/theme/components/option/option-group.component.ts","../../../src/framework/theme/components/option/option-list.module.ts","../../../src/framework/theme/components/select/select.module.ts","../../../src/framework/theme/components/form-field/prefix.directive.ts","../../../src/framework/theme/components/form-field/suffix.directive.ts","../../../src/framework/theme/components/form-field/form-field.component.ts","../../../src/framework/theme/components/form-field/form-field.component.html","../../../src/framework/theme/components/select-with-autocomplete/select-with-autocomplete.component.ts","../../../src/framework/theme/components/select-with-autocomplete/select-with-autocomplete.component.html","../../../src/framework/theme/components/form-field/form-field.module.ts","../../../src/framework/theme/components/select-with-autocomplete/select-with-autocomplete.module.ts","../../../src/framework/theme/components/autocomplete/autocomplete.component.ts","../../../src/framework/theme/components/autocomplete/autocomplete.component.html","../../../src/framework/theme/components/autocomplete/autocomplete.directive.ts","../../../src/framework/theme/components/autocomplete/autocomplete.module.ts","../../../src/framework/theme/components/window/window.options.ts","../../../src/framework/theme/components/window/window-ref.ts","../../../src/framework/theme/components/window/windows-container.component.ts","../../../src/framework/theme/components/window/window.component.ts","../../../src/framework/theme/components/window/window.service.ts","../../../src/framework/theme/components/window/window.module.ts","../../../src/framework/theme/components/timepicker/timepicker.directive.ts","../../../src/framework/theme/components/timepicker/timepicker.module.ts","../../../src/framework/theme/components/datepicker/datepicker-adapter.ts","../../../src/framework/theme/components/datepicker/datepicker.module.ts","../../../src/framework/theme/components/radio/radio.component.ts","../../../src/framework/theme/components/radio/radio-group.component.ts","../../../src/framework/theme/components/radio/radio.module.ts","../../../src/framework/theme/components/tag/tag.component.ts","../../../src/framework/theme/components/tag/tag.component.html","../../../src/framework/theme/components/tag/tag-input.directive.ts","../../../src/framework/theme/components/tag/tag-list.component.ts","../../../src/framework/theme/components/tag/tag.module.ts","../../../src/framework/theme/components/tree-grid/data-source/tree-grid.model.ts","../../../src/framework/theme/components/tree-grid/data-source/tree-grid-filter.service.ts","../../../src/framework/theme/components/tree-grid/tree-grid-sort.component.ts","../../../src/framework/theme/components/tree-grid/data-source/tree-grid-sort.service.ts","../../../src/framework/theme/components/tree-grid/data-source/tree-grid.service.ts","../../../src/framework/theme/components/tree-grid/data-source/tree-grid-data.service.ts","../../../src/framework/theme/components/tree-grid/data-source/tree-grid-data-source.ts","../../../src/framework/theme/components/tree-grid/tree-grid-injection-tokens.ts","../../../src/framework/theme/components/tree-grid/tree-grid-columns.service.ts","../../../src/framework/theme/components/tree-grid/tree-grid.component.ts","../../../src/framework/theme/components/tree-grid/tree-grid-def.component.ts","../../../src/framework/theme/components/tree-grid/tree-grid-row.component.ts","../../../src/framework/theme/components/tree-grid/tree-grid-column-def.directive.ts","../../../src/framework/theme/components/tree-grid/tree-grid-cell.component.ts","../../../src/framework/theme/components/tree-grid/tree-grid-filter.ts","../../../src/framework/theme/components/tree-grid/tree-grid-row-toggle.directive.ts","../../../src/framework/theme/components/tree-grid/tree-grid-row-toggle.component.ts","../../../src/framework/theme/components/tree-grid/tree-grid.module.ts","../../../src/framework/theme/components/toggle/toggle.component.ts","../../../src/framework/theme/components/toggle/toggle.module.ts","../../../src/framework/theme/public_api.ts","../../../src/framework/theme/nebular-theme.ts"],"sourcesContent":["/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { InjectionToken } from '@angular/core';\nimport { NbMediaBreakpoint } from './services/breakpoints.service';\nimport { NbJSThemeOptions } from './services/js-themes/theme.options';\n\nexport interface NbThemeOptions {\n  name: string;\n}\n\nexport const NB_THEME_OPTIONS = new InjectionToken<NbThemeOptions>('Nebular Theme Options');\nexport const NB_MEDIA_BREAKPOINTS = new InjectionToken<NbMediaBreakpoint[]>('Nebular Media Breakpoints');\nexport const NB_BUILT_IN_JS_THEMES = new InjectionToken<NbJSThemeOptions[]>('Nebular Built-in JS Themes');\nexport const NB_JS_THEMES = new InjectionToken<NbJSThemeOptions[]>('Nebular JS Themes');\n\n/**\n * We're providing browser apis with tokens to improve testing capabilities.\n * */\nexport const NB_WINDOW = new InjectionToken<Window>('Window');\nexport const NB_DOCUMENT = new InjectionToken<Document>('Document');\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Inject, Injectable } from '@angular/core';\nimport { NB_MEDIA_BREAKPOINTS } from '../theme.options';\n\n/**\n * Media breakpoint type\n *\n * Where `name` - breakpoint name alias (e.g. xs, sm, md, etc), and width - min breakpoint width\n */\nexport interface NbMediaBreakpoint {\n  name: string;\n  width: number;\n}\n\nexport const DEFAULT_MEDIA_BREAKPOINTS = [\n  {\n    name: 'xs',\n    width: 0,\n  },\n  {\n    name: 'is',\n    width: 400,\n  },\n  {\n    name: 'sm',\n    width: 576,\n  },\n  {\n    name: 'md',\n    width: 768,\n  },\n  {\n    name: 'lg',\n    width: 992,\n  },\n  {\n    name: 'xl',\n    width: 1200,\n  },\n  {\n    name: 'xxl',\n    width: 1400,\n  },\n  {\n    name: 'xxxl',\n    width: 1600,\n  },\n];\n\n/**\n * Manages media breakpoints\n *\n * Provides access to available media breakpoints to convert window width to a configured breakpoint,\n * e.g. 200px - *xs* breakpoint\n */\n@Injectable()\nexport class NbMediaBreakpointsService {\n\n  private breakpointsMap: { [breakpoint: string]: number };\n\n  constructor(@Inject(NB_MEDIA_BREAKPOINTS) private breakpoints) {\n    this.breakpointsMap = this.breakpoints.reduce((res, b: NbMediaBreakpoint) => {\n      res[b.name] = b.width;\n      return res;\n    }, {});\n  }\n\n  /**\n   * Returns a configured breakpoint by width\n   * @param width number\n   * @returns {Z|{name: string, width: number}}\n   */\n  getByWidth(width: number): NbMediaBreakpoint {\n    const unknown = { name: 'unknown', width: width };\n    const breakpoints = this.getBreakpoints();\n\n    return breakpoints\n      .find((point: NbMediaBreakpoint, index: number) => {\n        const next = breakpoints[index + 1];\n        return width >= point.width && (!next || width < next.width);\n      }) || unknown;\n  }\n\n  /**\n   * Returns a configured breakpoint by name\n   * @param name string\n   * @returns NbMediaBreakpoint\n   */\n  getByName(name: string): NbMediaBreakpoint {\n    const unknown = { name: 'unknown', width: NaN };\n    const breakpoints = this.getBreakpoints();\n\n    return breakpoints.find((point: NbMediaBreakpoint) => name === point.name) || unknown;\n  }\n\n  /**\n   * Returns a list of configured breakpoints for the theme\n   * @returns NbMediaBreakpoint[]\n   */\n  getBreakpoints(): NbMediaBreakpoint[] {\n    return this.breakpoints;\n  }\n\n  /**\n   * Returns a map of configured breakpoints for the theme\n   * @returns {[p: string]: number}\n   */\n  getBreakpointsMap(): { [breakpoint: string]: number } {\n    return this.breakpointsMap;\n  }\n}\n","import { NbJSThemeOptions } from './theme.options';\n\nconst palette = {\n  primary: '#3366ff',\n  success: '#00d68f',\n  info: '#0095ff',\n  warning: '#ffaa00',\n  danger: '#ff3d71',\n};\n\nexport const DEFAULT_THEME: NbJSThemeOptions = {\n  name: 'default',\n  variables: {\n    fontMain: 'Open Sans, sans-serif',\n    fontSecondary: 'Raleway, sans-serif',\n\n    bg: '#ffffff',\n    bg2: '#f7f9fc',\n    bg3: '#edf1f7',\n    bg4: '#e4e9f2',\n\n    border: '#ffffff',\n    border2: '#f7f9fc',\n    border3: '#edf1f7',\n    border4: '#e4e9f2',\n    border5: '#c5cee0',\n\n    fg: '#8f9bb3',\n    fgHeading: '#1a2138',\n    fgText: '#1a2138',\n    fgHighlight: palette.primary,\n    layoutBg: '#f7f9fc',\n    separator: '#edf1f7',\n\n    primary: palette.primary,\n    success: palette.success,\n    info: palette.info,\n    warning: palette.warning,\n    danger: palette.danger,\n\n    primaryLight: '#598bff',\n    successLight: '#2ce69b',\n    infoLight: '#42aaff',\n    warningLight: '#ffc94d',\n    dangerLight: '#ff708d',\n  },\n};\n","import { NbJSThemeOptions } from './theme.options';\n\nconst palette = {\n  primary: '#a16eff',\n  success: '#00d68f',\n  info: '#0095ff',\n  warning: '#ffaa00',\n  danger: '#ff3d71',\n};\n\nexport const COSMIC_THEME: NbJSThemeOptions = {\n  name: 'cosmic',\n  variables: {\n    fontMain: 'Open Sans, sans-serif',\n    fontSecondary: 'Raleway, sans-serif',\n\n    bg: '#323259',\n    bg2: '#252547',\n    bg3: '#1b1b38',\n    bg4: '#13132b',\n\n    border: '#323259',\n    border2: '#252547',\n    border3: '#1b1b38',\n    border4: '#13132b',\n    border5: '#13132b',\n\n    fg: '#b4b4db',\n    fgHeading: '#ffffff',\n    fgText: '#ffffff',\n    fgHighlight: palette.primary,\n    layoutBg: '#151a30',\n    separator: '#151a30',\n\n    primary: palette.primary,\n    success: palette.success,\n    info: palette.info,\n    warning: palette.warning,\n    danger: palette.danger,\n\n    primaryLight: '#b18aff',\n    successLight: '#2ce69b',\n    infoLight: '#42aaff',\n    warningLight: '#ffc94d',\n    dangerLight: '#ff708d',\n  },\n};\n","import { NbJSThemeOptions } from './theme.options';\n\nconst palette = {\n  primary: '#73a1ff',\n  success: '#5dcfe3',\n  info: '#ba7fec',\n  warning: '#ffa36b',\n  danger: '#ff6b83',\n};\n\nexport const CORPORATE_THEME: NbJSThemeOptions = {\n  name: 'corporate',\n  base: 'default',\n  variables: {\n    fontMain: 'Open Sans, sans-serif',\n    fontSecondary: 'Raleway, sans-serif',\n\n    bg: '#ffffff',\n    bg2: '#f7f9fc',\n    bg3: '#edf1f7',\n    bg4: '#e4e9f2',\n\n    border: '#ffffff',\n    border2: '#f7f9fc',\n    border3: '#edf1f7',\n    border4: '#e4e9f2',\n    border5: '#c5cee0',\n\n    fg: '#8f9bb3',\n    fgHeading: '#1a2138',\n    fgText: '#1a2138',\n    fgHighlight: palette.primary,\n    layoutBg: '#f7f9fc',\n    separator: '#edf1f7',\n\n    primary: palette.primary,\n    success: palette.success,\n    info: palette.info,\n    warning: palette.warning,\n    danger: palette.danger,\n\n    primaryLight: '#598bff',\n    successLight: '#2ce69b',\n    infoLight: '#42aaff',\n    warningLight: '#ffc94d',\n    dangerLight: '#ff708d',\n  },\n};\n","import { NbJSThemeOptions } from './theme.options';\n\nconst palette = {\n  primary: '#3366ff',\n  success: '#00d68f',\n  info: '#0095ff',\n  warning: '#ffaa00',\n  danger: '#ff3d71',\n};\n\nexport const DARK_THEME: NbJSThemeOptions = {\n  name: 'dark',\n  variables: {\n    fontMain: 'Open Sans, sans-serif',\n    fontSecondary: 'Raleway, sans-serif',\n\n    bg: '#222b45',\n    bg2: '#1a2138',\n    bg3: '#151a30',\n    bg4: '#101426',\n\n    border: '#222b45',\n    border2: '#1a2138',\n    border3: '#151a30',\n    border4: '#101426',\n    border5: '#101426',\n\n    fg: '#8f9bb3',\n    fgHeading: '#ffffff',\n    fgText: '#ffffff',\n    fgHighlight: palette.primary,\n    layoutBg: '#1b1b38',\n    separator: '#1b1b38',\n\n    primary: palette.primary,\n    success: palette.success,\n    info: palette.info,\n    warning: palette.warning,\n    danger: palette.danger,\n\n    primaryLight: '#598bff',\n    successLight: '#2ce69b',\n    infoLight: '#42aaff',\n    warningLight: '#ffc94d',\n    dangerLight: '#ff708d',\n  },\n};\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Inject, Injectable } from '@angular/core';\n\n\nimport { NbJSThemeOptions } from './js-themes/theme.options';\nimport { DEFAULT_THEME } from './js-themes/default.theme';\nimport { COSMIC_THEME } from './js-themes/cosmic.theme';\nimport { CORPORATE_THEME } from './js-themes/corporate.theme';\nimport { DARK_THEME } from './js-themes/dark.theme';\nimport { NB_BUILT_IN_JS_THEMES, NB_JS_THEMES } from '../theme.options';\n\nexport const BUILT_IN_THEMES: NbJSThemeOptions[] = [\n  DEFAULT_THEME,\n  COSMIC_THEME,\n  CORPORATE_THEME,\n  DARK_THEME,\n];\n\n/**\n * Js Themes registry - provides access to the JS themes' variables.\n * Usually shouldn't be used directly, but through the NbThemeService class methods (getJsTheme).\n */\n@Injectable()\nexport class NbJSThemesRegistry {\n\n  private themes: any = {};\n\n  constructor(@Inject(NB_BUILT_IN_JS_THEMES) builtInThemes: NbJSThemeOptions[],\n              @Inject(NB_JS_THEMES) newThemes: NbJSThemeOptions[] = []) {\n\n    const themes = this.combineByNames(newThemes, builtInThemes);\n\n    themes.forEach((theme: any) => {\n      this.register(theme, theme.name, theme.base);\n    });\n  }\n\n  /**\n   * Registers a new JS theme\n   * @param config any\n   * @param themeName string\n   * @param baseTheme string\n   */\n  register(config: any, themeName: string, baseTheme: string) {\n    const base = this.has(baseTheme) ? this.get(baseTheme) : {};\n    this.themes[themeName] = this.mergeDeep({}, base, config);\n  }\n\n  /**\n   * Checks whether the theme is registered\n   * @param themeName\n   * @returns boolean\n   */\n  has(themeName: string): boolean {\n    return !!this.themes[themeName];\n  }\n\n  /**\n   * Return a theme\n   * @param themeName\n   * @returns NbJSThemeOptions\n   */\n  get(themeName: string): NbJSThemeOptions {\n    if (!this.themes[themeName]) {\n      throw Error(`NbThemeConfig: no theme '${themeName}' found registered.`);\n    }\n    return JSON.parse(JSON.stringify(this.themes[themeName]));\n  }\n\n  private combineByNames(newThemes: NbJSThemeOptions[], oldThemes: NbJSThemeOptions[]): NbJSThemeOptions[] {\n    if (newThemes) {\n      const mergedThemes: NbJSThemeOptions[] = [];\n      newThemes.forEach((theme: NbJSThemeOptions) => {\n        const sameOld: NbJSThemeOptions = oldThemes.find((tm: NbJSThemeOptions) => tm.name === theme.name)\n          || <NbJSThemeOptions>{};\n\n        const mergedTheme = this.mergeDeep({}, sameOld, theme);\n        mergedThemes.push(mergedTheme);\n      });\n\n      oldThemes.forEach((theme: NbJSThemeOptions) => {\n        if (!mergedThemes.find((tm: NbJSThemeOptions) => tm.name === theme.name)) {\n          mergedThemes.push(theme);\n        }\n      });\n      return mergedThemes;\n    }\n    return oldThemes;\n  }\n\n\n  private isObject(item) {\n    return item && typeof item === 'object' && !Array.isArray(item);\n  }\n\n  // TODO: move to helpers\n  private mergeDeep(target, ...sources) {\n    if (!sources.length) {\n      return target;\n    }\n    const source = sources.shift();\n\n    if (this.isObject(target) && this.isObject(source)) {\n      for (const key in source) {\n        if (this.isObject(source[key])) {\n          if (!target[key]) {\n            Object.assign(target, { [key]: {} });\n          }\n          this.mergeDeep(target[key], source[key]);\n        } else {\n          Object.assign(target, { [key]: source[key] });\n        }\n      }\n    }\n    return this.mergeDeep(target, ...sources);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Inject, Injectable } from '@angular/core';\n\nimport { Observable, ReplaySubject, Subject } from 'rxjs';\nimport { map, filter, pairwise, distinctUntilChanged, startWith, share } from 'rxjs/operators';\n\nimport { NB_THEME_OPTIONS } from '../theme.options';\nimport { NbJSThemeOptions } from './js-themes/theme.options';\nimport { NbJSThemesRegistry } from './js-themes-registry.service';\nimport { NbMediaBreakpointsService, NbMediaBreakpoint } from './breakpoints.service';\n\n/**\n * Main Nebular service. Includes various helper methods.\n */\n@Injectable()\nexport class NbThemeService {\n\n  // TODO: behavioral subject here?\n  currentTheme: string;\n  private themeChanges$ = new ReplaySubject(1);\n  private appendLayoutClass$ = new Subject();\n  private removeLayoutClass$ = new Subject();\n  private changeWindowWidth$ = new ReplaySubject<number>(2);\n\n  constructor(@Inject(NB_THEME_OPTIONS) protected options: any,\n              private breakpointService: NbMediaBreakpointsService,\n              private jsThemesRegistry: NbJSThemesRegistry) {\n    if (options && options.name) {\n      this.changeTheme(options.name);\n    }\n  }\n\n  /**\n   * Change current application theme\n   * @param {string} name\n   */\n  changeTheme(name: string): void {\n    this.themeChanges$.next({ name, previous: this.currentTheme });\n    this.currentTheme = name;\n  }\n\n  changeWindowWidth(width: number): void {\n    this.changeWindowWidth$.next(width);\n  }\n\n  /**\n   * Returns a theme object with variables (color/paddings/etc) on a theme change.\n   * Once subscribed - returns current theme.\n   *\n   * @returns {Observable<NbJSThemeOptions>}\n   */\n  getJsTheme(): Observable<NbJSThemeOptions> {\n    return this.onThemeChange().pipe(\n      map((theme: any) => {\n        return this.jsThemesRegistry.get(theme.name);\n      }),\n    );\n  }\n\n  /**\n   * Triggers media query breakpoint change\n   * Returns a pair where the first item is previous media breakpoint and the second item is current breakpoit.\n   * ```ts\n   *  [{ name: 'xs', width: 0 }, { name: 'md', width: 768 }] // change from `xs` to `md`\n   * ```\n   * @returns {Observable<[NbMediaBreakpoint, NbMediaBreakpoint]>}\n   */\n  onMediaQueryChange(): Observable<NbMediaBreakpoint[]> {\n    return this.changeWindowWidth$\n      .pipe(\n        startWith(undefined),\n        pairwise(),\n        map(([prevWidth, width]: [number, number]) => {\n          return [\n            this.breakpointService.getByWidth(prevWidth),\n            this.breakpointService.getByWidth(width),\n          ] as [NbMediaBreakpoint, NbMediaBreakpoint];\n        }),\n        filter(([prevPoint, point]: [NbMediaBreakpoint, NbMediaBreakpoint]) => {\n          return prevPoint.name !== point.name;\n        }),\n        distinctUntilChanged(null, params => params[0].name + params[1].name),\n        share(),\n      );\n  }\n\n  /**\n   * Triggered when current theme is changed\n   * @returns {Observable<any>}\n   */\n  onThemeChange(): Observable<any> {\n    return this.themeChanges$.pipe(share());\n  }\n\n  /**\n   * Append a class to nb-layout\n   * @param {string} className\n   */\n  appendLayoutClass(className: string) {\n    this.appendLayoutClass$.next(className);\n  }\n\n  /**\n   * Triggered when a new class is added to nb-layout through `appendLayoutClass` method\n   * @returns {Observable<any>}\n   */\n  onAppendLayoutClass(): Observable<any> {\n    return this.appendLayoutClass$.pipe(share());\n  }\n\n  /**\n   * Removes a class from nb-layout\n   * @param {string} className\n   */\n  removeLayoutClass(className: string) {\n    this.removeLayoutClass$.next(className);\n  }\n\n  /**\n   * Triggered when a class is removed from nb-layout through `removeLayoutClass` method\n   * @returns {Observable<any>}\n   */\n  onRemoveLayoutClass(): Observable<any> {\n    return this.removeLayoutClass$.pipe(share());\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\nimport { Injectable, Inject } from '@angular/core';\nimport { NB_DOCUMENT } from '../theme.options';\n\n/**\n * Service to control the global page spinner.\n */\n@Injectable()\nexport class NbSpinnerService {\n\n  private loaders: Promise<any>[] = [];\n  private selector: string = 'nb-global-spinner';\n\n  constructor(@Inject(NB_DOCUMENT) private document) {}\n\n  /**\n   * Appends new loader to the list of loader to be completed before\n   * spinner will be hidden\n   * @param method Promise<any>\n   */\n  registerLoader(method: Promise<any>): void {\n    this.loaders.push(method);\n  }\n\n  /**\n   * Clears the list of loader\n   */\n  clear(): void {\n    this.loaders = [];\n  }\n\n  /**\n   * Start the loader process, show spinnder and execute loaders\n   */\n  load(): void {\n    this.showSpinner();\n    this.executeAll();\n  }\n\n  private executeAll(done = (values) => {}): void {\n    Promise.all(this.loaders).then((values) => {\n      this.hideSpinner();\n      done.call(null, values);\n    })\n      .catch((error) => {\n        // TODO: Promise.reject\n        console.error(error);\n      });\n  }\n\n  // TODO is there any better way of doing this?\n  private showSpinner(): void {\n    const el = this.getSpinnerElement();\n    if (el) {\n      el.style['display'] = 'block';\n    }\n  }\n\n  private hideSpinner(): void {\n    const el = this.getSpinnerElement();\n    if (el) {\n      el.style['display'] = 'none';\n    }\n  }\n\n  private getSpinnerElement() {\n    return this.document.getElementById(this.selector);\n  }\n}\n","import { InjectionToken, Optional, Inject, Injectable } from '@angular/core';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { share } from 'rxjs/operators';\n\n/**\n * Layout direction.\n * */\nexport enum NbLayoutDirection {\n  LTR = 'ltr',\n  RTL = 'rtl',\n}\n\n/**\n * Layout direction setting injection token.\n * */\nexport const NB_LAYOUT_DIRECTION = new InjectionToken<NbLayoutDirection>('Layout direction');\n\n/**\n * Layout Direction Service.\n * Allows to set or get layout direction and listen to its changes\n */\n@Injectable()\nexport class NbLayoutDirectionService {\n  private $directionChange = new ReplaySubject<NbLayoutDirection>(1);\n\n  constructor(\n    @Optional() @Inject(NB_LAYOUT_DIRECTION) private direction = NbLayoutDirection.LTR,\n  ) {\n    this.setDirection(direction);\n  }\n\n  /**\n   * Returns true if layout direction set to left to right.\n   * @returns boolean.\n   * */\n  public isLtr(): boolean {\n    return this.direction === NbLayoutDirection.LTR;\n  }\n\n  /**\n   * Returns true if layout direction set to right to left.\n   * @returns boolean.\n   * */\n  public isRtl(): boolean {\n    return this.direction === NbLayoutDirection.RTL;\n  }\n\n  /**\n   * Returns current layout direction.\n   * @returns NbLayoutDirection.\n   * */\n  getDirection(): NbLayoutDirection {\n    return this.direction;\n  }\n\n  /**\n   * Sets layout direction\n   * @param {NbLayoutDirection} direction\n   */\n  setDirection(direction: NbLayoutDirection) {\n    this.direction = direction;\n    this.$directionChange.next(direction);\n  }\n\n  /**\n   * Triggered when direction was changed.\n   * @returns Observable<NbLayoutDirection>.\n   */\n  onDirectionChange(): Observable<NbLayoutDirection> {\n    return this.$directionChange.pipe(share<NbLayoutDirection>());\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject, Subscriber } from 'rxjs';\nimport { share } from 'rxjs/operators';\n\n/**\n * Scroll position type\n */\nexport interface NbScrollPosition {\n\n  /**\n   * x - left\n   * @type {number}\n   */\n  x: number;\n\n  /**\n   * y - top\n   * @type {number}\n   */\n  y: number;\n}\n\n/**\n * Layout scroll service. Provides information about current scroll position,\n * as well as methods to update position of the scroll.\n *\n * The reason we added this service is that in Nebular there are two scroll modes:\n * - the default mode when scroll is on body\n * - and the `withScroll` mode, when scroll is removed from the body and moved to an element inside of the\n * `nb-layout` component\n */\n@Injectable()\nexport class NbLayoutScrollService {\n\n  private scrollPositionReq$ = new Subject<any>();\n  private manualScroll$ = new Subject<NbScrollPosition>();\n  private scroll$ = new Subject<any>();\n  private scrollable$ = new Subject<boolean>();\n\n  /**\n   * Returns scroll position\n   *\n   * @returns {Observable<NbScrollPosition>}\n   */\n  getPosition(): Observable<NbScrollPosition> {\n    return new Observable((observer: Subscriber<NbScrollPosition>) => {\n      const listener = new Subject<NbScrollPosition>();\n      listener.subscribe(observer);\n      this.scrollPositionReq$.next({ listener });\n\n      return () => listener.complete();\n    });\n  }\n\n  /**\n   * Sets scroll position\n   *\n   * @param {number} x\n   * @param {number} y\n   */\n  scrollTo(x: number = null, y: number = null) {\n    this.manualScroll$.next({ x, y });\n  }\n\n  /**\n   * Returns a stream of scroll events\n   *\n   * @returns {Observable<any>}\n   */\n  onScroll() {\n    return this.scroll$.pipe(share<any>());\n  }\n\n  /**\n   * @private\n   * @returns Observable<NbScrollPosition>.\n   */\n  onManualScroll(): Observable<NbScrollPosition> {\n    return this.manualScroll$.pipe(share<NbScrollPosition>());\n  }\n\n  /**\n   * @private\n   * @returns {Subject<any>}\n   */\n  onGetPosition(): Subject<any> {\n    return this.scrollPositionReq$;\n  }\n\n  onScrollableChange(): Observable<boolean> {\n    return this.scrollable$.pipe(share());\n  }\n\n  /**\n   * @private\n   * @param {any} event\n   */\n  fireScrollChange(event: any) {\n    this.scroll$.next(event);\n  }\n\n  scrollable(scrollable: boolean) {\n    this.scrollable$.next(scrollable);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject, Subscriber } from 'rxjs';\n\n/**\n * Layout dimensions type\n */\nexport interface NbLayoutDimensions {\n\n  /**\n   * clientWidth\n   * @type {number}\n   */\n  clientWidth: number;\n\n  /**\n   * clientHeight\n   * @type {number}\n   */\n  clientHeight: number;\n\n  /**\n   * scrollWidth\n   * @type {number}\n   */\n  scrollWidth: number;\n\n  /**\n   * scrollHeight\n   * @type {number}\n   */\n  scrollHeight: number;\n}\n\n/**\n * Simple helper service to return Layout dimensions\n * Depending of current Layout scroll mode (default or `withScroll` when scroll is moved to an element\n * inside of the layout) corresponding dimensions will be returns  - of `documentElement` in first case and\n * `.scrollable-container` in the second.\n */\n@Injectable()\nexport class NbLayoutRulerService {\n\n  private contentDimensionsReq$ = new Subject();\n\n  /**\n   * Content dimensions\n   * @returns {Observable<NbLayoutDimensions>}\n   */\n  getDimensions(): Observable<NbLayoutDimensions> {\n    return new Observable((observer: Subscriber<NbLayoutDimensions>) => {\n      const listener = new Subject<NbLayoutDimensions>();\n      listener.subscribe(observer);\n      this.contentDimensionsReq$.next({ listener });\n\n      return () => listener.complete();\n    });\n  }\n\n  /**\n   * @private\n   * @returns {Subject<any>}\n   */\n  onGetDimensions(): Subject<any> {\n    return this.contentDimensionsReq$;\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\n@NgModule({\n  exports: [\n    CommonModule,\n    // TODO: probably we don't need FormsModule in SharedModule\n    FormsModule,\n    RouterModule,\n  ],\n})\nexport class NbSharedModule { }\n","import { Inject, Injectable, NgZone } from '@angular/core';\nimport { FocusTrap, FocusTrapFactory, InteractivityChecker } from '@angular/cdk/a11y';\n\nimport { NB_DOCUMENT } from '../../../theme.options';\n\n\n/**\n * Overrides angular cdk focus trap to keep restore functionality inside trap.\n * */\nexport class NbFocusTrap extends FocusTrap {\n  protected previouslyFocusedElement: HTMLElement;\n\n  constructor(\n    protected element: HTMLElement,\n    protected checker: InteractivityChecker,\n    protected ngZone: NgZone,\n    protected document: Document,\n    deferAnchors) {\n    super(element, checker, ngZone, document, deferAnchors);\n    this.savePreviouslyFocusedElement();\n  }\n\n  restoreFocus() {\n    this.previouslyFocusedElement.focus();\n    this.destroy();\n  }\n\n  blurPreviouslyFocusedElement() {\n    this.previouslyFocusedElement.blur();\n  }\n\n  protected savePreviouslyFocusedElement() {\n    this.previouslyFocusedElement = this.document.activeElement as HTMLElement;\n  }\n}\n\n@Injectable()\nexport class NbFocusTrapFactoryService extends FocusTrapFactory {\n  constructor(\n    protected checker: InteractivityChecker,\n    protected ngZone: NgZone,\n    @Inject(NB_DOCUMENT) private document) {\n    super(checker, ngZone, document);\n  }\n\n  create(element: HTMLElement, deferCaptureElements?: boolean): NbFocusTrap {\n    return new NbFocusTrap(element, this.checker, this.ngZone, this.document, deferCaptureElements);\n  }\n}\n","import { QueryList } from '@angular/core';\nimport { FocusableOption, FocusKeyManager } from '@angular/cdk/a11y';\n\nexport type NbFocusableOption = FocusableOption;\nexport class NbFocusKeyManager<T> extends FocusKeyManager<T> {}\n\nexport class NbFocusKeyManagerFactoryService<T extends NbFocusableOption> {\n  create(items: QueryList<T> | T[]): NbFocusKeyManager<T> {\n    return new NbFocusKeyManager<T>(items);\n  }\n}\n","import { ActiveDescendantKeyManager, Highlightable } from '@angular/cdk/a11y';\nimport { QueryList } from '@angular/core';\n\nexport type NbHighlightableOption = Highlightable;\nexport class NbActiveDescendantKeyManager<T> extends ActiveDescendantKeyManager<T> {}\n\nexport class NbActiveDescendantKeyManagerFactoryService<T extends NbHighlightableOption> {\n  create(items: QueryList<T> | T[]): NbActiveDescendantKeyManager<T> {\n    return new NbActiveDescendantKeyManager<T>(items);\n  }\n}\n\nexport enum NbKeyManagerActiveItemMode {\n  RESET_ACTIVE = -1,\n  FIRST_ACTIVE = 0,\n}\n","import { ModuleWithProviders, NgModule, Injectable } from '@angular/core';\n\nimport { NbFocusTrapFactoryService } from './focus-trap';\nimport { NbFocusKeyManagerFactoryService } from './focus-key-manager';\nimport { NbActiveDescendantKeyManagerFactoryService } from './descendant-key-manager';\nimport { FocusMonitor } from '@angular/cdk/a11y';\n\n@Injectable()\nexport class NbFocusMonitor extends FocusMonitor {}\n\n@NgModule({})\nexport class NbA11yModule {\n  static forRoot(): ModuleWithProviders<NbA11yModule> {\n    return {\n      ngModule: NbA11yModule,\n      providers: [\n        NbFocusTrapFactoryService,\n        NbFocusKeyManagerFactoryService,\n        NbActiveDescendantKeyManagerFactoryService,\n        { provide: NbFocusMonitor, useClass: FocusMonitor },\n      ],\n    };\n  }\n}\n","import { Directive, Injectable, ModuleWithProviders, NgModule, TemplateRef, ViewContainerRef } from '@angular/core';\nimport {\n  CdkPortal,\n  CdkPortalOutlet,\n  ComponentPortal,\n  Portal,\n  PortalInjector,\n  PortalModule,\n  TemplatePortal,\n} from '@angular/cdk/portal';\nimport {\n  ComponentType,\n  ConnectedOverlayPositionChange,\n  ConnectedPosition,\n  ConnectionPositionPair,\n  FlexibleConnectedPositionStrategy,\n  Overlay,\n  OverlayConfig,\n  OverlayContainer,\n  OverlayModule,\n  OverlayPositionBuilder,\n  OverlayRef,\n  PositionStrategy,\n  ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport { NbScrollStrategyOptions } from '../adapter/block-scroll-strategy-adapter';\n\n@Directive({\n    selector: '[nbPortal]',\n    standalone: false\n})\nexport class NbPortalDirective extends CdkPortal {}\n\n@Directive({\n    selector: '[nbPortalOutlet]',\n    standalone: false\n})\nexport class NbPortalOutletDirective extends CdkPortalOutlet {}\n\nexport class NbComponentPortal<T = any> extends ComponentPortal<T> {}\n\n@Injectable()\nexport class NbOverlay extends Overlay {\n  scrollStrategies: NbScrollStrategyOptions;\n}\n\n@Injectable()\nexport class NbOverlayPositionBuilder extends OverlayPositionBuilder {}\n\nexport class NbTemplatePortal<T = any> extends TemplatePortal<T> {\n  constructor(template: TemplateRef<T>, viewContainerRef?: ViewContainerRef, context?: T) {\n    super(template, viewContainerRef, context);\n  }\n}\n\n@Injectable()\nexport class NbOverlayContainer extends OverlayContainer {}\n\nexport class NbFlexibleConnectedPositionStrategy extends FlexibleConnectedPositionStrategy {}\n\nexport class NbPortalInjector extends PortalInjector {}\n\nexport type NbPortal<T = any> = Portal<T>;\nexport type NbOverlayRef = OverlayRef;\nexport type NbComponentType<T = any> = ComponentType<T>;\nexport type NbPositionStrategy = PositionStrategy;\nexport type NbConnectedPosition = ConnectedPosition;\nexport type NbConnectedOverlayPositionChange = ConnectedOverlayPositionChange;\nexport type NbConnectionPositionPair = ConnectionPositionPair;\nexport type NbOverlayConfig = OverlayConfig;\nexport type NbScrollStrategy = ScrollStrategy;\n\nconst CDK_MODULES = [OverlayModule, PortalModule];\n\n/**\n * This module helps us to keep all angular/cdk deps inside our cdk module via providing aliases.\n * Approach will help us move cdk in separate npm package and refactor nebular/theme code.\n * */\n@NgModule({\n  imports: [...CDK_MODULES],\n  exports: [...CDK_MODULES, NbPortalDirective, NbPortalOutletDirective],\n  declarations: [NbPortalDirective, NbPortalOutletDirective],\n})\nexport class NbCdkMappingModule {\n  static forRoot(): ModuleWithProviders<NbCdkMappingModule> {\n    return {\n      ngModule: NbCdkMappingModule,\n      providers: [NbOverlay, NbOverlayPositionBuilder],\n    };\n  }\n}\n","import { Injectable } from '@angular/core';\n\nimport { NbLayoutDirectionService } from '../../../services/direction.service';\n\nexport enum NbGlobalLogicalPosition {\n  TOP_START = 'top-start',\n  TOP_END = 'top-end',\n  BOTTOM_START = 'bottom-start',\n  BOTTOM_END = 'bottom-end',\n}\n\nexport enum NbGlobalPhysicalPosition {\n  TOP_RIGHT = 'top-right',\n  TOP_LEFT = 'top-left',\n  BOTTOM_RIGHT = 'bottom-right',\n  BOTTOM_LEFT = 'bottom-left',\n}\n\nexport type NbGlobalPosition = NbGlobalPhysicalPosition | NbGlobalLogicalPosition;\n\n@Injectable()\nexport class NbPositionHelper {\n  constructor(protected layoutDirection: NbLayoutDirectionService) {}\n\n  toLogicalPosition(position: NbGlobalPosition): NbGlobalLogicalPosition {\n    if (Object.values(NbGlobalLogicalPosition).includes(position as NbGlobalLogicalPosition)) {\n      return position as NbGlobalLogicalPosition;\n    }\n\n    if (this.layoutDirection.isLtr()) {\n      return this.toLogicalPositionWhenLtr(position as NbGlobalPhysicalPosition);\n    } else {\n      return this.toLogicalPositionWhenRtl(position as NbGlobalPhysicalPosition);\n    }\n  }\n\n  toPhysicalPosition(position: NbGlobalPosition): NbGlobalPhysicalPosition {\n    if (Object.values(NbGlobalPhysicalPosition).includes(position as NbGlobalPhysicalPosition)) {\n      return position as NbGlobalPhysicalPosition;\n    }\n\n    if (this.layoutDirection.isLtr()) {\n      return this.toPhysicalPositionWhenLtr(position as NbGlobalLogicalPosition);\n    } else {\n      return this.toPhysicalPositionWhenRtl(position as NbGlobalLogicalPosition);\n    }\n  }\n\n  isTopPosition(position: NbGlobalPosition) {\n    const logicalPosition = this.toLogicalPosition(position);\n\n    return logicalPosition === NbGlobalLogicalPosition.TOP_END || logicalPosition === NbGlobalLogicalPosition.TOP_START;\n  }\n\n  isRightPosition(position: NbGlobalPosition) {\n    const physicalPosition = this.toPhysicalPosition(position);\n\n    return (\n      physicalPosition === NbGlobalPhysicalPosition.TOP_RIGHT ||\n      physicalPosition === NbGlobalPhysicalPosition.BOTTOM_RIGHT\n    );\n  }\n\n  protected toLogicalPositionWhenLtr(position: NbGlobalPhysicalPosition): NbGlobalLogicalPosition {\n    switch (position) {\n      case NbGlobalPhysicalPosition.TOP_RIGHT:\n        return NbGlobalLogicalPosition.TOP_END;\n      case NbGlobalPhysicalPosition.TOP_LEFT:\n        return NbGlobalLogicalPosition.TOP_START;\n      case NbGlobalPhysicalPosition.BOTTOM_RIGHT:\n        return NbGlobalLogicalPosition.BOTTOM_END;\n      case NbGlobalPhysicalPosition.BOTTOM_LEFT:\n        return NbGlobalLogicalPosition.BOTTOM_START;\n    }\n  }\n\n  protected toLogicalPositionWhenRtl(position: NbGlobalPhysicalPosition): NbGlobalLogicalPosition {\n    switch (position) {\n      case NbGlobalPhysicalPosition.TOP_RIGHT:\n        return NbGlobalLogicalPosition.TOP_START;\n      case NbGlobalPhysicalPosition.TOP_LEFT:\n        return NbGlobalLogicalPosition.TOP_END;\n      case NbGlobalPhysicalPosition.BOTTOM_RIGHT:\n        return NbGlobalLogicalPosition.BOTTOM_START;\n      case NbGlobalPhysicalPosition.BOTTOM_LEFT:\n        return NbGlobalLogicalPosition.BOTTOM_END;\n    }\n  }\n\n  protected toPhysicalPositionWhenLtr(position: NbGlobalLogicalPosition): NbGlobalPhysicalPosition {\n    switch (position) {\n      case NbGlobalLogicalPosition.TOP_START:\n        return NbGlobalPhysicalPosition.TOP_LEFT;\n      case NbGlobalLogicalPosition.TOP_END:\n        return NbGlobalPhysicalPosition.TOP_RIGHT;\n      case NbGlobalLogicalPosition.BOTTOM_START:\n        return NbGlobalPhysicalPosition.BOTTOM_LEFT;\n      case NbGlobalLogicalPosition.BOTTOM_END:\n        return NbGlobalPhysicalPosition.BOTTOM_RIGHT;\n    }\n  }\n\n  protected toPhysicalPositionWhenRtl(position: NbGlobalLogicalPosition): NbGlobalPhysicalPosition {\n    switch (position) {\n      case NbGlobalLogicalPosition.TOP_START:\n        return NbGlobalPhysicalPosition.TOP_RIGHT;\n      case NbGlobalLogicalPosition.TOP_END:\n        return NbGlobalPhysicalPosition.TOP_LEFT;\n      case NbGlobalLogicalPosition.BOTTOM_START:\n        return NbGlobalPhysicalPosition.BOTTOM_RIGHT;\n      case NbGlobalLogicalPosition.BOTTOM_END:\n        return NbGlobalPhysicalPosition.BOTTOM_LEFT;\n    }\n  }\n}\n","import { Platform } from '@angular/cdk/platform';\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root',\n  useClass: Platform,\n})\nexport class NbPlatform extends Platform {}\n","import { Inject, Injectable, NgZone } from '@angular/core';\nimport { ViewportRuler } from '@angular/cdk/overlay';\nimport { map } from 'rxjs/operators';\n\nimport { NbPlatform } from '../platform/platform-service';\nimport { NbLayoutRulerService } from '../../../services/ruler.service';\nimport { NbLayoutScrollService, NbScrollPosition } from '../../../services/scroll.service';\nimport { NB_DOCUMENT } from '../../../theme.options';\n\n\n@Injectable()\nexport class NbViewportRulerAdapter extends ViewportRuler {\n  constructor(platform: NbPlatform, ngZone: NgZone,\n              protected ruler: NbLayoutRulerService,\n              protected scroll: NbLayoutScrollService,\n              @Inject(NB_DOCUMENT) document: any) {\n    super(platform, ngZone, document);\n  }\n\n  getViewportSize(): Readonly<{ width: number; height: number; }> {\n    let res;\n    /*\n    * getDimensions call is really synchronous operation.\n    * And we have to conform with the interface of the original service.\n    * */\n    this.ruler.getDimensions()\n      .pipe(map(dimensions => ({ width: dimensions.clientWidth, height: dimensions.clientHeight })))\n      .subscribe(rect => res = rect);\n    return res;\n  }\n\n  getViewportScrollPosition(): { left: number; top: number } {\n    let res;\n    /*\n    * getPosition call is really synchronous operation.\n    * And we have to conform with the interface of the original service.\n    * */\n    this.scroll.getPosition()\n      .pipe(map((position: NbScrollPosition) => ({ top: position.y, left: position.x })))\n      .subscribe(position => res = position);\n    return res;\n  }\n}\n","import { Injectable } from '@angular/core';\n\nimport { NbOverlayContainer } from '../overlay/mapping';\n\nfunction throwLayoutNotFoundError(): void {\n  throw new Error(`[NbOverlayContainerAdapter]: Layout not found.\n  When using Nebular '<nb-layout>' is required and should wrap other nebular components.`);\n}\n\n/**\n * Provides nb-layout as overlay container.\n * Container has to be cleared when layout destroys.\n * Another way previous version of the container will be used\n * but it isn't inserted in DOM and exists in memory only.\n * This case important only if you switch between multiple layouts.\n * */\n@Injectable()\nexport class NbOverlayContainerAdapter extends NbOverlayContainer {\n  protected container: HTMLElement;\n\n  setContainer(container: HTMLElement) {\n    this.container = container;\n  }\n\n  clearContainer() {\n    this.container = null;\n    this._containerElement = null;\n  }\n\n  protected _createContainer(): void {\n    this.checkContainer();\n\n    const container = this._document.createElement('div');\n    container.classList.add('cdk-overlay-container');\n    this.container.appendChild(container);\n    this._containerElement = container;\n  }\n\n  protected checkContainer(): void {\n    if (!this.container) {\n      throwLayoutNotFoundError();\n    }\n  }\n}\n","import { ElementRef, Inject, Injectable } from '@angular/core';\nimport { GlobalPositionStrategy } from '@angular/cdk/overlay';\n\nimport { map } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\n\nimport { NB_DOCUMENT } from '../../../theme.options';\nimport {\n  NbConnectedOverlayPositionChange,\n  NbConnectedPosition,\n  NbConnectionPositionPair,\n  NbFlexibleConnectedPositionStrategy,\n  NbOverlayPositionBuilder,\n  NbOverlayRef,\n  NbPositionStrategy,\n} from './mapping';\nimport { NbPlatform } from '../platform/platform-service';\nimport { NbOverlayContainerAdapter } from '../adapter/overlay-container-adapter';\nimport { NbViewportRulerAdapter } from '../adapter/viewport-ruler-adapter';\nimport { NbGlobalLogicalPosition } from './position-helper';\nimport { NbLayoutDirection } from '../../../services/direction.service';\n\nexport type NbAdjustmentValues = 'noop' | 'clockwise' | 'counterclockwise' | 'vertical' | 'horizontal';\nexport enum NbAdjustment {\n  NOOP = 'noop',\n  CLOCKWISE = 'clockwise',\n  COUNTERCLOCKWISE = 'counterclockwise',\n  VERTICAL = 'vertical',\n  HORIZONTAL = 'horizontal',\n}\n\nexport type NbPositionValues =\n  | 'top'\n  | 'bottom'\n  | 'left'\n  | 'right'\n  | 'start'\n  | 'end'\n  | 'top-end'\n  | 'top-start'\n  | 'bottom-end'\n  | 'bottom-start'\n  | 'end-top'\n  | 'end-bottom'\n  | 'start-top'\n  | 'start-bottom';\nexport enum NbPosition {\n  TOP = 'top',\n  BOTTOM = 'bottom',\n  LEFT = 'left',\n  RIGHT = 'right',\n  START = 'start',\n  END = 'end',\n  TOP_END = 'top-end',\n  TOP_START = 'top-start',\n  BOTTOM_END = 'bottom-end',\n  BOTTOM_START = 'bottom-start',\n  END_TOP = 'end-top',\n  END_BOTTOM = 'end-bottom',\n  START_TOP = 'start-top',\n  START_BOTTOM = 'start-bottom',\n}\n\nconst POSITIONS = {\n  [NbPosition.RIGHT](offset) {\n    return { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: offset };\n  },\n  [NbPosition.BOTTOM](offset) {\n    return { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetY: offset };\n  },\n  [NbPosition.LEFT](offset) {\n    return { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: -offset };\n  },\n  [NbPosition.TOP](offset) {\n    return { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: -offset };\n  },\n  [NbPosition.START](offset) {\n    return this[NbPosition.LEFT](offset);\n  },\n  [NbPosition.END](offset) {\n    return this[NbPosition.RIGHT](offset);\n  },\n  [NbPosition.END_TOP](offset) {\n    return { originX: 'end', originY: 'bottom', overlayX: 'start', overlayY: 'bottom', offsetX: offset };\n  },\n  [NbPosition.END_BOTTOM](offset) {\n    return { originX: 'end', originY: 'top', overlayX: 'start', overlayY: 'top', offsetX: offset };\n  },\n  [NbPosition.BOTTOM_START](offset) {\n    return { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top', offsetY: offset };\n  },\n  [NbPosition.BOTTOM_END](offset) {\n    return { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: offset };\n  },\n  [NbPosition.START_TOP](offset) {\n    return { originX: 'start', originY: 'bottom', overlayX: 'end', overlayY: 'bottom', offsetX: -offset };\n  },\n  [NbPosition.START_BOTTOM](offset) {\n    return { originX: 'start', originY: 'top', overlayX: 'end', overlayY: 'top', offsetX: -offset };\n  },\n  [NbPosition.TOP_START](offset) {\n    return { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom', offsetY: -offset };\n  },\n  [NbPosition.TOP_END](offset) {\n    return { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -offset };\n  },\n};\n\nconst RTL_PHYSICAL_POSITIONS = {\n  ...POSITIONS,\n  [NbPosition.RIGHT](offset) {\n    return { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: offset };\n  },\n  [NbPosition.LEFT](offset) {\n    return { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: -offset };\n  },\n  [NbPosition.START](offset) {\n    return this[NbPosition.RIGHT](offset);\n  },\n  [NbPosition.END](offset) {\n    return this[NbPosition.LEFT](offset);\n  },\n};\n\nconst COUNTER_CLOCKWISE_POSITIONS = [\n  NbPosition.TOP,\n  NbPosition.TOP_END,\n  NbPosition.TOP_START,\n  NbPosition.START,\n  NbPosition.START_TOP,\n  NbPosition.START_BOTTOM,\n  NbPosition.BOTTOM,\n  NbPosition.BOTTOM_START,\n  NbPosition.BOTTOM_END,\n  NbPosition.END,\n  NbPosition.END_BOTTOM,\n  NbPosition.END_TOP,\n];\nconst CLOCKWISE_POSITIONS = [\n  NbPosition.TOP,\n  NbPosition.TOP_START,\n  NbPosition.TOP_END,\n  NbPosition.END,\n  NbPosition.END_TOP,\n  NbPosition.END_BOTTOM,\n  NbPosition.BOTTOM,\n  NbPosition.BOTTOM_END,\n  NbPosition.BOTTOM_START,\n  NbPosition.START,\n  NbPosition.START_BOTTOM,\n  NbPosition.START_TOP,\n];\nconst VERTICAL_POSITIONS = [NbPosition.BOTTOM, NbPosition.TOP];\nconst HORIZONTAL_POSITIONS = [NbPosition.START, NbPosition.END];\n\nfunction comparePositions(p1: NbConnectedPosition, p2: NbConnectedPosition): boolean {\n  return (\n    p1.originX === p2.originX && p1.originY === p2.originY && p1.overlayX === p2.overlayX && p1.overlayY === p2.overlayY\n  );\n}\n\n/**\n * The main idea of the adjustable connected strategy is to provide predefined set of positions for your overlay.\n * You have to provide adjustment and appropriate strategy will be chosen in runtime.\n * */\nexport class NbAdjustableConnectedPositionStrategy\n  extends NbFlexibleConnectedPositionStrategy\n  implements NbPositionStrategy\n{\n  protected _position: NbPosition;\n  protected _offset: number = 15;\n  protected _adjustment: NbAdjustment;\n  protected _direction: NbLayoutDirection | undefined;\n\n  protected appliedPositions: { key: NbPosition; connectedPosition: NbConnectedPosition }[];\n\n  readonly positionChange: Observable<NbPosition> = this.positionChanges.pipe(\n    map((positionChange: NbConnectedOverlayPositionChange) => positionChange.connectionPair),\n    map((connectionPair: NbConnectionPositionPair) => {\n      return this.appliedPositions.find(({ connectedPosition }) => {\n        return comparePositions(connectedPosition, connectionPair);\n      }).key;\n    }),\n  );\n\n  attach(overlayRef: NbOverlayRef) {\n    /**\n     * We have to apply positions before attach because super.attach() validates positions and crashes app\n     * if no positions provided.\n     * */\n    this.applyPositions();\n    super.attach(overlayRef);\n  }\n\n  direction(direction: NbLayoutDirection): this {\n    this._direction = direction;\n    return this;\n  }\n\n  apply() {\n    this.applyPositions();\n    super.apply();\n  }\n\n  position(position: NbPosition): this {\n    this._position = position;\n    return this;\n  }\n\n  adjustment(adjustment: NbAdjustment): this {\n    this._adjustment = adjustment;\n    return this;\n  }\n\n  offset(offset: number): this {\n    this._offset = offset;\n    return this;\n  }\n\n  protected applyPositions() {\n    const positions: NbPosition[] = this.createPositions();\n    this.persistChosenPositions(positions);\n    this.withPositions(this.appliedPositions.map(({ connectedPosition }) => connectedPosition));\n  }\n\n  protected createPositions(): NbPosition[] {\n    switch (this._adjustment) {\n      case NbAdjustment.NOOP:\n        return [this._position];\n      case NbAdjustment.CLOCKWISE:\n        return this.reorderPreferredPositions(CLOCKWISE_POSITIONS);\n      case NbAdjustment.COUNTERCLOCKWISE:\n        return this.reorderPreferredPositions(COUNTER_CLOCKWISE_POSITIONS);\n      case NbAdjustment.HORIZONTAL:\n        return this.reorderPreferredPositions(HORIZONTAL_POSITIONS);\n      case NbAdjustment.VERTICAL:\n        return this.reorderPreferredPositions(VERTICAL_POSITIONS);\n    }\n  }\n\n  protected mapToLogicalPosition(position: NbPosition): NbPosition {\n    if (position === NbPosition.LEFT) {\n      return this._direction === NbLayoutDirection.LTR ? NbPosition.START : NbPosition.END;\n    }\n    if (position === NbPosition.RIGHT) {\n      return this._direction === NbLayoutDirection.LTR ? NbPosition.END : NbPosition.START;\n    }\n    return position;\n  }\n\n  protected persistChosenPositions(positions: NbPosition[]) {\n    const positionGrid = this._direction === NbLayoutDirection.RTL ? RTL_PHYSICAL_POSITIONS : POSITIONS;\n\n    this.appliedPositions = positions.map((position) => ({\n      key: position,\n      connectedPosition: positionGrid[position](this._offset) as NbConnectedPosition,\n    }));\n  }\n\n  protected reorderPreferredPositions(positions: NbPosition[]): NbPosition[] {\n    // Physical positions should be mapped to logical as adjustments use logical positions.\n    const startPosition = this.mapToLogicalPosition(this._position);\n    const startPositionIndex = positions.indexOf(startPosition);\n    const firstPart = positions.slice(startPositionIndex);\n    const secondPart = positions.slice(0, startPositionIndex);\n    return firstPart.concat(secondPart);\n  }\n}\n\nexport class NbGlobalPositionStrategy extends GlobalPositionStrategy {\n  position(position: NbGlobalLogicalPosition): this {\n    switch (position) {\n      case NbGlobalLogicalPosition.TOP_START:\n        return this.top().left();\n\n      case NbGlobalLogicalPosition.TOP_END:\n        return this.top().right();\n\n      case NbGlobalLogicalPosition.BOTTOM_START:\n        return this.bottom().left();\n\n      case NbGlobalLogicalPosition.BOTTOM_END:\n        return this.bottom().right();\n    }\n  }\n}\n\n@Injectable()\nexport class NbPositionBuilderService {\n  constructor(\n    @Inject(NB_DOCUMENT) protected document,\n    protected viewportRuler: NbViewportRulerAdapter,\n    protected platform: NbPlatform,\n    protected positionBuilder: NbOverlayPositionBuilder,\n    protected overlayContainer: NbOverlayContainerAdapter,\n  ) {}\n\n  global(): NbGlobalPositionStrategy {\n    return new NbGlobalPositionStrategy();\n  }\n\n  connectedTo(elementRef: ElementRef): NbAdjustableConnectedPositionStrategy {\n    return new NbAdjustableConnectedPositionStrategy(\n      elementRef,\n      this.viewportRuler,\n      this.document,\n      this.platform,\n      this.overlayContainer,\n    )\n      .withFlexibleDimensions(false)\n      .withPush(false);\n  }\n}\n","import {\n  ChangeDetectorRef,\n  Component,\n  ComponentFactoryResolver,\n  ComponentRef,\n  EmbeddedViewRef,\n  HostBinding,\n  Injector,\n  Input,\n  ViewChild,\n  ViewContainerRef,\n} from '@angular/core';\n\nimport { NbPosition } from './overlay-position';\nimport { NbComponentPortal, NbPortalInjector, NbPortalOutletDirective, NbTemplatePortal } from './mapping';\n\nexport interface NbRenderableContainer {\n\n  /**\n   * A renderContent method renders content with provided context.\n   * Naturally, this job has to be done by ngOnChanges lifecycle hook, but\n   * ngOnChanges hook will be triggered only if we update content or context properties\n   * through template property binding syntax. But in our case we're updating these properties programmatically.\n   * */\n  renderContent();\n}\n\n@Component({\n    template: '',\n    standalone: false\n})\nexport class NbPositionedContainerComponent {\n  @Input() position: NbPosition;\n\n  @HostBinding('class.nb-overlay-top')\n  get top(): boolean {\n    return this.position === NbPosition.TOP;\n  }\n\n  @HostBinding('class.nb-overlay-top-start')\n  get topStart(): boolean {\n    return this.position === NbPosition.TOP_START;\n  }\n\n  @HostBinding('class.nb-overlay-top-end')\n  get topEnd(): boolean {\n    return this.position === NbPosition.TOP_END;\n  }\n\n  @HostBinding('class.nb-overlay-right')\n  get right(): boolean {\n    return this.position === NbPosition.RIGHT || this.position === NbPosition.END;\n  }\n\n  @HostBinding('class.nb-overlay-end-top')\n  get endTop(): boolean {\n    return this.position === NbPosition.END_TOP;\n  }\n\n  @HostBinding('class.nb-overlay-end-bottom')\n  get endBottom(): boolean {\n    return this.position === NbPosition.END_BOTTOM;\n  }\n\n  @HostBinding('class.nb-overlay-bottom')\n  get bottom(): boolean {\n    return this.position === NbPosition.BOTTOM;\n  }\n\n  @HostBinding('class.nb-overlay-bottom-start')\n  get bottomStart(): boolean {\n    return this.position === NbPosition.BOTTOM_START;\n  }\n\n  @HostBinding('class.nb-overlay-bottom-end')\n  get bottomEnd(): boolean {\n    return this.position === NbPosition.BOTTOM_END;\n  }\n\n  @HostBinding('class.nb-overlay-left')\n  get left(): boolean {\n    return this.position === NbPosition.LEFT || this.position === NbPosition.START;\n  }\n\n  @HostBinding('class.nb-overlay-start-top')\n  get startTop(): boolean {\n    return this.position === NbPosition.START_TOP;\n  }\n\n  @HostBinding('class.nb-overlay-start-bottom')\n  get startBottom(): boolean {\n    return this.position === NbPosition.START_BOTTOM;\n  }\n}\n\n\n@Component({\n    selector: 'nb-overlay-container',\n    template: `\n    <div *ngIf=\"isStringContent\" class=\"primitive-overlay\">{{ content }}</div>\n    <ng-template nbPortalOutlet></ng-template>\n  `,\n    standalone: false\n})\nexport class NbOverlayContainerComponent {\n\n  // TODO static must be false as of Angular 9.0.0, issues/1514\n  @ViewChild(NbPortalOutletDirective, { static: true }) portalOutlet: NbPortalOutletDirective;\n\n  isAttached: boolean = false;\n\n  content: string;\n\n  constructor(protected vcr: ViewContainerRef,\n              protected injector: Injector, private changeDetectorRef: ChangeDetectorRef) {\n  }\n\n  get isStringContent(): boolean {\n    return !!this.content;\n  }\n\n  attachComponentPortal<T>(portal: NbComponentPortal<T>, context?: Object): ComponentRef<T> {\n    portal.injector = this.createChildInjector(portal.componentFactoryResolver);\n    const componentRef = this.portalOutlet.attachComponentPortal(portal);\n    if (context) {\n      Object.assign(componentRef.instance, context);\n    }\n    componentRef.changeDetectorRef.markForCheck();\n    componentRef.changeDetectorRef.detectChanges();\n    this.isAttached = true;\n    return componentRef;\n  }\n\n  attachTemplatePortal<C>(portal: NbTemplatePortal<C>): EmbeddedViewRef<C> {\n    const templateRef = this.portalOutlet.attachTemplatePortal(portal);\n    templateRef.detectChanges();\n    this.isAttached = true;\n    return templateRef;\n  }\n\n  attachStringContent(content: string) {\n    this.content = content;\n    this.changeDetectorRef.markForCheck();\n    this.changeDetectorRef.detectChanges();\n    this.isAttached = true;\n  }\n\n  detach() {\n    if (this.portalOutlet.hasAttached()) {\n      this.portalOutlet.detach();\n    }\n    this.attachStringContent(null);\n    this.isAttached = false;\n  }\n\n  protected createChildInjector(cfr: ComponentFactoryResolver): NbPortalInjector {\n    return new NbPortalInjector(this.injector, new WeakMap([\n      [ComponentFactoryResolver, cfr],\n    ]));\n  }\n}\n","import { ComponentFactoryResolver, ComponentRef, Injectable, TemplateRef, Type } from '@angular/core';\n\nimport {\n  NbComponentPortal,\n  NbComponentType,\n  NbOverlay,\n  NbOverlayConfig,\n  NbOverlayRef,\n} from './mapping';\nimport { NbScrollStrategyOptions } from '../adapter/block-scroll-strategy-adapter';\nimport { NbLayoutDirectionService } from '../../../services/direction.service';\n\n\nexport type NbOverlayContent = Type<any> | TemplateRef<any> | string;\n\nexport function patch<T>(container: ComponentRef<T>, containerContext: Object): ComponentRef<T> {\n  Object.assign(container.instance, containerContext);\n  container.changeDetectorRef.detectChanges();\n  return container;\n}\n\nexport function createContainer<T>(\n  ref: NbOverlayRef,\n  container: NbComponentType<T>,\n  context: Object,\n  componentFactoryResolver?: ComponentFactoryResolver,\n  ): ComponentRef<T> {\n  const containerRef = ref.attach(new NbComponentPortal(container, null, null, componentFactoryResolver));\n  patch(containerRef, context);\n  return containerRef;\n}\n\n@Injectable()\nexport class NbOverlayService {\n  constructor(protected overlay: NbOverlay, protected layoutDirection: NbLayoutDirectionService) {\n  }\n\n  get scrollStrategies(): NbScrollStrategyOptions {\n    return this.overlay.scrollStrategies;\n  }\n\n  create(config?: NbOverlayConfig): NbOverlayRef {\n    const overlayRef = this.overlay.create(config);\n    this.layoutDirection.onDirectionChange()\n      .subscribe(dir => overlayRef.setDirection(dir));\n    return overlayRef;\n  }\n}\n","import { Inject, Injectable, NgZone } from '@angular/core';\nimport { CdkScrollable, ScrollDispatcher } from '@angular/cdk/overlay';\nimport { merge, Observable } from 'rxjs';\n\nimport { NbPlatform } from '../platform/platform-service';\nimport { NbLayoutScrollService } from '../../../services/scroll.service';\nimport { NB_DOCUMENT } from '../../../theme.options';\n\n@Injectable()\nexport class NbScrollDispatcherAdapter extends ScrollDispatcher {\n  constructor(ngZone: NgZone,\n              platform: NbPlatform,\n              protected scrollService: NbLayoutScrollService,\n              @Inject(NB_DOCUMENT) document: any) {\n    super(ngZone, platform, document);\n  }\n\n  scrolled(auditTimeInMs?: number): Observable<CdkScrollable | void> {\n    return merge(\n      super.scrolled(auditTimeInMs),\n      this.scrollService.onScroll(),\n    );\n  }\n}\n\n","import { Inject, Injectable, NgZone } from '@angular/core';\nimport { BlockScrollStrategy, ScrollDispatcher, ScrollStrategyOptions } from '@angular/cdk/overlay';\n\nimport { NbLayoutScrollService } from '../../../services/scroll.service';\nimport { NB_DOCUMENT } from '../../../theme.options';\nimport { NbViewportRulerAdapter } from './viewport-ruler-adapter';\n\n\n/**\n * Overrides default block scroll strategy because default strategy blocks scrolling on the body only.\n * But Nebular has its own scrollable container - nb-layout. So, we need to block scrolling in it to.\n * */\n@Injectable()\nexport class NbBlockScrollStrategyAdapter extends BlockScrollStrategy {\n  constructor(@Inject(NB_DOCUMENT) document: any,\n              viewportRuler: NbViewportRulerAdapter,\n              protected scrollService: NbLayoutScrollService) {\n    super(viewportRuler, document);\n  }\n\n  enable() {\n    super.enable();\n    this.scrollService.scrollable(false);\n  }\n\n  disable() {\n    super.disable();\n    this.scrollService.scrollable(true);\n  }\n}\n\n@Injectable()\nexport class NbScrollStrategyOptions extends ScrollStrategyOptions {\n  constructor(protected scrollService: NbLayoutScrollService,\n              protected scrollDispatcher: ScrollDispatcher,\n              protected viewportRuler: NbViewportRulerAdapter,\n              protected ngZone: NgZone,\n              @Inject(NB_DOCUMENT) protected document) {\n    super(scrollDispatcher, viewportRuler, ngZone, document);\n  }\n\n  block = () => new NbBlockScrollStrategyAdapter(this.document, this.viewportRuler, this.scrollService);\n}\n\nexport type NbScrollStrategies = keyof Pick<NbScrollStrategyOptions, 'noop' | 'close' | 'block' | 'reposition'>;\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { OverlayContainer, ScrollDispatcher, ScrollStrategyOptions } from '@angular/cdk/overlay';\n\nimport { NbOverlayContainer } from '../overlay/mapping';\nimport { NbOverlayContainerAdapter } from './overlay-container-adapter';\nimport { NbScrollDispatcherAdapter } from './scroll-dispatcher-adapter';\nimport { NbViewportRulerAdapter } from './viewport-ruler-adapter';\nimport { NbBlockScrollStrategyAdapter, NbScrollStrategyOptions } from './block-scroll-strategy-adapter';\n\n\n@NgModule({})\nexport class NbCdkAdapterModule {\n  static forRoot(): ModuleWithProviders<NbCdkAdapterModule> {\n    return {\n      ngModule: NbCdkAdapterModule,\n      providers: [\n        NbViewportRulerAdapter,\n        NbOverlayContainerAdapter,\n        NbBlockScrollStrategyAdapter,\n        NbScrollDispatcherAdapter,\n        NbScrollStrategyOptions,\n        { provide: OverlayContainer, useExisting: NbOverlayContainerAdapter },\n        { provide: NbOverlayContainer, useExisting: NbOverlayContainerAdapter },\n        { provide: ScrollDispatcher, useExisting: NbScrollDispatcherAdapter },\n        { provide: ScrollStrategyOptions, useExisting: NbScrollStrategyOptions },\n      ],\n    };\n  }\n}\n","import { ComponentRef, Inject, Injectable } from '@angular/core';\nimport { EMPTY, fromEvent as observableFromEvent, merge as observableMerge, Observable, Subject } from 'rxjs';\nimport { debounceTime, delay, filter, map, repeat, share, switchMap, takeUntil, takeWhile } from 'rxjs/operators';\nimport { NB_DOCUMENT } from '../../../theme.options';\n\nexport type NbTriggerValues = 'noop' | 'click' | 'hover' | 'hint' | 'focus';\nexport enum NbTrigger {\n  NOOP = 'noop',\n  CLICK = 'click',\n  HOVER = 'hover',\n  HINT = 'hint',\n  FOCUS = 'focus',\n}\n\n/**\n * Provides entity with two event stream: show and hide.\n * Each stream provides different events depends on implementation.\n * We have three main trigger strategies: click, hint and hover.\n * */\nexport interface NbTriggerStrategy {\n  show$: Observable<never | Event>;\n  hide$: Observable<never | Event>;\n\n  destroy();\n}\n\n/**\n * TODO maybe we have to use renderer.listen instead of observableFromEvent?\n * Renderer provides capability use it in service worker, ssr and so on.\n * */\nexport abstract class NbTriggerStrategyBase implements NbTriggerStrategy {\n  destroy() {\n    this.destroyed$.next();\n  }\n\n  protected destroyed$ = new Subject<void>();\n\n  protected isNotOnHostOrContainer(element: Element): boolean {\n    return !this.isOnHost(element) && !this.isOnContainer(element);\n  }\n\n  protected isOnHostOrContainer(element: Element): boolean {\n    return this.isOnHost(element) || this.isOnContainer(element);\n  }\n\n  protected isOnHost(element: Element): boolean {\n    return this.host.contains(element);\n  }\n\n  protected isOnContainer(element: Element): boolean {\n    return this.container() && this.container().location.nativeElement.contains(element);\n  }\n\n  abstract show$: Observable<Event>;\n  abstract hide$: Observable<Event>;\n\n  constructor(\n    protected document: Document,\n    protected host: HTMLElement,\n    protected container: () => ComponentRef<any>,\n  ) {}\n}\n\n/**\n * Creates show and hide event streams.\n * Fires toggle event when the click was performed on the host element.\n * Fires close event when the click was performed on the document but\n * not on the host or container.\n * */\nexport class NbClickTriggerStrategy extends NbTriggerStrategyBase {\n  // since we should track click for both SHOW and HIDE event we firstly need to track the click and the state\n  // of the container and then later on decide should we hide it or show\n  // if we track the click & state separately this will case a behavior when the container is getting shown\n  // and then hidden right away\n  protected click$: Observable<[boolean, Event]> = observableFromEvent<Event>(this.document, 'click').pipe(\n    map((event: Event) => [!this.container() && this.isOnHost(event.target as Element), event] as [boolean, Event]),\n    share(),\n    takeUntil(this.destroyed$),\n  );\n\n  readonly show$: Observable<Event> = this.click$.pipe(\n    filter(([shouldShow]) => shouldShow),\n    map(([, event]) => event),\n    takeUntil(this.destroyed$),\n  );\n\n  readonly hide$: Observable<Event> = this.click$.pipe(\n    filter(([shouldShow, event]) => !shouldShow && !this.isOnContainer(event.target as Element)),\n    map(([, event]) => event),\n    takeUntil(this.destroyed$),\n  );\n}\n\n/**\n * Creates show and hide event streams.\n * Fires open event when a mouse hovers over the host element and stay over at least 100 milliseconds.\n * Fires close event when the mouse leaves the host element and stops out of the host and popover container.\n * */\nexport class NbHoverTriggerStrategy extends NbTriggerStrategyBase {\n  show$: Observable<Event> = observableFromEvent<Event>(this.host, 'mouseenter').pipe(\n    filter(() => !this.container()),\n    // this `delay & takeUntil & repeat` operators combination is a synonym for `conditional debounce`\n    // meaning that if one event occurs in some time after the initial one we won't react to it\n    delay(100),\n    // eslint-disable-next-line rxjs/no-unsafe-takeuntil\n    takeUntil(observableFromEvent(this.host, 'mouseleave')),\n    repeat(),\n    takeUntil(this.destroyed$),\n  );\n\n  hide$: Observable<Event> = observableFromEvent<Event>(this.host, 'mouseleave').pipe(\n    switchMap(() =>\n      observableFromEvent<Event>(this.document, 'mousemove').pipe(\n        debounceTime(100),\n        takeWhile(() => !!this.container()),\n        filter((event) => this.isNotOnHostOrContainer(event.target as Element)),\n      ),\n    ),\n    takeUntil(this.destroyed$),\n  );\n}\n\n/**\n * Creates show and hide event streams.\n * Fires open event when a mouse hovers over the host element and stay over at least 100 milliseconds.\n * Fires close event when the mouse leaves the host element.\n * */\nexport class NbHintTriggerStrategy extends NbTriggerStrategyBase {\n  show$: Observable<Event> = observableFromEvent<Event>(this.host, 'mouseenter').pipe(\n    // this `delay & takeUntil & repeat` operators combination is a synonym for `conditional debounce`\n    // meaning that if one event occurs in some time after the initial one we won't react to it\n    delay(100),\n    // eslint-disable-next-line rxjs/no-unsafe-takeuntil\n    takeUntil(observableFromEvent(this.host, 'mouseleave')),\n    repeat(),\n    takeUntil(this.destroyed$),\n  );\n\n  hide$: Observable<Event> = observableFromEvent(this.host, 'mouseleave').pipe(takeUntil(this.destroyed$));\n}\n\n/**\n * Creates show and hide event streams.\n * Fires open event when a focus is on the host element and stay over at least 100 milliseconds.\n * Fires close event when the focus leaves the host element.\n * */\nexport class NbFocusTriggerStrategy extends NbTriggerStrategyBase {\n  protected focusOut$: Observable<Event> = observableFromEvent<Event>(this.host, 'focusout').pipe(\n    switchMap(() =>\n      observableFromEvent<Event>(this.document, 'focusin').pipe(\n        takeWhile(() => !!this.container()),\n        filter((event) => this.isNotOnHostOrContainer(event.target as Element)),\n      ),\n    ),\n    takeUntil(this.destroyed$),\n  );\n\n  protected clickIn$: Observable<Event> = observableFromEvent<Event>(this.host, 'click').pipe(\n    filter(() => !this.container()),\n    takeUntil(this.destroyed$),\n  );\n\n  protected clickOut$: Observable<Event> = observableFromEvent<Event>(this.document, 'click').pipe(\n    filter(() => !!this.container()),\n    /**\n     * Event target of `click` could be different from `activeElement`.\n     * If during click you return focus to the host, it won't be opened.\n     */\n    filter((event) => {\n      if (this.isNotOnHostOrContainer(event.target as Element)) {\n        return this.isNotOnHostOrContainer(this.document.activeElement);\n      }\n      return false;\n    }),\n    takeUntil(this.destroyed$),\n  );\n\n  protected tabKeyPress$: Observable<Event> = observableFromEvent<Event>(this.document, 'keydown').pipe(\n    filter((event: Event) => (event as KeyboardEvent).keyCode === 9),\n    filter(() => !!this.container()),\n    takeUntil(this.destroyed$),\n  );\n\n  show$: Observable<Event> = observableMerge(observableFromEvent<Event>(this.host, 'focusin'), this.clickIn$).pipe(\n    filter(() => !this.container()),\n    debounceTime(100),\n    // eslint-disable-next-line rxjs/no-unsafe-takeuntil\n    takeUntil(observableFromEvent(this.host, 'focusout')),\n    repeat(),\n    takeUntil(this.destroyed$),\n  );\n\n  hide$ = observableMerge(this.focusOut$, this.tabKeyPress$, this.clickOut$).pipe(takeUntil(this.destroyed$));\n}\n\n/**\n * Creates empty show and hide event streams.\n * */\nexport class NbNoopTriggerStrategy extends NbTriggerStrategyBase {\n  show$: Observable<Event> = EMPTY;\n  hide$: Observable<Event> = EMPTY;\n}\n\n@Injectable()\nexport class NbTriggerStrategyBuilderService {\n  protected _host: HTMLElement;\n  protected _container: () => ComponentRef<any>;\n  protected _trigger: NbTrigger;\n\n  constructor(@Inject(NB_DOCUMENT) protected _document) {}\n\n  trigger(trigger: NbTrigger): this {\n    this._trigger = trigger;\n    return this;\n  }\n\n  host(host: HTMLElement): this {\n    this._host = host;\n    return this;\n  }\n\n  container(container: () => ComponentRef<any>): this {\n    this._container = container;\n    return this;\n  }\n\n  build(): NbTriggerStrategy {\n    switch (this._trigger) {\n      case NbTrigger.CLICK:\n        return new NbClickTriggerStrategy(this._document, this._host, this._container);\n      case NbTrigger.HINT:\n        return new NbHintTriggerStrategy(this._document, this._host, this._container);\n      case NbTrigger.HOVER:\n        return new NbHoverTriggerStrategy(this._document, this._host, this._container);\n      case NbTrigger.FOCUS:\n        return new NbFocusTriggerStrategy(this._document, this._host, this._container);\n      case NbTrigger.NOOP:\n        return new NbNoopTriggerStrategy(this._document, this._host, this._container);\n      default:\n        throw new Error('Trigger have to be provided');\n    }\n  }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { NbSharedModule } from '../../shared/shared.module';\nimport { NbA11yModule } from '../a11y/a11y.module';\nimport { NbCdkMappingModule } from './mapping';\nimport { NbPositionBuilderService } from './overlay-position';\nimport { NbOverlayContainerComponent, NbPositionedContainerComponent } from './overlay-container';\nimport { NbOverlayService } from './overlay-service';\nimport { NbCdkAdapterModule } from '../adapter/adapter.module';\nimport { NbPositionHelper } from './position-helper';\nimport { NbTriggerStrategyBuilderService } from './overlay-trigger';\n\n\n@NgModule({\n  imports: [\n    NbCdkMappingModule,\n    NbSharedModule,\n  ],\n  declarations: [\n    NbPositionedContainerComponent,\n    NbOverlayContainerComponent,\n  ],\n  exports: [\n    NbCdkMappingModule,\n    NbCdkAdapterModule,\n    NbOverlayContainerComponent,\n  ],\n})\nexport class NbOverlayModule {\n  static forRoot(): ModuleWithProviders<NbOverlayModule> {\n    return {\n      ngModule: NbOverlayModule,\n      providers: [\n        NbPositionBuilderService,\n        NbTriggerStrategyBuilderService,\n        NbOverlayService,\n        NbPositionHelper,\n        ...NbCdkMappingModule.forRoot().providers,\n        ...NbCdkAdapterModule.forRoot().providers,\n        ...NbA11yModule.forRoot().providers,\n      ],\n    };\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Injectable } from '@angular/core';\n\nimport { NbComponentOrCustomStatus, NbComponentStatus } from '../components/component-status';\n\n@Injectable()\nexport class NbStatusService {\n  readonly coreStatuses: NbComponentStatus[] = ['basic', 'primary', 'info', 'warning', 'danger', 'control'];\n\n  isCoreStatus(status: NbComponentOrCustomStatus): boolean {\n    return this.coreStatuses.includes(status as NbComponentStatus);\n  }\n\n  isCustomStatus(status: NbComponentOrCustomStatus): boolean {\n    if (this.isValidStatusString(status)) {\n      return !this.isCoreStatus(status);\n    }\n\n    return false;\n  }\n\n  getStatusClass(status: NbComponentOrCustomStatus): string | undefined {\n    if (this.isValidStatusString(status)) {\n      return `status-${status}`;\n    }\n\n    return undefined;\n  }\n\n  protected isValidStatusString(status: NbComponentOrCustomStatus): boolean {\n    return typeof status === 'string' && status.length > 0;\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule, ModuleWithProviders, PLATFORM_ID } from '@angular/core';\nimport { CommonModule, DOCUMENT, isPlatformBrowser } from '@angular/common';\n\nimport {\n  NB_BUILT_IN_JS_THEMES,\n  NB_MEDIA_BREAKPOINTS,\n  NbThemeOptions,\n  NB_THEME_OPTIONS,\n  NB_JS_THEMES,\n  NB_DOCUMENT,\n  NB_WINDOW,\n} from './theme.options';\nimport { NbThemeService } from './services/theme.service';\nimport { NbSpinnerService } from './services/spinner.service';\nimport { NbJSThemeOptions } from './services/js-themes/theme.options';\nimport { BUILT_IN_THEMES, NbJSThemesRegistry } from './services/js-themes-registry.service';\nimport {\n  DEFAULT_MEDIA_BREAKPOINTS,\n  NbMediaBreakpoint,\n  NbMediaBreakpointsService,\n} from './services/breakpoints.service';\nimport { NbLayoutDirectionService, NbLayoutDirection, NB_LAYOUT_DIRECTION } from './services/direction.service';\nimport { NbLayoutScrollService } from './services/scroll.service';\nimport { NbLayoutRulerService } from './services/ruler.service';\nimport { NbOverlayModule } from './components/cdk/overlay/overlay.module';\nimport { NbStatusService } from './services/status.service';\n\nexport function windowFactory(platformId: Object): Window | undefined {\n  if (isPlatformBrowser(platformId)) {\n    return window;\n  }\n\n  // Provide undefined to get the error when trying to access the window as it\n  // shouldn't be used outside the browser. Those who need to provide something\n  // instead of window (e.g. domino window when running in node) could override\n  // NB_WINDOW token.\n  return undefined;\n}\n\n@NgModule({\n  imports: [\n    CommonModule,\n  ],\n  exports: [\n  ],\n})\nexport class NbThemeModule {\n\n  // TODO: check the options (throw exception?)\n  /**\n   * Main Theme Module\n   *\n   * @param nbThemeOptions {NbThemeOptions} Main theme options\n   * @param nbJSThemes {NbJSThemeOptions[]} List of JS Themes, will be merged with default themes\n   * @param nbMediaBreakpoints {NbMediaBreakpoint} Available media breakpoints\n   * @param layoutDirection {NbLayoutDirection} Layout direction\n   *\n   * @returns {ModuleWithProviders}\n   */\n  static forRoot(nbThemeOptions: NbThemeOptions = { name: 'default' },\n                 nbJSThemes?: NbJSThemeOptions[],\n                 nbMediaBreakpoints?: NbMediaBreakpoint[],\n                 layoutDirection?: NbLayoutDirection): ModuleWithProviders<NbThemeModule> {\n\n    return {\n      ngModule: NbThemeModule,\n      providers: [\n        { provide: NB_THEME_OPTIONS, useValue: nbThemeOptions || {} },\n        { provide: NB_BUILT_IN_JS_THEMES, useValue: BUILT_IN_THEMES },\n        { provide: NB_JS_THEMES, useValue: nbJSThemes || [] },\n        { provide: NB_MEDIA_BREAKPOINTS, useValue: nbMediaBreakpoints || DEFAULT_MEDIA_BREAKPOINTS },\n        { provide: NB_DOCUMENT, useExisting: DOCUMENT },\n        { provide: NB_WINDOW, useFactory: windowFactory, deps: [ PLATFORM_ID ] },\n        NbJSThemesRegistry,\n        NbThemeService,\n        NbMediaBreakpointsService,\n        NbSpinnerService,\n        { provide: NB_LAYOUT_DIRECTION, useValue: layoutDirection || NbLayoutDirection.LTR },\n        NbLayoutDirectionService,\n        NbLayoutScrollService,\n        NbLayoutRulerService,\n        ...NbOverlayModule.forRoot().providers,\n        NbStatusService,\n      ],\n    };\n  }\n}\n","export class NbColorHelper {\n  static shade(color, weight) {\n    return NbColorHelper.mix('#000000', color, weight);\n  }\n\n  static tint(color, weight) {\n    return NbColorHelper.mix('#ffffff', color, weight);\n  }\n\n  static mix(color1, color2, weight) {\n    const d2h = (d) => d.toString(16);\n    const h2d = (h) => parseInt(h, 16);\n\n    let result = '#';\n    for (let i = 1; i < 7; i += 2) {\n      const firstPart = h2d(color1.substr(i, 2));\n      const secondPart = h2d(color2.substr(i, 2));\n      const resultPart = d2h(Math.floor(secondPart + (firstPart - secondPart) * (weight / 100.0)));\n      result += ('0' + resultPart).slice(-2);\n    }\n    return result;\n  }\n\n  static hexToRgbA(hex, alpha) {\n    let c;\n    if (/^#([A-Fa-f0-9]{3}){1,2}$/.test(hex)) {\n      c = hex.substring(1).split('');\n      if (c.length === 3) {\n        c = [c[0], c[0], c[1], c[1], c[2], c[2]];\n      }\n      c = '0x' + c.join('');\n      return 'rgba(' + [(c >> 16) & 255, (c >> 8) & 255, c & 255].join(',') + ',' + alpha + ')';\n    }\n    throw new Error('Bad Hex');\n  }\n}\n","import { NbIcon } from './icon';\n\nexport interface NbIcons {\n  [key: string]: NbIcon | string;\n}\n\nexport enum NbIconPackType  {\n  SVG = 'svg',\n  FONT = 'font',\n}\n\nexport interface NbIconPackParams {\n  packClass?: string,\n  [name: string]: any,\n}\n\nexport interface NbFontIconPackParams extends NbIconPackParams {\n  iconClassPrefix?: string,\n}\n\nexport interface NbIconPack {\n  name: string;\n  type: NbIconPackType;\n  icons: Map<string, NbIcon | string>;\n  params: NbIconPackParams,\n}\n","import { NbFontIconPackParams, NbIconPackParams } from './icon-pack';\n\nexport interface NbIconOptions {\n  [name: string]: any;\n}\n\nexport interface NbIcon {\n  getClasses(options?: NbIconOptions): string[];\n  getContent(options?: NbIconOptions): string;\n}\n\nexport class NbFontIcon implements NbIcon {\n\n  constructor(protected name, protected content: any, protected params: NbFontIconPackParams = {}) {}\n\n  getClasses(options?: NbIconOptions): string[] {\n    const classes = [];\n\n    if (this.params.packClass) {\n      classes.push(this.params.packClass);\n    }\n\n    const name = this.params.iconClassPrefix ? `${this.params.iconClassPrefix}-${this.name}` : this.name;\n    classes.push(name);\n    return classes;\n  }\n\n  getContent(options?: NbIconOptions): string {\n    return this.content;\n  }\n}\n\nexport class NbSvgIcon implements NbIcon {\n\n  constructor(protected name, protected content: any, protected params: NbIconPackParams = {}) {}\n\n  getClasses(options?: NbIconOptions): string[] {\n    const classes = [];\n\n    if (this.params.packClass) {\n      classes.push(this.params.packClass);\n    }\n    return classes;\n  }\n\n  getContent(options?: NbIconOptions): string {\n    return this.content;\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Injectable } from '@angular/core';\nimport { NbFontIconPackParams, NbIconPack, NbIconPackParams, NbIconPackType, NbIcons } from './icon-pack';\nimport { NbFontIcon, NbIcon, NbSvgIcon } from './icon';\n\nexport class NbIconDefinition {\n  name: string;\n  type: string;\n  pack: string;\n  icon: NbIcon;\n}\n\nfunction throwPackNotFoundError(name: string) {\n  throw Error(`Icon Pack '${name}' is not registered`);\n}\n\nfunction throwNoDefaultPackError() {\n  throw Error('Default pack is not registered.');\n}\n\nfunction throwWrongPackTypeError(name: string, type: string, desiredType: string) {\n  throw Error(`Pack '${name}' is not an '${desiredType}' Pack and its type is '${type}'`);\n}\n\n/**\n * This service allows to register multiple icon packs to use them later within `<nb-icon></nb-icon>` component.\n */\n@Injectable({ providedIn: 'root' })\nexport class NbIconLibraries {\n  protected packs: Map<string, NbIconPack> = new Map();\n  protected defaultPack: NbIconPack;\n\n  /**\n   * Registers new Svg icon pack\n   * @param {string} name\n   * @param {NbIcon} icons\n   * @param {NbIconPackParams} params\n   */\n  registerSvgPack(name: string, icons: NbIcons, params: NbIconPackParams = {}) {\n    this.packs.set(name, {\n      name,\n      icons: new Map(Object.entries(icons)),\n      params,\n      type: NbIconPackType.SVG,\n    });\n  }\n\n  /**\n   * Registers new font pack\n   * @param {string} name\n   * @param {NbIconPackParams} params\n   */\n  registerFontPack(name: string, params: NbFontIconPackParams = {}) {\n    this.packs.set(name, {\n      name,\n      params,\n      icons: new Map(),\n      type: NbIconPackType.FONT,\n    });\n  }\n\n  /**\n   * Returns pack by name\n   * @param {string} name\n   */\n  getPack(name: string): NbIconPack {\n    return this.packs.get(name);\n  }\n\n  /**\n   * Sets pack as a default\n   * @param {string} name\n   */\n  setDefaultPack(name: string) {\n    if (!this.packs.has(name)) {\n      throwPackNotFoundError(name);\n    }\n\n    this.defaultPack = this.packs.get(name);\n  }\n\n  /**\n   * Returns Svg icon\n   * @param {string} name\n   * @param {string} pack\n   *\n   * @returns NbIconDefinition\n   */\n  getSvgIcon(name: string, pack?: string): NbIconDefinition | null {\n    const iconsPack = pack ? this.getPackOrThrow(pack) : this.getDefaultPackOrThrow();\n\n    if (iconsPack.type !== NbIconPackType.SVG) {\n      throwWrongPackTypeError(iconsPack.name, iconsPack.type, 'SVG');\n    }\n\n    const icon = this.getIconFromPack(name, iconsPack);\n\n    if (!icon) {\n      return null;\n    }\n\n    return {\n      name,\n      pack: iconsPack.name,\n      type: NbIconPackType.SVG,\n      icon: this.createSvgIcon(name, icon, iconsPack.params),\n    };\n  }\n\n  /**\n   * Returns Font icon\n   * @param {string} name\n   * @param {string} pack\n   *\n   * @returns NbIconDefinition\n   */\n  getFontIcon(name: string, pack?: string): NbIconDefinition {\n    const iconsPack = pack ? this.getPackOrThrow(pack) : this.getDefaultPackOrThrow();\n\n    if (iconsPack.type !== NbIconPackType.FONT) {\n      throwWrongPackTypeError(iconsPack.name, iconsPack.type, 'Font');\n    }\n\n    const icon = this.getIconFromPack(name, iconsPack) ?? '';\n    const iconContent = iconsPack.params.ligature ? name : icon;\n\n    return {\n      name,\n      pack: iconsPack.name,\n      type: NbIconPackType.FONT,\n      icon: this.createFontIcon(name, iconContent, iconsPack.params),\n    };\n  }\n\n  /**\n   * Returns an icon\n   * @param {string} name\n   * @param {string} pack\n   *\n   * @returns NbIconDefinition\n   */\n  getIcon(name: string, pack?: string): NbIconDefinition | null {\n    const iconsPack = pack ? this.getPackOrThrow(pack) : this.getDefaultPackOrThrow();\n\n    if (iconsPack.type === NbIconPackType.SVG) {\n      return this.getSvgIcon(name, pack);\n    }\n\n    return this.getFontIcon(name, pack);\n  }\n\n  protected createSvgIcon(name: string, content: NbIcon | string, params: NbIconPackParams): NbSvgIcon {\n    return content instanceof NbSvgIcon ? content : new NbSvgIcon(name, content, params);\n  }\n\n  protected createFontIcon(name: string, content: NbIcon | string, params: NbFontIconPackParams): NbFontIcon {\n    return content instanceof NbFontIcon ? content : new NbFontIcon(name, content, params);\n  }\n\n  protected getPackOrThrow(name: string): NbIconPack {\n    const pack: NbIconPack = this.packs.get(name);\n    if (!pack) {\n      throwPackNotFoundError(name);\n    }\n    return pack;\n  }\n\n  protected getDefaultPackOrThrow(): NbIconPack {\n    if (!this.defaultPack) {\n      throwNoDefaultPackError();\n    }\n    return this.defaultPack;\n  }\n\n  protected getIconFromPack(name: string, pack: NbIconPack): NbIcon | string | null {\n    if (pack.icons.has(name)) {\n      return pack.icons.get(name);\n    }\n\n    return null;\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  HostBinding,\n  Input,\n  OnChanges,\n  OnInit,\n  Renderer2,\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { NbIconLibraries } from './icon-libraries';\n\nexport interface NbIconConfig {\n  icon: string;\n  pack?: string;\n  status?: NbComponentOrCustomStatus;\n  options?: { [name: string]: any };\n}\n\n/**\n * Icon component. Allows to render both `svg` and `font` icons.\n * Starting from Nebular 4.0 uses [Eva Icons](https://akveo.github.io/eva-icons/) pack by default.\n *\n * Basic icon example:\n * @stacked-example(Showcase, icon/icon-showcase.component)\n *\n * Icon configuration:\n *\n * ```html\n * <nb-icon icon=\"star\"></nb-icon>\n * ```\n * ### Installation\n *\n * By default Nebular comes without any pre-installed icon pack.\n * Starting with Nebular 4.0.0 we ship separate package called `@nebular/eva-icons`\n * which integrates SVG [Eva Icons](https://akveo.github.io/eva-icons/) pack to Nebular. To add it to your\n * project run:\n * ```sh\n * npm i eva-icons @nebular/eva-icons\n * ```\n * This command will install Eva Icons pack. Then register `NbEvaIconsModule` into your app module:\n * ```ts\n * import { NbEvaIconsModule } from '@nebular/eva-icons';\n *\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbEvaIconsModule,\n *   ],\n * })\n * export class AppModule { }\n * ```\n * Last thing, import `NbIconModule` to your feature module where you need to show an icon:\n * ```ts\n * import { NbIconModule } from '@nebular/theme';\n *\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbIconModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Icon can be colored using `status` input:\n * ```html\n * <nb-icon icon=\"star\" status=\"warning\"></nb-icon>\n * ```\n *\n * Colored icons:\n * @stacked-example(Colored Icons, icon/icon-colors.component)\n *\n * In case you need to specify an icon from a specific icon pack, this could be done using `pack` input property:\n * ```html\n * <nb-icon icon=\"star\" pack=\"font-awesome\"></nb-icon>\n * ```\n * Additional icon settings (if available by the icon pack) could be passed using `options` input:\n *\n * ```html\n * <nb-icon icon=\"star\" [options]=\"{ animation: { type: 'zoom' } }\"></nb-icon>\n * ```\n *\n * @styles\n *\n * icon-font-size:\n * icon-line-height:\n * icon-width:\n * icon-height:\n * icon-svg-vertical-align:\n * icon-basic-color:\n * icon-primary-color:\n * icon-info-color:\n * icon-success-color:\n * icon-warning-color:\n * icon-danger-color:\n * icon-control-color:\n */\n@Component({\n    selector: 'nb-icon',\n    styleUrls: [`./icon.component.scss`],\n    template: '',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbIconComponent implements NbIconConfig, OnChanges, OnInit {\n\n  protected iconDef;\n  protected prevClasses = [];\n\n  @HostBinding('innerHtml')\n  html: SafeHtml = '';\n\n  @HostBinding('class.status-primary')\n  get primary() {\n    return this.status === 'primary';\n  }\n\n  @HostBinding('class.status-info')\n  get info() {\n    return this.status === 'info';\n  }\n\n  @HostBinding('class.status-success')\n  get success() {\n    return this.status === 'success';\n  }\n\n  @HostBinding('class.status-warning')\n  get warning() {\n    return this.status === 'warning';\n  }\n\n  @HostBinding('class.status-danger')\n  get danger() {\n    return this.status === 'danger';\n  }\n\n  @HostBinding('class.status-basic')\n  get basic() {\n    return this.status === 'basic';\n  }\n\n  @HostBinding('class.status-control')\n  get control() {\n    return this.status === 'control';\n  }\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.status)) {\n      return [this.statusService.getStatusClass(this.status)];\n    }\n    return [];\n  }\n\n  /**\n   * Icon name\n   * @param {string} status\n   */\n  @Input() icon: string;\n\n  /**\n   * Icon pack name\n   * @param {string} status\n   */\n  @Input() pack: string;\n\n  /**\n   * Additional icon settings\n   * @param {[name: string]: any}\n   */\n  @Input() options: { [name: string]: any };\n\n  /**\n   * Icon status (adds specific styles):\n   * `basic`, `primary`, `info`, `success`, `warning`, `danger`, `control`\n   */\n  @Input() status?: NbComponentOrCustomStatus;\n\n  /**\n   * Sets all icon configurable properties via config object.\n   * If passed value is a string set icon name.\n   * @docs-private\n   */\n  @Input()\n  get config(): string | NbIconConfig {\n    return this._config;\n  }\n  set config(value: string | NbIconConfig) {\n    if (!value) {\n      return;\n    }\n\n    this._config = value;\n\n    if (typeof value === 'string') {\n      this.icon = value;\n    } else {\n      this.icon = value.icon;\n      this.pack = value.pack;\n      this.status = value.status;\n      this.options = value.options;\n    }\n  }\n  protected _config: string | NbIconConfig;\n\n  constructor(\n    protected sanitizer: DomSanitizer,\n    protected iconLibrary: NbIconLibraries,\n    protected el: ElementRef,\n    protected renderer: Renderer2,\n    protected statusService: NbStatusService,\n  ) {}\n\n  ngOnInit() {\n    this.iconDef = this.renderIcon(this.icon, this.pack, this.options);\n  }\n\n  ngOnChanges() {\n    const iconDef = this.iconLibrary.getIcon(this.icon, this.pack);\n    if (iconDef) {\n      this.renderIcon(this.icon, this.pack, this.options);\n    } else {\n      this.clearIcon();\n    }\n  }\n\n  renderIcon(name: string, pack?: string, options?: { [name: string]: any }) {\n    const iconDefinition = this.iconLibrary.getIcon(name, pack);\n\n    if (!iconDefinition) {\n      return undefined;\n    }\n\n    const content = iconDefinition.icon.getContent(options);\n    if (content) {\n      this.html = this.sanitizer.bypassSecurityTrustHtml(content);\n    }\n\n    this.assignClasses(iconDefinition.icon.getClasses(options));\n    return iconDefinition;\n  }\n\n  protected clearIcon(): void {\n    this.html = '';\n    this.assignClasses([]);\n  }\n\n  protected assignClasses(classes: string[]) {\n    this.prevClasses.forEach((className: string) => {\n      this.renderer.removeClass(this.el.nativeElement, className);\n    });\n\n    classes.forEach((className: string) => {\n      this.renderer.addClass(this.el.nativeElement, className);\n    });\n\n    this.prevClasses = classes;\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { NbIconComponent } from './icon.component';\nimport { NbIconLibraries } from './icon-libraries';\n\n@NgModule({\n  imports: [\n    CommonModule,\n  ],\n  declarations: [\n    NbIconComponent,\n  ],\n  exports: [\n    NbIconComponent,\n  ],\n})\nexport class NbIconModule {\n\n  private essentialsPackName = 'nebular-essentials';\n\n  constructor(private iconsLibrary: NbIconLibraries) {\n\n    // in case of consequent calls we don't need to enable `nebular-essentials` pack again\n    if (this.iconsLibrary.getPack(this.essentialsPackName)) {\n      return;\n    }\n\n    /* eslint-disable max-len */\n    this.iconsLibrary.registerSvgPack(this.essentialsPackName, {\n      'chevron-down-outline': '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\"><g data-name=\"Layer 2\"><g data-name=\"chevron-down\"><rect width=\"24\" height=\"24\" opacity=\"0\"/><path d=\"M12 15.5a1 1 0 0 1-.71-.29l-4-4a1 1 0 1 1 1.42-1.42L12 13.1l3.3-3.18a1 1 0 1 1 1.38 1.44l-4 3.86a1 1 0 0 1-.68.28z\"/></g></g></svg>',\n      'chevron-up-outline': '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\"><g data-name=\"Layer 2\"><g data-name=\"chevron-up\"><rect width=\"24\" height=\"24\" transform=\"rotate(180 12 12)\" opacity=\"0\"/><path d=\"M16 14.5a1 1 0 0 1-.71-.29L12 10.9l-3.3 3.18a1 1 0 0 1-1.41 0 1 1 0 0 1 0-1.42l4-3.86a1 1 0 0 1 1.4 0l4 4a1 1 0 0 1 0 1.42 1 1 0 0 1-.69.28z\"/></g></g></svg>',\n      'chevron-left-outline': '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\"><g data-name=\"Layer 2\"><g data-name=\"chevron-left\"><rect width=\"24\" height=\"24\" transform=\"rotate(90 12 12)\" opacity=\"0\"/><path d=\"M13.36 17a1 1 0 0 1-.72-.31l-3.86-4a1 1 0 0 1 0-1.4l4-4a1 1 0 1 1 1.42 1.42L10.9 12l3.18 3.3a1 1 0 0 1 0 1.41 1 1 0 0 1-.72.29z\"/></g></g></svg>',\n      'chevron-right-outline': '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\"><g data-name=\"Layer 2\"><g data-name=\"chevron-right\"><rect width=\"24\" height=\"24\" transform=\"rotate(-90 12 12)\" opacity=\"0\"/><path d=\"M10.5 17a1 1 0 0 1-.71-.29 1 1 0 0 1 0-1.42L13.1 12 9.92 8.69a1 1 0 0 1 0-1.41 1 1 0 0 1 1.42 0l3.86 4a1 1 0 0 1 0 1.4l-4 4a1 1 0 0 1-.7.32z\"/></g></g></svg>',\n      'checkmark-outline': '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\"><g data-name=\"Layer 2\"><g data-name=\"checkmark\"><rect width=\"24\" height=\"24\" opacity=\"0\"/><path d=\"M9.86 18a1 1 0 0 1-.73-.32l-4.86-5.17a1 1 0 1 1 1.46-1.37l4.12 4.39 8.41-9.2a1 1 0 1 1 1.48 1.34l-9.14 10a1 1 0 0 1-.73.33z\"/></g></g></svg>',\n      'paper-plane-outline': '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\"><g data-name=\"Layer 2\"><g data-name=\"paper-plane\"><rect width=\"24\" height=\"24\" opacity=\"0\"/><path d=\"M21 4a1.31 1.31 0 0 0-.06-.27v-.09a1 1 0 0 0-.2-.3 1 1 0 0 0-.29-.19h-.09a.86.86 0 0 0-.31-.15H20a1 1 0 0 0-.3 0l-18 6a1 1 0 0 0 0 1.9l8.53 2.84 2.84 8.53a1 1 0 0 0 1.9 0l6-18A1 1 0 0 0 21 4zm-4.7 2.29l-5.57 5.57L5.16 10zM14 18.84l-1.86-5.57 5.57-5.57z\"/></g></g></svg>',\n      'file-text-outline': '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\"><g data-name=\"Layer 2\"><g data-name=\"file-text\"><rect width=\"24\" height=\"24\" opacity=\"0\"/><path d=\"M15 16H9a1 1 0 0 0 0 2h6a1 1 0 0 0 0-2z\"/><path d=\"M9 14h3a1 1 0 0 0 0-2H9a1 1 0 0 0 0 2z\"/><path d=\"M19.74 8.33l-5.44-6a1 1 0 0 0-.74-.33h-7A2.53 2.53 0 0 0 4 4.5v15A2.53 2.53 0 0 0 6.56 22h10.88A2.53 2.53 0 0 0 20 19.5V9a1 1 0 0 0-.26-.67zM14 5l2.74 3h-2a.79.79 0 0 1-.74-.85zm3.44 15H6.56a.53.53 0 0 1-.56-.5v-15a.53.53 0 0 1 .56-.5H12v3.15A2.79 2.79 0 0 0 14.71 10H18v9.5a.53.53 0 0 1-.56.5z\"/></g></g></svg>',\n      'alert-triangle-outline': '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\"><g data-name=\"Layer 2\"><g data-name=\"alert-triangle\"><rect width=\"24\" height=\"24\" transform=\"rotate(90 12 12)\" opacity=\"0\"/><path d=\"M22.56 16.3L14.89 3.58a3.43 3.43 0 0 0-5.78 0L1.44 16.3a3 3 0 0 0-.05 3A3.37 3.37 0 0 0 4.33 21h15.34a3.37 3.37 0 0 0 2.94-1.66 3 3 0 0 0-.05-3.04zm-1.7 2.05a1.31 1.31 0 0 1-1.19.65H4.33a1.31 1.31 0 0 1-1.19-.65 1 1 0 0 1 0-1l7.68-12.73a1.48 1.48 0 0 1 2.36 0l7.67 12.72a1 1 0 0 1 .01 1.01z\"/><circle cx=\"12\" cy=\"16\" r=\"1\"/><path d=\"M12 8a1 1 0 0 0-1 1v4a1 1 0 0 0 2 0V9a1 1 0 0 0-1-1z\"/></g></g></svg>',\n      'question-mark-outline': '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\"><g data-name=\"Layer 2\"><g data-name=\"question-mark\"><rect width=\"24\" height=\"24\" transform=\"rotate(180 12 12)\" opacity=\"0\"/><path d=\"M17 9A5 5 0 0 0 7 9a1 1 0 0 0 2 0 3 3 0 1 1 3 3 1 1 0 0 0-1 1v2a1 1 0 0 0 2 0v-1.1A5 5 0 0 0 17 9z\"/><circle cx=\"12\" cy=\"19\" r=\"1\"/></g></g></svg>',\n      'email-outline': '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\"><g data-name=\"Layer 2\"><g data-name=\"email\"><rect width=\"24\" height=\"24\" opacity=\"0\"/><path d=\"M19 4H5a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3V7a3 3 0 0 0-3-3zm-.67 2L12 10.75 5.67 6zM19 18H5a1 1 0 0 1-1-1V7.25l7.4 5.55a1 1 0 0 0 .6.2 1 1 0 0 0 .6-.2L20 7.25V17a1 1 0 0 1-1 1z\"/></g></g></svg>',\n      'flash-outline': '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\"><g data-name=\"Layer 2\"><g data-name=\"flash\"><rect width=\"24\" height=\"24\" opacity=\"0\"/><path d=\"M11.11 23a1 1 0 0 1-.34-.06 1 1 0 0 1-.65-1.05l.77-7.09H5a1 1 0 0 1-.83-1.56l7.89-11.8a1 1 0 0 1 1.17-.38 1 1 0 0 1 .65 1l-.77 7.14H19a1 1 0 0 1 .83 1.56l-7.89 11.8a1 1 0 0 1-.83.44zM6.87 12.8H12a1 1 0 0 1 .74.33 1 1 0 0 1 .25.78l-.45 4.15 4.59-6.86H12a1 1 0 0 1-1-1.11l.45-4.15z\"/></g></g></svg>',\n      'search-outline': '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\"><g data-name=\"Layer 2\"><g data-name=\"search\"><rect width=\"24\" height=\"24\" opacity=\"0\"/><path d=\"M20.71 19.29l-3.4-3.39A7.92 7.92 0 0 0 19 11a8 8 0 1 0-8 8 7.92 7.92 0 0 0 4.9-1.69l3.39 3.4a1 1 0 0 0 1.42 0 1 1 0 0 0 0-1.42zM5 11a6 6 0 1 1 6 6 6 6 0 0 1-6-6z\"/></g></g></svg>',\n      'close-outline': '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\"><g data-name=\"Layer 2\"><g data-name=\"close\"><rect width=\"24\" height=\"24\" transform=\"rotate(180 12 12)\" opacity=\"0\"/><path d=\"M13.41 12l4.3-4.29a1 1 0 1 0-1.42-1.42L12 10.59l-4.29-4.3a1 1 0 0 0-1.42 1.42l4.3 4.29-4.3 4.29a1 1 0 0 0 0 1.42 1 1 0 0 0 1.42 0l4.29-4.3 4.29 4.3a1 1 0 0 0 1.42 0 1 1 0 0 0 0-1.42z\"/></g></g></svg>',\n      'collapse-outline': '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\"><g data-name=\"Layer 2\"><g data-name=\"collapse\"><rect width=\"24\" height=\"24\" transform=\"rotate(180 12 12)\" opacity=\"0\"/><path d=\"M19 9h-2.58l3.29-3.29a1 1 0 1 0-1.42-1.42L15 7.57V5a1 1 0 0 0-1-1 1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h5a1 1 0 0 0 0-2z\"/><path d=\"M10 13H5a1 1 0 0 0 0 2h2.57l-3.28 3.29a1 1 0 0 0 0 1.42 1 1 0 0 0 1.42 0L9 16.42V19a1 1 0 0 0 1 1 1 1 0 0 0 1-1v-5a1 1 0 0 0-1-1z\"/></g></g></svg>',\n      'expand-outline': '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\"><g data-name=\"Layer 2\"><g data-name=\"expand\"><rect width=\"24\" height=\"24\" transform=\"rotate(180 12 12)\" opacity=\"0\"/><path d=\"M20 5a1 1 0 0 0-1-1h-5a1 1 0 0 0 0 2h2.57l-3.28 3.29a1 1 0 0 0 0 1.42 1 1 0 0 0 1.42 0L18 7.42V10a1 1 0 0 0 1 1 1 1 0 0 0 1-1z\"/><path d=\"M10.71 13.29a1 1 0 0 0-1.42 0L6 16.57V14a1 1 0 0 0-1-1 1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h5a1 1 0 0 0 0-2H7.42l3.29-3.29a1 1 0 0 0 0-1.42z\"/></g></g></svg>',\n      'minus-outline': '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" width=\"100%\" height=\"100%\" viewBox=\"0 0 24 24\"><g data-name=\"Layer 2\"><g data-name=\"minus\"><rect width=\"24\" height=\"24\" transform=\"rotate(180 12 12)\" opacity=\"0\"/><path d=\"M19 13H5a1 1 0 0 1 0-2h14a1 1 0 0 1 0 2z\"/></g></g></svg>',\n      'minus-bold-outline': '<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\" fill=\"currentColor\" viewBox=\"0 0 8 2\" width=\"100%\" height=\"100%\"><defs><rect id=\"nb-mbo\" y=\"3\" width=\"8\" height=\"2\" rx=\"1\"/></defs><use xlink:href=\"#nb-mbo\" transform=\"translate(0 -3)\" fill-rule=\"evenodd\"/></svg>',\n      'checkmark-bold-outline': '<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\" fill=\"currentColor\" viewBox=\"0 0 8 7\" width=\"100%\" height=\"100%\"><defs><path id=\"nb-cbo\" d=\"M6.039 1.43a1.11 1.11 0 0 1 1.517-.228c.483.342.588.998.234 1.466L4.431 7.1a1 1 0 0 1-1.492.115L.317 4.677a1.023 1.023 0 0 1 .002-1.483 1.113 1.113 0 0 1 1.535.002l1.641 1.59L6.04 1.428z\"/></defs><use xlink:href=\"#nb-cbo\" transform=\"translate(0 -1)\" fill-rule=\"evenodd\"/></svg>',\n      'arrow-back': '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><g data-name=\"Layer 2\"><g data-name=\"arrow-back\"><rect width=\"24\" height=\"24\" transform=\"rotate(90 12 12)\" opacity=\"0\"/><path d=\"M19 11H7.14l3.63-4.36a1 1 0 1 0-1.54-1.28l-5 6a1.19 1.19 0 0 0-.09.15c0 .05 0 .08-.07.13A1 1 0 0 0 4 12a1 1 0 0 0 .07.36c0 .05 0 .08.07.13a1.19 1.19 0 0 0 .09.15l5 6A1 1 0 0 0 10 19a1 1 0 0 0 .64-.23 1 1 0 0 0 .13-1.41L7.14 13H19a1 1 0 0 0 0-2z\"/></g></g></svg>',\n    });\n    /* eslint-enable max-len */\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, Input, HostBinding } from '@angular/core';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { NbComponentSize } from '../component-size';\nimport { NbComponentOrCustomStatus, NbComponentStatus } from '../component-status';\n\n/**\n * Component intended to be used within the `<nb-card>` component.\n * It adds styles for a preset header section.\n *\n * @styles\n *\n * card-header-text-color:\n * card-header-text-font-family:\n * card-header-text-font-size:\n * card-header-text-font-weight:\n * card-header-text-line-height:\n * card-header-basic-background-color:\n * card-header-basic-text-color:\n * card-header-primary-background-color:\n * card-header-primary-text-color:\n * card-header-info-background-color:\n * card-header-info-text-color:\n * card-header-success-background-color:\n * card-header-success-text-color:\n * card-header-warning-background-color:\n * card-header-warning-text-color:\n * card-header-danger-background-color:\n * card-header-danger-text-color:\n * card-header-control-background-color:\n * card-header-control-text-color:\n */\n@Component({\n    selector: 'nb-card-header',\n    template: `<ng-content></ng-content>`,\n    standalone: false\n})\nexport class NbCardHeaderComponent {\n}\n\n/**\n * Component intended to be used within  the `<nb-card>` component.\n * Adds styles for a preset body section.\n */\n@Component({\n    selector: 'nb-card-body',\n    template: `<ng-content></ng-content>`,\n    standalone: false\n})\nexport class NbCardBodyComponent {\n}\n\n/**\n * Component intended to be used within  the `<nb-card>` component.\n * Adds styles for a preset footer section.\n */\n@Component({\n    selector: 'nb-card-footer',\n    template: `<ng-content></ng-content>`,\n    standalone: false\n})\nexport class NbCardFooterComponent {\n}\n\n/**\n * Basic content container component.\n *\n * Basic card example:\n * @stacked-example(Showcase, card/card-showcase.component)\n *\n * Basic card configuration:\n *\n * ```html\n * <nb-card>\n *   <nb-card-body>\n *     Card\n *   </nb-card-body>\n * </nb-card>\n * ```\n *\n * ### Installation\n *\n * Import `NbCardModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbCardModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Card with header and footer:\n * @stacked-example(With Header & Footer, card/card-full.component)\n *\n * Most of the time main card content goes to `nb-card-body`,\n * so it is styled and aligned in accordance with the header and footer.\n * In case you need a higher level of control, you can pass contend directly to `nb-card`,\n * so `nb-card-body` styling will not be applied.\n *\n * Consider an example with `nb-list` component:\n * @stacked-example(Card with list, card/card-without-body.component)\n *\n * Colored cards could be simply configured by providing a `status` property:\n * @stacked-example(Colored Card, card/card-colors.component)\n *\n * It is also possible to assign an `accent` property for a slight card highlight\n * as well as combine it with `status`:\n * @stacked-example(Accent Card, card/card-accents.component)\n *\n * Cards of smaller sizes could be combined and put on the same row with a bigger card so they have the same heights.\n * @stacked-example(Card sizes combinations, card/card-sizes-combinations.component)\n *\n * @additional-example(Multiple Sizes, card/card-sizes.component)\n *\n * @styles\n *\n * card-background-color:\n * card-text-color:\n * card-text-font-family:\n * card-text-font-size:\n * card-text-font-weight:\n * card-text-line-height:\n * card-border-width:\n * card-border-style:\n * card-border-color:\n * card-border-radius:\n * card-padding:\n * card-shadow:\n * card-divider-color:\n * card-divider-style:\n * card-divider-width:\n * card-height-tiny:\n * card-height-small:\n * card-height-medium:\n * card-height-large:\n * card-height-giant:\n * card-margin-bottom:\n * card-scrollbar-color:\n * card-scrollbar-background-color:\n * card-scrollbar-width:\n */\n@Component({\n    selector: 'nb-card',\n    styleUrls: ['./card.component.scss'],\n    template: `\n    <ng-content select=\"nb-card-header\"></ng-content>\n    <ng-content select=\"nb-card-body\"></ng-content>\n    <ng-content></ng-content>\n    <ng-content select=\"nb-card-footer\"></ng-content>\n  `,\n    standalone: false\n})\nexport class NbCardComponent {\n\n  /**\n   * Card size, available sizes:\n   * tiny, small, medium, large, giant\n   */\n  @Input()\n  get size(): '' | NbComponentSize {\n    return this._size;\n  }\n  set size(value: '' | NbComponentSize) {\n    this._size = value;\n  }\n  _size: '' | NbComponentSize = '';\n\n  /**\n   * Card status:\n   * `basic`, `primary`, `info`, `success`, `warning`, `danger`, `control`\n   */\n  @Input()\n  status: '' | NbComponentOrCustomStatus = '';\n\n  /**\n   * Card accent (color of the top border):\n   * `basic`, `primary`, `info`, `success`, `warning`, `danger`, `control`\n   */\n  @Input()\n  accent: '' | NbComponentStatus = '';\n\n  @HostBinding('class.size-tiny')\n  get tiny() {\n    return this.size === 'tiny';\n  }\n\n  @HostBinding('class.size-small')\n  get small() {\n    return this.size === 'small';\n  }\n\n  @HostBinding('class.size-medium')\n  get medium() {\n    return this.size === 'medium';\n  }\n\n  @HostBinding('class.size-large')\n  get large() {\n    return this.size === 'large';\n  }\n\n  @HostBinding('class.size-giant')\n  get giant() {\n    return this.size === 'giant';\n  }\n\n  @HostBinding('class.status-primary')\n  get primary() {\n    return this.status === 'primary';\n  }\n\n  @HostBinding('class.status-info')\n  get info() {\n    return this.status === 'info';\n  }\n\n  @HostBinding('class.status-success')\n  get success() {\n    return this.status === 'success';\n  }\n\n  @HostBinding('class.status-warning')\n  get warning() {\n    return this.status === 'warning';\n  }\n\n  @HostBinding('class.status-danger')\n  get danger() {\n    return this.status === 'danger';\n  }\n\n  @HostBinding('class.status-basic')\n  get basic() {\n    return this.status === 'basic';\n  }\n\n  @HostBinding('class.status-control')\n  get control() {\n    return this.status === 'control';\n  }\n\n  @HostBinding('class.accent')\n  get hasAccent() {\n    return this.accent;\n  }\n\n  @HostBinding('class.accent-primary')\n  get primaryAccent() {\n    return this.accent === 'primary';\n  }\n\n  @HostBinding('class.accent-info')\n  get infoAccent() {\n    return this.accent === 'info';\n  }\n\n  @HostBinding('class.accent-success')\n  get successAccent() {\n    return this.accent === 'success';\n  }\n\n  @HostBinding('class.accent-warning')\n  get warningAccent() {\n    return this.accent === 'warning';\n  }\n\n  @HostBinding('class.accent-danger')\n  get dangerAccent() {\n    return this.accent === 'danger';\n  }\n\n  @HostBinding('class.accent-basic')\n  get basicAccent() {\n    return this.accent === 'basic';\n  }\n\n  @HostBinding('class.accent-control')\n  get controlAccent() {\n    return this.accent === 'control';\n  }\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.status)) {\n      return [this.statusService.getStatusClass(this.status)];\n    }\n    return [];\n  }\n\n  constructor(protected statusService: NbStatusService) {\n  }\n}\n","import { Component, Input, HostBinding } from '@angular/core';\n\n/**\n *\n * Reveal card example:\n * @stacked-example(My example, reveal-card/reveal-card-showcase.component)\n *\n * As a content Reveal card accepts two instances of `nb-card` - for front and back sides.\n *\n * Basic reveal card configuration:\n *\n * ```html\n * <nb-reveal-card>\n *   <nb-card-front>\n *     <nb-card>\n *       <nb-card-body>\n *         Front\n *       </nb-card-body>\n *     </nb-card>\n *   </nb-card-front>\n *   <nb-card-back>\n *     <nb-card>\n *       <nb-card-body>\n *         Back\n *       </nb-card-body>\n *     </nb-card>\n *   </nb-card-back>\n * </nb-reveal-card>\n * ```\n *\n * ### Installation\n *\n * Import `NbCardModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbCardModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Reveal Card with header and footer:\n * @stacked-example(With Header & Footer, reveal-card/reveal-card-full.component)\n *\n * Colored reveal-cards could be simply configured by providing a `status` property:\n * @stacked-example(Colored Card, reveal-card/reveal-card-colors.component)\n *\n * It is also possible to assign an `accent` property for a slight card highlight\n * as well as combine it with `status`:\n * @stacked-example(Accent Card, reveal-card/reveal-card-accents.component)\n *\n * @additional-example(Multiple Sizes, reveal-card/reveal-card-sizes.component)\n */\n@Component({\n    selector: 'nb-reveal-card',\n    styleUrls: ['./reveal-card.component.scss'],\n    template: `\n    <ng-content select=\"nb-card-front\"></ng-content>\n    <div class=\"second-card-container\">\n      <ng-content select=\"nb-card-back\"></ng-content>\n    </div>\n    <a *ngIf=\"showToggleButton\" class=\"reveal-button\" (click)=\"toggle()\">\n      <nb-icon icon=\"chevron-down-outline\" pack=\"nebular-essentials\" aria-hidden=\"true\"></nb-icon>\n    </a>\n  `,\n    standalone: false\n})\nexport class NbRevealCardComponent {\n  /**\n   * Reveal state\n   * @type boolean\n   */\n  @Input()\n  @HostBinding('class.revealed')\n  revealed: boolean = false;\n\n  /**\n   * Show/hide toggle button to be able to control toggle from your code\n   * @type {boolean}\n   */\n  @Input() showToggleButton = true;\n\n  toggle() {\n    this.revealed = !this.revealed;\n  }\n}\n","import { Component, Input, HostBinding } from '@angular/core';\n\n/**\n *\n * Flip card example:\n * @stacked-example(Showcase, flip-card/flip-card-showcase.component)\n *\n * As a content Flip card accepts two instances of `nb-card` - for front and back sides.\n *\n * Basic flip card configuration:\n *\n * ```html\n * <nb-flip-card>\n *   <nb-card-front>\n *     <nb-card>\n *       <nb-card-body>\n *         Front\n *       </nb-card-body>\n *     </nb-card>\n *   </nb-card-front>\n *   <nb-card-back>\n *     <nb-card>\n *       <nb-card-body>\n *         Back\n *       </nb-card-body>\n *     </nb-card>\n *   </nb-card-back>\n * </nb-flip-card>\n * ```\n *\n * ### Installation\n *\n * Import `NbCardModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbCardModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Flip Card with header and footer:\n * @stacked-example(With Header & Footer, flip-card/flip-card-full.component.ts)\n *\n * Colored flip-cards could be simply configured by providing a `status` property:\n * @stacked-example(Colored Card, flip-card/flip-card-colors.component)\n *\n * It is also possible to assign an `accent` property for a slight card highlight\n * as well as combine it with `status`:\n * @stacked-example(Accent Card, flip-card/flip-card-accents.component)\n *\n * @additional-example(Multiple Sizes, flip-card/flip-card-sizes.component)\n *\n */\n@Component({\n    selector: 'nb-flip-card',\n    styleUrls: ['./flip-card.component.scss'],\n    template: `\n    <div class=\"flipcard-body\">\n      <div class=\"front-container\">\n        <ng-content select=\"nb-card-front\"></ng-content>\n        <a *ngIf=\"showToggleButton\" class=\"flip-button\" (click)=\"toggle()\">\n          <nb-icon icon=\"chevron-left-outline\" pack=\"nebular-essentials\" aria-hidden=\"true\"></nb-icon>\n        </a>\n      </div>\n      <div class=\"back-container\">\n        <ng-content select=\"nb-card-back\"></ng-content>\n        <a *ngIf=\"showToggleButton\" class=\"flip-button\" (click)=\"toggle()\">\n          <nb-icon icon=\"chevron-left-outline\" pack=\"nebular-essentials\" aria-hidden=\"true\"></nb-icon>\n        </a>\n      </div>\n    </div>\n  `,\n    standalone: false\n})\nexport class NbFlipCardComponent {\n  /**\n   * Flip state\n   * @type boolean\n   */\n  @Input()\n  @HostBinding('class.flipped')\n  flipped: boolean = false;\n\n  /**\n   * Show/hide toggle button to be able to control toggle from your code\n   * @type {boolean}\n   */\n  @Input() showToggleButton = true;\n\n  toggle() {\n    this.flipped = !this.flipped;\n  }\n}\n","import { Component } from '@angular/core';\n\n/**\n * Component intended to be used within the `<nb-flip-card>` and `<nb-reveal-card>` components.\n *\n * Use it as a container for the front card.\n */\n@Component({\n    selector: 'nb-card-front',\n    template: '<ng-content select=\"nb-card\"></ng-content>',\n    standalone: false\n})\nexport class NbCardFrontComponent { }\n\n/**\n * Component intended to be used within the `<nb-flip-card>` and `<nb-reveal-card>` components.\n *\n * Use it as a container for the back card.\n */\n@Component({\n    selector: 'nb-card-back',\n    template: '<ng-content select=\"nb-card\"></ng-content>',\n    standalone: false\n})\nexport class NbCardBackComponent { }\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\nimport { NbIconModule } from '../icon/icon.module';\nimport {\n  NbCardComponent,\n  NbCardBodyComponent,\n  NbCardFooterComponent,\n  NbCardHeaderComponent,\n} from './card.component';\n\nimport { NbRevealCardComponent } from './reveal-card/reveal-card.component';\nimport { NbFlipCardComponent } from './flip-card/flip-card.component';\nimport { NbCardFrontComponent, NbCardBackComponent } from './shared/shared.component';\n\nconst NB_CARD_COMPONENTS = [\n  NbCardComponent,\n  NbCardBodyComponent,\n  NbCardFooterComponent,\n  NbCardHeaderComponent,\n  NbRevealCardComponent,\n  NbFlipCardComponent,\n  NbCardFrontComponent,\n  NbCardBackComponent,\n];\n\n@NgModule({\n  imports: [\n    NbSharedModule,\n    NbIconModule,\n  ],\n  declarations: [\n    ...NB_CARD_COMPONENTS,\n  ],\n  exports: [\n    ...NB_CARD_COMPONENTS,\n  ],\n})\nexport class NbCardModule { }\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { EventEmitter } from '@angular/core';\n\nexport interface NbCalendarDay {\n  name: string;\n  isHoliday: boolean;\n}\n\nexport type NbCalendarViewModeValues = 'year' | 'month' | 'date';\nexport enum NbCalendarViewMode {\n  YEAR = 'year',\n  MONTH = 'month',\n  DATE = 'date',\n}\n\nexport type NbCalendarSizeValues = 'medium' | 'large';\nexport enum NbCalendarSize {\n  MEDIUM = 'medium',\n  LARGE = 'large',\n}\n\nexport interface NbCalendarCell<D, T> {\n  date: D;\n  select: EventEmitter<D>;\n  selectedValue?: T;\n  visibleDate?: D;\n  min?: D;\n  max?: D;\n  filter?: (D) => boolean;\n  size?: NbCalendarSize;\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nexport type NbNullableInput = string | null | undefined;\nexport type NbBooleanInput = boolean | NbNullableInput;\n\nexport function convertToBoolProperty(val: any): boolean {\n  if (typeof val === 'string') {\n    val = val.toLowerCase().trim();\n\n    return val === 'true' || val === '';\n  }\n\n  return !!val;\n}\n\nexport function getElementHeight(el) {\n  /**\n   *\n   * TODO: Move helpers in separate common module.\n   * TODO: Provide window through di token.\n   * */\n  const style = window.getComputedStyle(el);\n  const marginTop = parseInt(style.getPropertyValue('margin-top'), 10);\n  const marginBottom = parseInt(style.getPropertyValue('margin-bottom'), 10);\n  return el.offsetHeight + marginTop + marginBottom;\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { TranslationWidth } from '@angular/common';\n\nexport const enum NbDayPeriod {\n  AM = 'AM', // before midday, 0 - 11 in 24-hour format.\n  PM = 'PM', // after midday, 12 - 23 in 24-hour format.\n}\n\nexport abstract class NbDateService<D> {\n  readonly DAYS_IN_WEEK: number = 7;\n\n  /**\n   * Number of hours in AM/PM day periods.\n   **/\n  readonly HOURS_IN_DAY_PERIOD = 12;\n\n  protected locale: string;\n\n  setLocale(locale: any) {\n    this.locale = locale;\n  }\n\n  /**\n   * Checks if the date is between the start date and the end date.\n   * */\n  isBetween(date: D, start: D, end: D): boolean {\n    return this.compareDates(date, start) > 0 && this.compareDates(date, end) < 0;\n  };\n\n  /**\n   * Checks is two dates have the same day.\n   * */\n  isSameDaySafe(date1: D, date2: D): boolean {\n    return date1 && date2 && this.isSameDay(date1, date2);\n  };\n\n  /**\n   * Checks is two dates have the same month.\n   * */\n  isSameMonthSafe(date1: D, date2: D): boolean {\n    return date1 && date2 && this.isSameMonth(date1, date2);\n  }\n\n  /**\n   * Checks is two dates have the same year.\n   * */\n  isSameYearSafe(date1: D, date2: D): boolean {\n    return date1 && date2 && this.isSameYear(date1, date2);\n  }\n\n  /**\n   * Returns date with selected hour\n   * */\n  abstract setHours(date: D, hour: number): D;\n\n  /**\n   * Returns date with selected minute\n   * */\n  abstract setMinutes(date: D, minute: number): D;\n\n  /**\n   * Returns date with selected second\n   * */\n  abstract setSeconds(date: D, second: number): D;\n\n  /**\n   * Returns date with selected milliseconds\n   * */\n  abstract setMilliseconds(date: D, second: number): D;\n  /**\n   * Returns true if date string is valid date string according to the provided format.\n   * */\n  abstract isValidDateString(date: string, format: string): boolean;\n\n  /**\n   * Returns true if time string is valid time string according to the provided format.\n   * */\n  abstract isValidTimeString(date: string, format: string): boolean;\n\n  /**\n   * Returns today date.\n   * */\n  abstract today(): D;\n\n  /**\n   * Gets the time format based on locale\n   * */\n  abstract getLocaleTimeFormat(): string;\n\n  /**\n   * Gets the date of the month component of the given date.\n   */\n  abstract getDate(date: D): number;\n\n  /**\n   * Gets the hour component of the given date.\n   */\n  abstract getHours(date: D): number;\n\n  /**\n   * Gets the minute component of the given date.\n   */\n  abstract getMinutes(date: D): number;\n\n  /**\n   * Gets the second component of the given date.\n   */\n  abstract getSeconds(date: D): number;\n\n  /**\n   * Gets the second component of the given date.\n   */\n  abstract getMilliseconds(date: D): number;\n\n  /**\n   * Gets the month component of the given date.\n   * */\n  abstract getMonth(date: D): number;\n\n  /**\n   * Gets the year component of the given date.\n   * */\n  abstract getYear(date: D): number;\n\n  /**\n   * Returns day of the week of the given date.\n   */\n  abstract getDayOfWeek(date: D): number;\n\n  /**\n   * Returns first day of the week, it can be 1 if week starts from monday\n   * and 0 if from sunday and so on.\n   * */\n  abstract getFirstDayOfWeek(): number;\n\n  /**\n   * Returns localized month name by date and style.\n   * */\n  abstract getMonthName(date: D, style?: TranslationWidth): string;\n\n  /**\n   * Returns localized month name by month index and style.\n   * */\n  abstract getMonthNameByIndex(month: number, style?: TranslationWidth): string;\n\n  /**\n   * Returns localized days names.\n   * */\n  abstract getDayOfWeekNames(style?: TranslationWidth): string[];\n\n  /**\n   * Parses the date string according to the passed format.\n   * */\n  abstract parse(date: string, format: string): D;\n\n  /**\n   * Transforms the date to the string according to the passed format.\n   * */\n  abstract format(date: D, format: string): string;\n\n  /**\n   * Creates new date from year, month and date.\n   * */\n  abstract createDate(year: number, month: number, date: number): D;\n\n  /**\n   * Checks is two dates have the same year.\n   * */\n  abstract isSameYear(date1: D, date2: D): boolean;\n\n  /**\n   * Checks is two dates have the same month.\n   * */\n  abstract isSameMonth(date1: D, date2: D): boolean;\n\n  /**\n   * Checks is two dates have the same day.\n   * */\n  abstract isSameDay(date1: D, date2: D): boolean;\n\n  /**\n   * Compares two dates.\n   * Returns 0 if dates are the same.\n   * Returns 1 if the first date is greater than the second.\n   * Returns -1 if the second date is greater than the first.\n   * */\n  abstract compareDates(date1: D, date2: D): number;\n\n  /**\n   * Clones passed date.\n   * */\n  abstract clone(date: D): D;\n\n  /**\n   * Creates the same date but with day equals to 1.\n   * */\n  abstract getMonthStart(date: D): D;\n\n  /**\n   * Creates the same date but with day equals to the last day in this month.\n   * */\n  abstract getMonthEnd(date: D): D;\n\n  /**\n   * Creates the same date but with month equals to 0 and day equals to 1.\n   * */\n  abstract getYearStart(date: D): D;\n\n  /**\n   * Creates the same date but with month equals to 11 and day equals to 31.\n   * */\n  abstract getYearEnd(date: D): D;\n\n  /**\n   * Returns number of days in the date.\n   * */\n  abstract getNumberOfDaysInMonth(date: D): number;\n\n  /**\n   * Returns date with added number of days.\n   * */\n  abstract addDay(date: D, days: number): D;\n\n  /**\n   * Returns date with added number of months.\n   * */\n  abstract addMonth(date: D, months: number): D;\n\n  /**\n   * Returns date with added number of hours.\n   * */\n  abstract addHours(date: D, hour: number): D;\n\n   /**\n   * Returns date with added number of minutes.\n   * */\n  abstract addMinutes(date: D, minute: number): D;\n\n  /**\n   * Returns date with added number of years.\n   * */\n  abstract addYear(date: D, years: number): D;\n\n  abstract getId(): string;\n\n  abstract getWeekNumber(date: D): number;\n\n  abstract getDateFormat(): string;\n\n  abstract getTwelveHoursFormat(): string;\n\n  /**\n   * Returns date with added number of years.\n   * */\n  abstract valueOf(date: D): number;\n\n  isSameHourAndMinute(date1: D, date2: D): boolean {\n    return this.isSameHour(date1, date2) && this.isSameMinute(date1, date2);\n  }\n\n  isSameHour(date1: D, date2: D): boolean {\n    return this.getHours(date1) === this.getHours(date2);\n  }\n\n  isSameMinute(date1: D, date2: D): boolean {\n    return this.getMinutes(date1) === this.getMinutes(date2);\n  }\n\n  getTwentyFourHoursFormat(): string {\n    return 'HH:mm';\n  }\n\n  getTwentyFourHoursFormatWithSeconds(): string {\n    return 'HH:mm:ss'\n  }\n\n  getTwelveHoursFormatWithSeconds(): string {\n    return 'hh:mm:ss a';\n  }\n\n  getDayPeriod(date: D): NbDayPeriod {\n    const isFirstDayPeriod = this.getHours(date) < this.HOURS_IN_DAY_PERIOD;\n    if (isFirstDayPeriod) {\n      return NbDayPeriod.AM;\n    } else {\n      return NbDayPeriod.PM;\n    }\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nexport const batch = <T>(target: T[], batchSize: number, offset: number = 0): T[][] => {\n  return target.reduce((res, item, index) => {\n    const chunkIndex = Math.floor((index + offset) / batchSize);\n    if (!res[chunkIndex]) {\n      res[chunkIndex] = [];\n    }\n    res[chunkIndex].push(item);\n    return res;\n  }, [])\n};\n/**\n * returns array with numbers from first argument to bound.\n * */\nexport const rangeFromTo = <T>(from: number, to = 0, producer: (number) => T = i => i) => {\n  const arr = [];\n\n  for (let i = from; i < to; i++) {\n    arr.push(producer(i));\n  }\n\n  return arr;\n};\n\n/**\n * returns array with numbers from zero to bound.\n * */\nexport const range = <T>(bound: number, producer: (number) => T = i => i) => {\n  return rangeFromTo(0, bound, producer);\n};\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Injectable } from '@angular/core';\n\nimport { range, batch } from '../helpers';\nimport { NbDateService } from './date.service';\n\n@Injectable()\nexport class NbCalendarYearModelService<D> {\n\n  protected yearsInView = 12;\n  protected yearsInRow = 4;\n\n  constructor(protected dateService: NbDateService<D>) {\n  }\n\n  getYearsInView(): number {\n    return this.yearsInView;\n  }\n\n  getYearsInRow(): number {\n    return this.yearsInRow;\n  }\n\n  getViewYears(viewYear: D): D[][] {\n    const year = this.dateService.getYear(viewYear);\n    let viewStartYear: number;\n    if (year >= 0) {\n      viewStartYear = year - (year % this.yearsInView);\n    } else {\n      viewStartYear = year - (year % this.yearsInView + this.yearsInView);\n    }\n    const years = range(this.yearsInView).map(i => this.copyWithYear(viewStartYear + i, viewYear));\n\n    return batch(years, this.yearsInRow);\n  }\n\n  protected copyWithYear(year: number, date: D): D {\n    return this.dateService.createDate(year, this.dateService.getMonth(date), this.dateService.getDate(date));\n  }\n}\n","import {\n  AfterContentChecked,\n  AfterViewInit,\n  ChangeDetectorRef,\n  ContentChildren,\n  Directive,\n  ElementRef,\n  EmbeddedViewRef,\n  HostBinding,\n  Input,\n  NgZone,\n  QueryList,\n  Renderer2,\n} from '@angular/core';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbComponentSize } from '../component-size';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { NbComponentShape } from '../component-shape';\nimport { NbIconComponent } from '../icon/icon.component';\n\nexport type NbButtonAppearance = 'filled' | 'outline' | 'ghost' | 'hero';\n\nexport type NbButtonProperties = Pick<NbButton, 'appearance' | 'size' | 'shape' | 'status' | 'disabled'> & Object;\n\n@Directive()\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport abstract class NbButton implements AfterContentChecked, AfterViewInit {\n  /**\n   * Button size, available sizes:\n   * `tiny`, `small`, `medium`, `large`, `giant`\n   */\n  @Input() size: NbComponentSize = 'medium';\n\n  /**\n   * Button status (adds specific styles):\n   * `primary`, `info`, `success`, `warning`, `danger`\n   */\n  @Input() status: NbComponentOrCustomStatus = 'basic';\n\n  /**\n   * Button shapes: `rectangle`, `round`, `semi-round`\n   */\n  @Input() shape: NbComponentShape = 'rectangle';\n\n  /**\n   * Button appearance: `filled`, `outline`, `ghost`, `hero`\n   */\n  @Input() appearance: NbButtonAppearance = 'filled';\n\n  /**\n   * Sets `filled` appearance\n   */\n  @Input()\n  @HostBinding('class.appearance-filled')\n  get filled(): boolean {\n    return this.appearance === 'filled';\n  }\n  set filled(value: boolean) {\n    if (convertToBoolProperty(value)) {\n      this.appearance = 'filled';\n    }\n  }\n  static ngAcceptInputType_filled: NbBooleanInput;\n\n  /**\n   * Sets `outline` appearance\n   */\n  @Input()\n  @HostBinding('class.appearance-outline')\n  get outline(): boolean {\n    return this.appearance === 'outline';\n  }\n  set outline(value: boolean) {\n    if (convertToBoolProperty(value)) {\n      this.appearance = 'outline';\n    }\n  }\n  static ngAcceptInputType_outline: NbBooleanInput;\n\n  /**\n   * Sets `ghost` appearance\n   */\n  @Input()\n  @HostBinding('class.appearance-ghost')\n  get ghost(): boolean {\n    return this.appearance === 'ghost';\n  }\n  set ghost(value: boolean) {\n    if (convertToBoolProperty(value)) {\n      this.appearance = 'ghost';\n    }\n  }\n  static ngAcceptInputType_ghost: NbBooleanInput;\n\n  /**\n   * If set element will fill its container\n   */\n  @Input()\n  @HostBinding('class.full-width')\n  get fullWidth(): boolean {\n    return this._fullWidth;\n  }\n  set fullWidth(value: boolean) {\n    this._fullWidth = convertToBoolProperty(value);\n  }\n  private _fullWidth = false;\n  static ngAcceptInputType_fullWidth: NbBooleanInput;\n\n  /**\n   * Disables the button\n   */\n  @Input()\n  @HostBinding('attr.aria-disabled')\n  @HostBinding('class.btn-disabled')\n  get disabled(): boolean {\n    return this._disabled;\n  }\n  set disabled(value: boolean) {\n    if (this.disabled !== convertToBoolProperty(value)) {\n      this._disabled = !this.disabled;\n      this.renderer.setProperty(this.hostElement.nativeElement, 'disabled', this.disabled);\n    }\n  }\n  private _disabled: boolean = false;\n  static ngAcceptInputType_disabled: NbBooleanInput;\n\n  /**\n   * Tabindex of the button.\n   */\n  @Input() tabIndex: number;\n\n  // issue #794\n  @HostBinding('attr.tabindex')\n  get tabbable(): string {\n    if (this.disabled) {\n      return '-1';\n    }\n\n    if (this.tabIndex == null) {\n      return '0';\n    }\n\n    return this.tabIndex.toString();\n  }\n\n  @HostBinding('class.size-tiny')\n  get tiny() {\n    return this.size === 'tiny';\n  }\n\n  @HostBinding('class.size-small')\n  get small() {\n    return this.size === 'small';\n  }\n\n  @HostBinding('class.size-medium')\n  get medium() {\n    return this.size === 'medium';\n  }\n\n  @HostBinding('class.size-large')\n  get large() {\n    return this.size === 'large';\n  }\n\n  @HostBinding('class.size-giant')\n  get giant() {\n    return this.size === 'giant';\n  }\n\n  @HostBinding('class.shape-rectangle')\n  get rectangle() {\n    return this.shape === 'rectangle';\n  }\n\n  @HostBinding('class.shape-round')\n  get round() {\n    return this.shape === 'round';\n  }\n\n  @HostBinding('class.shape-semi-round')\n  get semiRound() {\n    return this.shape === 'semi-round';\n  }\n\n  @HostBinding('class.icon-start') iconLeft = false;\n\n  @HostBinding('class.icon-end') iconRight = false;\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.status)) {\n      return [this.statusService.getStatusClass(this.status)];\n    }\n    return [];\n  }\n\n  @ContentChildren(NbIconComponent, { read: ElementRef }) icons: QueryList<ElementRef>;\n\n  protected constructor(\n    protected renderer: Renderer2,\n    protected hostElement: ElementRef<HTMLElement>,\n    protected cd: ChangeDetectorRef,\n    protected zone: NgZone,\n    protected statusService: NbStatusService,\n  ) {\n  }\n\n  ngAfterContentChecked() {\n    const firstNode = this.nodes[0];\n    const lastNode = this.nodes[this.nodes.length - 1];\n\n    this.iconLeft = this.isIconExist(firstNode);\n    this.iconRight = this.isIconExist(lastNode);\n  }\n\n  ngAfterViewInit() {\n    // TODO: #2254\n    this.zone.runOutsideAngular(() => setTimeout(() => {\n      this.renderer.addClass(this.hostElement.nativeElement, 'nb-transition');\n    }));\n  }\n\n  /**\n   * @docs-private\n   **/\n  updateProperties(config: Partial<NbButtonProperties>) {\n    let isPropertyChanged = false;\n\n    for (const key in config) {\n      if (config.hasOwnProperty(key) && this[key] !== config[key]) {\n        this[key] = config[key];\n        isPropertyChanged = true;\n      }\n    }\n\n    if (isPropertyChanged) {\n      this.cd.markForCheck();\n    }\n  }\n\n  get iconElement() {\n    const el = this.hostElement.nativeElement;\n    return el.querySelector('nb-icon');\n  }\n\n  protected get nodes(): Node[] {\n    return (this.cd as EmbeddedViewRef<any>).rootNodes.filter((child: Node) => child.nodeType !== Node.COMMENT_NODE);\n  }\n\n  protected isIconExist(node: Node): boolean {\n    return this.icons.some((item) => item.nativeElement === node);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  HostBinding,\n  HostListener,\n  Input,\n  Renderer2,\n  NgZone,\n} from '@angular/core';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbButton } from './base-button';\n\n/**\n * Basic button component.\n *\n * Default button size is `medium` and status color is `basic`:\n * @stacked-example(Button Showcase, button/button-showcase.component)\n *\n * ```html\n * <button nbButton></button>\n * ```\n * ### Installation\n *\n * Import `NbButtonModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbButtonModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Buttons are available in multiple colors using `status` property:\n * @stacked-example(Button Colors, button/button-colors.component.html)\n *\n * There are three button sizes:\n *\n * @stacked-example(Button Sizes, button/button-sizes.component.html)\n *\n * And two additional style types - `outline`:\n *\n * @stacked-example(Outline Buttons, button/button-outline.component.html)\n *\n * and `hero`:\n *\n * @stacked-example(Button Hero, button/button-hero.component.html)\n *\n * Buttons available in different shapes, which could be combined with the other properties:\n * @stacked-example(Button Shapes, button/button-shapes.component)\n *\n * `nbButton` could be applied to the following selectors - `button`, `input[type=\"button\"]`, `input[type=\"submit\"]`\n * and `a`:\n * @stacked-example(Button Elements, button/button-types.component.html)\n *\n * Button can be made `fullWidth`:\n * @stacked-example(Full Width Button, button/button-full-width.component.html)\n *\n * Icon can be placed inside of a button as a child element:\n * @stacked-example(Icon Button, button/button-icon.component.html)\n *\n * @additional-example(Interactive example, button/button-interactive.component)\n *\n * @styles\n *\n * button-cursor:\n * button-outline-width:\n * button-outline-color:\n * button-text-font-family:\n * button-text-font-weight:\n * button-disabled-cursor:\n * button-tiny-text-font-size:\n * button-tiny-text-line-height:\n * button-tiny-icon-size:\n * button-tiny-icon-vertical-margin:\n * button-tiny-icon-offset:\n * button-small-text-font-size:\n * button-small-text-line-height:\n * button-small-icon-size:\n * button-small-icon-vertical-margin:\n * button-small-icon-offset:\n * button-medium-text-font-size:\n * button-medium-text-line-height:\n * button-medium-icon-size:\n * button-medium-icon-vertical-margin:\n * button-medium-icon-offset:\n * button-large-text-font-size:\n * button-large-text-line-height:\n * button-large-icon-size:\n * button-large-icon-vertical-margin:\n * button-large-icon-offset:\n * button-giant-text-font-size:\n * button-giant-text-line-height:\n * button-giant-icon-size:\n * button-giant-icon-vertical-margin:\n * button-giant-icon-offset:\n * button-rectangle-border-radius:\n * button-semi-round-border-radius:\n * button-round-border-radius:\n * button-filled-border-style:\n * button-filled-border-width:\n * button-filled-text-transform:\n * button-filled-tiny-padding:\n * button-filled-small-padding:\n * button-filled-medium-padding:\n * button-filled-large-padding:\n * button-filled-giant-padding:\n * button-filled-basic-background-color:\n * button-filled-basic-border-color:\n * button-filled-basic-text-color:\n * button-filled-basic-focus-background-color:\n * button-filled-basic-focus-border-color:\n * button-filled-basic-hover-background-color:\n * button-filled-basic-hover-border-color:\n * button-filled-basic-active-background-color:\n * button-filled-basic-active-border-color:\n * button-filled-basic-disabled-background-color:\n * button-filled-basic-disabled-border-color:\n * button-filled-basic-disabled-text-color:\n * button-filled-primary-background-color:\n * button-filled-primary-border-color:\n * button-filled-primary-text-color:\n * button-filled-primary-focus-background-color:\n * button-filled-primary-focus-border-color:\n * button-filled-primary-hover-background-color:\n * button-filled-primary-hover-border-color:\n * button-filled-primary-active-background-color:\n * button-filled-primary-active-border-color:\n * button-filled-primary-disabled-background-color:\n * button-filled-primary-disabled-border-color:\n * button-filled-primary-disabled-text-color:\n * button-filled-success-background-color:\n * button-filled-success-border-color:\n * button-filled-success-text-color:\n * button-filled-success-focus-background-color:\n * button-filled-success-focus-border-color:\n * button-filled-success-hover-background-color:\n * button-filled-success-hover-border-color:\n * button-filled-success-active-background-color:\n * button-filled-success-active-border-color:\n * button-filled-success-disabled-background-color:\n * button-filled-success-disabled-border-color:\n * button-filled-success-disabled-text-color:\n * button-filled-info-background-color:\n * button-filled-info-border-color:\n * button-filled-info-text-color:\n * button-filled-info-focus-background-color:\n * button-filled-info-focus-border-color:\n * button-filled-info-hover-background-color:\n * button-filled-info-hover-border-color:\n * button-filled-info-active-background-color:\n * button-filled-info-active-border-color:\n * button-filled-info-disabled-background-color:\n * button-filled-info-disabled-border-color:\n * button-filled-info-disabled-text-color:\n * button-filled-warning-background-color:\n * button-filled-warning-border-color:\n * button-filled-warning-text-color:\n * button-filled-warning-focus-background-color:\n * button-filled-warning-focus-border-color:\n * button-filled-warning-hover-background-color:\n * button-filled-warning-hover-border-color:\n * button-filled-warning-active-background-color:\n * button-filled-warning-active-border-color:\n * button-filled-warning-disabled-background-color:\n * button-filled-warning-disabled-border-color:\n * button-filled-warning-disabled-text-color:\n * button-filled-danger-background-color:\n * button-filled-danger-border-color:\n * button-filled-danger-text-color:\n * button-filled-danger-focus-background-color:\n * button-filled-danger-focus-border-color:\n * button-filled-danger-hover-background-color:\n * button-filled-danger-hover-border-color:\n * button-filled-danger-active-background-color:\n * button-filled-danger-active-border-color:\n * button-filled-danger-disabled-background-color:\n * button-filled-danger-disabled-border-color:\n * button-filled-danger-disabled-text-color:\n * button-filled-control-background-color:\n * button-filled-control-border-color:\n * button-filled-control-text-color:\n * button-filled-control-focus-background-color:\n * button-filled-control-focus-border-color:\n * button-filled-control-hover-background-color:\n * button-filled-control-hover-border-color:\n * button-filled-control-active-background-color:\n * button-filled-control-active-border-color:\n * button-filled-control-disabled-background-color:\n * button-filled-control-disabled-border-color:\n * button-filled-control-disabled-text-color:\n * button-outline-border-style:\n * button-outline-border-width:\n * button-outline-text-transform:\n * button-outline-focus-inset-shadow-length:\n * button-outline-tiny-padding:\n * button-outline-small-padding:\n * button-outline-medium-padding:\n * button-outline-large-padding:\n * button-outline-giant-padding:\n * button-outline-basic-background-color:\n * button-outline-basic-border-color:\n * button-outline-basic-text-color:\n * button-outline-basic-focus-background-color:\n * button-outline-basic-focus-border-color:\n * button-outline-basic-focus-text-color:\n * button-outline-basic-hover-background-color:\n * button-outline-basic-hover-border-color:\n * button-outline-basic-hover-text-color:\n * button-outline-basic-active-background-color:\n * button-outline-basic-active-border-color:\n * button-outline-basic-active-text-color:\n * button-outline-basic-disabled-background-color:\n * button-outline-basic-disabled-border-color:\n * button-outline-basic-disabled-text-color:\n * button-outline-primary-background-color:\n * button-outline-primary-border-color:\n * button-outline-primary-text-color:\n * button-outline-primary-focus-background-color:\n * button-outline-primary-focus-border-color:\n * button-outline-primary-focus-text-color:\n * button-outline-primary-hover-background-color:\n * button-outline-primary-hover-border-color:\n * button-outline-primary-hover-text-color:\n * button-outline-primary-active-background-color:\n * button-outline-primary-active-border-color:\n * button-outline-primary-active-text-color:\n * button-outline-primary-disabled-background-color:\n * button-outline-primary-disabled-border-color:\n * button-outline-primary-disabled-text-color:\n * button-outline-success-background-color:\n * button-outline-success-border-color:\n * button-outline-success-text-color:\n * button-outline-success-focus-background-color:\n * button-outline-success-focus-border-color:\n * button-outline-success-focus-text-color:\n * button-outline-success-hover-background-color:\n * button-outline-success-hover-border-color:\n * button-outline-success-hover-text-color:\n * button-outline-success-active-background-color:\n * button-outline-success-active-border-color:\n * button-outline-success-active-text-color:\n * button-outline-success-disabled-background-color:\n * button-outline-success-disabled-border-color:\n * button-outline-success-disabled-text-color:\n * button-outline-info-background-color:\n * button-outline-info-border-color:\n * button-outline-info-text-color:\n * button-outline-info-focus-background-color:\n * button-outline-info-focus-border-color:\n * button-outline-info-focus-text-color:\n * button-outline-info-hover-background-color:\n * button-outline-info-hover-border-color:\n * button-outline-info-hover-text-color:\n * button-outline-info-active-background-color:\n * button-outline-info-active-border-color:\n * button-outline-info-active-text-color:\n * button-outline-info-disabled-background-color:\n * button-outline-info-disabled-border-color:\n * button-outline-info-disabled-text-color:\n * button-outline-warning-background-color:\n * button-outline-warning-border-color:\n * button-outline-warning-text-color:\n * button-outline-warning-focus-background-color:\n * button-outline-warning-focus-border-color:\n * button-outline-warning-focus-text-color:\n * button-outline-warning-hover-background-color:\n * button-outline-warning-hover-border-color:\n * button-outline-warning-hover-text-color:\n * button-outline-warning-active-background-color:\n * button-outline-warning-active-border-color:\n * button-outline-warning-active-text-color:\n * button-outline-warning-disabled-background-color:\n * button-outline-warning-disabled-border-color:\n * button-outline-warning-disabled-text-color:\n * button-outline-danger-background-color:\n * button-outline-danger-border-color:\n * button-outline-danger-text-color:\n * button-outline-danger-focus-background-color:\n * button-outline-danger-focus-border-color:\n * button-outline-danger-focus-text-color:\n * button-outline-danger-hover-background-color:\n * button-outline-danger-hover-border-color:\n * button-outline-danger-hover-text-color:\n * button-outline-danger-active-background-color:\n * button-outline-danger-active-border-color:\n * button-outline-danger-active-text-color:\n * button-outline-danger-disabled-background-color:\n * button-outline-danger-disabled-border-color:\n * button-outline-danger-disabled-text-color:\n * button-outline-control-background-color:\n * button-outline-control-border-color:\n * button-outline-control-text-color:\n * button-outline-control-focus-background-color:\n * button-outline-control-focus-border-color:\n * button-outline-control-focus-text-color:\n * button-outline-control-hover-background-color:\n * button-outline-control-hover-border-color:\n * button-outline-control-hover-text-color:\n * button-outline-control-active-background-color:\n * button-outline-control-active-border-color:\n * button-outline-control-active-text-color:\n * button-outline-control-disabled-background-color:\n * button-outline-control-disabled-border-color:\n * button-outline-control-disabled-text-color:\n * button-ghost-background-color:\n * button-ghost-border-color:\n * button-ghost-border-style:\n * button-ghost-border-width:\n * button-ghost-text-transform:\n * button-ghost-focus-inset-shadow-length:\n * button-ghost-tiny-padding:\n * button-ghost-small-padding:\n * button-ghost-medium-padding:\n * button-ghost-large-padding:\n * button-ghost-giant-padding:\n * button-ghost-basic-text-color:\n * button-ghost-basic-focus-background-color:\n * button-ghost-basic-focus-border-color:\n * button-ghost-basic-focus-text-color:\n * button-ghost-basic-hover-background-color:\n * button-ghost-basic-hover-border-color:\n * button-ghost-basic-hover-text-color:\n * button-ghost-basic-active-background-color:\n * button-ghost-basic-active-border-color:\n * button-ghost-basic-active-text-color:\n * button-ghost-basic-disabled-background-color:\n * button-ghost-basic-disabled-border-color:\n * button-ghost-basic-disabled-text-color:\n * button-ghost-primary-text-color:\n * button-ghost-primary-focus-background-color:\n * button-ghost-primary-focus-border-color:\n * button-ghost-primary-focus-text-color:\n * button-ghost-primary-hover-background-color:\n * button-ghost-primary-hover-border-color:\n * button-ghost-primary-hover-text-color:\n * button-ghost-primary-active-background-color:\n * button-ghost-primary-active-border-color:\n * button-ghost-primary-active-text-color:\n * button-ghost-primary-disabled-background-color:\n * button-ghost-primary-disabled-border-color:\n * button-ghost-primary-disabled-text-color:\n * button-ghost-success-text-color:\n * button-ghost-success-focus-background-color:\n * button-ghost-success-focus-border-color:\n * button-ghost-success-focus-text-color:\n * button-ghost-success-hover-background-color:\n * button-ghost-success-hover-border-color:\n * button-ghost-success-hover-text-color:\n * button-ghost-success-active-background-color:\n * button-ghost-success-active-border-color:\n * button-ghost-success-active-text-color:\n * button-ghost-success-disabled-background-color:\n * button-ghost-success-disabled-border-color:\n * button-ghost-success-disabled-text-color:\n * button-ghost-info-text-color:\n * button-ghost-info-focus-background-color:\n * button-ghost-info-focus-border-color:\n * button-ghost-info-focus-text-color:\n * button-ghost-info-hover-background-color:\n * button-ghost-info-hover-border-color:\n * button-ghost-info-hover-text-color:\n * button-ghost-info-active-background-color:\n * button-ghost-info-active-border-color:\n * button-ghost-info-active-text-color:\n * button-ghost-info-disabled-background-color:\n * button-ghost-info-disabled-border-color:\n * button-ghost-info-disabled-text-color:\n * button-ghost-warning-text-color:\n * button-ghost-warning-focus-background-color:\n * button-ghost-warning-focus-border-color:\n * button-ghost-warning-focus-text-color:\n * button-ghost-warning-hover-background-color:\n * button-ghost-warning-hover-border-color:\n * button-ghost-warning-hover-text-color:\n * button-ghost-warning-active-background-color:\n * button-ghost-warning-active-border-color:\n * button-ghost-warning-active-text-color:\n * button-ghost-warning-disabled-background-color:\n * button-ghost-warning-disabled-border-color:\n * button-ghost-warning-disabled-text-color:\n * button-ghost-danger-text-color:\n * button-ghost-danger-focus-background-color:\n * button-ghost-danger-focus-border-color:\n * button-ghost-danger-focus-text-color:\n * button-ghost-danger-hover-background-color:\n * button-ghost-danger-hover-border-color:\n * button-ghost-danger-hover-text-color:\n * button-ghost-danger-active-background-color:\n * button-ghost-danger-active-border-color:\n * button-ghost-danger-active-text-color:\n * button-ghost-danger-disabled-background-color:\n * button-ghost-danger-disabled-border-color:\n * button-ghost-danger-disabled-text-color:\n * button-ghost-control-text-color:\n * button-ghost-control-focus-background-color:\n * button-ghost-control-focus-border-color:\n * button-ghost-control-focus-text-color:\n * button-ghost-control-hover-background-color:\n * button-ghost-control-hover-border-color:\n * button-ghost-control-hover-text-color:\n * button-ghost-control-active-background-color:\n * button-ghost-control-active-border-color:\n * button-ghost-control-active-text-color:\n * button-ghost-control-disabled-background-color:\n * button-ghost-control-disabled-border-color:\n * button-ghost-control-disabled-text-color:\n * button-hero-border-color:\n * button-hero-border-style:\n * button-hero-border-width:\n * button-hero-text-transform:\n * button-hero-tiny-padding:\n * button-hero-small-padding:\n * button-hero-medium-padding:\n * button-hero-large-padding:\n * button-hero-giant-padding:\n * button-hero-shadow:\n * button-hero-text-shadow:\n * button-hero-bevel-size:\n * button-hero-glow-size:\n * button-hero-outline-color:\n * button-hero-outline-width:\n * button-hero-basic-text-color:\n * button-hero-basic-bevel-color:\n * button-hero-basic-glow-color:\n * button-hero-basic-left-background-color:\n * button-hero-basic-right-background-color:\n * button-hero-basic-focus-left-background-color:\n * button-hero-basic-focus-right-background-color:\n * button-hero-basic-hover-left-background-color:\n * button-hero-basic-hover-right-background-color:\n * button-hero-basic-active-left-background-color:\n * button-hero-basic-active-right-background-color:\n * button-hero-basic-disabled-background-color:\n * button-hero-basic-disabled-text-color:\n * button-hero-primary-text-color:\n * button-hero-primary-bevel-color:\n * button-hero-primary-glow-color:\n * button-hero-primary-left-background-color:\n * button-hero-primary-right-background-color:\n * button-hero-primary-focus-left-background-color:\n * button-hero-primary-focus-right-background-color:\n * button-hero-primary-hover-left-background-color:\n * button-hero-primary-hover-right-background-color:\n * button-hero-primary-active-left-background-color:\n * button-hero-primary-active-right-background-color:\n * button-hero-primary-disabled-background-color:\n * button-hero-primary-disabled-text-color:\n * button-hero-success-text-color:\n * button-hero-success-bevel-color:\n * button-hero-success-glow-color:\n * button-hero-success-left-background-color:\n * button-hero-success-right-background-color:\n * button-hero-success-focus-left-background-color:\n * button-hero-success-focus-right-background-color:\n * button-hero-success-hover-left-background-color:\n * button-hero-success-hover-right-background-color:\n * button-hero-success-active-left-background-color:\n * button-hero-success-active-right-background-color:\n * button-hero-success-disabled-background-color:\n * button-hero-success-disabled-text-color:\n * button-hero-info-text-color:\n * button-hero-info-bevel-color:\n * button-hero-info-glow-color:\n * button-hero-info-left-background-color:\n * button-hero-info-right-background-color:\n * button-hero-info-focus-left-background-color:\n * button-hero-info-focus-right-background-color:\n * button-hero-info-hover-left-background-color:\n * button-hero-info-hover-right-background-color:\n * button-hero-info-active-left-background-color:\n * button-hero-info-active-right-background-color:\n * button-hero-info-disabled-background-color:\n * button-hero-info-disabled-text-color:\n * button-hero-warning-text-color:\n * button-hero-warning-bevel-color:\n * button-hero-warning-glow-color:\n * button-hero-warning-left-background-color:\n * button-hero-warning-right-background-color:\n * button-hero-warning-focus-left-background-color:\n * button-hero-warning-focus-right-background-color:\n * button-hero-warning-hover-left-background-color:\n * button-hero-warning-hover-right-background-color:\n * button-hero-warning-active-left-background-color:\n * button-hero-warning-active-right-background-color:\n * button-hero-warning-disabled-background-color:\n * button-hero-warning-disabled-text-color:\n * button-hero-danger-text-color:\n * button-hero-danger-bevel-color:\n * button-hero-danger-glow-color:\n * button-hero-danger-left-background-color:\n * button-hero-danger-right-background-color:\n * button-hero-danger-focus-left-background-color:\n * button-hero-danger-focus-right-background-color:\n * button-hero-danger-hover-left-background-color:\n * button-hero-danger-hover-right-background-color:\n * button-hero-danger-active-left-background-color:\n * button-hero-danger-active-right-background-color:\n * button-hero-danger-disabled-background-color:\n * button-hero-danger-disabled-text-color:\n * button-hero-control-text-color:\n * button-hero-control-bevel-color:\n * button-hero-control-glow-color:\n * button-hero-control-left-background-color:\n * button-hero-control-right-background-color:\n * button-hero-control-focus-left-background-color:\n * button-hero-control-focus-right-background-color:\n * button-hero-control-hover-left-background-color:\n * button-hero-control-hover-right-background-color:\n * button-hero-control-active-left-background-color:\n * button-hero-control-active-right-background-color:\n * button-hero-control-disabled-background-color:\n * button-hero-control-disabled-text-color:\n */\n@Component({\n    selector: 'button[nbButton],a[nbButton],input[type=\"button\"][nbButton],input[type=\"submit\"][nbButton]',\n    template: `\n    <ng-content></ng-content>\n  `,\n    providers: [\n        { provide: NbButton, useExisting: NbButtonComponent },\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbButtonComponent extends NbButton implements AfterViewInit {\n  /**\n   * Sets `hero` appearance\n   */\n  @Input()\n  @HostBinding('class.appearance-hero')\n  get hero(): boolean {\n    return this.appearance === 'hero';\n  }\n  set hero(value: boolean) {\n    if (convertToBoolProperty(value)) {\n      this.appearance = 'hero';\n    }\n  }\n  static ngAcceptInputType_hero: NbBooleanInput;\n\n  @HostBinding('class.status-primary')\n  get primary() {\n    return this.status === 'primary';\n  }\n\n  @HostBinding('class.status-info')\n  get info() {\n    return this.status === 'info';\n  }\n\n  @HostBinding('class.status-success')\n  get success() {\n    return this.status === 'success';\n  }\n\n  @HostBinding('class.status-warning')\n  get warning() {\n    return this.status === 'warning';\n  }\n\n  @HostBinding('class.status-danger')\n  get danger() {\n    return this.status === 'danger';\n  }\n\n  @HostBinding('class.status-basic')\n  get basic() {\n    return this.status === 'basic';\n  }\n\n  @HostBinding('class.status-control')\n  get control() {\n    return this.status === 'control';\n  }\n\n  /**\n   * @private\n   * Keep this handler to partially support anchor disabling.\n   * Unlike button, anchor doesn't have 'disabled' DOM property,\n   * so handler will be called anyway. We preventing navigation and bubbling.\n   * Disabling is partial due to click handlers precedence. Consider example:\n   * <a nbButton [disabled]=\"true\" (click)=\"clickHandler()\">...</a>\n   * 'clickHandler' will be called before our host listener below. We can't prevent\n   * such handlers call.\n   */\n  @HostListener('click', ['$event'])\n  onClick(event) {\n    if (this.disabled) {\n      event.preventDefault();\n      event.stopImmediatePropagation();\n    }\n  }\n\n  constructor(\n    protected renderer: Renderer2,\n    protected hostElement: ElementRef<HTMLElement>,\n    protected cd: ChangeDetectorRef,\n    protected zone: NgZone,\n    protected statusService: NbStatusService,\n  ) {\n    super(renderer, hostElement, cd, zone, statusService);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { TranslationWidth } from '@angular/common';\n\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { NbCalendarViewMode, NbCalendarViewModeValues } from '../../model';\nimport { NbCalendarYearModelService } from '../../services/calendar-year-model.service';\nimport { NbDateService } from '../../services/date.service';\n\n\n@Component({\n    selector: 'nb-calendar-view-mode',\n    template: `\n    <button nbButton (click)=\"changeMode.emit()\" ghost status=\"basic\">\n      {{ getText() }}\n      <nb-icon [icon]=\"getIcon()\" pack=\"nebular-essentials\"></nb-icon>\n    </button>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbCalendarViewModeComponent<D> {\n  @Input() date: D;\n  @Input() viewMode: NbCalendarViewMode = NbCalendarViewMode.DATE;\n  static ngAcceptInputType_viewMode: NbCalendarViewModeValues;\n  @Output() changeMode = new EventEmitter<void>(true);\n\n  constructor(\n    protected dateService: NbDateService<D>,\n    protected yearModelService: NbCalendarYearModelService<D>,\n  ) {}\n\n  getText(): string {\n    if (!this.date) {\n      return '';\n    }\n\n    switch (this.viewMode) {\n      case NbCalendarViewMode.DATE: {\n        const month = this.dateService.getMonthName(this.date, TranslationWidth.Wide);\n        const year = this.dateService.getYear(this.date);\n        return `${month} ${year}`;\n      }\n      case NbCalendarViewMode.MONTH:\n        return `${this.dateService.getYear(this.date)}`;\n      case NbCalendarViewMode.YEAR:\n        return `${this.getFirstYear()} - ${this.getLastYear()}`;\n    }\n  }\n\n  getIcon(): string {\n    if (this.viewMode === NbCalendarViewMode.DATE) {\n      return 'chevron-down-outline';\n    }\n\n    return 'chevron-up-outline';\n  }\n\n  protected getFirstYear(): string {\n    const years = this.yearModelService.getViewYears(this.date);\n    return this.dateService.getYear(years[0][0]).toString();\n  }\n\n  protected getLastYear(): string {\n    const years = this.yearModelService.getViewYears(this.date);\n    const lastRow = years[years.length - 1];\n    const lastYear = lastRow[lastRow.length - 1];\n\n    return this.dateService.getYear(lastYear).toString();\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, EventEmitter, Output } from '@angular/core';\n\nimport { NbLayoutDirectionService } from '../../../../services/direction.service';\n\n\n@Component({\n    selector: 'nb-calendar-pageable-navigation',\n    styleUrls: ['./calendar-pageable-navigation.component.scss'],\n    template: `\n    <button nbButton (click)=\"prev.emit()\" ghost status=\"basic\" class=\"prev-month\">\n      <nb-icon [icon]=\"isLtr ? 'chevron-left-outline' : 'chevron-right-outline'\" pack=\"nebular-essentials\"></nb-icon>\n    </button>\n    <button nbButton (click)=\"next.emit()\" ghost status=\"basic\" class=\"next-month\">\n      <nb-icon [icon]=\"isLtr ? 'chevron-right-outline' : 'chevron-left-outline'\" pack=\"nebular-essentials\"></nb-icon>\n    </button>\n  `,\n    standalone: false\n})\nexport class NbCalendarPageableNavigationComponent<D> {\n  @Output() next = new EventEmitter<void>();\n  @Output() prev = new EventEmitter<void>();\n\n  constructor(private directionService: NbLayoutDirectionService) {\n  }\n\n  get isLtr(): boolean {\n    return this.directionService.isLtr();\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  Output,\n} from '@angular/core';\nimport { NbDateService } from '../../services/date.service';\nimport { NbCalendarCell, NbCalendarSize, NbCalendarSizeValues } from '../../model';\n\n\n@Component({\n    selector: 'nb-calendar-year-cell',\n    template: `\n    <div class=\"cell-content\">\n      {{ year }}\n    </div>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbCalendarYearCellComponent<D> implements NbCalendarCell<D, D> {\n  @Input() date: D;\n\n  @Input() min: D;\n\n  @Input() max: D;\n\n  @Input() selectedValue: D;\n\n  @Input() size: NbCalendarSize = NbCalendarSize.MEDIUM;\n  static ngAcceptInputType_size: NbCalendarSizeValues;\n\n  @Output() select: EventEmitter<D> = new EventEmitter(true);\n\n  constructor(protected dateService: NbDateService<D>) {\n  }\n\n  @HostBinding('class.selected') get selected(): boolean {\n    return this.dateService.isSameYearSafe(this.date, this.selectedValue);\n  }\n\n  @HostBinding('class.today') get today(): boolean {\n    return this.dateService.isSameYearSafe(this.date, this.dateService.today());\n  }\n\n  @HostBinding('class.disabled') get disabled(): boolean {\n    return this.smallerThanMin() || this.greaterThanMax();\n  }\n\n  @HostBinding('class.size-large')\n  get isLarge(): boolean {\n    return this.size === NbCalendarSize.LARGE;\n  }\n\n  @HostBinding('class.year-cell')\n  yearCellClass = true;\n\n  get year(): number {\n    return this.dateService.getYear(this.date);\n  }\n\n  @HostListener('click')\n  onClick() {\n    if (this.disabled) {\n      return;\n    }\n\n    this.select.emit(this.date);\n  }\n\n  private smallerThanMin(): boolean {\n    return this.date && this.min && this.dateService.compareDates(this.yearEnd(), this.min) < 0;\n  }\n\n  private greaterThanMax(): boolean {\n    return this.date && this.max && this.dateService.compareDates(this.yearStart(), this.max) > 0;\n  }\n\n  private yearStart(): D {\n    return this.dateService.getYearStart(this.date);\n  }\n\n  private yearEnd(): D {\n    return this.dateService.getYearEnd(this.date);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ComponentFactoryResolver,\n  EventEmitter,\n  Input,\n  OnChanges,\n  Output,\n  TemplateRef,\n  Type,\n  ViewChild,\n  ViewContainerRef,\n} from '@angular/core';\n\nimport { NbCalendarCell, NbCalendarSize, NbCalendarSizeValues } from '../../model';\n\n@Component({\n    selector: 'nb-calendar-picker-row',\n    styles: [\n        `\n      :host {\n        display: flex;\n        justify-content: space-between;\n      }\n    `,\n    ],\n    template: '<ng-template></ng-template>',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbCalendarPickerRowComponent<D, T> implements OnChanges {\n  @Input() row: D[];\n  @Input() selectedValue: T;\n  @Input() visibleDate: D;\n  @Input() component: Type<NbCalendarCell<D, T>>;\n  @Input() min: D;\n  @Input() max: D;\n  @Input() filter: (D) => boolean;\n  @Input() size: NbCalendarSize = NbCalendarSize.MEDIUM;\n  static ngAcceptInputType_size: NbCalendarSizeValues;\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  @Output() select: EventEmitter<D> = new EventEmitter();\n\n  // TODO static must be false as of Angular 9.0.0, issues/1514\n  @ViewChild(TemplateRef, { read: ViewContainerRef, static: true }) containerRef: ViewContainerRef;\n\n  constructor(private cfr: ComponentFactoryResolver) {}\n\n  ngOnChanges() {\n    const factory = this.cfr.resolveComponentFactory(this.component);\n\n    this.containerRef.clear();\n\n    this.row.forEach((date: D) => {\n      const component = this.containerRef.createComponent(factory, this.containerRef.length);\n      this.patchWithContext(component.instance, date);\n      component.changeDetectorRef.detectChanges();\n    });\n  }\n\n  private patchWithContext(component: NbCalendarCell<D, T>, date: D) {\n    component.visibleDate = this.visibleDate;\n    component.selectedValue = this.selectedValue;\n    component.date = date;\n    component.min = this.min;\n    component.max = this.max;\n    component.filter = this.filter;\n    component.size = this.size;\n    component.select.subscribe(this.select.emit.bind(this.select));\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, Type, HostBinding } from '@angular/core';\n\nimport { NbCalendarCell, NbCalendarSize, NbCalendarSizeValues } from '../../model';\n\n\n@Component({\n    selector: 'nb-calendar-picker',\n    template: `\n    <nb-calendar-picker-row\n      *ngFor=\"let row of data\"\n      [row]=\"row\"\n      [visibleDate]=\"visibleDate\"\n      [selectedValue]=\"selectedValue\"\n      [component]=\"cellComponent\"\n      [min]=\"min\"\n      [max]=\"max\"\n      [filter]=\"filter\"\n      [size]=\"size\"\n      (select)=\"select.emit($event)\">\n    </nb-calendar-picker-row>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbCalendarPickerComponent<D, T> {\n  @Input() data: D[][];\n  @Input() visibleDate: D;\n  @Input() selectedValue: T;\n  @Input() cellComponent: Type<NbCalendarCell<D, T>>;\n  @Input() min: D;\n  @Input() max: D;\n  @Input() filter: (D) => boolean;\n  @Input() size: NbCalendarSize = NbCalendarSize.MEDIUM;\n  static ngAcceptInputType_size: NbCalendarSizeValues;\n  @Output() select: EventEmitter<D> = new EventEmitter();\n\n  @HostBinding('class.size-large')\n  get isLarge(): boolean {\n    return this.size === NbCalendarSize.LARGE;\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnChanges,\n  Output,\n  Type,\n} from '@angular/core';\nimport { NbCalendarCell, NbCalendarSize, NbCalendarSizeValues } from '../../model';\nimport { NbCalendarYearCellComponent } from './calendar-year-cell.component';\nimport { NbDateService } from '../../services/date.service';\nimport { NbCalendarYearModelService } from '../../services/calendar-year-model.service';\n\n@Component({\n    selector: 'nb-calendar-year-picker',\n    template: `\n    <nb-calendar-picker\n      [data]=\"years\"\n      [min]=\"min\"\n      [max]=\"max\"\n      [filter]=\"filter\"\n      [selectedValue]=\"date\"\n      [visibleDate]=\"year\"\n      [cellComponent]=\"cellComponent\"\n      [size]=\"size\"\n      (select)=\"onSelect($event)\">\n    </nb-calendar-picker>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbCalendarYearPickerComponent<D> implements OnChanges {\n\n  @Input() date: D;\n\n  @Input() min: D;\n\n  @Input() max: D;\n\n  @Input() filter: (D) => boolean;\n\n  @Input('cellComponent')\n  set _cellComponent(cellComponent: Type<NbCalendarCell<D, D>>) {\n    if (cellComponent) {\n      this.cellComponent = cellComponent;\n    }\n  }\n  cellComponent: Type<NbCalendarCell<D, D>> = NbCalendarYearCellComponent;\n\n  @Input() size: NbCalendarSize = NbCalendarSize.MEDIUM;\n  static ngAcceptInputType_size: NbCalendarSizeValues;\n\n  @Input() year: D;\n\n  @Output() yearChange = new EventEmitter<D>();\n\n  @HostBinding('class.size-large')\n  get large() {\n    return this.size === NbCalendarSize.LARGE;\n  }\n\n  years: D[][];\n\n  constructor(\n    protected dateService: NbDateService<D>,\n    protected yearModelService: NbCalendarYearModelService<D>,\n  ) {}\n\n  ngOnChanges() {\n    this.years = this.yearModelService.getViewYears(this.year);\n  }\n\n  onSelect(year) {\n    this.yearChange.emit(year);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  Output,\n} from '@angular/core';\nimport { NbCalendarCell, NbCalendarSize, NbCalendarSizeValues } from '../../model';\nimport { NbDateService } from '../../services/date.service';\n\n\n@Component({\n    selector: 'nb-calendar-month-cell',\n    template: `\n    <div class=\"cell-content\">\n      {{ month }}\n    </div>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbCalendarMonthCellComponent<D> implements NbCalendarCell<D, D> {\n  @Input() date: D;\n\n  @Input() selectedValue: D;\n\n  @Input() min: D;\n\n  @Input() max: D;\n\n  @Input() size: NbCalendarSize = NbCalendarSize.MEDIUM;\n  static ngAcceptInputType_size: NbCalendarSizeValues;\n\n  @Output() select: EventEmitter<D> = new EventEmitter(true);\n\n  constructor(private dateService: NbDateService<D>) {\n  }\n\n  @HostBinding('class.selected') get selected(): boolean {\n    return this.dateService.isSameMonthSafe(this.date, this.selectedValue);\n  }\n\n  @HostBinding('class.today') get today(): boolean {\n    return this.dateService.isSameMonthSafe(this.date, this.dateService.today());\n  }\n\n  @HostBinding('class.disabled') get disabled(): boolean {\n    return this.smallerThanMin() || this.greaterThanMax();\n  }\n\n  @HostBinding('class.size-large')\n  get isLarge(): boolean {\n    return this.size === NbCalendarSize.LARGE;\n  }\n\n  @HostBinding('class.month-cell')\n  monthCellClass = true;\n\n  get month(): string {\n    return this.dateService.getMonthName(this.date);\n  }\n\n  @HostListener('click')\n  onClick() {\n    if (this.disabled) {\n      return;\n    }\n\n    this.select.emit(this.date);\n  }\n\n  protected smallerThanMin(): boolean {\n    return this.date && this.min && this.dateService.compareDates(this.monthEnd(), this.min) < 0;\n  }\n\n  protected greaterThanMax(): boolean {\n    return this.date && this.max && this.dateService.compareDates(this.monthStart(), this.max) > 0;\n  }\n\n  protected monthStart(): D {\n    return this.dateService.getMonthStart(this.date);\n  }\n\n  protected monthEnd(): D {\n    return this.dateService.getMonthEnd(this.date);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnChanges,\n  Output,\n  Type,\n  SimpleChanges,\n} from '@angular/core';\nimport { batch } from '../../helpers';\nimport { NbCalendarCell, NbCalendarSize, NbCalendarSizeValues } from '../../model';\nimport { NbCalendarMonthCellComponent } from './calendar-month-cell.component';\nimport { NbDateService } from '../../services/date.service';\n\nexport const MONTHS_IN_VIEW = 12;\nexport const MONTHS_IN_COLUMN = 4;\n\n@Component({\n    selector: 'nb-calendar-month-picker',\n    template: `\n    <nb-calendar-picker\n      [data]=\"months\"\n      [min]=\"min\"\n      [max]=\"max\"\n      [filter]=\"filter\"\n      [selectedValue]=\"date\"\n      [visibleDate]=\"month\"\n      [cellComponent]=\"cellComponent\"\n      [size]=\"size\"\n      (select)=\"onSelect($event)\">\n    </nb-calendar-picker>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbCalendarMonthPickerComponent<D, T> implements OnChanges {\n\n  @Input() min: D;\n\n  @Input() max: D;\n\n  @Input() filter: (D) => boolean;\n  @Input() size: NbCalendarSize = NbCalendarSize.MEDIUM;\n  static ngAcceptInputType_size: NbCalendarSizeValues;\n\n  /**\n   * Visible month\n   **/\n  @Input() month: D;\n\n  /**\n   * Selected date\n   **/\n  @Input() date: D;\n\n  @Output() monthChange: EventEmitter<D> = new EventEmitter();\n  months: D[][];\n\n  constructor(protected dateService: NbDateService<D>) {\n  }\n\n  @Input('cellComponent')\n  set _cellComponent(cellComponent: Type<NbCalendarCell<D, T>>) {\n    if (cellComponent) {\n      this.cellComponent = cellComponent;\n    }\n  }\n  cellComponent: Type<NbCalendarCell<any, any>> = NbCalendarMonthCellComponent;\n\n  @HostBinding('class.size-large')\n  get large() {\n    return this.size === NbCalendarSize.LARGE;\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.month) {\n      this.initMonths();\n    }\n  }\n\n  initMonths() {\n    const date = this.dateService.getDate(this.month);\n    const year = this.dateService.getYear(this.month);\n    const firstMonth = this.dateService.createDate(year, 0, date);\n    const months = [ firstMonth ];\n\n    for (let monthIndex = 1; monthIndex < MONTHS_IN_VIEW; monthIndex++) {\n      months.push(this.dateService.addMonth(firstMonth, monthIndex));\n    }\n\n    this.months = batch(months, MONTHS_IN_COLUMN);\n  }\n\n  onSelect(month: D) {\n    this.monthChange.emit(month);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  Output,\n} from '@angular/core';\n\nimport { NbCalendarCell, NbCalendarSize, NbCalendarSizeValues } from '../../model';\nimport { NbDateService } from '../../services/date.service';\n\n\n@Component({\n    selector: 'nb-calendar-day-cell',\n    template: `\n    <div class=\"cell-content\">\n      {{ day }}\n    </div>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbCalendarDayCellComponent<D> implements NbCalendarCell<D, D> {\n\n  @Input() date: D;\n\n  @Input() selectedValue: D;\n\n  @Input() visibleDate: D;\n\n  @Input() min: D;\n\n  @Input() max: D;\n\n  @Input() filter: (D) => boolean;\n\n  @Input() size: NbCalendarSize = NbCalendarSize.MEDIUM;\n  static ngAcceptInputType_size: NbCalendarSizeValues;\n\n  @Output() select: EventEmitter<D> = new EventEmitter(true);\n\n  constructor(protected dateService: NbDateService<D>) {\n  }\n\n  @HostBinding('class.today') get today(): boolean {\n    return this.dateService.isSameDaySafe(this.date, this.dateService.today());\n  }\n\n  @HostBinding('class.bounding-month') get boundingMonth(): boolean {\n    return !this.dateService.isSameMonthSafe(this.date, this.visibleDate);\n  }\n\n  @HostBinding('class.selected') get selected(): boolean {\n    return this.dateService.isSameDaySafe(this.date, this.selectedValue);\n  }\n\n  @HostBinding('class.empty') get empty(): boolean {\n    return !this.date;\n  }\n\n  @HostBinding('class.disabled') get disabled(): boolean {\n    return this.smallerThanMin() || this.greaterThanMax() || this.dontFitFilter();\n  }\n\n  @HostBinding('class.size-large')\n  get isLarge(): boolean {\n    return this.size === NbCalendarSize.LARGE;\n  }\n\n  @HostBinding('class.day-cell')\n  dayCellClass = true;\n\n  get day(): number {\n    return this.date && this.dateService.getDate(this.date);\n  }\n\n  @HostListener('click')\n  onClick() {\n    if (this.disabled || this.empty) {\n      return;\n    }\n\n    this.select.emit(this.date);\n  }\n\n  private smallerThanMin(): boolean {\n    return this.date && this.min && this.dateService.compareDates(this.date, this.min) < 0;\n  }\n\n  private greaterThanMax(): boolean {\n    return this.date && this.max && this.dateService.compareDates(this.date, this.max) > 0;\n  }\n\n  private dontFitFilter(): boolean {\n    return this.date && this.filter && !this.filter(this.date);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Injectable } from '@angular/core';\n\nimport { NbDateService } from './date.service';\nimport { batch, range } from '../helpers';\n\n\n@Injectable()\nexport class NbCalendarMonthModelService<D> {\n\n  constructor(protected dateService: NbDateService<D>) {\n  }\n\n  createDaysGrid(activeMonth: D, boundingMonth: boolean = true, firstDayOfWeek?: number): D[][] {\n    const weeks = this.createDates(activeMonth, firstDayOfWeek);\n    return this.withBoundingMonths(weeks, activeMonth, boundingMonth);\n  }\n\n  private createDates(activeMonth: D, firstDayOfWeek?: number): D[][] {\n    const days = this.createDateRangeForMonth(activeMonth);\n    const startOfWeekDayDiff = this.getStartOfWeekDayDiff(activeMonth, firstDayOfWeek);\n    return batch(days, this.dateService.DAYS_IN_WEEK, startOfWeekDayDiff);\n  }\n\n  private withBoundingMonths(weeks: D[][], activeMonth: D, boundingMonth: boolean): D[][] {\n    let withBoundingMonths = weeks;\n\n    if (this.isShouldAddPrevBoundingMonth(withBoundingMonths)) {\n      withBoundingMonths = this.addPrevBoundingMonth(withBoundingMonths, activeMonth, boundingMonth);\n    }\n\n    if (this.isShouldAddNextBoundingMonth(withBoundingMonths)) {\n      withBoundingMonths = this.addNextBoundingMonth(withBoundingMonths, activeMonth, boundingMonth);\n    }\n\n    return withBoundingMonths;\n  }\n\n  private addPrevBoundingMonth(weeks: D[][], activeMonth: D, boundingMonth: boolean): D[][] {\n    const firstWeek = weeks.shift();\n    const requiredItems: number = this.dateService.DAYS_IN_WEEK - firstWeek.length;\n    firstWeek.unshift(...this.createPrevBoundingDays(activeMonth, boundingMonth, requiredItems));\n    return [firstWeek, ...weeks];\n  }\n\n  private addNextBoundingMonth(weeks: D[][], activeMonth: D, boundingMonth: boolean): D[][] {\n    const lastWeek = weeks.pop();\n    const requiredItems: number = this.dateService.DAYS_IN_WEEK - lastWeek.length;\n    lastWeek.push(...this.createNextBoundingDays(activeMonth, boundingMonth, requiredItems));\n    return [...weeks, lastWeek];\n  }\n\n  private createPrevBoundingDays(activeMonth: D, boundingMonth: boolean, requiredItems: number): D[] {\n    const month = this.dateService.addMonth(activeMonth, -1);\n    const daysInMonth = this.dateService.getNumberOfDaysInMonth(month);\n    return this.createDateRangeForMonth(month)\n      .slice(daysInMonth - requiredItems)\n      .map(date => boundingMonth ? date : null);\n  }\n\n  private createNextBoundingDays(activeMonth: D, boundingMonth: boolean, requiredItems: number): D[] {\n    const month = this.dateService.addMonth(activeMonth, 1);\n    return this.createDateRangeForMonth(month)\n      .slice(0, requiredItems)\n      .map(date => boundingMonth ? date : null);\n  }\n\n  private getStartOfWeekDayDiff(date: D, firstDayOfWeek?: number): number {\n    const startOfMonth = this.dateService.getMonthStart(date);\n    return this.getWeekStartDiff(startOfMonth, firstDayOfWeek);\n  }\n\n  private getWeekStartDiff(date: D, firstDayOfWeek?: number): number {\n    const weekOfset = firstDayOfWeek ?? this.dateService.getFirstDayOfWeek();\n    return (7 - weekOfset + this.dateService.getDayOfWeek(date)) % 7;\n  }\n\n  private isShouldAddPrevBoundingMonth(weeks: D[][]): boolean {\n    return weeks[0].length < this.dateService.DAYS_IN_WEEK;\n  }\n\n  private isShouldAddNextBoundingMonth(weeks: D[][]): boolean {\n    return weeks[weeks.length - 1].length < this.dateService.DAYS_IN_WEEK;\n  }\n\n  private createDateRangeForMonth(date: D): D[] {\n    const daysInMonth: number = this.dateService.getNumberOfDaysInMonth(date);\n    return range(daysInMonth, i => {\n      const year = this.dateService.getYear(date);\n      const month = this.dateService.getMonth(date);\n      return this.dateService.createDate(year, month, i + 1)\n    });\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { ChangeDetectionStrategy, Component, OnInit, Input, HostBinding, SimpleChanges, OnChanges } from '@angular/core';\n\nimport { NbCalendarDay, NbCalendarSize, NbCalendarSizeValues } from '../../model';\nimport { NbDateService } from '../../services/date.service';\n\n\n@Component({\n    selector: 'nb-calendar-days-names',\n    styleUrls: ['./calendar-days-names.component.scss'],\n    template: `\n    <div class=\"day\" *ngFor=\"let day of days\" [class.holiday]=\"day.isHoliday\">{{ day.name }}</div>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbCalendarDaysNamesComponent<D> implements OnInit, OnChanges {\n\n  days: NbCalendarDay[];\n\n  @Input() size: NbCalendarSize;\n  static ngAcceptInputType_size: NbCalendarSizeValues;\n\n  @HostBinding('class.size-large')\n  get isLarge(): boolean {\n    return this.size === NbCalendarSize.LARGE;\n  }\n\n  /**\n   * Sets first day of the week, it can be 1 if week starts from monday and 0 if from sunday and so on.\n   * `undefined` means that default locale setting will be used.\n   * */\n  @Input() firstDayOfWeek: number | undefined;\n\n  constructor(private dateService: NbDateService<D>) {\n  }\n\n  ngOnInit() {\n    const days: NbCalendarDay[] = this.createDaysNames();\n    this.days = this.shiftStartOfWeek(days);\n  }\n\n  ngOnChanges({firstDayOfWeek}: SimpleChanges) {\n    if (firstDayOfWeek) {\n      const days: NbCalendarDay[] = this.createDaysNames();\n      this.days = this.shiftStartOfWeek(days);\n    }\n  }\n\n  private createDaysNames(): NbCalendarDay[] {\n    return this.dateService.getDayOfWeekNames()\n      .map(this.markIfHoliday);\n  }\n\n  private shiftStartOfWeek(days: NbCalendarDay[]): NbCalendarDay[] {\n    const firstDayOfWeek = this.firstDayOfWeek ?? this.dateService.getFirstDayOfWeek();\n    for (let i = 0; i < firstDayOfWeek; i++) {\n      days.push(days.shift());\n    }\n\n    return days;\n  }\n\n  private markIfHoliday(name, i) {\n    return { name, isHoliday: i % 6 === 0 };\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, Input, HostBinding, ChangeDetectionStrategy, OnChanges, SimpleChanges } from '@angular/core';\n\nimport { NbDateService } from '../../services/date.service';\nimport { NbCalendarSize, NbCalendarSizeValues } from '../../model';\n\n@Component({\n    selector: 'nb-calendar-week-numbers',\n    template: `\n    <div class=\"sign-container\">\n      <div class=\"sign\">{{ weekNumberSymbol }}</div>\n    </div>\n    <div class=\"week-number\" *ngFor=\"let weekNumber of weekNumbers\">{{ weekNumber }}</div>\n  `,\n    styleUrls: ['./calendar-week-number.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbCalendarWeekNumberComponent<D> implements OnChanges {\n\n  weekNumbers: number[];\n\n  @Input()\n  weeks: D[][];\n\n  @Input()\n  size: NbCalendarSize;\n  static ngAcceptInputType_size: NbCalendarSizeValues;\n\n  /**\n   * Sets symbol used as a header for week numbers column\n   * */\n  @Input() weekNumberSymbol: string;\n\n  @HostBinding('class.size-large')\n  get isLarge() {\n    return this.size === NbCalendarSize.LARGE;\n  }\n\n  constructor(private dateService: NbDateService<D>) {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.weeks) {\n      this.weekNumbers = this.getWeeks();\n    }\n  }\n\n  getWeeks(): number[] {\n    return this.weeks.map((week: D[]) => {\n      // Find last defined day as week could contain null days in case\n      // boundingMonth set to false\n      const lastDay = [ ...week ].reverse().find((day: D) => !!day);\n      // Use last day of the week to determine week number.\n      // This way weeks which span between sibling years is marked first\n      return this.dateService.getWeekNumber(lastDay);\n    });\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnChanges,\n  Output,\n  SimpleChanges,\n  Type,\n} from '@angular/core';\n\nimport { NbCalendarMonthModelService } from '../../services/calendar-month-model.service';\nimport { NbCalendarDayCellComponent } from './calendar-day-cell.component';\nimport { NbCalendarCell, NbCalendarSize, NbCalendarSizeValues } from '../../model';\nimport { convertToBoolProperty, NbBooleanInput } from '../../../helpers';\n\n\n/**\n * Provides capability pick days.\n * */\n@Component({\n    selector: 'nb-calendar-day-picker',\n    template: `\n    <nb-calendar-week-numbers *ngIf=\"showWeekNumber\"\n                              [weeks]=\"weeks\"\n                              [size]=\"size\"\n                              [weekNumberSymbol]=\"weekNumberSymbol\">\n    </nb-calendar-week-numbers>\n    <div class=\"days-container\">\n      <nb-calendar-days-names [size]=\"size\" [firstDayOfWeek]=\"firstDayOfWeek\"></nb-calendar-days-names>\n      <nb-calendar-picker\n          [data]=\"weeks\"\n          [visibleDate]=\"visibleDate\"\n          [selectedValue]=\"date\"\n          [cellComponent]=\"cellComponent\"\n          [min]=\"min\"\n          [max]=\"max\"\n          [filter]=\"filter\"\n          [size]=\"size\"\n          (select)=\"onSelect($event)\">\n      </nb-calendar-picker>\n    </div>\n  `,\n    styleUrls: ['./calendar-day-picker.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbCalendarDayPickerComponent<D, T> implements OnChanges {\n\n  /**\n   * Describes which month picker have to render.\n   * */\n  @Input() visibleDate: D;\n\n  /**\n   * Defines if we should render previous and next months\n   * in the current month view.\n   * */\n  @Input() boundingMonths: boolean = true;\n\n  /**\n   * Minimum available date for selection.\n   * */\n  @Input() min: D;\n\n  /**\n   * Maximum available date for selection.\n   * */\n  @Input() max: D;\n\n  /**\n   * Predicate that decides which cells will be disabled.\n   * */\n  @Input() filter: (D) => boolean;\n\n  /**\n   * Custom day cell component. Have to implement `NbCalendarCell` interface.\n   * */\n  @Input('cellComponent')\n  set setCellComponent(cellComponent: Type<NbCalendarCell<D, T>>) {\n    if (cellComponent) {\n      this.cellComponent = cellComponent;\n    }\n  }\n  cellComponent: Type<NbCalendarCell<any, any>> = NbCalendarDayCellComponent;\n\n  /**\n   * Size of the component.\n   * Can be 'medium' which is default or 'large'.\n   * */\n  @Input() size: NbCalendarSize = NbCalendarSize.MEDIUM;\n  static ngAcceptInputType_size: NbCalendarSizeValues;\n\n  /**\n   * Already selected date.\n   * */\n  @Input() date: T;\n\n  /**\n   * Determines should we show week numbers column.\n   * False by default.\n   * */\n  @Input()\n  get showWeekNumber(): boolean {\n    return this._showWeekNumber;\n  }\n  set showWeekNumber(value: boolean) {\n    this._showWeekNumber = convertToBoolProperty(value);\n  }\n  protected _showWeekNumber: boolean = false;\n  static ngAcceptInputType_showWeekNumber: NbBooleanInput;\n\n  /**\n   * Sets symbol used as a header for week numbers column\n   * */\n  @Input() weekNumberSymbol: string;\n\n  /**\n   * Sets first day of the week, it can be 1 if week starts from monday and 0 if from sunday and so on.\n   * `undefined` means that default locale setting will be used.\n   * */\n  @Input() firstDayOfWeek: number | undefined;\n\n  /**\n   * Fires newly selected date.\n   * */\n  @Output() dateChange = new EventEmitter<D>();\n\n  @HostBinding('class.size-large')\n  get large() {\n    return this.size === NbCalendarSize.LARGE;\n  }\n\n  /**\n   * Day picker model.\n   * Provides all days in current month and if boundingMonth is true some days\n   * from previous and next one.\n   * */\n  weeks: D[][];\n\n  constructor(private monthModel: NbCalendarMonthModelService<D>) {\n  }\n\n  ngOnChanges({ visibleDate, boundingMonths, firstDayOfWeek }: SimpleChanges) {\n    if (visibleDate || boundingMonths || firstDayOfWeek) {\n      this.weeks = this.monthModel.createDaysGrid(this.visibleDate, this.boundingMonths, this.firstDayOfWeek);\n    }\n  }\n\n  onSelect(day: D) {\n    this.dateChange.emit(day);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, EventEmitter, HostBinding, Input, OnInit, Output, Type } from '@angular/core';\n\nimport { NbCalendarYearModelService } from '../calendar-kit/services/calendar-year-model.service';\nimport {\n  NbCalendarCell,\n  NbCalendarSize,\n  NbCalendarViewMode,\n  NbCalendarSizeValues,\n  NbCalendarViewModeValues,\n} from '../calendar-kit/model';\nimport { NbDateService } from '../calendar-kit/services/date.service';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\n\n/**\n * The basis for calendar and range calendar components.\n * Encapsulates common behavior - store calendar state and perform navigation\n * between pickers.\n * */\n@Component({\n    selector: 'nb-base-calendar',\n    templateUrl: './base-calendar.component.html',\n    standalone: false\n})\nexport class NbBaseCalendarComponent<D, T> implements OnInit {\n\n  /**\n   * Defines if we should render previous and next months\n   * in the current month view.\n   * */\n  @Input() boundingMonth: boolean = true;\n\n  /**\n   * Defines active view for calendar.\n   * */\n  @Input('startView') activeViewMode: NbCalendarViewMode = NbCalendarViewMode.DATE;\n  static ngAcceptInputType_activeViewMode: NbCalendarViewModeValues;\n\n  /**\n   * Minimum available date for selection.\n   * */\n  @Input() min: D;\n\n  /**\n   * Maximum available date for selection.\n   * */\n  @Input() max: D;\n\n  /**\n   * Predicate that decides which cells will be disabled.\n   * */\n  @Input() filter: (D) => boolean;\n\n  /**\n   * Custom day cell component. Have to implement `NbCalendarCell` interface.\n   * */\n  @Input() dayCellComponent: Type<NbCalendarCell<D, T>>;\n\n  /**\n   * Custom month cell component. Have to implement `NbCalendarCell` interface.\n   * */\n  @Input() monthCellComponent: Type<NbCalendarCell<D, T>>;\n\n  /**\n   * Custom year cell component. Have to implement `NbCalendarCell` interface.\n   * */\n  @Input() yearCellComponent: Type<NbCalendarCell<D, T>>;\n\n  /**\n   * Size of the calendar and entire components.\n   * Can be 'medium' which is default or 'large'.\n   * */\n  @Input() size: NbCalendarSize = NbCalendarSize.MEDIUM;\n  static ngAcceptInputType_size: NbCalendarSizeValues;\n\n  @Input() visibleDate: D;\n\n  /**\n   * Determines whether we should show calendar navigation or not.\n   * */\n  @Input()\n  @HostBinding('class.has-navigation')\n  showNavigation: boolean = true;\n\n  /**\n   * Value which will be rendered as selected.\n   * */\n  @Input() date: T;\n\n  /**\n   * Determines should we show week numbers column.\n   * False by default.\n   * */\n  @Input()\n  @HostBinding('class.has-week-number')\n  get showWeekNumber(): boolean {\n    return this._showWeekNumber;\n  }\n  set showWeekNumber(value: boolean) {\n    this._showWeekNumber = convertToBoolProperty(value);\n  }\n  protected _showWeekNumber = false;\n  static ngAcceptInputType_showWeekNumber: NbBooleanInput;\n\n  /**\n   * Sets symbol used as a header for week numbers column\n   * */\n  @Input() weekNumberSymbol: string;\n\n  /**\n   * Sets first day of the week, it can be 1 if week starts from monday and 0 if from sunday and so on.\n   * `undefined` means that default locale setting will be used.\n   * */\n  @Input() firstDayOfWeek: number | undefined;\n\n  /**\n   * Emits date when selected.\n   * */\n  @Output() dateChange: EventEmitter<T> = new EventEmitter();\n\n  constructor(\n    protected dateService: NbDateService<D>,\n    protected yearModelService: NbCalendarYearModelService<D>,\n  ) {}\n\n  ngOnInit() {\n    if (!this.visibleDate) {\n      this.visibleDate = this.dateService.today();\n    }\n  }\n\n  @HostBinding('class.size-large')\n  get large() {\n    return this.size === NbCalendarSize.LARGE;\n  }\n\n  ViewMode = NbCalendarViewMode;\n\n  setViewMode(viewMode: NbCalendarViewMode) {\n    this.activeViewMode = viewMode;\n  }\n\n  setVisibleDate(visibleDate: D) {\n    this.visibleDate = visibleDate;\n  }\n\n  prevMonth() {\n    this.changeVisibleMonth(-1);\n  }\n\n  nextMonth() {\n    this.changeVisibleMonth(1);\n  }\n\n  prevYear() {\n    this.changeVisibleYear(-1);\n  }\n\n  nextYear() {\n    this.changeVisibleYear(1);\n  }\n\n  prevYears() {\n    this.changeVisibleYears(-1);\n  }\n\n  nextYears() {\n    this.changeVisibleYears(1);\n  }\n\n  navigatePrev() {\n    switch (this.activeViewMode) {\n      case NbCalendarViewMode.DATE:\n        return this.prevMonth();\n      case NbCalendarViewMode.MONTH:\n        return this.prevYear();\n      case NbCalendarViewMode.YEAR:\n        return this.prevYears();\n    }\n  }\n\n  navigateNext() {\n    switch (this.activeViewMode) {\n      case NbCalendarViewMode.DATE:\n        return this.nextMonth();\n      case NbCalendarViewMode.MONTH:\n        return this.nextYear();\n      case NbCalendarViewMode.YEAR:\n        return this.nextYears();\n    }\n  }\n\n  onChangeViewMode() {\n    if (this.activeViewMode === NbCalendarViewMode.DATE) {\n      return this.setViewMode(NbCalendarViewMode.YEAR);\n    }\n\n    this.setViewMode(NbCalendarViewMode.DATE);\n  }\n\n  private changeVisibleMonth(direction: number) {\n    this.visibleDate = this.dateService.addMonth(this.visibleDate, direction);\n  }\n\n  private changeVisibleYear(direction: number) {\n    this.visibleDate = this.dateService.addYear(this.visibleDate, direction);\n  }\n\n  private changeVisibleYears(direction: number) {\n    this.visibleDate = this.dateService.addYear(this.visibleDate, direction * this.yearModelService.getYearsInView());\n  }\n}\n","<nb-card>\n  <nb-card-header *ngIf=\"showNavigation\" class=\"calendar-navigation\">\n    <nb-calendar-view-mode [date]=\"visibleDate\"\n                           [viewMode]=\"activeViewMode\"\n                           (changeMode)=\"onChangeViewMode()\">\n    </nb-calendar-view-mode>\n\n    <nb-calendar-pageable-navigation (prev)=\"navigatePrev()\" (next)=\"navigateNext()\">\n    </nb-calendar-pageable-navigation>\n  </nb-card-header>\n\n  <nb-card-body [ngSwitch]=\"activeViewMode\">\n\n    <nb-calendar-day-picker *ngSwitchCase=\"ViewMode.DATE\"\n                            [boundingMonths]=\"boundingMonth\"\n                            [cellComponent]=\"dayCellComponent\"\n                            [min]=\"min\"\n                            [max]=\"max\"\n                            [filter]=\"filter\"\n                            [visibleDate]=\"visibleDate\"\n                            [size]=\"size\"\n                            [date]=\"date\"\n                            [showWeekNumber]=\"showWeekNumber\"\n                            [firstDayOfWeek]=\"firstDayOfWeek\"\n                            (dateChange)=\"dateChange.emit($any($event))\"\n                            [weekNumberSymbol]=\"weekNumberSymbol\">\n    </nb-calendar-day-picker>\n\n    <nb-calendar-year-picker *ngSwitchCase=\"ViewMode.YEAR\"\n                             [cellComponent]=\"yearCellComponent\"\n                             [date]=\"$any(date)\"\n                             [min]=\"min\"\n                             [max]=\"max\"\n                             [filter]=\"filter\"\n                             [size]=\"size\"\n                             [year]=\"visibleDate\"\n                             (yearChange)=\"setVisibleDate($event); setViewMode(ViewMode.MONTH)\">\n    </nb-calendar-year-picker>\n\n    <nb-calendar-month-picker *ngSwitchCase=\"ViewMode.MONTH\"\n                              [cellComponent]=\"monthCellComponent\"\n                              [min]=\"min\"\n                              [max]=\"max\"\n                              [filter]=\"filter\"\n                              [size]=\"size\"\n                              [month]=\"visibleDate\"\n                              [date]=\"$any(date)\"\n                              (monthChange)=\"setVisibleDate($event); setViewMode(ViewMode.DATE)\">\n    </nb-calendar-month-picker>\n\n  </nb-card-body>\n\n</nb-card>\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, EventEmitter, Input, Output, Type } from '@angular/core';\n\nimport {\n  NbCalendarCell,\n  NbCalendarSize,\n  NbCalendarViewMode,\n  NbCalendarSizeValues,\n  NbCalendarViewModeValues,\n} from '../calendar-kit/model';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\n\n\n/**\n * Calendar component provides a capability to choose a date.\n *\n * ```html\n * <nb-calendar [(date)]=\"date\"></nb-calendar>\n * <nb-calendar [date]=\"date\" (dateChange)=\"handleDateChange($event)\"></nb-calendar>\n * ```\n *\n * Basic usage example\n * @stacked-example(Showcase, calendar/calendar-showcase.component)\n *\n * ### Installation\n *\n * Import `NbCalendarModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbCalendarModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * If you want to select ranges you can use `NbCalendarRangeComponent`.\n *\n * ```html\n * <nb-calendar-range [(range)]=\"range\"></nb-calendar-range>\n * <nb-calendar-range [range]=\"range\" (rangeChange)=\"handleRangeChange($event)\"></nb-calendar-range>\n * ```\n *\n * In order to use it, you have to import `NbCalendarRangeModule`.\n * @stacked-example(Range, calendar/calendar-range-showcase.component)\n *\n * The calendar component is supplied with a calendar navigation that contains navigate buttons.\n * If you do not want to use it you can hide calendar navigation using `showNavigation` property.\n * @stacked-example(Without navigation, calendar/calendar-without-navigation.component)\n *\n * As you can see in the basic usage example calendar contains previous and next month days\n * which can be disabled using `boundingMonth` property.\n * @stacked-example(Bounding months, calendar/calendar-bounding-month.component)\n *\n * You can define starting view of the calendar by setting `startView` property.\n * Available values: year, month and date.\n * @stacked-example(Start view, calendar/calendar-start-view.component)\n *\n * You can use a larger version of the calendar by defining size property.\n * Available values: medium(which is default) and large.\n * @stacked-example(Size, calendar/calendar-size.component)\n *\n * Calendar supports min and max dates which disables values out of min-max range.\n * @stacked-example(Borders, calendar/calendar-min-max.component)\n *\n * Also, you can define custom filter property that should be predicate which receives\n * date and returns false if this date has to be disabled. In this example, we provide the filter\n * which disables weekdays.\n * @stacked-example(Filter, calendar/calendar-filter.component)\n *\n * Week numbers column could be enabled via `showWeekNumber` binding:\n * @stacked-example(Week number, calendar/calendar-week-number.component)\n *\n * If you need create custom cells you can easily provide custom components for\n * calendar. For examples if you want to show any average price under each date you can\n * just provide custom `dayCellComponent`. Custom cells for month and year can be provided\n * the same way, check API reference.\n * @stacked-example(Custom day cell, calendar/calendar-custom-day-cell-showcase.component)\n *\n * @styles\n *\n * calendar-width:\n * calendar-background-color:\n * calendar-border-color:\n * calendar-border-style:\n * calendar-border-width:\n * calendar-border-radius:\n * calendar-text-color:\n * calendar-text-font-family:\n * calendar-text-font-size:\n * calendar-text-font-weight:\n * calendar-text-line-height:\n * calendar-picker-padding-top:\n * calendar-picker-padding-bottom:\n * calendar-picker-padding-start:\n * calendar-picker-padding-end:\n * calendar-navigation-text-color:\n * calendar-navigation-text-font-family:\n * calendar-navigation-title-text-font-size:\n * calendar-navigation-title-text-font-weight:\n * calendar-navigation-title-text-line-height:\n * calendar-navigation-padding:\n * calendar-cell-inactive-text-color:\n * calendar-cell-disabled-text-color:\n * calendar-cell-hover-background-color:\n * calendar-cell-hover-border-color:\n * calendar-cell-hover-text-color:\n * calendar-cell-hover-text-font-size:\n * calendar-cell-hover-text-font-weight:\n * calendar-cell-hover-text-line-height:\n * calendar-cell-active-background-color:\n * calendar-cell-active-border-color:\n * calendar-cell-active-text-color:\n * calendar-cell-active-text-font-size:\n * calendar-cell-active-text-font-weight:\n * calendar-cell-active-text-line-height:\n * calendar-cell-today-background-color:\n * calendar-cell-today-border-color:\n * calendar-cell-today-text-color:\n * calendar-cell-today-text-font-size:\n * calendar-cell-today-text-font-weight:\n * calendar-cell-today-text-line-height:\n * calendar-cell-today-hover-background-color:\n * calendar-cell-today-hover-border-color:\n * calendar-cell-today-active-background-color:\n * calendar-cell-today-active-border-color:\n * calendar-cell-today-disabled-border-color:\n * calendar-cell-today-selected-background-color:\n * calendar-cell-today-selected-border-color:\n * calendar-cell-today-selected-text-color:\n * calendar-cell-today-selected-hover-background-color:\n * calendar-cell-today-selected-hover-border-color:\n * calendar-cell-today-selected-active-background-color:\n * calendar-cell-today-selected-active-border-color:\n * calendar-cell-today-in-range-background-color:\n * calendar-cell-today-in-range-border-color:\n * calendar-cell-today-in-range-text-color:\n * calendar-cell-today-in-range-hover-background-color:\n * calendar-cell-today-in-range-hover-border-color:\n * calendar-cell-today-in-range-active-background-color:\n * calendar-cell-today-in-range-active-border-color:\n * calendar-cell-selected-background-color:\n * calendar-cell-selected-border-color:\n * calendar-cell-selected-text-color:\n * calendar-cell-selected-text-font-size:\n * calendar-cell-selected-text-font-weight:\n * calendar-cell-selected-text-line-height:\n * calendar-cell-selected-hover-background-color:\n * calendar-cell-selected-hover-border-color:\n * calendar-cell-selected-active-background-color:\n * calendar-cell-selected-active-border-color:\n * calendar-day-cell-width:\n * calendar-day-cell-height:\n * calendar-month-cell-width:\n * calendar-month-cell-height:\n * calendar-year-cell-width:\n * calendar-year-cell-height:\n * calendar-weekday-background:\n * calendar-weekday-divider-color:\n * calendar-weekday-divider-width:\n * calendar-weekday-text-color:\n * calendar-weekday-text-font-size:\n * calendar-weekday-text-font-weight:\n * calendar-weekday-text-line-height:\n * calendar-weekday-holiday-text-color:\n * calendar-weekday-height:\n * calendar-weekday-width:\n * calendar-weeknumber-background:\n * calendar-weeknumber-divider-color:\n * calendar-weeknumber-divider-width:\n * calendar-weeknumber-text-color:\n * calendar-weeknumber-text-font-size:\n * calendar-weeknumber-text-font-weight:\n * calendar-weeknumber-text-line-height:\n * calendar-weeknumber-height:\n * calendar-weeknumber-width:\n * calendar-large-width:\n * calendar-day-cell-large-width:\n * calendar-day-cell-large-height:\n * calendar-weekday-large-height:\n * calendar-weekday-large-width:\n * calendar-weeknumber-large-height:\n * calendar-weeknumber-large-width:\n * calendar-month-cell-large-width:\n * calendar-month-cell-large-height:\n * calendar-year-cell-large-width:\n * calendar-year-cell-large-height:\n * */\n@Component({\n    selector: 'nb-calendar',\n    template: `\n    <nb-base-calendar\n      [boundingMonth]=\"boundingMonth\"\n      [startView]=\"startView\"\n      [date]=\"date\"\n      [min]=\"min\"\n      [max]=\"max\"\n      [filter]=\"filter\"\n      [dayCellComponent]=\"dayCellComponent\"\n      [monthCellComponent]=\"monthCellComponent\"\n      [yearCellComponent]=\"yearCellComponent\"\n      [size]=\"size\"\n      [visibleDate]=\"visibleDate\"\n      [showNavigation]=\"showNavigation\"\n      [showWeekNumber]=\"showWeekNumber\"\n      [weekNumberSymbol]=\"weekNumberSymbol\"\n      [firstDayOfWeek]=\"firstDayOfWeek\"\n      (dateChange)=\"dateChange.emit($event)\"\n    ></nb-base-calendar>\n  `,\n    standalone: false\n})\nexport class NbCalendarComponent<D> {\n\n  /**\n   * Defines if we should render previous and next months\n   * in the current month view.\n   * */\n  @Input() boundingMonth: boolean = true;\n\n  /**\n   * Defines starting view for calendar.\n   * */\n  @Input() startView: NbCalendarViewMode = NbCalendarViewMode.DATE;\n  static ngAcceptInputType_startView: NbCalendarViewModeValues;\n\n  /**\n   * Minimum available date for selection.\n   * */\n  @Input() min: D;\n\n  /**\n   * Maximum available date for selection.\n   * */\n  @Input() max: D;\n\n  /**\n   * Predicate that decides which cells will be disabled.\n   * */\n  @Input() filter: (D) => boolean;\n\n  /**\n   * Custom day cell component. Have to implement `NbCalendarCell` interface.\n   * */\n  @Input() dayCellComponent: Type<NbCalendarCell<D, D>>;\n\n  /**\n   * Custom month cell component. Have to implement `NbCalendarCell` interface.\n   * */\n  @Input() monthCellComponent: Type<NbCalendarCell<D, D>>;\n\n  /**\n   * Custom year cell component. Have to implement `NbCalendarCell` interface.\n   * */\n  @Input() yearCellComponent: Type<NbCalendarCell<D, D>>;\n\n  /**\n   * Size of the calendar and entire components.\n   * Can be 'medium' which is default or 'large'.\n   * */\n  @Input() size: NbCalendarSize = NbCalendarSize.MEDIUM;\n  static ngAcceptInputType_size: NbCalendarSizeValues;\n\n  @Input() visibleDate: D;\n\n  /**\n   * Determines should we show calendars navigation or not.\n   * */\n  @Input() showNavigation: boolean = true;\n\n  /**\n   * Date which will be rendered as selected.\n   * */\n  @Input() date: D;\n\n  /**\n   * Determines should we show week numbers column.\n   * False by default.\n   * */\n  @Input()\n  get showWeekNumber(): boolean {\n    return this._showWeekNumber;\n  }\n  set showWeekNumber(value: boolean) {\n    this._showWeekNumber = convertToBoolProperty(value);\n  }\n  protected _showWeekNumber: boolean = false;\n  static ngAcceptInputType_showWeekNumber: NbBooleanInput;\n\n  /**\n   * Sets symbol used as a header for week numbers column\n   * */\n  @Input() weekNumberSymbol: string = '#';\n\n  /**\n   * Sets first day of the week, it can be 1 if week starts from monday and 0 if from sunday and so on.\n   * `undefined` means that default locale setting will be used.\n   * */\n  @Input() firstDayOfWeek: number | undefined;\n\n  /**\n   * Emits date when selected.\n   * */\n  @Output() dateChange: EventEmitter<D> = new EventEmitter();\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\n\nimport { NbButtonComponent } from './button.component';\n\nconst NB_BUTTON_COMPONENTS = [\n  NbButtonComponent,\n];\n\n@NgModule({\n  imports: [\n    NbSharedModule,\n  ],\n  declarations: [\n    ...NB_BUTTON_COMPONENTS,\n  ],\n  exports: [\n    ...NB_BUTTON_COMPONENTS,\n  ],\n})\nexport class NbButtonModule { }\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { FormatWidth, getLocaleTimeFormat } from '@angular/common';\nimport {\n  DatePipe,\n  FormStyle,\n  getLocaleDayNames,\n  getLocaleFirstDayOfWeek,\n  getLocaleMonthNames,\n  TranslationWidth,\n} from '@angular/common';\n\nimport { NbDateService } from './date.service';\n\n/**\n * The `NbNativeDateService` is basic implementation of `NbDateService` using\n * native js date objects and angular localization services.\n * */\n@Injectable()\nexport class NbNativeDateService extends NbDateService<Date> {\n  protected datePipe: DatePipe;\n\n  constructor(@Inject(LOCALE_ID) locale: string) {\n    super();\n    this.setLocale(locale);\n  }\n\n  setLocale(locale: string) {\n    super.setLocale(locale);\n    this.datePipe = new DatePipe(locale);\n  }\n\n\n  setHours(date: Date, hour: number): Date {\n    const result: Date = this.clone(date);\n    result.setHours(hour);\n\n    return result;\n  }\n\n  setMinutes(date: Date, minute: number): Date {\n    const result: Date = this.clone(date);\n    result.setMinutes(minute);\n\n    return result;\n  }\n\n  setSeconds(date: Date, second: number): Date {\n    const result: Date = this.clone(date);\n    result.setSeconds(second);\n\n    return result;\n  }\n\n  setMilliseconds(date: Date, second: number): Date {\n    const result: Date = this.clone(date);\n    result.setMilliseconds(second);\n\n    return result;\n  }\n\n  isValidDateString(date: string, format: string): boolean {\n    return !isNaN(this.parse(date, format).getTime());\n  }\n\n  isValidTimeString(date: string, format: string): boolean {\n    return this.isValidDateString(date, format);\n  }\n\n  today(): Date {\n    return new Date();\n  }\n\n  getLocaleTimeFormat(): string {\n    return getLocaleTimeFormat(this.locale, FormatWidth.Short);\n  }\n\n  getDate(date: Date): number {\n    return date.getDate();\n  }\n\n  getMonth(date: Date): number {\n    return date.getMonth();\n  }\n\n  getYear(date: Date): number {\n    return date.getFullYear();\n  }\n\n  getDayOfWeek(date: Date): number {\n    return date.getDay();\n  }\n\n  /**\n   * returns first day of the week, it can be 1 if week starts from monday\n   * and 0 if from sunday and so on.\n   * */\n  getFirstDayOfWeek(): number {\n    return getLocaleFirstDayOfWeek(this.locale);\n  }\n\n  getMonthName(date: Date, style: TranslationWidth = TranslationWidth.Abbreviated): string {\n    const index: number = date.getMonth();\n    return this.getMonthNameByIndex(index, style);\n  }\n\n  getMonthNameByIndex(index: number, style: TranslationWidth = TranslationWidth.Abbreviated): string {\n    return getLocaleMonthNames(this.locale, FormStyle.Format, style)[index];\n  }\n\n  getDayOfWeekNames(): string[] {\n    return [...getLocaleDayNames(this.locale, FormStyle.Format, TranslationWidth.Short)];\n  }\n\n  format(date: Date, format: string): string {\n    return this.datePipe.transform(date, format);\n  }\n\n  /**\n   * We haven't got capability to parse date using formatting without third party libraries.\n   * */\n  parse(date: string, format: string): Date {\n    return new Date(Date.parse(date));\n  }\n\n  addDay(date: Date, num: number): Date {\n    return this.createDate(date.getFullYear(), date.getMonth(), date.getDate() + num);\n  }\n\n  addMonth(date: Date, num: number): Date {\n    const month = this.createDate(date.getFullYear(), date.getMonth() + num, 1);\n    // In case of date has more days than calculated month js Date will change that month to the next one\n    // because of the date overflow.\n    month.setDate(Math.min(date.getDate(), this.getMonthEnd(month).getDate()));\n    return month;\n  }\n\n  addMinutes(date: Date, minute: number): Date {\n    const result: Date = new Date(date);\n    result.setMinutes(date.getMinutes() + minute);\n\n    return result;\n  }\n\n  addHours(date: Date, hour: number): Date {\n    const result: Date = new Date(date);\n    result.setHours(date.getHours() + hour);\n\n    return result;\n  }\n\n  getHours(date: Date): number {\n    return date.getHours();\n  }\n\n  getMinutes(date: Date): number {\n    return date.getMinutes();\n  }\n\n  getSeconds(date: Date): number {\n    return date.getSeconds();\n  }\n\n  getMilliseconds(date: Date): number {\n    return date.getMilliseconds();\n  }\n\n  addYear(date: Date, num: number): Date {\n    return this.createDate(date.getFullYear() + num, date.getMonth(), date.getDate());\n  }\n\n  clone(date: Date): Date {\n    return new Date(date.getTime());\n  }\n\n  compareDates(date1: Date, date2: Date): number {\n    return date1.getTime() - date2.getTime();\n  }\n\n  createDate(year: number, month: number, date: number): Date {\n    const result = new Date(year, month, date);\n\n    // We need to correct for the fact that JS native Date treats years in range [0, 99] as\n    // abbreviations for 19xx.\n    if (year >= 0 && year < 100) {\n      result.setFullYear(result.getFullYear() - 1900);\n    }\n    return result;\n  }\n\n  getMonthEnd(date: Date): Date {\n    return this.createDate(date.getFullYear(), date.getMonth() + 1, 0);\n  }\n\n  getMonthStart(date: Date): Date {\n    return this.createDate(date.getFullYear(), date.getMonth(), 1);\n  }\n\n  getNumberOfDaysInMonth(date: Date): number {\n    return this.getMonthEnd(date).getDate();\n  }\n\n  getYearEnd(date: Date): Date {\n    return this.createDate(date.getFullYear(), 11, 31);\n  }\n\n  getYearStart(date: Date): Date {\n    return this.createDate(date.getFullYear(), 0, 1);\n  }\n\n  valueOf(date: Date): number {\n    return date.valueOf();\n  }\n\n  isSameDay(date1: Date, date2: Date): boolean {\n    return this.isSameMonth(date1, date2) &&\n      date1.getDate() === date2.getDate();\n  }\n\n  isSameMonth(date1: Date, date2: Date): boolean {\n    return this.isSameYear(date1, date2) &&\n      date1.getMonth() === date2.getMonth();\n  }\n\n  isSameYear(date1: Date, date2: Date): boolean {\n    return date1.getFullYear() === date2.getFullYear();\n  }\n\n  getId(): string {\n    return 'native';\n  }\n\n  getWeekNumber(date: Date): number {\n    return parseInt(this.datePipe.transform(date, 'w'), 10);\n  }\n\n  getDateFormat(): string {\n    return 'yyyy-MM-dd';\n  }\n\n  getTwelveHoursFormat(): string {\n    return 'hh:mm a';\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { NbDateService } from './date.service';\n\n\n@Injectable()\nexport class NbCalendarTimeModelService<D> {\n  readonly MINUTES_AND_SECONDS = 60;\n\n  constructor(protected dateService: NbDateService<D>) {\n  }\n\n  getHoursRange(step: number = this.MINUTES_AND_SECONDS): D[] {\n    let date: D = this.getResetTime();\n\n    const endDate = this.dateService.addDay(date, 1);\n\n    const result: D[] = [];\n\n    while (this.dateService.compareDates(date, endDate) < 0) {\n      result.push(date);\n      date = this.dateService.addMinutes(date, step);\n    }\n\n    return result;\n  }\n\n  getResetTime(): D {\n    let today = this.dateService.today();\n    today = this.dateService.setHours(today, 0);\n    today = this.dateService.setMinutes(today, 0);\n    today = this.dateService.setSeconds(today, 0);\n    today = this.dateService.setMilliseconds(today, 0);\n\n    return today;\n  }\n\n  paddToTwoSymbols(n: number): string {\n    if (n < 10) {\n      return '0' + n;\n    }\n\n    return n.toString();\n  }\n\n  buildDateFormat(twelveHoursFormat: boolean, withSeconds: boolean = false): string {\n    if (twelveHoursFormat) {\n      return `${this.dateService.getDateFormat()} ${this.dateService.getTwelveHoursFormat()}`\n    }\n\n    if (withSeconds) {\n      return `${this.dateService.getDateFormat()} ${this.dateService.getTwentyFourHoursFormatWithSeconds()}`\n    }\n\n    return `${this.dateService.getDateFormat()} ${this.dateService.getTwentyFourHoursFormat()}`\n  }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n    selector: 'nb-calendar-actions',\n    template: `\n    <button\n      *ngIf=\"showCurrentTimeButton\"\n      nbButton\n      ghost\n      status=\"primary\"\n      size=\"small\"\n      (click)=\"setCurrentTime.emit()\">\n      {{ currentTimeText }}</button>\n    <button\n      class=\"apply-text-button\"\n      nbButton\n      status=\"primary\"\n      size=\"small\"\n      (click)=\"saveValue.emit()\">\n      {{ applyText }}</button>\n  `,\n    styleUrls: ['./calendar-actions.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbCalendarActionsComponent {\n  @Input() set applyButtonText(value: string) {\n    if (value) {\n      this._applyButtonText = value;\n    }\n  };\n  get applyText() {\n    return this._applyButtonText;\n  };\n  protected _applyButtonText = 'ok';\n\n  @Input() set currentTimeButtonText(value: string) {\n    if (value) {\n      this._currentTimeButtonText = value;\n    }\n  }\n  get currentTimeText() {\n    return this._currentTimeButtonText;\n  };\n  _currentTimeButtonText = 'now';\n\n  @Input() showCurrentTimeButton: boolean;\n\n  @Output() setCurrentTime: EventEmitter<void> = new EventEmitter();\n  @Output() saveValue: EventEmitter<void> = new EventEmitter();\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\nimport { DatePipe } from '@angular/common';\n\nimport { NbSharedModule } from '../shared/shared.module';\nimport { NbButtonModule } from '../button/button.module';\nimport { NbIconModule } from '../icon/icon.module';\n\nimport { NbCalendarMonthModelService } from './services/calendar-month-model.service';\nimport { NbDateService } from './services/date.service';\n\nimport { NbCalendarDayCellComponent } from './components/calendar-day-picker/calendar-day-cell.component';\nimport { NbCalendarDayPickerComponent } from './components/calendar-day-picker/calendar-day-picker.component';\nimport { NbCalendarDaysNamesComponent } from './components/calendar-days-names/calendar-days-names.component';\nimport { NbCalendarMonthCellComponent } from './components/calendar-month-picker/calendar-month-cell.component';\nimport { NbCalendarMonthPickerComponent } from './components/calendar-month-picker/calendar-month-picker.component';\nimport { NbCalendarViewModeComponent } from './components/calendar-navigation/calendar-view-mode.component';\nimport {\n  NbCalendarPageableNavigationComponent,\n} from './components/calendar-navigation/calendar-pageable-navigation.component';\nimport { NbCalendarPickerComponent } from './components/calendar-picker/calendar-picker.component';\nimport { NbCalendarPickerRowComponent } from './components/calendar-picker/calendar-picker-row.component';\nimport { NbCalendarYearCellComponent } from './components/calendar-year-picker/calendar-year-cell.component';\nimport { NbCalendarYearPickerComponent } from './components/calendar-year-picker/calendar-year-picker.component';\nimport { NbCalendarWeekNumberComponent } from './components/calendar-week-number/calendar-week-number.component';\n\nimport { NbNativeDateService } from './services/native-date.service';\nimport { NbCalendarYearModelService } from './services/calendar-year-model.service';\nimport { NbCalendarTimeModelService } from './services/calendar-time-model.service';\nimport { NbCalendarActionsComponent } from './components/calendar-actions/calendar-actions.component';\n\n\nconst SERVICES = [\n  { provide: NbDateService, useClass: NbNativeDateService },\n  DatePipe,\n  NbCalendarMonthModelService,\n  NbCalendarYearModelService,\n  NbCalendarTimeModelService,\n];\n\nconst COMPONENTS = [\n  NbCalendarViewModeComponent,\n  NbCalendarPageableNavigationComponent,\n  NbCalendarDaysNamesComponent,\n  NbCalendarYearPickerComponent,\n  NbCalendarMonthPickerComponent,\n  NbCalendarDayPickerComponent,\n  NbCalendarDayCellComponent,\n  NbCalendarActionsComponent,\n  NbCalendarMonthCellComponent,\n  NbCalendarYearCellComponent,\n  NbCalendarPickerRowComponent,\n  NbCalendarPickerComponent,\n  NbCalendarWeekNumberComponent,\n];\n\n/**\n * `NbCalendarKitModule` is a module that contains multiple useful components for building custom calendars.\n * So if you think our calendars is not enough powerful for you just use calendar-kit and build your own calendar!\n *\n * Available components:\n * - `NbCalendarDayPicker`\n * - `NbCalendarDayCell`\n * - `NbCalendarMonthPicker`\n * - `NbCalendarMonthCell`\n * - `NbCalendarYearPicker`\n * - `NbCalendarYearCell`\n * - `NbCalendarViewModeComponent`\n * - `NbCalendarPageableNavigation`\n *\n * For example you can easily build full calendar:\n * @stacked-example(Full calendar, calendar-kit/calendar-kit-full-calendar.component)\n * */\n@NgModule({\n  imports: [ NbSharedModule, NbButtonModule, NbIconModule ],\n  exports: [...COMPONENTS],\n  declarations: [...COMPONENTS],\n  providers: [...SERVICES],\n})\nexport class NbCalendarKitModule {\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\nimport { NbCalendarKitModule } from '../calendar-kit/calendar-kit.module';\nimport { NbCardModule } from '../card/card.module';\nimport { NbBaseCalendarComponent } from './base-calendar.component';\n\n\n@NgModule({\n  imports: [NbCalendarKitModule, NbSharedModule, NbCardModule],\n  exports: [NbBaseCalendarComponent],\n  declarations: [NbBaseCalendarComponent],\n})\nexport class NbBaseCalendarModule {\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NbCalendarComponent } from './calendar.component';\nimport { NbBaseCalendarModule } from './base-calendar.module';\n\n\n@NgModule({\n  imports: [NbBaseCalendarModule],\n  exports: [NbCalendarComponent],\n  declarations: [NbCalendarComponent],\n})\nexport class NbCalendarModule {\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NbCalendarRange } from './calendar-range.component';\n\nexport abstract class NbBaseCalendarRangeCell<D> {\n  abstract selectedValue: NbCalendarRange<D>;\n\n  get hasRange(): boolean {\n    return !!(this.selectedValue && this.selectedValue.start && this.selectedValue.end);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  Component,\n  ChangeDetectionStrategy,\n  Input,\n  Output,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n} from '@angular/core';\n\nimport { NbCalendarCell, NbCalendarSize, NbCalendarSizeValues } from '../calendar-kit/model';\nimport { NbCalendarRange } from './calendar-range.component';\nimport { NbDateService } from '../calendar-kit/services/date.service';\nimport { NbBaseCalendarRangeCell } from './base-calendar-range-cell';\n\n@Component({\n    selector: 'nb-calendar-range-day-cell',\n    template: `\n    <div class=\"cell-content\">{{ day }}</div>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbCalendarRangeDayCellComponent<D> extends NbBaseCalendarRangeCell<D>\n  implements NbCalendarCell<D, NbCalendarRange<D>> {\n  @Input() date: D;\n\n  @Input() selectedValue: NbCalendarRange<D>;\n\n  @Input() visibleDate: D;\n\n  @Input() min: D;\n\n  @Input() max: D;\n\n  @Input() filter: (D) => boolean;\n\n  @Input() size: NbCalendarSize = NbCalendarSize.MEDIUM;\n  static ngAcceptInputType_size: NbCalendarSizeValues;\n\n  @Output() select: EventEmitter<D> = new EventEmitter(true);\n\n  constructor(protected dateService: NbDateService<D>) {\n    super();\n  }\n\n  @HostBinding('class.in-range')\n  get inRange(): boolean {\n    if (this.date && this.hasRange) {\n      return this.isInRange(this.date, this.selectedValue);\n    }\n\n    return false;\n  }\n\n  @HostBinding('class.start')\n  get start(): boolean {\n    return this.date && this.hasRange && this.dateService.isSameDay(this.date, this.selectedValue.start);\n  }\n\n  @HostBinding('class.end')\n  get end(): boolean {\n    return this.date && this.hasRange && this.dateService.isSameDay(this.date, this.selectedValue.end);\n  }\n\n  @HostBinding('class.range-cell')\n  rangeCellClass = true;\n\n  @HostBinding('class.day-cell')\n  dayCellClass = true;\n\n  @HostBinding('class.today')\n  get today(): boolean {\n    return this.date && this.dateService.isSameDay(this.date, this.dateService.today());\n  }\n\n  @HostBinding('class.bounding-month')\n  get boundingMonth(): boolean {\n    return !this.dateService.isSameMonthSafe(this.date, this.visibleDate);\n  }\n\n  @HostBinding('class.selected')\n  get selected(): boolean {\n    if (this.inRange) {\n      return true;\n    }\n\n    if (this.selectedValue) {\n      return this.dateService.isSameDaySafe(this.date, this.selectedValue.start);\n    }\n\n    return false;\n  }\n\n  @HostBinding('class.empty')\n  get empty(): boolean {\n    return !this.date;\n  }\n\n  @HostBinding('class.disabled')\n  get disabled(): boolean {\n    return this.smallerThanMin() || this.greaterThanMax() || this.dontFitFilter();\n  }\n\n  @HostBinding('class.size-large')\n  get isLarge(): boolean {\n    return this.size === NbCalendarSize.LARGE;\n  }\n\n  get day(): number {\n    return this.date && this.dateService.getDate(this.date);\n  }\n\n  @HostListener('click')\n  onClick() {\n    if (this.disabled || this.empty) {\n      return;\n    }\n\n    this.select.emit(this.date);\n  }\n\n  protected smallerThanMin(): boolean {\n    return this.date && this.min && this.dateService.compareDates(this.date, this.min) < 0;\n  }\n\n  protected greaterThanMax(): boolean {\n    return this.date && this.max && this.dateService.compareDates(this.date, this.max) > 0;\n  }\n\n  protected dontFitFilter(): boolean {\n    return this.date && this.filter && !this.filter(this.date);\n  }\n\n  protected isInRange(date: D, { start, end }: NbCalendarRange<D>): boolean {\n    const isGreaterThanStart = this.dateService.compareDates(this.date, start) >= 0;\n    const isLessThanEnd = this.dateService.compareDates(this.date, end) <= 0;\n\n    return isGreaterThanStart && isLessThanEnd;\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  Component,\n  ChangeDetectionStrategy,\n  Input,\n  Output,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n} from '@angular/core';\n\nimport { NbCalendarCell, NbCalendarSize, NbCalendarSizeValues } from '../calendar-kit/model';\nimport { NbCalendarRange } from './calendar-range.component';\nimport { NbDateService } from '../calendar-kit/services/date.service';\nimport { NbBaseCalendarRangeCell } from './base-calendar-range-cell';\n\n@Component({\n    selector: 'nb-calendar-range-year-cell',\n    template: `\n    <div class=\"cell-content\">\n      {{ year }}\n    </div>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbCalendarRangeYearCellComponent<D> extends NbBaseCalendarRangeCell<D>\n  implements NbCalendarCell<D, NbCalendarRange<D>> {\n  @Input() date: D;\n\n  @Input() min: D;\n\n  @Input() max: D;\n\n  @Input() selectedValue: NbCalendarRange<D>;\n\n  @Input() size: NbCalendarSize = NbCalendarSize.MEDIUM;\n  static ngAcceptInputType_size: NbCalendarSizeValues;\n\n  @Output() select: EventEmitter<D> = new EventEmitter(true);\n\n  constructor(protected dateService: NbDateService<D>) {\n    super();\n  }\n\n  @HostBinding('class.in-range')\n  get inRange(): boolean {\n    return this.hasRange && this.isInRange(this.date, this.selectedValue);\n  }\n\n  @HostBinding('class.start')\n  get rangeStart(): boolean {\n    return this.hasRange && this.dateService.isSameYear(this.date, this.selectedValue.start);\n  }\n\n  @HostBinding('class.end')\n  get rangeEnd(): boolean {\n    return this.hasRange && this.dateService.isSameYear(this.date, this.selectedValue.end);\n  }\n\n  @HostBinding('class.selected')\n  get selected(): boolean {\n    if (this.inRange) {\n      return true;\n    }\n\n    if (this.selectedValue) {\n      return this.dateService.isSameYearSafe(this.date, this.selectedValue.start);\n    }\n\n    return false;\n  }\n\n  @HostBinding('class.today')\n  get today(): boolean {\n    return this.dateService.isSameYear(this.date, this.dateService.today());\n  }\n\n  @HostBinding('class.disabled')\n  get disabled(): boolean {\n    return this.smallerThanMin() || this.greaterThanMax();\n  }\n\n  @HostBinding('class.size-large')\n  get isLarge(): boolean {\n    return this.size === NbCalendarSize.LARGE;\n  }\n\n  @HostBinding('class.year-cell')\n  yearCellClass = true;\n\n  @HostBinding('class.range-cell')\n  rangeCellClass = true;\n\n  get year(): number {\n    return this.dateService.getYear(this.date);\n  }\n\n  @HostListener('click')\n  onClick() {\n    if (this.disabled) {\n      return;\n    }\n\n    this.select.emit(this.date);\n  }\n\n  protected smallerThanMin(): boolean {\n    return this.date && this.min && this.dateService.compareDates(this.yearEnd(), this.min) < 0;\n  }\n\n  protected greaterThanMax(): boolean {\n    return this.date && this.max && this.dateService.compareDates(this.yearStart(), this.max) > 0;\n  }\n\n  protected yearStart(): D {\n    return this.dateService.getYearStart(this.date);\n  }\n\n  protected yearEnd(): D {\n    return this.dateService.getYearEnd(this.date);\n  }\n\n  protected isInRange(date: D, { start, end }: NbCalendarRange<D>): boolean {\n    if (start && end) {\n      const cellYear = this.dateService.getYear(date);\n      const startYear = this.dateService.getYear(start);\n      const endYear = this.dateService.getYear(end);\n\n      return cellYear >= startYear && cellYear <= endYear;\n    }\n\n    return this.dateService.isSameYear(date, start);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  Output,\n} from '@angular/core';\n\nimport { NbCalendarCell, NbCalendarSize, NbCalendarSizeValues } from '../calendar-kit/model';\nimport { NbDateService } from '../calendar-kit/services/date.service';\nimport { NbCalendarRange } from './calendar-range.component';\nimport { NbBaseCalendarRangeCell } from './base-calendar-range-cell';\n\n@Component({\n    selector: 'nb-calendar-range-month-cell',\n    template: `\n    <div class=\"cell-content\">\n      {{ month }}\n    </div>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbCalendarRangeMonthCellComponent<D> extends NbBaseCalendarRangeCell<D>\n                                                  implements NbCalendarCell<D, NbCalendarRange<D>> {\n\n  get month(): string {\n    return this.dateService.getMonthName(this.date);\n  }\n\n  @Input() date: D;\n  @Input() visibleDate: D;\n\n  @Input() selectedValue: NbCalendarRange<D>;\n  @Input() min: D;\n  @Input() max: D;\n\n  @Input() size: NbCalendarSize = NbCalendarSize.MEDIUM;\n  static ngAcceptInputType_size: NbCalendarSizeValues;\n\n  @Output() select: EventEmitter<D> = new EventEmitter(true);\n\n  @HostBinding('class.month-cell')\n  monthCellClass = true;\n\n  @HostBinding('class.range-cell')\n  rangeCellClass = true;\n\n  @HostBinding('class.selected')\n  get selected(): boolean {\n    if (this.inRange) {\n      return true;\n    }\n\n    if (this.selectedValue) {\n      return this.dateService.isSameMonthSafe(this.date, this.selectedValue.start);\n    }\n\n    return false;\n  }\n\n  @HostBinding('class.in-range')\n  get inRange(): boolean {\n    if (this.hasRange) {\n      return this.isInRage(this.date, this.selectedValue);\n    }\n    return false;\n  }\n\n  @HostBinding('class.start')\n  get rangeStart(): boolean {\n    if (this.hasRange) {\n      return this.dateService.isSameMonth(this.date, this.selectedValue.start);\n    }\n    return false;\n  }\n\n  @HostBinding('class.end')\n  get rangeEnd(): boolean {\n    if (this.hasRange) {\n      return this.dateService.isSameMonth(this.date, this.selectedValue.end);\n    }\n    return false;\n  }\n\n  @HostBinding('class.today')\n  get today(): boolean {\n    return this.dateService.isSameMonthSafe(this.date, this.dateService.today());\n  }\n\n  @HostBinding('class.disabled')\n  get disabled(): boolean {\n    return this.smallerThanMin() || this.greaterThanMax();\n  }\n\n  @HostBinding('class.size-large')\n  get isLarge(): boolean {\n    return this.size === NbCalendarSize.LARGE;\n  }\n\n  @HostListener('click')\n  onClick() {\n    if (this.disabled) {\n      return;\n    }\n\n    this.select.emit(this.date);\n  }\n\n  constructor(protected dateService: NbDateService<D>) {\n    super();\n  }\n\n  protected smallerThanMin(): boolean {\n    return this.date && this.min && this.dateService.compareDates(this.monthEnd(), this.min) < 0;\n  }\n\n  protected greaterThanMax(): boolean {\n    return this.date && this.max && this.dateService.compareDates(this.monthStart(), this.max) > 0;\n  }\n\n  protected monthStart(): D {\n    return this.dateService.getMonthStart(this.date);\n  }\n\n  protected monthEnd(): D {\n    return this.dateService.getMonthEnd(this.date);\n  }\n\n  protected isInRage(date: D, range: NbCalendarRange<D>): boolean {\n    if (range.start && range.end) {\n      const cellDate = this.dateService.getMonthStart(date);\n      const start = this.dateService.getMonthStart(range.start);\n      const end = this.dateService.getMonthStart(range.end);\n\n      const isGreaterThanStart = this.dateService.compareDates(cellDate, start) >= 0;\n      const isLessThanEnd = this.dateService.compareDates(cellDate, end) <= 0;\n\n      return isGreaterThanStart && isLessThanEnd;\n    }\n\n    return this.dateService.isSameMonth(date, range.start);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, EventEmitter, Input, Output, Type } from '@angular/core';\n\nimport {\n  NbCalendarCell,\n  NbCalendarSize,\n  NbCalendarViewMode,\n  NbCalendarSizeValues,\n  NbCalendarViewModeValues,\n} from '../calendar-kit/model';\nimport { NbDateService } from '../calendar-kit/services/date.service';\nimport { NbCalendarRangeDayCellComponent } from './calendar-range-day-cell.component';\nimport { NbCalendarRangeYearCellComponent } from './calendar-range-year-cell.component';\nimport { NbCalendarRangeMonthCellComponent } from './calendar-range-month-cell.component';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\n\n\nexport interface NbCalendarRange<D> {\n  start: D;\n  end?: D;\n}\n\n/**\n * CalendarRange component provides a capability to choose a date range.\n *\n * ```html\n * <nb-calendar [(date)]=\"date\"></nb-calendar>\n * <nb-calendar [date]=\"date\" (dateChange)=\"handleDateChange($event)\"></nb-calendar>\n * ```\n *\n * Basic usage example\n * @stacked-example(Range, calendar/calendar-range-showcase.component)\n *\n * ### Installation\n *\n * Import `NbCalendarRangeModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbCalendarRangeModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n *\n * ### Usage\n *\n * CalendarRange component supports all of the Calendar component customization properties. More defails can be found\n * in the [Calendar component docs](docs/components/calendar).\n *\n * @styles\n *\n * calendar-width:\n * calendar-background-color:\n * calendar-border-color:\n * calendar-border-style:\n * calendar-border-width:\n * calendar-border-radius:\n * calendar-text-color:\n * calendar-text-font-family:\n * calendar-text-font-size:\n * calendar-text-font-weight:\n * calendar-text-line-height:\n * calendar-picker-padding-top:\n * calendar-picker-padding-bottom:\n * calendar-picker-padding-start:\n * calendar-picker-padding-end:\n * calendar-navigation-text-color:\n * calendar-navigation-text-font-family:\n * calendar-navigation-title-text-font-size:\n * calendar-navigation-title-text-font-weight:\n * calendar-navigation-title-text-line-height:\n * calendar-navigation-padding:\n * calendar-cell-inactive-text-color:\n * calendar-cell-disabled-text-color:\n * calendar-cell-hover-background-color:\n * calendar-cell-hover-border-color:\n * calendar-cell-hover-text-color:\n * calendar-cell-hover-text-font-size:\n * calendar-cell-hover-text-font-weight:\n * calendar-cell-hover-text-line-height:\n * calendar-cell-active-background-color:\n * calendar-cell-active-border-color:\n * calendar-cell-active-text-color:\n * calendar-cell-active-text-font-size:\n * calendar-cell-active-text-font-weight:\n * calendar-cell-active-text-line-height:\n * calendar-cell-today-background-color:\n * calendar-cell-today-border-color:\n * calendar-cell-today-text-color:\n * calendar-cell-today-text-font-size:\n * calendar-cell-today-text-font-weight:\n * calendar-cell-today-text-line-height:\n * calendar-cell-today-hover-background-color:\n * calendar-cell-today-hover-border-color:\n * calendar-cell-today-active-background-color:\n * calendar-cell-today-active-border-color:\n * calendar-cell-today-disabled-border-color:\n * calendar-cell-today-selected-background-color:\n * calendar-cell-today-selected-border-color:\n * calendar-cell-today-selected-text-color:\n * calendar-cell-today-selected-hover-background-color:\n * calendar-cell-today-selected-hover-border-color:\n * calendar-cell-today-selected-active-background-color:\n * calendar-cell-today-selected-active-border-color:\n * calendar-cell-today-in-range-background-color:\n * calendar-cell-today-in-range-border-color:\n * calendar-cell-today-in-range-text-color:\n * calendar-cell-today-in-range-hover-background-color:\n * calendar-cell-today-in-range-hover-border-color:\n * calendar-cell-today-in-range-active-background-color:\n * calendar-cell-today-in-range-active-border-color:\n * calendar-cell-selected-background-color:\n * calendar-cell-selected-border-color:\n * calendar-cell-selected-text-color:\n * calendar-cell-selected-text-font-size:\n * calendar-cell-selected-text-font-weight:\n * calendar-cell-selected-text-line-height:\n * calendar-cell-selected-hover-background-color:\n * calendar-cell-selected-hover-border-color:\n * calendar-cell-selected-active-background-color:\n * calendar-cell-selected-active-border-color:\n * calendar-day-cell-width:\n * calendar-day-cell-height:\n * calendar-month-cell-width:\n * calendar-month-cell-height:\n * calendar-year-cell-width:\n * calendar-year-cell-height:\n * calendar-weekday-background:\n * calendar-weekday-divider-color:\n * calendar-weekday-divider-width:\n * calendar-weekday-text-color:\n * calendar-weekday-text-font-size:\n * calendar-weekday-text-font-weight:\n * calendar-weekday-text-line-height:\n * calendar-weekday-holiday-text-color:\n * calendar-weekday-height:\n * calendar-weekday-width:\n * calendar-weeknumber-background:\n * calendar-weeknumber-divider-color:\n * calendar-weeknumber-divider-width:\n * calendar-weeknumber-text-color:\n * calendar-weeknumber-text-font-size:\n * calendar-weeknumber-text-font-weight:\n * calendar-weeknumber-text-line-height:\n * calendar-weeknumber-height:\n * calendar-weeknumber-width:\n * calendar-large-width:\n * calendar-day-cell-large-width:\n * calendar-day-cell-large-height:\n * calendar-weekday-large-height:\n * calendar-weekday-large-width:\n * calendar-weeknumber-large-height:\n * calendar-weeknumber-large-width:\n * calendar-month-cell-large-width:\n * calendar-month-cell-large-height:\n * calendar-year-cell-large-width:\n * calendar-year-cell-large-height:\n * */\n@Component({\n    selector: 'nb-calendar-range',\n    template: `\n    <nb-base-calendar\n      [date]=\"range\"\n      (dateChange)=\"onChange($any($event))\"\n      [min]=\"min\"\n      [max]=\"max\"\n      [filter]=\"filter\"\n      [startView]=\"startView\"\n      [boundingMonth]=\"boundingMonth\"\n      [dayCellComponent]=\"dayCellComponent\"\n      [monthCellComponent]=\"monthCellComponent\"\n      [yearCellComponent]=\"yearCellComponent\"\n      [visibleDate]=\"visibleDate\"\n      [showNavigation]=\"showNavigation\"\n      [size]=\"size\"\n      [showWeekNumber]=\"showWeekNumber\"\n      [weekNumberSymbol]=\"weekNumberSymbol\"\n      [firstDayOfWeek]=\"firstDayOfWeek\"\n    ></nb-base-calendar>\n  `,\n    standalone: false\n})\nexport class NbCalendarRangeComponent<D> {\n  /**\n   * Defines if we should render previous and next months\n   * in the current month view.\n   * */\n  @Input() boundingMonth: boolean = true;\n\n  /**\n   * Defines starting view for the calendar.\n   * */\n  @Input() startView: NbCalendarViewMode = NbCalendarViewMode.DATE;\n  static ngAcceptInputType_startView: NbCalendarViewModeValues;\n\n  /**\n   * A minimum available date for selection.\n   * */\n  @Input() min: D;\n\n  /**\n   * A maximum available date for selection.\n   * */\n  @Input() max: D;\n\n  /**\n   * A predicate that decides which cells will be disabled.\n   * */\n  @Input() filter: (D) => boolean;\n\n  /**\n   * Custom day cell component. Have to implement `NbCalendarCell` interface.\n   * */\n  @Input('dayCellComponent')\n  set _cellComponent(cellComponent: Type<NbCalendarCell<D, NbCalendarRange<D>>>) {\n    if (cellComponent) {\n      this.dayCellComponent = cellComponent;\n    }\n  }\n  dayCellComponent: Type<NbCalendarCell<D, NbCalendarRange<D>>> = NbCalendarRangeDayCellComponent;\n\n  /**\n   * Custom month cell component. Have to implement `NbCalendarCell` interface.\n   * */\n  @Input('monthCellComponent')\n  set _monthCellComponent(cellComponent: Type<NbCalendarCell<D, NbCalendarRange<D>>>) {\n    if (cellComponent) {\n      this.monthCellComponent = cellComponent;\n    }\n  }\n  @Input() monthCellComponent: Type<NbCalendarCell<D, NbCalendarRange<D>>> = NbCalendarRangeMonthCellComponent;\n\n  /**\n   * Custom year cell component. Have to implement `NbCalendarCell` interface.\n   * */\n  @Input('yearCellComponent')\n  set _yearCellComponent(cellComponent: Type<NbCalendarCell<D, NbCalendarRange<D>>>) {\n    if (cellComponent) {\n      this.yearCellComponent = cellComponent;\n    }\n  }\n  yearCellComponent: Type<NbCalendarCell<D, NbCalendarRange<D>>> = NbCalendarRangeYearCellComponent;\n\n  /**\n   * Size of the calendar and entire components.\n   * Can be 'medium' which is default or 'large'.\n   * */\n  @Input() size: NbCalendarSize = NbCalendarSize.MEDIUM;\n  static ngAcceptInputType_size: NbCalendarSizeValues;\n\n  @Input() visibleDate: D;\n\n  /**\n   * Determines should we show calendars navigation or not.\n   * */\n  @Input() showNavigation: boolean = true;\n\n  /**\n   * Range which will be rendered as selected.\n   * */\n  @Input() range: NbCalendarRange<D>;\n\n  /**\n   * Determines should we show week numbers column.\n   * False by default.\n   * */\n  @Input()\n  get showWeekNumber(): boolean {\n    return this._showWeekNumber;\n  }\n  set showWeekNumber(value: boolean) {\n    this._showWeekNumber = convertToBoolProperty(value);\n  }\n  protected _showWeekNumber: boolean = false;\n  static ngAcceptInputType_showWeekNumber: NbBooleanInput;\n\n  /**\n   * Sets symbol used as a header for week numbers column\n   * */\n  @Input() weekNumberSymbol: string = '#';\n\n  /**\n   * Sets first day of the week, it can be 1 if week starts from monday and 0 if from sunday and so on.\n   * `undefined` means that default locale setting will be used.\n   * */\n  @Input() firstDayOfWeek: number | undefined;\n\n  /**\n   * Emits range when start selected and emits again when end selected.\n   * */\n  @Output() rangeChange: EventEmitter<NbCalendarRange<D>> = new EventEmitter();\n\n  constructor(protected dateService: NbDateService<D>) {\n  }\n\n  onChange(date: D) {\n    this.initDateIfNull();\n    this.handleSelected(date);\n  }\n\n  private initDateIfNull() {\n    if (!this.range) {\n      this.range = { start: null, end: null };\n    }\n  }\n\n  private handleSelected(date: D) {\n    if (this.selectionStarted()) {\n      this.selectEnd(date);\n    } else {\n      this.selectStart(date);\n    }\n  }\n\n  private selectionStarted(): boolean {\n    const { start, end } = this.range;\n    return start && !end;\n  }\n\n  private selectStart(start: D) {\n    this.selectRange({ start });\n  }\n\n  private selectEnd(date: D) {\n    const { start } = this.range;\n\n    if (this.dateService.compareDates(date, start) > 0) {\n      this.selectRange({ start, end: date });\n    } else {\n      this.selectRange({ start: date, end: start });\n    }\n  }\n\n  private selectRange(range: NbCalendarRange<D>) {\n    this.range = range;\n    this.rangeChange.emit(range);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NbCalendarRangeComponent } from './calendar-range.component';\nimport { NbCalendarRangeDayCellComponent } from './calendar-range-day-cell.component';\nimport { NbCalendarRangeYearCellComponent } from './calendar-range-year-cell.component';\nimport { NbCalendarRangeMonthCellComponent } from './calendar-range-month-cell.component';\nimport { NbBaseCalendarModule } from './base-calendar.module';\n\n\n@NgModule({\n  imports: [NbBaseCalendarModule],\n  exports: [NbCalendarRangeComponent],\n  declarations: [\n    NbCalendarRangeComponent,\n    NbCalendarRangeDayCellComponent,\n    NbCalendarRangeYearCellComponent,\n    NbCalendarRangeMonthCellComponent,\n  ],\n})\nexport class NbCalendarRangeModule {\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { InjectionToken } from '@angular/core';\n\nexport const NB_TIME_PICKER_CONFIG = new InjectionToken('NB_TIME_PICKER_CONFIG');\n\nexport interface NbTimepickerLocalizationConfig {\n  hoursText: string,\n  minutesText: string,\n  secondsText: string,\n  ampmText: string,\n}\n\nexport const NB_DEFAULT_TIMEPICKER_LOCALIZATION_CONFIG: NbTimepickerLocalizationConfig = {\n  hoursText: 'Hr',\n  minutesText: 'Min',\n  secondsText: 'Sec',\n  ampmText: 'Am/Pm',\n};\n\nexport interface NbTimePickerConfig {\n  twelveHoursFormat?: boolean,\n  format?: string,\n  localization?: NbTimepickerLocalizationConfig,\n}\n\nexport interface NbSelectedTimeModel {\n  value: string;\n}\n\nexport interface NbSelectedTimePayload<D> {\n  time: D,\n  save?: boolean,\n}\n","import { Component, Input, HostBinding } from '@angular/core';\n\n/**\n * List is a container component that wraps `nb-list-item` component.\n *\n * Basic example:\n * @stacked-example(Simple list, list/simple-list-showcase.component)\n *\n * `nb-list-item` accepts arbitrary content, so you can create a list of any components.\n *\n * ### Installation\n *\n * Import `NbListModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbListModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * List of users:\n * @stacked-example(Users list, list/users-list-showcase.component)\n *\n * @styles\n *\n * list-item-divider-color:\n * list-item-divider-style:\n * list-item-divider-width:\n * list-item-padding:\n * list-item-text-color:\n * list-item-font-family:\n * list-item-font-size:\n * list-item-font-weight:\n * list-item-line-height:\n */\n@Component({\n    selector: 'nb-list',\n    template: `<ng-content select=\"nb-list-item\"></ng-content>`,\n    styleUrls: ['./list.component.scss'],\n    standalone: false\n})\nexport class NbListComponent {\n  /**\n   * Role attribute value\n   *\n   * @type {string}\n   */\n  @Input()\n  @HostBinding('attr.role')\n  role = 'list';\n}\n\n/**\n * List item component is a grouping component that accepts arbitrary content.\n * It should be direct child of `nb-list` componet.\n */\n@Component({\n    selector: 'nb-list-item',\n    template: `<ng-content></ng-content>`,\n    styleUrls: ['list-item.component.scss'],\n    standalone: false\n})\nexport class NbListItemComponent {\n  /**\n   * Role attribute value\n   *\n   * @type {string}\n   */\n  @Input()\n  @HostBinding('attr.role')\n  role = 'listitem';\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  NgZone,\n  OnDestroy,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { filter, take, takeUntil } from 'rxjs/operators';\nimport { merge, Subject } from 'rxjs';\nimport { NbSelectedTimeModel } from './model';\nimport { NbPlatform } from '../cdk/platform/platform-service';\n\n@Component({\n    selector: 'nb-timepicker-cell',\n    template: `\n    <div #valueContainer>{{ value }}</div>\n  `,\n    styleUrls: ['./timepicker-cell.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbTimePickerCellComponent implements AfterViewInit, OnDestroy {\n  protected selectedChange$ = new Subject<boolean>();\n  protected unselected$ = this.selectedChange$.pipe(filter((selected) => !selected));\n  protected destroy$ = new Subject<void>();\n  _selected: boolean;\n\n  @Input() set selected(selected: boolean) {\n    if (selected) {\n      this._selected = selected;\n      this.scrollToElement();\n    }\n    this.selectedChange$.next(selected);\n  };\n  get selected(): boolean {\n    return this._selected;\n  }\n  @Input() value: string;\n  @Output() select: EventEmitter<NbSelectedTimeModel> = new EventEmitter();\n\n  @ViewChild('valueContainer') valueContainerElement: ElementRef;\n\n  constructor(protected ngZone: NgZone,\n              protected platformService: NbPlatform) {\n  }\n\n  @HostListener('click')\n  onClick() {\n    this.select.emit({ value: this.value });\n  }\n\n  ngAfterViewInit(): void {\n    if (this.selected) {\n      // Since we render timepicker in the overlay, at the moment this hook called,\n      // timepicker could be not fully rendered and placed. Because of it, we're waiting for Angular\n      // to finish change detection run and only then scroll to the selected cell.\n      this.ngZone.onStable\n      .pipe(\n        take(1),\n        takeUntil(merge(this.unselected$, this.destroy$)))\n      .subscribe(() => this.scrollToElement());\n    }\n  }\n\n  protected scrollToElement() {\n    if (this.valueContainerElement && this.platformService.isBrowser) {\n      this.ngZone.runOutsideAngular(() =>\n        this.valueContainerElement.nativeElement.scrollIntoView({block: 'center'}));\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  LOCALE_ID,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbPortalDirective } from '../cdk/overlay/mapping';\nimport { NbPlatform } from '../cdk/platform/platform-service';\nimport { NbDateService, NbDayPeriod } from '../calendar-kit/services/date.service';\nimport { range, rangeFromTo } from '../calendar-kit/helpers';\nimport { NbCalendarTimeModelService } from '../calendar-kit/services/calendar-time-model.service';\nimport {\n  NB_DEFAULT_TIMEPICKER_LOCALIZATION_CONFIG,\n  NB_TIME_PICKER_CONFIG,\n  NbSelectedTimePayload,\n  NbTimePickerConfig,\n} from './model';\n\ninterface NbTimePartOption {\n  value: number;\n  text: string;\n}\n\n/**\n * The TimePicker components itself.\n * Provides a proxy to `TimePicker` options as well as custom picker options.\n */\n@Component({\n    selector: 'nb-timepicker',\n    templateUrl: './timepicker.component.html',\n    styleUrls: ['./timepicker.component.scss'],\n    exportAs: 'nbTimepicker',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbTimePickerComponent<D> implements OnChanges {\n  protected blur$: Subject<void> = new Subject<void>();\n\n  fullTimeOptions: D[];\n  hoursColumnOptions: NbTimePartOption[];\n  minutesColumnOptions: NbTimePartOption[];\n  secondsColumnOptions: NbTimePartOption[];\n  readonly dayPeriodColumnOptions = [NbDayPeriod.AM, NbDayPeriod.PM];\n  hostRef: ElementRef;\n  isAM = true;\n\n  timepickerFormatChange$: Subject<void> = new Subject();\n\n  /**\n   * Emits when timepicker looses focus.\n   */\n  get blur(): Observable<void> {\n    return this.blur$.asObservable();\n  }\n\n  /**\n   * Defines time format string.\n   * */\n  @Input()\n  get timeFormat(): string {\n    return this._timeFormat;\n  }\n  set timeFormat(timeFormat: string) {\n    this._timeFormat = timeFormat;\n  }\n  protected _timeFormat: string;\n\n  computedTimeFormat: string = this.setupTimeFormat();\n\n  /**\n   * Defines 12 hours format .\n   * */\n  @Input()\n  get twelveHoursFormat(): boolean {\n    return this._twelveHoursFormat;\n  }\n  set twelveHoursFormat(value: boolean) {\n    this._twelveHoursFormat = convertToBoolProperty(value);\n  }\n  protected _twelveHoursFormat: boolean;\n  static ngAcceptInputType_twelveHoursFormat: NbBooleanInput;\n\n  /**\n   * Defines should show am/pm label if twelveHoursFormat enabled.\n   * */\n  @Input()\n  get showAmPmLabel(): boolean {\n    return this._showAmPmLabel;\n  }\n  set showAmPmLabel(value: boolean) {\n    this._showAmPmLabel = convertToBoolProperty(value);\n  }\n  protected _showAmPmLabel: boolean = true;\n  static ngAcceptInputType_showAmPmLabel: NbBooleanInput;\n\n  /**\n   * Show seconds in timepicker.\n   * Ignored when singleColumn is true\n   * */\n  @Input()\n  get withSeconds(): boolean {\n    return this._withSeconds;\n  }\n  set withSeconds(value: boolean) {\n    this._withSeconds = convertToBoolProperty(value);\n  }\n  protected _withSeconds: boolean;\n  static ngAcceptInputType_withSeconds: NbBooleanInput;\n\n  /**\n   * Show timepicker values in one column with 60 minutes step by default.\n   * */\n  @Input()\n  get singleColumn(): boolean {\n    return this._singleColumn;\n  }\n  set singleColumn(value: boolean) {\n    this._singleColumn = convertToBoolProperty(value);\n  }\n  _singleColumn: boolean;\n  static ngAcceptInputType_singleColumn: NbBooleanInput;\n\n  /**\n   * Defines minutes offset for options, when timepicker is in single column mode.\n   * By default it’s 60 minutes: '12:00, 13:00: 14:00, 15:00...'\n   * */\n  @Input()\n  set step(step: number) {\n    this._step = step;\n  }\n  get step(): number {\n    return this._step;\n  }\n  protected _step: number;\n\n  /**\n   * Date which will be rendered as selected.\n   * */\n  @Input()\n  set date(date: D) {\n    this._date = date;\n    this.isAM = this.dateService.getDayPeriod(this.date) === NbDayPeriod.AM;\n    this.buildColumnOptions();\n    this.cd.markForCheck();\n  }\n\n  get date(): D {\n    return this._date;\n  }\n\n  _date: D;\n\n  /**\n   * In timepicker value should be always true\n   * In calendar-with-time.component  should set to false\n   * @docs-private\n   */\n  @Input() showFooter: boolean = true;\n  @Input() applyButtonText: string;\n  @Input() hoursText: string;\n  @Input() minutesText: string;\n  @Input() secondsText: string;\n  @Input() ampmText: string;\n  @Input() currentTimeButtonText: string;\n\n  /**\n   * Emits date when selected.\n   * */\n  @Output() onSelectTime: EventEmitter<NbSelectedTimePayload<D>> = new EventEmitter<NbSelectedTimePayload<D>>();\n  @ViewChild(NbPortalDirective, { static: true }) portal: NbPortalDirective;\n\n  constructor(\n    @Inject(NB_TIME_PICKER_CONFIG) protected config: NbTimePickerConfig,\n    protected platformService: NbPlatform,\n    @Inject(LOCALE_ID) locale: string,\n    public cd: ChangeDetectorRef,\n    protected calendarTimeModelService: NbCalendarTimeModelService<D>,\n    protected dateService: NbDateService<D>,\n  ) {\n    this.initFromConfig(this.config);\n  }\n\n  ngOnChanges({ step, twelveHoursFormat, withSeconds, singleColumn }: SimpleChanges): void {\n    const nextTimeFormat = this.setupTimeFormat();\n    if (nextTimeFormat !== this.computedTimeFormat) {\n      this.computedTimeFormat = nextTimeFormat;\n      this.timepickerFormatChange$.next();\n    }\n\n    const isConfigChanged = step || twelveHoursFormat || withSeconds || singleColumn;\n\n    if (isConfigChanged || !this.fullTimeOptions) {\n      this.buildColumnOptions();\n    }\n  }\n\n  setHost(hostRef: ElementRef): void {\n    this.hostRef = hostRef;\n  }\n\n  attach(hostRef: ElementRef): void {\n    this.hostRef = hostRef;\n  }\n\n  setCurrentTime(): void {\n    this.date = this.dateService.today();\n    this.onSelectTime.emit({\n      time: this.date,\n      save: true,\n    });\n  }\n\n  setHour(value: number): void {\n    this.updateValue(this.dateService.setHours(this.date, value));\n  }\n\n  setMinute(value: number): void {\n    this.updateValue(this.dateService.setMinutes(this.date, value));\n  }\n\n  setSecond(value: number): void {\n    this.updateValue(this.dateService.setSeconds(this.date, value));\n  }\n\n  selectFullTime(value: D): void {\n    this.updateValue(value);\n  }\n\n  changeDayPeriod(dayPeriodToSet: NbDayPeriod): void {\n    if (this.dateService.getDayPeriod(this.date) === dayPeriodToSet) {\n      return;\n    }\n\n    // Subtract hours when switching to AM (before midday, 0-11 in 24-hour) from PM (after midday, 12-24 in 24-hour),\n    // otherwise add hours because switching to PM from AM.\n    const direction = dayPeriodToSet === NbDayPeriod.AM ? -1 : 1;\n    const increment = direction * this.dateService.HOURS_IN_DAY_PERIOD;\n    this.updateValue(this.dateService.addHours(this.date, increment));\n  }\n\n  updateValue(date: D): void {\n    this.onSelectTime.emit({ time: date });\n  }\n\n  saveValue(): void {\n    this.onSelectTime.emit({\n      time: this.date,\n      save: true,\n    });\n  }\n\n  trackByTimeValues(index, item: NbTimePartOption): number {\n    return item.value;\n  }\n\n  trackBySingleColumnValue(index, item: D) {\n    return this.dateService.valueOf(item);\n  }\n\n  trackByDayPeriod(index, item: NbDayPeriod): string {\n    return item;\n  }\n\n  showSeconds(): boolean {\n    return this.withSeconds && !this.singleColumn;\n  }\n\n  isSelectedHour(val: number): boolean {\n    if (this.date) {\n      return this.dateService.getHours(this.date) === val;\n    }\n\n    return false;\n  }\n\n  isSelectedMinute(val: number): boolean {\n    if (this.date) {\n      return this.dateService.getMinutes(this.date) === val;\n    }\n\n    return false;\n  }\n\n  isSelectedSecond(val: number): boolean {\n    if (this.date) {\n      return this.dateService.getSeconds(this.date) === val;\n    }\n\n    return false;\n  }\n\n  isSelectedDayPeriod(dayPeriod: NbDayPeriod): boolean {\n    if (this.date) {\n      return dayPeriod === this.dateService.getDayPeriod(this.date);\n    }\n\n    return false;\n  }\n\n  getFullTimeString(item: D): string {\n    return this.dateService.format(item, this.computedTimeFormat).toUpperCase();\n  }\n\n  isSelectedFullTimeValue(value: D): boolean {\n    if (this.date) {\n      return this.dateService.isSameHourAndMinute(value, this.date);\n    }\n\n    return false;\n  }\n\n  protected buildColumnOptions(): void {\n    this.fullTimeOptions = this.singleColumn ? this.calendarTimeModelService.getHoursRange(this.step) : [];\n\n    this.hoursColumnOptions = this.generateHours();\n    this.minutesColumnOptions = this.generateMinutesOrSeconds();\n    this.secondsColumnOptions = this.showSeconds() ? this.generateMinutesOrSeconds() : [];\n  }\n\n  /**\n   * @docs-private\n   */\n  isFirefox(): boolean {\n    return this.platformService.FIREFOX;\n  }\n\n  protected generateHours(): NbTimePartOption[] {\n    if (!this.twelveHoursFormat) {\n      return range(24, (v: number) => {\n        return { value: v, text: this.calendarTimeModelService.paddToTwoSymbols(v) };\n      });\n    }\n\n    if (this.isAM) {\n      return range(12, (v: number) => {\n        const text = v === 0 ? 12 : v;\n        return { value: v, text: this.calendarTimeModelService.paddToTwoSymbols(text) };\n      });\n    }\n\n    return rangeFromTo(12, 24, (v: number) => {\n      const text = v === 12 ? 12 : v - 12;\n      return { value: v, text: this.calendarTimeModelService.paddToTwoSymbols(text) };\n    });\n  }\n\n  protected generateMinutesOrSeconds(): NbTimePartOption[] {\n    return range(60, (v: number) => {\n      return { value: v, text: this.calendarTimeModelService.paddToTwoSymbols(v) };\n    });\n  }\n\n  protected setupTimeFormat(): string {\n    if (!this.timeFormat) {\n      return this.config.format || this.buildTimeFormat();\n    }\n\n    return this.timeFormat;\n  }\n\n  /**\n   * @docs-private\n   */\n  buildTimeFormat(): string {\n    if (this.twelveHoursFormat) {\n      return `${\n        this.withSeconds && !this.singleColumn\n          ? this.dateService.getTwelveHoursFormatWithSeconds()\n          : this.dateService.getTwelveHoursFormat()\n      }`;\n    } else {\n      return `${\n        this.withSeconds && !this.singleColumn\n          ? this.dateService.getTwentyFourHoursFormatWithSeconds()\n          : this.dateService.getTwentyFourHoursFormat()\n      }`;\n    }\n  }\n\n  protected initFromConfig(config: NbTimePickerConfig) {\n    if (config) {\n      this.twelveHoursFormat = config.twelveHoursFormat;\n    } else {\n      this.twelveHoursFormat = this.dateService.getLocaleTimeFormat().includes('h');\n    }\n\n    const localeConfig = { ...NB_DEFAULT_TIMEPICKER_LOCALIZATION_CONFIG, ...(config?.localization ?? {}) };\n    this.hoursText = localeConfig.hoursText;\n    this.minutesText = localeConfig.minutesText;\n    this.secondsText = localeConfig.secondsText;\n    this.ampmText = localeConfig.ampmText;\n  }\n}\n","<nb-card *nbPortal [class.supports-scrollbar-theming]=\"!isFirefox()\" class=\"nb-timepicker-container\">\n  <nb-card-header class=\"column-header\">\n    <ng-container *ngIf=\"singleColumn; else fullTimeHeadersBlock\">\n      <div class=\"header-cell\">Time</div>\n    </ng-container>\n    <ng-template #fullTimeHeadersBlock>\n      <div class=\"header-cell\">{{ hoursText }}</div>\n      <div class=\"header-cell\">{{ minutesText }}</div>\n      <div *ngIf=\"withSeconds\" class=\"header-cell\">{{ secondsText }}</div>\n      <div *ngIf=\"twelveHoursFormat\" class=\"header-cell\">\n        <ng-template [ngIf]=\"showAmPmLabel\">{{ ampmText }}</ng-template>\n      </div>\n    </ng-template>\n  </nb-card-header>\n\n  <div class=\"picker-body\">\n    <ng-container *ngIf=\"singleColumn; else fullTimeColumnBlock\">\n      <nb-list class=\"values-list\">\n        <nb-list-item\n          class=\"list-item\"\n          [class.selected]=\"isSelectedFullTimeValue(item)\"\n          *ngFor=\"let item of fullTimeOptions; trackBy: trackBySingleColumnValue.bind(this)\"\n        >\n          <nb-timepicker-cell\n            [value]=\"getFullTimeString(item)\"\n            [selected]=\"isSelectedFullTimeValue(item)\"\n            (select)=\"selectFullTime(item)\"\n          >\n          </nb-timepicker-cell>\n        </nb-list-item>\n      </nb-list>\n    </ng-container>\n\n    <ng-template #fullTimeColumnBlock>\n      <nb-list class=\"values-list\">\n        <nb-list-item\n          class=\"list-item\"\n          [class.selected]=\"isSelectedHour(item.value)\"\n          *ngFor=\"let item of hoursColumnOptions; trackBy: trackByTimeValues\"\n        >\n          <nb-timepicker-cell\n            [value]=\"item.text\"\n            [selected]=\"isSelectedHour(item.value)\"\n            (select)=\"setHour(item.value)\"\n          >\n          </nb-timepicker-cell>\n        </nb-list-item>\n      </nb-list>\n      <nb-list class=\"values-list\">\n        <nb-list-item\n          class=\"list-item\"\n          [class.selected]=\"isSelectedMinute(item.value)\"\n          *ngFor=\"let item of minutesColumnOptions; trackBy: trackByTimeValues\"\n        >\n          <nb-timepicker-cell\n            [value]=\"item.text\"\n            [selected]=\"isSelectedMinute(item.value)\"\n            (select)=\"setMinute(item.value)\"\n          >\n          </nb-timepicker-cell>\n        </nb-list-item>\n      </nb-list>\n      <nb-list *ngIf=\"showSeconds()\" class=\"values-list\">\n        <nb-list-item\n          class=\"list-item\"\n          [class.selected]=\"isSelectedSecond(item.value)\"\n          *ngFor=\"let item of secondsColumnOptions; trackBy: trackByTimeValues\"\n        >\n          <nb-timepicker-cell\n            [value]=\"item.text\"\n            [selected]=\"isSelectedSecond(item.value)\"\n            (select)=\"setSecond(item.value)\"\n          >\n          </nb-timepicker-cell>\n        </nb-list-item>\n      </nb-list>\n      <nb-list *ngIf=\"twelveHoursFormat\" class=\"values-list\">\n        <nb-list-item\n          class=\"list-item am-pm-item\"\n          [class.selected]=\"isSelectedDayPeriod(dayPeriod)\"\n          *ngFor=\"let dayPeriod of dayPeriodColumnOptions; trackBy: trackByDayPeriod\"\n        >\n          <nb-timepicker-cell\n            [value]=\"dayPeriod\"\n            [selected]=\"isSelectedDayPeriod(dayPeriod)\"\n            (select)=\"changeDayPeriod(dayPeriod)\"\n          >\n          </nb-timepicker-cell>\n        </nb-list-item>\n      </nb-list>\n    </ng-template>\n  </div>\n\n  <nb-card-footer *ngIf=\"showFooter\" class=\"actions-footer\">\n    <nb-calendar-actions\n      [applyButtonText]=\"applyButtonText\"\n      [currentTimeButtonText]=\"currentTimeButtonText\"\n      (setCurrentTime)=\"setCurrentTime()\"\n      (saveValue)=\"saveValue()\"\n    ></nb-calendar-actions>\n  </nb-card-footer>\n</nb-card>\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  Input,\n  OnInit,\n  ViewChild,\n} from '@angular/core';\nimport { NbCalendarComponent } from '../calendar/calendar.component';\nimport { NbSelectedTimePayload } from '../timepicker/model';\nimport { NbDateService } from '../calendar-kit/services/date.service';\nimport { NbCalendarTimeModelService } from '../calendar-kit/services/calendar-time-model.service';\nimport { NbCalendarSize } from '../calendar-kit/model';\nimport { NbPortalOutletDirective } from '../cdk/overlay/mapping';\nimport { NbTimePickerComponent } from '../timepicker/timepicker.component';\n\n@Component({\n    selector: 'nb-calendar-with-time',\n    template: `\n    <nb-card class=\"calendar-with-time\">\n      <nb-card-body class=\"picker-body\">\n        <nb-base-calendar\n          [boundingMonth]=\"boundingMonth\"\n          [startView]=\"startView\"\n          [date]=\"date\"\n          [min]=\"min\"\n          [max]=\"max\"\n          [filter]=\"filter\"\n          [dayCellComponent]=\"dayCellComponent\"\n          [monthCellComponent]=\"monthCellComponent\"\n          [yearCellComponent]=\"yearCellComponent\"\n          [size]=\"size\"\n          [visibleDate]=\"visibleDate\"\n          [showNavigation]=\"showNavigation\"\n          [showWeekNumber]=\"showWeekNumber\"\n          [weekNumberSymbol]=\"weekNumberSymbol\"\n          [firstDayOfWeek]=\"firstDayOfWeek\"\n          (dateChange)=\"onDateValueChange($event)\"\n        >\n        </nb-base-calendar>\n        <div\n          class=\"timepicker-section\"\n          [class.size-large]=\"isLarge()\"\n          [class.timepicker-single-column-width]=\"singleColumn\"\n          [class.timepicker-multiple-column-width]=\"!singleColumn\"\n        >\n          <div class=\"picker-title\">{{ title }}</div>\n          <nb-timepicker\n            (onSelectTime)=\"onTimeChange($event)\"\n            [date]=\"date\"\n            [twelveHoursFormat]=\"twelveHoursFormat\"\n            [showAmPmLabel]=\"showAmPmLabel\"\n            [withSeconds]=\"showSeconds()\"\n            [showFooter]=\"false\"\n            [singleColumn]=\"singleColumn\"\n            [step]=\"step\"\n          >\n          </nb-timepicker>\n          <ng-container nbPortalOutlet></ng-container>\n        </div>\n      </nb-card-body>\n      <nb-card-footer class=\"picker-footer\">\n        <nb-calendar-actions\n          [applyButtonText]=\"applyButtonText\"\n          [currentTimeButtonText]=\"currentTimeButtonText\"\n          [showCurrentTimeButton]=\"showCurrentTimeButton\"\n          (setCurrentTime)=\"saveCurrentTime()\"\n          (saveValue)=\"saveValue()\"\n        ></nb-calendar-actions>\n      </nb-card-footer>\n    </nb-card>\n  `,\n    styleUrls: ['./calendar-with-time-container.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbCalendarWithTimeComponent<D> extends NbCalendarComponent<D> implements OnInit, AfterViewInit {\n  /**\n   * Defines selected date.\n   * */\n  @Input() visibleDate: D;\n\n  /**\n   * Defines 12 hours format like '07:00 PM'.\n   * */\n  @Input() twelveHoursFormat: boolean;\n\n  /**\n   * Defines should show am/pm label if twelveHoursFormat enabled.\n   * */\n  @Input() showAmPmLabel: boolean;\n\n  /**\n   * Show seconds in timepicker.\n   * Ignored when singleColumn is true.\n   * */\n  @Input() withSeconds: boolean;\n\n  /**\n   * Show timepicker values in one column with 60 minutes step by default.\n   * */\n  @Input() singleColumn: boolean;\n\n  /**\n   * Defines minutes step when we use fill time format.\n   * If set to 20, it will be: '12:00, 12:20: 12:40, 13:00...'\n   * */\n  @Input() step: number;\n\n  /**\n   * Defines time format.\n   * */\n  @Input() timeFormat: string;\n\n  /**\n   * Defines text over the timepicker.\n   * */\n  @Input() title: string;\n\n  @Input() applyButtonText: string;\n\n  @Input() currentTimeButtonText: string;\n\n  @Input() showCurrentTimeButton: boolean;\n\n  @ViewChild(NbPortalOutletDirective) portalOutlet: NbPortalOutletDirective;\n  @ViewChild(NbTimePickerComponent) timepicker: NbTimePickerComponent<D>;\n\n  constructor(\n    protected dateService: NbDateService<D>,\n    public cd: ChangeDetectorRef,\n    protected calendarTimeModelService: NbCalendarTimeModelService<D>,\n  ) {\n    super();\n  }\n\n  ngOnInit(): void {\n    if (!this.date) {\n      this.date = this.calendarTimeModelService.getResetTime();\n    }\n  }\n\n  ngAfterViewInit() {\n    this.portalOutlet.attachTemplatePortal(this.timepicker.portal);\n  }\n\n  onDateValueChange(date: D): void {\n    const hours = this.dateService.getHours(this.date);\n    const minutes = this.dateService.getMinutes(this.date);\n    const seconds = this.dateService.getSeconds(this.date);\n    const milliseconds = this.dateService.getMilliseconds(this.date);\n\n    let newDate = this.dateService.setHours(date, hours);\n    newDate = this.dateService.setMinutes(newDate, minutes);\n    newDate = this.dateService.setMinutes(newDate, minutes);\n    newDate = this.dateService.setSeconds(newDate, seconds);\n    newDate = this.dateService.setMilliseconds(newDate, milliseconds);\n\n    this.date = newDate;\n  }\n\n  onTimeChange(selectedTime: NbSelectedTimePayload<D>): void {\n    let newDate = this.dateService.clone(this.date);\n\n    newDate = this.dateService.setHours(newDate, this.dateService.getHours(selectedTime.time));\n    newDate = this.dateService.setMinutes(newDate, this.dateService.getMinutes(selectedTime.time));\n    newDate = this.dateService.setSeconds(newDate, this.dateService.getSeconds(selectedTime.time));\n    newDate = this.dateService.setMilliseconds(newDate, this.dateService.getMilliseconds(selectedTime.time));\n\n    this.date = newDate;\n  }\n\n  saveValue(): void {\n    this.dateChange.emit(this.date);\n  }\n\n  saveCurrentTime(): void {\n    this.dateChange.emit(this.dateService.today());\n  }\n\n  showSeconds(): boolean {\n    return this.withSeconds && !this.singleColumn;\n  }\n\n  isLarge(): boolean {\n    return this.size === NbCalendarSize.LARGE;\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, ComponentRef, ViewChild } from '@angular/core';\n\nimport { NbComponentPortal } from '../cdk/overlay/mapping';\nimport { NbOverlayContainerComponent, NbPositionedContainerComponent } from '../cdk/overlay/overlay-container';\n\n\n@Component({\n    selector: 'nb-datepicker-container',\n    template: `\n    <nb-overlay-container></nb-overlay-container>\n  `,\n    standalone: false\n})\nexport class NbDatepickerContainerComponent extends NbPositionedContainerComponent {\n\n  // TODO static must be false as of Angular 9.0.0, issues/1514\n  @ViewChild(NbOverlayContainerComponent, { static: true }) overlayContainer: NbOverlayContainerComponent;\n\n  attach<T>(portal: NbComponentPortal<T>): ComponentRef<T> {\n    return this.overlayContainer.attachComponentPortal(portal);\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ChangeDetectorRef,\n  Directive,\n  ElementRef,\n  forwardRef,\n  Inject,\n  InjectionToken,\n  Input,\n  OnDestroy,\n  Type,\n} from '@angular/core';\nimport {\n  ControlValueAccessor,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  ValidationErrors,\n  Validator,\n  ValidatorFn,\n  Validators,\n} from '@angular/forms';\nimport { fromEvent, merge, Observable, Subject, Subscription } from 'rxjs';\nimport { distinctUntilChanged, filter, map, pairwise, startWith, take, takeUntil, tap } from 'rxjs/operators';\n\nimport { NB_DOCUMENT } from '../../theme.options';\nimport { NbDateService } from '../calendar-kit/services/date.service';\n\n/**\n * The `NbDatepickerAdapter` instances provide way how to parse, format and validate\n * different date types.\n * */\nexport abstract class NbDatepickerAdapter<D> {\n  /**\n   * Picker component class.\n   * */\n  abstract picker: Type<any>;\n\n  /**\n   * Parse date string according to the format.\n   * */\n  abstract parse(value: string, format: string): D;\n\n  /**\n   * Format date according to the format.\n   * */\n  abstract format(value: D, format: string): string;\n\n  /**\n   * Validates date string according to the passed format.\n   * */\n  abstract isValid(value: string, format: string): boolean;\n}\n\n/**\n * Validators config that will be used by form control to perform proper validation.\n * */\nexport interface NbPickerValidatorConfig<D> {\n  /**\n   * Minimum date available in picker.\n   * */\n  min: D;\n\n  /**\n   * Maximum date available in picker.\n   * */\n  max: D;\n\n  /**\n   * Predicate that determines is value available for picking.\n   * */\n  filter: (D) => boolean;\n}\n\n/**\n * Datepicker is an control that can pick any values anyway.\n * It has to be bound to the datepicker directive through nbDatepicker input.\n * */\nexport abstract class NbDatepicker<T, D = T> {\n  /**\n   * HTML input element date format.\n   * */\n  abstract format: string;\n\n  abstract get value(): T;\n\n  abstract set value(value: T);\n\n  abstract get valueChange(): Observable<T>;\n\n  abstract get init(): Observable<void>;\n\n  /**\n   * Attaches datepicker to the native input element.\n   * */\n  abstract attach(hostRef: ElementRef);\n\n  /**\n   * Returns validator configuration based on the input properties.\n   * */\n  abstract getValidatorConfig(): NbPickerValidatorConfig<D>;\n\n  abstract show();\n\n  abstract hide();\n\n  abstract shouldHide(): boolean;\n\n  abstract get isShown(): boolean;\n\n  abstract get blur(): Observable<void>;\n\n  abstract get formatChanged$(): Observable<void>;\n}\n\nexport const NB_DATE_ADAPTER = new InjectionToken<NbDatepickerAdapter<any>>('Datepicker Adapter');\n\nexport const NB_DATE_SERVICE_OPTIONS = new InjectionToken('Date service options');\n\n/**\n * The `NbDatepickerDirective` is form control that gives you ability to select dates and ranges. The datepicker\n * is shown when input receives a `focus` event.\n *\n * ```html\n * <input [nbDatepicker]=\"datepicker\">\n * <nb-datepicker #datepicker></nb-datepicker>\n * ```\n *\n * @stacked-example(Showcase, datepicker/datepicker-showcase.component)\n *\n * ### Installation\n *\n * Import `NbDatepickerModule.forRoot()` to your root module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbDatepickerModule.forRoot(),\n *   ],\n * })\n * export class AppModule { }\n * ```\n * And `NbDatepickerModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbDatepickerModule,\n *   ],\n * })\n *\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * If you want to use range selection, you have to use `NbRangepickerComponent` instead:\n *\n * ```html\n * <input [nbDatepicker]=\"rangepicker\">\n * <nb-rangepicker #rangepicker></nb-rangepicker>\n * ```\n *\n * Both range and date pickers support all parameters as calendar, so, check `NbCalendarComponent` for additional\n * info.\n *\n * @stacked-example(Range showcase, datepicker/rangepicker-showcase.component)\n *\n * Datepicker is the form control so it can be bound with angular forms through ngModel and form controls.\n *\n * @stacked-example(Forms, datepicker/datepicker-forms.component)\n *\n * `NbDatepickerDirective` may be validated using `min` and `max` dates passed to the datepicker.\n *\n * @stacked-example(Validation, datepicker/datepicker-validation.component)\n *\n * Also `NbDatepickerDirective` may be filtered using `filter` predicate\n * that receives date object and has to return a boolean value.\n *\n * @stacked-example(Filter, datepicker/datepicker-filter.component)\n *\n * If you need to pick a time along with the date, you can use nb-date-timepicker\n *\n * ```html\n * <input nbInput placeholder=\"Pick Date\" [nbDatepicker]=\"dateTimePicker\">\n * <nb-date-timepicker withSeconds #dateTimePicker></nb-date-timepicker>\n * ```\n * @stacked-example(Date timepicker, datepicker/date-timepicker-showcase.component)\n *\n * A single column picker with options value as time and minute, so users won’t be able to pick\n * hours and minutes individually.\n *\n * @stacked-example(Date timepicker single column, datepicker/date-timepicker-single-column.component)\n\n * The `NbDatepickerComponent` supports date formatting:\n *\n * ```html\n * <input [nbDatepicker]=\"datepicker\">\n * <nb-datepicker #datepicker format=\"MM\\dd\\yyyy\"></nb-datepicker>\n * ```\n * <span id=\"formatting-issue\"></span>\n * ## Formatting Issue\n *\n * By default, datepicker uses angulars `LOCALE_ID` token for localization and `DatePipe` for dates formatting.\n * And native `Date.parse(...)` for dates parsing. But native `Date.parse` function doesn't support formats.\n * To provide custom formatting you have to use one of the following packages:\n *\n * - `@nebular/moment` - provides moment date adapter that uses moment for date objects. This means datepicker than\n * will operate only moment date objects. If you want to use it you have to install it: `npm i @nebular/moment`, and\n * import `NbMomentDateModule` from this package.\n *\n * - `@nebular/date-fns` - adapter for popular date-fns library. This way is preferred if you need only date formatting.\n * Because date-fns is treeshakable, tiny and operates native date objects. If you want to use it you have to\n * install it: `npm i @nebular/date-fns`, and import `NbDateFnsDateModule` from this package.\n *\n * ### NbDateFnsDateModule\n *\n * Format is required when using `NbDateFnsDateModule`. You can set it via `format` input on datepicker component:\n * ```html\n * <nb-datepicker format=\"dd.MM.yyyy\"></nb-datepicker>\n * ```\n * Also format can be set globally with `NbDateFnsDateModule.forRoot({ format: 'dd.MM.yyyy' })` and\n * `NbDateFnsDateModule.forChild({ format: 'dd.MM.yyyy' })` methods.\n *\n * Please note to use some of the formatting tokens you also need to pass\n * `{ useAdditionalWeekYearTokens: true, useAdditionalDayOfYearTokens: true }` to date-fns parse and format functions.\n * You can configure options passed this functions by setting `formatOptions` and\n * `parseOptions` of options object passed to `NbDateFnsDateModule.forRoot` and `NbDateFnsDateModule.forChild` methods.\n * ```ts\n * NbDateFnsDateModule.forRoot({\n *   parseOptions: { useAdditionalWeekYearTokens: true, useAdditionalDayOfYearTokens: true },\n *   formatOptions: { useAdditionalWeekYearTokens: true, useAdditionalDayOfYearTokens: true },\n * })\n * ```\n * Further info on `date-fns` formatting tokens could be found at\n * [date-fns docs](https://date-fns.org/v2.0.0-alpha.27/docs/Unicode-Tokens).\n *\n * You can also use `parseOptions` and `formatOptions` to provide locale.\n * ```ts\n * import { eo } from 'date-fns/locale';\n *\n * @NgModule({\n *   imports: [\n *     NbDateFnsDateModule.forRoot({\n *       parseOptions: { locale: eo },\n *       formatOptions: { locale: eo },\n *     }),\n *   ],\n * })\n * ```\n *\n * @styles\n *\n * datepicker-background-color:\n * datepicker-border-color:\n * datepicker-border-style:\n * datepicker-border-width:\n * datepicker-border-radius:\n * datepicker-shadow:\n * */\n@Directive({\n    selector: 'input[nbDatepicker]',\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => NbDatepickerDirective),\n            multi: true,\n        },\n        {\n            provide: NG_VALIDATORS,\n            useExisting: forwardRef(() => NbDatepickerDirective),\n            multi: true,\n        },\n    ],\n    standalone: false\n})\nexport class NbDatepickerDirective<D> implements OnDestroy, ControlValueAccessor, Validator {\n  /**\n   * Provides datepicker component.\n   * */\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input('nbDatepicker')\n  set setPicker(picker: NbDatepicker<D>) {\n    this.picker = picker;\n    this.setupPicker();\n  }\n\n  protected pickerInputsChangedSubscription: Subscription | undefined;\n\n  /**\n   * Datepicker adapter.\n   * */\n  protected datepickerAdapter: NbDatepickerAdapter<D>;\n\n  /**\n   * Datepicker instance.\n   * */\n  protected picker: NbDatepicker<D>;\n  protected destroy$ = new Subject<void>();\n  protected isDatepickerReady: boolean = false;\n  protected queue: D | undefined;\n  protected onChange: (D) => void = () => {};\n  protected onTouched: () => void = () => {};\n\n  /**\n   * Form control validators will be called in validators context, so, we need to bind them.\n   * */\n  protected validator: ValidatorFn = Validators.compose(\n    [this.parseValidator, this.minValidator, this.maxValidator, this.filterValidator].map((fn) => fn.bind(this)),\n  );\n\n  constructor(\n    @Inject(NB_DOCUMENT) protected document,\n    @Inject(NB_DATE_ADAPTER) protected datepickerAdapters: NbDatepickerAdapter<D>[],\n    protected hostRef: ElementRef,\n    protected dateService: NbDateService<D>,\n    protected changeDetector: ChangeDetectorRef,\n  ) {\n    this.subscribeOnInputChange();\n  }\n\n  /**\n   * Returns html input element.\n   * */\n  get input(): HTMLInputElement {\n    return this.hostRef.nativeElement;\n  }\n\n  /**\n   * Returns host input value.\n   * */\n  get inputValue(): string {\n    return this.input.value;\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  /**\n   * Writes value in picker and html input element.\n   * */\n  writeValue(value: D) {\n    if (this.isDatepickerReady) {\n      this.writePicker(value);\n      this.writeInput(value);\n    } else {\n      this.queue = value;\n    }\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.input.disabled = isDisabled;\n  }\n\n  /**\n   * Form control validation based on picker validator config.\n   * */\n  validate(): ValidationErrors | null {\n    return this.validator(null);\n  }\n\n  /**\n   * Hides picker, focuses the input\n   */\n  protected hidePicker() {\n    this.input.focus();\n    this.picker.hide();\n  }\n\n  /**\n   * Validates that we can parse value correctly.\n   * */\n  protected parseValidator(): ValidationErrors | null {\n    /**\n     * Date services treat empty string as invalid date.\n     * That's why we're getting invalid formControl in case of empty input which is not required.\n     * */\n    if (this.inputValue === '') {\n      return null;\n    }\n\n    const isValid = this.datepickerAdapter.isValid(this.inputValue, this.picker.format);\n    return isValid ? null : { nbDatepickerParse: { value: this.inputValue } };\n  }\n\n  /**\n   * Validates passed value is greater than min.\n   * */\n  protected minValidator(): ValidationErrors | null {\n    const config = this.picker.getValidatorConfig();\n    const date = this.datepickerAdapter.parse(this.inputValue, this.picker.format);\n    return !config.min || !date || this.dateService.compareDates(config.min, date) <= 0\n      ? null\n      : { nbDatepickerMin: { min: config.min, actual: date } };\n  }\n\n  /**\n   * Validates passed value is smaller than max.\n   * */\n  protected maxValidator(): ValidationErrors | null {\n    const config = this.picker.getValidatorConfig();\n    const date = this.datepickerAdapter.parse(this.inputValue, this.picker.format);\n    return !config.max || !date || this.dateService.compareDates(config.max, date) >= 0\n      ? null\n      : { nbDatepickerMax: { max: config.max, actual: date } };\n  }\n\n  /**\n   * Validates passed value satisfy the filter.\n   * */\n  protected filterValidator(): ValidationErrors | null {\n    const config = this.picker.getValidatorConfig();\n    const date = this.datepickerAdapter.parse(this.inputValue, this.picker.format);\n    return !config.filter || !date || config.filter(date) ? null : { nbDatepickerFilter: true };\n  }\n\n  /**\n   * Chooses datepicker adapter based on passed picker component.\n   * */\n  protected chooseDatepickerAdapter() {\n    this.datepickerAdapter = this.datepickerAdapters.find(({ picker }) => this.picker instanceof picker);\n\n    if (this.noDatepickerAdapterProvided()) {\n      throw new Error('No datepickerAdapter provided for picker');\n    }\n  }\n\n  /**\n   * Attaches picker to the host input element and subscribes on value changes.\n   * */\n  protected setupPicker() {\n    this.chooseDatepickerAdapter();\n    this.picker.attach(this.hostRef);\n\n    if (this.inputValue) {\n      this.picker.value = this.datepickerAdapter.parse(this.inputValue, this.picker.format);\n    }\n\n    this.pickerInputsChangedSubscription?.unsubscribe();\n    this.pickerInputsChangedSubscription = this.picker.formatChanged$\n      .pipe(\n        map(() => this.picker.format),\n        startWith(this.picker.format),\n        distinctUntilChanged(),\n        pairwise(),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(([prevFormat, nextFormat]) => {\n        if (this.inputValue) {\n          const date = this.datepickerAdapter.parse(this.inputValue, prevFormat);\n          this.writeInput(date);\n        }\n      });\n\n    // In case datepicker component placed after the input with datepicker directive,\n    // we can't read `this.picker.format` on first change detection run,\n    // since it's not bound yet, so we have to wait for datepicker component initialization.\n    if (!this.isDatepickerReady) {\n      this.picker.init\n        .pipe(\n          take(1),\n          tap(() => (this.isDatepickerReady = true)),\n          filter(() => !!this.queue),\n          takeUntil(this.destroy$),\n        )\n        .subscribe(() => {\n          this.writeValue(this.queue);\n          this.changeDetector.detectChanges();\n          this.queue = undefined;\n        });\n    }\n\n    this.picker.valueChange.pipe(takeUntil(this.destroy$)).subscribe((value: D) => {\n      this.writePicker(value);\n      this.writeInput(value);\n      this.onChange(value);\n\n      if (this.picker.shouldHide()) {\n        this.hidePicker();\n      }\n    });\n\n    merge(\n      this.picker.blur,\n      fromEvent(this.input, 'blur').pipe(\n        filter(() => !this.picker.isShown && this.document.activeElement !== this.input),\n      ),\n    )\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(() => this.onTouched());\n  }\n\n  protected writePicker(value: D) {\n    this.picker.value = value;\n  }\n\n  protected writeInput(value: D) {\n    this.hostRef.nativeElement.value = this.datepickerAdapter.format(value, this.picker.format);\n  }\n\n  /**\n   * Validates if no datepicker adapter provided.\n   * */\n  protected noDatepickerAdapterProvided(): boolean {\n    return !this.datepickerAdapter || !(this.datepickerAdapter instanceof NbDatepickerAdapter);\n  }\n\n  protected subscribeOnInputChange() {\n    fromEvent(this.input, 'input')\n      .pipe(\n        map(() => this.inputValue),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((value: string) => this.handleInputChange(value));\n  }\n\n  /**\n   * Parses input value and write if it isn't null.\n   * */\n  protected handleInputChange(value: string) {\n    const date = this.parseInputValue(value);\n\n    this.onChange(date);\n    this.writePicker(date);\n  }\n\n  protected parseInputValue(value): D | null {\n    if (this.datepickerAdapter.isValid(value, this.picker.format)) {\n      return this.datepickerAdapter.parse(value, this.picker.format);\n    }\n\n    return null;\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  Component,\n  ComponentFactoryResolver,\n  ComponentRef,\n  OnChanges,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  OnDestroy,\n  Output,\n  Type,\n  OnInit,\n  SimpleChanges,\n  Optional,\n} from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\nimport { Observable, ReplaySubject, Subject } from 'rxjs';\n\nimport { NbComponentPortal, NbOverlayRef } from '../cdk/overlay/mapping';\nimport {\n  NbAdjustableConnectedPositionStrategy,\n  NbAdjustment,\n  NbAdjustmentValues,\n  NbPosition,\n  NbPositionBuilderService,\n} from '../cdk/overlay/overlay-position';\nimport { NbOverlayService, patch } from '../cdk/overlay/overlay-service';\nimport { NbTrigger, NbTriggerStrategy, NbTriggerStrategyBuilderService } from '../cdk/overlay/overlay-trigger';\nimport { NbDatepickerContainerComponent } from './datepicker-container.component';\nimport { NB_DOCUMENT } from '../../theme.options';\nimport { NbCalendarRange, NbCalendarRangeComponent } from '../calendar/calendar-range.component';\nimport { NbCalendarComponent } from '../calendar/calendar.component';\nimport {\n  NbCalendarCell,\n  NbCalendarSize,\n  NbCalendarViewMode,\n  NbCalendarSizeValues,\n  NbCalendarViewModeValues,\n} from '../calendar-kit/model';\nimport { NbDateService } from '../calendar-kit/services/date.service';\nimport { NB_DATE_SERVICE_OPTIONS, NbDatepicker, NbPickerValidatorConfig } from './datepicker.directive';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\n\n/**\n * The `NbBasePicker` component concentrates overlay manipulation logic.\n * */\nexport abstract class NbBasePicker<D, T, P> extends NbDatepicker<T, D> {\n  /**\n   * Datepicker date format. Can be used only with date adapters (moment, date-fns) since native date\n   * object doesn't support formatting.\n   * */\n  abstract format: string;\n\n  /**\n   * Defines if we should render previous and next months\n   * in the current month view.\n   * */\n  abstract boundingMonth: boolean;\n\n  /**\n   * Defines starting view for calendar.\n   * */\n  abstract startView: NbCalendarViewMode;\n\n  /**\n   * Minimum available date for selection.\n   * */\n  abstract min: D;\n\n  /**\n   * Maximum available date for selection.\n   * */\n  abstract max: D;\n\n  /**\n   * Predicate that decides which cells will be disabled.\n   * */\n  abstract filter: (D) => boolean;\n\n  /**\n   * Custom day cell component. Have to implement `NbCalendarCell` interface.\n   * */\n  abstract dayCellComponent: Type<NbCalendarCell<D, T>>;\n\n  /**\n   * Custom month cell component. Have to implement `NbCalendarCell` interface.\n   * */\n  abstract monthCellComponent: Type<NbCalendarCell<D, T>>;\n\n  /**\n   * Custom year cell component. Have to implement `NbCalendarCell` interface.\n   * */\n  abstract yearCellComponent: Type<NbCalendarCell<D, T>>;\n\n  /**\n   * Size of the calendar and entire components.\n   * Can be 'medium' which is default or 'large'.\n   * */\n  abstract size: NbCalendarSize;\n\n  /**\n   * Depending on this date a particular month is selected in the calendar\n   */\n  abstract visibleDate: D;\n\n  /**\n   * Hide picker when a date or a range is selected, `true` by default\n   * @type {boolean}\n   */\n  abstract hideOnSelect: boolean;\n\n  /**\n   * Determines should we show calendar navigation or not.\n   * @type {boolean}\n   */\n  abstract showNavigation: boolean;\n\n  /**\n   * Sets symbol used as a header for week numbers column\n   * */\n  abstract weekNumberSymbol: string;\n\n  /**\n   * Determines should we show week numbers column.\n   * False by default.\n   * */\n  abstract showWeekNumber: boolean;\n\n  /**\n   * Sets first day of the week, it can be 1 if week starts from monday and 0 if from sunday and so on.\n   * `undefined` means that default locale setting will be used.\n   * */\n  abstract firstDayOfWeek: number | undefined;\n\n  readonly formatChanged$: Subject<void> = new Subject();\n\n  /**\n   * Calendar component class that has to be instantiated inside overlay.\n   * */\n  protected abstract pickerClass: Type<P>;\n\n  /**\n   * Overlay reference object.\n   * */\n  protected ref: NbOverlayRef;\n\n  /**\n   * Datepicker container that contains instantiated picker.\n   * */\n  protected container: ComponentRef<NbDatepickerContainerComponent>;\n\n  /**\n   * Positioning strategy used by overlay.\n   * */\n  protected positionStrategy: NbAdjustableConnectedPositionStrategy;\n\n  /**\n   * Trigger strategy used by overlay\n   * */\n  protected triggerStrategy: NbTriggerStrategy;\n\n  /**\n   * HTML input reference to which datepicker connected.\n   * */\n  protected hostRef: ElementRef;\n\n  protected init$: ReplaySubject<void> = new ReplaySubject<void>();\n\n  /**\n   * Stream of picker changes. Required to be the subject because picker hides and shows and picker\n   * change stream becomes recreated.\n   * */\n  protected onChange$: Subject<T> = new Subject();\n\n  /**\n   * Reference to the picker instance itself.\n   * */\n  protected pickerRef: ComponentRef<any>;\n\n  protected overlayOffset = 8;\n\n  protected adjustment: NbAdjustment = NbAdjustment.COUNTERCLOCKWISE;\n\n  protected destroy$ = new Subject<void>();\n\n  /**\n   * Queue contains the last value that was applied to the picker when it was hidden.\n   * This value will be passed to the picker as soon as it shown.\n   * */\n  protected queue: T | undefined;\n\n  protected blur$: Subject<void> = new Subject<void>();\n\n  protected constructor(\n    protected overlay: NbOverlayService,\n    protected positionBuilder: NbPositionBuilderService,\n    protected triggerStrategyBuilder: NbTriggerStrategyBuilderService,\n    protected cfr: ComponentFactoryResolver,\n    protected dateService: NbDateService<D>,\n    protected dateServiceOptions,\n  ) {\n    super();\n  }\n\n  /**\n   * Returns picker instance.\n   * */\n  get picker(): any {\n    return this.pickerRef && this.pickerRef.instance;\n  }\n\n  /**\n   * Stream of picker value changes.\n   * */\n  get valueChange(): Observable<T> {\n    return this.onChange$.asObservable();\n  }\n\n  get isShown(): boolean {\n    return this.ref && this.ref.hasAttached();\n  }\n\n  get init(): Observable<void> {\n    return this.init$.asObservable();\n  }\n\n  /**\n   * Emits when datepicker looses focus.\n   */\n  get blur(): Observable<void> {\n    return this.blur$.asObservable();\n  }\n\n  protected abstract get pickerValueChange(): Observable<T>;\n\n  /**\n   * Datepicker knows nothing about host html input element.\n   * So, attach method attaches datepicker to the host input element.\n   * */\n  attach(hostRef: ElementRef) {\n    this.hostRef = hostRef;\n    this.subscribeOnTriggers();\n  }\n\n  getValidatorConfig(): NbPickerValidatorConfig<D> {\n    return { min: this.min, max: this.max, filter: this.filter };\n  }\n\n  show() {\n    if (!this.ref) {\n      this.createOverlay();\n    }\n\n    this.openDatepicker();\n  }\n\n  shouldHide(): boolean {\n    return this.hideOnSelect && !!this.value;\n  }\n\n  hide() {\n    if (this.ref) {\n      this.ref.detach();\n    }\n\n    // save current value if picker was rendered\n    if (this.picker) {\n      this.queue = this.value;\n      this.pickerRef.destroy();\n      this.pickerRef = null;\n      this.container = null;\n    }\n  }\n\n  protected abstract writeQueue();\n\n  protected createOverlay() {\n    this.positionStrategy = this.createPositionStrategy();\n    this.ref = this.overlay.create({\n      positionStrategy: this.positionStrategy,\n      scrollStrategy: this.overlay.scrollStrategies.reposition(),\n    });\n    this.subscribeOnPositionChange();\n  }\n\n  protected openDatepicker() {\n    this.container = this.ref.attach(new NbComponentPortal(NbDatepickerContainerComponent, null, null, this.cfr));\n    this.instantiatePicker();\n    this.subscribeOnValueChange();\n    this.writeQueue();\n    this.patchWithInputs();\n    this.pickerRef.changeDetectorRef.markForCheck();\n  }\n\n  protected createPositionStrategy(): NbAdjustableConnectedPositionStrategy {\n    return this.positionBuilder\n      .connectedTo(this.hostRef)\n      .position(NbPosition.BOTTOM)\n      .offset(this.overlayOffset)\n      .adjustment(this.adjustment);\n  }\n\n  protected subscribeOnPositionChange() {\n    this.positionStrategy.positionChange\n      .pipe(takeUntil(this.destroy$))\n      .subscribe((position: NbPosition) => patch(this.container, { position }));\n  }\n\n  protected createTriggerStrategy(): NbTriggerStrategy {\n    return this.triggerStrategyBuilder\n      .trigger(NbTrigger.FOCUS)\n      .host(this.hostRef.nativeElement)\n      .container(() => this.container)\n      .build();\n  }\n\n  protected subscribeOnTriggers() {\n    this.triggerStrategy = this.createTriggerStrategy();\n    this.triggerStrategy.show$.subscribe(() => this.show());\n    this.triggerStrategy.hide$.subscribe(() => {\n      this.blur$.next();\n      this.hide();\n    });\n  }\n\n  protected instantiatePicker() {\n    this.pickerRef = this.container.instance.attach(new NbComponentPortal(this.pickerClass, null, null, this.cfr));\n  }\n\n  /**\n   * Subscribes on picker value changes and emit data through this.onChange$ subject.\n   * */\n  protected subscribeOnValueChange() {\n    this.pickerValueChange.subscribe((date) => {\n      this.onChange$.next(date);\n    });\n  }\n\n  protected patchWithInputs() {\n    this.picker.boundingMonth = this.boundingMonth;\n    this.picker.startView = this.startView;\n    this.picker.min = this.min;\n    this.picker.max = this.max;\n    this.picker.filter = this.filter;\n    this.picker._cellComponent = this.dayCellComponent;\n    this.picker._monthCellComponent = this.monthCellComponent;\n    this.picker._yearCellComponent = this.yearCellComponent;\n    this.picker.size = this.size;\n    this.picker.showNavigation = this.showNavigation;\n    this.picker.visibleDate = this.visibleDate;\n    this.picker.showWeekNumber = this.showWeekNumber;\n    this.picker.weekNumberSymbol = this.weekNumberSymbol;\n    this.picker.firstDayOfWeek = this.firstDayOfWeek;\n  }\n\n  protected checkFormat() {\n    if (this.dateService.getId() === 'native' && this.format) {\n      throw new Error(\n        \"Can't format native date. To use custom formatting you have to install @nebular/moment or \" +\n          '@nebular/date-fns package and import NbMomentDateModule or NbDateFnsDateModule accordingly.' +\n          'More information at \"Formatting issue\" ' +\n          'https://akveo.github.io/nebular/docs/components/datepicker/overview#nbdatepickercomponent',\n      );\n    }\n\n    const isFormatSet = this.format || (this.dateServiceOptions && this.dateServiceOptions.format);\n    if (this.dateService.getId() === 'date-fns' && !isFormatSet) {\n      throw new Error('format is required when using NbDateFnsDateModule');\n    }\n  }\n}\n\n@Component({\n    template: '',\n    standalone: false\n})\nexport class NbBasePickerComponent<D, T, P> extends NbBasePicker<D, T, P> implements OnInit, OnChanges, OnDestroy {\n  /**\n   * Datepicker date format. Can be used only with date adapters (moment, date-fns) since native date\n   * object doesn't support formatting.\n   * */\n  @Input() format: string;\n\n  /**\n   * Defines if we should render previous and next months\n   * in the current month view.\n   * */\n  @Input() boundingMonth: boolean = true;\n\n  /**\n   * Defines starting view for calendar.\n   * */\n  @Input() startView: NbCalendarViewMode = NbCalendarViewMode.DATE;\n  static ngAcceptInputType_startView: NbCalendarViewModeValues;\n\n  /**\n   * Minimum available date for selection.\n   * */\n  @Input() min: D;\n\n  /**\n   * Maximum available date for selection.\n   * */\n  @Input() max: D;\n\n  /**\n   * Predicate that decides which cells will be disabled.\n   * */\n  @Input() filter: (D) => boolean;\n\n  /**\n   * Custom day cell component. Have to implement `NbCalendarCell` interface.\n   * */\n  @Input() dayCellComponent: Type<NbCalendarCell<D, T>>;\n\n  /**\n   * Custom month cell component. Have to implement `NbCalendarCell` interface.\n   * */\n  @Input() monthCellComponent: Type<NbCalendarCell<D, T>>;\n\n  /**\n   * Custom year cell component. Have to implement `NbCalendarCell` interface.\n   * */\n  @Input() yearCellComponent: Type<NbCalendarCell<D, T>>;\n\n  /**\n   * Size of the calendar and entire components.\n   * Can be 'medium' which is default or 'large'.\n   * */\n  @Input() size: NbCalendarSize = NbCalendarSize.MEDIUM;\n  static ngAcceptInputType_size: NbCalendarSizeValues;\n\n  /**\n   * Depending on this date a particular month is selected in the calendar\n   */\n  @Input() visibleDate: D;\n\n  /**\n   * Hide picker when a date or a range is selected, `true` by default\n   * @type {boolean}\n   */\n  @Input() hideOnSelect: boolean = true;\n\n  /**\n   * Determines should we show calendars navigation or not.\n   * @type {boolean}\n   */\n  @Input() showNavigation: boolean = true;\n\n  /**\n   * Sets symbol used as a header for week numbers column\n   * */\n  @Input() weekNumberSymbol: string = '#';\n\n  /**\n   * Determines should we show week numbers column.\n   * False by default.\n   * */\n  @Input()\n  get showWeekNumber(): boolean {\n    return this._showWeekNumber;\n  }\n  set showWeekNumber(value: boolean) {\n    this._showWeekNumber = convertToBoolProperty(value);\n  }\n  protected _showWeekNumber: boolean = false;\n  static ngAcceptInputType_showWeekNumber: NbBooleanInput;\n\n  @Input() firstDayOfWeek: number | undefined;\n\n  /**\n   * Determines picker overlay offset (in pixels).\n   * */\n  @Input() overlayOffset = 8;\n\n  @Input() adjustment: NbAdjustment = NbAdjustment.COUNTERCLOCKWISE;\n  static ngAcceptInputType_adjustment: NbAdjustmentValues;\n\n  constructor(\n    @Inject(NB_DOCUMENT) document,\n    positionBuilder: NbPositionBuilderService,\n    triggerStrategyBuilder: NbTriggerStrategyBuilderService,\n    overlay: NbOverlayService,\n    cfr: ComponentFactoryResolver,\n    dateService: NbDateService<D>,\n    @Optional() @Inject(NB_DATE_SERVICE_OPTIONS) dateServiceOptions,\n  ) {\n    super(overlay, positionBuilder, triggerStrategyBuilder, cfr, dateService, dateServiceOptions);\n  }\n\n  ngOnInit() {\n    this.checkFormat();\n    this.init$.next();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.format) {\n      if (!changes.format.isFirstChange()) {\n        this.checkFormat();\n      }\n      this.formatChanged$.next();\n    }\n    if (this.picker) {\n      this.patchWithInputs();\n    }\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n    this.hide();\n    this.init$.complete();\n\n    if (this.ref) {\n      this.ref.dispose();\n    }\n\n    if (this.triggerStrategy) {\n      this.triggerStrategy.destroy();\n    }\n  }\n\n  protected pickerClass: Type<P>;\n\n  protected get pickerValueChange(): Observable<T> {\n    return undefined;\n  }\n\n  get value(): T {\n    return undefined;\n  }\n  set value(value: T) {}\n\n  protected writeQueue() {}\n}\n\n/**\n * The DatePicker components itself.\n * Provides a proxy to `NbCalendar` options as well as custom picker options.\n */\n@Component({\n    selector: 'nb-datepicker',\n    template: '',\n    standalone: false\n})\nexport class NbDatepickerComponent<D> extends NbBasePickerComponent<D, D, NbCalendarComponent<D>> {\n  protected pickerClass: Type<NbCalendarComponent<D>> = NbCalendarComponent;\n\n  /**\n   * Date which will be rendered as selected.\n   * */\n  @Input() set date(date: D) {\n    this.value = date;\n  }\n\n  /**\n   * Emits date when selected.\n   * */\n  @Output() get dateChange(): EventEmitter<D> {\n    return this.valueChange as EventEmitter<D>;\n  }\n\n  get value(): D {\n    return this.picker ? this.picker.date : undefined;\n  }\n\n  set value(date: D) {\n    if (!this.picker) {\n      this.queue = date;\n      return;\n    }\n\n    if (date) {\n      this.visibleDate = date;\n      this.picker.visibleDate = date;\n      this.picker.date = date;\n    }\n  }\n\n  protected get pickerValueChange(): Observable<D> {\n    return this.picker.dateChange;\n  }\n\n  protected writeQueue() {\n    if (this.queue) {\n      const date = this.queue;\n      this.queue = null;\n      this.value = date;\n    }\n  }\n}\n\n/**\n * The RangeDatePicker components itself.\n * Provides a proxy to `NbCalendarRange` options as well as custom picker options.\n */\n@Component({\n    selector: 'nb-rangepicker',\n    template: '',\n    standalone: false\n})\nexport class NbRangepickerComponent<D> extends NbBasePickerComponent<\n  D,\n  NbCalendarRange<D>,\n  NbCalendarRangeComponent<D>\n> {\n  protected pickerClass: Type<NbCalendarRangeComponent<D>> = NbCalendarRangeComponent;\n\n  /**\n   * Range which will be rendered as selected.\n   * */\n  @Input() set range(range: NbCalendarRange<D>) {\n    this.value = range;\n  }\n\n  /**\n   * Emits range when start selected and emits again when end selected.\n   * */\n  @Output() get rangeChange(): EventEmitter<NbCalendarRange<D>> {\n    return this.valueChange as EventEmitter<NbCalendarRange<D>>;\n  }\n\n  get value(): NbCalendarRange<D> {\n    return this.picker ? this.picker.range : undefined;\n  }\n\n  set value(range: NbCalendarRange<D>) {\n    if (!this.picker) {\n      this.queue = range;\n      return;\n    }\n\n    if (range) {\n      const visibleDate = range && range.start;\n      this.visibleDate = visibleDate;\n      this.picker.visibleDate = visibleDate;\n      this.picker.range = range;\n    }\n  }\n\n  protected get pickerValueChange(): Observable<NbCalendarRange<D>> {\n    return this.picker.rangeChange;\n  }\n\n  shouldHide(): boolean {\n    return super.shouldHide() && !!(this.value && this.value.start && this.value.end);\n  }\n\n  protected writeQueue() {\n    if (this.queue) {\n      const range = this.queue;\n      this.queue = null;\n      this.value = range;\n    }\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ComponentFactoryResolver,\n  EventEmitter,\n  Inject,\n  Input,\n  OnInit,\n  Optional,\n  Output,\n  Type,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NB_DOCUMENT } from '../../theme.options';\nimport { NbPositionBuilderService } from '../cdk/overlay/overlay-position';\nimport { NbTriggerStrategyBuilderService } from '../cdk/overlay/overlay-trigger';\nimport { NbOverlayService } from '../cdk/overlay/overlay-service';\nimport { NbCalendarTimeModelService } from '../calendar-kit/services/calendar-time-model.service';\nimport { NbDateService } from '../calendar-kit/services/date.service';\nimport { NbCalendarWithTimeComponent } from './calendar-with-time.component';\nimport { NbBasePickerComponent } from './datepicker.component';\nimport { NB_DATE_SERVICE_OPTIONS } from './datepicker.directive';\n\n/**\n * The DateTimePicker component itself.\n * Provides a proxy to `NbCalendarWithTimeComponent` options as well as custom picker options.\n */\n@Component({\n    selector: 'nb-date-timepicker',\n    template: '',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbDateTimePickerComponent<D>\n  extends NbBasePickerComponent<D, D, NbCalendarWithTimeComponent<D>>\n  implements OnInit\n{\n  protected pickerClass: Type<NbCalendarWithTimeComponent<D>> = NbCalendarWithTimeComponent;\n\n  get value(): any {\n    return this.picker ? this.picker.date : undefined;\n  }\n  set value(date: any) {\n    if (!this.picker) {\n      this.queue = date;\n      return;\n    }\n\n    if (date) {\n      this.visibleDate = date;\n      this.picker.visibleDate = date;\n      this.picker.date = date;\n      this.picker.cd.markForCheck();\n    }\n  }\n\n  /**\n   * Defines minutes step when we use fill time format.\n   * If set to 20, it will be: '12:00, 12:20: 12:40, 13:00...'\n   * */\n  @Input() step: number;\n\n  @Input() title: string;\n  @Input() applyButtonText: string;\n  @Input() currentTimeButtonText: string;\n  @Input() showCurrentTimeButton = true;\n\n  /**\n   * Defines 12 hours format like '07:00 PM'.\n   * */\n  @Input()\n  get twelveHoursFormat(): boolean {\n    return this._twelveHoursFormat;\n  }\n  set twelveHoursFormat(value: boolean) {\n    this._twelveHoursFormat = convertToBoolProperty(value);\n  }\n  _twelveHoursFormat: boolean;\n  static ngAcceptInputType_twelveHoursFormat: NbBooleanInput;\n\n  /**\n   * Defines should show am/pm label if twelveHoursFormat enabled.\n   * */\n  @Input()\n  get showAmPmLabel(): boolean {\n    return this._showAmPmLabel;\n  }\n  set showAmPmLabel(value: boolean) {\n    this._showAmPmLabel = convertToBoolProperty(value);\n  }\n  protected _showAmPmLabel: boolean = true;\n  static ngAcceptInputType_showAmPmLabel: NbBooleanInput;\n\n  /**\n   * Show seconds in timepicker.\n   * Ignored when singleColumn is true.\n   * */\n  @Input()\n  get withSeconds(): boolean {\n    return this._withSeconds;\n  }\n  set withSeconds(value: boolean) {\n    this._withSeconds = convertToBoolProperty(value);\n  }\n  _withSeconds: boolean;\n  static ngAcceptInputType_withSeconds: NbBooleanInput;\n\n  /**\n   * Show timepicker values in one column with 60 minutes step by default.\n   * */\n  @Input()\n  get singleColumn(): boolean {\n    return this._singleColumn;\n  }\n  set singleColumn(value: boolean) {\n    this._singleColumn = convertToBoolProperty(value);\n  }\n  _singleColumn: boolean;\n  static ngAcceptInputType_singleColumn: NbBooleanInput;\n\n  /**\n   * Emits date with time when selected.\n   * */\n  @Output() get dateTimeChange(): EventEmitter<D> {\n    return this.valueChange as EventEmitter<D>;\n  }\n\n  constructor(\n    @Inject(NB_DOCUMENT) document,\n    positionBuilder: NbPositionBuilderService,\n    triggerStrategyBuilder: NbTriggerStrategyBuilderService,\n    overlay: NbOverlayService,\n    cfr: ComponentFactoryResolver,\n    dateService: NbDateService<D>,\n    @Optional() @Inject(NB_DATE_SERVICE_OPTIONS) dateServiceOptions,\n    protected calendarWithTimeModelService: NbCalendarTimeModelService<D>,\n  ) {\n    super(document, positionBuilder, triggerStrategyBuilder, overlay, cfr, dateService, dateServiceOptions);\n  }\n\n  ngOnInit() {\n    this.format = this.format || this.buildTimeFormat();\n    this.init$.next();\n  }\n\n  protected patchWithInputs() {\n    this.picker.singleColumn = this.singleColumn;\n    this.picker.twelveHoursFormat = this.twelveHoursFormat;\n    this.picker.showAmPmLabel = this.showAmPmLabel;\n    this.picker.withSeconds = this.withSeconds;\n    this.picker.step = this.step;\n    this.picker.title = this.title;\n    this.picker.applyButtonText = this.applyButtonText;\n    this.picker.currentTimeButtonText = this.currentTimeButtonText;\n    this.picker.showCurrentTimeButton = this.showCurrentTimeButton;\n\n    if (this.twelveHoursFormat) {\n      this.picker.timeFormat = this.dateService.getTwelveHoursFormat();\n    } else {\n      this.picker.timeFormat =\n        this.withSeconds && !this.singleColumn\n          ? this.dateService.getTwentyFourHoursFormatWithSeconds()\n          : this.dateService.getTwentyFourHoursFormat();\n    }\n    super.patchWithInputs();\n\n    this.picker.cd.markForCheck();\n  }\n\n  protected get pickerValueChange(): Observable<any> {\n    return this.picker.dateChange;\n  }\n\n  protected writeQueue() {\n    if (this.queue) {\n      const date = this.queue;\n      this.queue = null;\n      this.value = date;\n    }\n  }\n\n  protected buildTimeFormat(): string {\n    if (this.singleColumn) {\n      return this.calendarWithTimeModelService.buildDateFormat(this.twelveHoursFormat);\n    } else {\n      return this.calendarWithTimeModelService.buildDateFormat(this.twelveHoursFormat, this.withSeconds);\n    }\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nexport function isUrlPathEqual(path, link) {\n  const locationPath = getPathPartOfUrl(path);\n  return link === locationPath;\n}\n\nexport function isUrlPathContain(path, link) {\n  const locationPath = getPathPartOfUrl(path);\n  const endOfUrlSegmentRegExp = /\\/|^$/;\n  return locationPath.startsWith(link) &&\n    locationPath.slice(link.length).charAt(0).search(endOfUrlSegmentRegExp) !== -1;\n}\n\nexport function getPathPartOfUrl(url): string {\n  return url.match(/.*?(?=[?;#]|$)/)[0];\n}\n\nexport function getFragmentPartOfUrl(url: string): string {\n  const matched = url.match(/#(.+)/);\n  return matched ? matched[1] : '';\n}\n\nexport function isFragmentEqual(path: string, fragment: string): boolean {\n  return getFragmentPartOfUrl(path) === fragment;\n}\n\nexport function isFragmentContain(path: string, fragment: string): boolean {\n  return getFragmentPartOfUrl(path).includes(fragment);\n}\n","import { Injectable } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { Observable } from 'rxjs';\n\nimport { filter, pairwise, startWith, map } from 'rxjs/operators';\nimport { getPathPartOfUrl } from '../menu/url-matching-helpers';\n\n/**\n * This service determines whether we should scroll the layout back to top.\n * This occurs when the page is changed, so when current url PATH is not equal to the previous one.\n *\n *  TODO: this is most likely a temporary solutions as recently Angular introduces ViewportScroll\n *  and scroll restoration process\n */\n@Injectable()\nexport class NbRestoreScrollTopHelper {\n\n  constructor(private router: Router) {\n  }\n\n  shouldRestore(): Observable<boolean> {\n    return this.router.events\n      .pipe(\n        startWith(null),\n        filter(event => event === null || event instanceof NavigationEnd),\n        pairwise(),\n        map(([prev, current]) => this.pageChanged(prev as NavigationEnd, current as NavigationEnd)),\n        filter(res => !!res),\n      );\n  }\n\n  private pageChanged(prev: NavigationEnd, current: NavigationEnd) {\n    return !prev || getPathPartOfUrl(prev.url) !== getPathPartOfUrl(current.url);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  HostBinding,\n  HostListener,\n  Input,\n  OnDestroy,\n  Renderer2,\n  ViewChild,\n  ViewContainerRef,\n  Inject,\n  PLATFORM_ID,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbThemeService } from '../../services/theme.service';\nimport { NbSpinnerService } from '../../services/spinner.service';\nimport { NbLayoutDirectionService } from '../../services/direction.service';\nimport { NbRestoreScrollTopHelper } from './restore-scroll-top.service';\nimport { NbScrollPosition, NbLayoutScrollService } from '../../services/scroll.service';\nimport { NbLayoutDimensions, NbLayoutRulerService } from '../../services/ruler.service';\nimport { NB_WINDOW, NB_DOCUMENT } from '../../theme.options';\nimport { NbOverlayContainerAdapter } from '../cdk/adapter/overlay-container-adapter';\n\n/**\n * Layout container component.\n * When using with Nebular Theme System it is required that all child components should be placed inside.\n *\n * Basic example of two column layout with header:\n *\n * @stacked-example(Showcase, layout/layout-showcase.component)\n *\n * Can contain the following components inside:\n *\n * ```html\n * <nb-layout>\n *  <nb-layout-header></nb-layout-header>\n *  <nb-layout-footer></nb-layout-footer>\n *  <nb-layout-column></nb-layout-column>\n *  <nb-sidebar></nb-sidebar>\n * </nb-layout>\n * ```\n * ### Installation\n *\n * Import `NbLayoutModule` to your app module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbLayoutModule,\n *   ],\n * })\n * export class AppModule { }\n * ```\n * ### Usage\n * By default the layout fills up the whole view-port.\n * The window scrollbars are disabled on the body and moved inside of the nb-layout, so that the scrollbars\n * won't mess with the fixed nb-header.\n *\n * The child components are projected into a flexible layout structure allowing to adjust the layout behavior\n * based on the settings provided.\n *\n * The layout content (columns) becomes centered when the window width is more than\n * the value specified in the theme variable `layout-content-width`.\n *\n * The layout also contains the area on the very top (the first child of the nb-layout), which could be used\n * to dynamically append some components like modals or spinners/loaders\n * so that they are located on top of the elements hierarchy.\n * More details are under the `ThemeService` section.\n *\n * The layout component is also responsible for changing application themes.\n * It listens to the `themeChange` event and change a theme CSS class appended to body.\n * Based on the class appended, specific CSS-theme is applied to the application.\n * More details of the Theme System could be found here [Enabling Theme System](#/docs/concepts/theme-system)\n *\n * A simple layout with footer:\n *\n * @stacked-example(Layout With Footer, layout/layout-w-footer.component)\n *\n * It is possible to ask the layout to center the columns (notice: we added a `center` attribute\n * to the layout:\n *\n * ```html\n * <nb-layout center>\n *   <nb-layout-header>Awesome Company</nb-layout-header>\n *\n *   <nb-layout-column>\n *     Hello World!\n *   </nb-layout-column>\n *\n *   <nb-layout-footer>Contact us</nb-layout-footer>\n * </nb-layout>\n * ```\n *\n * @styles\n *\n * layout-background-color:\n * layout-text-color:\n * layout-text-font-family:\n * layout-text-font-size:\n * layout-text-font-weight:\n * layout-text-line-height:\n * layout-min-height:\n * layout-content-width:\n * layout-window-mode-min-width:\n * layout-window-mode-background-color:\n * layout-window-mode-padding-top:\n * layout-window-shadow:\n * layout-padding:\n * layout-medium-padding:\n * layout-small-padding:\n * layout-scrollbar-background-color:\n * layout-scrollbar-color:\n * layout-scrollbar-width:\n */\n@Component({\n    selector: 'nb-layout',\n    styleUrls: ['./layout.component.scss'],\n    template: `\n    <div class=\"scrollable-container\" #scrollableContainer (scroll)=\"onScroll($event)\">\n      <div class=\"layout\" #layoutContainer>\n        <ng-content select=\"nb-layout-header:not([subheader])\"></ng-content>\n        <div class=\"layout-container\">\n          <ng-content select=\"nb-sidebar\"></ng-content>\n          <div class=\"content\" [class.center]=\"centerValue\">\n            <ng-content select=\"nb-layout-header[subheader]\"></ng-content>\n            <div class=\"columns\">\n              <ng-content select=\"nb-layout-column\"></ng-content>\n            </div>\n            <ng-content select=\"nb-layout-footer\"></ng-content>\n          </div>\n        </div>\n      </div>\n    </div>\n  `,\n    standalone: false\n})\nexport class NbLayoutComponent implements AfterViewInit, OnDestroy {\n  protected scrollBlockClass = 'nb-global-scrollblock';\n  protected isScrollBlocked = false;\n  protected scrollableContainerOverflowOldValue: string;\n  protected layoutPaddingOldValue: { left: string; right: string };\n\n  centerValue: boolean = false;\n  restoreScrollTopValue: boolean = true;\n\n  @HostBinding('class.window-mode') windowModeValue: boolean = false;\n  @HostBinding('class.with-scroll') withScrollValue: boolean = false;\n  @HostBinding('class.with-subheader') withSubheader: boolean = false;\n\n  /**\n   * Defines whether the layout columns will be centered after some width\n   * @param {boolean} val\n   */\n  @Input()\n  set center(val: boolean) {\n    this.centerValue = convertToBoolProperty(val);\n  }\n  static ngAcceptInputType_center: NbBooleanInput;\n\n  /**\n   * Defines whether the layout enters a 'window' mode, when the layout content (including sidebars and fixed header)\n   * becomes centered by width with a margin from the top of the screen, like a floating window.\n   * Automatically enables `withScroll` mode, as in the window mode scroll must be inside the layout and cannot be on\n   * window. (TODO: check this)\n   * @param {boolean} val\n   */\n  @Input()\n  set windowMode(val: boolean) {\n    this.windowModeValue = convertToBoolProperty(val);\n    this.withScroll = this.windowModeValue;\n  }\n  static ngAcceptInputType_windowMode: NbBooleanInput;\n\n  /**\n   * Defines whether to move the scrollbars to layout or leave it at the body level.\n   * Automatically set to true when `windowMode` is enabled.\n   * @param {boolean} val\n   */\n  @Input()\n  set withScroll(val: boolean) {\n    this.withScrollValue = convertToBoolProperty(val);\n\n    // TODO: is this the best way of doing it? as we don't have access to body from theme styles\n    // TODO: add e2e test\n    const body = this.document.getElementsByTagName('body')[0];\n    if (this.withScrollValue) {\n      this.renderer.setStyle(body, 'overflow', 'hidden');\n    } else {\n      this.renderer.setStyle(body, 'overflow', 'initial');\n    }\n  }\n  static ngAcceptInputType_withScroll: NbBooleanInput;\n\n  /**\n   * Restores scroll to the top of the page after navigation\n   * @param {boolean} val\n   */\n  @Input()\n  set restoreScrollTop(val: boolean) {\n    this.restoreScrollTopValue = convertToBoolProperty(val);\n  }\n  static ngAcceptInputType_restoreScrollTop: NbBooleanInput;\n\n  // TODO remove as of 5.0.0\n  @ViewChild('layoutTopDynamicArea', { read: ViewContainerRef }) veryTopRef: ViewContainerRef;\n\n  @ViewChild('scrollableContainer', { read: ElementRef, static: true })\n  scrollableContainerRef: ElementRef<HTMLElement>;\n\n  @ViewChild('layoutContainer', { read: ElementRef })\n  layoutContainerRef: ElementRef<HTMLElement>;\n\n  protected afterViewInit$ = new BehaviorSubject(null);\n\n  private destroy$ = new Subject<void>();\n\n  constructor(\n    protected themeService: NbThemeService,\n    protected spinnerService: NbSpinnerService,\n    protected elementRef: ElementRef,\n    protected renderer: Renderer2,\n    @Inject(NB_WINDOW) protected window,\n    @Inject(NB_DOCUMENT) protected document,\n    @Inject(PLATFORM_ID) protected platformId: Object,\n    protected layoutDirectionService: NbLayoutDirectionService,\n    protected scrollService: NbLayoutScrollService,\n    protected rulerService: NbLayoutRulerService,\n    protected scrollTop: NbRestoreScrollTopHelper,\n    protected overlayContainer: NbOverlayContainerAdapter,\n  ) {\n    this.registerAsOverlayContainer();\n\n    this.themeService\n      .onThemeChange()\n      .pipe(takeUntil(this.destroy$))\n      .subscribe((theme: any) => {\n        const body = this.document.getElementsByTagName('body')[0];\n        if (theme.previous) {\n          this.renderer.removeClass(body, `nb-theme-${theme.previous}`);\n        }\n        this.renderer.addClass(body, `nb-theme-${theme.name}`);\n      });\n\n    this.themeService\n      .onAppendLayoutClass()\n      .pipe(takeUntil(this.destroy$))\n      .subscribe((className: string) => {\n        this.renderer.addClass(this.elementRef.nativeElement, className);\n      });\n\n    this.themeService\n      .onRemoveLayoutClass()\n      .pipe(takeUntil(this.destroy$))\n      .subscribe((className: string) => {\n        this.renderer.removeClass(this.elementRef.nativeElement, className);\n      });\n\n    this.spinnerService.registerLoader(\n      new Promise<void>((resolve) => {\n        this.afterViewInit$.pipe(takeUntil(this.destroy$)).subscribe((_) => resolve());\n      }),\n    );\n    this.spinnerService.load();\n\n    this.rulerService\n      .onGetDimensions()\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(({ listener }) => {\n        listener.next(this.getDimensions());\n        listener.complete();\n      });\n\n    this.scrollService\n      .onGetPosition()\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(({ listener }) => {\n        listener.next(this.getScrollPosition());\n        listener.complete();\n      });\n\n    this.scrollTop\n      .shouldRestore()\n      .pipe(\n        filter(() => this.restoreScrollTopValue),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => {\n        this.scroll(0, 0);\n      });\n\n    this.scrollService\n      .onScrollableChange()\n      .pipe(filter(() => this.withScrollValue), takeUntil(this.destroy$))\n      .subscribe((scrollable: boolean) => {\n        /**\n         * In case when Nebular Layout custom scroll `withScroll` mode is enabled\n         * we need to disable default CDK scroll blocker (@link NbBlockScrollStrategyAdapter) on HTML element\n         * so that it won't add additional positioning.\n         */\n        if (scrollable) {\n          this.enableScroll();\n        } else {\n          this.blockScroll();\n        }\n      });\n\n    if (isPlatformBrowser(this.platformId)) {\n      // trigger first time so that after the change we have the initial value\n      this.themeService.changeWindowWidth(this.window.innerWidth);\n    }\n  }\n\n  ngAfterViewInit() {\n    this.layoutDirectionService\n      .onDirectionChange()\n      .pipe(takeUntil(this.destroy$))\n      .subscribe((direction) => (this.document.dir = direction));\n\n    this.scrollService\n      .onManualScroll()\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(({ x, y }: NbScrollPosition) => this.scroll(x, y));\n\n    this.afterViewInit$.next(true);\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n    this.unregisterAsOverlayContainer();\n  }\n\n  @HostListener('window:scroll', ['$event'])\n  onScroll($event) {\n    this.scrollService.fireScrollChange($event);\n  }\n\n  @HostListener('window:resize', ['$event'])\n  onResize(event) {\n    this.themeService.changeWindowWidth(event.target.innerWidth);\n  }\n\n  /**\n   * Returns scroll and client height/width\n   *\n   * Depending on the current scroll mode (`withScroll=true`) returns sizes from the body element\n   * or from the `.scrollable-container`\n   * @returns {NbLayoutDimensions}\n   */\n  getDimensions(): NbLayoutDimensions {\n    let clientWidth,\n      clientHeight,\n      scrollWidth,\n      scrollHeight = 0;\n    if (this.withScrollValue) {\n      const container = this.scrollableContainerRef.nativeElement;\n      clientWidth = container.clientWidth;\n      clientHeight = container.clientHeight;\n      scrollWidth = container.scrollWidth;\n      scrollHeight = container.scrollHeight;\n    } else {\n      const { documentElement, body } = this.document;\n      clientWidth = documentElement.clientWidth || body.clientWidth;\n      clientHeight = documentElement.clientHeight || body.clientHeight;\n      scrollWidth = documentElement.scrollWidth || body.scrollWidth;\n      scrollHeight = documentElement.scrollHeight || body.scrollHeight;\n    }\n\n    return {\n      clientWidth,\n      clientHeight,\n      scrollWidth,\n      scrollHeight,\n    };\n  }\n\n  /**\n   * Returns scroll position of current scroll container.\n   *\n   * If `withScroll` = true, returns scroll position of the `.scrollable-container` element,\n   * otherwise - of the scrollable element of the window (which may be different depending of a browser)\n   *\n   * @returns {NbScrollPosition}\n   */\n  getScrollPosition(): NbScrollPosition {\n    if (!isPlatformBrowser(this.platformId)) {\n      return { x: 0, y: 0 };\n    }\n\n    if (this.withScrollValue) {\n      const container = this.scrollableContainerRef.nativeElement;\n      return { x: container.scrollLeft, y: container.scrollTop };\n    }\n\n    const documentRect = this.document.documentElement.getBoundingClientRect();\n\n    const x =\n      -documentRect.left ||\n      this.document.body.scrollLeft ||\n      this.window.scrollX ||\n      this.document.documentElement.scrollLeft ||\n      0;\n\n    const y =\n      -documentRect.top ||\n      this.document.body.scrollTop ||\n      this.window.scrollY ||\n      this.document.documentElement.scrollTop ||\n      0;\n\n    return { x, y };\n  }\n\n  protected registerAsOverlayContainer() {\n    if (this.overlayContainer.setContainer) {\n      this.overlayContainer.setContainer(this.elementRef.nativeElement);\n    }\n  }\n\n  protected unregisterAsOverlayContainer() {\n    if (this.overlayContainer.clearContainer) {\n      this.overlayContainer.clearContainer();\n    }\n  }\n\n  private scroll(x: number = null, y: number = null) {\n    const { x: currentX, y: currentY } = this.getScrollPosition();\n    x = x == null ? currentX : x;\n    y = y == null ? currentY : y;\n\n    if (!isPlatformBrowser(this.platformId)) {\n      return;\n    }\n    if (this.withScrollValue) {\n      const scrollable = this.scrollableContainerRef.nativeElement;\n      if (scrollable.scrollTo) {\n        scrollable.scrollTo(x, y);\n      } else {\n        scrollable.scrollLeft = x;\n        scrollable.scrollTop = y;\n      }\n    } else {\n      this.window.scrollTo(x, y);\n    }\n  }\n\n  // TODO: Extract into block scroll strategy\n  protected blockScroll() {\n    if (this.isScrollBlocked) {\n      return;\n    }\n\n    this.isScrollBlocked = true;\n\n    this.renderer.addClass(this.document.documentElement, this.scrollBlockClass);\n\n    const scrollableContainerElement = this.scrollableContainerRef.nativeElement;\n    const layoutElement = this.layoutContainerRef.nativeElement;\n\n    const layoutWithScrollWidth = layoutElement.clientWidth;\n    this.scrollableContainerOverflowOldValue = scrollableContainerElement.style.overflow;\n    scrollableContainerElement.style.overflow = 'hidden';\n    const layoutWithoutScrollWidth = layoutElement.clientWidth;\n    const scrollWidth = layoutWithoutScrollWidth - layoutWithScrollWidth;\n\n    if (!scrollWidth) {\n      return;\n    }\n\n    this.layoutPaddingOldValue = {\n      left: layoutElement.style.paddingLeft,\n      right: layoutElement.style.paddingRight,\n    };\n\n    if (this.layoutDirectionService.isLtr()) {\n      layoutElement.style.paddingRight = `${scrollWidth}px`;\n    } else {\n      layoutElement.style.paddingLeft = `${scrollWidth}px`;\n    }\n  }\n\n  private enableScroll() {\n    if (this.isScrollBlocked) {\n      this.isScrollBlocked = false;\n\n      this.renderer.removeClass(this.document.documentElement, this.scrollBlockClass);\n      this.scrollableContainerRef.nativeElement.style.overflow = this.scrollableContainerOverflowOldValue;\n\n      if (this.layoutPaddingOldValue) {\n        const layoutElement = this.layoutContainerRef.nativeElement;\n        layoutElement.style.paddingLeft = this.layoutPaddingOldValue.left;\n        layoutElement.style.paddingRight = this.layoutPaddingOldValue.right;\n        this.layoutPaddingOldValue = null;\n      }\n    }\n  }\n}\n\n/**\n * A container component which determines a content position inside of the layout.\n * The layout could contain unlimited columns (not including the sidebars).\n *\n * By default the columns are ordered from the left to the right,\n * but it's also possible to overwrite this behavior by setting a `left` attribute to the column,\n * moving it to the very first position:\n *\n * @stacked-example(Column Left, layout/layout-column-left.component)\n */\n@Component({\n    selector: 'nb-layout-column',\n    template: `<ng-content></ng-content>`,\n    standalone: false\n})\nexport class NbLayoutColumnComponent {\n  @HostBinding('class.left') leftValue: boolean;\n  @HostBinding('class.start') startValue: boolean;\n\n  /**\n   * Move the column to the very left position in the layout.\n   * @param {boolean} val\n   */\n  @Input()\n  set left(val: boolean) {\n    this.leftValue = convertToBoolProperty(val);\n    this.startValue = false;\n  }\n  static ngAcceptInputType_left: NbBooleanInput;\n\n  /**\n   * Make column first in the layout.\n   * @param {boolean} val\n   */\n  @Input()\n  set start(val: boolean) {\n    this.startValue = convertToBoolProperty(val);\n    this.leftValue = false;\n  }\n  static ngAcceptInputType_start: NbBooleanInput;\n}\n\n/**\n * Page header component.\n * Located on top of the page above the layout columns and sidebars.\n * Could be made `fixed` by setting the corresponding property. In the fixed mode the header becomes\n * sticky to the top of the nb-layout (to of the page). Here's an example:\n *\n * @stacked-example(Fixed Header, layout/layout-fixed-header.component)\n *\n * In a pair with sidebar it is possible to setup a configuration when header is placed on a side of the sidebar\n * and not on top of it. To achieve this simply put a `subheader` property to the header like this:\n * ```html\n * <nb-layout-header subheader></nb-layout-header>\n * ```\n * @stacked-example(Subheader, layout/layout-sidebar-subheader.component)\n * Note that in such configuration sidebar shadow is removed and header cannot be make `fixed`.\n *\n * Same way you can put both `fixed` and `clipped` headers adding creating a sub-header for your app:\n *\n * @stacked-example(Subheader, layout/layout-subheader.component)\n *\n * @styles\n *\n * header-background-color:\n * header-text-color:\n * header-text-font-family:\n * header-text-font-size:\n * header-text-font-weight:\n * header-text-line-height:\n * header-height:\n * header-padding:\n * header-shadow:\n */\n@Component({\n    selector: 'nb-layout-header',\n    template: `\n    <nav [class.fixed]=\"fixedValue\">\n      <ng-content></ng-content>\n    </nav>\n  `,\n    standalone: false\n})\nexport class NbLayoutHeaderComponent {\n  @HostBinding('class.fixed') fixedValue: boolean;\n  @HostBinding('class.subheader') subheaderValue: boolean;\n\n  constructor(private layout: NbLayoutComponent) {}\n\n  /**\n   * Makes the header sticky to the top of the nb-layout.\n   * @param {boolean} val\n   */\n  @Input()\n  set fixed(val: boolean) {\n    this.fixedValue = convertToBoolProperty(val);\n  }\n  static ngAcceptInputType_fixed: NbBooleanInput;\n\n  /**\n   * Places header on a side of the sidebar, and not above.\n   * Disables fixed mode for this header and remove a shadow from the sidebar.\n   * @param {boolean} val\n   */\n  @Input()\n  set subheader(val: boolean) {\n    this.subheaderValue = convertToBoolProperty(val);\n    this.fixedValue = false;\n    this.layout.withSubheader = this.subheaderValue;\n  }\n  static ngAcceptInputType_subheader: NbBooleanInput;\n}\n\n/**\n * Page footer.\n * Located under the nb-layout content (specifically, under the columns).\n * Could be made `fixed`, becoming sticky to the bottom of the view port (window).\n *\n * @styles\n *\n * footer-background-color:\n * footer-text-color:\n * footer-text-font-family:\n * footer-text-font-size:\n * footer-text-font-weight:\n * footer-text-line-height:\n * footer-text-highlight-color:\n * footer-height:\n * footer-padding:\n * footer-divider-color:\n * footer-divider-style:\n * footer-divider-width:\n * footer-shadow:\n */\n@Component({\n    selector: 'nb-layout-footer',\n    template: `\n    <nav [class.fixed]=\"fixedValue\">\n      <ng-content></ng-content>\n    </nav>\n  `,\n    standalone: false\n})\nexport class NbLayoutFooterComponent {\n  @HostBinding('class.fixed') fixedValue: boolean;\n\n  /**\n   * Makes the footer sticky to the bottom of the window.\n   * @param {boolean} val\n   */\n  @Input()\n  set fixed(val: boolean) {\n    this.fixedValue = convertToBoolProperty(val);\n  }\n  static ngAcceptInputType_fixed: NbBooleanInput;\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { ChangeDetectorRef, Directive, OnDestroy, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { distinctUntilChanged, map, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { NbLayoutDirection, NbLayoutDirectionService } from '../../services/direction.service';\n\n@Directive()\nabstract class NbBaseLayoutDirectionDirective implements OnInit, OnDestroy {\n  protected destroy$ = new Subject<void>();\n\n  constructor(\n    protected templateRef: TemplateRef<any>,\n    protected viewContainer: ViewContainerRef,\n    protected cd: ChangeDetectorRef,\n    protected directionService: NbLayoutDirectionService,\n    protected directionToShow: NbLayoutDirection,\n  ) {}\n\n  ngOnInit(): void {\n    this.directionService\n      .onDirectionChange()\n      .pipe(\n        map((layoutDirection: NbLayoutDirection) => layoutDirection === this.directionToShow),\n        distinctUntilChanged(),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((shouldShow: boolean) => this.updateView<boolean>(shouldShow));\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  protected updateView<T>(shouldShow: T): void {\n    if (shouldShow && !this.viewContainer.length) {\n      this.viewContainer.createEmbeddedView(this.templateRef);\n      this.cd.markForCheck();\n    } else if (!shouldShow && this.viewContainer.length) {\n      this.viewContainer.clear();\n    }\n  }\n}\n\n/**\n * Apply `nbLtr` directive to the element you need to show only when layout direction is `LTR`.\n *\n * ```html\n * <div *nbLtr>This text is visible only when layout direction is LTR</div>\n * ```\n */\n@Directive({\n    selector: '[nbLtr]',\n    standalone: false\n})\nexport class NbLtrDirective extends NbBaseLayoutDirectionDirective {\n  constructor(\n    protected templateRef: TemplateRef<any>,\n    protected viewContainer: ViewContainerRef,\n    protected cd: ChangeDetectorRef,\n    protected directionService: NbLayoutDirectionService,\n  ) {\n    super(templateRef, viewContainer, cd, directionService, NbLayoutDirection.LTR);\n  }\n}\n\n/**\n * Apply `nbRtl` directive to the element you need to show only when layout direction is `RTL`.\n *\n * ```html\n * <div *nbRtl>This text is visible only when layout direction is RTL</div>\n * ```\n */\n@Directive({\n    selector: '[nbRtl]',\n    standalone: false\n})\nexport class NbRtlDirective extends NbBaseLayoutDirectionDirective {\n  constructor(\n    protected templateRef: TemplateRef<any>,\n    protected viewContainer: ViewContainerRef,\n    protected cd: ChangeDetectorRef,\n    protected directionService: NbLayoutDirectionService,\n  ) {\n    super(templateRef, viewContainer, cd, directionService, NbLayoutDirection.RTL);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\nimport { NgModule } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\n\nimport {\n  NbLayoutComponent,\n  NbLayoutColumnComponent,\n  NbLayoutFooterComponent,\n  NbLayoutHeaderComponent,\n} from './layout.component';\n\nimport { NbRestoreScrollTopHelper } from './restore-scroll-top.service';\n\nimport { NbLtrDirective, NbRtlDirective } from './layout-direction.directive';\n\nconst NB_LAYOUT_COMPONENTS = [\n  NbLayoutComponent,\n  NbLayoutColumnComponent,\n  NbLayoutFooterComponent,\n  NbLayoutHeaderComponent,\n];\n\nconst NB_LAYOUT_DIRECTIVES = [NbLtrDirective, NbRtlDirective];\n\n@NgModule({\n  imports: [NbSharedModule],\n  declarations: [...NB_LAYOUT_COMPONENTS, ...NB_LAYOUT_DIRECTIVES],\n  providers: [NbRestoreScrollTopHelper],\n  exports: [...NB_LAYOUT_COMPONENTS, ...NB_LAYOUT_DIRECTIVES],\n})\nexport class NbLayoutModule {}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { Params, QueryParamsHandling } from '@angular/router';\nimport { Observable, BehaviorSubject, ReplaySubject, Subject } from 'rxjs';\nimport { share } from 'rxjs/operators';\nimport { isFragmentContain, isFragmentEqual, isUrlPathContain, isUrlPathEqual } from './url-matching-helpers';\nimport { NbIconConfig } from '../icon/icon.component';\nimport { NbBadge } from '../badge/badge.component';\n\nexport interface NbMenuBag {\n  tag: string;\n  item: NbMenuItem;\n}\n\nconst itemClick$ = new Subject<NbMenuBag>();\nconst addItems$ = new ReplaySubject<{ tag: string; items: NbMenuItem[] }>(1);\nconst navigateHome$ = new ReplaySubject<{ tag: string }>(1);\nconst getSelectedItem$ = new ReplaySubject<{ tag: string; listener: BehaviorSubject<NbMenuBag> }>(1);\nconst itemSelect$ = new ReplaySubject<NbMenuBag>(1);\nconst itemHover$ = new ReplaySubject<NbMenuBag>(1);\nconst submenuToggle$ = new ReplaySubject<NbMenuBag>(1);\nconst collapseAll$ = new ReplaySubject<{ tag: string }>(1);\n\nexport type NbMenuBadgeConfig = Omit<NbBadge, 'position'>;\n\n// TODO: check if we need both URL and LINK\n/**\n *\n *\n * Menu Item options example\n * @stacked-example(Menu Link Parameters, menu/menu-link-params.component)\n *\n *\n */\nexport class NbMenuItem {\n  /**\n   * Item Title\n   * @type {string}\n   */\n  title: string;\n  /**\n   * Item relative link (for routerLink)\n   * @type {string}\n   */\n  link?: string;\n  /**\n   * Item URL (absolute)\n   * @type {string}\n   */\n  url?: string;\n  /**\n   * Icon class name or icon config object\n   * @type {string | NbIconConfig}\n   */\n  icon?: string | NbIconConfig;\n  /**\n   * Expanded by default\n   * @type {boolean}\n   */\n  expanded?: boolean;\n  /**\n   * Badge component\n   * @type {boolean}\n   */\n  badge?: NbMenuBadgeConfig;\n  /**\n   * Children items\n   * @type {List<NbMenuItem>}\n   */\n  children?: NbMenuItem[];\n  /**\n   * HTML Link target\n   * @type {string}\n   */\n  target?: string;\n  /**\n   * Hidden Item\n   * @type {boolean}\n   */\n  hidden?: boolean;\n  /**\n   * Item is selected when partly or fully equal to the current url\n   * @type {string}\n   */\n  pathMatch?: 'full' | 'prefix' = 'full';\n  /**\n   * Where this is a home item\n   * @type {boolean}\n   */\n  home?: boolean;\n  /**\n   * Whether the item is just a group (non-clickable)\n   * @type {boolean}\n   */\n  group?: boolean;\n  /** Whether the item skipLocationChange is true or false\n   *@type {boolean}\n   */\n  skipLocationChange?: boolean;\n  /** Map of query parameters\n   *@type {Params}\n   */\n  queryParams?: Params;\n  queryParamsHandling?: QueryParamsHandling;\n  parent?: NbMenuItem;\n  selected?: boolean;\n  data?: any;\n  fragment?: string;\n  preserveFragment?: boolean;\n  /** The name of a role in the ARIA specification\n   * @type {string}\n   */\n  ariaRole?: string;\n\n  /**\n   * @returns item parents in top-down order\n   */\n  static getParents(item: NbMenuItem): NbMenuItem[] {\n    const parents = [];\n\n    let parent = item.parent;\n    while (parent) {\n      parents.unshift(parent);\n      parent = parent.parent;\n    }\n\n    return parents;\n  }\n\n  static isParent(item: NbMenuItem, possibleChild: NbMenuItem): boolean {\n    return possibleChild.parent ? possibleChild.parent === item || this.isParent(item, possibleChild.parent) : false;\n  }\n}\n\n// TODO: map select events to router change events\n// TODO: review the interface\n/**\n *\n *\n * Menu Service. Allows you to listen to menu events, or to interact with a menu.\n * @stacked-example(Menu Service, menu/menu-service.component)\n *\n *\n */\n@Injectable()\nexport class NbMenuService {\n  /**\n   * Add items to the end of the menu items list\n   * @param {List<NbMenuItem>} items\n   * @param {string} tag\n   */\n  addItems(items: NbMenuItem[], tag?: string) {\n    addItems$.next({ tag, items });\n  }\n\n  /**\n   * Collapses all menu items\n   * @param {string} tag\n   */\n  collapseAll(tag?: string) {\n    collapseAll$.next({ tag });\n  }\n\n  /**\n   * Navigate to the home menu item\n   * @param {string} tag\n   */\n  navigateHome(tag?: string) {\n    navigateHome$.next({ tag });\n  }\n\n  /**\n   * Returns currently selected item. Won't subscribe to the future events.\n   * @param {string} tag\n   * @returns {Observable<{tag: string; item: NbMenuItem}>}\n   */\n  getSelectedItem(tag?: string): Observable<NbMenuBag> {\n    const listener = new BehaviorSubject<NbMenuBag>(null);\n\n    getSelectedItem$.next({ tag, listener });\n\n    return listener.asObservable();\n  }\n\n  onItemClick(): Observable<NbMenuBag> {\n    return itemClick$.pipe(share());\n  }\n\n  onItemSelect(): Observable<NbMenuBag> {\n    return itemSelect$.pipe(share());\n  }\n\n  onItemHover(): Observable<NbMenuBag> {\n    return itemHover$.pipe(share());\n  }\n\n  onSubmenuToggle(): Observable<NbMenuBag> {\n    return submenuToggle$.pipe(share());\n  }\n}\n\n@Injectable()\nexport class NbMenuInternalService {\n  constructor(private location: Location) {}\n\n  prepareItems(items: NbMenuItem[]) {\n    const defaultItem = new NbMenuItem();\n    items.forEach((i) => {\n      this.applyDefaults(i, defaultItem);\n      this.setParent(i);\n    });\n  }\n\n  selectFromUrl(items: NbMenuItem[], tag: string, collapseOther: boolean = false) {\n    const selectedItem = this.findItemByUrl(items);\n    if (selectedItem) {\n      this.selectItem(selectedItem, items, collapseOther, tag);\n    }\n  }\n\n  selectItem(item: NbMenuItem, items: NbMenuItem[], collapseOther: boolean = false, tag: string) {\n    const unselectedItems = this.resetSelection(items);\n    const collapsedItems = collapseOther ? this.collapseItems(items) : [];\n\n    for (const parent of NbMenuItem.getParents(item)) {\n      parent.selected = true;\n      // emit event only for items that weren't selected before ('unselectedItems' contains items that were selected)\n      if (!unselectedItems.includes(parent)) {\n        this.itemSelect(parent, tag);\n      }\n\n      const wasNotExpanded = !parent.expanded;\n      parent.expanded = true;\n      const i = collapsedItems.indexOf(parent);\n      // emit event only for items that weren't expanded before.\n      // 'collapsedItems' contains items that were expanded, so no need to emit event.\n      // in case 'collapseOther' is false, 'collapsedItems' will be empty,\n      // so also check if item isn't expanded already ('wasNotExpanded').\n      if (i === -1 && wasNotExpanded) {\n        this.submenuToggle(parent, tag);\n      } else {\n        collapsedItems.splice(i, 1);\n      }\n    }\n\n    item.selected = true;\n    // emit event only for items that weren't selected before ('unselectedItems' contains items that were selected)\n    if (!unselectedItems.includes(item)) {\n      this.itemSelect(item, tag);\n    }\n\n    // remaining items which wasn't expanded back after expanding all currently selected items\n    for (const collapsedItem of collapsedItems) {\n      this.submenuToggle(collapsedItem, tag);\n    }\n  }\n\n  collapseAll(items: NbMenuItem[], tag: string, except?: NbMenuItem) {\n    const collapsedItems = this.collapseItems(items, except);\n\n    for (const item of collapsedItems) {\n      this.submenuToggle(item, tag);\n    }\n  }\n\n  onAddItem(): Observable<{ tag: string; items: NbMenuItem[] }> {\n    return addItems$.pipe(share());\n  }\n\n  onNavigateHome(): Observable<{ tag: string }> {\n    return navigateHome$.pipe(share());\n  }\n\n  onCollapseAll(): Observable<{ tag: string }> {\n    return collapseAll$.pipe(share());\n  }\n\n  onGetSelectedItem(): Observable<{ tag: string; listener: BehaviorSubject<NbMenuBag> }> {\n    return getSelectedItem$.pipe(share());\n  }\n\n  itemHover(item: NbMenuItem, tag?: string) {\n    itemHover$.next({ tag, item });\n  }\n\n  submenuToggle(item: NbMenuItem, tag?: string) {\n    submenuToggle$.next({ tag, item });\n  }\n\n  itemSelect(item: NbMenuItem, tag?: string) {\n    itemSelect$.next({ tag, item });\n  }\n\n  itemClick(item: NbMenuItem, tag?: string) {\n    itemClick$.next({ tag, item });\n  }\n\n  /**\n   * Unselect all given items deeply.\n   * @param items array of items to unselect.\n   * @returns items which selected value was changed.\n   */\n  private resetSelection(items: NbMenuItem[]): NbMenuItem[] {\n    const unselectedItems = [];\n\n    for (const item of items) {\n      if (item.selected) {\n        unselectedItems.push(item);\n      }\n      item.selected = false;\n\n      if (item.children) {\n        unselectedItems.push(...this.resetSelection(item.children));\n      }\n    }\n\n    return unselectedItems;\n  }\n\n  /**\n   * Collapse all given items deeply.\n   * @param items array of items to collapse.\n   * @param except menu item which shouldn't be collapsed, also disables collapsing for parents of this item.\n   * @returns items which expanded value was changed.\n   */\n  private collapseItems(items: NbMenuItem[], except?: NbMenuItem): NbMenuItem[] {\n    const collapsedItems = [];\n\n    for (const item of items) {\n      if (except && (item === except || NbMenuItem.isParent(item, except))) {\n        continue;\n      }\n\n      if (item.expanded) {\n        collapsedItems.push(item);\n      }\n      item.expanded = false;\n\n      if (item.children) {\n        collapsedItems.push(...this.collapseItems(item.children));\n      }\n    }\n\n    return collapsedItems;\n  }\n\n  private applyDefaults(item, defaultItem) {\n    const menuItem = { ...item };\n    Object.assign(item, defaultItem, menuItem);\n    item.children &&\n      item.children.forEach((child) => {\n        this.applyDefaults(child, defaultItem);\n      });\n  }\n\n  private setParent(item: NbMenuItem) {\n    item.children &&\n      item.children.forEach((child) => {\n        child.parent = item;\n        this.setParent(child);\n      });\n  }\n\n  /**\n   * Find deepest item which link matches current URL path.\n   * @param items array of items to search in.\n   * @returns found item of undefined.\n   */\n  private findItemByUrl(items: NbMenuItem[]): NbMenuItem | undefined {\n    let selectedItem;\n\n    items.some((item) => {\n      if (item.children) {\n        selectedItem = this.findItemByUrl(item.children);\n      }\n      if (!selectedItem && this.isSelectedInUrl(item)) {\n        selectedItem = item;\n      }\n\n      return selectedItem;\n    });\n\n    return selectedItem;\n  }\n\n  private isSelectedInUrl(item: NbMenuItem): boolean {\n    const exact: boolean = item.pathMatch === 'full';\n    const link: string = item.link;\n\n    const isSelectedInPath = exact\n      ? isUrlPathEqual(this.location.path(), link)\n      : isUrlPathContain(this.location.path(), link);\n\n    if (isSelectedInPath && item.fragment != null) {\n      return exact\n        ? isFragmentEqual(this.location.path(true), item.fragment)\n        : isFragmentContain(this.location.path(true), item.fragment);\n    }\n\n    return isSelectedInPath;\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, HostBinding, Input } from '@angular/core';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { convertToBoolProperty } from '../helpers';\n\nexport type NbBadgePhysicalPosition = 'top left' | 'top right' | 'bottom left' | 'bottom right' | 'center right' | 'center left';\nexport type NbBadgeLogicalPosition = 'top start' | 'top end' | 'bottom start' | 'bottom end' | 'center start'| 'center end';\nexport type NbBadgePosition = NbBadgePhysicalPosition | NbBadgeLogicalPosition;\n\nexport interface NbBadge {\n  text?: string;\n  position?: NbBadgePosition;\n  status?: NbComponentOrCustomStatus;\n  dotMode?: boolean;\n}\n\n/**\n * Badge is a simple labeling component.\n * It can be used to add additional information to any content or highlight unread items.\n *\n * Element is absolute positioned, so parent should be\n * [positioned element](https://developer.mozilla.org/en-US/docs/Web/CSS/position).\n * It means parent `position` should be set to anything except `static`, e.g. `relative`,\n * `absolute`, `fixed`, or `sticky`.\n *\n * ### Installation\n *\n * Import `NbBadgeModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbBadgeModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Badge with default position and status(color):\n *\n * ```html\n * <nb-badge text=\"badgeText\"></nb-badge>\n * ```\n *\n * For example, badge can be placed into nb-card header:\n * @stacked-example(Showcase, badge/badge-showcase.component)\n *\n * Badge located on the bottom right with warning status:\n *\n * ```html\n * <nb-badge text=\"badgeText\" status=\"warning\" position=\"bottom right\">\n * </nb-badge>\n * ```\n *\n * @styles\n *\n * badge-border-radius:\n * badge-text-font-family:\n * badge-text-font-size:\n * badge-text-font-weight:\n * badge-text-line-height:\n * badge-padding:\n * badge-basic-background-color:\n * badge-basic-text-color:\n * badge-primary-background-color:\n * badge-primary-text-color:\n * badge-success-background-color:\n * badge-success-text-color:\n * badge-info-background-color:\n * badge-info-text-color:\n * badge-warning-background-color:\n * badge-warning-text-color:\n * badge-danger-background-color:\n * badge-danger-text-color:\n * badge-control-background-color:\n * badge-control-text-color:\n */\n@Component({\n    selector: 'nb-badge',\n    styleUrls: ['./badge.component.scss'],\n    template: `{{dotMode ? '' : text}}`,\n    standalone: false\n})\nexport class NbBadgeComponent implements NbBadge {\n\n  /**\n   * Text to display\n   * @type string\n   */\n  @Input() text: string = '';\n\n  /**\n   * Badge position\n   *\n   * Can be set to any class or to one of predefined positions:\n   * 'top left', 'top right', 'bottom left', 'bottom right',\n   * 'top start', 'top end', 'bottom start', 'bottom end'\n   * @type string\n   */\n  @Input()\n  get position(): NbBadgePosition {\n    return this._position;\n  }\n  set position(value: NbBadgePosition) {\n    this._position = value || this._defaultPosition;\n  }\n  protected _defaultPosition: NbBadgePosition = 'top right';\n  protected _position: NbBadgePosition = this._defaultPosition;\n\n  /**\n   * Shows badge as a dot. No text is shown.\n   * @type boolean\n   */\n  @Input()\n  @HostBinding('class.dot-mode')\n  get dotMode(): boolean {\n    return this._dotMode;\n  }\n  set dotMode(value: boolean) {\n    this._dotMode = convertToBoolProperty(value);\n  }\n  protected _dotMode: boolean;\n\n  /**\n   * Badge status (adds specific styles):\n   * 'basic', 'primary', 'info', 'success', 'warning', 'danger', 'control'\n   */\n  @Input() status: NbComponentOrCustomStatus = 'basic';\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.status)) {\n      return [this.statusService.getStatusClass(this.status)];\n    }\n    return [];\n  }\n\n  @HostBinding('class.status-primary')\n  get primary(): boolean {\n    return this.status === 'primary';\n  }\n\n  @HostBinding('class.status-success')\n  get success(): boolean {\n    return this.status === 'success';\n  }\n\n  @HostBinding('class.status-info')\n  get info(): boolean {\n    return this.status === 'info';\n  }\n\n  @HostBinding('class.status-warning')\n  get warning(): boolean {\n    return this.status === 'warning';\n  }\n\n  @HostBinding('class.status-danger')\n  get danger(): boolean {\n    return this.status === 'danger';\n  }\n\n  @HostBinding('class.status-basic')\n  get basic(): boolean {\n    return this.status === 'basic';\n  }\n\n  @HostBinding('class.status-control')\n  get control(): boolean {\n    return this.status === 'control';\n  }\n\n  @HostBinding('class.position-top')\n  get top(): boolean {\n    return this.position.includes('top');\n  }\n\n  @HostBinding('class.position-right')\n  get right(): boolean {\n    return this.position.includes('right');\n  }\n\n  @HostBinding('class.position-bottom')\n  get bottom(): boolean {\n    return this.position.includes('bottom');\n  }\n\n  @HostBinding('class.position-left')\n  get left(): boolean {\n    return this.position.includes('left');\n  }\n\n  @HostBinding('class.position-start')\n  get start(): boolean {\n    return this.position.includes('start');\n  }\n\n  @HostBinding('class.position-end')\n  get end(): boolean {\n    return this.position.includes('end');\n  }\n\n  @HostBinding('class.position-center')\n  get center(): boolean {\n    return this.position.includes('center');\n  }\n\n  constructor(protected statusService: NbStatusService) {\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  OnInit,\n  OnDestroy,\n  AfterViewInit,\n  Inject,\n  DoCheck,\n  PLATFORM_ID,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { Router, NavigationEnd, NavigationExtras } from '@angular/router';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { takeUntil, filter, map } from 'rxjs/operators';\nimport { NbMenuInternalService, NbMenuItem, NbMenuBag, NbMenuService, NbMenuBadgeConfig } from './menu.service';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NB_WINDOW } from '../../theme.options';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { NbLayoutDirectionService } from '../../services/direction.service';\n\nexport enum NbToggleStates {\n  Expanded = 'expanded',\n  Collapsed = 'collapsed',\n}\n\n@Component({\n    selector: '[nbMenuItem]',\n    templateUrl: './menu-item.component.html',\n    animations: [\n        trigger('toggle', [\n            state(NbToggleStates.Collapsed, style({ height: '0', margin: '0' })),\n            state(NbToggleStates.Expanded, style({ height: '*' })),\n            transition(`${NbToggleStates.Collapsed} <=> ${NbToggleStates.Expanded}`, animate(300)),\n        ]),\n    ],\n    standalone: false\n})\nexport class NbMenuItemComponent implements DoCheck, AfterViewInit, OnDestroy {\n  @Input() menuItem = <NbMenuItem>null;\n  @Input() badge: NbMenuBadgeConfig;\n\n  @Output() hoverItem = new EventEmitter<any>();\n  @Output() toggleSubMenu = new EventEmitter<any>();\n  @Output() selectItem = new EventEmitter<any>();\n  @Output() itemClick = new EventEmitter<any>();\n\n  protected destroy$ = new Subject<void>();\n  toggleState: NbToggleStates;\n\n  constructor(protected menuService: NbMenuService,\n              protected directionService: NbLayoutDirectionService) {}\n\n  ngDoCheck() {\n    this.toggleState = this.menuItem.expanded ? NbToggleStates.Expanded : NbToggleStates.Collapsed;\n  }\n\n  ngAfterViewInit() {\n    this.menuService.onSubmenuToggle()\n      .pipe(\n        filter(({ item }) => item === this.menuItem),\n        map(({ item }: NbMenuBag) => item.expanded),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(isExpanded => this.toggleState = isExpanded ? NbToggleStates.Expanded : NbToggleStates.Collapsed);\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  onToggleSubMenu(item: NbMenuItem) {\n    this.toggleSubMenu.emit(item);\n  }\n\n  onHoverItem(item: NbMenuItem) {\n    this.hoverItem.emit(item);\n  }\n\n  onSelectItem(item: NbMenuItem) {\n    this.selectItem.emit(item);\n  }\n\n  onItemClick(item: NbMenuItem) {\n    this.itemClick.emit(item);\n  }\n\n  getExpandStateIcon(): string {\n    if (this.menuItem.expanded) {\n      return 'chevron-down-outline';\n    }\n\n    return this.directionService.isLtr()\n      ? 'chevron-left-outline'\n      : 'chevron-right-outline';\n  }\n}\n\n/**\n * Vertical menu component.\n *\n * Accepts a list of menu items and renders them accordingly. Supports multi-level menus.\n *\n * Basic example\n * @stacked-example(Showcase, menu/menu-showcase.component)\n *\n * ```ts\n * // ...\n * items: NbMenuItem[] = [\n *  {\n *    title: home,\n *    link: '/'\n *  },\n *  {\n *    title: dashboard,\n *    link: 'dashboard'\n *  }\n * ];\n * // ...\n * <nb-menu [items]=\"items\"></nb-menu>\n * ```\n * ### Installation\n *\n * Import `NbMenuModule.forRoot()` to your app module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbMenuModule.forRoot(),\n *   ],\n * })\n * export class AppModule { }\n * ```\n * and `NbMenuModule` to your feature module where the component should be shown:\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbMenuModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Two-level menu example\n * @stacked-example(Two Levels, menu/menu-children.component)\n *\n *\n * Autocollapse menu example\n * @stacked-example(Autocollapse Menu, menu/menu-autocollapse.component)\n *\n * Menu badge\n * @stacked-example(Menu item badge, menu/menu-badge.component)\n *\n * @styles\n *\n * menu-background-color:\n * menu-text-color:\n * menu-text-font-family:\n * menu-text-font-size:\n * menu-text-font-weight:\n * menu-text-line-height:\n * menu-group-text-color:\n * menu-item-border-radius:\n * menu-item-padding:\n * menu-item-hover-background-color:\n * menu-item-hover-cursor:\n * menu-item-hover-text-color:\n * menu-item-icon-hover-color:\n * menu-item-active-background-color:\n * menu-item-active-text-color:\n * menu-item-icon-active-color:\n * menu-item-icon-color:\n * menu-item-icon-margin:\n * menu-item-icon-width:\n * menu-item-divider-color:\n * menu-item-divider-style:\n * menu-item-divider-width:\n * menu-submenu-background-color:\n * menu-submenu-text-color:\n * menu-submenu-margin:\n * menu-submenu-padding:\n * menu-submenu-item-border-color:\n * menu-submenu-item-border-style:\n * menu-submenu-item-border-width:\n * menu-submenu-item-border-radius:\n * menu-submenu-item-padding:\n * menu-submenu-item-hover-background-color:\n * menu-submenu-item-hover-border-color:\n * menu-submenu-item-hover-text-color:\n * menu-submenu-item-icon-hover-color:\n * menu-submenu-item-active-background-color:\n * menu-submenu-item-active-border-color:\n * menu-submenu-item-active-text-color:\n * menu-submenu-item-icon-active-color:\n * menu-submenu-item-active-hover-background-color:\n * menu-submenu-item-active-hover-border-color:\n * menu-submenu-item-active-hover-text-color:\n * menu-submenu-item-icon-active-hover-color:\n */\n@Component({\n    selector: 'nb-menu',\n    styleUrls: ['./menu.component.scss'],\n    template: `\n    <ul class=\"menu-items\">\n      <ng-container *ngFor=\"let item of items\">\n        <li nbMenuItem *ngIf=\"!item.hidden\"\n            [menuItem]=\"item\"\n            [badge]=\"item.badge\"\n            [class.menu-group]=\"item.group\"\n            (hoverItem)=\"onHoverItem($event)\"\n            (toggleSubMenu)=\"onToggleSubMenu($event)\"\n            (selectItem)=\"onSelectItem($event)\"\n            (itemClick)=\"onItemClick($event)\"\n            class=\"menu-item\">\n        </li>\n      </ng-container>\n    </ul>\n  `,\n    standalone: false\n})\nexport class NbMenuComponent implements OnInit, AfterViewInit, OnDestroy {\n\n  /**\n   * Tags a menu with some ID, can be later used in the menu service\n   * to determine which menu triggered the action, if multiple menus exist on the page.\n   *\n   * @type {string}\n   */\n  @Input() tag: string;\n\n  /**\n   * List of menu items.\n   * @type List<NbMenuItem> | List<any> | any\n   */\n  @Input() items: NbMenuItem[];\n\n  /**\n   * Collapse all opened submenus on the toggle event\n   * Default value is \"false\"\n   * @type boolean\n   */\n  @Input()\n  get autoCollapse(): boolean {\n    return this._autoCollapse;\n  }\n  set autoCollapse(value: boolean) {\n    this._autoCollapse = convertToBoolProperty(value);\n  }\n  protected _autoCollapse: boolean = false;\n  static ngAcceptInputType_autoCollapse: NbBooleanInput;\n\n  protected destroy$ = new Subject<void>();\n\n  constructor(@Inject(NB_WINDOW) protected window,\n              @Inject(PLATFORM_ID) protected platformId,\n              protected menuInternalService: NbMenuInternalService,\n              protected router: Router) {\n  }\n\n  ngOnInit() {\n    this.menuInternalService.prepareItems(this.items);\n\n    this.menuInternalService\n      .onAddItem()\n      .pipe(\n        filter((data: { tag: string; items: NbMenuItem[] }) => this.compareTag(data.tag)),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(data => this.onAddItem(data));\n\n    this.menuInternalService\n      .onNavigateHome()\n      .pipe(\n        filter((data: { tag: string }) => this.compareTag(data.tag)),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => this.navigateHome());\n\n    this.menuInternalService\n      .onGetSelectedItem()\n      .pipe(\n        filter((data: { tag: string; listener: BehaviorSubject<NbMenuBag> }) => this.compareTag(data.tag)),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((data: { tag: string; listener: BehaviorSubject<NbMenuBag> }) => {\n        data.listener.next({ tag: this.tag, item: this.getSelectedItem(this.items) });\n      });\n\n    this.menuInternalService\n      .onCollapseAll()\n      .pipe(\n        filter((data: { tag: string }) => this.compareTag(data.tag)),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => this.collapseAll());\n\n    this.router.events\n      .pipe(\n        filter(event => event instanceof NavigationEnd),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => {\n        this.menuInternalService.selectFromUrl(this.items, this.tag, this.autoCollapse);\n      });\n  }\n\n  ngAfterViewInit() {\n    setTimeout(() => this.menuInternalService.selectFromUrl(this.items, this.tag, this.autoCollapse));\n  }\n\n  onAddItem(data: { tag: string; items: NbMenuItem[] }) {\n    this.items.push(...data.items);\n\n    this.menuInternalService.prepareItems(this.items);\n    this.menuInternalService.selectFromUrl(this.items, this.tag, this.autoCollapse);\n  }\n\n  onHoverItem(item: NbMenuItem) {\n    this.menuInternalService.itemHover(item, this.tag);\n  }\n\n  onToggleSubMenu(item: NbMenuItem) {\n    if (this.autoCollapse) {\n      this.menuInternalService.collapseAll(this.items, this.tag, item);\n    }\n    item.expanded = !item.expanded;\n    this.menuInternalService.submenuToggle(item, this.tag);\n  }\n\n  // TODO: is not fired on page reload\n  onSelectItem(item: NbMenuItem) {\n    this.menuInternalService.selectItem(item, this.items, this.autoCollapse, this.tag);\n  }\n\n  onItemClick(item: NbMenuItem) {\n    this.menuInternalService.itemClick(item, this.tag);\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  protected navigateHome() {\n    const homeItem = this.getHomeItem(this.items);\n\n    if (homeItem) {\n      if (homeItem.link) {\n        const extras: NavigationExtras = {\n          queryParams: homeItem.queryParams,\n          queryParamsHandling: homeItem.queryParamsHandling,\n          fragment: homeItem.fragment,\n          preserveFragment: homeItem.preserveFragment,\n        };\n        this.router.navigate([homeItem.link], extras);\n      }\n\n      if (homeItem.url && isPlatformBrowser(this.platformId)) {\n        this.window.location.href = homeItem.url;\n      }\n    }\n  }\n\n  protected collapseAll() {\n    this.menuInternalService.collapseAll(this.items, this.tag);\n  }\n\n  protected getHomeItem(items: NbMenuItem[]): NbMenuItem {\n    for (const item of items) {\n      if (item.home) {\n        return item;\n      }\n\n      const homeItem = item.children && this.getHomeItem(item.children);\n      if (homeItem) {\n        return homeItem;\n      }\n    }\n\n    return undefined;\n  }\n\n  protected compareTag(tag: string) {\n    return !tag || tag === this.tag;\n  }\n\n  protected getSelectedItem(items: NbMenuItem[]): NbMenuItem {\n    let selected = null;\n    items.forEach((item: NbMenuItem) => {\n      if (item.selected) {\n        selected = item;\n      }\n      if (item.selected && item.children && item.children.length > 0) {\n        selected = this.getSelectedItem(item.children);\n      }\n    });\n    return selected;\n  }\n}\n","<span *ngIf=\"menuItem.group\">\n  <nb-icon class=\"menu-icon\" [config]=\"menuItem.icon\" *ngIf=\"menuItem.icon\"></nb-icon>\n  {{ menuItem.title }}\n</span>\n<a\n  *ngIf=\"menuItem.link && !menuItem.url && !menuItem.children && !menuItem.group\"\n  [routerLink]=\"menuItem.link\"\n  [queryParams]=\"menuItem.queryParams\"\n  [fragment]=\"menuItem.fragment\"\n  [queryParamsHandling]=\"menuItem.queryParamsHandling\"\n  [preserveFragment]=\"menuItem.preserveFragment\"\n  [skipLocationChange]=\"menuItem.skipLocationChange\"\n  [attr.target]=\"menuItem.target\"\n  [attr.title]=\"menuItem.title\"\n  [attr.role]=\"menuItem.ariaRole\"\n  [class.active]=\"menuItem.selected\"\n  (mouseenter)=\"onHoverItem(menuItem)\"\n  (click)=\"onItemClick(menuItem)\"\n>\n  <nb-icon class=\"menu-icon\" [config]=\"menuItem.icon\" *ngIf=\"menuItem.icon\"></nb-icon>\n  <span class=\"menu-title\">{{ menuItem.title }}</span>\n  <ng-container *ngIf=\"badge\" [ngTemplateOutlet]=\"badgeTemplate\"></ng-container>\n</a>\n<a\n  *ngIf=\"menuItem.url && !menuItem.children && !menuItem.link && !menuItem.group\"\n  [attr.href]=\"menuItem.url\"\n  [attr.target]=\"menuItem.target\"\n  [attr.title]=\"menuItem.title\"\n  [attr.role]=\"menuItem.ariaRole\"\n  [class.active]=\"menuItem.selected\"\n  (mouseenter)=\"onHoverItem(menuItem)\"\n  (click)=\"onSelectItem(menuItem)\"\n>\n  <nb-icon class=\"menu-icon\" [config]=\"menuItem.icon\" *ngIf=\"menuItem.icon\"></nb-icon>\n  <span class=\"menu-title\">{{ menuItem.title }}</span>\n  <ng-container *ngIf=\"badge\" [ngTemplateOutlet]=\"badgeTemplate\"></ng-container>\n</a>\n<a\n  *ngIf=\"!menuItem.children && !menuItem.link && !menuItem.url && !menuItem.group\"\n  [attr.target]=\"menuItem.target\"\n  [attr.title]=\"menuItem.title\"\n  [attr.role]=\"menuItem.ariaRole\"\n  [class.active]=\"menuItem.selected\"\n  (mouseenter)=\"onHoverItem(menuItem)\"\n  (click)=\"$event.preventDefault(); onItemClick(menuItem)\"\n>\n  <nb-icon class=\"menu-icon\" [config]=\"menuItem.icon\" *ngIf=\"menuItem.icon\"></nb-icon>\n  <span class=\"menu-title\">{{ menuItem.title }}</span>\n  <ng-container *ngIf=\"badge\" [ngTemplateOutlet]=\"badgeTemplate\"></ng-container>\n</a>\n<a\n  *ngIf=\"menuItem.children\"\n  (click)=\"$event.preventDefault(); onToggleSubMenu(menuItem)\"\n  [attr.target]=\"menuItem.target\"\n  [attr.title]=\"menuItem.title\"\n  [attr.aria-expanded]=\"menuItem.expanded ?? false\"\n  [attr.role]=\"menuItem.ariaRole\"\n  [class.active]=\"menuItem.selected\"\n  (mouseenter)=\"onHoverItem(menuItem)\"\n  href=\"#\"\n>\n  <nb-icon class=\"menu-icon\" [config]=\"menuItem.icon\" *ngIf=\"menuItem.icon\"></nb-icon>\n  <span class=\"menu-title\">{{ menuItem.title }}</span>\n  <ng-container *ngIf=\"badge\" [ngTemplateOutlet]=\"badgeTemplate\"></ng-container>\n  <nb-icon class=\"expand-state\" [icon]=\"getExpandStateIcon()\" pack=\"nebular-essentials\"></nb-icon>\n</a>\n<ul\n  *ngIf=\"menuItem.children\"\n  [class.collapsed]=\"!(menuItem.children && menuItem.expanded)\"\n  [class.expanded]=\"menuItem.expanded\"\n  [@toggle]=\"toggleState\"\n  class=\"menu-items\"\n>\n  <ng-container *ngFor=\"let item of menuItem.children\">\n    <li\n      nbMenuItem\n      *ngIf=\"!item.hidden\"\n      [menuItem]=\"item\"\n      [badge]=\"item.badge\"\n      [class.menu-group]=\"item.group\"\n      (hoverItem)=\"onHoverItem($event)\"\n      (toggleSubMenu)=\"onToggleSubMenu($event)\"\n      (selectItem)=\"onSelectItem($event)\"\n      (itemClick)=\"onItemClick($event)\"\n      class=\"menu-item\"\n    ></li>\n  </ng-container>\n</ul>\n\n<ng-template #badgeTemplate>\n  <nb-badge [text]=\"badge.text\" [dotMode]=\"badge.dotMode\" [status]=\"badge.status\"> </nb-badge>\n</ng-template>\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\nimport { NbBadgeComponent } from './badge.component';\n\n@NgModule({\n  exports: [ NbBadgeComponent ],\n  declarations: [ NbBadgeComponent ],\n})\nexport class NbBadgeModule { }\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\nimport { NbMenuComponent, NbMenuItemComponent } from './menu.component';\nimport { NbMenuService, NbMenuInternalService } from './menu.service';\nimport { NbIconModule } from '../icon/icon.module';\nimport { NbBadgeModule } from '../badge/badge.module';\n\nconst nbMenuComponents = [NbMenuComponent, NbMenuItemComponent];\n\nconst NB_MENU_PROVIDERS = [NbMenuService, NbMenuInternalService];\n\n@NgModule({\n  imports: [\n    NbSharedModule,\n    NbIconModule,\n    NbBadgeModule,\n  ],\n  declarations: [...nbMenuComponents],\n  exports: [...nbMenuComponents],\n})\nexport class NbMenuModule {\n  static forRoot(): ModuleWithProviders<NbMenuModule> {\n    return {\n      ngModule: NbMenuModule,\n      providers: [\n        ...NB_MENU_PROVIDERS,\n      ],\n    };\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n    name: 'nbMergeConfigs',\n    standalone: false\n})\nexport class NbMergeConfigsPipe implements PipeTransform {\n  transform<Config>(...configs: Config[]): Config {\n    return Object.assign({}, ...configs);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, Input, Output, EventEmitter, HostBinding } from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\n\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbIconConfig } from '../icon/icon.component';\n\nexport interface NbRouteTab {\n  route?: RouterLink['routerLink'] | undefined;\n  title?: string | undefined;\n  icon?: string | NbIconConfig | undefined;\n  disabled?: boolean | undefined;\n  responsive?: boolean | undefined;\n  queryParams?: RouterLink['queryParams'] | undefined;\n  queryParamsHandling?: RouterLink['queryParamsHandling'] | undefined;\n  fragment?: RouterLink['fragment'] | undefined;\n  preserveFragment?: RouterLink['preserveFragment'] | undefined;\n  skipLocationChange?: RouterLink['skipLocationChange'] | undefined;\n  replaceUrl?: RouterLink['replaceUrl'] | undefined;\n  state?: RouterLink['state'] | undefined;\n  activeLinkOptions?: RouterLinkActive['routerLinkActiveOptions'] | undefined;\n}\n\n/**\n * Route tabset components.\n * Renders tabs inside of a router-outlet.\n *\n * ```ts\n *  tabs = [\n *  {\n *    title: 'Route tab #1',\n *    route: '/pages/description',\n *    icon: 'home',\n *    responsive: true, // hide title before `$tabset-tab-text-hide-breakpoint` value\n *  },\n *  {\n *    title: 'Route tab #2',\n *    route: '/pages/images',\n *    }\n *  ];\n *\n *  <nb-route-tabset [tabs]=\"tabs\"></nb-route-tabset>\n * ```\n * ### Installation\n *\n * Import `NbRouteTabsetModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbRouteTabsetModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n *\n * @stacked-example(Route Tabset, tabset/route-tabset-showcase.component)\n *\n * @styles\n *\n * route-tabset-background-color:\n * route-tabset-border-radius:\n * route-tabset-shadow:\n * route-tabset-tab-background-color:\n * route-tabset-tab-padding:\n * route-tabset-tab-text-color:\n * route-tabset-tab-text-font-family:\n * route-tabset-tab-text-font-size:\n * route-tabset-tab-text-font-weight:\n * route-tabset-tab-text-line-height:\n * route-tabset-tab-text-transform:\n * route-tabset-tab-underline-width:\n * route-tabset-tab-underline-color:\n * route-tabset-tab-active-background-color:\n * route-tabset-tab-active-text-color:\n * route-tabset-tab-active-underline-color:\n * route-tabset-tab-focus-background-color:\n * route-tabset-tab-focus-text-color:\n * route-tabset-tab-focus-underline-color:\n * route-tabset-tab-hover-background-color:\n * route-tabset-tab-hover-text-color:\n * route-tabset-tab-hover-underline-color:\n * route-tabset-tab-disabled-background-color:\n * route-tabset-tab-disabled-text-color:\n * route-tabset-tab-disabled-underline-color:\n * route-tabset-divider-color:\n * route-tabset-divider-style:\n * route-tabset-divider-width:\n * route-tabset-scrollbar-color:\n * route-tabset-scrollbar-background-color:\n * route-tabset-scrollbar-width:\n */\n@Component({\n    selector: 'nb-route-tabset',\n    styleUrls: ['./route-tabset.component.scss'],\n    template: `\n    <ul class=\"route-tabset\">\n      <ng-container *ngFor=\"let tab of tabs\">\n        <li\n          *ngIf=\"tab.disabled; else enabled\"\n          [class.responsive]=\"tab.responsive\"\n          class=\"route-tab disabled\"\n          tabindex=\"-1\"\n        >\n          <a tabindex=\"-1\" class=\"tab-link\">\n            <nb-icon *ngIf=\"tab.icon\" [config]=\"tab.icon\"></nb-icon>\n            <span *ngIf=\"tab.title\" class=\"tab-text\">{{ tab.title }}</span>\n          </a>\n        </li>\n\n        <ng-template #enabled>\n          <li\n            routerLinkActive=\"active\"\n            [routerLinkActiveOptions]=\"activeLinkOptions | nbMergeConfigs: tab.activeLinkOptions\"\n            class=\"route-tab\"\n          >\n            <a\n              (click)=\"selectTab(tab)\"\n              [routerLink]=\"tab.route\"\n              [class.responsive]=\"tab.responsive\"\n              [queryParams]=\"tab.queryParams\"\n              [queryParamsHandling]=\"tab.queryParamsHandling\"\n              [fragment]=\"tab.fragment\"\n              [preserveFragment]=\"tab.preserveFragment\"\n              [skipLocationChange]=\"tab.skipLocationChange\"\n              [replaceUrl]=\"tab.replaceUrl\"\n              [state]=\"tab.state\"\n              class=\"tab-link\"\n            >\n              <nb-icon *ngIf=\"tab.icon\" [config]=\"tab.icon\"></nb-icon>\n              <span *ngIf=\"tab.title\" class=\"tab-text\">{{ tab.title }}</span>\n            </a>\n          </li>\n        </ng-template>\n      </ng-container>\n    </ul>\n    <router-outlet></router-outlet>\n  `,\n    standalone: false\n})\nexport class NbRouteTabsetComponent {\n  @HostBinding('class.full-width') fullWidthValue: boolean = false;\n\n  /**\n   * Tabs configuration\n   */\n  @Input() tabs: NbRouteTab[];\n\n  /**\n   * Options passed to `routerLinkActiveOptions` directive which set on tab links.\n   * `{ exact: true }` by default.\n   */\n  @Input() activeLinkOptions: RouterLinkActive['routerLinkActiveOptions'] = { exact: true };\n\n  /**\n   * Take full width of a parent\n   * @param {boolean} val\n   */\n  @Input()\n  set fullWidth(val: boolean) {\n    this.fullWidthValue = convertToBoolProperty(val);\n  }\n  static ngAcceptInputType_fullWidth: NbBooleanInput;\n\n  /**\n   * Emits when tab is selected\n   * @type {EventEmitter<NbRouteTab>}\n   */\n  @Output() changeTab = new EventEmitter<NbRouteTab>();\n\n  selectTab(tab: NbRouteTab) {\n    this.changeTab.emit(tab);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\n\nimport { NbRouteTabsetComponent } from './route-tabset.component';\nimport { NbMergeConfigsPipe } from './merge-configs.pipe';\nimport { NbIconModule } from '../icon/icon.module';\n\n@NgModule({\n  imports: [NbSharedModule, NbIconModule],\n  declarations: [NbRouteTabsetComponent, NbMergeConfigsPipe],\n  exports: [NbRouteTabsetComponent],\n})\nexport class NbRouteTabsetModule {}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Subject, Observable, Observer, ReplaySubject } from 'rxjs';\nimport { share, refCount, publish } from 'rxjs/operators';\nimport { NbSidebarResponsiveState, NbSidebarState } from './sidebar.component';\n\nexport const getSidebarState$ = new Subject<{ tag: string, observer: Observer<NbSidebarState> }>();\nexport const getSidebarResponsiveState$ = new Subject<{ tag: string, observer: Observer<NbSidebarResponsiveState> }>();\n\n/**\n * Sidebar service.\n *\n * Root module service to control the sidebar from any part of the app.\n *\n * Allows you to change sidebar state dynamically from any part of the app:\n * @stacked-example(Sidebar State, sidebar/sidebar-toggle.component)\n */\n@Injectable()\nexport class NbSidebarService {\n\n  private toggle$ = new Subject<{ compact: boolean, tag: string }>();\n  private expand$ = new Subject<{ tag: string }>();\n  private collapse$ = new Subject<{ tag: string }>();\n  private compact$ = new Subject<{ tag: string }>();\n\n  /**\n   * Subscribe to toggle events\n   *\n   * @returns Observable<{ compact: boolean, tag: string }>\n   */\n  onToggle(): Observable<{ compact: boolean, tag: string }> {\n    return this.toggle$.pipe(share());\n  }\n\n  /**\n   * Subscribe to expand events\n   * @returns Observable<{ tag: string }>\n   */\n  onExpand(): Observable<{ tag: string }> {\n    return this.expand$.pipe(share());\n  }\n\n  /**\n   * Subscribe to collapse evens\n   * @returns Observable<{ tag: string }>\n   */\n  onCollapse(): Observable<{ tag: string }> {\n    return this.collapse$.pipe(share());\n  }\n\n  /**\n   * Subscribe to compact evens\n   * @returns Observable<{ tag: string }>\n   */\n  onCompact(): Observable<{ tag: string }> {\n    return this.compact$.pipe(share());\n  }\n\n  /**\n   * Toggle a sidebar\n   * @param {boolean} compact\n   * @param {string} tag If you have multiple sidebars on the page, mark them with `tag` input property and pass it here\n   * to specify which sidebar you want to control\n   */\n  toggle(compact = false, tag?: string) {\n    this.toggle$.next({ compact, tag });\n  }\n\n  /**\n   * Expands a sidebar\n   * @param {string} tag If you have multiple sidebars on the page, mark them with `tag` input property and pass it here\n   * to specify which sidebar you want to control\n   */\n  expand(tag?: string) {\n    this.expand$.next({ tag });\n  }\n\n  /**\n   * Collapses a sidebar\n   * @param {string} tag If you have multiple sidebars on the page, mark them with `tag` input property and pass it here\n   * to specify which sidebar you want to control\n   */\n  collapse(tag?: string) {\n    this.collapse$.next({ tag });\n  }\n\n  /**\n   * Makes sidebar compact\n   * @param {string} tag If you have multiple sidebars on the page, mark them with `tag` input property and pass it here\n   * to specify which sidebar you want to control\n   */\n  compact(tag?: string) {\n    this.compact$.next({ tag });\n  }\n\n  /**\n   * Returns sidebar state observable which emits once\n   * @param {string} tag If you have multiple sidebars on the page, mark them with `tag` input property and pass it here\n   * to specify which sidebar state you need\n   */\n  getSidebarState(tag?: string): Observable<NbSidebarState> {\n    const observer = new ReplaySubject<NbSidebarState>(1);\n    getSidebarState$.next({ observer, tag });\n    return observer.pipe(publish(), refCount());\n  }\n\n  /**\n   * Returns sidebar state observable which emits once\n   * @param {string} tag If you have multiple sidebars on the page, mark them with `tag` input property and pass it here\n   * to specify which sidebar responsive state you need\n   */\n  getSidebarResponsiveState(tag?: string): Observable<NbSidebarResponsiveState> {\n    const observer = new ReplaySubject<NbSidebarResponsiveState>();\n    getSidebarResponsiveState$.next({ observer, tag });\n    return observer.pipe(publish(), refCount());\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n} from '@angular/core';\nimport { combineLatest, Observable, Subject } from 'rxjs';\nimport { takeUntil, filter, map, startWith } from 'rxjs/operators';\n\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbThemeService } from '../../services/theme.service';\nimport { NbMediaBreakpoint } from '../../services/breakpoints.service';\nimport { NbSidebarService, getSidebarState$, getSidebarResponsiveState$ } from './sidebar.service';\n\nexport type NbSidebarState = 'expanded' | 'collapsed' | 'compacted';\nexport type NbSidebarResponsiveState = 'mobile' | 'tablet' | 'pc';\n\n/**\n * Sidebar header container.\n *\n * Placeholder which contains a sidebar header content,\n * placed at the very top of the sidebar outside of the scroll area.\n */\n@Component({\n    selector: 'nb-sidebar-header',\n    template: ` <ng-content></ng-content> `,\n    standalone: false\n})\nexport class NbSidebarHeaderComponent {}\n\n/**\n * Sidebar footer container.\n *\n * Placeholder which contains a sidebar footer content,\n * placed at the very bottom of the sidebar outside of the scroll area.\n */\n@Component({\n    selector: 'nb-sidebar-footer',\n    template: ` <ng-content></ng-content> `,\n    standalone: false\n})\nexport class NbSidebarFooterComponent {}\n\n/**\n * Layout sidebar component.\n *\n * @stacked-example(Showcase, sidebar/sidebar-showcase.component)\n *\n * ### Installation\n *\n * Import `NbSidebarModule.forRoot()` to your app module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbSidebarModule.forRoot(),\n *   ],\n * })\n * export class AppModule { }\n * ```\n * and `NbSidebarModule` to your feature module where the component should be shown:\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbSidebarModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Sidebar can be placed on the left or the right side of the layout,\n * or on start/end position of layout (depends on document direction, left to right or right to left)\n * It can be fixed (shown above the content) or can push the layout when opened.\n *\n * There are three states - `expanded`, `collapsed`, `compacted`.\n * By default sidebar content is fixed and saves its position while the page is being scrolled.\n *\n * Compacted sidebar example:\n * @stacked-example(Compacted Sidebar, sidebar/sidebar-compacted.component)\n *\n * Sidebar also supports a `responsive` behavior, listening to window size change and changing its size respectably.\n *\n * In a pair with header it is possible to setup a configuration when header is placed on a side of the sidebar\n * and not on top of it. To achieve this simply put a `subheader` property to the header like this:\n * ```html\n * <nb-layout-header subheader></nb-layout-header>\n * ```\n * @stacked-example(Subheader, layout/layout-sidebar-subheader.component)\n * Note that in such configuration sidebar shadow is removed and header cannot be make `fixed`.\n *\n * @additional-example(Right Sidebar, sidebar/sidebar-right.component)\n * @additional-example(Fixed Sidebar, sidebar/sidebar-fixed.component)\n *\n * @styles\n *\n * sidebar-background-color:\n * sidebar-text-color:\n * sidebar-text-font-family:\n * sidebar-text-font-size:\n * sidebar-text-font-weight:\n * sidebar-text-line-height:\n * sidebar-height:\n * sidebar-width:\n * sidebar-width-compact:\n * sidebar-padding:\n * sidebar-header-height:\n * sidebar-footer-height:\n * sidebar-shadow:\n * sidebar-menu-item-highlight-color:\n * sidebar-scrollbar-background-color:\n * sidebar-scrollbar-color:\n * sidebar-scrollbar-width:\n */\n@Component({\n    selector: 'nb-sidebar',\n    styleUrls: ['./sidebar.component.scss'],\n    template: `\n    <div class=\"main-container\" [class.main-container-fixed]=\"containerFixedValue\">\n      <ng-content select=\"nb-sidebar-header\"></ng-content>\n      <div class=\"scrollable\" (click)=\"onClick($event)\">\n        <ng-content></ng-content>\n      </div>\n      <ng-content select=\"nb-sidebar-footer\"></ng-content>\n    </div>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbSidebarComponent implements OnInit, OnDestroy {\n  protected readonly responsiveValueChange$: Subject<boolean> = new Subject<boolean>();\n  protected responsiveState: NbSidebarResponsiveState = 'pc';\n\n  protected destroy$ = new Subject<void>();\n\n  containerFixedValue: boolean = true;\n\n  @HostBinding('class.fixed') fixedValue: boolean = false;\n  @HostBinding('class.right') rightValue: boolean = false;\n  @HostBinding('class.left') leftValue: boolean = true;\n  @HostBinding('class.start') startValue: boolean = false;\n  @HostBinding('class.end') endValue: boolean = false;\n\n  @HostBinding('class.expanded')\n  get expanded() {\n    return this.state === 'expanded';\n  }\n  @HostBinding('class.collapsed')\n  get collapsed() {\n    return this.state === 'collapsed';\n  }\n  @HostBinding('class.compacted')\n  get compacted() {\n    return this.state === 'compacted';\n  }\n\n  /**\n   * Places sidebar on the right side\n   * @type {boolean}\n   */\n  @Input()\n  set right(val: boolean) {\n    this.rightValue = convertToBoolProperty(val);\n    this.leftValue = !this.rightValue;\n    this.startValue = false;\n    this.endValue = false;\n  }\n  static ngAcceptInputType_right: NbBooleanInput;\n\n  /**\n   * Places sidebar on the left side\n   * @type {boolean}\n   */\n  @Input()\n  set left(val: boolean) {\n    this.leftValue = convertToBoolProperty(val);\n    this.rightValue = !this.leftValue;\n    this.startValue = false;\n    this.endValue = false;\n  }\n  static ngAcceptInputType_left: NbBooleanInput;\n\n  /**\n   * Places sidebar on the start edge of layout\n   * @type {boolean}\n   */\n  @Input()\n  set start(val: boolean) {\n    this.startValue = convertToBoolProperty(val);\n    this.endValue = !this.startValue;\n    this.leftValue = false;\n    this.rightValue = false;\n  }\n  static ngAcceptInputType_start: NbBooleanInput;\n\n  /**\n   * Places sidebar on the end edge of layout\n   * @type {boolean}\n   */\n  @Input()\n  set end(val: boolean) {\n    this.endValue = convertToBoolProperty(val);\n    this.startValue = !this.endValue;\n    this.leftValue = false;\n    this.rightValue = false;\n  }\n  static ngAcceptInputType_end: NbBooleanInput;\n\n  /**\n   * Makes sidebar fixed (shown above the layout content)\n   * @type {boolean}\n   */\n  @Input()\n  set fixed(val: boolean) {\n    this.fixedValue = convertToBoolProperty(val);\n  }\n  static ngAcceptInputType_fixed: NbBooleanInput;\n\n  /**\n   * Makes sidebar container fixed\n   * @type {boolean}\n   */\n  @Input()\n  set containerFixed(val: boolean) {\n    this.containerFixedValue = convertToBoolProperty(val);\n  }\n  static ngAcceptInputType_containerFixed: NbBooleanInput;\n\n  /**\n   * Initial sidebar state, `expanded`|`collapsed`|`compacted`\n   * @type {string}\n   */\n  @Input()\n  get state(): NbSidebarState {\n    return this._state;\n  }\n  set state(value: NbSidebarState) {\n    this._state = value;\n  }\n  protected _state: NbSidebarState = 'expanded';\n\n  /**\n   * Makes sidebar listen to media query events and change its behaviour\n   * @type {boolean}\n   */\n  @Input()\n  get responsive(): boolean {\n    return this._responsive;\n  }\n  set responsive(value: boolean) {\n    if (this.responsive !== convertToBoolProperty(value)) {\n      this._responsive = !this.responsive;\n      this.responsiveValueChange$.next(this.responsive);\n    }\n  }\n  protected _responsive: boolean = false;\n  static ngAcceptInputType_responsive: NbBooleanInput;\n\n  /**\n   * Tags a sidebar with some ID, can be later used in the sidebar service\n   * to determine which sidebar triggered the action, if multiple sidebars exist on the page.\n   *\n   * @type {string}\n   */\n  @Input() tag: string;\n\n  // TODO: get width by the key and define only max width for the tablets and mobiles\n  /**\n   * Controls on which screen sizes sidebar should be switched to compacted state.\n   * Works only when responsive mode is on.\n   * Default values are `['xs', 'is', 'sm', 'md', 'lg']`.\n   *\n   * @type string[]\n   */\n  @Input() compactedBreakpoints: string[] = ['xs', 'is', 'sm', 'md', 'lg'];\n\n  /**\n   * Controls on which screen sizes sidebar should be switched to collapsed state.\n   * Works only when responsive mode is on.\n   * Default values are `['xs', 'is']`.\n   *\n   * @type string[]\n   */\n  @Input() collapsedBreakpoints: string[] = ['xs', 'is'];\n\n  /**\n   * Emits whenever sidebar state change.\n   */\n  @Output() readonly stateChange = new EventEmitter<NbSidebarState>();\n\n  /**\n   * Emits whenever sidebar responsive state change.\n   */\n  @Output() readonly responsiveStateChange = new EventEmitter<NbSidebarResponsiveState>();\n\n  constructor(\n    private sidebarService: NbSidebarService,\n    private themeService: NbThemeService,\n    private element: ElementRef,\n    private cd: ChangeDetectorRef,\n  ) {}\n\n  ngOnInit() {\n    this.sidebarService\n      .onToggle()\n      .pipe(\n        filter(({ tag }) => !this.tag || this.tag === tag),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(({ compact }) => this.toggle(compact));\n\n    this.sidebarService\n      .onExpand()\n      .pipe(\n        filter(({ tag }) => !this.tag || this.tag === tag),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => this.expand());\n\n    this.sidebarService\n      .onCollapse()\n      .pipe(\n        filter(({ tag }) => !this.tag || this.tag === tag),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => this.collapse());\n\n    this.sidebarService\n      .onCompact()\n      .pipe(\n        filter(({ tag }) => !this.tag || this.tag === tag),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => this.compact());\n\n    getSidebarState$\n      .pipe(\n        filter(({ tag }) => !this.tag || this.tag === tag),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(({ observer }) => observer.next(this.state));\n\n    getSidebarResponsiveState$\n      .pipe(\n        filter(({ tag }) => !this.tag || this.tag === tag),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(({ observer }) => observer.next(this.responsiveState));\n\n    this.responsiveValueChange$\n      .pipe(\n        filter((responsive: boolean) => !responsive),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => this.expand());\n\n    this.subscribeToMediaQueryChange();\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  // TODO: this is more of a workaround, should be a better way to make components communicate to each other\n  onClick(event): void {\n    const menu = this.element.nativeElement.querySelector('nb-menu');\n\n    if (menu && menu.contains(event.target)) {\n      const link = this.getMenuLink(event.target);\n\n      if (link && link.nextElementSibling && link.nextElementSibling.classList.contains('menu-items')) {\n        this.sidebarService.expand(this.tag);\n      }\n    }\n  }\n\n  /**\n   * Collapses the sidebar\n   */\n  collapse() {\n    this.updateState('collapsed');\n  }\n\n  /**\n   * Expands the sidebar\n   */\n  expand() {\n    this.updateState('expanded');\n  }\n\n  /**\n   * Compacts the sidebar (minimizes)\n   */\n  compact() {\n    this.updateState('compacted');\n  }\n\n  /**\n   * Toggles sidebar state (expanded|collapsed|compacted)\n   * @param {boolean} compact If true, then sidebar state will be changed between expanded & compacted,\n   * otherwise - between expanded & collapsed. False by default.\n   *\n   * Toggle sidebar state\n   *\n   * ```ts\n   * this.sidebar.toggle(true);\n   * ```\n   */\n  toggle(compact: boolean = false) {\n    if (this.responsive) {\n      if (this.responsiveState === 'mobile') {\n        compact = false;\n      }\n    }\n\n    if (this.state === 'compacted' || this.state === 'collapsed') {\n      this.updateState('expanded');\n    } else {\n      this.updateState(compact ? 'compacted' : 'collapsed');\n    }\n  }\n\n  protected subscribeToMediaQueryChange() {\n    combineLatest([\n      this.responsiveValueChange$.pipe(startWith(this.responsive)),\n      this.themeService.onMediaQueryChange() as Observable<[NbMediaBreakpoint, NbMediaBreakpoint]>,\n    ])\n      .pipe(\n        filter(([responsive]) => responsive),\n        map(([, breakpoints]) => breakpoints),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(([prev, current]: [NbMediaBreakpoint, NbMediaBreakpoint]) => {\n        const isCollapsed = this.collapsedBreakpoints.includes(current.name);\n        const isCompacted = this.compactedBreakpoints.includes(current.name);\n\n        let newResponsiveState;\n\n        if (isCompacted) {\n          this.fixed = this.containerFixedValue;\n          this.compact();\n          newResponsiveState = 'tablet';\n        }\n        if (isCollapsed) {\n          this.fixed = true;\n          this.collapse();\n          newResponsiveState = 'mobile';\n        }\n        if (!isCollapsed && !isCompacted && (!prev.width || prev.width < current.width)) {\n          this.expand();\n          this.fixed = false;\n          newResponsiveState = 'pc';\n        }\n\n        if (newResponsiveState && newResponsiveState !== this.responsiveState) {\n          this.responsiveState = newResponsiveState;\n          this.responsiveStateChange.emit(this.responsiveState);\n          this.cd.markForCheck();\n        }\n      });\n  }\n\n  protected getMenuLink(element: HTMLElement): HTMLElement | undefined {\n    if (!element || element.tagName.toLowerCase() === 'nb-menu') {\n      return undefined;\n    }\n\n    if (element.tagName.toLowerCase() === 'a') {\n      return element;\n    }\n\n    return this.getMenuLink(element.parentElement);\n  }\n\n  protected updateState(state: NbSidebarState): void {\n    if (this.state !== state) {\n      this.state = state;\n      this.stateChange.emit(this.state);\n      this.cd.markForCheck();\n    }\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\n\nimport {\n  NbSidebarComponent,\n  NbSidebarFooterComponent,\n  NbSidebarHeaderComponent,\n} from './sidebar.component';\n\nimport { NbSidebarService } from './sidebar.service';\n\nconst NB_SIDEBAR_COMPONENTS = [\n  NbSidebarComponent,\n  NbSidebarFooterComponent,\n  NbSidebarHeaderComponent,\n];\n\nconst NB_SIDEBAR_PROVIDERS = [\n  NbSidebarService,\n];\n\n@NgModule({\n  imports: [\n    NbSharedModule,\n  ],\n  declarations: [\n    ...NB_SIDEBAR_COMPONENTS,\n  ],\n  exports: [\n    ...NB_SIDEBAR_COMPONENTS,\n  ],\n})\nexport class NbSidebarModule {\n  static forRoot(): ModuleWithProviders<NbSidebarModule> {\n    return {\n      ngModule: NbSidebarModule,\n      providers: [\n        ...NB_SIDEBAR_PROVIDERS,\n      ],\n    };\n  }\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n/**\n * Directive to wrap tab lazy content.\n * */\n@Directive({\n    selector: '[nbTabContent]',\n    standalone: false\n})\nexport class NbTabContentDirective {\n  constructor(public templateRef: TemplateRef<any>) {}\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n    selector: '[nbTabTitle]',\n    standalone: false\n})\nexport class NbTabTitleDirective {\n  constructor(public templateRef: TemplateRef<any>) {}\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { map, delay, filter, takeUntil } from 'rxjs/operators';\nimport {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  ContentChildren,\n  QueryList,\n  AfterContentInit,\n  HostBinding,\n  ChangeDetectorRef,\n  ContentChild,\n  OnDestroy,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Subject } from 'rxjs';\n\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { NbBadgePosition } from '../badge/badge.component';\nimport { NbIconConfig } from '../icon/icon.component';\nimport { NbTabContentDirective } from './tab-content.directive';\nimport { NbTabTitleDirective } from './tab-title.directive';\n\n/**\n * Specific tab container.\n *\n * ```ts\n * <nb-tab tabTitle=\"Users\"\n *   badgeText=\"99+\"\n *   badgeStatus=\"danger\">\n *   <p>List of <strong>users</strong>.</p>\n * </nb-tab>\n * ```\n */\n@Component({\n    selector: 'nb-tab',\n    template: `\n    <ng-container\n      *ngIf=\"tabContentDirective; else projectedContent\"\n      [ngTemplateOutlet]=\"tabContentDirective.templateRef\"\n    ></ng-container>\n\n    <ng-template #projectedContent>\n      <ng-content></ng-content>\n    </ng-template>\n  `,\n    standalone: false\n})\nexport class NbTabComponent {\n  @ContentChild(NbTabContentDirective) tabContentDirective: NbTabContentDirective;\n  @ContentChild(NbTabTitleDirective) tabTitleDirective: NbTabTitleDirective;\n\n  /**\n   * Tab title\n   * @type {string}\n   */\n  @Input() tabTitle: string;\n\n  /**\n   * Tab id\n   * @type {string}\n   */\n  @Input() tabId: string;\n\n  /**\n   * Use badge dot mode\n   * @type {boolean}\n   */\n  @Input()\n  get badgeDot(): boolean {\n    return this._badgeDot;\n  }\n  set badgeDot(val: boolean) {\n    this._badgeDot = convertToBoolProperty(val);\n  }\n  protected _badgeDot: boolean;\n  static ngAcceptInputType_badgeDot: NbBooleanInput;\n\n  /**\n   * Tab icon name or icon config object\n   * @type {string | NbIconConfig}\n   */\n  @Input() tabIcon: string | NbIconConfig;\n\n  /**\n   * Item is disabled and cannot be opened.\n   * @type {boolean}\n   */\n  @Input('disabled')\n  @HostBinding('class.disabled')\n  get disabled(): boolean {\n    return this.disabledValue;\n  }\n  set disabled(val: boolean) {\n    this.disabledValue = convertToBoolProperty(val);\n  }\n  static ngAcceptInputType_disabled: NbBooleanInput;\n\n  /**\n   * Show only icons when width is smaller than `tabs-icon-only-max-width`\n   * @type {boolean}\n   */\n  @Input()\n  set responsive(val: boolean) {\n    this.responsiveValue = convertToBoolProperty(val);\n  }\n  get responsive() {\n    return this.responsiveValue;\n  }\n  static ngAcceptInputType_responsive: NbBooleanInput;\n\n  /**\n   * Makes this tab a link that initiates navigation to a route\n   * @type string\n   */\n  @Input() route: string;\n\n  @HostBinding('class.content-active')\n  activeValue: boolean = false;\n\n  responsiveValue: boolean = false;\n  disabledValue = false;\n\n  /**\n   * Specifies active tab\n   * @returns {boolean}\n   */\n  @Input()\n  get active() {\n    return this.activeValue;\n  }\n  set active(val: boolean) {\n    this.activeValue = convertToBoolProperty(val);\n    if (this.activeValue) {\n      this.init = true;\n    }\n  }\n  static ngAcceptInputType_active: NbBooleanInput;\n\n  /**\n   * Lazy load content before tab selection\n   * @docs-private\n   * @deprecated This setting never worked. Wrap content into a `nbTabContent` to make it lazy.\n   * @breaking-change Remove 12.0.0\n   */\n  @Input()\n  set lazyLoad(val: boolean) {\n    this.init = convertToBoolProperty(val);\n  }\n  static ngAcceptInputType_lazyLoad: NbBooleanInput;\n\n  /**\n   * Badge text to display\n   * @type string\n   */\n  @Input() badgeText: string;\n\n  /**\n   * Badge status (adds specific styles):\n   * 'primary', 'info', 'success', 'warning', 'danger'\n   * @param {string} val\n   */\n  @Input() badgeStatus: NbComponentOrCustomStatus = 'basic';\n\n  /**\n   * Badge position.\n   * Can be set to any class or to one of predefined positions:\n   * 'top left', 'top right', 'bottom left', 'bottom right',\n   * 'top start', 'top end', 'bottom start', 'bottom end'\n   * @type string\n   */\n  @Input() badgePosition: NbBadgePosition;\n\n  /**\n   * @deprecated\n   * @breaking-change Remove 12.0.0\n   * @docs-private\n   */\n  init: boolean = false;\n}\n\n// TODO: Combine tabset with route-tabset, so that we can:\n// - have similar interface\n// - easy to migrate from one to another\n// - can mix them both (route/content tab)\n/**\n *\n * Dynamic tabset component.\n * @stacked-example(Showcase, tabset/tabset-showcase.component)\n *\n * Basic tabset example\n *\n * ```html\n * <nb-tabset>\n *  <nb-tab tabTitle=\"Simple Tab #1\">\n *    Tab content 1\n *  </nb-tab>\n *  <nb-tab tabTitle=\"Simple Tab #2\">\n *    Tab content 2\n *  </nb-tab>\n * </nb-tabset>\n * ```\n *\n * ### Installation\n *\n * Import `NbTabsetModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbTabsetModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * It is also possible to set a badge to a particular tab:\n * @stacked-example(Tab With Badge, tabset/tabset-badge.component)\n *\n * and we can set it to full a width of a parent component\n * @stacked-example(Full Width, tabset/tabset-width.component)\n *\n * `tabIcon` should be used to add an icon to the tab. Icon can also be combined with title.\n * `responsive` tab property if set allows you to hide the title on smaller screens\n * (`$tabset-tab-text-hide-breakpoint` variable) for better responsive behaviour.\n * You can open the following example and make\n * your screen smaller - titles will be hidden in the last tabset in the list:\n * @stacked-example(Icon, tabset/tabset-icon.component)\n *\n * It is also possible to disable a tab using `disabled` property:\n * @stacked-example(Disabled Tab, tabset/tabset-disabled.component)\n *\n * By default, the tab contents instantiated straightaway. To make tab contents load lazy,\n * declare the body of a tab in a template with `nbTabContent` directive.\n * ```html\n * <nb-tabset>\n *   <nb-tab>\n *     <some-component *nbTabContent>Lazy content</some-component>\n *   </nb-tab>\n *   <nb-tab>\n *     <ng-template nbTabContent>\n *       Lazy content with template syntax\n *     </ng-template>\n *   </nb-tab>\n * </nb-tabset>\n * ```\n *\n * You can provide a template as a tab title via `<ng-template nbTabTitle>`:\n * @stacked-example(Tab title template, tabset/tabset-template-title.component)\n *\n * @styles\n *\n * tabset-background-color:\n * tabset-border-radius:\n * tabset-shadow:\n * tabset-tab-background-color:\n * tabset-tab-padding:\n * tabset-tab-text-color:\n * tabset-tab-text-font-family:\n * tabset-tab-text-font-size:\n * tabset-tab-text-font-weight:\n * tabset-tab-text-line-height:\n * tabset-tab-text-transform:\n * tabset-tab-underline-width:\n * tabset-tab-underline-color:\n * tabset-tab-active-background-color:\n * tabset-tab-active-text-color:\n * tabset-tab-active-underline-color:\n * tabset-tab-focus-background-color:\n * tabset-tab-focus-text-color:\n * tabset-tab-focus-underline-color:\n * tabset-tab-hover-background-color:\n * tabset-tab-hover-text-color:\n * tabset-tab-hover-underline-color:\n * tabset-tab-disabled-background-color:\n * tabset-tab-disabled-text-color:\n * tabset-tab-disabled-underline-color:\n * tabset-divider-color:\n * tabset-divider-style:\n * tabset-divider-width:\n * tabset-content-background-color:\n * tabset-content-padding:\n * tabset-content-text-color:\n * tabset-content-text-font-family:\n * tabset-content-text-font-size:\n * tabset-content-text-font-weight:\n * tabset-content-text-line-height:\n * tabset-scrollbar-color:\n * tabset-scrollbar-background-color:\n * tabset-scrollbar-width:\n */\n@Component({\n    selector: 'nb-tabset',\n    styleUrls: ['./tabset.component.scss'],\n    template: `\n    <ul class=\"tabset\">\n      <li\n        *ngFor=\"let tab of tabs\"\n        (click)=\"selectTab(tab)\"\n        (keyup.space)=\"selectTab(tab)\"\n        (keyup.enter)=\"selectTab(tab)\"\n        [class.responsive]=\"tab.responsive\"\n        [class.active]=\"tab.active\"\n        [class.disabled]=\"tab.disabled\"\n        [attr.tabindex]=\"tab.disabled ? -1 : 0\"\n        [attr.data-tab-id]=\"tab.tabId\"\n        class=\"tab\"\n      >\n        <a href (click)=\"$event.preventDefault()\" tabindex=\"-1\" class=\"tab-link\">\n          <nb-icon *ngIf=\"tab.tabIcon\" [config]=\"tab.tabIcon\"></nb-icon>\n          <ng-container\n            *ngIf=\"tab.tabTitleDirective; else textTitleTemplate\"\n            [ngTemplateOutlet]=\"tab.tabTitleDirective.templateRef\"\n          ></ng-container>\n          <ng-template #textTitleTemplate>\n            <span class=\"tab-text\">{{ tab.tabTitle }}</span>\n          </ng-template>\n        </a>\n        <nb-badge\n          *ngIf=\"tab.badgeText || tab.badgeDot\"\n          [text]=\"tab.badgeText\"\n          [dotMode]=\"tab.badgeDot\"\n          [status]=\"tab.badgeStatus\"\n          [position]=\"tab.badgePosition\"\n        >\n        </nb-badge>\n      </li>\n    </ul>\n    <ng-content select=\"nb-tab\"></ng-content>\n  `,\n    standalone: false\n})\nexport class NbTabsetComponent implements AfterContentInit, OnDestroy {\n  @ContentChildren(NbTabComponent) tabs: QueryList<NbTabComponent>;\n\n  @HostBinding('class.full-width')\n  fullWidthValue: boolean = false;\n\n  /**\n   * Take full width of a parent\n   * @param {boolean} val\n   */\n  @Input()\n  set fullWidth(val: boolean) {\n    this.fullWidthValue = convertToBoolProperty(val);\n  }\n  static ngAcceptInputType_fullWidth: NbBooleanInput;\n\n  /**\n   * If specified - tabset listens to this parameter and selects corresponding tab.\n   * @type {string}\n   */\n  @Input() routeParam: string;\n\n  /**\n   * Emits when tab is selected\n   * @type EventEmitter<any>\n   */\n  @Output() changeTab = new EventEmitter<any>();\n\n  private destroy$: Subject<void> = new Subject<void>();\n\n  constructor(private route: ActivatedRoute, private changeDetectorRef: ChangeDetectorRef) {}\n\n  // TODO: refactoring this component, avoid change detection loop\n  ngAfterContentInit() {\n    this.route.params\n      .pipe(\n        map((params: any) =>\n          this.tabs.find((tab) => (this.routeParam ? tab.route === params[this.routeParam] : tab.active)),\n        ),\n        delay(0),\n        map((tab: NbTabComponent) => tab || this.tabs.first),\n        filter((tab: NbTabComponent) => !!tab),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((tabToSelect: NbTabComponent) => {\n        this.selectTab(tabToSelect);\n        this.changeDetectorRef.markForCheck();\n      });\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  // TODO: navigate to routeParam\n  selectTab(selectedTab: NbTabComponent) {\n    if (!selectedTab.disabled) {\n      this.tabs.forEach((tab) => (tab.active = tab === selectedTab));\n      this.changeTab.emit(selectedTab);\n    }\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\n\nimport { NbTabsetComponent, NbTabComponent } from './tabset.component';\nimport { NbBadgeModule } from '../badge/badge.module';\nimport { NbIconModule } from '../icon/icon.module';\nimport { NbTabContentDirective } from './tab-content.directive';\nimport { NbTabTitleDirective } from './tab-title.directive';\n\nconst NB_TABSET_COMPONENTS = [NbTabsetComponent, NbTabComponent];\n\nconst NB_TABSET_DIRECTIVES = [NbTabContentDirective, NbTabTitleDirective];\n\n@NgModule({\n  imports: [NbSharedModule, NbBadgeModule, NbIconModule],\n  declarations: [...NB_TABSET_COMPONENTS, ...NB_TABSET_DIRECTIVES],\n  exports: [...NB_TABSET_COMPONENTS, ...NB_TABSET_DIRECTIVES],\n})\nexport class NbTabsetModule {}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, HostBinding, Input } from '@angular/core';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\n\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbComponentSize } from '../component-size';\nimport { NbComponentShape } from '../component-shape';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { NbBadgePosition } from '../badge/badge.component';\n\n/**\n * Represents a component showing a user avatar (picture) with a user name on the right.\n * @stacked-example(Showcase, user/user-showcase.component)\n *\n * ```ts\n *   <nb-user name=\"John Doe\" title=\"Engineer\"></nb-user>\n * ```\n *\n * ### Installation\n *\n * Import `NbUserModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbUserModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Available in multiple sizes:\n * @stacked-example(Multiple Sizes, user/user-sizes.component)\n *\n *\n * You can hide unnecessary captions (name, title or both):\n * @stacked-example(Hide captions in user component, user/user-hide-captions.component)\n *\n *\n * You can set custom avatar background-color, user image (as link or BASE64 string) and disable user initials:\n * @stacked-example(Avatar image settings, user/user-avatar-settings.component)\n *\n * Component shape could be controlled with `shape` input.\n * @stacked-example(Shapes, user/user-shape.component)\n *\n * @styles\n *\n * user-picture-box-background-color:\n * user-picture-box-border-color:\n * user-picture-box-border-width:\n * user-initials-text-color:\n * user-initials-text-font-family:\n * user-initials-text-font-weight:\n * user-name-text-color:\n * user-name-text-font-family:\n * user-name-text-font-weight:\n * user-title-text-color:\n * user-title-text-font-family:\n * user-title-text-font-weight:\n * user-rectangle-border-radius:\n * user-semi-round-border-radius:\n * user-round-border-radius:\n * user-tiny-height:\n * user-tiny-width:\n * user-tiny-initials-text-font-size:\n * user-tiny-initials-text-line-height:\n * user-tiny-name-text-font-size:\n * user-tiny-name-text-line-height:\n * user-tiny-title-text-font-size:\n * user-tiny-title-text-line-height:\n * user-small-height:\n * user-small-width:\n * user-small-initials-text-font-size:\n * user-small-initials-text-line-height:\n * user-small-name-text-font-size:\n * user-small-name-text-line-height:\n * user-small-title-text-font-size:\n * user-small-title-text-line-height:\n * user-medium-height:\n * user-medium-width:\n * user-medium-initials-text-font-size:\n * user-medium-initials-text-line-height:\n * user-medium-name-text-font-size:\n * user-medium-name-text-line-height:\n * user-medium-title-text-font-size:\n * user-medium-title-text-line-height:\n * user-large-height:\n * user-large-width:\n * user-large-initials-text-font-size:\n * user-large-initials-text-line-height:\n * user-large-name-text-font-size:\n * user-large-name-text-line-height:\n * user-large-title-text-font-size:\n * user-large-title-text-line-height:\n * user-giant-height:\n * user-giant-width:\n * user-giant-initials-text-font-size:\n * user-giant-initials-text-line-height:\n * user-giant-name-text-font-size:\n * user-giant-name-text-line-height:\n * user-giant-title-text-font-size:\n * user-giant-title-text-line-height:\n */\n@Component({\n    selector: 'nb-user',\n    styleUrls: ['./user.component.scss'],\n    templateUrl: './user.component.html',\n    standalone: false\n})\nexport class NbUserComponent {\n\n  imageBackgroundStyle: SafeStyle;\n\n  /**\n   * Specifies a name to be shown on the right of a user picture\n   * @type string\n   */\n  @Input() name: string = 'Anonymous';\n\n  /**\n   * Specifies a title to be shown under the **name**\n   * @type string\n   */\n  @Input() title: string;\n\n  /**\n   * Absolute path to a user picture or base64 image.\n   * User name initials will be shown if no picture specified (JD for John Doe).\n   * @type string\n   */\n  @Input()\n  set picture(value: string) {\n    this.imageBackgroundStyle = value ? this.domSanitizer.bypassSecurityTrustStyle(`url(${value})`) : null;\n  }\n\n  /**\n   * Color of the area shown when no picture specified\n   * @type string\n   */\n  @Input() color: string;\n\n  /**\n   * Size of the component.\n   * Possible values: `tiny`, `small`, `medium` (default), `large`, 'giant'.\n   */\n  @Input() size: NbComponentSize = 'medium';\n\n  /**\n   * Shape of the picture box.\n   * Possible values: `rectangle`, `semi-round`, `round`.\n   */\n  @Input() shape: NbComponentShape = 'round';\n\n  /**\n   * Whether to show a user name or not\n   */\n  @Input()\n  get showName(): boolean {\n    return this._showName;\n  }\n  set showName(val: boolean) {\n    this._showName = convertToBoolProperty(val);\n  }\n  private _showName: boolean = true;\n  static ngAcceptInputType_showName: NbBooleanInput;\n\n  /**\n   * Whether to show a user title or not\n   * @type boolean\n   */\n  @Input()\n  get showTitle(): boolean {\n    return this._showTitle;\n  }\n  set showTitle(val: boolean) {\n    this._showTitle = convertToBoolProperty(val);\n  }\n  private _showTitle: boolean = true;\n  static ngAcceptInputType_showTitle: NbBooleanInput;\n\n  /**\n   * Whether to show a user initials (if no picture specified) or not\n   * @type boolean\n   */\n  @Input()\n  get showInitials(): boolean {\n    return this._showInitials;\n  }\n  set showInitials(val: boolean) {\n    this._showInitials = convertToBoolProperty(val);\n  }\n  private _showInitials: boolean = true;\n  static ngAcceptInputType_showInitials: NbBooleanInput;\n\n  /**\n   * Whether to show only a picture or also show the name and title\n   * @type boolean\n   */\n  @Input()\n  get onlyPicture(): boolean {\n    return !this.showName && !this.showTitle;\n  }\n  set onlyPicture(val: boolean) {\n    this.showName = this.showTitle = !convertToBoolProperty(val);\n  }\n  static ngAcceptInputType_onlyPicture: NbBooleanInput;\n\n  /**\n   * Badge text to display\n   * @type string\n   */\n  @Input() badgeText: string;\n\n  /**\n   * Badge status (adds specific styles):\n   * `primary`, `info`, `success`, `warning`, `danger`\n   * @param {string} val\n   */\n  @Input() badgeStatus: NbComponentOrCustomStatus = 'basic';\n\n  /**\n   * Badge position.\n   * Can be set to any class or to one of predefined positions:\n   * 'top left', 'top right', 'bottom left', 'bottom right',\n   * 'top start', 'top end', 'bottom start', 'bottom end'\n   * @type string\n   */\n  @Input() badgePosition: NbBadgePosition;\n\n  @HostBinding('class.size-tiny')\n  get tiny(): boolean {\n    return this.size === 'tiny';\n  }\n\n  @HostBinding('class.size-small')\n  get small(): boolean {\n    return this.size === 'small';\n  }\n\n  @HostBinding('class.size-medium')\n  get medium(): boolean {\n    return this.size === 'medium';\n  }\n\n  @HostBinding('class.size-large')\n  get large(): boolean {\n    return this.size === 'large';\n  }\n\n  @HostBinding('class.size-giant')\n  get giant(): boolean {\n    return this.size === 'giant';\n  }\n\n  @HostBinding('class.shape-rectangle')\n  get rectangle(): boolean {\n    return this.shape === 'rectangle';\n  }\n\n  @HostBinding('class.shape-semi-round')\n  get semiRound(): boolean {\n    return this.shape === 'semi-round';\n  }\n\n  @HostBinding('class.shape-round')\n  get round(): boolean {\n    return this.shape === 'round';\n  }\n\n  constructor(private domSanitizer: DomSanitizer) { }\n\n  getInitials(): string {\n    if (this.name) {\n      const names = this.name.split(' ');\n\n      return names.map(n => n.charAt(0)).splice(0, 2).join('').toUpperCase();\n    }\n\n    return '';\n  }\n}\n","<div class=\"user-container\">\n  <div *ngIf=\"imageBackgroundStyle\" class=\"user-picture image\" [style.background-image]=\"imageBackgroundStyle\">\n    <nb-badge *ngIf=\"badgeText\" [text]=\"badgeText\" [status]=\"badgeStatus\" [position]=\"badgePosition\"></nb-badge>\n  </div>\n  <div *ngIf=\"!imageBackgroundStyle\" class=\"user-picture initials\" [style.background-color]=\"color\">\n    <ng-container *ngIf=\"showInitials\">\n      {{ getInitials() }}\n    </ng-container>\n    <nb-badge *ngIf=\"badgeText\" [text]=\"badgeText\" [status]=\"badgeStatus\" [position]=\"badgePosition\"></nb-badge>\n  </div>\n\n  <div class=\"info-container\">\n    <div *ngIf=\"showName && name\" class=\"user-name\">{{ name }}</div>\n    <div *ngIf=\"showTitle && title\" class=\"user-title\">{{ title }}</div>\n  </div>\n</div>\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\n\nimport {\n  NbUserComponent,\n} from './user.component';\nimport { NbBadgeModule } from '../badge/badge.module';\n\nconst NB_USER_COMPONENTS = [\n  NbUserComponent,\n];\n\n@NgModule({\n  imports: [\n    NbSharedModule,\n    NbBadgeModule,\n  ],\n  declarations: [\n    ...NB_USER_COMPONENTS,\n  ],\n  exports: [\n    ...NB_USER_COMPONENTS,\n  ],\n})\nexport class NbUserModule { }\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, HostBinding, Input } from '@angular/core';\n\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbComponentSize } from '../component-size';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { NbBadgePosition } from '../badge/badge.component';\nimport { NbIconConfig } from '../icon/icon.component';\n\n/**\n * Action item, display a link with an icon, or any other content provided instead.\n */\n@Component({\n    selector: 'nb-action',\n    styleUrls: ['./action.component.scss'],\n    template: `\n    <ng-container *ngIf=\"icon; else projectedContent\">\n      <a class=\"icon-container\"\n         [routerLink]=\"link\"\n         [title]=\"title\"\n         *ngIf=\"link\">\n        <nb-icon [config]=\"icon\"></nb-icon>\n        <ng-container [ngTemplateOutlet]=\"badgeTemplate\"></ng-container>\n      </a>\n      <a class=\"icon-container\"\n         [href]=\"href\"\n         [title]=\"title\"\n         *ngIf=\"href && !link\">\n        <nb-icon [config]=\"icon\"></nb-icon>\n        <ng-container [ngTemplateOutlet]=\"badgeTemplate\"></ng-container>\n      </a>\n      <a class=\"icon-container\"\n         href=\"#\"\n         [title]=\"title\"\n         *ngIf=\"!href && !link\"\n         (click)=\"$event.preventDefault()\">\n        <nb-icon [config]=\"icon\"></nb-icon>\n        <ng-container [ngTemplateOutlet]=\"badgeTemplate\"></ng-container>\n      </a>\n    </ng-container>\n\n    <ng-template #projectedContent>\n      <ng-content></ng-content>\n      <ng-container [ngTemplateOutlet]=\"badgeTemplate\"></ng-container>\n    </ng-template>\n    <ng-template #badgeTemplate>\n      <nb-badge *ngIf=\"badgeText || badgeDot\"\n                [text]=\"badgeText\"\n                [dotMode]=\"badgeDot\"\n                [status]=\"badgeStatus\"\n                [position]=\"badgePosition\">\n      </nb-badge>\n    </ng-template>\n  `,\n    standalone: false\n})\nexport class NbActionComponent {\n\n  /**\n   * Router link to use\n   * @type string\n   */\n  @Input() link: string;\n\n  /**\n   * Regular HREF link\n   * @type: string\n   */\n  @Input() href: string;\n\n  /**\n   * Optional title for mouseover\n   * @type string\n   */\n  @Input() title: string = '';\n\n  /**\n   * Icon name or config object\n   * @type {string | NbIconConfig}\n   */\n  @Input() icon: string | NbIconConfig;\n\n  /**\n   * Visually disables the item\n   * @type boolean\n   */\n  @Input()\n  @HostBinding('class.disabled')\n  get disabled(): boolean {\n    return this._disabled;\n  }\n  set disabled(value: boolean) {\n    this._disabled = convertToBoolProperty(value);\n  }\n  protected _disabled: boolean = false;\n  static ngAcceptInputType_disabled: NbBooleanInput;\n\n  /**\n   * Use badge dot mode\n   * @type boolean\n   */\n  @Input()\n  get badgeDot(): boolean {\n    return this._badgeDot;\n  }\n  set badgeDot(value: boolean) {\n    this._badgeDot = convertToBoolProperty(value);\n  }\n  protected _badgeDot: boolean;\n  static ngAcceptInputType_badgeDot: NbBooleanInput;\n\n  /**\n   * Badge text to display\n   * @type string\n   */\n  @Input() badgeText: string;\n\n  /**\n   * Badge status (adds specific styles):\n   * 'basic', 'primary', 'info', 'success', 'warning', 'danger', 'control'\n   * @param {string} val\n   */\n  @Input() badgeStatus: NbComponentOrCustomStatus = 'basic';\n\n  /**\n   * Badge position.\n   * Can be set to any class or to one of predefined positions:\n   * 'top left', 'top right', 'bottom left', 'bottom right',\n   * 'top start', 'top end', 'bottom start', 'bottom end'\n   * @type string\n   */\n  @Input() badgePosition: NbBadgePosition;\n}\n\n/**\n * Shows a horizontal list of actions, available in multiple sizes.\n * Aligns items vertically.\n *\n * @stacked-example(Showcase, action/action-showcase.component)\n *\n * Basic actions setup:\n * ```html\n * <nb-actions size=\"small\">\n *   <nb-action icon=\"nb-search\"></nb-action>\n *   <nb-action icon=\"nb-power-circled\"></nb-action>\n *   <nb-action icon=\"nb-person\"></nb-action>\n * </nb-actions>\n * ```\n * ### Installation\n *\n * Import `NbActionsModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbActionsModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Multiple sizes example:\n * @stacked-example(Multiple Sizes, action/action-sizes.component)\n *\n * It is also possible to specify a `badge` value:\n *\n * @stacked-example(Action Badge, action/action-badge.component)\n *\n * and we can set it to full a width of a parent component\n * @stacked-example(Full Width, action/action-width.component)\n *\n * Action dot mode\n * @stacked-example(Action badge in dot mode, action/action-dot-mode.component)\n *\n * @styles\n *\n * actions-background-color:\n * actions-divider-color:\n * actions-divider-style:\n * actions-divider-width:\n * actions-icon-color:\n * actions-text-color:\n * actions-text-font-family:\n * actions-text-font-weight:\n * actions-text-line-height:\n * actions-disabled-icon-color:\n * actions-disabled-text-color:\n * actions-tiny-height:\n * actions-tiny-icon-height:\n * actions-tiny-padding:\n * actions-tiny-text-font-size:\n * actions-small-height:\n * actions-small-icon-height:\n * actions-small-padding:\n * actions-small-text-font-size:\n * actions-medium-height:\n * actions-medium-icon-height:\n * actions-medium-padding:\n * actions-medium-text-font-size:\n * actions-large-height:\n * actions-large-icon-height:\n * actions-large-padding:\n * actions-large-text-font-size:\n * actions-giant-height:\n * actions-giant-icon-height:\n * actions-giant-padding:\n * actions-giant-text-font-size:\n */\n@Component({\n    selector: 'nb-actions',\n    styleUrls: ['./actions.component.scss'],\n    template: `\n    <ng-content select=\"nb-action\"></ng-content>\n  `,\n    standalone: false\n})\nexport class NbActionsComponent {\n\n  /**\n   * Size of the component: 'tiny', 'small' (default), 'medium', 'large', 'giant'\n   */\n  @Input()\n  get size(): NbComponentSize {\n    return this._size;\n  }\n  set size(value: NbComponentSize) {\n    this._size = value;\n  }\n  protected _size: NbComponentSize = 'small';\n\n  /**\n   * Component will fill full width of the container\n   */\n  @Input()\n  @HostBinding('class.full-width')\n  get fullWidth(): boolean {\n    return this._fullWidth;\n  }\n  set fullWidth(value: boolean) {\n    this._fullWidth = convertToBoolProperty(value);\n  }\n  protected _fullWidth: boolean = false;\n  static ngAcceptInputType_fullWidth: NbBooleanInput;\n\n  @HostBinding('class.size-tiny')\n  get tiny(): boolean {\n    return this.size === 'tiny';\n  }\n\n  @HostBinding('class.size-small')\n  get small(): boolean {\n    return this.size === 'small';\n  }\n\n  @HostBinding('class.size-medium')\n  get medium(): boolean {\n    return this.size === 'medium';\n  }\n\n  @HostBinding('class.size-large')\n  get large(): boolean {\n    return this.size === 'large';\n  }\n\n  @HostBinding('class.size-giant')\n  get giant(): boolean {\n    return this.size === 'giant';\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\n\nimport { NbActionComponent, NbActionsComponent } from './actions.component';\n\nimport { NbBadgeModule } from '../badge/badge.module';\nimport { NbIconModule } from '../icon/icon.module';\n\nconst NB_ACTIONS_COMPONENTS = [\n  NbActionComponent,\n  NbActionsComponent,\n];\n\n@NgModule({\n  imports: [\n    NbSharedModule,\n    NbBadgeModule,\n    NbIconModule,\n  ],\n  declarations: [\n    ...NB_ACTIONS_COMPONENTS,\n  ],\n  exports: [\n    ...NB_ACTIONS_COMPONENTS,\n  ],\n})\nexport class NbActionsModule { }\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Subject, Observable } from 'rxjs';\nimport { share } from 'rxjs/operators';\n\n/**\n * Search component service, connects your code to a page-level search component.\n */\n@Injectable()\nexport class NbSearchService {\n  private searchSubmittings$ = new Subject<{ term: string, tag?: string }>();\n  private searchActivations$ = new Subject<{ searchType: string, tag?: string }>();\n  private searchDeactivations$ = new Subject<{ searchType: string, tag?: string }>();\n  private searchInput$ = new Subject<{ term: string, tag?: string }>();\n\n  /***\n   * Activate (open) search component\n   * @param {string} searchType\n   * @param {string} tag\n   */\n  activateSearch(searchType: string, tag?: string) {\n    this.searchActivations$.next({ searchType, tag });\n  }\n\n  /**\n   * Deactibate (close) search component\n   * @param {string} searchType\n   * @param {string} tag\n   */\n  deactivateSearch(searchType: string, tag?: string) {\n    this.searchDeactivations$.next({ searchType, tag });\n  }\n\n  /**\n   * Trigger search submit\n   * @param {string} term\n   * @param {string} tag\n   */\n  submitSearch(term: string, tag?: string) {\n    this.searchSubmittings$.next({ term, tag });\n  }\n\n  /**\n   * Trigger search submit by input event\n   * @param {string} term\n   * @param {string} tag\n   */\n  searchInput(term: string, tag?: string) {\n    this.searchInput$.next({term, tag});\n  }\n\n  /**\n   * Subscribe to 'activate' event\n   * @returns Observable<{searchType: string; tag?: string}>\n   */\n  onSearchActivate(): Observable<{ searchType: string, tag?: string }> {\n    return this.searchActivations$.pipe(share());\n  }\n\n  /**\n   * Subscribe to 'deactivate' event\n   * @returns Observable<{searchType: string; tag?: string}>\n   */\n  onSearchDeactivate(): Observable<{ searchType: string, tag?: string }> {\n    return this.searchDeactivations$.pipe(share());\n  }\n\n  /**\n   * Subscribe to 'submit' event (when submit button clicked)\n   * @returns Observable<{term: string; tag?: string}>\n   */\n  onSearchSubmit(): Observable<{ term: string, tag?: string }> {\n    return this.searchSubmittings$.pipe(share());\n  }\n\n  /**\n   * Subscribe to input event\n   * @returns Observable<{term: string; tag?: string}>\n   */\n  onSearchInput(): Observable<{ term: string, tag?: string }> {\n    return this.searchInput$.pipe(share());\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\n\nimport { of as observableOf, Subject } from 'rxjs';\nimport { filter, delay, takeUntil } from 'rxjs/operators';\n\nimport { NbSearchService } from './search.service';\nimport { NbThemeService } from '../../services/theme.service';\nimport { NbOverlayService } from '../cdk/overlay/overlay-service';\nimport { NbOverlayRef, NbPortalDirective } from '../cdk/overlay/mapping';\n\n/**\n * search-field-component is used under the hood by nb-search component\n * can't be used itself\n */\n@Component({\n    selector: 'nb-search-field',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    styleUrls: [\n        'styles/search.component.modal-zoomin.scss',\n        'styles/search.component.layout-rotate.scss',\n        'styles/search.component.modal-move.scss',\n        'styles/search.component.curtain.scss',\n        'styles/search.component.column-curtain.scss',\n        'styles/search.component.modal-drop.scss',\n        'styles/search.component.modal-half.scss',\n    ],\n    template: `\n    <div class=\"search\" (keyup.esc)=\"emitClose()\">\n      <button (click)=\"emitClose()\" nbButton ghost class=\"close-button\">\n        <nb-icon icon=\"close-outline\" pack=\"nebular-essentials\"></nb-icon>\n      </button>\n      <div class=\"form-wrapper\">\n        <form class=\"form\" (keyup.enter)=\"submitSearch(searchInput.value)\">\n          <div class=\"form-content\">\n            <input class=\"search-input\"\n                   #searchInput\n                   (input)=\"emitSearchInput(searchInput.value)\"\n                   autocomplete=\"off\"\n                   [attr.placeholder]=\"placeholder\"\n                   tabindex=\"-1\"\n                   (blur)=\"focusInput()\"/>\n          </div>\n          <span class=\"info\">{{ hint }}</span>\n        </form>\n      </div>\n    </div>\n  `,\n    standalone: false\n})\nexport class NbSearchFieldComponent implements OnChanges, AfterViewInit {\n\n  static readonly TYPE_MODAL_ZOOMIN = 'modal-zoomin';\n  static readonly TYPE_ROTATE_LAYOUT = 'rotate-layout';\n  static readonly TYPE_MODAL_MOVE = 'modal-move';\n  static readonly TYPE_CURTAIN = 'curtain';\n  static readonly TYPE_COLUMN_CURTAIN = 'column-curtain';\n  static readonly TYPE_MODAL_DROP = 'modal-drop';\n  static readonly TYPE_MODAL_HALF = 'modal-half';\n\n  @Input() type: string;\n  @Input() placeholder: string;\n  @Input() hint: string;\n  @Input() show = false;\n\n  @Output() close = new EventEmitter();\n  @Output() search = new EventEmitter();\n  @Output() searchInput = new EventEmitter();\n\n  @ViewChild('searchInput') inputElement: ElementRef<HTMLInputElement>;\n\n  @HostBinding('class.show')\n  get showClass() {\n    return this.show;\n  }\n\n  @HostBinding('class.modal-zoomin')\n  get modalZoomin() {\n    return this.type === NbSearchFieldComponent.TYPE_MODAL_ZOOMIN;\n  }\n\n  @HostBinding('class.rotate-layout')\n  get rotateLayout() {\n    return this.type === NbSearchFieldComponent.TYPE_ROTATE_LAYOUT;\n  }\n\n  @HostBinding('class.modal-move')\n  get modalMove() {\n    return this.type === NbSearchFieldComponent.TYPE_MODAL_MOVE;\n  }\n\n  @HostBinding('class.curtain')\n  get curtain() {\n    return this.type === NbSearchFieldComponent.TYPE_CURTAIN;\n  }\n\n  @HostBinding('class.column-curtain')\n  get columnCurtain() {\n    return this.type === NbSearchFieldComponent.TYPE_COLUMN_CURTAIN;\n  }\n\n  @HostBinding('class.modal-drop')\n  get modalDrop() {\n    return this.type === NbSearchFieldComponent.TYPE_MODAL_DROP;\n  }\n\n  @HostBinding('class.modal-half')\n  get modalHalf() {\n    return this.type === NbSearchFieldComponent.TYPE_MODAL_HALF;\n  }\n\n  ngOnChanges({ show }: SimpleChanges) {\n    const becameHidden = !show.isFirstChange() && show.currentValue === false;\n    if (becameHidden && this.inputElement) {\n      this.inputElement.nativeElement.value = '';\n    }\n\n    this.focusInput();\n  }\n\n  ngAfterViewInit() {\n    this.focusInput();\n  }\n\n  emitClose() {\n    this.close.emit();\n  }\n\n  submitSearch(term) {\n    if (term) {\n      this.search.emit(term);\n    }\n  }\n\n  emitSearchInput(term: string) {\n    this.searchInput.emit(term);\n  }\n\n  focusInput() {\n    if (this.show && this.inputElement) {\n      this.inputElement.nativeElement.focus();\n    }\n  }\n}\n\nexport type NbSearchType = 'modal-zoomin' | 'rotate-layout' | 'modal-move' |\n  'curtain' | 'column-curtain' | 'modal-drop' | 'modal-half';\n\n/**\n * Beautiful full-page search control.\n *\n * @stacked-example(Showcase, search/search-showcase.component)\n *\n * Basic setup:\n *\n * ```ts\n *  <nb-search type=\"rotate-layout\"></nb-search>\n * ```\n * ### Installation\n *\n * Import `NbSearchModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbSearchModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Several animation types are available:\n * modal-zoomin, rotate-layout, modal-move, curtain, column-curtain, modal-drop, modal-half\n *\n * It is also possible to handle search event using `NbSearchService`:\n *\n * @stacked-example(Search Event, search/search-event.component)\n *\n * @styles\n *\n * search-background-color:\n * search-divider-color:\n * search-divider-style:\n * search-divider-width:\n * search-extra-background-color:\n * search-text-color:\n * search-text-font-family:\n * search-text-font-size:\n * search-text-font-weight:\n * search-text-line-height:\n * search-placeholder-text-color:\n * search-info-text-color:\n * search-info-text-font-family:\n * search-info-text-font-size:\n * search-info-text-font-weight:\n * search-info-text-line-height:\n */\n@Component({\n    selector: 'nb-search',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    styleUrls: ['styles/search.component.scss'],\n    template: `\n    <button #searchButton class=\"start-search\" (click)=\"emitActivate()\" nbButton ghost>\n      <nb-icon icon=\"search-outline\" pack=\"nebular-essentials\"></nb-icon>\n    </button>\n    <nb-search-field\n      *nbPortal\n      [show]=\"showSearchField\"\n      [type]=\"type\"\n      [placeholder]=\"placeholder\"\n      [hint]=\"hint\"\n      (search)=\"search($event)\"\n      (searchInput)=\"emitInput($event)\"\n      (close)=\"emitDeactivate()\">\n    </nb-search-field>\n  `,\n    standalone: false\n})\nexport class NbSearchComponent implements OnInit, OnDestroy {\n\n  private destroy$ = new Subject<void>();\n  private overlayRef: NbOverlayRef;\n  showSearchField = false;\n\n  /**\n   * Tags a search with some ID, can be later used in the search service\n   * to determine which search component triggered the action, if multiple searches exist on the page.\n   *\n   * @type {string}\n   */\n  @Input() tag: string;\n\n  /**\n   * Search input placeholder\n   * @type {string}\n   */\n  @Input() placeholder: string = 'Search...';\n\n  /**\n   * Hint showing under the input field to improve user experience\n   *\n   * @type {string}\n   */\n  @Input() hint: string = 'Hit enter to search';\n\n  /**\n   * Search design type, available types are\n   * modal-zoomin, rotate-layout, modal-move, curtain, column-curtain, modal-drop, modal-half\n   * @type {string}\n   */\n  @Input() type: NbSearchType;\n\n  @ViewChild(NbPortalDirective) searchFieldPortal: NbPortalDirective;\n  @ViewChild('searchButton', { read: ElementRef }) searchButton: ElementRef<HTMLElement>;\n\n  constructor(\n    private searchService: NbSearchService,\n    private themeService: NbThemeService,\n    private router: Router,\n    private overlayService: NbOverlayService,\n    private changeDetector: ChangeDetectorRef,\n  ) {}\n\n  ngOnInit() {\n    this.router.events\n      .pipe(\n        filter(event => event instanceof NavigationEnd),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => this.hideSearch());\n\n    this.searchService.onSearchActivate()\n      .pipe(\n        filter(data => !this.tag || data.tag === this.tag),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => this.openSearch());\n\n    this.searchService.onSearchDeactivate()\n      .pipe(\n        filter(data => !this.tag || data.tag === this.tag),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => this.hideSearch());\n  }\n\n  ngOnDestroy() {\n    if (this.overlayRef && this.overlayRef.hasAttached()) {\n      this.removeLayoutClasses();\n      this.overlayRef.detach();\n    }\n\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  openSearch() {\n    if (!this.overlayRef) {\n      this.overlayRef = this.overlayService.create();\n      this.overlayRef.attach(this.searchFieldPortal);\n    }\n\n    this.themeService.appendLayoutClass(this.type);\n    observableOf(null).pipe(delay(0)).subscribe(() => {\n      this.themeService.appendLayoutClass('with-search');\n      this.showSearchField = true;\n      this.changeDetector.detectChanges();\n    });\n  }\n\n  hideSearch() {\n    this.removeLayoutClasses();\n    this.showSearchField = false;\n    this.changeDetector.detectChanges();\n    this.searchButton.nativeElement.focus();\n  }\n\n  search(term) {\n    this.searchService.submitSearch(term, this.tag);\n    this.hideSearch();\n  }\n\n  emitInput(term: string) {\n    this.searchService.searchInput(term, this.tag);\n  }\n\n  emitActivate() {\n    this.searchService.activateSearch(this.type, this.tag);\n  }\n\n  emitDeactivate() {\n    this.searchService.deactivateSearch(this.type, this.tag);\n  }\n\n  private removeLayoutClasses() {\n    this.themeService.removeLayoutClass('with-search');\n    observableOf(null).pipe(delay(500)).subscribe(() => {\n      this.themeService.removeLayoutClass(this.type);\n    });\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\nimport { NgModule } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\nimport { NbOverlayModule } from '../cdk/overlay/overlay.module';\nimport { NbIconModule } from '../icon/icon.module';\nimport { NbButtonModule } from '../button/button.module';\n\nimport { NbSearchComponent, NbSearchFieldComponent } from './search.component';\nimport { NbSearchService } from './search.service';\n\n\n@NgModule({\n  imports: [\n    NbSharedModule,\n    NbOverlayModule,\n    NbIconModule,\n    NbButtonModule,\n  ],\n  declarations: [\n    NbSearchComponent,\n    NbSearchFieldComponent,\n  ],\n  exports: [\n    NbSearchComponent,\n    NbSearchFieldComponent,\n  ],\n  providers: [\n    NbSearchService,\n  ],\n})\nexport class NbSearchModule {\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  Component,\n  Input,\n  HostBinding,\n  forwardRef,\n  ChangeDetectorRef,\n  Output,\n  EventEmitter,\n  ChangeDetectionStrategy,\n  Renderer2,\n  ElementRef,\n  AfterViewInit,\n  NgZone,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\n\n/**\n * Styled checkbox component\n *\n * @stacked-example(Showcase, checkbox/checkbox-showcase.component)\n *\n * ### Installation\n *\n * Import `NbCheckboxComponent` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbCheckboxModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Checkbox is available in multiple colors using `status` property:\n * @stacked-example(Colored Checkboxes, checkbox/checkbox-status.component)\n *\n * Indeterminate state is also supported:\n * @stacked-example(Indeterminate Checkbox, checkbox/checkbox-indeterminate.component)\n *\n * Checkbox can be disabled via `disabled` attribute.\n * @stacked-example(Disabled Checkbox, checkbox/checkbox-disabled.component)\n *\n * @styles\n *\n * checkbox-height:\n * checkbox-width:\n * checkbox-border-style:\n * checkbox-border-width:\n * checkbox-border-radius:\n * checkbox-outline-width:\n * checkbox-outline-color:\n * checkbox-text-font-family:\n * checkbox-text-font-size:\n * checkbox-text-font-weight:\n * checkbox-text-line-height:\n * checkbox-text-space:\n * checkbox-padding:\n * checkbox-focus-inset-shadow-length:\n * checkbox-basic-text-color:\n * checkbox-basic-background-color:\n * checkbox-basic-border-color:\n * checkbox-basic-checked-background-color:\n * checkbox-basic-checked-border-color:\n * checkbox-basic-checked-checkmark-color:\n * checkbox-basic-indeterminate-background-color:\n * checkbox-basic-indeterminate-border-color:\n * checkbox-basic-indeterminate-checkmark-color:\n * checkbox-basic-focus-background-color:\n * checkbox-basic-focus-border-color:\n * checkbox-basic-focus-checked-background-color:\n * checkbox-basic-focus-checked-border-color:\n * checkbox-basic-hover-background-color:\n * checkbox-basic-hover-border-color:\n * checkbox-basic-hover-checked-background-color:\n * checkbox-basic-hover-checked-border-color:\n * checkbox-basic-active-background-color:\n * checkbox-basic-active-border-color:\n * checkbox-basic-active-checked-background-color:\n * checkbox-basic-active-checked-border-color:\n * checkbox-basic-disabled-background-color:\n * checkbox-basic-disabled-border-color:\n * checkbox-basic-disabled-checkmark-color:\n * checkbox-basic-disabled-text-color:\n * checkbox-basic-disabled-checked-background-color:\n * checkbox-primary-text-color:\n * checkbox-primary-background-color:\n * checkbox-primary-border-color:\n * checkbox-primary-checked-background-color:\n * checkbox-primary-checked-border-color:\n * checkbox-primary-checked-checkmark-color:\n * checkbox-primary-indeterminate-background-color:\n * checkbox-primary-indeterminate-border-color:\n * checkbox-primary-indeterminate-checkmark-color:\n * checkbox-primary-focus-background-color:\n * checkbox-primary-focus-border-color:\n * checkbox-primary-focus-checked-background-color:\n * checkbox-primary-focus-checked-border-color:\n * checkbox-primary-hover-background-color:\n * checkbox-primary-hover-border-color:\n * checkbox-primary-hover-checked-background-color:\n * checkbox-primary-hover-checked-border-color:\n * checkbox-primary-active-background-color:\n * checkbox-primary-active-border-color:\n * checkbox-primary-active-checked-background-color:\n * checkbox-primary-active-checked-border-color:\n * checkbox-primary-disabled-background-color:\n * checkbox-primary-disabled-border-color:\n * checkbox-primary-disabled-checkmark-color:\n * checkbox-primary-disabled-text-color:\n * checkbox-primary-disabled-checked-background-color:\n * checkbox-success-text-color:\n * checkbox-success-background-color:\n * checkbox-success-border-color:\n * checkbox-success-checked-background-color:\n * checkbox-success-checked-border-color:\n * checkbox-success-checked-checkmark-color:\n * checkbox-success-indeterminate-background-color:\n * checkbox-success-indeterminate-border-color:\n * checkbox-success-indeterminate-checkmark-color:\n * checkbox-success-focus-background-color:\n * checkbox-success-focus-border-color:\n * checkbox-success-focus-checked-background-color:\n * checkbox-success-focus-checked-border-color:\n * checkbox-success-hover-background-color:\n * checkbox-success-hover-border-color:\n * checkbox-success-hover-checked-background-color:\n * checkbox-success-hover-checked-border-color:\n * checkbox-success-active-background-color:\n * checkbox-success-active-border-color:\n * checkbox-success-active-checked-background-color:\n * checkbox-success-active-checked-border-color:\n * checkbox-success-disabled-background-color:\n * checkbox-success-disabled-border-color:\n * checkbox-success-disabled-checkmark-color:\n * checkbox-success-disabled-text-color:\n * checkbox-success-disabled-checked-background-color:\n * checkbox-info-text-color:\n * checkbox-info-background-color:\n * checkbox-info-border-color:\n * checkbox-info-checked-background-color:\n * checkbox-info-checked-border-color:\n * checkbox-info-checked-checkmark-color:\n * checkbox-info-indeterminate-background-color:\n * checkbox-info-indeterminate-border-color:\n * checkbox-info-indeterminate-checkmark-color:\n * checkbox-info-focus-background-color:\n * checkbox-info-focus-border-color:\n * checkbox-info-focus-checked-background-color:\n * checkbox-info-focus-checked-border-color:\n * checkbox-info-hover-background-color:\n * checkbox-info-hover-border-color:\n * checkbox-info-hover-checked-background-color:\n * checkbox-info-hover-checked-border-color:\n * checkbox-info-active-background-color:\n * checkbox-info-active-border-color:\n * checkbox-info-active-checked-background-color:\n * checkbox-info-active-checked-border-color:\n * checkbox-info-disabled-background-color:\n * checkbox-info-disabled-border-color:\n * checkbox-info-disabled-checkmark-color:\n * checkbox-info-disabled-text-color:\n * checkbox-info-disabled-checked-background-color:\n * checkbox-warning-text-color:\n * checkbox-warning-background-color:\n * checkbox-warning-border-color:\n * checkbox-warning-checked-background-color:\n * checkbox-warning-checked-border-color:\n * checkbox-warning-checked-checkmark-color:\n * checkbox-warning-indeterminate-background-color:\n * checkbox-warning-indeterminate-border-color:\n * checkbox-warning-indeterminate-checkmark-color:\n * checkbox-warning-focus-background-color:\n * checkbox-warning-focus-border-color:\n * checkbox-warning-focus-checked-background-color:\n * checkbox-warning-focus-checked-border-color:\n * checkbox-warning-hover-background-color:\n * checkbox-warning-hover-border-color:\n * checkbox-warning-hover-checked-background-color:\n * checkbox-warning-hover-checked-border-color:\n * checkbox-warning-active-background-color:\n * checkbox-warning-active-border-color:\n * checkbox-warning-active-checked-background-color:\n * checkbox-warning-active-checked-border-color:\n * checkbox-warning-disabled-background-color:\n * checkbox-warning-disabled-border-color:\n * checkbox-warning-disabled-checkmark-color:\n * checkbox-warning-disabled-text-color:\n * checkbox-warning-disabled-checked-background-color:\n * checkbox-danger-text-color:\n * checkbox-danger-background-color:\n * checkbox-danger-border-color:\n * checkbox-danger-checked-background-color:\n * checkbox-danger-checked-border-color:\n * checkbox-danger-checked-checkmark-color:\n * checkbox-danger-indeterminate-background-color:\n * checkbox-danger-indeterminate-border-color:\n * checkbox-danger-indeterminate-checkmark-color:\n * checkbox-danger-focus-background-color:\n * checkbox-danger-focus-border-color:\n * checkbox-danger-focus-checked-background-color:\n * checkbox-danger-focus-checked-border-color:\n * checkbox-danger-hover-background-color:\n * checkbox-danger-hover-border-color:\n * checkbox-danger-hover-checked-background-color:\n * checkbox-danger-hover-checked-border-color:\n * checkbox-danger-active-background-color:\n * checkbox-danger-active-border-color:\n * checkbox-danger-active-checked-background-color:\n * checkbox-danger-active-checked-border-color:\n * checkbox-danger-disabled-background-color:\n * checkbox-danger-disabled-border-color:\n * checkbox-danger-disabled-checkmark-color:\n * checkbox-danger-disabled-text-color:\n * checkbox-danger-disabled-checked-background-color:\n * checkbox-control-text-color:\n * checkbox-control-background-color:\n * checkbox-control-border-color:\n * checkbox-control-checked-background-color:\n * checkbox-control-checked-border-color:\n * checkbox-control-checked-checkmark-color:\n * checkbox-control-indeterminate-background-color:\n * checkbox-control-indeterminate-border-color:\n * checkbox-control-indeterminate-checkmark-color:\n * checkbox-control-focus-background-color:\n * checkbox-control-focus-border-color:\n * checkbox-control-focus-checked-background-color:\n * checkbox-control-focus-checked-border-color:\n * checkbox-control-hover-background-color:\n * checkbox-control-hover-border-color:\n * checkbox-control-hover-checked-background-color:\n * checkbox-control-hover-checked-border-color:\n * checkbox-control-active-background-color:\n * checkbox-control-active-border-color:\n * checkbox-control-active-checked-background-color:\n * checkbox-control-active-checked-border-color:\n * checkbox-control-disabled-background-color:\n * checkbox-control-disabled-border-color:\n * checkbox-control-disabled-checkmark-color:\n * checkbox-control-disabled-text-color:\n * checkbox-control-disabled-checked-background-color:\n */\n@Component({\n    selector: 'nb-checkbox',\n    template: `\n    <label class=\"label\">\n      <input type=\"checkbox\" class=\"native-input visually-hidden\"\n             [disabled]=\"disabled\"\n             [checked]=\"checked\"\n             (change)=\"updateValueAndIndeterminate($event)\"\n             (blur)=\"setTouched()\"\n             (click)=\"$event.stopPropagation()\"\n             [indeterminate]=\"indeterminate\">\n      <span [class.indeterminate]=\"indeterminate\" [class.checked]=\"checked\" class=\"custom-checkbox\">\n        <nb-icon *ngIf=\"indeterminate\" icon=\"minus-bold-outline\" pack=\"nebular-essentials\" class=\"custom-checkbox-icon\"></nb-icon>\n        <nb-icon *ngIf=\"checked && !indeterminate\" icon=\"checkmark-bold-outline\" pack=\"nebular-essentials\" class=\"custom-checkbox-icon\"></nb-icon>\n      </span>\n      <span class=\"text\">\n        <ng-content></ng-content>\n      </span>\n    </label>\n  `,\n    styleUrls: [`./checkbox.component.scss`],\n    providers: [{\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => NbCheckboxComponent),\n            multi: true,\n        }],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbCheckboxComponent implements AfterViewInit, ControlValueAccessor {\n\n  onChange: any = () => { };\n  onTouched: any = () => { };\n\n  @Input()\n  get checked(): boolean {\n    return this._checked;\n  }\n  set checked(value: boolean) {\n    this._checked = convertToBoolProperty(value);\n  }\n  private _checked: boolean = false;\n  static ngAcceptInputType_checked: NbBooleanInput;\n\n  /**\n   * Controls input disabled state\n   */\n  @Input()\n  get disabled(): boolean {\n    return this._disabled;\n  }\n  set disabled(value: boolean) {\n    this._disabled = convertToBoolProperty(value);\n  }\n  private _disabled: boolean = false;\n  static ngAcceptInputType_disabled: NbBooleanInput;\n\n  /**\n   * Checkbox status.\n   * Possible values are: `basic`, `primary`, `success`, `warning`, `danger`, `info`, `control`.\n   */\n  @Input() status: NbComponentOrCustomStatus = 'basic';\n\n  /**\n   * Controls checkbox indeterminate state\n   */\n  @Input()\n  get indeterminate(): boolean {\n    return this._indeterminate;\n  }\n  set indeterminate(value: boolean) {\n    this._indeterminate = convertToBoolProperty(value);\n  }\n  private _indeterminate: boolean = false;\n  static ngAcceptInputType_indeterminate: NbBooleanInput;\n\n  /**\n   * Output when checked state is changed by a user\n   * @type EventEmitter<boolean>\n   */\n  @Output() checkedChange = new EventEmitter<boolean>();\n\n  @HostBinding('class.status-primary')\n  get primary() {\n    return this.status === 'primary';\n  }\n\n  @HostBinding('class.status-success')\n  get success() {\n    return this.status === 'success';\n  }\n\n  @HostBinding('class.status-warning')\n  get warning() {\n    return this.status === 'warning';\n  }\n\n  @HostBinding('class.status-danger')\n  get danger() {\n    return this.status === 'danger';\n  }\n\n  @HostBinding('class.status-info')\n  get info() {\n    return this.status === 'info';\n  }\n\n  @HostBinding('class.status-basic')\n  get basic() {\n    return this.status === 'basic';\n  }\n\n  @HostBinding('class.status-control')\n  get control() {\n    return this.status === 'control';\n  }\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.status)) {\n      return [this.statusService.getStatusClass(this.status)];\n    }\n    return [];\n  }\n\n  constructor(\n    private changeDetector: ChangeDetectorRef,\n    private renderer: Renderer2,\n    private hostElement: ElementRef<HTMLElement>,\n    private zone: NgZone,\n    private statusService: NbStatusService,\n  ) {}\n\n  ngAfterViewInit() {\n    // TODO: #2254\n    this.zone.runOutsideAngular(() => setTimeout(() => {\n      this.renderer.addClass(this.hostElement.nativeElement, 'nb-transition');\n    }));\n  }\n\n  registerOnChange(fn: any) {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any) {\n    this.onTouched = fn;\n  }\n\n  writeValue(val: any) {\n    this._checked = val;\n    this.changeDetector.markForCheck();\n  }\n\n  setDisabledState(val: boolean) {\n    this.disabled = convertToBoolProperty(val);\n    this.changeDetector.markForCheck();\n  }\n\n  setTouched() {\n    this.onTouched();\n  }\n\n  updateValueAndIndeterminate(event: Event): void {\n    const input = (event.target as HTMLInputElement);\n    this.checked = input.checked;\n    this.checkedChange.emit(this.checked);\n    this.onChange(this.checked);\n    this.indeterminate = input.indeterminate;\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\nimport { NbIconModule } from '../icon/icon.module';\nimport { NbCheckboxComponent } from './checkbox.component';\n\n@NgModule({\n  imports: [\n    NbSharedModule,\n    NbIconModule,\n  ],\n  declarations: [NbCheckboxComponent],\n  exports: [NbCheckboxComponent],\n})\nexport class NbCheckboxModule { }\n","import { ComponentFactoryResolver, ComponentRef, Injectable, NgZone, Type } from '@angular/core';\nimport { filter, takeUntil, distinctUntilChanged, take } from 'rxjs/operators';\nimport { Subject, BehaviorSubject, Observable, merge } from 'rxjs';\n\nimport { NbAdjustableConnectedPositionStrategy, NbPosition } from '../overlay-position';\n\nimport { NbRenderableContainer } from '../overlay-container';\nimport { createContainer, NbOverlayContent, NbOverlayService, patch } from '../overlay-service';\nimport { NbOverlayRef, NbOverlayContainer, NbOverlayConfig } from '../mapping';\n\nexport interface NbDynamicOverlayController {\n  show();\n  hide();\n  toggle();\n  rebuild();\n}\n\n@Injectable()\nexport class NbDynamicOverlay {\n  protected ref: NbOverlayRef;\n  protected container: ComponentRef<NbRenderableContainer>;\n  protected componentType: Type<NbRenderableContainer>;\n  protected context: Object = {};\n  protected content: NbOverlayContent;\n  protected positionStrategy: NbAdjustableConnectedPositionStrategy;\n  protected overlayConfig: NbOverlayConfig = {};\n  protected lastAppliedPosition: NbPosition;\n  protected disabled = false;\n\n  protected positionStrategyChange$ = new Subject<void>();\n  protected isShown$ = new BehaviorSubject<boolean>(false);\n  protected destroy$ = new Subject<void>();\n  protected overlayDestroy$ = new Subject<NbOverlayRef>();\n\n  get isAttached(): boolean {\n    return this.ref && this.ref.hasAttached();\n  }\n\n  get isShown(): Observable<boolean> {\n    return this.isShown$.pipe(distinctUntilChanged());\n  }\n\n  constructor(\n    protected overlay: NbOverlayService,\n    protected componentFactoryResolver: ComponentFactoryResolver,\n    protected zone: NgZone,\n    protected overlayContainer: NbOverlayContainer,\n  ) {}\n\n  create(\n    componentType: Type<NbRenderableContainer>,\n    content: NbOverlayContent,\n    context: Object,\n    positionStrategy: NbAdjustableConnectedPositionStrategy,\n    overlayConfig: NbOverlayConfig = {},\n    disabled = false,\n  ) {\n    this.setContentAndContext(content, context);\n    this.setComponent(componentType);\n    this.setPositionStrategy(positionStrategy);\n    this.setOverlayConfig(overlayConfig);\n    this.setDisabled(disabled);\n\n    return this;\n  }\n\n  setContent(content: NbOverlayContent) {\n    this.content = content;\n\n    if (this.container) {\n      this.updateContext();\n    }\n    this.updatePosition();\n  }\n\n  setContext(context: Object) {\n    this.context = context;\n\n    if (this.container) {\n      this.updateContext();\n    }\n    this.updatePosition();\n  }\n\n  setContentAndContext(content: NbOverlayContent, context: Object) {\n    this.content = content;\n    this.context = context;\n    if (this.container) {\n      this.updateContext();\n    }\n    this.updatePosition();\n  }\n\n  setComponent(componentType: Type<NbRenderableContainer>) {\n    this.componentType = componentType;\n\n    // in case the component is shown we recreate it and show it back\n    const wasAttached = this.isAttached;\n    this.disposeOverlayRef();\n    if (wasAttached) {\n      this.show();\n    }\n  }\n\n  setPositionStrategy(positionStrategy: NbAdjustableConnectedPositionStrategy) {\n    this.positionStrategyChange$.next();\n\n    this.positionStrategy = positionStrategy;\n\n    this.positionStrategy.positionChange\n      .pipe(\n        filter(() => !!this.container),\n        takeUntil(merge(this.positionStrategyChange$, this.destroy$)),\n      )\n      .subscribe((position: NbPosition) => {\n        this.lastAppliedPosition = position;\n        patch(this.container, { position });\n      });\n\n    if (this.ref) {\n      this.ref.updatePositionStrategy(this.positionStrategy);\n    }\n  }\n\n  setOverlayConfig(overlayConfig: NbOverlayConfig) {\n    this.overlayConfig = overlayConfig;\n\n    const wasAttached = this.isAttached;\n    this.disposeOverlayRef();\n    if (wasAttached) {\n      this.show();\n    }\n  }\n\n  setDisabled(disabled: boolean) {\n    if (disabled && this.isShown$.value) {\n      this.hide();\n    }\n    this.disabled = disabled;\n  }\n\n  show() {\n    if (this.disabled) {\n      return;\n    }\n\n    if (!this.ref) {\n      this.createOverlay();\n    }\n\n    this.renderContainer();\n\n    if (!this.hasOverlayInContainer()) {\n      // Dispose overlay ref as it refers to the old overlay container and create new by calling `show`\n      this.disposeOverlayRef();\n      return this.show();\n    }\n\n    this.isShown$.next(true);\n  }\n\n  hide() {\n    if (!this.ref) {\n      return;\n    }\n\n    this.ref.detach();\n    this.container = null;\n\n    this.isShown$.next(false);\n  }\n\n  toggle() {\n    if (this.isAttached) {\n      this.hide();\n    } else {\n      this.show();\n    }\n  }\n\n  dispose() {\n    this.destroy$.next();\n    this.destroy$.complete();\n    this.hide();\n    this.disposeOverlayRef();\n    this.isShown$.complete();\n    this.positionStrategyChange$.complete();\n    this.overlayDestroy$.complete();\n  }\n\n  getContainer() {\n    return this.container;\n  }\n\n  protected createOverlay() {\n    this.ref = this.overlay.create({\n      positionStrategy: this.positionStrategy,\n      scrollStrategy: this.overlay.scrollStrategies.reposition(),\n      ...this.overlayConfig,\n    });\n    this.updatePositionWhenStable(this.ref);\n  }\n\n  protected renderContainer() {\n    const containerContext = this.createContainerContext();\n    if (!this.container) {\n      this.container = createContainer(this.ref, this.componentType, containerContext, this.componentFactoryResolver);\n    }\n    this.container.instance.renderContent();\n  }\n\n  protected updateContext() {\n    const containerContext = this.createContainerContext();\n    Object.assign(this.container.instance, containerContext);\n    this.container.instance.renderContent();\n    this.container.changeDetectorRef.detectChanges();\n  }\n\n  protected createContainerContext(): Object {\n    return {\n      content: this.content,\n      context: this.context,\n      cfr: this.componentFactoryResolver,\n      position: this.lastAppliedPosition,\n    };\n  }\n\n  /**\n   * Dimensions of the container may change after content update. So we listen to zone.stable event to\n   * reposition the container.\n   */\n  protected updatePositionWhenStable(overlay: NbOverlayRef) {\n    const overlayDestroy$ = this.overlayDestroy$.pipe(\n      filter((destroyedOverlay: NbOverlayRef) => destroyedOverlay === overlay),\n    );\n\n    this.zone.onStable.pipe(take(1), takeUntil(merge(this.destroy$, overlayDestroy$))).subscribe(() => this.updatePosition());\n  }\n\n  protected updatePosition() {\n    if (this.ref) {\n      this.ref.updatePosition();\n    }\n  }\n\n  protected hasOverlayInContainer(): boolean {\n    return this.overlayContainer.getContainerElement().contains(this.ref.hostElement);\n  }\n\n  protected disposeOverlayRef() {\n    if (this.ref) {\n      this.ref.dispose();\n      this.overlayDestroy$.next(this.ref);\n      this.ref = null;\n      this.container = null;\n    }\n  }\n}\n","import { ElementRef, Injectable, SimpleChange, Type } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { skip, takeUntil } from 'rxjs/operators';\n\nimport { NbTrigger, NbTriggerStrategy, NbTriggerStrategyBuilderService } from '../overlay-trigger';\nimport {\n  NbAdjustableConnectedPositionStrategy,\n  NbAdjustment,\n  NbPosition,\n  NbPositionBuilderService,\n} from '../overlay-position';\nimport { NbRenderableContainer } from '../overlay-container';\nimport { NbOverlayContent } from '../overlay-service';\nimport { NbDynamicOverlay } from './dynamic-overlay';\nimport { NbOverlayConfig } from '../mapping';\nimport { NbLayoutDirectionService } from '../../../../services/direction.service';\n\nexport class NbDynamicOverlayChange extends SimpleChange {\n  constructor(previousValue: any, currentValue: any, firstChange: boolean = false) {\n    super(previousValue, currentValue, firstChange);\n  }\n\n  isChanged(): boolean {\n    return this.currentValue !== this.previousValue;\n  }\n}\n\n@Injectable()\nexport class NbDynamicOverlayHandler {\n  protected _componentType: Type<NbRenderableContainer>;\n  protected _host: ElementRef;\n  protected _context: Object = {};\n  protected _content: NbOverlayContent;\n  protected _trigger: NbTrigger = NbTrigger.NOOP;\n  protected _disabled: boolean = false;\n  protected _position: NbPosition = NbPosition.TOP;\n  protected _adjustment: NbAdjustment = NbAdjustment.NOOP;\n  protected _offset: number = 15;\n  protected _overlayConfig: NbOverlayConfig = {};\n\n  protected dynamicOverlay: NbDynamicOverlay;\n  protected triggerStrategy: NbTriggerStrategy;\n\n  protected positionStrategy: NbAdjustableConnectedPositionStrategy;\n\n  protected changes: { [key: string]: NbDynamicOverlayChange } = {};\n\n  protected destroy$ = new Subject<void>();\n\n  constructor(\n    private positionBuilder: NbPositionBuilderService,\n    private triggerStrategyBuilder: NbTriggerStrategyBuilderService,\n    private dynamicOverlayService: NbDynamicOverlay,\n    private directionService: NbLayoutDirectionService,\n  ) {}\n\n  host(host: ElementRef) {\n    this.changes.host = new NbDynamicOverlayChange(this._host, host);\n    this._host = host;\n    return this;\n  }\n\n  trigger(trigger: NbTrigger) {\n    this.changes.trigger = new NbDynamicOverlayChange(this._trigger, trigger);\n    this._trigger = trigger;\n    return this;\n  }\n\n  disabled(disabled: boolean) {\n    this.changes.disabled = new NbDynamicOverlayChange(this._disabled, disabled);\n    this._disabled = disabled;\n    return this;\n  }\n\n  position(position: NbPosition) {\n    this.changes.position = new NbDynamicOverlayChange(this._position, position);\n    this._position = position;\n    return this;\n  }\n\n  adjustment(adjustment: NbAdjustment) {\n    this.changes.adjustment = new NbDynamicOverlayChange(this._adjustment, adjustment);\n    this._adjustment = adjustment;\n    return this;\n  }\n\n  componentType(componentType: Type<NbRenderableContainer>) {\n    this.changes.componentType = new NbDynamicOverlayChange(this._componentType, componentType);\n    this._componentType = componentType;\n    return this;\n  }\n\n  content(content: NbOverlayContent) {\n    this.changes.content = new NbDynamicOverlayChange(this._content, content);\n    this._content = content;\n    return this;\n  }\n\n  context(context: {}) {\n    this.changes.context = new NbDynamicOverlayChange(this._context, context);\n    this._context = context;\n    return this;\n  }\n\n  offset(offset: number) {\n    this.changes.offset = new NbDynamicOverlayChange(this._offset, offset);\n    this._offset = offset;\n    return this;\n  }\n\n  overlayConfig(overlayConfig: NbOverlayConfig) {\n    this.changes.overlayConfig = new NbDynamicOverlayChange(this._overlayConfig, overlayConfig);\n    this._overlayConfig = overlayConfig;\n    return this;\n  }\n\n  build() {\n    if (!this._componentType || !this._host) {\n      throw Error(`NbDynamicOverlayHandler: at least 'componentType' and 'host' should be\n      passed before building a dynamic overlay.`);\n    }\n    this.dynamicOverlay = this.dynamicOverlayService.create(\n      this._componentType,\n      this._content,\n      this._context,\n      this.createPositionStrategy(),\n      this._overlayConfig,\n      this._disabled,\n    );\n\n    this.connect();\n    this.clearChanges();\n\n    return this.dynamicOverlay;\n  }\n\n  rebuild() {\n    /**\n     * we should not throw here\n     * as we use rebuilt in lifecycle hooks\n     * which it could be called before the build\n     * so we just ignore this call\n     */\n    if (!this.dynamicOverlay) {\n      return undefined;\n    }\n\n    if (this.isPositionStrategyUpdateRequired()) {\n      this.dynamicOverlay.setPositionStrategy(this.createPositionStrategy());\n    }\n\n    if (this.isTriggerStrategyUpdateRequired()) {\n      this.connect();\n    }\n\n    if (this.isContainerRerenderRequired()) {\n      this.dynamicOverlay.setContentAndContext(this._content, this._context);\n    }\n\n    if (this.isComponentTypeUpdateRequired()) {\n      this.dynamicOverlay.setComponent(this._componentType);\n    }\n\n    if (this.isOverlayConfigUpdateRequired()) {\n      this.dynamicOverlay.setOverlayConfig(this._overlayConfig);\n    }\n\n    if (this.isDisabledUpdated()) {\n      this.dynamicOverlay.setDisabled(this._disabled);\n    }\n\n    this.clearChanges();\n    return this.dynamicOverlay;\n  }\n\n  connect() {\n    if (!this.dynamicOverlay) {\n      throw new Error(`NbDynamicOverlayHandler: cannot connect to DynamicOverlay\n      as it is not created yet. Call build() first`);\n    }\n    this.disconnect();\n    this.subscribeOnTriggers(this.dynamicOverlay);\n    this.subscribeOnDirectionChange();\n  }\n\n  disconnect() {\n    if (this.triggerStrategy) {\n      this.triggerStrategy.destroy();\n    }\n  }\n\n  destroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n\n    this.disconnect();\n    this.clearChanges();\n    if (this.dynamicOverlay) {\n      this.dynamicOverlay.dispose();\n    }\n  }\n\n  protected createPositionStrategy() {\n    return this.positionBuilder\n      .connectedTo(this._host)\n      .position(this._position)\n      .adjustment(this._adjustment)\n      .offset(this._offset)\n      .direction(this.directionService.getDirection());\n  }\n\n  protected subscribeOnTriggers(dynamicOverlay: NbDynamicOverlay) {\n    this.triggerStrategy = this.triggerStrategyBuilder\n      .trigger(this._trigger)\n      .host(this._host.nativeElement)\n      .container(() => dynamicOverlay.getContainer())\n      .build();\n\n    this.triggerStrategy.show$.subscribe(() => dynamicOverlay.show());\n    this.triggerStrategy.hide$.subscribe(() => dynamicOverlay.hide());\n  }\n\n  protected subscribeOnDirectionChange() {\n    this.directionService\n      .onDirectionChange()\n      .pipe(skip(1), takeUntil(this.destroy$))\n      .subscribe(() => {\n        this.dynamicOverlay.setPositionStrategy(this.createPositionStrategy());\n      });\n  }\n\n  protected isContainerRerenderRequired() {\n    return this.isContentUpdated() || this.isContextUpdated() || this.isPositionStrategyUpdateRequired();\n  }\n\n  protected isPositionStrategyUpdateRequired(): boolean {\n    return this.isAdjustmentUpdated() || this.isPositionUpdated() || this.isOffsetUpdated() || this.isHostUpdated();\n  }\n\n  protected isTriggerStrategyUpdateRequired(): boolean {\n    return this.isTriggerUpdated() || this.isHostUpdated();\n  }\n\n  protected isComponentTypeUpdateRequired(): boolean {\n    return this.isComponentTypeUpdated();\n  }\n\n  private isOverlayConfigUpdateRequired(): boolean {\n    return this.isOverlayConfigUpdated();\n  }\n\n  protected isComponentTypeUpdated(): boolean {\n    return this.changes.componentType && this.changes.componentType.isChanged();\n  }\n\n  protected isContentUpdated(): boolean {\n    return this.changes.content && this.changes.content.isChanged();\n  }\n\n  protected isContextUpdated(): boolean {\n    return this.changes.context && this.changes.context.isChanged();\n  }\n\n  protected isAdjustmentUpdated(): boolean {\n    return this.changes.adjustment && this.changes.adjustment.isChanged();\n  }\n\n  protected isPositionUpdated(): boolean {\n    return this.changes.position && this.changes.position.isChanged();\n  }\n\n  protected isHostUpdated(): boolean {\n    return this.changes.host && this.changes.host.isChanged();\n  }\n\n  protected isTriggerUpdated(): boolean {\n    return this.changes.trigger && this.changes.trigger.isChanged();\n  }\n\n  protected isOffsetUpdated(): boolean {\n    return this.changes.offset && this.changes.offset.isChanged();\n  }\n\n  protected isOverlayConfigUpdated(): boolean {\n    return this.changes.overlayConfig && this.changes.overlayConfig.isChanged();\n  }\n\n  protected isDisabledUpdated(): boolean {\n    return this.changes.disabled && this.changes.disabled.isChanged();\n  }\n\n  protected clearChanges() {\n    this.changes = {};\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  Component,\n  ComponentFactoryResolver,\n  Input,\n  TemplateRef,\n  Type,\n  ViewChild,\n} from '@angular/core';\nimport { NbComponentPortal, NbTemplatePortal } from '../cdk/overlay/mapping';\nimport {\n  NbOverlayContainerComponent,\n  NbPositionedContainerComponent,\n  NbRenderableContainer,\n} from '../cdk/overlay/overlay-container';\n\n\n/**\n * Overlay container.\n * Renders provided content inside.\n *\n * @styles\n *\n * popover-text-color:\n * popover-text-font-family:\n * popover-text-font-size:\n * popover-text-font-weight:\n * popover-text-line-height:\n * popover-background-color:\n * popover-border-width:\n * popover-border-color:\n * popover-border-radius:\n * popover-shadow:\n * popover-arrow-size:\n * popover-padding:\n * */\n@Component({\n    selector: 'nb-popover',\n    styleUrls: ['./popover.component.scss'],\n    template: `\n    <span class=\"arrow\"></span>\n    <nb-overlay-container></nb-overlay-container>\n  `,\n    standalone: false\n})\nexport class NbPopoverComponent extends NbPositionedContainerComponent implements NbRenderableContainer {\n  @ViewChild(NbOverlayContainerComponent) overlayContainer: NbOverlayContainerComponent;\n\n  @Input() content: any;\n  @Input() context: Object;\n  @Input() cfr: ComponentFactoryResolver;\n\n  renderContent() {\n    this.detachContent();\n    this.attachContent();\n  }\n\n  protected detachContent() {\n    this.overlayContainer.detach();\n  }\n\n  protected attachContent() {\n    if (this.content instanceof TemplateRef) {\n      this.attachTemplate();\n    } else if (this.content instanceof Type) {\n      this.attachComponent();\n    } else {\n      this.attachString();\n    }\n  }\n\n  protected attachTemplate() {\n    this.overlayContainer\n      .attachTemplatePortal(new NbTemplatePortal(this.content, null, <any>{ $implicit: this.context }));\n  }\n\n  protected attachComponent() {\n    const portal = new NbComponentPortal(this.content, null, null, this.cfr);\n    const ref = this.overlayContainer.attachComponentPortal(portal, this.context);\n    ref.changeDetectorRef.detectChanges();\n  }\n\n  protected attachString() {\n    this.overlayContainer.attachStringContent(this.content);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  AfterViewInit,\n  Directive,\n  ElementRef,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  EventEmitter,\n} from '@angular/core';\n\nimport { NbDynamicOverlay, NbDynamicOverlayController } from '../cdk/overlay/dynamic/dynamic-overlay';\nimport { NbDynamicOverlayHandler } from '../cdk/overlay/dynamic/dynamic-overlay-handler';\nimport { NbAdjustment, NbPosition, NbPositionValues, NbAdjustmentValues } from '../cdk/overlay/overlay-position';\nimport { NbOverlayContent } from '../cdk/overlay/overlay-service';\nimport { NbTrigger, NbTriggerValues } from '../cdk/overlay/overlay-trigger';\nimport { NbOverlayConfig } from '../cdk/overlay/mapping';\nimport { NbPopoverComponent } from './popover.component';\nimport { takeUntil, skip } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\n/**\n * Powerful popover directive, which provides the best UX for your users.\n *\n * @stacked-example(Showcase, popover/popover-showcase.component)\n *\n * Popover can accept different content such as:\n * TemplateRef\n *\n * ```html\n * <button [nbPopover]=\"templateRef\"></button>\n * <ng-template #templateRef>\n *   <span>Hello, Popover!</span>\n * </ng-template>\n * ```\n * ### Installation\n *\n * Import `NbPopoverModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbPopoverModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Custom components\n *\n * ```html\n * <button [nbPopover]=\"MyPopoverComponent\"></button>\n * ```\n *\n * Both custom components and templateRef popovers can receive *contentContext* property\n * that will be passed to the content props.\n *\n * Primitive types\n *\n * ```html\n * <button nbPopover=\"Hello, Popover!\"></button>\n * ```\n *\n * Popover has different placements, such as: top, bottom, left, right, start and end\n * which can be used as following:\n *\n * @stacked-example(Placements, popover/popover-placements.component)\n *\n * By default popover will try to adjust itself to maximally fit viewport\n * and provide the best user experience. It will try to change position of the popover container.\n * If you want to disable this behaviour set it `noop`.\n *\n * ```html\n * <button nbPopover=\"Hello, Popover!\" nbPopoverAdjustment=\"noop\"></button>\n * ```\n *\n * Popover has a number of triggers which provides an ability to show and hide the component in different ways:\n *\n * - Click mode shows the component when a user clicks on the host element and hides when the user clicks\n * somewhere on the document outside the component.\n * - Hint provides capability to show the component when the user hovers over the host element\n * and hide when the user hovers out of the host.\n * - Hover works like hint mode with one exception - when the user moves mouse from host element to\n * the container element the component remains open, so that it is possible to interact with it content.\n * - Focus mode is applied when user focuses the element.\n * - Noop mode - the component won't react to the user interaction.\n *\n * @stacked-example(Available Triggers, popover/popover-modes.component.html)\n *\n * Noop mode is especially useful when you need to control Popover programmatically, for example show/hide\n * as a result of some third-party action, like HTTP request or validation check:\n *\n * @stacked-example(Manual Control, popover/popover-noop.component)\n *\n * Below are examples for manual popover settings control, both via template binding and code.\n * @stacked-example(Popover Settings, popover/popover-dynamic.component)\n *\n * Please note, while manipulating Popover setting via code, you need to call `rebuild()` method to apply the settings\n * changed.\n * @stacked-example(Popover Settings Code, popover/popover-dynamic-code.component)\n *\n * @additional-example(Template Ref, popover/popover-template-ref.component)\n * @additional-example(Custom Component, popover/popover-custom-component.component)\n * */\n@Directive({\n    selector: '[nbPopover]',\n    exportAs: 'nbPopover',\n    providers: [NbDynamicOverlayHandler, NbDynamicOverlay],\n    standalone: false\n})\nexport class NbPopoverDirective implements NbDynamicOverlayController, OnChanges, AfterViewInit, OnDestroy, OnInit {\n  protected popoverComponent = NbPopoverComponent;\n  protected dynamicOverlay: NbDynamicOverlay;\n  protected destroy$ = new Subject<void>();\n\n  /**\n   * Popover content which will be rendered in NbArrowedOverlayContainerComponent.\n   * Available content: template ref, component and any primitive.\n   * */\n  @Input('nbPopover')\n  content: NbOverlayContent;\n\n  /**\n   * Container content context. Will be applied to the rendered component.\n   * */\n  @Input('nbPopoverContext')\n  context: Object = {};\n\n  /**\n   * Position will be calculated relatively host element based on the position.\n   * Can be top, right, bottom, left, start or end.\n   * */\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input('nbPopoverPlacement')\n  position: NbPosition = NbPosition.TOP;\n  static ngAcceptInputType_position: NbPositionValues;\n\n  /**\n   * Container position will be changes automatically based on this strategy if container can't fit view port.\n   * Set this property to `noop` value if you want to disable automatically adjustment.\n   * Available values: `clockwise` (default), `counterclockwise`, `vertical`, `horizontal`, `noop`.\n   * */\n  @Input('nbPopoverAdjustment')\n  get adjustment(): NbAdjustment {\n    return this._adjustment;\n  }\n  set adjustment(value: NbAdjustment) {\n    this._adjustment = value;\n  }\n  protected _adjustment: NbAdjustment = NbAdjustment.CLOCKWISE;\n  static ngAcceptInputType_adjustment: NbAdjustmentValues;\n\n  /**\n   * Describes when the container will be shown.\n   * Available options: `click`, `hover`, `hint`, `focus` and `noop`\n   * */\n  @Input('nbPopoverTrigger')\n  trigger: NbTrigger = NbTrigger.CLICK;\n  static ngAcceptInputType_trigger: NbTriggerValues;\n\n  /**\n   * Sets popover offset\n   * */\n  @Input('nbPopoverOffset')\n  offset = 15;\n\n  /** Disables the display of the tooltip. */\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input('nbTooltipDisabled') disabled: boolean = false;\n\n  @Input('nbPopoverClass')\n  get popoverClass(): string {\n    return this._popoverClass;\n  }\n  set popoverClass(value: string) {\n    if (value !== this.popoverClass) {\n      this._popoverClass = value;\n      this.overlayConfig = { panelClass: this.popoverClass };\n    }\n  }\n  _popoverClass: string = '';\n\n  @Output()\n  nbPopoverShowStateChange = new EventEmitter<{ isShown: boolean }>();\n\n  protected overlayConfig: NbOverlayConfig = { panelClass: this.popoverClass };\n\n  get isShown(): boolean {\n    return !!(this.dynamicOverlay && this.dynamicOverlay.isAttached);\n  }\n\n  constructor(protected hostRef: ElementRef, protected dynamicOverlayHandler: NbDynamicOverlayHandler) {}\n\n  ngOnInit() {\n    this.dynamicOverlayHandler.host(this.hostRef).componentType(this.popoverComponent);\n  }\n\n  ngOnChanges() {\n    this.rebuild();\n  }\n\n  ngAfterViewInit() {\n    this.dynamicOverlay = this.configureDynamicOverlay().build();\n\n    this.dynamicOverlay.isShown\n      .pipe(skip(1), takeUntil(this.destroy$))\n      .subscribe((isShown: boolean) => this.nbPopoverShowStateChange.emit({ isShown }));\n  }\n\n  rebuild() {\n    this.dynamicOverlay = this.configureDynamicOverlay().rebuild();\n  }\n\n  show() {\n    this.dynamicOverlay.show();\n  }\n\n  hide() {\n    this.dynamicOverlay.hide();\n  }\n\n  toggle() {\n    this.dynamicOverlay.toggle();\n  }\n\n  ngOnDestroy() {\n    this.dynamicOverlayHandler.destroy();\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  protected configureDynamicOverlay() {\n    return this.dynamicOverlayHandler\n      .position(this.position)\n      .trigger(this.trigger)\n      .disabled(this.disabled)\n      .offset(this.offset)\n      .adjustment(this.adjustment)\n      .content(this.content)\n      .context(this.context)\n      .overlayConfig(this.overlayConfig);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NbOverlayModule } from '../cdk/overlay/overlay.module';\nimport { NbPopoverDirective } from './popover.directive';\nimport { NbPopoverComponent } from './popover.component';\n\n\n@NgModule({\n  imports: [NbOverlayModule],\n  declarations: [NbPopoverDirective, NbPopoverComponent],\n  exports: [NbPopoverDirective],\n})\nexport class NbPopoverModule {\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, Input } from '@angular/core';\n\nimport { NbMenuItem } from '../../components/menu/menu.service';\nimport { NbPositionedContainerComponent, NbRenderableContainer } from '../cdk/overlay/overlay-container';\n\n/**\n * Context menu component used as content within NbContextMenuDirective.\n *\n * @styles\n *\n * context-menu-background-color:\n * context-menu-border-color:\n * context-menu-border-style:\n * context-menu-border-width:\n * context-menu-border-radius:\n * context-menu-text-align:\n * context-menu-min-width:\n * context-menu-max-width:\n * context-menu-shadow:\n * */\n@Component({\n    selector: 'nb-context-menu',\n    template: `\n    <nb-menu class=\"context-menu\" [items]=\"context.items\" [tag]=\"context.tag\"></nb-menu>\n  `,\n    standalone: false\n})\nexport class NbContextMenuComponent extends NbPositionedContainerComponent implements NbRenderableContainer {\n\n  @Input() items: NbMenuItem[] = [];\n  @Input() tag: string;\n\n  @Input()\n  context: { items: NbMenuItem[], tag?: string } = { items: [] };\n\n\n  /**\n   * The method is empty since we don't need to do anything additionally\n   * render is handled by change detection\n   */\n  renderContent() {}\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  AfterViewInit,\n  ComponentRef,\n  Directive,\n  ElementRef,\n  HostBinding,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n} from '@angular/core';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nimport { NbDynamicOverlay, NbDynamicOverlayController } from '../cdk/overlay/dynamic/dynamic-overlay';\nimport { NbDynamicOverlayHandler } from '../cdk/overlay/dynamic/dynamic-overlay-handler';\nimport { NbOverlayConfig, NbOverlayRef } from '../cdk/overlay/mapping';\nimport { NbAdjustableConnectedPositionStrategy, NbAdjustment, NbPosition } from '../cdk/overlay/overlay-position';\nimport { NbTrigger, NbTriggerValues } from '../cdk/overlay/overlay-trigger';\nimport { NbContextMenuComponent } from './context-menu.component';\nimport { NbMenuItem, NbMenuService } from '../menu/menu.service';\n\nexport interface NbContextMenuContext {\n  items: NbMenuItem[];\n  tag: string;\n  position: NbPosition;\n}\n\n/**\n * Full featured context menu directive.\n *\n * @stacked-example(Showcase, context-menu/context-menu-showcase.component)\n *\n * Just pass menu items array:\n *\n * ```html\n * <button [nbContextMenu]=\"items\"></button>\n * ...\n * items = [{ title: 'Profile' }, { title: 'Log out' }];\n * ```\n * ### Installation\n *\n * Import `NbContextMenuModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbContextMenuModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * Also make sure `NbMenuModule` is imported to your `app.module`.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbMenuModule.forRoot(),\n *   ],\n * })\n * export class AppModule { }\n * ```\n *\n * ### Usage\n *\n * If you want to handle context menu clicks you have to pass `nbContextMenuTag`\n * param and register to events using NbMenuService.\n * `NbContextMenu` renders plain `NbMenu` inside, so\n * you have to work with it just like with `NbMenu` component:\n *\n * @stacked-example(Menu item click, context-menu/context-menu-click.component)\n *\n * Context menu has different placements, such as: top, bottom, left and right\n * which can be used as following:\n *\n * ```html\n * <button [nbContextMenu]=\"items\" nbContextMenuPlacement=\"right\"></button>\n * ```\n *\n * ```ts\n * items = [{ title: 'Profile' }, { title: 'Log out' }];\n * ```\n *\n * By default context menu will try to adjust itself to maximally fit viewport\n * and provide the best user experience. It will try to change position of the context menu.\n * If you wanna disable this behaviour just set it falsy value.\n *\n * ```html\n * <button [nbContextMenu]=\"items\" nbContextMenuAdjustment=\"counterclockwise\"></button>\n * ```\n *\n * ```ts\n * items = [{ title: 'Profile' }, { title: 'Log out' }];\n * ```\n * Context menu has a number of triggers which provides an ability to show and hide the component in different ways:\n *\n * - Click mode shows the component when a user clicks on the host element and hides when the user clicks\n * somewhere on the document outside the component.\n * - Hint provides capability to show the component when the user hovers over the host element\n * and hide when the user hovers out of the host.\n * - Hover works like hint mode with one exception - when the user moves mouse from host element to\n * the container element the component remains open, so that it is possible to interact with it content.\n * - Focus mode is applied when user focuses the element.\n * - Noop mode - the component won't react to the user interaction.\n *\n * @stacked-example(Available Triggers, context-menu/context-menu-modes.component.html)\n *\n * Noop mode is especially useful when you need to control Popover programmatically, for example show/hide\n * as a result of some third-party action, like HTTP request or validation check:\n *\n * @stacked-example(Manual Control, context-menu/context-menu-noop.component)\n *\n * @stacked-example(Manual Control, context-menu/context-menu-right-click.component)\n * */\n@Directive({\n    selector: '[nbContextMenu]',\n    providers: [NbDynamicOverlayHandler, NbDynamicOverlay],\n    standalone: false\n})\nexport class NbContextMenuDirective implements NbDynamicOverlayController, OnChanges, AfterViewInit, OnDestroy, OnInit {\n\n  @HostBinding('class.context-menu-host')\n  contextMenuHost = true;\n\n  /**\n   * Position will be calculated relatively host element based on the position.\n   * Can be top, right, bottom and left.\n   * */\n  @Input('nbContextMenuPlacement')\n  get position(): NbPosition {\n    return this._position;\n  }\n  set position(value: NbPosition) {\n    if (value !== this.position) {\n      this._position = value;\n      this.updateOverlayContext();\n    }\n  }\n  _position: NbPosition = NbPosition.BOTTOM;\n\n  /**\n   * Container position will be changes automatically based on this strategy if container can't fit view port.\n   * Set this property to any falsy value if you want to disable automatically adjustment.\n   * Available values: clockwise, counterclockwise.\n   * */\n  @Input('nbContextMenuAdjustment')\n  adjustment: NbAdjustment = NbAdjustment.CLOCKWISE;\n\n  /**\n   * Set NbMenu tag, which helps identify menu when working with NbMenuService.\n   * */\n  @Input('nbContextMenuTag')\n  get tag(): string {\n    return this._tag;\n  }\n  set tag(value: string) {\n    if (value !== this.tag) {\n      this._tag = value;\n      this.updateOverlayContext();\n    }\n  }\n  _tag: string;\n\n  /**\n   * Basic menu items, will be passed to the internal NbMenuComponent.\n   * */\n  @Input('nbContextMenu')\n  get items(): NbMenuItem[] {\n    return this._items;\n  }\n  set items(items: NbMenuItem[]) {\n    this.validateItems(items);\n    this._items = items;\n    this.updateOverlayContext();\n  };\n\n  /**\n   * Describes when the container will be shown.\n   * Available options: `click`, `hover`, `hint`, `focus` and `noop`\n   * */\n  @Input('nbContextMenuTrigger')\n  trigger: NbTrigger = NbTrigger.CLICK;\n  static ngAcceptInputType_trigger: NbTriggerValues;\n\n  @Input('nbContextMenuClass')\n  get contextMenuClass(): string {\n    return this._contextMenuClass;\n  }\n  set contextMenuClass(value: string) {\n    if (value !== this.contextMenuClass) {\n      this._contextMenuClass = value;\n      this.overlayConfig = { panelClass: this.contextMenuClass };\n    }\n  }\n  _contextMenuClass: string = '';\n\n  protected ref: NbOverlayRef;\n  protected container: ComponentRef<any>;\n  protected positionStrategy: NbAdjustableConnectedPositionStrategy;\n  protected overlayConfig: NbOverlayConfig = { panelClass: this.contextMenuClass } ;\n  protected overlayContext: NbContextMenuContext = { items: this.items, tag: this.tag, position: this.position };\n  protected destroy$ = new Subject<void>();\n  private _items: NbMenuItem[] = [];\n\n  private dynamicOverlay: NbDynamicOverlay;\n\n  constructor(private hostRef: ElementRef,\n              private menuService: NbMenuService,\n              private dynamicOverlayHandler: NbDynamicOverlayHandler) {\n  }\n\n  ngOnInit() {\n    this.dynamicOverlayHandler\n      .host(this.hostRef)\n      .componentType(NbContextMenuComponent);\n  }\n\n  ngOnChanges() {\n    this.rebuild();\n  }\n\n  ngAfterViewInit() {\n    this.dynamicOverlay = this.configureDynamicOverlay()\n      .build();\n    this.subscribeOnItemClick();\n  }\n\n  rebuild() {\n    this.dynamicOverlay = this.configureDynamicOverlay()\n      .rebuild();\n  }\n\n  show() {\n    this.dynamicOverlay.show();\n  }\n\n  hide() {\n    this.dynamicOverlay.hide();\n  }\n\n  toggle() {\n    this.dynamicOverlay.toggle();\n  }\n\n  ngOnDestroy() {\n    this.dynamicOverlayHandler.destroy();\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  protected configureDynamicOverlay() {\n    return this.dynamicOverlayHandler\n      .position(this.position)\n      .trigger(this.trigger)\n      .adjustment(this.adjustment)\n      .context(this.overlayContext)\n      .overlayConfig(this.overlayConfig);\n  }\n\n  /*\n   * NbMenuComponent will crash if don't pass menu items to it.\n   * So, we just validating them and throw custom obvious error.\n   * */\n  private validateItems(items: NbMenuItem[]) {\n    if (!items || !items.length) {\n      throw Error(`List of menu items expected, but given: ${items}`)\n    }\n  }\n\n  private subscribeOnItemClick() {\n    this.menuService.onItemClick()\n      .pipe(\n        filter(({ tag }) => tag === this.tag && this.trigger !== NbTrigger.NOOP),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => this.hide());\n  }\n\n  protected updateOverlayContext() {\n    this.overlayContext = { items: this.items, position: this.position, tag: this.tag };\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { NbOverlayModule } from '../cdk/overlay/overlay.module';\nimport { NbContextMenuDirective } from './context-menu.directive';\nimport { NbContextMenuComponent } from './context-menu.component';\nimport { NbMenuModule } from '../menu/menu.module';\n\n\n@NgModule({\n  imports: [CommonModule, NbOverlayModule, NbMenuModule],\n  exports: [NbContextMenuDirective],\n  declarations: [NbContextMenuDirective, NbContextMenuComponent],\n})\nexport class NbContextMenuModule {\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, HostBinding, Input } from '@angular/core';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { NbComponentSize } from '../component-size';\nimport { NbComponentOrCustomStatus } from '../component-status';\n\n/**\n * Progress Bar is a component for indicating progress.\n *\n * Simple usage:\n *\n * ```html\n * <nb-progress-bar [value]=\"50\"></nb-progress-bar>\n * ```\n * ### Installation\n *\n * Import `NbProgressBarModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbProgressBarModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Progress bar accepts property `value` in range 0-100\n * @stacked-example(Progress bar, progress-bar/progress-bar-showcase.component)\n *\n * Progress bar background could be configured by providing a `status` property:\n * @stacked-example(Progress bar status, progress-bar/progress-bar-status.component)\n *\n * Progress bar size (height and font-size) could be configured by providing a `size` property:\n * @stacked-example(Progress bar size, progress-bar/progress-bar-size.component)\n *\n * `displayValue` property shows current value inside progress bar. It's also possible to add custom text inside:\n * @stacked-example(Progress bar value, progress-bar/progress-bar-value.component)\n *\n * Progress bar supports `width` and `background-color` transition:\n * @stacked-example(Progress bar interactive, progress-bar/progress-bar-interactive.component)\n *\n * @styles\n *\n * progress-bar-animation-duration:\n * progress-bar-border-radius:\n * progress-bar-text-font-family:\n * progress-bar-tiny-height:\n * progress-bar-tiny-text-font-size:\n * progress-bar-tiny-text-font-weight:\n * progress-bar-tiny-text-line-height:\n * progress-bar-small-height:\n * progress-bar-small-text-font-size:\n * progress-bar-small-text-font-weight:\n * progress-bar-small-text-line-height:\n * progress-bar-medium-height:\n * progress-bar-medium-text-font-size:\n * progress-bar-medium-text-font-weight:\n * progress-bar-medium-text-line-height:\n * progress-bar-large-height:\n * progress-bar-large-text-font-size:\n * progress-bar-large-text-font-weight:\n * progress-bar-large-text-line-height:\n * progress-bar-giant-height:\n * progress-bar-giant-text-font-size:\n * progress-bar-giant-text-font-weight:\n * progress-bar-giant-text-line-height:\n * progress-bar-basic-background-color:\n * progress-bar-basic-filled-background-color:\n * progress-bar-basic-text-color:\n * progress-bar-primary-background-color:\n * progress-bar-primary-filled-background-color:\n * progress-bar-primary-text-color:\n * progress-bar-success-background-color:\n * progress-bar-success-filled-background-color:\n * progress-bar-success-text-color:\n * progress-bar-info-background-color:\n * progress-bar-info-filled-background-color:\n * progress-bar-info-text-color:\n * progress-bar-warning-background-color:\n * progress-bar-warning-filled-background-color:\n * progress-bar-warning-text-color:\n * progress-bar-danger-background-color:\n * progress-bar-danger-filled-background-color:\n * progress-bar-danger-text-color:\n * progress-bar-control-background-color:\n * progress-bar-control-filled-background-color:\n * progress-bar-control-text-color:\n */\n@Component({\n    selector: 'nb-progress-bar',\n    styleUrls: ['./progress-bar.component.scss'],\n    template: `\n    <div class=\"progress-container\">\n      <div class=\"progress-value\" [style.width.%]=\"value\">\n        <span *ngIf=\"displayValue\">{{ value }}%</span>\n        <ng-content></ng-content>\n      </div>\n    </div>\n  `,\n    standalone: false\n})\nexport class NbProgressBarComponent {\n\n  /**\n   * Progress bar value in percent (0 - 100)\n   */\n  @Input() value: number = 0;\n\n  /**\n   * Progress bar background (`basic` (default), `primary`, `info`, `success`, `warning`, `danger`, `control`)\n   */\n  @Input() status: NbComponentOrCustomStatus = 'basic';\n\n  /**\n   * Progress bar size (`tiny`, `small`, `medium` (default), `large`, `giant`)\n   */\n  @Input() size: NbComponentSize = 'medium';\n\n  /**\n   * Displays value inside progress bar\n   */\n  @Input() displayValue: boolean = false;\n\n  @HostBinding('class.size-tiny')\n  get tiny(): boolean {\n    return this.size === 'tiny';\n  }\n\n  @HostBinding('class.size-small')\n  get small(): boolean {\n    return this.size === 'small';\n  }\n\n  @HostBinding('class.size-medium')\n  get medium(): boolean {\n    return this.size === 'medium';\n  }\n\n  @HostBinding('class.size-large')\n  get large(): boolean {\n    return this.size === 'large';\n  }\n\n  @HostBinding('class.size-giant')\n  get giant(): boolean {\n    return this.size === 'giant';\n  }\n\n  @HostBinding('class.status-primary')\n  get primary(): boolean {\n    return this.status === 'primary';\n  }\n\n  @HostBinding('class.status-success')\n  get success(): boolean {\n    return this.status === 'success';\n  }\n\n  @HostBinding('class.status-info')\n  get info(): boolean {\n    return this.status === 'info';\n  }\n\n  @HostBinding('class.status-warning')\n  get warning(): boolean {\n    return this.status === 'warning';\n  }\n\n  @HostBinding('class.status-danger')\n  get danger(): boolean {\n    return this.status === 'danger';\n  }\n\n  @HostBinding('class.status-basic')\n  get basic(): boolean {\n    return this.status === 'basic';\n  }\n\n  @HostBinding('class.status-control')\n  get control(): boolean {\n    return this.status === 'control';\n  }\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.status)) {\n      return [this.statusService.getStatusClass(this.status)];\n    }\n    return [];\n  }\n\n  constructor(protected statusService: NbStatusService) {\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\nimport { NbProgressBarComponent } from './progress-bar.component';\n\n@NgModule({\n  imports: [\n    NbSharedModule,\n  ],\n  declarations: [NbProgressBarComponent],\n  exports: [NbProgressBarComponent],\n})\nexport class NbProgressBarModule { }\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, Input, HostBinding, Output, EventEmitter } from '@angular/core';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { NbComponentSize } from '../component-size';\nimport { NbComponentOrCustomStatus, NbComponentStatus } from '../component-status';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\n\n\n/**\n * Alert component.\n *\n * Basic alert example:\n * @stacked-example(Showcase, alert/alert-showcase.component)\n *\n * Alert configuration:\n *\n * ```html\n * <nb-alert status=\"success\">\n *   You have been successfully authenticated!\n * </nb-alert>\n * ```\n * ### Installation\n *\n * Import `NbAlertModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbAlertModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Alert could additionally have a `close` button when `closable` property is set:\n * ```html\n * <nb-alert status=\"success\" closable (close)=\"onClose()\">\n *   You have been successfully authenticated!\n * </nb-alert>\n * ```\n *\n * Colored alerts could be simply configured by providing a `status` property:\n * @stacked-example(Alert status, alert/alert-colors.component)\n *\n * It is also possible to assign an `accent` property for a slight alert highlight\n * as well as combine it with `status`:\n * @stacked-example(Alert accent, alert/alert-accents.component)\n *\n * And `outline` property:\n * @stacked-example(Outline Alert, alert/alert-outline.component)\n *\n * @additional-example(Multiple Sizes, alert/alert-sizes.component)\n *\n * @styles\n *\n * alert-border-radius:\n * alert-bottom-margin:\n * alert-padding:\n * alert-scrollbar-color:\n * alert-scrollbar-background-color:\n * alert-scrollbar-width:\n * alert-shadow:\n * alert-text-font-family:\n * alert-text-font-size:\n * alert-text-font-weight:\n * alert-text-line-height:\n * alert-closable-start-padding:\n * alert-tiny-height:\n * alert-small-height:\n * alert-medium-height:\n * alert-medium-padding:\n * alert-large-height:\n * alert-giant-height:\n * alert-basic-background-color:\n * alert-basic-text-color:\n * alert-primary-background-color:\n * alert-primary-text-color:\n * alert-success-background-color:\n * alert-success-text-color:\n * alert-info-background-color:\n * alert-info-text-color:\n * alert-warning-background-color:\n * alert-warning-text-color:\n * alert-danger-background-color:\n * alert-danger-text-color:\n * alert-control-background-color:\n * alert-control-text-color:\n * alert-accent-basic-color:\n * alert-accent-primary-color:\n * alert-accent-info-color:\n * alert-accent-success-color:\n * alert-accent-warning-color:\n * alert-accent-danger-color:\n * alert-accent-control-color:\n * alert-outline-width:\n * alert-outline-basic-color:\n * alert-outline-primary-color:\n * alert-outline-info-color:\n * alert-outline-success-color:\n * alert-outline-warning-color:\n * alert-outline-danger-color:\n * alert-outline-control-color:\n */\n@Component({\n    selector: 'nb-alert',\n    styleUrls: ['./alert.component.scss'],\n    template: `\n    <button *ngIf=\"closable\" type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"onClose()\">\n      <span aria-hidden=\"true\">&times;</span>\n    </button>\n    <ng-content></ng-content>\n  `,\n    standalone: false\n})\nexport class NbAlertComponent {\n\n  /**\n   * Alert size, available sizes:\n   * `tiny`, `small`, `medium`, `large`, `giant`\n   * Unset by default.\n   */\n  @Input() size: '' | NbComponentSize = '';\n\n  /**\n   * Alert status (adds specific styles):\n   * `basic` (default), `primary`, `success`, `info`, `warning`, `danger`, `control`.\n   */\n  @Input() status: NbComponentOrCustomStatus = 'basic';\n\n  /**\n   * Alert accent (color of the top border):\n   * `basic`, `primary`, `success`, `info`, `warning`, `danger`, `control`.\n   * Unset by default.\n   */\n  @Input() accent: '' | NbComponentStatus = '';\n\n  /**\n   * Alert outline (color of the border):\n   * `basic`, `primary`, `success`, `info`, `warning`, `danger`, `control`.\n   * Unset by default.\n   */\n  @Input() outline: '' | NbComponentStatus = '';\n\n  /**\n   * Shows `close` icon\n   */\n  @Input()\n  @HostBinding('class.closable')\n  get closable(): boolean {\n    return this._closable;\n  }\n  set closable(value: boolean) {\n    this._closable = convertToBoolProperty(value);\n  }\n  protected _closable: boolean = false;\n  static ngAcceptInputType_closable: NbBooleanInput;\n\n  /**\n   * Emits when chip is removed\n   * @type EventEmitter<any>\n   */\n  @Output() close = new EventEmitter();\n\n  constructor(protected statusService: NbStatusService) {\n  }\n\n  /**\n   * Emits the removed chip event\n   */\n  onClose() {\n    this.close.emit();\n  }\n\n  @HostBinding('class.size-tiny')\n  get tiny() {\n    return this.size === 'tiny';\n  }\n\n  @HostBinding('class.size-small')\n  get small() {\n    return this.size === 'small';\n  }\n\n  @HostBinding('class.size-medium')\n  get medium() {\n    return this.size === 'medium';\n  }\n\n  @HostBinding('class.size-large')\n  get large() {\n    return this.size === 'large';\n  }\n\n  @HostBinding('class.size-giant')\n  get giant() {\n    return this.size === 'giant';\n  }\n\n  @HostBinding('class.status-primary')\n  get primary() {\n    return this.status === 'primary';\n  }\n\n  @HostBinding('class.status-success')\n  get success() {\n    return this.status === 'success';\n  }\n\n  @HostBinding('class.status-info')\n  get info() {\n    return this.status === 'info';\n  }\n\n  @HostBinding('class.status-warning')\n  get warning() {\n    return this.status === 'warning';\n  }\n\n  @HostBinding('class.status-danger')\n  get danger() {\n    return this.status === 'danger';\n  }\n\n  @HostBinding('class.status-basic')\n  get basic() {\n    return this.status === 'basic';\n  }\n\n  @HostBinding('class.status-control')\n  get control() {\n    return this.status === 'control';\n  }\n\n  @HostBinding('class.accent-primary')\n  get primaryAccent() {\n    return this.accent === 'primary';\n  }\n\n  @HostBinding('class.accent-success')\n  get successAccent() {\n    return this.accent === 'success';\n  }\n\n  @HostBinding('class.accent-info')\n  get infoAccent() {\n    return this.accent === 'info';\n  }\n\n  @HostBinding('class.accent-warning')\n  get warningAccent() {\n    return this.accent === 'warning';\n  }\n\n  @HostBinding('class.accent-danger')\n  get dangerAccent() {\n    return this.accent === 'danger';\n  }\n\n  @HostBinding('class.accent-basic')\n  get basicAccent() {\n    return this.accent === 'basic';\n  }\n\n  @HostBinding('class.accent-control')\n  get controlAccent() {\n    return this.accent === 'control';\n  }\n\n  @HostBinding('class.outline-primary')\n  get primaryOutline() {\n    return this.outline === 'primary';\n  }\n\n  @HostBinding('class.outline-success')\n  get successOutline() {\n    return this.outline === 'success';\n  }\n\n  @HostBinding('class.outline-info')\n  get infoOutline() {\n    return this.outline === 'info';\n  }\n\n  @HostBinding('class.outline-warning')\n  get warningOutline() {\n    return this.outline === 'warning';\n  }\n\n  @HostBinding('class.outline-danger')\n  get dangerOutline() {\n    return this.outline === 'danger';\n  }\n\n  @HostBinding('class.outline-basic')\n  get basicOutline() {\n    return this.outline === 'basic';\n  }\n\n  @HostBinding('class.outline-control')\n  get controlOutline() {\n    return this.outline === 'control';\n  }\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.status)) {\n      return [this.statusService.getStatusClass(this.status)];\n    }\n    return [];\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\n\nimport { NbAlertComponent } from './alert.component';\n\n@NgModule({\n  imports: [\n    NbSharedModule,\n  ],\n  declarations: [\n    NbAlertComponent,\n  ],\n  exports: [\n    NbAlertComponent,\n  ],\n})\nexport class NbAlertModule {\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Injectable } from '@angular/core';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { NbComponentSize } from '../component-size';\nimport { Observable } from 'rxjs';\n\n/*\n * Class used as injection token to provide form element.\n **/\n@Injectable()\nexport abstract class NbFormFieldControl {\n  status$: Observable<NbComponentOrCustomStatus>;\n  size$: Observable<NbComponentSize>;\n  focused$: Observable<boolean>;\n  disabled$: Observable<boolean>;\n  fullWidth$: Observable<boolean>;\n}\n\n/*\n * Optional config to be provided on NbFormFieldControl to alter default settings.\n **/\n@Injectable()\nexport class NbFormFieldControlConfig {\n  supportsPrefix = true;\n  supportsSuffix = true;\n}\n\nexport interface NbFormControlState {\n  status: NbComponentOrCustomStatus;\n  size: NbComponentSize;\n  fullWidth: boolean;\n  focused: boolean;\n  disabled: boolean;\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  Directive,\n  Input,\n  HostBinding,\n  OnDestroy,\n  OnInit,\n  ElementRef,\n  SimpleChanges,\n  OnChanges,\n  DoCheck,\n  AfterViewInit,\n  Renderer2,\n  NgZone,\n} from '@angular/core';\nimport { Subject, BehaviorSubject } from 'rxjs';\nimport { map, finalize, takeUntil } from 'rxjs/operators';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbComponentSize } from '../component-size';\nimport { NbComponentShape } from '../component-shape';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { NbFormFieldControl } from '../form-field/form-field-control';\nimport { NbFocusMonitor } from '../cdk/a11y/a11y.module';\n\n/**\n * Basic input directive.\n *\n * ```html\n * <input nbInput></input>\n * ```\n *\n * ### Installation\n *\n * Import `NbInputModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbInputModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Default input size is `medium`:\n * @stacked-example(Showcase, input/input-showcase.component)\n *\n * Inputs are available in multiple colors using `status` property:\n * @stacked-example(Input Colors, input/input-colors.component)\n *\n * There are three input sizes:\n *\n * @stacked-example(Input Sizes, input/input-sizes.component)\n *\n * Inputs available in different shapes, which could be combined with the other properties:\n * @stacked-example(Input Shapes, input/input-shapes.component)\n *\n * `nbInput` could be applied to the following selectors - `input`, `textarea`:\n * @stacked-example(Input Elements, input/input-types.component)\n *\n * You can add `fullWidth` attribute to make element fill container:\n * @stacked-example(Full width inputs, input/input-full-width.component)\n *\n * Or you can bind control with form controls or ngModel:\n * @stacked-example(Input form binding, input/input-form.component)\n *\n * Use `<nb-form-field>` to add custom content to the input field.\n * First import `NbFormFieldModule`. Then put the input field and custom content into\n * `<nb-form-field>` and add `nbPrefix` or `nbSuffix` directive to the custom content.\n * `nbPrefix` puts content before input and `nbSuffix` after.\n *\n * @stacked-example(Input with icon, form-field/form-field-input.component)\n * @stacked-example(Input with button, form-field/form-field-password.component)\n *\n * @styles\n *\n * input-border-style:\n * input-border-width:\n * input-outline-color:\n * input-outline-width:\n * input-placeholder-text-font-family:\n * input-text-font-family:\n * input-basic-text-color:\n * input-basic-placeholder-text-color:\n * input-basic-background-color:\n * input-basic-border-color:\n * input-basic-focus-background-color:\n * input-basic-focus-border-color:\n * input-basic-hover-background-color:\n * input-basic-hover-border-color:\n * input-basic-disabled-background-color:\n * input-basic-disabled-border-color:\n * input-basic-disabled-text-color:\n * input-basic-disabled-placeholder-text-color:\n * input-primary-text-color:\n * input-primary-placeholder-text-color:\n * input-primary-background-color:\n * input-primary-border-color:\n * input-primary-focus-background-color:\n * input-primary-focus-border-color:\n * input-primary-hover-background-color:\n * input-primary-hover-border-color:\n * input-primary-disabled-background-color:\n * input-primary-disabled-border-color:\n * input-primary-disabled-text-color:\n * input-primary-disabled-placeholder-text-color:\n * input-success-text-color:\n * input-success-placeholder-text-color:\n * input-success-background-color:\n * input-success-border-color:\n * input-success-focus-background-color:\n * input-success-focus-border-color:\n * input-success-hover-background-color:\n * input-success-hover-border-color:\n * input-success-disabled-background-color:\n * input-success-disabled-border-color:\n * input-success-disabled-text-color:\n * input-success-disabled-placeholder-text-color:\n * input-info-text-color:\n * input-info-placeholder-text-color:\n * input-info-background-color:\n * input-info-border-color:\n * input-info-focus-background-color:\n * input-info-focus-border-color:\n * input-info-hover-background-color:\n * input-info-hover-border-color:\n * input-info-disabled-background-color:\n * input-info-disabled-border-color:\n * input-info-disabled-text-color:\n * input-info-disabled-placeholder-text-color:\n * input-warning-text-color:\n * input-warning-placeholder-text-color:\n * input-warning-background-color:\n * input-warning-border-color:\n * input-warning-focus-background-color:\n * input-warning-focus-border-color:\n * input-warning-hover-background-color:\n * input-warning-hover-border-color:\n * input-warning-disabled-background-color:\n * input-warning-disabled-border-color:\n * input-warning-disabled-text-color:\n * input-warning-disabled-placeholder-text-color:\n * input-danger-text-color:\n * input-danger-placeholder-text-color:\n * input-danger-background-color:\n * input-danger-border-color:\n * input-danger-focus-background-color:\n * input-danger-focus-border-color:\n * input-danger-hover-background-color:\n * input-danger-hover-border-color:\n * input-danger-disabled-background-color:\n * input-danger-disabled-border-color:\n * input-danger-disabled-text-color:\n * input-danger-disabled-placeholder-text-color:\n * input-control-text-color:\n * input-control-placeholder-text-color:\n * input-control-background-color:\n * input-control-border-color:\n * input-control-focus-background-color:\n * input-control-focus-border-color:\n * input-control-hover-background-color:\n * input-control-hover-border-color:\n * input-control-disabled-background-color:\n * input-control-disabled-border-color:\n * input-control-disabled-text-color:\n * input-control-disabled-placeholder-text-color:\n * input-rectangle-border-radius:\n * input-semi-round-border-radius:\n * input-round-border-radius:\n * input-tiny-text-font-size:\n * input-tiny-text-font-weight:\n * input-tiny-text-line-height:\n * input-tiny-placeholder-text-font-size:\n * input-tiny-placeholder-text-font-weight:\n * input-tiny-placeholder-text-line-height:\n * input-tiny-padding:\n * input-tiny-max-width:\n * input-small-text-font-size:\n * input-small-text-font-weight:\n * input-small-text-line-height:\n * input-small-placeholder-text-font-size:\n * input-small-placeholder-text-font-weight:\n * input-small-placeholder-text-line-height:\n * input-small-padding:\n * input-small-max-width:\n * input-medium-text-font-size:\n * input-medium-text-font-weight:\n * input-medium-text-line-height:\n * input-medium-placeholder-text-font-size:\n * input-medium-placeholder-text-font-weight:\n * input-medium-placeholder-text-line-height:\n * input-medium-padding:\n * input-medium-max-width:\n * input-large-text-font-size:\n * input-large-text-font-weight:\n * input-large-text-line-height:\n * input-large-placeholder-text-font-size:\n * input-large-placeholder-text-font-weight:\n * input-large-placeholder-text-line-height:\n * input-large-padding:\n * input-large-max-width:\n * input-giant-text-font-size:\n * input-giant-text-font-weight:\n * input-giant-text-line-height:\n * input-giant-placeholder-text-font-size:\n * input-giant-placeholder-text-font-weight:\n * input-giant-placeholder-text-line-height:\n * input-giant-padding:\n * input-giant-max-width:\n */\n@Directive({\n    selector: 'input[nbInput],textarea[nbInput]',\n    providers: [\n        { provide: NbFormFieldControl, useExisting: NbInputDirective },\n    ],\n    standalone: false\n})\nexport class NbInputDirective implements DoCheck, OnChanges, OnInit, AfterViewInit, OnDestroy, NbFormFieldControl {\n\n  protected destroy$ = new Subject<void>();\n\n  /**\n   * Field size modifications. Possible values: `small`, `medium` (default), `large`.\n   */\n  @Input()\n  fieldSize: NbComponentSize = 'medium';\n\n  /**\n   * Field status (adds specific styles):\n   * `basic`, `primary`, `info`, `success`, `warning`, `danger`, `control`\n   */\n  @Input() status: NbComponentOrCustomStatus = 'basic';\n\n  /**\n   * Field shapes modifications. Possible values: `rectangle` (default), `round`, `semi-round`.\n   */\n  @Input()\n  shape: NbComponentShape = 'rectangle';\n\n  /**\n   * If set element will fill container. `false` by default.\n   */\n  @Input()\n  @HostBinding('class.input-full-width')\n  get fullWidth(): boolean {\n    return this._fullWidth;\n  }\n  set fullWidth(value: boolean) {\n    this._fullWidth = convertToBoolProperty(value);\n  }\n  private _fullWidth = false;\n  static ngAcceptInputType_fullWidth: NbBooleanInput;\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.status)) {\n      return [this.statusService.getStatusClass(this.status)];\n    }\n    return [];\n  }\n\n  constructor(\n    protected elementRef: ElementRef<HTMLInputElement | HTMLTextAreaElement>,\n    protected focusMonitor: NbFocusMonitor,\n    protected renderer: Renderer2,\n    protected zone: NgZone,\n    protected statusService: NbStatusService,\n  ) {\n  }\n\n  ngDoCheck() {\n    const isDisabled = this.elementRef.nativeElement.disabled;\n    if (isDisabled !== this.disabled$.value) {\n      this.disabled$.next(isDisabled);\n    }\n  }\n\n  ngOnChanges({ status, fieldSize, fullWidth }: SimpleChanges) {\n    if (status) {\n      this.status$.next(this.status);\n    }\n    if (fieldSize) {\n      this.size$.next(this.fieldSize);\n    }\n    if (fullWidth) {\n      this.fullWidth$.next(this.fullWidth);\n    }\n  }\n\n  ngOnInit() {\n    this.focusMonitor.monitor(this.elementRef)\n      .pipe(\n        map(origin => !!origin),\n        finalize(() => this.focusMonitor.stopMonitoring(this.elementRef)),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(this.focused$);\n  }\n\n  ngAfterViewInit() {\n    // TODO: #2254\n    this.zone.runOutsideAngular(() => setTimeout(() => {\n      this.renderer.addClass(this.elementRef.nativeElement, 'nb-transition');\n    }));\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n  }\n\n  @HostBinding('class.size-tiny')\n  get tiny() {\n    return this.fieldSize === 'tiny';\n  }\n\n  @HostBinding('class.size-small')\n  get small() {\n    return this.fieldSize === 'small';\n  }\n\n  @HostBinding('class.size-medium')\n  get medium() {\n    return this.fieldSize === 'medium';\n  }\n\n  @HostBinding('class.size-large')\n  get large() {\n    return this.fieldSize === 'large';\n  }\n\n  @HostBinding('class.size-giant')\n  get giant() {\n    return this.fieldSize === 'giant';\n  }\n\n  @HostBinding('class.status-primary')\n  get primary() {\n    return this.status === 'primary';\n  }\n\n  @HostBinding('class.status-info')\n  get info() {\n    return this.status === 'info';\n  }\n\n  @HostBinding('class.status-success')\n  get success() {\n    return this.status === 'success';\n  }\n\n  @HostBinding('class.status-warning')\n  get warning() {\n    return this.status === 'warning';\n  }\n\n  @HostBinding('class.status-danger')\n  get danger() {\n    return this.status === 'danger';\n  }\n\n  @HostBinding('class.status-basic')\n  get basic() {\n    return this.status === 'basic';\n  }\n\n  @HostBinding('class.status-control')\n  get control() {\n    return this.status === 'control';\n  }\n\n  @HostBinding('class.shape-rectangle')\n  get rectangle() {\n    return this.shape === 'rectangle';\n  }\n\n  @HostBinding('class.shape-semi-round')\n  get semiRound() {\n    return this.shape === 'semi-round';\n  }\n\n  @HostBinding('class.shape-round')\n  get round() {\n    return this.shape === 'round';\n  }\n\n  /*\n   * @docs-private\n   **/\n  status$ = new BehaviorSubject<NbComponentOrCustomStatus>(this.status);\n\n  /*\n   * @docs-private\n   **/\n  size$ = new BehaviorSubject<NbComponentSize>(this.fieldSize);\n\n  /*\n   * @docs-private\n   **/\n  focused$ = new BehaviorSubject<boolean>(false);\n\n  /*\n   * @docs-private\n   **/\n  disabled$ = new BehaviorSubject<boolean>(false);\n\n  /*\n   * @docs-private\n   **/\n  fullWidth$ = new BehaviorSubject<boolean>(this.fullWidth);\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  Output,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { NbComponentOrCustomStatus } from '../component-status';\n\n/**\n * Chat form component.\n *\n * Show a message form with a send message button.\n *\n * ```ts\n * <nb-chat-form showButton=\"true\" buttonIcon=\"nb-send\">\n * </nb-chat-form>\n * ```\n *\n * When `[dropFiles]=\"true\"` handles files drag&drop with a file preview.\n *\n * Drag & drop available for files and images:\n * @stacked-example(Drag & Drop Chat, chat/chat-drop.component)\n *\n * New message could be tracked outside by using `(send)` output.\n *\n * ```ts\n * <nb-chat-form (send)=\"onNewMessage($event)\">\n * </nb-chat-form>\n *\n * // ...\n *\n * onNewMessage({ message: string, files: any[] }) {\n *   this.service.sendToServer(message, files);\n * }\n * ```\n */\n@Component({\n    selector: 'nb-chat-form',\n    template: `\n    <div class=\"dropped-files\" *ngIf=\"droppedFiles?.length\">\n      <ng-container *ngFor=\"let file of droppedFiles\">\n        <div *ngIf=\"file.urlStyle\" [style.background-image]=\"file.urlStyle\">\n          <span class=\"remove\" (click)=\"removeFile(file)\">&times;</span>\n        </div>\n\n        <div *ngIf=\"!file.urlStyle\">\n          <nb-icon icon=\"file-text-outline\" pack=\"nebular-essentials\"></nb-icon>\n          <span class=\"remove\" (click)=\"removeFile(file)\">&times;</span>\n        </div>\n      </ng-container>\n    </div>\n    <div class=\"message-row\">\n      <input\n        nbInput\n        fullWidth\n        [status]=\"getInputStatus()\"\n        (focus)=\"inputFocus = true\"\n        (blur)=\"inputFocus = false\"\n        (mouseenter)=\"inputHover = true\"\n        (mouseleave)=\"inputHover = false\"\n        [(ngModel)]=\"message\"\n        (ngModelChange)=\"onModelChange($event)\"\n        [class.with-button]=\"showButton\"\n        type=\"text\"\n        placeholder=\"{{ fileOver ? dropFilePlaceholder : messagePlaceholder }}\"\n        (keyup.enter)=\"sendMessage()\"\n      />\n      <button\n        nbButton\n        [status]=\"getButtonStatus()\"\n        *ngIf=\"showButton\"\n        [class.with-icon]=\"!buttonTitle\"\n        (click)=\"sendMessage()\"\n        class=\"send-button\"\n      >\n        <nb-icon *ngIf=\"!buttonTitle; else title\" [icon]=\"buttonIcon\" pack=\"nebular-essentials\"></nb-icon>\n        <ng-template #title>{{ buttonTitle }}</ng-template>\n      </button>\n    </div>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbChatFormComponent {\n  status: NbComponentOrCustomStatus = 'basic';\n  inputFocus: boolean = false;\n  inputHover: boolean = false;\n\n  droppedFiles: any[] = [];\n  imgDropTypes = ['image/png', 'image/jpeg', 'image/gif'];\n\n  /**\n   * Predefined message text\n   * @type {string}\n   */\n  @Input() message: string = '';\n\n  /**\n   * Message placeholder text\n   * @type {string}\n   */\n  @Input() messagePlaceholder: string = 'Type a message';\n  /**\n   * Send button title\n   * @type {string}\n   */\n  @Input() buttonTitle: string = '';\n\n  /**\n   * Send button icon, shown if `buttonTitle` is empty\n   * @type {string}\n   */\n  @Input() buttonIcon: string = 'paper-plane-outline';\n\n  /**\n   * Show send button\n   * @type {boolean}\n   */\n  @Input() showButton: boolean = true;\n\n  /**\n   * Show send button\n   * @type {boolean}\n   */\n  @Input() dropFiles: boolean = false;\n\n  /**\n   * File drop placeholder text\n   * @type {string}\n   */\n  @Input() dropFilePlaceholder: string = 'Drop file to send';\n\n  /**\n   *\n   * @type {EventEmitter<{ message: string, files: File[] }>}\n   */\n  @Output() send = new EventEmitter<{ message: string; files: File[] }>();\n\n  /**\n   * Emits when message input value has been changed\n   * @type {EventEmitter<string>}\n   */\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  @Output() onInputChange = new EventEmitter<string>();\n\n  @HostBinding('class.file-over') fileOver = false;\n\n  constructor(protected cd: ChangeDetectorRef, protected domSanitizer: DomSanitizer) {}\n\n  @HostListener('drop', ['$event'])\n  onDrop(event: any) {\n    if (this.dropFiles) {\n      event.preventDefault();\n      event.stopPropagation();\n\n      this.fileOver = false;\n      if (event.dataTransfer && event.dataTransfer.files) {\n        for (const file of event.dataTransfer.files) {\n          const res = file;\n\n          if (this.imgDropTypes.includes(file.type)) {\n            const fr = new FileReader();\n            fr.onload = (e: any) => {\n              res.src = e.target.result;\n              res.urlStyle = this.domSanitizer.bypassSecurityTrustStyle(`url(${res.src})`);\n              this.cd.detectChanges();\n            };\n\n            fr.readAsDataURL(file);\n          }\n          this.droppedFiles.push(res);\n        }\n      }\n    }\n  }\n\n  removeFile(file) {\n    const index = this.droppedFiles.indexOf(file);\n    if (index >= 0) {\n      this.droppedFiles.splice(index, 1);\n    }\n  }\n\n  @HostListener('dragover', ['$event'])\n  onDragOver(event: DragEvent) {\n    event.preventDefault();\n    event.stopPropagation();\n    if (this.dropFiles) {\n      this.fileOver = true;\n    }\n  }\n\n  @HostListener('dragleave', ['$event'])\n  onDragLeave(event: DragEvent) {\n    event.preventDefault();\n    event.stopPropagation();\n    if (this.dropFiles) {\n      this.fileOver = false;\n    }\n  }\n\n  sendMessage() {\n    if (this.droppedFiles.length || String(this.message).trim().length) {\n      this.send.emit({ message: this.message, files: this.droppedFiles });\n      this.message = '';\n      this.droppedFiles = [];\n    }\n  }\n\n  setStatus(status: NbComponentOrCustomStatus): void {\n    if (this.status !== status) {\n      this.status = status;\n      this.cd.detectChanges();\n    }\n  }\n\n  getInputStatus(): NbComponentOrCustomStatus {\n    if (this.fileOver) {\n      return this.getHighlightStatus();\n    }\n\n    if (this.inputFocus || this.inputHover) {\n      return this.status;\n    }\n\n    return 'basic';\n  }\n\n  getButtonStatus(): NbComponentOrCustomStatus {\n    return this.getHighlightStatus();\n  }\n\n  protected getHighlightStatus(): NbComponentOrCustomStatus {\n    if (this.status === 'basic' || this.status === 'control') {\n      return 'primary';\n    }\n\n    return this.status;\n  }\n\n  onModelChange(value: string): void {\n    this.onInputChange.emit(value);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Injectable } from '@angular/core';\n\nimport { NbChatCustomMessageDirective } from './chat-custom-message.directive';\n\n/**\n * `NbCustomMessageService` is used to store instances of `NbChatCustomMessageDirective`s which\n * were provided in the chat component.\n */\n@Injectable()\nexport class NbChatCustomMessageService {\n  protected readonly customMessages = new Map<string, NbChatCustomMessageDirective>();\n\n  register(type: string, instance: NbChatCustomMessageDirective): void {\n    this.customMessages.set(type, instance);\n  }\n\n  unregister(type: string): boolean {\n    return this.customMessages.delete(type);\n  }\n\n  getInstance(type: string): NbChatCustomMessageDirective | undefined {\n    return this.customMessages.get(type);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n/**\n * Chat message component.\n */\n@Component({\n    selector: 'nb-chat-message-text',\n    template: `\n    <p class=\"sender\" *ngIf=\"sender || date\">{{ sender }} <time>{{ date  | date: dateFormat }}</time></p>\n    <p class=\"text\" *ngIf=\"message\">{{ message }}</p>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbChatMessageTextComponent {\n\n  /**\n   * Message sender\n   * @type {string}\n   */\n  @Input() sender: string;\n\n  /**\n   * Message sender\n   * @type {string}\n   */\n  @Input() message: string;\n\n  /**\n   * Message send date\n   * @type {Date}\n   */\n  @Input() date: Date;\n\n  /**\n   * Message send date format, default 'shortTime'\n   * @type {string}\n   */\n  @Input() dateFormat: string = 'shortTime';\n\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nexport interface NbChatMessageFileIconPreview {\n  url: string;\n  icon: string;\n}\nexport interface NbChatMessageFileImagePreview {\n  url: string;\n  type: string;\n}\nexport type NbChatMessageFile = NbChatMessageFileIconPreview | NbChatMessageFileImagePreview;\n\n/**\n * Chat message component.\n */\n@Component({\n    selector: 'nb-chat-message-file',\n    template: `\n    <nb-chat-message-text [sender]=\"sender\" [date]=\"date\" [dateFormat]=\"dateFormat\" [message]=\"message\">\n      {{ message }}\n    </nb-chat-message-text>\n\n    <ng-container *ngIf=\"readyFiles?.length > 1\">\n      <div class=\"message-content-group\">\n        <a *ngFor=\"let file of readyFiles\" [href]=\"file.url\" target=\"_blank\">\n          <nb-icon [icon]=\"file.icon\" *ngIf=\"!file.urlStyle && file.icon\"></nb-icon>\n          <div *ngIf=\"file.urlStyle\" [style.background-image]=\"file.urlStyle\"></div>\n        </a>\n      </div>\n    </ng-container>\n\n    <ng-container *ngIf=\"readyFiles?.length === 1\">\n      <a [href]=\"readyFiles[0].url\" target=\"_blank\">\n        <nb-icon [icon]=\"readyFiles[0].icon\" *ngIf=\"!readyFiles[0].urlStyle && readyFiles[0].icon\"></nb-icon>\n        <div *ngIf=\"readyFiles[0].urlStyle\" [style.background-image]=\"readyFiles[0].urlStyle\"></div>\n      </a>\n    </ng-container>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbChatMessageFileComponent {\n\n  readyFiles: any[];\n\n  /**\n   * Message sender\n   * @type {string}\n   */\n  @Input() message: string;\n\n  /**\n   * Message sender\n   * @type {string}\n   */\n  @Input() sender: string;\n\n  /**\n   * Message send date\n   * @type {Date}\n   */\n  @Input() date: Date;\n\n  /**\n   * Message send date format, default 'shortTime'\n   * @type {string}\n   */\n  @Input() dateFormat: string = 'shortTime';\n\n  /**\n   * Message file path\n   * @type {Date}\n   */\n  @Input()\n  set files(files: NbChatMessageFile[]) {\n    this.readyFiles = (files || []).map((file: any) => {\n      const isImage = this.isImage(file);\n      return {\n        ...file,\n        urlStyle: isImage && this.domSanitizer.bypassSecurityTrustStyle(`url(${file.url})`),\n        isImage: isImage,\n      };\n    });\n    this.cd.detectChanges();\n  }\n\n  constructor(protected cd: ChangeDetectorRef, protected domSanitizer: DomSanitizer) {\n  }\n\n\n  isImage(file: NbChatMessageFile): boolean {\n    const type = (file as NbChatMessageFileImagePreview).type;\n    if (type) {\n      return [ 'image/png', 'image/jpeg', 'image/gif' ].includes(type);\n    }\n    return false;\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n/**\n * Chat message component.\n */\n@Component({\n    selector: 'nb-chat-message-quote',\n    template: `\n    <p class=\"sender\" *ngIf=\"sender || date\">{{ sender }} <time>{{ date | date: dateFormat }}</time></p>\n    <p class=\"quote\">\n      {{ quote }}\n    </p>\n    <nb-chat-message-text [message]=\"message\">\n      {{ message }}\n    </nb-chat-message-text>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbChatMessageQuoteComponent {\n\n  /**\n   * Message sender\n   * @type {string}\n   */\n  @Input() message: string;\n\n  /**\n   * Message sender\n   * @type {string}\n   */\n  @Input() sender: string;\n\n  /**\n   * Message send date\n   * @type {Date}\n   */\n  @Input() date: Date;\n\n /**\n   * Message send date format, default 'shortTime'\n   * @type {string}\n   */\n  @Input() dateFormat: string = 'shortTime';\n\n  /**\n   * Quoted message\n   * @type {Date}\n   */\n  @Input() quote: string;\n\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nexport class NbChatOptions {\n  messageGoogleMapKey?: string;\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { NbChatOptions } from './chat.options';\n\n/**\n * Chat message component.\n */\n@Component({\n    selector: 'nb-chat-message-map',\n    template: `\n    <nb-chat-message-file [files]=\"[file]\" [message]=\"message\" [sender]=\"sender\" [date]=\"date\"\n     [dateFormat]=\"dateFormat\"></nb-chat-message-file>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbChatMessageMapComponent {\n\n  /**\n   * Message sender\n   * @type {string}\n   */\n  @Input() message: string;\n\n  /**\n   * Message sender\n   * @type {string}\n   */\n  @Input() sender: string;\n\n  /**\n   * Message send date\n   * @type {Date}\n   */\n  @Input() date: Date;\n\n  /**\n   * Message send date format, default 'shortTime'\n   * @type {string}\n   */\n  @Input() dateFormat: string = 'shortTime';\n\n  /**\n   * Map latitude\n   * @type {number}\n   */\n  @Input() latitude: number;\n\n  /**\n   * Map longitude\n   * @type {number}\n   */\n  @Input() longitude: number;\n\n  get file() {\n    return {\n      // eslint-disable-next-line max-len\n      url: `https://maps.googleapis.com/maps/api/staticmap?center=${this.latitude},${this.longitude}&zoom=12&size=400x400&key=${this.mapKey}`,\n      type: 'image/png',\n      icon: 'location',\n    };\n  }\n\n  mapKey: string;\n\n  constructor(options: NbChatOptions) {\n    this.mapKey = options.messageGoogleMapKey;\n  }\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\nimport { SafeStyle } from '@angular/platform-browser';\n\n@Component({\n    selector: 'nb-chat-avatar',\n    template: `\n    <ng-container *ngIf=\"!avatarStyle\">\n      {{ initials }}\n    </ng-container>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbChatAvatarComponent {\n\n  @Input() initials: string;\n\n  @Input()\n  @HostBinding('style.background-image')\n  avatarStyle: SafeStyle;\n\n  @HostBinding('class.avatar')\n  readonly avatarClass = true;\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { ChangeDetectionStrategy, Component, HostBinding, Input, TemplateRef } from '@angular/core';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\n\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbChatMessageFile } from './chat-message-file.component';\nimport { NbChatCustomMessageService } from './chat-custom-message.service';\nimport { NbChatCustomMessageDirective } from './chat-custom-message.directive';\n\n/**\n * Chat message component.\n *\n * Multiple message types are available through a `type` property, such as\n * - text - simple text message\n * - file - could be a file preview or a file icon\n * if multiple files are provided grouped files are shown\n * - quote - quotes a message with specific quote styles\n * - map - shows a google map picture by provided [latitude] and [longitude] properties\n *\n * @stacked-example(Available Types, chat/chat-message-types-showcase.component)\n *\n * Message with attached files:\n * ```html\n * <nb-chat-message\n *   type=\"file\"\n *   [files]=\"[ { url: '...' } ]\"\n *   message=\"Hello world!\">\n * </nb-chat-message>\n * ```\n *\n * Map message:\n * ```html\n * <nb-chat-message\n *   type=\"map\"\n *   [latitude]=\"53.914\"\n *   [longitude]=\"27.59\"\n *   message=\"Here I am\">\n * </nb-chat-message>\n * ```\n *\n * @styles\n *\n * chat-message-background:\n * chat-message-text-color:\n * chat-message-reply-background-color:\n * chat-message-reply-text-color:\n * chat-message-avatar-background-color:\n * chat-message-sender-text-color:\n * chat-message-quote-background-color:\n * chat-message-quote-text-color:\n * chat-message-file-text-color:\n * chat-message-file-background-color:\n */\n@Component({\n    selector: 'nb-chat-message',\n    template: `\n    <nb-chat-avatar *ngIf=\"notReply\" [initials]=\"getInitials()\" [avatarStyle]=\"avatarStyle\"> </nb-chat-avatar>\n\n    <div class=\"message\">\n      <ng-container [ngSwitch]=\"type\" *ngIf=\"_isBuiltInMessageType(); else customTemplate\">\n        <nb-chat-message-file\n          *ngSwitchCase=\"'file'\"\n          [sender]=\"sender\"\n          [date]=\"date\"\n          [dateFormat]=\"dateFormat\"\n          [message]=\"message\"\n          [files]=\"files\"\n        >\n        </nb-chat-message-file>\n\n        <nb-chat-message-quote\n          *ngSwitchCase=\"'quote'\"\n          [sender]=\"sender\"\n          [date]=\"date\"\n          [dateFormat]=\"dateFormat\"\n          [message]=\"message\"\n          [quote]=\"quote\"\n        >\n        </nb-chat-message-quote>\n\n        <nb-chat-message-map\n          *ngSwitchCase=\"'map'\"\n          [sender]=\"sender\"\n          [date]=\"date\"\n          [message]=\"message\"\n          [latitude]=\"latitude\"\n          [longitude]=\"longitude\"\n        >\n        </nb-chat-message-map>\n\n        <nb-chat-message-text\n          *ngSwitchDefault\n          [sender]=\"sender\"\n          [date]=\"date\"\n          [dateFormat]=\"dateFormat\"\n          [message]=\"message\"\n        >\n        </nb-chat-message-text>\n      </ng-container>\n    </div>\n\n    <ng-template #customTemplate>\n      <nb-chat-message-text [sender]=\"sender\" [date]=\"date\" [dateFormat]=\"dateFormat\" [message]=\"message\">\n      </nb-chat-message-text>\n      <div\n        [class.nb-custom-message]=\"_areDefaultStylesEnabled()\"\n        [class.nb-custom-message-no-space]=\"_addNoSpaceClass\"\n        [class.nb-custom-message-reply]=\"_addReplyClass\"\n        [class.nb-custom-message-not-reply]=\"_addNotReplyClass\"\n        [class.nb-custom-message-full-width]=\"!_areDefaultStylesEnabled()\"\n      >\n        <ng-container [ngTemplateOutlet]=\"_getTemplate()\" [ngTemplateOutletContext]=\"_getTemplateContext()\">\n        </ng-container>\n      </div>\n    </ng-template>\n  `,\n    animations: [\n        trigger('flyInOut', [\n            state('in', style({ transform: 'translateX(0)' })),\n            transition('void => *', [style({ transform: 'translateX(-100%)' }), animate(80)]),\n            transition('* => void', [animate(80, style({ transform: 'translateX(100%)' }))]),\n        ]),\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbChatMessageComponent {\n  protected readonly builtInMessageTypes: string[] = ['text', 'file', 'map', 'quote'];\n\n  avatarStyle: SafeStyle;\n\n  get _addReplyClass(): boolean {\n    return this._areDefaultStylesEnabled() && this.reply;\n  }\n\n  get _addNotReplyClass(): boolean {\n    return this._areDefaultStylesEnabled() && this.notReply;\n  }\n\n  get _addNoSpaceClass(): boolean {\n    return this._areDefaultStylesEnabled() && !this.message;\n  }\n\n  @HostBinding('@flyInOut')\n  get flyInOut() {\n    return true;\n  }\n\n  @HostBinding('class.not-reply')\n  get notReply() {\n    return !this.reply;\n  }\n\n  /**\n   * Determines if a message is a reply\n   */\n  @Input()\n  @HostBinding('class.reply')\n  get reply(): boolean {\n    return this._reply;\n  }\n  set reply(value: boolean) {\n    this._reply = convertToBoolProperty(value);\n  }\n  protected _reply: boolean = false;\n  static ngAcceptInputType_reply: NbBooleanInput;\n\n  /**\n   * Message sender\n   * @type {string}\n   */\n  @Input() message: string;\n\n  /**\n   * Message sender\n   * @type {string}\n   */\n  @Input() sender: string;\n\n  /**\n   * Message send date\n   * @type {Date}\n   */\n  @Input() date: Date;\n\n  /**\n   * Message send date format, default 'shortTime'\n   * @type {string}\n   */\n  @Input() dateFormat: string;\n\n  /**\n   * Array of files `{ url: 'file url', icon: 'file icon class' }`\n   */\n  @Input() files: NbChatMessageFile[];\n\n  /**\n   * Quoted message text\n   * @type {string}\n   */\n  @Input() quote: string;\n\n  /**\n   * Map latitude\n   * @type {number}\n   */\n  @Input() latitude: number;\n\n  /**\n   * Map longitude\n   * @type {number}\n   */\n  @Input() longitude: number;\n\n  /**\n   * Message send avatar\n   * @type {string}\n   */\n  @Input()\n  set avatar(value: string) {\n    this.avatarStyle = value ? this.domSanitizer.bypassSecurityTrustStyle(`url(${value})`) : null;\n  }\n\n  /**\n   * Message type, available options `text|file|map|quote`\n   * @type {string}\n   */\n  @Input() type: string;\n\n  /**\n   * Data which will be set as custom message template context\n   * @type {any}\n   */\n  @Input() customMessageData: any;\n\n  constructor(protected domSanitizer: DomSanitizer, protected customMessageService: NbChatCustomMessageService) {}\n\n  getInitials(): string {\n    if (this.sender) {\n      const names = this.sender.split(' ');\n      return names\n        .map((n) => n.charAt(0))\n        .splice(0, 2)\n        .join('')\n        .toUpperCase();\n    }\n    return '';\n  }\n\n  _isBuiltInMessageType(): boolean {\n    // Unset type defaults to \"text\" type\n    return this.type == null || this.builtInMessageTypes.includes(this.type);\n  }\n\n  _getTemplate(): TemplateRef<any> {\n    const customMessage = this.getCustomMessage(this.type);\n    return customMessage.templateRef;\n  }\n\n  _getTemplateContext(): { $implicit: any; isReply: boolean } {\n    return { $implicit: this.customMessageData, isReply: this.reply };\n  }\n\n  _areDefaultStylesEnabled(): boolean {\n    const customMessageDirective = this.getCustomMessage(this.type);\n    return !customMessageDirective.noStyles;\n  }\n\n  protected getCustomMessage(type: string): NbChatCustomMessageDirective {\n    const customMessageDirective = this.customMessageService.getInstance(type);\n    if (!customMessageDirective) {\n      throw new Error(\n        `nb-chat: Can't find template for custom type '${type}'. ` +\n          `Make sure you provide it in the chat component with *nbCustomMessage='${type}'.`,\n      );\n    }\n    return customMessageDirective;\n  }\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n    selector: `[nbChatTitle]`,\n    standalone: false\n})\nexport class NbChatTitleDirective {\n  @Input() context: Object = {};\n\n  constructor(public templateRef: TemplateRef<any>) {}\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  Component,\n  Input,\n  HostBinding,\n  ViewChild,\n  ElementRef,\n  ContentChildren,\n  QueryList,\n  AfterViewInit,\n  ContentChild,\n  SimpleChanges,\n  AfterContentInit,\n  OnChanges,\n} from '@angular/core';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { NbComponentSize } from '../component-size';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbChatFormComponent } from './chat-form.component';\nimport { NbChatMessageComponent } from './chat-message.component';\nimport { NbChatCustomMessageService } from './chat-custom-message.service';\nimport { NbChatTitleDirective } from './chat-title.directive';\n\n/**\n * Conversational UI collection - a set of components for chat-like UI construction.\n *\n * Main features:\n * - different message types support (text, image, file, file group, map, etc)\n * - drag & drop for images and files with preview\n * - different UI styles\n * - custom action buttons (coming soon)\n *\n * Here's a complete example build in a bot-like app. Type `help` to be able to receive different message types.\n * Enjoy the conversation and the beautiful UI.\n * @stacked-example(Showcase, chat/chat-showcase.component)\n *\n * Basic chat configuration and usage:\n * ```ts\n * <nb-chat title=\"Nebular Conversational UI\">\n *       <nb-chat-message *ngFor=\"let msg of messages\"\n *                        [type]=\"msg.type\"\n *                        [message]=\"msg.text\"\n *                        [reply]=\"msg.reply\"\n *                        [sender]=\"msg.user.name\"\n *                        [date]=\"msg.date\"\n *                        [files]=\"msg.files\"\n *                        [quote]=\"msg.quote\"\n *                        [latitude]=\"msg.latitude\"\n *                        [longitude]=\"msg.longitude\"\n *                        [avatar]=\"msg.user.avatar\">\n *   </nb-chat-message>\n *\n *   <nb-chat-form (send)=\"sendMessage($event)\" [dropFiles]=\"true\">\n *   </nb-chat-form>\n * </nb-chat>\n * ```\n * ### Installation\n *\n * Import `NbChatModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbChatModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n *\n * If you need to provide an API key for a `map` message type (which is required by Google Maps)\n * you may use `NbChatModule.forRoot({ ... })` call if this is a global app configuration\n * or `NbChatModule.forChild({ ... })` for a feature module configuration:\n *\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbChatModule.forRoot({ messageGoogleMapKey: 'MAP_KEY' }),\n *   ],\n * })\n * export class AppModule { }\n * ```\n *\n * ### Usage\n *\n * There are three main components:\n * ```ts\n * <nb-chat>\n * </nb-chat> // chat container\n *\n * <nb-chat-form>\n * </nb-chat-form> // chat form with drag&drop files feature\n *\n * <nb-chat-message>\n * </nb-chat-message> // chat message, available multiple types\n * ```\n *\n * You could provide a title template via the `nbChatTitle` directive. It overrides `title` input.\n * @stacked-example(Custom template as a title, chat/chat-template-title.component)\n *\n * Two users conversation showcase:\n * @stacked-example(Conversation, chat/chat-conversation-showcase.component)\n *\n * Chat UI is also available in different colors by specifying a `[status]` input:\n *\n * @stacked-example(Colored Chat, chat/chat-colors.component)\n *\n * Also it is possible to configure sizes through `[size]` input:\n *\n * @stacked-example(Chat Sizes, chat/chat-sizes.component)\n *\n * # Custom message types\n *\n * Besides built-in message types, you could provide custom ones with their own template to render.\n * As an example, let's add the `link` message type.\n * <br>\n * First, you need to provide a template for the `link` message type:\n * ```html\n * <nb-chat>\n *   <a *nbCustomMessage=\"'link'\" href=\"https://example.com\">example.com</a>\n * </nb-chat>\n * ```\n * Then, add the `nb-chat-message` component with the `link` type:\n * ```html\n * <nb-chat>\n *   <a *nbCustomMessage=\"'link'\" href=\"https://example.com\">example.com</a>\n *   <nb-chat-message type=\"link\"></nb-chat-message>\n * </nb-chat>\n * ```\n *\n * <div class=\"note note-warning\">\n *   <div class=\"note-title\">Important!</div>\n *   <div class=\"note-body\">\n *     Custom chat messages must be defined before the `nb-chat-message`.\n *   </div>\n * </div>\n *\n * Custom message templates could have arbitrary data associated with them. Let's extract hardcoded link\n * href and text. To pass some data to the custom message template, use the `customMessageData` input\n * of the `nb-chat-message` component:\n * ```html\n * ...\n * <nb-chat-message type=\"link\" [customMessageData]=\"{ href: 'https://example.com', text: 'example.com' }\">\n * </nb-chat-message>\n * ...\n * ```\n * When `customMessageData` is set, this object would become a template context and you'll be able\n * to reference it via `let varName` syntax:\n * ```html\n * <a *nbCustomMessage=\"'link'; let data\" [href]=\"data.href\">{{ data.text }}</a>\n * ```\n *\n * That's it, full example will look like this:\n * ```html\n * <nb-chat title=\"Nebular Conversational UI\">\n *   <a *nbCustomMessage=\"'link'; let data\" [href]=\"data.href\">{{ data.text }}</a>\n *   <nb-chat-message type=\"link\" [customMessageData]=\"{ href: 'https://example.com', text: 'example.com' }\">\n *   </nb-chat-message>\n * </nb-chat>\n * ```\n *\n * If you want to style your custom template from the ground up you could turn off generic message styling\n * (such as round borders, color, background, etc.) via the `noStyles` input:\n * ```html\n *   <div *nbCustomMessage=\"'my-custom-type'; noStyles: true\">...</div>\n * ```\n * When you decide to use your own styles, the `isReply` property of the custom message template context\n * would come in handy. This property allows you to determine whether the message is a reply or not.\n * For example, to change link text color (as replies have a different background):\n * ```html\n * <a *nbCustomMessage=\"'link'; let data; let isReply=isReply\"\n *    [href]=\"data.href\"\n *    [class.link-control]=\"!isReply\">\n *   {{ data.label }}\n * </a>\n * ```\n *\n * Below, you could find a more complex example with multiple custom message types:\n * @stacked-example(Custom message, chat/chat-custom-message.component)\n *\n * @styles\n *\n * chat-background-color:\n * chat-border:\n * chat-border-radius:\n * chat-shadow:\n * chat-padding:\n * chat-scrollbar-color:\n * chat-scrollbar-background-color:\n * chat-scrollbar-width:\n * chat-text-color:\n * chat-text-font-family:\n * chat-text-font-size:\n * chat-text-font-weight:\n * chat-text-line-height:\n * chat-header-text-font-family:\n * chat-header-text-font-size:\n * chat-header-text-font-weight:\n * chat-header-text-line-height:\n * chat-tiny-height:\n * chat-small-height:\n * chat-medium-height:\n * chat-large-height:\n * chat-giant-height:\n * chat-basic-background-color:\n * chat-basic-text-color:\n * chat-primary-background-color:\n * chat-primary-text-color:\n * chat-success-background-color:\n * chat-success-text-color:\n * chat-info-background-color:\n * chat-info-text-color:\n * chat-warning-background-color:\n * chat-warning-text-color:\n * chat-danger-background-color:\n * chat-danger-text-color:\n * chat-control-background-color:\n * chat-control-text-color:\n * chat-divider-color:\n * chat-divider-style:\n * chat-divider-width:\n * chat-message-background:\n * chat-message-text-color:\n * chat-message-reply-background-color:\n * chat-message-reply-text-color:\n * chat-message-avatar-background-color:\n * chat-message-sender-text-color:\n * chat-message-quote-background-color:\n * chat-message-quote-text-color:\n * chat-message-file-text-color:\n * chat-message-file-background-color:\n */\n@Component({\n    selector: 'nb-chat',\n    styleUrls: ['./chat.component.scss'],\n    template: `\n    <div class=\"header\">\n      <ng-container\n        *ngIf=\"titleTemplate; else textTitleTemplate\"\n        [ngTemplateOutlet]=\"titleTemplate.templateRef\"\n        [ngTemplateOutletContext]=\"{ $implicit: titleTemplate.context }\"\n      >\n      </ng-container>\n      <ng-template #textTitleTemplate>\n        {{ title }}\n      </ng-template>\n    </div>\n\n    <div class=\"scrollable\" #scrollable>\n      <div class=\"messages\">\n        <ng-content select=\"nb-chat-message\"></ng-content>\n        <p class=\"no-messages\" *ngIf=\"!messages?.length\">{{ noMessagesPlaceholder }}</p>\n      </div>\n    </div>\n    <div class=\"form\">\n      <ng-content select=\"nb-chat-form\"></ng-content>\n    </div>\n  `,\n    providers: [NbChatCustomMessageService],\n    standalone: false\n})\nexport class NbChatComponent implements OnChanges, AfterContentInit, AfterViewInit {\n  @Input() title: string;\n\n  /**\n   * Chat size, available sizes:\n   * `tiny`, `small`, `medium`, `large`, `giant`\n   */\n  @Input() size: NbComponentSize;\n\n  /**\n   * Chat status color (adds specific styles):\n   * `basic` (default), `primary`, `success`, `info`, `warning`, `danger`, `control`.\n   */\n  @Input() status: NbComponentOrCustomStatus = 'basic';\n\n  @Input() noMessagesPlaceholder: string = 'No messages yet.';\n\n  /**\n   * Scroll chat to the bottom of the list when a new message arrives\n   */\n  @Input()\n  get scrollBottom(): boolean {\n    return this._scrollBottom;\n  }\n  set scrollBottom(value: boolean) {\n    this._scrollBottom = convertToBoolProperty(value);\n  }\n  protected _scrollBottom: boolean = true;\n  static ngAcceptInputType_scrollBottom: NbBooleanInput;\n\n  @ViewChild('scrollable') scrollable: ElementRef;\n  @ContentChildren(NbChatMessageComponent) messages: QueryList<NbChatMessageComponent>;\n  @ContentChild(NbChatFormComponent) chatForm: NbChatFormComponent;\n  @ContentChild(NbChatTitleDirective) titleTemplate: NbChatTitleDirective;\n\n  constructor(protected statusService: NbStatusService) {}\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('status' in changes) {\n      this.updateFormStatus();\n    }\n  }\n\n  ngAfterContentInit() {\n    this.updateFormStatus();\n  }\n\n  ngAfterViewInit() {\n    this.messages.changes.subscribe((messages) => {\n      this.messages = messages;\n      this.updateView();\n    });\n\n    this.updateView();\n  }\n\n  updateView() {\n    if (this.scrollBottom) {\n      this.scrollListBottom();\n    }\n  }\n\n  scrollListBottom() {\n    this.scrollable.nativeElement.scrollTop = this.scrollable.nativeElement.scrollHeight;\n  }\n\n  protected updateFormStatus(): void {\n    if (this.chatForm) {\n      this.chatForm.setStatus(this.status);\n    }\n  }\n\n  @HostBinding('class.size-tiny')\n  get tiny(): boolean {\n    return this.size === 'tiny';\n  }\n\n  @HostBinding('class.size-small')\n  get small(): boolean {\n    return this.size === 'small';\n  }\n\n  @HostBinding('class.size-medium')\n  get medium(): boolean {\n    return this.size === 'medium';\n  }\n\n  @HostBinding('class.size-large')\n  get large(): boolean {\n    return this.size === 'large';\n  }\n\n  @HostBinding('class.size-giant')\n  get giant(): boolean {\n    return this.size === 'giant';\n  }\n\n  @HostBinding('class.status-primary')\n  get primary(): boolean {\n    return this.status === 'primary';\n  }\n\n  @HostBinding('class.status-success')\n  get success(): boolean {\n    return this.status === 'success';\n  }\n\n  @HostBinding('class.status-info')\n  get info(): boolean {\n    return this.status === 'info';\n  }\n\n  @HostBinding('class.status-warning')\n  get warning(): boolean {\n    return this.status === 'warning';\n  }\n\n  @HostBinding('class.status-danger')\n  get danger(): boolean {\n    return this.status === 'danger';\n  }\n\n  @HostBinding('class.status-basic')\n  get basic(): boolean {\n    return this.status === 'basic';\n  }\n\n  @HostBinding('class.status-control')\n  get control(): boolean {\n    return this.status === 'control';\n  }\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.status)) {\n      return [this.statusService.getStatusClass(this.status)];\n    }\n    return [];\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\nimport { NbSharedModule } from '../shared/shared.module';\nimport { NbInputDirective } from './input.directive';\n\nconst NB_INPUT_COMPONENTS = [\n  NbInputDirective,\n];\n\n@NgModule({\n  imports: [ NbSharedModule ],\n  declarations: NB_INPUT_COMPONENTS,\n  exports: NB_INPUT_COMPONENTS,\n})\nexport class NbInputModule {}\n","import { Directive, Input, OnDestroy, OnInit, TemplateRef } from '@angular/core';\n\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbChatCustomMessageService } from './chat-custom-message.service';\n\nfunction throwCustomMessageTypeIsRequired(): void {\n  throw new Error('[nbCustomMessage]: custom message type is required.');\n}\n\n/**\n * `[nbCustomMessage]` directive should be used as a structural directive or should be applied to the `ng-template`:\n *\n * ```html\n * <div *nbCustomMessage=\"'my-custom-type'; let data\">\n *   <!-- custom message -->\n * </div>\n * ```\n * or\n * ```html\n * <ng-template nbCustomMessage='my-custom-type' let-data>\n *   <!-- custom message -->\n * </ng-template>\n * ```\n */\n@Directive({\n    selector: `[nbCustomMessage]`,\n    standalone: false\n})\nexport class NbChatCustomMessageDirective implements OnInit, OnDestroy {\n  /**\n   * Defines a message type which should rendered with the custom message template.\n   * @type {string}\n   */\n  @Input()\n  get nbCustomMessage(): string {\n    return this._type;\n  }\n  set nbCustomMessage(value: string) {\n    this._type = value;\n  }\n  protected _type: string;\n\n  get type(): string {\n    return this._type;\n  }\n\n  /**\n   * Disables generic message styles, such as round corners, text color, background, etc.,\n   * so a custom message could be styled from the ground up.\n   *\n   * @type {boolean}\n   */\n  @Input()\n  set nbCustomMessageNoStyles(value: boolean) {\n    this._noStyles = convertToBoolProperty(value);\n  }\n  get nbCustomMessageNoStyles(): boolean {\n    return this._noStyles;\n  }\n  protected _noStyles: boolean = false;\n  static ngAcceptInputType_noStyles: NbBooleanInput;\n\n  get noStyles(): boolean {\n    return this.nbCustomMessageNoStyles;\n  }\n\n  constructor(public templateRef: TemplateRef<any>, protected customMessageService: NbChatCustomMessageService) {}\n\n  ngOnInit() {\n    if (!this._type) {\n      throwCustomMessageTypeIsRequired();\n    }\n    this.customMessageService.register(this.type, this);\n  }\n\n  ngOnDestroy() {\n    this.customMessageService.unregister(this.type);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\nimport { NbButtonModule } from '../button/button.module';\nimport { NbInputModule } from '../input/input.module';\nimport { NbIconModule } from '../icon/icon.module';\n\nimport { NbChatComponent } from './chat.component';\nimport { NbChatMessageComponent } from './chat-message.component';\nimport { NbChatFormComponent } from './chat-form.component';\nimport { NbChatMessageTextComponent } from './chat-message-text.component';\nimport { NbChatMessageFileComponent } from './chat-message-file.component';\nimport { NbChatMessageQuoteComponent } from './chat-message-quote.component';\nimport { NbChatMessageMapComponent } from './chat-message-map.component';\nimport { NbChatOptions } from './chat.options';\nimport { NbChatAvatarComponent } from './chat-avatar.component';\nimport { NbChatCustomMessageDirective } from './chat-custom-message.directive';\nimport { NbChatTitleDirective } from './chat-title.directive';\n\nconst NB_CHAT_COMPONENTS = [\n  NbChatComponent,\n  NbChatMessageComponent,\n  NbChatFormComponent,\n  NbChatMessageTextComponent,\n  NbChatMessageFileComponent,\n  NbChatMessageQuoteComponent,\n  NbChatMessageMapComponent,\n  NbChatAvatarComponent,\n];\n\nconst NB_CHAT_DIRECTIVES = [NbChatCustomMessageDirective, NbChatTitleDirective];\n\n@NgModule({\n  imports: [NbSharedModule, NbIconModule, NbInputModule, NbButtonModule],\n  declarations: [...NB_CHAT_COMPONENTS, ...NB_CHAT_DIRECTIVES],\n  exports: [...NB_CHAT_COMPONENTS, ...NB_CHAT_DIRECTIVES],\n})\nexport class NbChatModule {\n  static forRoot(options?: NbChatOptions): ModuleWithProviders<NbChatModule> {\n    return {\n      ngModule: NbChatModule,\n      providers: [{ provide: NbChatOptions, useValue: options || {} }],\n    };\n  }\n\n  static forChild(options?: NbChatOptions): ModuleWithProviders<NbChatModule> {\n    return {\n      ngModule: NbChatModule,\n      providers: [{ provide: NbChatOptions, useValue: options || {} }],\n    };\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, HostBinding, Input } from '@angular/core';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { NbComponentSize } from '../component-size';\nimport { NbComponentOrCustomStatus } from '../component-status';\n\n/**\n * Styled spinner component\n *\n * @styles\n *\n * spinner-text-color:\n * spinner-text-font-family:\n * spinner-text-font-size:\n * spinner-text-font-weight:\n * spinner-text-line-height:\n * spinner-basic-background-color:\n * spinner-basic-circle-filled-color:\n * spinner-basic-circle-empty-color:\n * spinner-primary-background-color:\n * spinner-primary-circle-filled-color:\n * spinner-primary-circle-empty-color:\n * spinner-info-background-color:\n * spinner-info-circle-filled-color:\n * spinner-info-circle-empty-color:\n * spinner-success-background-color:\n * spinner-success-circle-filled-color:\n * spinner-success-circle-empty-color:\n * spinner-warning-background-color:\n * spinner-warning-circle-filled-color:\n * spinner-warning-circle-empty-color:\n * spinner-danger-background-color:\n * spinner-danger-circle-filled-color:\n * spinner-danger-circle-empty-color:\n * spinner-control-background-color:\n * spinner-control-circle-filled-color:\n * spinner-control-circle-empty-color:\n * spinner-height-tiny:\n * spinner-height-small:\n * spinner-height-medium:\n * spinner-height-large:\n * spinner-height-giant:\n */\n@Component({\n    selector: 'nb-spinner',\n    template: `\n    <span class=\"spin-circle\"></span>\n    <span class=\"message\" *ngIf=\"message\">{{ message }}</span>\n  `,\n    styleUrls: ['./spinner.component.scss'],\n    standalone: false\n})\nexport class NbSpinnerComponent {\n\n  /**\n   * Loading text that is shown near the icon\n   * @type string\n   */\n  @Input()\n  message: string = 'Loading...';\n\n  /**\n   * Spinner size, available sizes:\n   * tiny, small, medium, large, giant\n   * @param {string} value\n   */\n  @Input()\n  size: NbComponentSize = 'medium';\n\n  /**\n   * Spinner status (adds specific styles):\n   * `basic`, `primary`, `info`, `success`, `warning`, `danger`, `control`.\n   */\n  @Input() status: NbComponentOrCustomStatus = 'basic';\n\n  @HostBinding('class.size-tiny')\n  get tiny() {\n    return this.size === 'tiny';\n  }\n\n  @HostBinding('class.size-small')\n  get small() {\n    return this.size === 'small';\n  }\n\n  @HostBinding('class.size-medium')\n  get medium() {\n    return this.size === 'medium';\n  }\n\n  @HostBinding('class.size-large')\n  get large() {\n    return this.size === 'large';\n  }\n\n  @HostBinding('class.size-giant')\n  get giant() {\n    return this.size === 'giant';\n  }\n\n  @HostBinding('class.status-primary')\n  get primary() {\n    return this.status === 'primary';\n  }\n\n  @HostBinding('class.status-info')\n  get info() {\n    return this.status === 'info';\n  }\n\n  @HostBinding('class.status-success')\n  get success() {\n    return this.status === 'success';\n  }\n\n  @HostBinding('class.status-warning')\n  get warning() {\n    return this.status === 'warning';\n  }\n\n  @HostBinding('class.status-danger')\n  get danger() {\n    return this.status === 'danger';\n  }\n\n  @HostBinding('class.status-basic')\n  get basic() {\n    return this.status === 'basic';\n  }\n\n  @HostBinding('class.status-control')\n  get control() {\n    return this.status === 'control';\n  }\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.status)) {\n      return [this.statusService.getStatusClass(this.status)];\n    }\n    return [];\n  }\n\n  constructor(protected statusService: NbStatusService) {\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ComponentFactoryResolver,\n  ComponentFactory,\n  ComponentRef,\n  Directive,\n  ElementRef,\n  Input,\n  OnInit,\n  Renderer2,\n  ViewContainerRef,\n  HostBinding,\n} from '@angular/core';\n\nimport { NbComponentSize } from '../component-size';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { NbSpinnerComponent } from './spinner.component';\n\n/**\n * Styled spinner directive\n *\n * @stacked-example(Spinner Showcase, spinner/spinner-card.component)\n *\n *\n * ```ts\n * <nb-card [nbSpinner]=\"loading\" nbSpinnerStatus=\"danger\">\n *   <nb-card-body>Card Content</nb-card-body>\n * </nb-card>\n * ```\n *\n * ### Installation\n *\n * Import `NbSpinnerModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbSpinnerModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Could be colored using `status` property\n *\n * @stacked-example(Spinner Colors, spinner/spinner-colors.component)\n *\n * Available in different sizes with `size` property:\n *\n * @stacked-example(Spinner Sizes, spinner/spinner-sizes.component)\n *\n * It is also possible to place it into the button:\n * @stacked-example(Buttons with spinner, spinner/spinner-button.component)\n *\n * Or tabs:\n * @stacked-example(Spinner in tabs, spinner/spinner-tabs.component)\n */\n@Directive({\n    selector: '[nbSpinner]',\n    standalone: false\n})\nexport class NbSpinnerDirective implements OnInit {\n\n  private shouldShow = false;\n  spinner: ComponentRef<NbSpinnerComponent>;\n  componentFactory: ComponentFactory<NbSpinnerComponent>;\n\n  /**\n   * Spinner message shown next to the icon\n   * @type {string}\n   */\n  @Input('nbSpinnerMessage') spinnerMessage: string;\n\n  /**\n   * Spinner status color\n   * `basic`, `primary`, `info`, `success`, `warning`, `danger`, `control`.\n   */\n  @Input('nbSpinnerStatus') spinnerStatus: NbComponentOrCustomStatus = 'basic';\n\n  /**\n   * Spinner size. Possible values: `tiny`, `small`, `medium` (default), `large`, `giant`\n   */\n  @Input('nbSpinnerSize') spinnerSize: NbComponentSize = 'medium';\n\n  /**\n   * Directive value - show or hide spinner\n   * @param {boolean} val\n   */\n  @Input('nbSpinner')\n  set nbSpinner(val: boolean) {\n    if (this.componentFactory) {\n      if (val) {\n        this.show();\n      } else {\n        this.hide();\n      }\n    } else {\n      this.shouldShow = val;\n    }\n  }\n\n  @HostBinding('class.nb-spinner-container') isSpinnerExist = false;\n\n  constructor(private directiveView: ViewContainerRef,\n              private componentFactoryResolver: ComponentFactoryResolver,\n              private renderer: Renderer2,\n              private directiveElement: ElementRef) {\n  }\n\n  ngOnInit() {\n    this.componentFactory = this.componentFactoryResolver.resolveComponentFactory(NbSpinnerComponent);\n    if (this.shouldShow) {\n      this.show();\n    }\n  }\n\n  hide() {\n    if (this.isSpinnerExist) {\n      this.directiveView.remove();\n      this.isSpinnerExist = false;\n    }\n  }\n\n  show() {\n    if (!this.isSpinnerExist) {\n      this.spinner = this.directiveView.createComponent<NbSpinnerComponent>(this.componentFactory);\n      this.setInstanceInputs(this.spinner.instance);\n      this.spinner.changeDetectorRef.detectChanges();\n      this.renderer.appendChild(this.directiveElement.nativeElement, this.spinner.location.nativeElement);\n      this.isSpinnerExist = true;\n    }\n  }\n\n  setInstanceInputs(instance: NbSpinnerComponent) {\n    instance.message = this.spinnerMessage\n    typeof this.spinnerStatus !== 'undefined' && (instance.status = this.spinnerStatus);\n    typeof this.spinnerSize !== 'undefined' && (instance.size = this.spinnerSize);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\nimport { NbSharedModule } from '../shared/shared.module';\nimport { NbSpinnerComponent } from './spinner.component';\nimport { NbSpinnerDirective } from './spinner.directive';\n\n\n@NgModule({\n  imports: [\n    NbSharedModule,\n  ],\n  exports: [NbSpinnerComponent, NbSpinnerDirective],\n  declarations: [NbSpinnerComponent, NbSpinnerDirective],\n})\nexport class NbSpinnerModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const NB_STEPPER = new InjectionToken('Nebular Stepper Component');\n","import { Component, Inject, Input, TemplateRef, ViewChild } from '@angular/core';\nimport { NbStepperComponent } from './stepper.component';\nimport { NB_STEPPER } from './stepper-tokens';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\n\n/**\n * Component intended to be used within  the `<nb-stepper>` component.\n * Container for a step\n */\n@Component({\n    selector: 'nb-step',\n    template: `\n    <ng-template>\n      <ng-content></ng-content>\n    </ng-template>\n  `,\n    standalone: false\n})\nexport class NbStepComponent {\n\n  protected stepper: NbStepperComponent;\n\n  // TODO static must be false as of Angular 9.0.0, issues/1514\n  /**\n   * Step content\n   *\n   * @type {TemplateRef}\n   */\n  @ViewChild(TemplateRef, { static: true }) content: TemplateRef<any>;\n\n  /**\n   * Top level abstract control of the step\n   */\n  @Input() stepControl?: { valid: boolean | null, reset: () => void };\n\n  /**\n   * Step label\n   *\n   * @type {string|TemplateRef<any>}\n   */\n  @Input() label: string|TemplateRef<any>;\n\n  /**\n   * Whether step will be displayed in wizard\n   *\n   * @type {boolean}\n   */\n  @Input()\n  get hidden(): boolean {\n    return this._hidden;\n  }\n  set hidden(value: boolean) {\n    this._hidden = convertToBoolProperty(value);\n  }\n  protected _hidden = false;\n  static ngAcceptInputType_hidden: NbBooleanInput;\n\n  /**\n   * Check that label is a TemplateRef.\n   *\n   * @return boolean\n   * */\n  get isLabelTemplate(): boolean {\n    return this.label instanceof TemplateRef;\n  }\n\n  /**\n   * Whether step is marked as completed.\n   *\n   * @type {boolean}\n   */\n  @Input()\n  get completed(): boolean {\n    return this._completed || this.isCompleted;\n  }\n  set completed(value: boolean) {\n    this._completed = convertToBoolProperty(value);\n  }\n  protected _completed: boolean = false;\n  static ngAcceptInputType_completed: NbBooleanInput;\n\n  protected get isCompleted() {\n    return this.stepControl ? this.stepControl.valid && this.interacted : this.interacted;\n  }\n\n  interacted = false;\n\n  constructor(@Inject(NB_STEPPER) stepper) {\n    this.stepper = stepper;\n  }\n\n  /**\n   * Mark step as selected\n   * */\n  select(): void {\n    this.stepper.selected = this;\n  }\n\n  /**\n   * Reset step and stepControl state\n   * */\n  reset(): void {\n    this.interacted = false;\n    if (this.stepControl) {\n      this.stepControl.reset();\n    }\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  Component,\n  ContentChildren,\n  EventEmitter,\n  HostBinding,\n  Input,\n  Output,\n  QueryList,\n  TemplateRef,\n} from '@angular/core';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NB_STEPPER } from './stepper-tokens';\nimport { NbStepComponent } from './step.component';\n\nexport type NbStepperOrientation = 'vertical' | 'horizontal';\n\nexport interface NbStepChangeEvent {\n  index: number;\n  step: NbStepComponent;\n  previouslySelectedIndex: number;\n  previouslySelectedStep: NbStepComponent;\n}\n\n/**\n * Stepper component\n *\n * @stacked-example(Showcase, stepper/stepper-showcase.component)\n *\n * ### Installation\n *\n * Import `NbStepperModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbStepperModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * If step label is string you can pass it as `label` attribute. Otherwise ng-template should be used:\n * ```html\n * // ...\n * <nb-stepper orientation=\"horizontal\">\n *   <nb-step label=\"step number one\">\n *       // ... step content here\n *   </nb-step>\n *   <nb-step label=\"stepLabel\">\n *       <ng-template #stepLabel>\n *           <div>\n *               step number two\n *           </div>\n *       </ng-template>\n *       // ... step content here\n *   </nb-step>\n * </nb-stepper>\n * ```\n *\n * When linear mode enabled user can't move forward unless current step is complete.\n * @stacked-example(Linear, stepper/stepper-linear.component)\n *\n * Specify `[stepControl]=\"form\"` and stepper allow go to the next step only if form is valid.\n * You can disable it via `linear` mode setting.\n * ```html\n * // ...\n * <nb-stepper  orientation=\"horizontal\">\n *   <nb-step label=\"step number one\" [stepControl]=\"form\">\n *     <form [formGroup]=\"form\">\n *       // ...\n *     </form>\n *   </nb-step>\n *    // ...\n * </nb-stepper>\n * ```\n *\n * @stacked-example(Validation, stepper/stepper-validation.component)\n *\n * Stepper component has two layout options - `vertical` & `horizontal`\n * @stacked-example(Vertical, stepper/stepper-vertical.component)\n *\n * `disableStepNavigation` disables navigation by clicking on steps, so user can navigate only using\n * 'nbStepperPrevious' and 'nbStepperNext' buttons.\n * @stacked-example(Disabled steps navigation, stepper/stepper-disabled-step-nav.component)\n *\n * Use `stepChange` output to listening to step change event. This event emits `NbStepChangeEvent` object.\n * @stacked-example(Step change event, stepper/stepper-step-change-event.component)\n *\n * @styles\n *\n * stepper-step-text-color:\n * stepper-step-text-font-family:\n * stepper-step-text-font-size:\n * stepper-step-text-font-weight:\n * stepper-step-text-line-height:\n * stepper-step-active-text-color:\n * stepper-step-completed-text-color:\n * stepper-step-index-border-color:\n * stepper-step-index-border-style:\n * stepper-step-index-border-width:\n * stepper-step-index-border-radius:\n * stepper-step-index-width:\n * stepper-step-index-active-border-color:\n * stepper-step-index-completed-background-color:\n * stepper-step-index-completed-border-color:\n * stepper-step-index-completed-text-color:\n * stepper-connector-background-color:\n * stepper-connector-completed-background-color:\n * stepper-horizontal-connector-margin:\n * stepper-vertical-connector-margin:\n * stepper-step-content-padding:\n */\n@Component({\n    selector: 'nb-stepper',\n    styleUrls: ['./stepper.component.scss'],\n    templateUrl: './stepper.component.html',\n    providers: [{ provide: NB_STEPPER, useExisting: NbStepperComponent }],\n    standalone: false\n})\nexport class NbStepperComponent {\n  /**\n   * Selected step index\n   */\n  @Input()\n  get selectedIndex() {\n    return this._selectedIndex;\n  }\n  set selectedIndex(index: number) {\n    if (!this.steps) {\n      this._selectedIndex = index;\n      return;\n    }\n\n    this.markCurrentStepInteracted();\n    if (this.canBeSelected(index)) {\n      const previouslySelectedIndex = this._selectedIndex;\n      const previouslySelectedStep = this.selected;\n      this._selectedIndex = index;\n\n      this.stepChange.emit({\n        index: this.selectedIndex,\n        step: this.selected,\n        previouslySelectedIndex,\n        previouslySelectedStep,\n      });\n    }\n  }\n\n  protected _selectedIndex: number = 0;\n\n  /**\n   * Disables navigation by clicking on steps. False by default\n   * @param {boolean} value\n   */\n  @Input()\n  set disableStepNavigation(value: boolean) {\n    this._disableStepNavigation = convertToBoolProperty(value);\n  }\n  get disableStepNavigation(): boolean {\n    return this._disableStepNavigation;\n  }\n  protected _disableStepNavigation: boolean = false;\n  static ngAcceptInputType_disableStepNavigation: NbBooleanInput;\n\n  /**\n   * Selected step component\n   */\n  @Input()\n  get selected(): NbStepComponent {\n    return this.steps ? this.steps.toArray()[this.selectedIndex] : undefined;\n  }\n  set selected(step: NbStepComponent) {\n    if (!this.steps) {\n      return;\n    }\n    this.selectedIndex = this.steps.toArray().indexOf(step);\n  }\n\n  /**\n   * Stepper orientation - `horizontal`|`vertical`\n   */\n  @Input() orientation: NbStepperOrientation = 'horizontal';\n\n  /**\n   * Allow moving forward only if the current step is complete\n   * @default true\n   */\n  @Input()\n  set linear(value: boolean) {\n    this._linear = convertToBoolProperty(value);\n  }\n  get linear(): boolean {\n    return this._linear;\n  }\n  protected _linear = true;\n  static ngAcceptInputType_linear: NbBooleanInput;\n\n  /**\n   * Emits when step changed\n   * @type {EventEmitter<NbStepChangeEvent>}\n   */\n  @Output() stepChange = new EventEmitter<NbStepChangeEvent>();\n\n  @HostBinding('class.vertical')\n  get vertical() {\n    return this.orientation === 'vertical';\n  }\n  @HostBinding('class.horizontal')\n  get horizontal() {\n    return this.orientation === 'horizontal';\n  }\n\n  @ContentChildren(NbStepComponent) steps: QueryList<NbStepComponent>;\n\n  /**\n   * Navigate to next step\n   * */\n  next() {\n    this.selectedIndex = Math.min(this.selectedIndex + 1, this.steps.length - 1);\n  }\n\n  /**\n   * Navigate to previous step\n   * */\n  previous() {\n    this.selectedIndex = Math.max(this.selectedIndex - 1, 0);\n  }\n\n  /**\n   * Select step if navigation is not disabled\n   * @param { NbStepComponent } step\n   */\n  changeStep(step: NbStepComponent) {\n    if (!this.disableStepNavigation) {\n      step.select();\n    }\n  }\n\n  /**\n   * Reset stepper and stepControls to initial state\n   * */\n  reset() {\n    const previouslySelectedIndex = this.selectedIndex;\n    const previouslySelectedStep = this.selected;\n\n    this._selectedIndex = 0;\n    this.steps.forEach((step) => step.reset());\n\n    this.stepChange.emit({\n      index: this.selectedIndex,\n      step: this.selected,\n      previouslySelectedIndex,\n      previouslySelectedStep,\n    });\n  }\n\n  isStepSelected(step: NbStepComponent) {\n    return this.selected === step;\n  }\n\n  /*\n   * @docs-private\n   **/\n  getStepTemplate(step: NbStepComponent): TemplateRef<any> | null {\n    if (step.isLabelTemplate) {\n      return step.label as TemplateRef<any>;\n    }\n    return null;\n  }\n\n  protected isStepValid(index: number): boolean {\n    return this.steps.toArray()[index].completed;\n  }\n\n  protected canBeSelected(indexToCheck: number): boolean {\n    const noSteps = !this.steps || this.steps.length === 0;\n    if (noSteps || indexToCheck < 0 || indexToCheck >= this.steps.length || indexToCheck === this.selectedIndex) {\n      return false;\n    }\n\n    if (indexToCheck <= this.selectedIndex || !this.linear) {\n      return true;\n    }\n\n    let isAllStepsValid = true;\n    for (let i = this.selectedIndex; i < indexToCheck; i++) {\n      if (!this.isStepValid(i)) {\n        isAllStepsValid = false;\n        break;\n      }\n    }\n    return isAllStepsValid;\n  }\n\n  protected markCurrentStepInteracted() {\n    if (this.selected) {\n      this.selected.interacted = true;\n    }\n  }\n}\n","<ng-template><ng-content select=\"nb-step\"></ng-content></ng-template>\n<div class=\"header\">\n  <ng-container *ngFor=\"let step of steps; let index = index; let first = first\">\n\n    <div *ngIf=\"!first && !step.hidden\"\n         [class.connector-past]=\"index <= selectedIndex\"\n         class=\"connector\"></div>\n\n    <div *ngIf=\"!step.hidden\" class=\"step\"\n         [class.selected]=\"isStepSelected(step)\"\n         [class.completed]=\"!isStepSelected(step) && step.completed\"\n         [class.noninteractive]=\"disableStepNavigation\"\n         (click)=\"changeStep(step)\">\n      <div class=\"label-index\">\n        <span *ngIf=\"!step.completed || isStepSelected(step)\">{{ index + 1 }}</span>\n        <nb-icon *ngIf=\"!isStepSelected(step) && step.completed\" icon=\"checkmark-outline\" pack=\"nebular-essentials\">\n        </nb-icon>\n      </div>\n      <div class=\"label\">\n        <ng-container *ngIf=\"step.isLabelTemplate\">\n          <ng-container *ngTemplateOutlet=\"getStepTemplate(step)\"></ng-container>\n        </ng-container>\n        <span *ngIf=\"!step.isLabelTemplate\">{{ step.label }}</span>\n      </div>\n    </div>\n  </ng-container>\n</div>\n<div class=\"step-content\">\n  <ng-container [ngTemplateOutlet]=\"selected?.content\"></ng-container>\n</div>\n","import { NbStepperComponent } from './stepper.component';\nimport { Directive, HostBinding, HostListener, Input } from '@angular/core';\n\n@Directive({\n    selector: 'button[nbStepperNext]',\n    standalone: false\n})\nexport class NbStepperNextDirective {\n\n  @Input() @HostBinding('attr.type') type: string = 'submit';\n\n  constructor(protected stepper: NbStepperComponent) {\n  }\n\n  @HostListener('click')\n  onClick() {\n    this.stepper.next();\n  }\n}\n\n@Directive({\n    selector: 'button[nbStepperPrevious]',\n    standalone: false\n})\nexport class NbStepperPreviousDirective {\n\n  @Input() @HostBinding('attr.type') type: string = 'button';\n\n  constructor(protected stepper: NbStepperComponent) {\n  }\n\n  @HostListener('click')\n  onClick() {\n    this.stepper.previous();\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\nimport { NbStepperComponent } from './stepper.component';\nimport { NbStepComponent } from './step.component';\nimport { NbStepperNextDirective, NbStepperPreviousDirective } from './stepper-button.directive';\nimport { NbIconModule } from '../icon/icon.module';\n\n@NgModule({\n  imports: [\n    NbSharedModule,\n    NbIconModule,\n  ],\n  declarations: [\n    NbStepperComponent,\n    NbStepComponent,\n    NbStepperNextDirective,\n    NbStepperPreviousDirective,\n  ],\n  exports: [\n    NbStepperComponent,\n    NbStepComponent,\n    NbStepperNextDirective,\n    NbStepperPreviousDirective,\n  ],\n})\nexport class NbStepperModule {\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, ChangeDetectionStrategy, Input } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\n\n/**\n * An accordion allows to toggle the display of sections of content\n *\n * Basic example\n * @stacked-example(Showcase, accordion/accordion-showcase.component)\n *\n * ```ts\n * <nb-accordion>\n *  <nb-accordion-item>\n *   <nb-accordion-item-header>Product Details</nb-accordion-item-header>\n *   <nb-accordion-item-body>\n *     Item Content\n *   </nb-accordion-item-body>\n *  </nb-accordion-item>\n * </nb-accordion>\n * ```\n * ### Installation\n *\n * Import `NbAccordionModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbAccordionModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * With `multi` mode accordion can have multiple items expanded:\n * @stacked-example(Multiple expanded items, accordion/accordion-multi.component)\n *\n * `NbAccordionItemComponent` has several methods, for example it is possible to trigger item click/toggle:\n * @stacked-example(Expand API, accordion/accordion-toggle.component)\n *\n * @styles\n *\n * accordion-border-radius:\n * accordion-padding:\n * accordion-shadow:\n * accordion-header-text-color:\n * accordion-header-text-font-family:\n * accordion-header-text-font-size:\n * accordion-header-text-font-weight:\n * accordion-header-text-line-height:\n * accordion-header-disabled-text-color:\n * accordion-header-border-color:\n * accordion-header-border-style:\n * accordion-header-border-width:\n * accordion-item-background-color:\n * accordion-item-text-color:\n * accordion-item-text-font-family:\n * accordion-item-text-font-size:\n * accordion-item-text-font-weight:\n * accordion-item-text-line-height:\n */\n@Component({\n    selector: 'nb-accordion',\n    template: `\n    <ng-content select=\"nb-accordion-item\"></ng-content>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbAccordionComponent {\n\n  openCloseItems = new Subject<boolean>();\n\n  /**\n   *  Allow multiple items to be expanded at the same time.\n   * @type {boolean}\n   */\n  @Input('multi')\n  get multi(): boolean {\n    return this.multiValue;\n  }\n  set multi(val: boolean) {\n    this.multiValue = convertToBoolProperty(val);\n  }\n  static ngAcceptInputType_multi: NbBooleanInput;\n\n  private multiValue = false;\n\n  /**\n   * Opens all enabled accordion items.\n   */\n  openAll() {\n    if (this.multi) {\n      this.openCloseItems.next(false);\n    }\n  }\n\n  /**\n   * Closes all enabled accordion items.\n   */\n  closeAll() {\n    this.openCloseItems.next(true);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  Component,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Input,\n  Output,\n  EventEmitter,\n  SimpleChanges,\n  HostBinding,\n  Host,\n  OnInit,\n  OnChanges,\n  OnDestroy,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { NbAccordionComponent } from './accordion.component';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\n\n/**\n * Component intended to be used within `<nb-accordion>` component\n */\n@Component({\n    selector: 'nb-accordion-item',\n    styleUrls: ['./accordion-item.component.scss'],\n    template: `\n    <ng-content select=\"nb-accordion-item-header\"></ng-content>\n    <ng-content select=\"nb-accordion-item-body\"></ng-content>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbAccordionItemComponent implements OnInit, OnChanges, OnDestroy {\n\n  /**\n   * Item is collapse (`true` by default)\n   * @type {boolean}\n   */\n  @Input('collapsed')\n  @HostBinding('class.collapsed')\n  get collapsed(): boolean {\n    return this.collapsedValue;\n  }\n  set collapsed(val: boolean) {\n    this.collapsedValue = convertToBoolProperty(val);\n    this.collapsedChange.emit(this.collapsedValue);\n    this.invalidate();\n  }\n  static ngAcceptInputType_collapsed: NbBooleanInput;\n\n  /**\n   * Item is expanded (`false` by default)\n   * @type {boolean}\n   */\n  @Input('expanded')\n  @HostBinding('class.expanded')\n  get expanded(): boolean {\n    return !this.collapsed;\n  }\n  set expanded(val: boolean) {\n    this.collapsedValue = !convertToBoolProperty(val);\n  }\n  static ngAcceptInputType_expanded: NbBooleanInput;\n\n  /**\n   * Item is disabled and cannot be opened.\n   * @type {boolean}\n   */\n  @Input('disabled')\n  @HostBinding('class.disabled')\n  get disabled(): boolean {\n    return this.disabledValue;\n  }\n  set disabled(val: boolean) {\n    this.disabledValue = convertToBoolProperty(val);\n    this.invalidate();\n  }\n  static ngAcceptInputType_disabled: NbBooleanInput;\n\n  /**\n   * Emits whenever the expanded state of the accordion changes.\n   * Primarily used to facilitate two-way binding.\n   */\n  @Output() collapsedChange = new EventEmitter<boolean>();\n\n  accordionItemInvalidate = new Subject<boolean>();\n\n  private collapsedValue = true;\n  private disabledValue = false;\n  private destroy$ = new Subject<void>();\n\n  constructor(@Host() private accordion: NbAccordionComponent, private cd: ChangeDetectorRef) {\n  }\n\n  /**\n   * Open/close the item\n   */\n  toggle() {\n    if (!this.disabled) {\n      // we need this temporary variable as `openCloseItems.next` will change current value we need to save\n      const willSet = !this.collapsed;\n\n      if (!this.accordion.multi) {\n        this.accordion.openCloseItems.next(true);\n      }\n      this.collapsed = willSet;\n    }\n  }\n\n  /**\n   * Open the item.\n   */\n  open() {\n    !this.disabled && (this.collapsed = false);\n  }\n\n  /**\n   * Collapse the item.\n   */\n  close() {\n    !this.disabled && (this.collapsed = true);\n  }\n\n  ngOnInit() {\n    this.accordion.openCloseItems\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(collapsed => {\n        !this.disabled && (this.collapsed = collapsed);\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    this.accordionItemInvalidate.next(true);\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n    this.accordionItemInvalidate.complete();\n  }\n\n  private invalidate() {\n    this.accordionItemInvalidate.next(true);\n    this.cd.markForCheck();\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  Component,\n  ChangeDetectionStrategy,\n  Host,\n  ChangeDetectorRef,\n  OnInit,\n  OnDestroy,\n} from '@angular/core';\nimport { trigger, state, style, animate, transition } from '@angular/animations';\nimport { takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nimport { NbAccordionItemComponent } from './accordion-item.component';\n\nconst accordionItemBodyTrigger = trigger('accordionItemBody', [\n  state(\n    'collapsed',\n    style({\n      overflow: 'hidden',\n      visibility: 'hidden',\n      height: 0,\n    }),\n  ),\n  state(\n    'expanded',\n    style({\n      overflow: 'hidden',\n      visibility: 'visible',\n    }),\n  ),\n  transition('collapsed => expanded', animate('100ms ease-in')),\n  transition('expanded => collapsed', animate('100ms ease-out')),\n]);\n\n/**\n * Component intended to be used within `<nb-accordion-item>` component\n */\n@Component({\n    selector: 'nb-accordion-item-body',\n    template: `\n    <div [@accordionItemBody]=\"{ value: state }\">\n      <div class=\"item-body\">\n        <ng-content></ng-content>\n      </div>\n    </div>\n  `,\n    animations: [accordionItemBodyTrigger],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbAccordionItemBodyComponent implements OnInit, OnDestroy {\n  private destroy$ = new Subject<void>();\n\n  constructor(@Host() private accordionItem: NbAccordionItemComponent, private cd: ChangeDetectorRef) {}\n\n  get state(): string {\n    return this.accordionItem.collapsed ? 'collapsed' : 'expanded';\n  }\n\n  ngOnInit() {\n    this.accordionItem.accordionItemInvalidate\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(() => this.cd.markForCheck());\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  Component,\n  ChangeDetectionStrategy,\n  Host,\n  HostBinding,\n  HostListener,\n  OnInit,\n  OnDestroy,\n  ChangeDetectorRef,\n} from '@angular/core';\nimport { trigger, state, style, animate, transition } from '@angular/animations';\nimport { takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nimport { NbAccordionItemComponent } from './accordion-item.component';\n\n/**\n * Component intended to be used within `<nb-accordion-item>` component\n */\n@Component({\n    selector: 'nb-accordion-item-header',\n    styleUrls: ['./accordion-item-header.component.scss'],\n    template: `\n    <ng-content select=\"nb-accordion-item-title\"></ng-content>\n    <ng-content select=\"nb-accordion-item-description\"></ng-content>\n    <ng-content></ng-content>\n    <nb-icon icon=\"chevron-down-outline\"\n             pack=\"nebular-essentials\"\n             [@expansionIndicator]=\"state\"\n             *ngIf=\"!disabled\"\n             class=\"expansion-indicator\">\n    </nb-icon>\n  `,\n    animations: [\n        trigger('expansionIndicator', [\n            state('expanded', style({\n                transform: 'rotate(180deg)',\n            })),\n            transition('collapsed => expanded', animate('100ms ease-in')),\n            transition('expanded => collapsed', animate('100ms ease-out')),\n        ]),\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbAccordionItemHeaderComponent implements OnInit, OnDestroy {\n\n  @HostBinding('class.accordion-item-header-collapsed')\n  get isCollapsed(): boolean {\n    return this.accordionItem.collapsed;\n  }\n\n  @HostBinding('class.accordion-item-header-expanded')\n  @HostBinding('attr.aria-expanded')\n  get expanded(): boolean {\n    return !this.accordionItem.collapsed;\n  }\n\n  // issue #794\n  @HostBinding('attr.tabindex')\n  get tabbable(): string {\n    return this.accordionItem.disabled ? '-1' : '0';\n  }\n\n  @HostBinding('attr.aria-disabled')\n  get disabled(): boolean {\n    return this.accordionItem.disabled;\n  }\n\n  @HostListener('click')\n  @HostListener('keydown.space')\n  @HostListener('keydown.enter')\n  toggle() {\n    this.accordionItem.toggle();\n  }\n\n  get state(): string {\n    if (this.isCollapsed) {\n      return 'collapsed';\n    }\n    return 'expanded';\n  }\n\n  private destroy$ = new Subject<void>();\n  constructor(@Host() private accordionItem: NbAccordionItemComponent, private cd: ChangeDetectorRef) {\n  }\n\n  ngOnInit() {\n    this.accordionItem.accordionItemInvalidate\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(() => this.cd.markForCheck());\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { NbIconModule } from '../icon/icon.module';\nimport { NbAccordionComponent } from './accordion.component';\nimport { NbAccordionItemComponent } from './accordion-item.component';\nimport { NbAccordionItemHeaderComponent } from './accordion-item-header.component';\nimport { NbAccordionItemBodyComponent } from './accordion-item-body.component';\n\nconst NB_ACCORDION_COMPONENTS = [\n  NbAccordionComponent,\n  NbAccordionItemComponent,\n  NbAccordionItemHeaderComponent,\n  NbAccordionItemBodyComponent,\n];\n\n@NgModule({\n  imports: [CommonModule, NbIconModule],\n  exports: [...NB_ACCORDION_COMPONENTS],\n  declarations: [...NB_ACCORDION_COMPONENTS],\n  providers: [],\n})\nexport class NbAccordionModule {}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { InjectionToken } from '@angular/core';\nimport { NbButtonGroupComponent } from './button-group.component';\n\nexport const NB_BUTTON_GROUP = new InjectionToken<NbButtonGroupComponent>('NB_BUTTON_GROUP');\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ChangeDetectorRef,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Inject,\n  Input,\n  NgZone,\n  Optional,\n  Output,\n  Renderer2,\n} from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbButton, NbButtonAppearance } from '../button/base-button';\nimport { NB_BUTTON_GROUP } from './button-group-injection-tokens';\n\nexport type NbButtonToggleAppearance = Exclude<NbButtonAppearance, 'hero'>;\n\nexport interface NbButtonToggleChange {\n  source: NbButtonToggleDirective;\n  pressed: boolean;\n}\n\n/**\n * `[nbButtonToggle]` is a directive to add a `pressed` state to a button.\n */\n@Directive({\n    selector: 'button[nbButtonToggle]',\n    providers: [{ provide: NbButton, useExisting: NbButtonToggleDirective }],\n    exportAs: 'nbButtonToggle',\n    standalone: false\n})\nexport class NbButtonToggleDirective extends NbButton {\n  protected readonly _pressedChange$ = new Subject<NbButtonToggleChange>();\n\n  get pressedChange$(): Observable<NbButtonToggleChange> {\n    return this._pressedChange$.asObservable();\n  }\n\n  @Input() appearance: NbButtonToggleAppearance = 'filled';\n\n  /**\n   * A value associated with the button.\n   */\n  @Input() value: any;\n\n  /**\n   * Controls button pressed state\n   **/\n  @Input()\n  @HostBinding('attr.aria-pressed')\n  get pressed(): boolean {\n    return this._pressed;\n  }\n  set pressed(value: boolean) {\n    if (this.pressed !== convertToBoolProperty(value)) {\n      this._pressed = !this.pressed;\n      this.pressedChange.emit(this.pressed);\n      this._pressedChange$.next({ source: this, pressed: this.pressed });\n    }\n  }\n  protected _pressed: boolean = false;\n  static ngAcceptInputType_pressed: NbBooleanInput;\n\n  /**\n   * Emits whenever button pressed state change\n   **/\n  @Output() readonly pressedChange = new EventEmitter<boolean>();\n\n  @HostBinding('class.status-basic')\n  get basic(): boolean {\n    // By design, all toggle buttons should have a `basic` status when not pressed.\n    return !this.pressed;\n  }\n\n  @HostBinding('class.status-primary')\n  get primary(): boolean {\n    return this.pressed && (this.status === 'basic' || this.status === 'primary');\n  }\n\n  @HostBinding('class.status-success')\n  get success(): boolean {\n    return this.pressed && this.status === 'success';\n  }\n\n  @HostBinding('class.status-info')\n  get info(): boolean {\n    return this.pressed && this.status === 'info';\n  }\n\n  @HostBinding('class.status-warning')\n  get warning(): boolean {\n    return this.pressed && this.status === 'warning';\n  }\n\n  @HostBinding('class.status-danger')\n  get danger(): boolean {\n    return this.pressed && this.status === 'danger';\n  }\n\n  @HostBinding('class.status-control')\n  get control(): boolean {\n    return this.pressed && this.status === 'control';\n  }\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.status)) {\n      return [this.statusService.getStatusClass(this.status)];\n    }\n    return [];\n  }\n\n  @HostListener('click')\n  onClick(): void {\n    // Don't remove the pressed state of the button in single-toggle button-groups\n    if (this.buttonGroup?.multiple || !this.pressed) {\n      this.pressed = !this.pressed;\n    }\n  }\n\n  constructor(\n    protected renderer: Renderer2,\n    protected hostElement: ElementRef<HTMLElement>,\n    protected cd: ChangeDetectorRef,\n    protected zone: NgZone,\n    protected statusService: NbStatusService,\n    @Optional() @Inject(NB_BUTTON_GROUP) protected buttonGroup?,\n  ) {\n    super(renderer, hostElement, cd, zone, statusService);\n  }\n\n  /**\n   * @docs-private\n   */\n  _updatePressed(value: boolean) {\n    this.pressed = value;\n    this.cd.markForCheck();\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnChanges,\n  Output,\n  QueryList,\n  SimpleChanges,\n} from '@angular/core';\nimport { from, merge, Observable, Subject } from 'rxjs';\nimport { debounceTime, filter, startWith, switchMap, takeUntil } from 'rxjs/operators';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbComponentSize } from '../component-size';\nimport { NbComponentShape } from '../component-shape';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { NbButton } from '../button/base-button';\nimport { NbButtonToggleAppearance, NbButtonToggleChange, NbButtonToggleDirective } from './button-toggle.directive';\nimport { NB_BUTTON_GROUP } from './button-group-injection-tokens';\n\n/**\n * `<nb-button-group>` visually groups buttons together and allow to control buttons properties and the state as a\n * group.\n * @stacked-example(Button Group Showcase, button-group/button-group-showcase.component)\n *\n * ### Installation\n *\n * Import `NbButtonGroupModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbButtonGroupModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n *\n * ### Usage\n *\n * You can use `<nb-button-group>` to group a series of `[nbButton]` or `[nbButtonToggle]` components.\n * @stacked-example(Button and Button Toggle Groups, button-group/button-and-button-toggle-groups.component)\n *\n * For a group of multiple `[nbButtonToggle]` you also can control multi-selection behavior. By default, the group\n * component allows only one pressed button toggle at a time (similar to the radio group). To be able to keep multiple\n * toggles pressed, you need to add `multiple` attributes to the `<nb-button-toggle>`.\n * @stacked-example(Button Group Multiple, button-group/button-group-multiple.component)\n *\n * To know which buttons are currently pressed listen to `(valueChange)` on the `nb-button-group`. Event\n * contains an array of values of currently pressed button toggles. You can assign a value to the\n * `[nbButtonToggle]` via the `value` input.\n * @stacked-example(Button Group Value Change, button-group/button-group-value-change.component)\n *\n * To disable a group of buttons, add a `disabled` attribute to the `<nb-button-group>`.\n * @stacked-example(Button Group Disabled, button-group/button-group-disabled.component)\n *\n * The group component controls all visual attributes of buttons such as `appearance`, `status`, `size`, `shape`.\n * You can change it via the appropriate attributes.\n *\n * Button group appearances:\n * @stacked-example(Button Group Appearances, button-group/button-group-appearances.component)\n *\n * Button group statuses:\n * @stacked-example(Button Group Statuses, button-group/button-group-statuses.component)\n *\n * Button group sizes:\n * @stacked-example(Button Group Sizes, button-group/button-group-sizes.component)\n *\n * Buttons group shapes:\n * @additional-example(Button Group Shapes, button-group/button-group-shapes.component)\n *\n * @styles\n *\n * button-group-filled-button-basic-text-color:\n * button-group-filled-button-primary-text-color:\n * button-group-filled-button-success-text-color:\n * button-group-filled-button-info-text-color:\n * button-group-filled-button-warning-text-color:\n * button-group-filled-button-danger-text-color:\n * button-group-filled-button-control-text-color:\n * button-group-filled-basic-divider-color:\n * button-group-filled-primary-divider-color:\n * button-group-filled-success-divider-color:\n * button-group-filled-info-divider-color:\n * button-group-filled-warning-divider-color:\n * button-group-filled-danger-divider-color:\n * button-group-filled-control-divider-color:\n * button-group-ghost-divider-color:\n **/\n@Component({\n    selector: 'nb-button-group',\n    template: ` <ng-content></ng-content> `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [{ provide: NB_BUTTON_GROUP, useExisting: NbButtonGroupComponent }],\n    standalone: false\n})\nexport class NbButtonGroupComponent implements OnChanges, AfterContentInit {\n  protected lastEmittedValue: any[] = [];\n\n  protected readonly destroy$: Subject<void> = new Subject<void>();\n  protected readonly buttonsChange$ = new Subject<NbButton[]>();\n\n  @ContentChildren(NbButton) readonly buttons: QueryList<NbButton>;\n\n  /**\n   * Button group size, available sizes:\n   * `tiny`, `small`, `medium`, `large`, `giant`\n   */\n  @Input() size: NbComponentSize = 'medium';\n\n  /**\n   * Button group status (adds specific styles):\n   * `basic`, `primary`, `info`, `success`, `warning`, `danger`, `control`\n   */\n  @Input() status: NbComponentOrCustomStatus = 'basic';\n\n  /**\n   * Button group shapes: `rectangle`, `round`, `semi-round`\n   */\n  @Input() shape: NbComponentShape = 'rectangle';\n\n  /**\n   * Button group appearance: `filled`, `outline`, `ghost`\n   */\n  @Input() appearance: NbButtonToggleAppearance = 'filled';\n\n  @Input()\n  get disabled(): boolean {\n    return this._disabled;\n  }\n  set disabled(value: boolean) {\n    if (this.disabled !== convertToBoolProperty(value)) {\n      this._disabled = !this.disabled;\n    }\n  }\n  protected _disabled = false;\n  static ngAcceptInputType_disabled: NbBooleanInput;\n\n  /**\n   * Allows to keep multiple button toggles pressed. Off by default.\n   */\n  @Input()\n  get multiple(): boolean {\n    return this._multiple;\n  }\n  set multiple(value: boolean) {\n    this._multiple = convertToBoolProperty(value);\n  }\n  protected _multiple: boolean = false;\n  static ngAcceptInputType_multiple: NbBooleanInput;\n\n  /**\n   * Sets `filled` appearance\n   */\n  @Input()\n  get filled(): boolean {\n    return this.appearance === 'filled';\n  }\n  set filled(value: boolean) {\n    if (convertToBoolProperty(value)) {\n      this.appearance = 'filled';\n    }\n  }\n  static ngAcceptInputType_filled: NbBooleanInput;\n\n  /**\n   * Sets `outline` appearance\n   */\n  @Input()\n  get outline(): boolean {\n    return this.appearance === 'outline';\n  }\n  set outline(value: boolean) {\n    if (convertToBoolProperty(value)) {\n      this.appearance = 'outline';\n    }\n  }\n  static ngAcceptInputType_outline: NbBooleanInput;\n\n  /**\n   * Sets `ghost` appearance\n   */\n  @Input()\n  get ghost(): boolean {\n    return this.appearance === 'ghost';\n  }\n  set ghost(value: boolean) {\n    if (convertToBoolProperty(value)) {\n      this.appearance = 'ghost';\n    }\n  }\n  static ngAcceptInputType_ghost: NbBooleanInput;\n\n  /**\n   * Emits when `nbButtonToggle` pressed state change. `$event` contains an array of the currently pressed button\n   * toggles.\n   */\n  @Output() valueChange = new EventEmitter<any[]>();\n\n  @HostBinding('attr.role') role = 'group';\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.status)) {\n      return [this.statusService.getStatusClass(this.status)];\n    }\n    return [];\n  }\n\n  constructor(protected cd: ChangeDetectorRef, protected statusService: NbStatusService) {}\n\n  ngOnChanges({ size, status, shape, multiple, filled, outline, ghost, disabled }: SimpleChanges) {\n    if (size || status || shape || multiple || filled || outline || ghost || disabled) {\n      this.syncButtonsProperties(this.buttons?.toArray() || []);\n    }\n  }\n\n  ngAfterContentInit(): void {\n    this.buttonsChange$.pipe(takeUntil(this.destroy$)).subscribe((buttons: NbButton[]) => {\n      this.listenButtonPressedState(buttons);\n      this.syncButtonsProperties(buttons);\n    });\n\n    this.buttons.changes\n      .pipe(\n        // `buttons.changes` emit during change detection run after projected content already was initialized.\n        // So at this time, it's too late to update projected buttons properties as updating bindings after\n        // initialization doesn't make sense. Changes won't be picked up and should cause an \"expression changed\" error.\n        // Instead, we wrap the new buttons list into a promise to defer update to the following microtask and also to\n        // trigger change detection one more time.\n        switchMap((buttons: QueryList<NbButton>) => from(Promise.resolve(buttons.toArray()))),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(this.buttonsChange$);\n\n    this.buttonsChange$.next(this.buttons.toArray());\n  }\n\n  protected listenButtonPressedState(buttons: NbButton[]): void {\n    const toggleButtons: NbButtonToggleDirective[] = buttons.filter((button: NbButton) => {\n      return button instanceof NbButtonToggleDirective;\n    }) as NbButtonToggleDirective[];\n\n    if (!toggleButtons.length) {\n      return;\n    }\n\n    const buttonsPressedChange$: Observable<NbButtonToggleChange>[] = toggleButtons.map(\n      (button: NbButtonToggleDirective) => button.pressedChange$,\n    );\n\n    merge(...buttonsPressedChange$)\n      .pipe(\n        filter(({ pressed }: NbButtonToggleChange) => !this.multiple && pressed),\n        takeUntil(merge(this.buttonsChange$, this.destroy$)),\n      )\n      .subscribe(({ source }: NbButtonToggleChange) => {\n        toggleButtons\n          .filter((button: NbButtonToggleDirective) => button !== source)\n          .forEach((button: NbButtonToggleDirective) => button._updatePressed(false));\n      });\n\n    merge(...buttonsPressedChange$)\n      .pipe(\n        // Use startWith to emit if some buttons are initially pressed.\n        startWith(''),\n        // Use debounce to emit change once when pressed state change in multiple button toggles.\n        debounceTime(0),\n        takeUntil(merge(this.buttonsChange$, this.destroy$)),\n      )\n      .subscribe(() => this.emitCurrentValue(toggleButtons));\n  }\n\n  protected syncButtonsProperties(buttons: NbButton[]): void {\n    buttons.forEach((button: NbButton) => {\n      button.updateProperties({\n        appearance: this.appearance,\n        size: this.size,\n        status: this.status,\n        shape: this.shape,\n        disabled: this.disabled,\n      });\n    });\n  }\n\n  protected emitCurrentValue(toggleButtons: NbButtonToggleDirective[]): void {\n    const pressedToggleValues = toggleButtons\n      .filter((b: NbButtonToggleDirective) => b.pressed && typeof b.value !== 'undefined')\n      .map((b: NbButtonToggleDirective) => b.value);\n\n    // Prevent multiple emissions of empty value.\n    if (pressedToggleValues.length === 0 && this.lastEmittedValue.length === 0) {\n      return;\n    }\n\n    this.valueChange.emit(pressedToggleValues);\n    this.lastEmittedValue = pressedToggleValues;\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\nimport { NbButtonGroupComponent } from './button-group.component';\nimport { NbButtonToggleDirective } from './button-toggle.directive';\n\n@NgModule({\n  declarations: [ NbButtonGroupComponent, NbButtonToggleDirective ],\n  exports: [ NbButtonGroupComponent, NbButtonToggleDirective ],\n})\nexport class NbButtonGroupModule { }\n","import {\n  Directive,\n  ContentChildren,\n  QueryList,\n  Input,\n  ElementRef,\n  AfterViewInit,\n  OnDestroy,\n  Output,\n  EventEmitter,\n} from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { NbListItemComponent } from './list.component';\n\n/**\n * List pager directive\n *\n * Directive allows you to determine page of currently viewing items.\n *\n */\n@Directive({\n    selector: '[nbListPageTracker]',\n    standalone: false\n})\nexport class NbListPageTrackerDirective implements AfterViewInit, OnDestroy {\n  private destroy$ = new Subject<void>();\n\n  private observer: IntersectionObserver;\n  private currentPage: number;\n\n  /**\n   * Items per page.\n   */\n  @Input()\n  pageSize: number;\n\n  /**\n   * Page to start counting with.\n   */\n  @Input()\n  startPage: number = 1;\n\n  /**\n   * Emits when another page become visible.\n   */\n  @Output()\n  pageChange = new EventEmitter<number>();\n\n  @ContentChildren(NbListItemComponent, { read: ElementRef })\n  listItems: QueryList<ElementRef>;\n\n  constructor() {\n    this.observer = new IntersectionObserver((entries) => this.checkForPageChange(entries), { threshold: 0.5 });\n  }\n\n  ngAfterViewInit() {\n    if (this.listItems && this.listItems.length) {\n      this.observeItems();\n    }\n\n    this.listItems.changes.pipe(takeUntil(this.destroy$)).subscribe(() => this.observeItems());\n  }\n\n  ngOnDestroy() {\n    this.observer.disconnect && this.observer.disconnect();\n  }\n\n  private observeItems() {\n    this.listItems.forEach((i) => this.observer.observe(i.nativeElement));\n  }\n\n  private checkForPageChange(entries: IntersectionObserverEntry[]) {\n    const mostVisiblePage = this.findMostVisiblePage(entries);\n\n    if (mostVisiblePage && this.currentPage !== mostVisiblePage) {\n      this.currentPage = mostVisiblePage;\n      this.pageChange.emit(this.currentPage);\n    }\n  }\n\n  private findMostVisiblePage(entries: IntersectionObserverEntry[]): number | null {\n    const intersectionRatioByPage = new Map<number, number>();\n\n    for (const entry of entries) {\n      if (entry.intersectionRatio < 0.5) {\n        continue;\n      }\n\n      const elementIndex = this.elementIndex(entry.target);\n      if (elementIndex === -1) {\n        continue;\n      }\n      const page = this.startPage + Math.floor(elementIndex / this.pageSize);\n\n      let ratio = entry.intersectionRatio;\n      if (intersectionRatioByPage.has(page)) {\n        ratio += intersectionRatioByPage.get(page);\n      }\n      intersectionRatioByPage.set(page, ratio);\n    }\n\n    let maxRatio = 0;\n    let mostVisiblePage;\n    intersectionRatioByPage.forEach((ratio, page) => {\n      if (ratio > maxRatio) {\n        maxRatio = ratio;\n        mostVisiblePage = page;\n      }\n    });\n\n    return mostVisiblePage;\n  }\n\n  private elementIndex(element: Element): number {\n    return element.parentElement && element.parentElement.children\n      ? Array.from(element.parentElement.children).indexOf(element)\n      : -1;\n  }\n}\n","import {\n  Directive,\n  Input,\n  HostListener,\n  ElementRef,\n  EventEmitter,\n  Output,\n  OnDestroy,\n  AfterViewInit,\n  ContentChildren,\n  QueryList,\n} from '@angular/core';\nimport { Observable, forkJoin, of as observableOf, interval, timer, Subject, merge, BehaviorSubject } from 'rxjs';\nimport { filter, switchMap, map, takeUntil, take, throttle } from 'rxjs/operators';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbLayoutScrollService } from '../../services/scroll.service';\nimport { NbLayoutRulerService } from '../../services/ruler.service';\nimport { NbListItemComponent } from './list.component';\n\nexport class NbScrollableContainerDimensions {\n  scrollTop: number;\n  scrollHeight: number;\n  clientHeight: number;\n}\n\n/**\n * Infinite List Directive\n *\n * ```html\n *  <nb-list nbInfiniteList [threshold]=\"500\" (bottomThreshold)=\"loadNext()\">\n *    <nb-list-item *ngFor=\"let item of items\"></nb-list-item>\n *  </nb-list>\n * ```\n *\n * @stacked-example(Simple infinite list, infinite-list/infinite-list-showcase.component)\n *\n * Directive will notify when list scrolled up or down to a given threshold.\n * By default it listen to scroll of list on which applied, but also can be set to listen to window scroll.\n *\n * @stacked-example(Scroll modes, infinite-list/infinite-list-scroll-modes.component)\n *\n * To improve UX of infinite lists, it's better to keep current page in url,\n * so user able to return to the last viewed page or to share a link to this page.\n * `nbListPageTracker` directive will help you to know, what page user currently viewing.\n * Just put it on a list, set page size and it will calculate page that currently in viewport.\n * You can [open the example](example/infinite-list/infinite-news-list.component)\n * in a new tab to check out this feature.\n *\n * @stacked-example(Infinite list with pager, infinite-list/infinite-news-list.component)\n *\n * @stacked-example(Infinite list with placeholders at the top, infinite-list/infinite-list-placeholders.component)\n *\n */\n@Directive({\n    selector: '[nbInfiniteList]',\n    standalone: false\n})\nexport class NbInfiniteListDirective implements AfterViewInit, OnDestroy {\n  private destroy$ = new Subject<void>();\n  private lastScrollPosition;\n  windowScroll = false;\n  private get elementScroll() {\n    return !this.windowScroll;\n  }\n  private elementScroll$ = new Subject<void>();\n  private windowScroll$ = this.scrollService.onScroll().pipe(filter(() => this.windowScroll));\n  private bottomThreshold$ = new Subject<void>();\n  private topThreshold$ = new Subject<void>();\n  private throttleTime$ = new BehaviorSubject<number>(0);\n\n  /**\n   * Threshold after which event load more event will be emited.\n   * In pixels.\n   */\n  @Input()\n  threshold: number;\n\n  /**\n   * Prevent subsequent bottom/topThreshold emissions for specified duration after emitting once.\n   * In milliseconds.\n   */\n  @Input()\n  set throttleTime(value: number) {\n    this.throttleTime$.next(value);\n  }\n  get throttleTime() {\n    return this.throttleTime$.value;\n  }\n\n  /**\n   * By default component observes list scroll position.\n   * If set to `true`, component will observe position of page scroll instead.\n   */\n  @Input()\n  set listenWindowScroll(value) {\n    this.windowScroll = convertToBoolProperty(value);\n  }\n  static ngAcceptInputType_listenWindowScroll: NbBooleanInput;\n\n  /**\n   * Emits when distance between list bottom and current scroll position is less than threshold.\n   */\n  @Output()\n  bottomThreshold = new EventEmitter(true);\n\n  /**\n   * Emits when distance between list top and current scroll position is less than threshold.\n   */\n  @Output()\n  topThreshold = new EventEmitter(true);\n\n  @HostListener('scroll')\n  onElementScroll() {\n    if (this.elementScroll) {\n      this.elementScroll$.next();\n    }\n  }\n\n  @ContentChildren(NbListItemComponent) listItems: QueryList<NbListItemComponent>;\n\n  constructor(\n    private elementRef: ElementRef,\n    private scrollService: NbLayoutScrollService,\n    private dimensionsService: NbLayoutRulerService,\n  ) {}\n\n  ngAfterViewInit() {\n    merge(this.windowScroll$, this.elementScroll$)\n      .pipe(\n        switchMap(() => this.getContainerDimensions()),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((dimensions) => this.checkPosition(dimensions));\n\n    this.throttleTime$\n      .pipe(\n        switchMap(() => this.topThreshold$.pipe(throttle(() => interval(this.throttleTime)))),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => {\n        this.topThreshold.emit();\n      });\n\n    this.throttleTime$\n      .pipe(\n        switchMap(() => this.bottomThreshold$.pipe(throttle(() => interval(this.throttleTime)))),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => {\n        this.bottomThreshold.emit();\n      });\n\n    this.listItems.changes\n      .pipe(\n        // For some reason, changes are emitted before list item removed from dom,\n        // so dimensions will be incorrect.\n        // Check every 50ms for a second if dom and query are in sync.\n        // Once they synchronized, we can get proper dimensions.\n        switchMap(() =>\n          interval(50).pipe(\n            filter(() => this.inSyncWithDom()),\n            take(1),\n            takeUntil(timer(1000)),\n          ),\n        ),\n        switchMap(() => this.getContainerDimensions()),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((dimensions) => this.checkPosition(dimensions));\n\n    this.getContainerDimensions().subscribe((dimensions) => this.checkPosition(dimensions));\n  }\n\n  ngOnDestroy() {\n    this.topThreshold$.complete();\n    this.bottomThreshold$.complete();\n    this.elementScroll$.complete();\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  checkPosition({ scrollHeight, scrollTop, clientHeight }: NbScrollableContainerDimensions) {\n    const initialCheck = this.lastScrollPosition == null;\n    const manualCheck = this.lastScrollPosition === scrollTop;\n    const scrollUp = scrollTop < this.lastScrollPosition;\n    const scrollDown = scrollTop > this.lastScrollPosition;\n    const distanceToBottom = scrollHeight - scrollTop - clientHeight;\n\n    if ((initialCheck || manualCheck || scrollDown) && distanceToBottom <= this.threshold) {\n      this.bottomThreshold$.next();\n    }\n\n    if ((initialCheck || scrollUp) && scrollTop <= this.threshold) {\n      this.topThreshold$.next();\n    }\n\n    this.lastScrollPosition = scrollTop;\n  }\n\n  private getContainerDimensions(): Observable<NbScrollableContainerDimensions> {\n    if (this.elementScroll) {\n      const { scrollTop, scrollHeight, clientHeight } = this.elementRef.nativeElement;\n      return observableOf({ scrollTop, scrollHeight, clientHeight });\n    }\n\n    return forkJoin([this.scrollService.getPosition(), this.dimensionsService.getDimensions()]).pipe(\n      map(([scrollPosition, dimensions]) => ({\n        scrollTop: scrollPosition.y,\n        scrollHeight: dimensions.scrollHeight,\n        clientHeight: dimensions.clientHeight,\n      })),\n    );\n  }\n\n  private inSyncWithDom(): boolean {\n    return this.elementRef.nativeElement.children.length === this.listItems.length;\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { NbListComponent, NbListItemComponent } from './list.component';\nimport { NbListPageTrackerDirective } from './list-page-tracker.directive';\nimport { NbInfiniteListDirective } from './infinite-list.directive';\n\nconst components = [\n  NbListComponent,\n  NbListItemComponent,\n  NbListPageTrackerDirective,\n  NbInfiniteListDirective,\n];\n\n@NgModule({\n  declarations: components,\n  exports: components,\n})\nexport class NbListModule {}\n","import { Injectable } from '@angular/core';\nimport { Directionality } from '@angular/cdk/bidi';\n\n@Injectable()\nexport class NbDirectionality extends Directionality {}\n","import { NgModule } from '@angular/core';\nimport { BidiModule, Directionality } from '@angular/cdk/bidi';\nimport { NbDirectionality } from './bidi-service';\n\n@NgModule({\n  providers: [\n    { provide: NbDirectionality, useExisting: Directionality },\n  ],\n})\nexport class NbBidiModule extends BidiModule {}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license infornbion.\n */\n\nimport { Directive, ElementRef, InjectionToken, Input } from '@angular/core';\nimport {\n  CdkCell,\n  CdkCellDef,\n  CdkColumnDef,\n  CdkFooterCell,\n  CdkFooterCellDef,\n  CdkHeaderCell,\n  CdkHeaderCellDef,\n} from '@angular/cdk/table';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\n/**\n * Cell definition for the nb-table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\n@Directive({\n    selector: '[nbCellDef]',\n    providers: [{ provide: CdkCellDef, useExisting: NbCellDefDirective }],\n    standalone: false\n})\nexport class NbCellDefDirective extends CdkCellDef {}\n\n/**\n * Header cell definition for the nb-table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\n@Directive({\n    selector: '[nbHeaderCellDef]',\n    providers: [{ provide: CdkHeaderCellDef, useExisting: NbHeaderCellDefDirective }],\n    standalone: false\n})\nexport class NbHeaderCellDefDirective extends CdkHeaderCellDef {}\n\n/**\n * Footer cell definition for the nb-table.\n * Captures the template of a column's footer cell and as well as cell-specific properties.\n */\n@Directive({\n    selector: '[nbFooterCellDef]',\n    providers: [{ provide: CdkFooterCellDef, useExisting: NbFooterCellDefDirective }],\n    standalone: false\n})\nexport class NbFooterCellDefDirective extends CdkFooterCellDef {}\n\nexport const NB_SORT_HEADER_COLUMN_DEF = new InjectionToken('NB_SORT_HEADER_COLUMN_DEF');\n\n/**\n * Column definition for the nb-table.\n * Defines a set of cells available for a table column.\n */\n@Directive({\n    selector: '[nbColumnDef]',\n    providers: [\n        { provide: CdkColumnDef, useExisting: NbColumnDefDirective },\n        { provide: NB_SORT_HEADER_COLUMN_DEF, useExisting: NbColumnDefDirective },\n    ],\n    standalone: false\n})\nexport class NbColumnDefDirective extends CdkColumnDef {\n  private _hasStickyCellChanged = false;\n\n  /** Unique name for this column. */\n  @Input('nbColumnDef')\n  get name(): string {\n    return this._name;\n  }\n  set name(value: string) {\n    this._setNameInput(value);\n  }\n\n  /** Whether this column should be sticky positioned at the start of the row */\n  @Input()\n  get sticky(): boolean {\n    return this._stickyCell;\n  }\n  set sticky(value: boolean) {\n    if (value !== this._stickyCell) {\n      this._stickyCell = value;\n      this._hasStickyCellChanged = true;\n    }\n  }\n  private _stickyCell = false;\n\n  /** Whether this column should be sticky positioned on the end of the row */\n  @Input()\n  get stickyEnd(): boolean {\n    return this._stickyEnd;\n  }\n  set stickyEnd(value: boolean) {\n    const prevValue = this._stickyEnd;\n    this._stickyEnd = coerceBooleanProperty(value);\n    this._hasStickyCellChanged = prevValue !== this._stickyEnd;\n  }\n\n  /** Whether the sticky state has changed. */\n  hasStickyChanged(): boolean {\n    const hasStickyChanged = this._hasStickyCellChanged;\n    this.resetStickyChanged();\n    return hasStickyChanged;\n  }\n\n  /** Resets the sticky changed state. */\n  resetStickyChanged(): void {\n    this._hasStickyCellChanged = false;\n  }\n}\n\n/** Header cell template container that adds the right classes and role. */\n@Directive({\n    selector: 'nb-header-cell, th[nbHeaderCell]',\n    host: {\n        class: 'nb-header-cell',\n        role: 'columnheader',\n    },\n    standalone: false\n})\nexport class NbHeaderCellDirective extends CdkHeaderCell {\n  constructor(columnDef: NbColumnDefDirective, elementRef: ElementRef<HTMLElement>) {\n    super(columnDef, elementRef);\n    elementRef.nativeElement.classList.add(`nb-column-${columnDef.cssClassFriendlyName}`);\n  }\n}\n\n/** Footer cell template container that adds the right classes and role. */\n@Directive({\n    selector: 'nb-footer-cell, td[nbFooterCell]',\n    host: {\n        class: 'nb-footer-cell',\n        role: 'gridcell',\n    },\n    standalone: false\n})\nexport class NbFooterCellDirective extends CdkFooterCell {\n  constructor(columnDef: NbColumnDefDirective, elementRef: ElementRef) {\n    super(columnDef, elementRef);\n    elementRef.nativeElement.classList.add(`nb-column-${columnDef.cssClassFriendlyName}`);\n  }\n}\n\n/** Cell template container that adds the right classes and role. */\n@Directive({\n    selector: 'nb-cell, td[nbCell]',\n    host: {\n        class: 'nb-cell',\n        role: 'gridcell',\n    },\n    standalone: false\n})\nexport class NbCellDirective extends CdkCell {\n  constructor(columnDef: NbColumnDefDirective, elementRef: ElementRef<HTMLElement>) {\n    super(columnDef, elementRef);\n    elementRef.nativeElement.classList.add(`nb-column-${columnDef.cssClassFriendlyName}`);\n  }\n}\n","import { DataSource } from '@angular/cdk/table';\n\nexport abstract class NbDataSource<T> extends DataSource<T> {}\n","import { Component, Directive, Input } from '@angular/core';\nimport {\n  CdkFooterRow,\n  CdkFooterRowDef,\n  CdkHeaderRow,\n  CdkHeaderRowDef,\n  CdkRow,\n  CdkRowDef,\n  CdkCellOutlet,\n  DataRowOutlet,\n  HeaderRowOutlet,\n  FooterRowOutlet,\n  NoDataRowOutlet,\n} from '@angular/cdk/table';\n\n@Directive({\n    selector: '[nbRowOutlet]',\n    providers: [{ provide: DataRowOutlet, useExisting: NbDataRowOutletDirective }],\n    standalone: false\n})\nexport class NbDataRowOutletDirective extends DataRowOutlet {}\n\n@Directive({\n    selector: '[nbHeaderRowOutlet]',\n    providers: [{ provide: HeaderRowOutlet, useExisting: NbHeaderRowOutletDirective }],\n    standalone: false\n})\nexport class NbHeaderRowOutletDirective extends HeaderRowOutlet {}\n\n@Directive({\n    selector: '[nbFooterRowOutlet]',\n    providers: [{ provide: FooterRowOutlet, useExisting: NbFooterRowOutletDirective }],\n    standalone: false\n})\nexport class NbFooterRowOutletDirective extends FooterRowOutlet {}\n\n@Directive({\n    selector: '[nbNoDataRowOutlet]',\n    providers: [{ provide: NoDataRowOutlet, useExisting: NbNoDataRowOutletDirective }],\n    standalone: false\n})\nexport class NbNoDataRowOutletDirective extends NoDataRowOutlet {}\n\n@Directive({\n    selector: '[nbCellOutlet]',\n    providers: [{ provide: CdkCellOutlet, useExisting: NbCellOutletDirective }],\n    standalone: false\n})\nexport class NbCellOutletDirective extends CdkCellOutlet {}\n\n/**\n * Header row definition for the nb-table.\n * Captures the header row's template and other header properties such as the columns to display.\n */\n@Directive({\n    selector: '[nbHeaderRowDef]',\n    providers: [{ provide: CdkHeaderRowDef, useExisting: NbHeaderRowDefDirective }],\n    standalone: false\n})\nexport class NbHeaderRowDefDirective extends CdkHeaderRowDef {\n  private _hasStickyRowChanged = false;\n\n  @Input('nbHeaderRowDef') columns: Iterable<string>;\n  @Input('nbHeaderRowDefSticky')\n  get sticky(): boolean {\n    return this._stickyRow;\n  }\n  set sticky(value: boolean) {\n    if (value !== this._stickyRow) {\n      this._stickyRow = value;\n      this._hasStickyRowChanged = true;\n    }\n  }\n  private _stickyRow = false;\n\n  hasStickyChanged(): boolean {\n    const hasStickyChanged = this._hasStickyRowChanged;\n    this.resetStickyChanged();\n    return hasStickyChanged;\n  }\n\n  /** Resets the sticky changed state. */\n  resetStickyChanged(): void {\n    this._hasStickyRowChanged = false;\n  }\n}\n\n/**\n * Footer row definition for the nb-table.\n * Captures the footer row's template and other footer properties such as the columns to display.\n */\n@Directive({\n    selector: '[nbFooterRowDef]',\n    providers: [{ provide: CdkFooterRowDef, useExisting: NbFooterRowDefDirective }],\n    standalone: false\n})\nexport class NbFooterRowDefDirective extends CdkFooterRowDef {\n  private _hasStickyRowChanged = false;\n\n  @Input('nbFooterRowDef') columns: Iterable<string>;\n  @Input('nbFooterRowDefSticky')\n  get sticky(): boolean {\n    return this._stickyRow;\n  }\n  set sticky(value: boolean) {\n    if (value !== this._stickyRow) {\n      this._stickyRow = value;\n      this._hasStickyRowChanged = true;\n    }\n  }\n  private _stickyRow = false;\n\n  /** Whether the sticky state has changed. */\n  hasStickyChanged(): boolean {\n    const hasStickyChanged = this._hasStickyRowChanged;\n    this.resetStickyChanged();\n    return hasStickyChanged;\n  }\n\n  /** Resets the sticky changed state. */\n  resetStickyChanged(): void {\n    this._hasStickyRowChanged = false;\n  }\n}\n\n/**\n * Data row definition for the nb-table.\n * Captures the data row's template and other properties such as the columns to display and\n * a when predicate that describes when this row should be used.\n */\n@Directive({\n    selector: '[nbRowDef]',\n    providers: [{ provide: CdkRowDef, useExisting: NbRowDefDirective }],\n    standalone: false\n})\nexport class NbRowDefDirective<T> extends CdkRowDef<T> {\n  @Input('nbRowDefColumns') columns: Iterable<string>;\n  @Input('nbRowDefWhen') when: (index: number, rowData: T) => boolean;\n}\n\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n    selector: 'nb-header-row, tr[nbHeaderRow]',\n    template: ` <ng-container nbCellOutlet></ng-container>`,\n    host: {\n        class: 'nb-header-row',\n        role: 'row',\n    },\n    providers: [{ provide: CdkHeaderRow, useExisting: NbHeaderRowComponent }],\n    standalone: false\n})\nexport class NbHeaderRowComponent extends CdkHeaderRow {}\n\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n    selector: 'nb-footer-row, tr[nbFooterRow]',\n    template: ` <ng-container nbCellOutlet></ng-container>`,\n    host: {\n        class: 'nb-footer-row',\n        role: 'row',\n    },\n    providers: [{ provide: CdkFooterRow, useExisting: NbFooterRowComponent }],\n    standalone: false\n})\nexport class NbFooterRowComponent extends CdkFooterRow {}\n\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n    selector: 'nb-row, tr[nbRow]',\n    template: ` <ng-container nbCellOutlet></ng-container>`,\n    host: {\n        class: 'nb-row',\n        role: 'row',\n    },\n    providers: [{ provide: CdkRow, useExisting: NbRowComponent }],\n    standalone: false\n})\nexport class NbRowComponent extends CdkRow {}\n","import {\n  CdkCell,\n  CdkCellDef,\n  CdkColumnDef,\n  CdkFooterCell,\n  CdkFooterCellDef,\n  CdkFooterRow,\n  CdkFooterRowDef,\n  CdkHeaderCell,\n  CdkHeaderCellDef,\n  CdkHeaderRow,\n  CdkHeaderRowDef,\n  CdkRow,\n  CdkRowDef,\n  RowContext,\n  STICKY_POSITIONING_LISTENER,\n} from '@angular/cdk/table';\n\nexport const NbCdkRowDef = CdkRowDef;\nexport const NbCdkRow = CdkRow;\nexport const NbCdkCellDef = CdkCellDef;\n\nexport const NbCdkHeaderRowDef = CdkHeaderRowDef;\nexport const NbCdkHeaderRow = CdkHeaderRow;\nexport const NbCdkHeaderCellDef = CdkHeaderCellDef;\n\nexport const NbCdkFooterRowDef = CdkFooterRowDef;\nexport const NbCdkFooterRow = CdkFooterRow;\nexport const NbCdkFooterCellDef = CdkFooterCellDef;\n\nexport const NbCdkColumnDef = CdkColumnDef;\n\nexport const NbCdkCell = CdkCell;\nexport const NbCdkHeaderCell = CdkHeaderCell;\nexport const NbCdkFooterCell = CdkFooterCell;\n\nexport type NbRowContext<T> = RowContext<T>;\n\nexport const NB_STICKY_POSITIONING_LISTENER = STICKY_POSITIONING_LISTENER;\n","import {\n  Attribute,\n  ChangeDetectorRef,\n  ElementRef,\n  Inject,\n  IterableDiffers,\n  NgModule,\n  Component,\n  Optional,\n  Provider,\n  SkipSelf,\n} from '@angular/core';\nimport {\n  _COALESCED_STYLE_SCHEDULER,\n  _CoalescedStyleScheduler,\n  CdkTable,\n  CdkTableModule,\n  RenderRow,\n  RowContext,\n  StickyPositioningListener,\n} from '@angular/cdk/table';\nimport { _DisposeViewRepeaterStrategy, _VIEW_REPEATER_STRATEGY, _ViewRepeater } from '@angular/cdk/collections';\n\nimport { NbBidiModule } from '../bidi/bidi.module';\nimport { NbDirectionality } from '../bidi/bidi-service';\nimport { NbPlatform } from '../platform/platform-service';\nimport { NB_DOCUMENT } from '../../../theme.options';\nimport { NbViewportRulerAdapter } from '../adapter/viewport-ruler-adapter';\nimport { NB_STICKY_POSITIONING_LISTENER } from '../../cdk/table/type-mappings';\nimport {\n  NbCellDefDirective,\n  NbCellDirective,\n  NbColumnDefDirective,\n  NbFooterCellDefDirective,\n  NbFooterCellDirective,\n  NbHeaderCellDefDirective,\n  NbHeaderCellDirective,\n} from './cell';\nimport {\n  NbCellOutletDirective,\n  NbDataRowOutletDirective,\n  NbFooterRowOutletDirective,\n  NbHeaderRowOutletDirective,\n  NbFooterRowComponent,\n  NbFooterRowDefDirective,\n  NbHeaderRowComponent,\n  NbHeaderRowDefDirective,\n  NbRowComponent,\n  NbRowDefDirective,\n  NbNoDataRowOutletDirective,\n} from './row';\n\nexport const NB_TABLE_TEMPLATE = `\n  <ng-container nbHeaderRowOutlet></ng-container>\n  <ng-container nbRowOutlet></ng-container>\n  <ng-container nbNoDataRowOutlet></ng-container>\n  <ng-container nbFooterRowOutlet></ng-container>\n`;\n\nexport const NB_VIEW_REPEATER_STRATEGY = _VIEW_REPEATER_STRATEGY;\nexport const NB_COALESCED_STYLE_SCHEDULER = _COALESCED_STYLE_SCHEDULER;\n\nexport const NB_TABLE_PROVIDERS: Provider[] = [\n  { provide: NB_VIEW_REPEATER_STRATEGY, useClass: _DisposeViewRepeaterStrategy },\n  { provide: NB_COALESCED_STYLE_SCHEDULER, useClass: _CoalescedStyleScheduler },\n];\n\n@Component({\n    selector: 'nb-table-not-implemented',\n    template: ``,\n    providers: NB_TABLE_PROVIDERS,\n    standalone: false\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class NbTable<T> extends CdkTable<T> {\n  constructor(\n    differs: IterableDiffers,\n    changeDetectorRef: ChangeDetectorRef,\n    elementRef: ElementRef,\n    @Attribute('role') role: string,\n    dir: NbDirectionality,\n    @Inject(NB_DOCUMENT) document: any,\n    platform: NbPlatform,\n    @Inject(_VIEW_REPEATER_STRATEGY)\n    protected readonly _viewRepeater: _ViewRepeater<T, RenderRow<T>, RowContext<T>>,\n    @Inject(_COALESCED_STYLE_SCHEDULER)\n    protected readonly _coalescedStyleScheduler: _CoalescedStyleScheduler,\n    _viewportRuler: NbViewportRulerAdapter,\n    @Optional() @SkipSelf() @Inject(NB_STICKY_POSITIONING_LISTENER)\n    protected readonly _stickyPositioningListener: StickyPositioningListener,\n  ) {\n    super(differs, changeDetectorRef, elementRef, role, dir, document, platform, _viewRepeater,\n          _coalescedStyleScheduler, _viewportRuler, _stickyPositioningListener);\n  }\n}\n\nconst COMPONENTS = [\n  NbTable,\n\n  // Template defs\n  NbHeaderCellDefDirective,\n  NbHeaderRowDefDirective,\n  NbColumnDefDirective,\n  NbCellDefDirective,\n  NbRowDefDirective,\n  NbFooterCellDefDirective,\n  NbFooterRowDefDirective,\n\n  // Outlets\n  NbDataRowOutletDirective,\n  NbHeaderRowOutletDirective,\n  NbFooterRowOutletDirective,\n  NbNoDataRowOutletDirective,\n  NbCellOutletDirective,\n\n  // Cell directives\n  NbHeaderCellDirective,\n  NbCellDirective,\n  NbFooterCellDirective,\n\n  // Row directives\n  NbHeaderRowComponent,\n  NbRowComponent,\n  NbFooterRowComponent,\n];\n\n@NgModule({\n  imports: [ NbBidiModule ],\n  declarations: [ ...COMPONENTS ],\n  exports: [ ...COMPONENTS ],\n})\nexport class NbTableModule extends CdkTableModule {}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { InjectionToken, ViewContainerRef } from '@angular/core';\n\n\nexport const NB_DIALOG_CONFIG = new InjectionToken<NbDialogConfig>('Default dialog options');\n\n/**\n * Describes all available options that may be passed to the NbDialogService.\n * */\nexport class NbDialogConfig<D = any> {\n  /**\n   * If true than overlay will render backdrop under a dialog.\n   * */\n  hasBackdrop: boolean = true;\n\n  /**\n   * Class that'll be assigned to the backdrop element.\n   * */\n  backdropClass: string = 'overlay-backdrop';\n\n  /**\n   * Class that'll be assigned to the dialog overlay.\n   * */\n  dialogClass: string = '';\n\n  /**\n   * If true then mouse clicks by backdrop will close a dialog.\n   * */\n  closeOnBackdropClick: boolean = true;\n\n  /**\n   * If true then escape press will close a dialog.\n   * */\n  closeOnEsc: boolean = true;\n\n  /**\n   * Disables scroll on content under dialog if true and does nothing otherwise.\n   * */\n  hasScroll: boolean = false;\n\n  /**\n   * Focuses dialog automatically after open if true.\n   * */\n  autoFocus: boolean = true;\n\n  /**\n   * Where the attached component should live in Angular's *logical* component tree.\n   * This affects what is available for injection and the change detection order for the\n   * component instantiated inside of the dialog. This does not affect where the dialog\n   * content will be rendered.\n   */\n  viewContainerRef: ViewContainerRef;\n\n  context: D;\n\n  constructor(config: Partial<NbDialogConfig>) {\n    Object.assign(this, config);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { ComponentRef } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { NbOverlayRef } from '../cdk/overlay/mapping';\n\n\n/**\n * The `NbDialogRef` helps to manipulate dialog after it was created.\n * The dialog can be dismissed by using `close` method of the dialogRef.\n * You can access rendered component as `content` property of the dialogRef.\n * `onBackdropClick` streams click events on the backdrop of the dialog.\n * */\nexport class NbDialogRef<T> {\n\n  componentRef: ComponentRef<T>;\n\n  /**\n   * Stream of backdrop click events.\n   * */\n  readonly onBackdropClick: Observable<MouseEvent>;\n  protected onClose$: Subject<any> = new Subject();\n  readonly onClose: Observable<any> = this.onClose$.asObservable();\n\n  constructor(protected overlayRef: NbOverlayRef) {\n    this.onBackdropClick = this.overlayRef.backdropClick();\n  }\n\n  /**\n   * Hides dialog.\n   * */\n  close(res?: any) {\n    this.overlayRef.detach();\n    this.overlayRef.dispose();\n    this.onClose$.next(res);\n    this.onClose$.complete();\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, ComponentRef, ElementRef, EmbeddedViewRef, OnDestroy, OnInit, ViewChild } from '@angular/core';\n\nimport { NbComponentPortal, NbPortalOutletDirective, NbTemplatePortal } from '../cdk/overlay/mapping';\nimport { NbFocusTrap, NbFocusTrapFactoryService } from '../cdk/a11y/focus-trap';\nimport { NbDialogConfig } from './dialog-config';\n\n\n/**\n * Container component for each dialog.\n * All the dialogs will be attached to it.\n * // TODO add animations\n * */\n@Component({\n    selector: 'nb-dialog-container',\n    template: '<ng-template nbPortalOutlet></ng-template>',\n    standalone: false\n})\nexport class NbDialogContainerComponent implements OnInit, OnDestroy {\n\n  // TODO static must be false as of Angular 9.0.0, issues/1514\n  @ViewChild(NbPortalOutletDirective, { static: true }) portalOutlet: NbPortalOutletDirective;\n\n  protected focusTrap: NbFocusTrap;\n\n  constructor(protected config: NbDialogConfig,\n              protected elementRef: ElementRef,\n              protected focusTrapFactory: NbFocusTrapFactoryService) {\n  }\n\n  ngOnInit() {\n    if (this.config.autoFocus) {\n      this.focusTrap = this.focusTrapFactory.create(this.elementRef.nativeElement);\n      this.focusTrap.blurPreviouslyFocusedElement();\n      this.focusTrap.focusInitialElement();\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.config.autoFocus && this.focusTrap) {\n      this.focusTrap.restoreFocus();\n    }\n  }\n\n  attachComponentPortal<T>(portal: NbComponentPortal<T>): ComponentRef<T> {\n    return this.portalOutlet.attachComponentPortal(portal);\n  }\n\n  attachTemplatePortal<C>(portal: NbTemplatePortal<C>): EmbeddedViewRef<C> {\n    return this.portalOutlet.attachTemplatePortal(portal);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { ComponentFactoryResolver, Inject, Injectable, Injector, TemplateRef, Type } from '@angular/core';\nimport { fromEvent as observableFromEvent } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport {\n  NbComponentPortal,\n  NbOverlayRef,\n  NbPortalInjector,\n  NbScrollStrategy,\n  NbTemplatePortal,\n} from '../cdk/overlay/mapping';\nimport { NbGlobalPositionStrategy, NbPositionBuilderService } from '../cdk/overlay/overlay-position';\nimport { NbOverlayService } from '../cdk/overlay/overlay-service';\nimport { NB_DOCUMENT } from '../../theme.options';\nimport { NB_DIALOG_CONFIG, NbDialogConfig } from './dialog-config';\nimport { NbDialogRef } from './dialog-ref';\nimport { NbDialogContainerComponent } from './dialog-container';\n\n\n/**\n * The `NbDialogService` helps to open dialogs.\n *\n * @stacked-example(Showcase, dialog/dialog-showcase.component)\n *\n * A new dialog is opened by calling the `open` method with a component to be loaded and an optional configuration.\n * `open` method will return `NbDialogRef` that can be used for the further manipulations.\n *\n * ### Installation\n *\n * Import `NbDialogModule.forRoot()` to your app module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbDialogModule.forRoot(config),\n *   ],\n * })\n * export class AppModule { }\n * ```\n *\n * If you are using it in a lazy loaded module than you have to install it with `NbDialogModule.forChild()`:\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbDialogModule.forChild(config),\n *   ],\n * })\n * export class LazyLoadedModule { }\n * ```\n *\n * ### Usage\n *\n * ```ts\n * const dialogRef = this.dialogService.open(MyDialogComponent, { ... });\n * ```\n *\n * `NbDialogRef` gives capability access reference to the rendered dialog component,\n * destroy dialog and some other options described below.\n *\n * Also, you can inject `NbDialogRef` in dialog component.\n *\n * ```ts\n * this.dialogService.open(MyDialogComponent, { ... });\n *\n * // my-dialog.component.ts\n * constructor(protected dialogRef: NbDialogRef) {\n * }\n *\n * close() {\n *   this.dialogRef.close();\n * }\n * ```\n *\n * Instead of component you can create dialog from TemplateRef:\n *\n * @stacked-example(Template ref, dialog/dialog-template.component)\n *\n * The dialog may return result through `NbDialogRef`. Calling component can receive this result with `onClose`\n * stream of `NbDialogRef`.\n *\n * @stacked-example(Result, dialog/dialog-result.component)\n *\n * ### Configuration\n *\n * As we mentioned above, `open` method of the `NbDialogService` may receive optional configuration options.\n * Also, you can provide global dialogs configuration through `NbDialogModule.forRoot({ ... })`.\n *\n * This config may contain the following:\n *\n * `context` - both, template and component may receive data through `config.context` property.\n * For components, this data will be assigned through inputs.\n * For templates, you can access it inside template as $implicit.\n *\n * ```ts\n * this.dialogService.open(template, { context: 'pass data in template' });\n * ```\n *\n * ```html\n * <ng-template let-some-additional-data>\n *   {{ some-additional-data }}\n * <ng-template/>\n * ```\n *\n * `hasBackdrop` - determines is service have to render backdrop under the dialog.\n * Default is true.\n * @stacked-example(Backdrop, dialog/dialog-has-backdrop.component)\n *\n * `closeOnBackdropClick` - close dialog on backdrop click if true.\n * Default is true.\n * @stacked-example(Backdrop click, dialog/dialog-backdrop-click.component)\n *\n * `closeOnEsc` - close dialog on escape button on the keyboard.\n * Default is true.\n * @stacked-example(Escape hit, dialog/dialog-esc.component)\n *\n * `hasScroll` - Disables scroll on content under dialog if true and does nothing otherwise.\n * Default is false.\n * Please, open dialogs in the separate window and try to scroll.\n * @stacked-example(Scroll, dialog/dialog-scroll.component)\n *\n * `autoFocus` - Focuses dialog automatically after open if true. It's useful to prevent misclicks on\n * trigger elements and opening multiple dialogs.\n * Default is true.\n *\n * As you can see, if you open dialog with auto focus dialog will focus first focusable element\n * or just blur previously focused automatically.\n * Otherwise, without auto focus, the focus will stay on the previously focused element.\n * Please, open dialogs in the separate window and try to click on the button without focus\n * and then hit space any times. Multiple same dialogs will be opened.\n * @stacked-example(Auto focus, dialog/dialog-auto-focus.component)\n * */\n@Injectable()\nexport class NbDialogService {\n  constructor(@Inject(NB_DOCUMENT) protected document,\n              @Inject(NB_DIALOG_CONFIG) protected globalConfig,\n              protected positionBuilder: NbPositionBuilderService,\n              protected overlay: NbOverlayService,\n              protected injector: Injector,\n              protected cfr: ComponentFactoryResolver) {\n  }\n\n  /**\n   * Opens new instance of the dialog, may receive optional config.\n   * */\n  open<T>(content: Type<T> | TemplateRef<T>,\n          userConfig: Partial<NbDialogConfig<Partial<T> | string>> = {}): NbDialogRef<T> {\n    const config = new NbDialogConfig({ ...this.globalConfig, ...userConfig });\n    const overlayRef = this.createOverlay(config);\n    const dialogRef = new NbDialogRef<T>(overlayRef);\n    const container = this.createContainer(config, overlayRef);\n    this.createContent(config, content, container, dialogRef);\n\n    this.registerCloseListeners(config, overlayRef, dialogRef);\n\n    return dialogRef;\n  }\n\n  protected createOverlay(config: NbDialogConfig): NbOverlayRef {\n    const positionStrategy = this.createPositionStrategy();\n    const scrollStrategy = this.createScrollStrategy(config.hasScroll);\n\n    return this.overlay.create({\n      positionStrategy,\n      scrollStrategy,\n      hasBackdrop: config.hasBackdrop,\n      backdropClass: config.backdropClass,\n      panelClass: config.dialogClass,\n    });\n  }\n\n  protected createPositionStrategy(): NbGlobalPositionStrategy {\n    return this.positionBuilder\n      .global()\n      .centerVertically()\n      .centerHorizontally();\n  }\n\n  protected createScrollStrategy(hasScroll: boolean): NbScrollStrategy {\n    if (hasScroll) {\n      return this.overlay.scrollStrategies.noop();\n    } else {\n      return this.overlay.scrollStrategies.block();\n    }\n  }\n\n  protected createContainer(config: NbDialogConfig, overlayRef: NbOverlayRef): NbDialogContainerComponent {\n    const injector = new NbPortalInjector(this.createInjector(config), new WeakMap([[NbDialogConfig, config]]));\n    const containerPortal = new NbComponentPortal(NbDialogContainerComponent, null, injector, this.cfr);\n    const containerRef = overlayRef.attach(containerPortal);\n    return containerRef.instance;\n  }\n\n  protected createContent<T>(config: NbDialogConfig,\n                             content: Type<T> | TemplateRef<T>,\n                             container: NbDialogContainerComponent,\n                             dialogRef: NbDialogRef<T>) {\n    if (content instanceof TemplateRef) {\n      const portal = this.createTemplatePortal(config, content, dialogRef);\n      container.attachTemplatePortal(portal);\n    } else {\n      const portal = this.createComponentPortal(config, content, dialogRef);\n      dialogRef.componentRef = container.attachComponentPortal(portal);\n\n      if (config.context) {\n        Object.assign(dialogRef.componentRef.instance, { ...config.context })\n      }\n    }\n  }\n\n  protected createTemplatePortal<T>(config: NbDialogConfig,\n                                    content: TemplateRef<T>,\n                                    dialogRef: NbDialogRef<T>): NbTemplatePortal {\n    return new NbTemplatePortal(content, null, <any>{ $implicit: config.context, dialogRef });\n  }\n\n  /**\n   * We're creating portal with custom injector provided through config or using global injector.\n   * This approach provides us capability inject `NbDialogRef` in dialog component.\n   * */\n  protected createComponentPortal<T>(config: NbDialogConfig,\n                                     content: Type<T>,\n                                     dialogRef: NbDialogRef<T>): NbComponentPortal {\n    const injector = this.createInjector(config);\n    const portalInjector = new NbPortalInjector(injector, new WeakMap([[NbDialogRef, dialogRef]]));\n    return new NbComponentPortal(content, config.viewContainerRef, portalInjector);\n  }\n\n  protected createInjector(config: NbDialogConfig): Injector {\n    return config.viewContainerRef && config.viewContainerRef.injector || this.injector;\n  }\n\n  protected registerCloseListeners<T>(config: NbDialogConfig, overlayRef: NbOverlayRef, dialogRef: NbDialogRef<T>) {\n    if (config.closeOnBackdropClick) {\n      overlayRef.backdropClick().subscribe(() => dialogRef.close());\n    }\n\n    if (config.closeOnEsc) {\n      observableFromEvent<KeyboardEvent>(this.document, 'keyup')\n        .pipe(\n          filter((event: KeyboardEvent) => event.keyCode === 27),\n          takeUntil(dialogRef.onClose),\n        )\n        .subscribe(() => dialogRef.close());\n    }\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\nimport { NbOverlayModule } from '../cdk/overlay/overlay.module';\nimport { NbDialogService } from './dialog.service';\nimport { NbDialogContainerComponent } from './dialog-container';\nimport { NB_DIALOG_CONFIG, NbDialogConfig } from './dialog-config';\n\n\n@NgModule({\n  imports: [NbSharedModule, NbOverlayModule],\n  declarations: [NbDialogContainerComponent],\n})\nexport class NbDialogModule {\n  static forRoot(dialogConfig: Partial<NbDialogConfig> = {}): ModuleWithProviders<NbDialogModule> {\n    return {\n      ngModule: NbDialogModule,\n      providers: [\n        NbDialogService,\n        { provide: NB_DIALOG_CONFIG, useValue: dialogConfig },\n      ],\n    }\n  }\n\n  static forChild(dialogConfig: Partial<NbDialogConfig> = {}): ModuleWithProviders<NbDialogModule> {\n    return {\n      ngModule: NbDialogModule,\n      providers: [\n        NbDialogService,\n        { provide: NB_DIALOG_CONFIG, useValue: dialogConfig },\n      ],\n    }\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  Renderer2,\n} from '@angular/core';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { NbIconConfig } from '../icon/icon.component';\nimport { NbToast } from './model';\n\n/**\n * The `NbToastComponent` is responsible for rendering each toast with appropriate styles.\n *\n * @styles\n *\n * toastr-border-style:\n * toastr-border-width:\n * toastr-border-radius:\n * toastr-padding:\n * toastr-shadow:\n * toastr-text-font-family:\n * toastr-text-font-size:\n * toastr-text-font-weight:\n * toastr-text-line-height:\n * toastr-title-text-font-family:\n * toastr-title-text-font-size:\n * toastr-title-text-font-weight:\n * toastr-title-text-line-height:\n * toastr-basic-background-color:\n * toastr-basic-border-color:\n * toastr-basic-text-color:\n * toastr-icon-basic-background-color:\n * toastr-icon-basic-color:\n * toastr-destroyable-basic-hover-background-color:\n * toastr-destroyable-basic-hover-border-color:\n * toastr-primary-background-color:\n * toastr-primary-border-color:\n * toastr-primary-text-color:\n * toastr-icon-primary-background-color:\n * toastr-icon-primary-color:\n * toastr-destroyable-primary-hover-background-color:\n * toastr-destroyable-primary-hover-border-color:\n * toastr-success-background-color:\n * toastr-success-border-color:\n * toastr-success-text-color:\n * toastr-icon-success-background-color:\n * toastr-icon-success-color:\n * toastr-destroyable-success-hover-background-color:\n * toastr-destroyable-success-hover-border-color:\n * toastr-info-background-color:\n * toastr-info-border-color:\n * toastr-info-text-color:\n * toastr-icon-info-background-color:\n * toastr-icon-info-color:\n * toastr-destroyable-info-hover-background-color:\n * toastr-destroyable-info-hover-border-color:\n * toastr-warning-background-color:\n * toastr-warning-border-color:\n * toastr-warning-text-color:\n * toastr-icon-warning-background-color:\n * toastr-icon-warning-color:\n * toastr-destroyable-warning-hover-background-color:\n * toastr-destroyable-warning-hover-border-color:\n * toastr-danger-background-color:\n * toastr-danger-border-color:\n * toastr-danger-text-color:\n * toastr-icon-danger-background-color:\n * toastr-icon-danger-color:\n * toastr-destroyable-danger-hover-background-color:\n * toastr-destroyable-danger-hover-border-color:\n * toastr-control-background-color:\n * toastr-control-border-color:\n * toastr-control-text-color:\n * toastr-icon-control-background-color:\n * toastr-icon-control-color:\n * toastr-destroyable-control-hover-background-color:\n * toastr-destroyable-control-hover-border-color:\n * */\n@Component({\n    selector: 'nb-toast',\n    styleUrls: ['./toast.component.scss'],\n    templateUrl: './toast.component.html',\n    standalone: false\n})\nexport class NbToastComponent implements OnInit, OnDestroy {\n  @Input()\n  toast: NbToast;\n\n  @Output() destroy: EventEmitter<void> = new EventEmitter();\n  @Output() toastClick: EventEmitter<void> = new EventEmitter();\n\n  @HostBinding('class.status-success')\n  get success(): boolean {\n    return this.toast.config.status === 'success';\n  }\n\n  @HostBinding('class.status-info')\n  get info(): boolean {\n    return this.toast.config.status === 'info';\n  }\n\n  @HostBinding('class.status-warning')\n  get warning(): boolean {\n    return this.toast.config.status === 'warning';\n  }\n\n  @HostBinding('class.status-primary')\n  get primary(): boolean {\n    return this.toast.config.status === 'primary';\n  }\n\n  @HostBinding('class.status-danger')\n  get danger(): boolean {\n    return this.toast.config.status === 'danger';\n  }\n\n  @HostBinding('class.status-basic')\n  get basic(): boolean {\n    return this.toast.config.status === 'basic';\n  }\n\n  @HostBinding('class.status-control')\n  get control(): boolean {\n    return this.toast.config.status === 'control';\n  }\n\n  @HostBinding('class.destroy-by-click')\n  get destroyByClick(): boolean {\n    return this.toast.config.destroyByClick;\n  }\n\n  @HostBinding('class.has-icon')\n  get hasIcon(): boolean {\n    const { icon } = this.toast.config;\n    if (typeof icon === 'string') {\n      return true;\n    }\n\n    return !!(icon && (icon as NbIconConfig).icon);\n  }\n\n  @HostBinding('class.custom-icon')\n  get customIcon(): boolean {\n    return !!this.icon;\n  }\n\n  get icon(): string | NbIconConfig {\n    return this.toast.config.icon;\n  }\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.toast.config.status)) {\n      return [this.statusService.getStatusClass(this.toast.config.status)];\n    }\n    return [];\n  }\n\n  @HostListener('click')\n  onClick() {\n    this.toastClick.emit();\n  }\n\n  constructor(\n    protected renderer: Renderer2,\n    protected elementRef: ElementRef,\n    protected statusService: NbStatusService,\n  ) {}\n\n  ngOnInit() {\n    if (this.toast.config.toastClass) {\n      this.renderer.addClass(this.elementRef.nativeElement, this.toast.config.toastClass);\n    }\n  }\n\n  ngOnDestroy() {\n    this.destroy.emit();\n  }\n}\n","<div class=\"icon-container\" *ngIf=\"hasIcon && icon\">\n  <nb-icon [config]=\"icon\"></nb-icon>\n</div>\n<div class=\"content-container\">\n  <span class=\"title subtitle\">{{ toast.title }}</span>\n  <div class=\"message\">{{ toast.message }}</div>\n</div>\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, Input, OnDestroy, OnInit, QueryList, ViewChildren } from '@angular/core';\nimport { animate, style, transition, trigger } from '@angular/animations';\nimport { takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nimport { NbToastComponent } from './toast.component';\nimport { NbToast } from './model';\nimport { NbLayoutDirectionService } from '../../services/direction.service';\nimport { NbGlobalPosition, NbPositionHelper } from '../cdk/overlay/position-helper';\n\nconst voidState = style({\n  transform: 'translateX({{ direction }}110%)',\n  height: 0,\n  marginLeft: '0',\n  marginRight: '0',\n  marginTop: '0',\n  marginBottom: '0',\n});\n\nconst defaultOptions = { params: { direction: '' } };\n\n@Component({\n    selector: 'nb-toastr-container',\n    template: `\n    <nb-toast [@fadeIn]=\"fadeIn\" *ngFor=\"let toast of content\" [toast]=\"toast\"></nb-toast>`,\n    animations: [\n        trigger('fadeIn', [\n            transition(':enter', [voidState, animate(100)], defaultOptions),\n            transition(':leave', [animate(100, voidState)], defaultOptions),\n        ]),\n    ],\n    standalone: false\n})\nexport class NbToastrContainerComponent implements OnInit, OnDestroy {\n\n  protected destroy$ = new Subject<void>();\n\n  @Input()\n  content: NbToast[] = [];\n\n  @Input()\n  context: Object;\n\n  @Input()\n  position: NbGlobalPosition;\n\n  @ViewChildren(NbToastComponent)\n  toasts: QueryList<NbToastComponent>;\n\n  fadeIn;\n\n  constructor(protected layoutDirection: NbLayoutDirectionService,\n              protected positionHelper: NbPositionHelper) {\n  }\n\n  ngOnInit() {\n    this.layoutDirection.onDirectionChange()\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(() => this.onDirectionChange());\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  protected onDirectionChange() {\n    const direction = this.positionHelper.isRightPosition(this.position) ? '' : '-';\n    this.fadeIn = { value: '', params: { direction } };\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { InjectionToken } from '@angular/core';\n\nimport { NbGlobalLogicalPosition, NbGlobalPosition } from '../cdk/overlay/position-helper';\nimport { NbComponentOrCustomStatus, NbComponentStatus } from '../component-status';\nimport { NbIconConfig } from '../icon/icon.component';\n\ntype IconToClassMap = {\n  [status in NbComponentStatus]: string;\n}\n\nexport const NB_TOASTR_CONFIG = new InjectionToken<NbToastrConfig>('Default toastr options');\n\nexport type NbDuplicateToastBehaviour = 'previous' | 'all';\n\n/**\n * The `NbToastrConfig` class describes configuration of the `NbToastrService.show` and global toastr configuration.\n * */\nexport class NbToastrConfig {\n  /**\n   * Determines where on the screen toast have to be rendered.\n   * */\n  position: NbGlobalPosition = NbGlobalLogicalPosition.TOP_END;\n  /**\n   * Status chooses color scheme for the toast.\n   * */\n  status: NbComponentOrCustomStatus = 'basic';\n  /**\n   * Duration is timeout between toast appears and disappears.\n   * */\n  duration: number = 3000;\n  /**\n   * Destroy by click means you can hide the toast by clicking it.\n   * */\n  destroyByClick: boolean = true;\n  /**\n   * If preventDuplicates is true then the toast with the same title, message and status will not be rendered.\n   * Find duplicates behaviour determined by `preventDuplicates`.\n   * The default `previous` duplicate behaviour is used.\n   * */\n  preventDuplicates: boolean = false;\n  /**\n   * Determines the how to treat duplicates.\n   * */\n  duplicatesBehaviour: NbDuplicateToastBehaviour = 'previous';\n  /*\n  * The number of visible toasts. If the limit exceeded the oldest toast will be removed.\n  * */\n  limit?: number = null;\n  /**\n   * Class to be applied to the toast.\n   */\n  toastClass: string = '';\n  /**\n   * Determines render icon or not.\n   * */\n  hasIcon: boolean = true;\n  /**\n   * Icon name or icon config object that can be provided to render custom icon.\n   * */\n  icon: string | NbIconConfig = 'email';\n  /**\n   * Toast status icon-class mapping.\n   * */\n  protected icons: IconToClassMap = {\n    danger: 'flash-outline',\n    success: 'checkmark-outline',\n    info: 'question-mark-outline',\n    warning: 'alert-triangle-outline',\n    primary: 'email-outline',\n    control: 'email-outline',\n    basic: 'email-outline',\n  };\n\n  constructor(config: Partial<NbToastrConfig>) {\n    this.patchIcon(config);\n    Object.assign(this, config);\n  }\n\n  protected patchIcon(config: Partial<NbToastrConfig>) {\n    if (!('icon' in config)) {\n      config.icon = {\n        icon: this.icons[config.status] || this.icons.basic,\n        pack: 'nebular-essentials',\n      };\n    }\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { ComponentFactoryResolver, ComponentRef, Inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { NbComponentPortal, NbOverlayRef } from '../cdk/overlay/mapping';\nimport { NbOverlayService, patch } from '../cdk/overlay/overlay-service';\nimport { NbPositionBuilderService } from '../cdk/overlay/overlay-position';\nimport { NbGlobalLogicalPosition, NbGlobalPosition, NbPositionHelper } from '../cdk/overlay/position-helper';\nimport { NbToastrContainerComponent } from './toastr-container.component';\nimport { NB_TOASTR_CONFIG, NbToastrConfig } from './toastr-config';\nimport { NbToast } from './model';\nimport { NbToastComponent } from './toast.component';\nimport { NB_DOCUMENT } from '../../theme.options';\n\nexport class NbToastRef {\n  toastInstance: NbToastComponent;\n\n  constructor(private toastContainer: NbToastContainer, private toast: NbToast) {}\n\n  close() {\n    this.toastContainer.destroy(this.toast);\n  }\n\n  onClose(): Observable<void> {\n    return this.toastInstance.destroy.asObservable();\n  }\n\n  onClick(): Observable<void> {\n    return this.toastInstance.toastClick.asObservable();\n  }\n}\n\nexport class NbToastContainer {\n  protected toasts: NbToast[] = [];\n  protected prevToast: NbToast;\n\n  get nativeElement() {\n    return this.containerRef.location.nativeElement;\n  }\n\n  constructor(\n    protected position: NbGlobalPosition,\n    protected containerRef: ComponentRef<NbToastrContainerComponent>,\n    protected positionHelper: NbPositionHelper,\n  ) {}\n\n  attach(toast: NbToast): NbToastRef {\n    if (toast.config.preventDuplicates && this.isDuplicate(toast)) {\n      return undefined;\n    }\n\n    this.removeToastIfLimitReached(toast);\n    const toastComponent: NbToastComponent = this.attachToast(toast);\n\n    if (toast.config.destroyByClick) {\n      this.subscribeOnClick(toastComponent, toast);\n    }\n\n    if (toast.config.duration) {\n      this.setDestroyTimeout(toast);\n    }\n\n    this.prevToast = toast;\n\n    const toastRef = new NbToastRef(this, toast);\n    toastRef.toastInstance = toastComponent;\n\n    return toastRef;\n  }\n\n  destroy(toast: NbToast) {\n    if (this.prevToast === toast) {\n      this.prevToast = null;\n    }\n\n    this.toasts = this.toasts.filter((t) => t !== toast);\n    this.updateContainer();\n  }\n\n  protected isDuplicate(toast: NbToast): boolean {\n    return toast.config.duplicatesBehaviour === 'previous'\n      ? this.isDuplicatePrevious(toast)\n      : this.isDuplicateAmongAll(toast);\n  }\n\n  protected isDuplicatePrevious(toast: NbToast): boolean {\n    return this.prevToast && this.toastDuplicateCompareFunc(this.prevToast, toast);\n  }\n\n  protected isDuplicateAmongAll(toast: NbToast): boolean {\n    return this.toasts.some((t) => this.toastDuplicateCompareFunc(t, toast));\n  }\n\n  protected toastDuplicateCompareFunc = (t1: NbToast, t2: NbToast): boolean => {\n    return t1.message === t2.message && t1.title === t2.title && t1.config.status === t2.config.status;\n  };\n\n  protected removeToastIfLimitReached(toast: NbToast) {\n    if (!toast.config.limit || this.toasts.length < toast.config.limit) {\n      return;\n    }\n    if (this.positionHelper.isTopPosition(toast.config.position)) {\n      this.toasts.pop();\n    } else {\n      this.toasts.shift();\n    }\n  }\n\n  protected attachToast(toast: NbToast): NbToastComponent {\n    if (this.positionHelper.isTopPosition(toast.config.position)) {\n      return this.attachToTop(toast);\n    } else {\n      return this.attachToBottom(toast);\n    }\n  }\n\n  protected attachToTop(toast: NbToast): NbToastComponent {\n    this.toasts.unshift(toast);\n    this.updateContainer();\n    return this.containerRef.instance.toasts.first;\n  }\n\n  protected attachToBottom(toast: NbToast): NbToastComponent {\n    this.toasts.push(toast);\n    this.updateContainer();\n    return this.containerRef.instance.toasts.last;\n  }\n\n  protected setDestroyTimeout(toast: NbToast) {\n    setTimeout(() => this.destroy(toast), toast.config.duration);\n  }\n\n  protected subscribeOnClick(toastComponent: NbToastComponent, toast: NbToast) {\n    toastComponent.toastClick\n      .pipe(\n        filter(() => toast.config.destroyByClick),\n        takeUntil(toastComponent.destroy),\n      )\n      .subscribe(() => this.destroy(toast));\n  }\n\n  protected updateContainer() {\n    patch(this.containerRef, { content: this.toasts, position: this.position });\n  }\n}\n\ninterface NbToastrOverlayWithContainer {\n  overlayRef: NbOverlayRef;\n  toastrContainer: NbToastContainer;\n}\n\n@Injectable()\nexport class NbToastrContainerRegistry {\n  protected overlays: Map<NbGlobalPosition, NbToastrOverlayWithContainer> = new Map();\n\n  constructor(\n    protected overlay: NbOverlayService,\n    protected positionBuilder: NbPositionBuilderService,\n    protected positionHelper: NbPositionHelper,\n    protected cfr: ComponentFactoryResolver,\n    @Inject(NB_DOCUMENT) protected document: any,\n  ) {}\n\n  get(position: NbGlobalPosition): NbToastContainer {\n    const logicalPosition: NbGlobalLogicalPosition = this.positionHelper.toLogicalPosition(position);\n\n    const overlayWithContainer = this.overlays.get(logicalPosition);\n    if (!overlayWithContainer || !this.existsInDom(overlayWithContainer.toastrContainer)) {\n      if (overlayWithContainer) {\n        overlayWithContainer.overlayRef.dispose();\n      }\n      this.instantiateContainer(logicalPosition);\n    }\n\n    return this.overlays.get(logicalPosition).toastrContainer;\n  }\n\n  protected instantiateContainer(position: NbGlobalLogicalPosition) {\n    const toastrOverlayWithContainer = this.createContainer(position);\n    this.overlays.set(position, toastrOverlayWithContainer);\n  }\n\n  protected createContainer(position: NbGlobalLogicalPosition): NbToastrOverlayWithContainer {\n    const positionStrategy = this.positionBuilder.global().position(position);\n    const ref = this.overlay.create({ positionStrategy });\n    this.addClassToOverlayHost(ref);\n    const containerRef = ref.attach(new NbComponentPortal(NbToastrContainerComponent, null, null, this.cfr));\n    return {\n      overlayRef: ref,\n      toastrContainer: new NbToastContainer(position, containerRef, this.positionHelper),\n    };\n  }\n\n  protected addClassToOverlayHost(overlayRef: NbOverlayRef) {\n    overlayRef.hostElement.classList.add('toastr-overlay-container');\n  }\n\n  protected existsInDom(toastContainer: NbToastContainer): boolean {\n    return this.document.body.contains(toastContainer.nativeElement);\n  }\n}\n\n/**\n * The `NbToastrService` provides a capability to build toast notifications.\n *\n * @stacked-example(Showcase, toastr/toastr-showcase.component)\n *\n * `NbToastrService.show(message, title, config)` accepts three params, title and config are optional.\n *\n * ### Installation\n *\n * Import `NbToastrModule.forRoot()` to your app module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbToastrModule.forRoot(config),\n *   ],\n * })\n * export class AppModule { }\n * ```\n *\n * ### Usage\n *\n * Calling `NbToastrService.show(...)` will render new toast and return `NbToastrRef` with\n * help of which you may close newly created toast by calling `close` method.\n *\n * ```ts\n * const toastRef: NbToastRef = this.toastrService.show(...);\n * toastRef.close();\n * ```\n *\n * Config accepts following options:\n *\n * `position` - determines where on the screen toast will be rendered.\n * Default is `top-end`.\n *\n * @stacked-example(Position, toastr/toastr-positions.component)\n *\n * `status` - coloring and icon of the toast.\n * Default is `basic`.\n *\n * @stacked-example(Status, toastr/toastr-statuses.component)\n *\n * `duration` - the time after which the toast will be destroyed.\n * `0` means endless toast, that may be destroyed by click only.\n * Default is 3000 ms.\n *\n * @stacked-example(Duration, toastr/toastr-duration.component)\n *\n * `destroyByClick` - provides a capability to destroy toast by click.\n * Default is true.\n *\n * @stacked-example(Destroy by click, toastr/toastr-destroy-by-click.component)\n *\n * `preventDuplicates` - don't create new toast if it has the same title, message and status.\n * Default is false.\n *\n * @stacked-example(Prevent duplicates, toastr/toastr-prevent-duplicates.component)\n *\n * `duplicatesBehaviour` - determines how to treat the toasts duplication.\n * Compare with the previous message `previous`\n * or with all visible messages `all`.\n *\n * @stacked-example(Prevent duplicates behaviour , toastr/toastr-prevent-duplicates-behaviour.component)\n *\n * `limit` - the number of visible toasts in the toast container. The number of toasts is unlimited by default.\n *\n * @stacked-example(Prevent duplicates behaviour , toastr/toastr-limit.component)\n *\n * `hasIcon` - if true then render toast icon.\n * `icon` - you can pass icon class that will be applied into the toast.\n *\n * @stacked-example(Has icon, toastr/toastr-icon.component)\n * */\n@Injectable()\nexport class NbToastrService {\n  constructor(\n    @Inject(NB_TOASTR_CONFIG) protected globalConfig: NbToastrConfig,\n    protected containerRegistry: NbToastrContainerRegistry,\n  ) {}\n\n  /**\n   * Shows toast with message, title and user config.\n   * */\n  show(message, title?, userConfig?: Partial<NbToastrConfig>): NbToastRef {\n    const config = new NbToastrConfig({ ...this.globalConfig, ...userConfig });\n    const container = this.containerRegistry.get(config.position);\n    const toast = { message, title, config };\n    return container.attach(toast);\n  }\n\n  /**\n   * Shows success toast with message, title and user config.\n   * */\n  success(message, title?, config?: Partial<NbToastrConfig>): NbToastRef {\n    return this.show(message, title, { ...config, status: 'success' });\n  }\n\n  /**\n   * Shows info toast with message, title and user config.\n   * */\n  info(message, title?, config?: Partial<NbToastrConfig>): NbToastRef {\n    return this.show(message, title, { ...config, status: 'info' });\n  }\n\n  /**\n   * Shows warning toast with message, title and user config.\n   * */\n  warning(message, title?, config?: Partial<NbToastrConfig>): NbToastRef {\n    return this.show(message, title, { ...config, status: 'warning' });\n  }\n\n  /**\n   * Shows primary toast with message, title and user config.\n   * */\n  primary(message, title?, config?: Partial<NbToastrConfig>): NbToastRef {\n    return this.show(message, title, { ...config, status: 'primary' });\n  }\n\n  /**\n   * Shows danger toast with message, title and user config.\n   * */\n  danger(message, title?, config?: Partial<NbToastrConfig>): NbToastRef {\n    return this.show(message, title, { ...config, status: 'danger' });\n  }\n\n  /**\n   * Shows default toast with message, title and user config.\n   * */\n  default(message, title?, config?: Partial<NbToastrConfig>): NbToastRef {\n    return this.show(message, title, { ...config, status: 'basic' });\n  }\n\n  /**\n   * Shows control toast with message, title and user config.\n   * */\n  control(message, title?, config?: Partial<NbToastrConfig>): NbToastRef {\n    return this.default(message, title, { ...config, status: 'control' });\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { NbOverlayModule } from '../cdk/overlay/overlay.module';\nimport { NbSharedModule } from '../shared/shared.module';\nimport { NbIconModule } from '../icon/icon.module';\n\nimport { NbToastrContainerRegistry, NbToastrService } from './toastr.service';\nimport { NbToastComponent } from './toast.component';\nimport { NbToastrContainerComponent } from './toastr-container.component';\nimport { NB_TOASTR_CONFIG, NbToastrConfig } from './toastr-config';\n\n\n@NgModule({\n  imports: [NbSharedModule, NbOverlayModule, NbIconModule],\n  declarations: [NbToastrContainerComponent, NbToastComponent],\n})\nexport class NbToastrModule {\n  static forRoot(toastrConfig: Partial<NbToastrConfig> = {}): ModuleWithProviders<NbToastrModule> {\n    return {\n      ngModule: NbToastrModule,\n      providers: [\n        NbToastrService,\n        NbToastrContainerRegistry,\n        { provide: NB_TOASTR_CONFIG, useValue: toastrConfig },\n      ],\n    };\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NbToastrConfig } from './toastr-config';\n\nexport class NbToast {\n  title: string;\n  message: string;\n  config: NbToastrConfig;\n}\n\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, HostBinding, Input } from '@angular/core';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { NbRenderableContainer } from '../cdk/overlay/overlay-container';\nimport { NbPosition } from '../cdk/overlay/overlay-position';\nimport { NbIconConfig } from '../icon/icon.component';\n\n\n/**\n * Tooltip container.\n * Renders provided tooltip inside.\n *\n * @styles\n *\n * tooltip-background-color:\n * tooltip-border-color:\n * tooltip-border-style:\n * tooltip-border-width:\n * tooltip-border-radius:\n * tooltip-padding:\n * tooltip-text-color:\n * tooltip-text-font-family:\n * tooltip-text-font-size:\n * tooltip-text-font-weight:\n * tooltip-text-line-height:\n * tooltip-icon-height:\n * tooltip-icon-width:\n * tooltip-max-width:\n * tooltip-basic-background-color:\n * tooltip-basic-border-color:\n * tooltip-basic-text-color:\n * tooltip-primary-background-color:\n * tooltip-primary-border-color:\n * tooltip-primary-text-color:\n * tooltip-info-background-color:\n * tooltip-info-border-color:\n * tooltip-info-text-color:\n * tooltip-success-background-color:\n * tooltip-success-border-color:\n * tooltip-success-text-color:\n * tooltip-warning-background-color:\n * tooltip-warning-border-color:\n * tooltip-warning-text-color:\n * tooltip-danger-background-color:\n * tooltip-danger-border-color:\n * tooltip-danger-text-color:\n * tooltip-control-background-color:\n * tooltip-control-border-color:\n * tooltip-control-text-color:\n * tooltip-shadow:\n */\n@Component({\n    selector: 'nb-tooltip',\n    styleUrls: ['./tooltip.component.scss'],\n    template: `\n    <span class=\"arrow\"></span>\n    <div class=\"content\">\n      <nb-icon *ngIf=\"context?.icon\" [config]=\"context.icon\"></nb-icon>\n      <span *ngIf=\"content\">{{ content }}</span>\n    </div>\n  `,\n    animations: [\n        trigger('showTooltip', [\n            state('in', style({ opacity: 1 })),\n            transition('void => *', [\n                style({ opacity: 0 }),\n                animate(100),\n            ]),\n            transition('* => void', [\n                animate(100, style({ opacity: 0 })),\n            ]),\n        ]),\n    ],\n    standalone: false\n})\nexport class NbTooltipComponent implements NbRenderableContainer {\n\n  @Input()\n  content: string;\n\n  /**\n   * Popover position relatively host element.\n   * */\n  @Input()\n  position: NbPosition = NbPosition.TOP;\n\n  @HostBinding('class')\n  get binding() {\n    return `${this.position} ${this.statusClass}`;\n  }\n\n  @HostBinding('@showTooltip')\n  get show() {\n    return true;\n  }\n\n  @Input()\n  context: { icon?: string | NbIconConfig, status?: NbComponentOrCustomStatus } = {};\n\n  get statusClass() {\n    if (this.context.status) {\n      return this.statusService.getStatusClass(this.context.status);\n    }\n\n    return '';\n  }\n\n  constructor(protected statusService: NbStatusService) {\n  }\n\n  /**\n   * The method is empty since we don't need to do anything additionally\n   * render is handled by change detection\n   */\n  renderContent() {}\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  AfterViewInit,\n  Directive,\n  ElementRef,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  EventEmitter,\n} from '@angular/core';\nimport { skip, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { NbAdjustment, NbPosition, NbPositionValues, NbAdjustmentValues } from '../cdk/overlay/overlay-position';\nimport { NbTrigger } from '../cdk/overlay/overlay-trigger';\nimport { NbDynamicOverlay } from '../cdk/overlay/dynamic/dynamic-overlay';\nimport { NbDynamicOverlayHandler } from '../cdk/overlay/dynamic/dynamic-overlay-handler';\nimport { NbOverlayConfig } from '../cdk/overlay/mapping';\nimport { NbTooltipComponent } from './tooltip.component';\nimport { NbIconConfig } from '../icon/icon.component';\n\n/**\n *\n * Tooltip directive for small text/icon hints.\n *\n * ### Installation\n *\n * Import `NbTooltipModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbTooltipModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * @stacked-example(Showcase, tooltip/tooltip-showcase.component)\n *\n * Tooltip can accept a hint text and/or an icon:\n * @stacked-example(With Icon, tooltip/tooltip-with-icon.component)\n *\n * Same way as Popover, tooltip can accept placement position with `nbTooltipPlacement` property:\n * @stacked-example(Placements, tooltip/tooltip-placements.component)\n *\n * It is also possible to specify tooltip color using `nbTooltipStatus` property:\n * @stacked-example(Colored Tooltips, tooltip/tooltip-colors.component)\n *\n * Tooltip has a number of triggers which provides an ability to show and hide the component in different ways:\n *\n * - Click mode shows the component when a user clicks on the host element and hides when the user clicks\n * somewhere on the document outside the component.\n * - Hint provides capability to show the component when the user hovers over the host element\n * and hide when the user hovers out of the host.\n * - Hover works like hint mode with one exception - when the user moves mouse from host element to\n * the container element the component remains open, so that it is possible to interact with it content.\n * - Focus mode is applied when user focuses the element.\n * - Noop mode - the component won't react to the user interaction.\n */\n@Directive({\n    selector: '[nbTooltip]',\n    exportAs: 'nbTooltip',\n    providers: [NbDynamicOverlayHandler, NbDynamicOverlay],\n    standalone: false\n})\nexport class NbTooltipDirective implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n  protected destroy$ = new Subject<void>();\n  protected tooltipComponent = NbTooltipComponent;\n  protected dynamicOverlay: NbDynamicOverlay;\n\n  context: Object = {};\n\n  /**\n   * Tooltip message\n   */\n  @Input('nbTooltip')\n  content: string;\n\n  /**\n   * Position will be calculated relatively host element based on the position.\n   * Can be top, right, bottom, left, start or end.\n   */\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input('nbTooltipPlacement')\n  position: NbPosition = NbPosition.TOP;\n  static ngAcceptInputType_position: NbPositionValues;\n\n  /**\n   * Container position will change automatically based on this strategy if container can't fit view port.\n   * Set this property to `noop` value if you want to disable automatic adjustment.\n   * Available values: `clockwise` (default), `counterclockwise`, `vertical`, `horizontal`, `noop`.\n   */\n  @Input('nbTooltipAdjustment')\n  get adjustment(): NbAdjustment {\n    return this._adjustment;\n  }\n  set adjustment(value: NbAdjustment) {\n    this._adjustment = value;\n  }\n  protected _adjustment: NbAdjustment = NbAdjustment.CLOCKWISE;\n  static ngAcceptInputType_adjustment: NbAdjustmentValues;\n\n  @Input('nbTooltipClass')\n  get tooltipClass(): string {\n    return this._tooltipClass;\n  }\n  set tooltipClass(value: string) {\n    if (value !== this.tooltipClass) {\n      this._tooltipClass = value;\n      this.overlayConfig = { panelClass: this.tooltipClass };\n    }\n  }\n  _tooltipClass: string = '';\n\n  /**\n   * Accepts icon name or icon config object\n   * @param {string | NbIconConfig} icon name or config object\n   */\n  @Input('nbTooltipIcon')\n  set icon(icon: string | NbIconConfig) {\n    this.context = Object.assign(this.context, { icon });\n  }\n\n  /**\n   *\n   * @param {string} status\n   */\n  @Input('nbTooltipStatus')\n  set status(status: NbComponentOrCustomStatus) {\n    this.context = Object.assign(this.context, { status });\n  }\n\n  /**\n   * Describes when the container will be shown.\n   * Available options: `click`, `hover`, `hint`, `focus` and `noop`\n   * */\n  @Input('nbTooltipTrigger')\n  trigger: NbTrigger = NbTrigger.HINT;\n\n  /**\n   * Determines tooltip overlay offset (in pixels).\n   **/\n  @Input('nbTooltipOffset') offset = 8;\n\n  /** Disables the display of the tooltip. */\n  @Input('nbTooltipDisabled') disabled: boolean = false;\n\n  @Output()\n  nbTooltipShowStateChange = new EventEmitter<{ isShown: boolean }>();\n\n  protected overlayConfig: NbOverlayConfig = { panelClass: this.tooltipClass };\n\n  get isShown(): boolean {\n    return !!(this.dynamicOverlay && this.dynamicOverlay.isAttached);\n  }\n\n  constructor(protected hostRef: ElementRef, protected dynamicOverlayHandler: NbDynamicOverlayHandler) {}\n\n  ngOnInit() {\n    this.dynamicOverlayHandler.host(this.hostRef).componentType(this.tooltipComponent).offset(this.offset);\n  }\n\n  ngOnChanges() {\n    this.rebuild();\n  }\n\n  ngAfterViewInit() {\n    this.dynamicOverlay = this.configureDynamicOverlay().build();\n\n    this.dynamicOverlay.isShown\n      .pipe(skip(1), takeUntil(this.destroy$))\n      .subscribe((isShown: boolean) => this.nbTooltipShowStateChange.emit({ isShown }));\n  }\n\n  rebuild() {\n    this.dynamicOverlay = this.configureDynamicOverlay().rebuild();\n  }\n\n  show() {\n    this.dynamicOverlay.show();\n  }\n\n  hide() {\n    this.dynamicOverlay.hide();\n  }\n\n  toggle() {\n    this.dynamicOverlay.toggle();\n  }\n\n  ngOnDestroy() {\n    this.dynamicOverlayHandler.destroy();\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  protected configureDynamicOverlay() {\n    return this.dynamicOverlayHandler\n      .position(this.position)\n      .trigger(this.trigger)\n      .disabled(this.disabled)\n      .adjustment(this.adjustment)\n      .content(this.content)\n      .context(this.context)\n      .overlayConfig(this.overlayConfig);\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NbSharedModule } from '../shared/shared.module';\nimport { NbOverlayModule } from '../cdk/overlay/overlay.module';\nimport { NbIconModule } from '../icon/icon.module';\n\nimport { NbTooltipComponent } from './tooltip.component';\nimport { NbTooltipDirective } from './tooltip.directive';\n\n\n@NgModule({\n  imports: [NbSharedModule, NbOverlayModule, NbIconModule],\n  declarations: [NbTooltipComponent, NbTooltipDirective],\n  exports: [NbTooltipDirective],\n})\nexport class NbTooltipModule {\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const NB_SELECT_INJECTION_TOKEN = new InjectionToken('NB_SELECT_INJECTION_TOKEN');\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Inject,\n  Input,\n  OnDestroy,\n  Optional,\n  Output,\n  AfterViewInit,\n  NgZone,\n  Renderer2,\n} from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n// Component class scoped counter for aria attributes.\nlet lastOptionId: number = 0;\n\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbFocusableOption } from '../cdk/a11y/focus-key-manager';\nimport { NbHighlightableOption } from '../cdk/a11y/descendant-key-manager';\nimport { NB_SELECT_INJECTION_TOKEN } from '../select/select-injection-tokens';\nimport { NbSelectComponent } from '../select/select.component';\n\n/**\n * NbOptionComponent\n *\n * @styles\n *\n * option-background-color:\n * option-text-color:\n * option-text-font-family:\n * option-hover-background-color:\n * option-hover-text-color:\n * option-active-background-color:\n * option-active-text-color:\n * option-focus-background-color:\n * option-focus-text-color:\n * option-selected-background-color:\n * option-selected-text-color:\n * option-selected-hover-background-color:\n * option-selected-hover-text-color:\n * option-selected-active-background-color:\n * option-selected-active-text-color:\n * option-selected-focus-background-color:\n * option-selected-focus-text-color:\n * option-disabled-background-color:\n * option-disabled-text-color:\n * option-tiny-text-font-size:\n * option-tiny-text-font-weight:\n * option-tiny-text-line-height:\n * option-tiny-padding:\n * option-small-text-font-size:\n * option-small-text-font-weight:\n * option-small-text-line-height:\n * option-small-padding:\n * option-medium-text-font-size:\n * option-medium-text-font-weight:\n * option-medium-text-line-height:\n * option-medium-padding:\n * option-large-text-font-size:\n * option-large-text-font-weight:\n * option-large-text-line-height:\n * option-large-padding:\n * option-giant-text-font-size:\n * option-giant-text-font-weight:\n * option-giant-text-line-height:\n * option-giant-padding:\n **/\n@Component({\n    selector: 'nb-option',\n    styleUrls: ['./option.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n    <nb-checkbox *ngIf=\"withCheckbox\" [checked]=\"selected\" [disabled]=\"disabled\" aria-hidden=\"true\"> </nb-checkbox>\n    <ng-content></ng-content>\n  `,\n    standalone: false\n})\nexport class NbOptionComponent<T = any> implements OnDestroy, AfterViewInit, NbFocusableOption, NbHighlightableOption {\n  protected disabledByGroup = false;\n\n  /**\n   * Option value that will be fired on selection.\n   * */\n  @Input() value: T;\n\n  @Input()\n  get disabled(): boolean {\n    return this._disabled || this.disabledByGroup;\n  }\n  set disabled(value: boolean) {\n    this._disabled = convertToBoolProperty(value);\n  }\n  protected _disabled: boolean = false;\n  static ngAcceptInputType_disabled: NbBooleanInput;\n\n  /**\n   * Fires value when option selection change.\n   * */\n  @Output() selectionChange: EventEmitter<NbOptionComponent<T>> = new EventEmitter();\n\n  /**\n   * Fires when option clicked\n   */\n  protected click$: Subject<NbOptionComponent<T>> = new Subject<NbOptionComponent<T>>();\n  get click(): Observable<NbOptionComponent<T>> {\n    return this.click$.asObservable();\n  }\n\n  selected: boolean = false;\n  protected parent: NbSelectComponent;\n  protected alive: boolean = true;\n\n  /**\n   * Component scoped id for aria attributes.\n   * */\n  @HostBinding('attr.id')\n  id: string = `nb-option-${lastOptionId++}`;\n\n  constructor(\n    @Optional() @Inject(NB_SELECT_INJECTION_TOKEN) parent,\n    protected elementRef: ElementRef,\n    protected cd: ChangeDetectorRef,\n    protected zone: NgZone,\n    protected renderer: Renderer2,\n  ) {\n    this.parent = parent;\n  }\n\n  ngOnDestroy() {\n    this.alive = false;\n  }\n\n  ngAfterViewInit() {\n    // TODO: #2254\n    this.zone.runOutsideAngular(() =>\n      setTimeout(() => {\n        this.renderer.addClass(this.elementRef.nativeElement, 'nb-transition');\n      }),\n    );\n  }\n\n  /**\n   * Determines should we render checkbox.\n   * */\n  get withCheckbox(): boolean {\n    return this.multiple && this.value != null;\n  }\n\n  get content() {\n    return this.elementRef.nativeElement.textContent;\n  }\n\n  get hidden() {\n    return this.elementRef.nativeElement.hidden;\n  }\n\n  // TODO: replace with isShowCheckbox property to control this behaviour outside, issues/1965\n  @HostBinding('class.multiple')\n  get multiple() {\n    // We check parent existing because parent can be NbSelectComponent or\n    // NbAutocomplete and `miltiple` property exists only in NbSelectComponent\n    return this.parent ? (this.parent as NbSelectComponent).multiple : false;\n  }\n\n  @HostBinding('class.selected')\n  get selectedClass(): boolean {\n    return this.selected;\n  }\n\n  @HostBinding('attr.disabled')\n  get disabledAttribute(): '' | null {\n    return this.disabled ? '' : null;\n  }\n\n  @HostBinding('tabIndex')\n  get tabindex() {\n    return '-1';\n  }\n\n  @HostBinding('class.active')\n  get activeClass() {\n    return this._active;\n  }\n  protected _active: boolean = false;\n\n  @HostListener('click', ['$event'])\n  @HostListener('keydown.space', ['$event'])\n  @HostListener('keydown.enter', ['$event'])\n  onClick(event) {\n    this.click$.next(this);\n\n    // Prevent scroll on space click, etc.\n    event.preventDefault();\n  }\n\n  select() {\n    this.setSelection(true);\n  }\n\n  deselect() {\n    this.setSelection(false);\n  }\n\n  /**\n   * Sets disabled by group state and marks component for check.\n   */\n  setDisabledByGroupState(disabled: boolean): void {\n    // Check if the component still alive as the option group defer method call so the component may become destroyed.\n    if (this.disabledByGroup !== disabled && this.alive) {\n      this.disabledByGroup = disabled;\n      this.cd.markForCheck();\n    }\n  }\n\n  protected setSelection(selected: boolean): void {\n    /**\n     * In case of changing options in runtime the reference to the selected option will be kept in select component.\n     * This may lead to exceptions with detecting changes in destroyed component.\n     *\n     * Also Angular can call writeValue on destroyed view (select implements ControlValueAccessor).\n     * angular/angular#27803\n     * */\n    if (this.alive && this.selected !== selected) {\n      this.selected = selected;\n      this.selectionChange.emit(this);\n      this.cd.markForCheck();\n    }\n  }\n\n  focus(): void {\n    this.elementRef.nativeElement.focus();\n  }\n\n  getLabel(): string {\n    return this.content;\n  }\n\n  setActiveStyles(): void {\n    this._active = true;\n    this.cd.markForCheck();\n  }\n\n  setInactiveStyles(): void {\n    this._active = false;\n    this.cd.markForCheck();\n  }\n}\n","import { ChangeDetectionStrategy, Component, Input, HostBinding } from '@angular/core';\n\nimport { NbComponentSize } from '../component-size';\nimport { NbPosition } from '../cdk/overlay/overlay-position';\n\n/**\n * The `NbOptionListComponent` is container component for `NbOptionGroupComponent` and`NbOptionComponent` list.\n *\n * @styles\n *\n * option-list-max-height:\n * option-list-shadow:\n * option-list-background-color:\n * option-list-border-style:\n * option-list-border-width:\n * option-list-border-color:\n * option-list-border-radius:\n * option-list-adjacent-border-color:\n * option-list-adjacent-border-style:\n * option-list-adjacent-border-width:\n * */\n@Component({\n    selector: 'nb-option-list',\n    template: `\n    <ul class=\"option-list\">\n      <ng-content></ng-content>\n    </ul>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbOptionListComponent<T> {\n\n  @Input() size: NbComponentSize = 'medium';\n\n  @Input() position: NbPosition;\n\n  @HostBinding('class.position-top')\n  get positionTop(): boolean {\n    return this.position === NbPosition.TOP;\n  }\n\n  @HostBinding('class.position-bottom')\n  get positionBottom(): boolean {\n    return this.position === NbPosition.BOTTOM;\n  }\n\n  @HostBinding('class.size-tiny')\n  get sizeTiny(): boolean {\n    return this.size === 'tiny';\n  }\n\n  @HostBinding('class.size-small')\n  get sizeSmall(): boolean {\n    return this.size === 'small';\n  }\n\n  @HostBinding('class.size-medium')\n  get sizeMedium(): boolean {\n    return this.size === 'medium';\n  }\n\n  @HostBinding('class.size-large')\n  get sizeLarge(): boolean {\n    return this.size === 'large';\n  }\n\n  @HostBinding('class.size-giant')\n  get sizeGiant(): boolean {\n    return this.size === 'giant';\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  AfterContentInit,\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ComponentRef,\n  ContentChild,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  HostBinding,\n  Inject,\n  Input,\n  OnDestroy,\n  Output,\n  QueryList,\n  ViewChild,\n  SimpleChanges,\n  OnChanges,\n  Renderer2,\n  NgZone,\n} from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { merge, Subject, BehaviorSubject, from } from 'rxjs';\nimport { startWith, switchMap, takeUntil, filter, map, finalize, take } from 'rxjs/operators';\n\nimport { NbStatusService } from '../../services/status.service';\nimport {\n  NbAdjustableConnectedPositionStrategy,\n  NbAdjustment,\n  NbPosition,\n  NbPositionBuilderService,\n} from '../cdk/overlay/overlay-position';\nimport { NbOverlayRef, NbPortalDirective, NbScrollStrategy } from '../cdk/overlay/mapping';\nimport { NbOverlayService } from '../cdk/overlay/overlay-service';\nimport { NbTrigger, NbTriggerStrategy, NbTriggerStrategyBuilderService } from '../cdk/overlay/overlay-trigger';\nimport { NbFocusKeyManager, NbFocusKeyManagerFactoryService } from '../cdk/a11y/focus-key-manager';\nimport { ESCAPE } from '../cdk/keycodes/keycodes';\nimport { NbComponentSize } from '../component-size';\nimport { NbComponentShape } from '../component-shape';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { NB_DOCUMENT } from '../../theme.options';\nimport { NbOptionComponent } from '../option/option.component';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NB_SELECT_INJECTION_TOKEN } from './select-injection-tokens';\nimport { NbFormFieldControl, NbFormFieldControlConfig } from '../form-field/form-field-control';\nimport { NbFocusMonitor } from '../cdk/a11y/a11y.module';\nimport { NbScrollStrategies } from '../cdk/adapter/block-scroll-strategy-adapter';\n\nexport type NbSelectCompareFunction<T = any> = (v1: any, v2: any) => boolean;\nexport type NbSelectAppearance = 'outline' | 'filled' | 'hero';\n\n@Component({\n    selector: 'nb-select-label',\n    template: '<ng-content></ng-content>',\n    standalone: false\n})\nexport class NbSelectLabelComponent {}\n\nexport function nbSelectFormFieldControlConfigFactory() {\n  const config = new NbFormFieldControlConfig();\n  config.supportsSuffix = false;\n  return config;\n}\n\n/**\n * The `NbSelectComponent` provides a capability to select one of the passed items.\n *\n * @stacked-example(Showcase, select/select-showcase.component)\n *\n * ### Installation\n *\n * Import `NbSelectModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbSelectModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * If you want to use it as the multi-select control you have to mark it as `multiple`.\n * In this case, `nb-select` will work only with arrays - accept arrays and propagate arrays.\n *\n * @stacked-example(Multiple, select/select-multiple.component)\n *\n * Items without values will clean the selection. Both `null` and `undefined` values will also clean the selection.\n *\n * @stacked-example(Clean selection, select/select-clean.component)\n *\n * Select may be bounded using `selected` input:\n *\n * ```html\n * <nb-select [(selected)]=\"selected\"></nb-selected>\n * ```\n *\n * Or you can bind control with form controls or ngModel:\n *\n * @stacked-example(Select form binding, select/select-form.component)\n *\n * Options in the select may be grouped using `nb-option-group` component.\n *\n * @stacked-example(Grouping, select/select-groups.component)\n *\n * Select may have a placeholder that will be shown when nothing selected:\n *\n * @stacked-example(Placeholder, select/select-placeholder.component)\n *\n * You can disable select, options and whole groups.\n *\n * @stacked-example(Disabled select, select/select-disabled.component)\n *\n * Also, the custom label may be provided in select.\n * This custom label will be used for instead placeholder when something selected.\n *\n * @stacked-example(Custom label, select/select-label.component)\n *\n * Default `nb-select` size is `medium` and status is `basic`.\n * Select is available in multiple colors using `status` property:\n *\n * @stacked-example(Select statuses, select/select-status.component)\n *\n * There are five select sizes:\n *\n * @stacked-example(Select sizes, select/select-sizes.component)\n *\n * And two additional style types - `filled`:\n *\n * @stacked-example(Filled select, select/select-filled.component)\n *\n * and `hero`:\n *\n * @stacked-example(Select colors, select/select-hero.component)\n *\n * Select is available in different shapes, that could be combined with the other properties:\n *\n * @stacked-example(Select shapes, select/select-shapes.component)\n *\n * By default, the component selects options whose values are strictly equal (`===`) with the select value.\n * To change such behavior, pass a custom comparator function to the `compareWith` attribute.\n *\n * @stacked-example(Select custom comparator, select/select-compare-with.component)\n *\n * You can add an additional icon to the select via the `nb-form-field` component:\n * @stacked-example(Select with icon, select/select-icon.component)\n *\n * @additional-example(Interactive, select/select-interactive.component)\n *\n * @styles\n *\n * select-cursor:\n * select-disabled-cursor:\n * select-min-width:\n * select-outline-width:\n * select-outline-color:\n * select-icon-offset:\n * select-text-font-family:\n * select-placeholder-text-font-family:\n * select-tiny-text-font-size:\n * select-tiny-text-font-weight:\n * select-tiny-text-line-height:\n * select-tiny-placeholder-text-font-size:\n * select-tiny-placeholder-text-font-weight:\n * select-tiny-max-width:\n * select-small-text-font-size:\n * select-small-text-font-weight:\n * select-small-text-line-height:\n * select-small-placeholder-text-font-size:\n * select-small-placeholder-text-font-weight:\n * select-small-max-width:\n * select-medium-text-font-size:\n * select-medium-text-font-weight:\n * select-medium-text-line-height:\n * select-medium-placeholder-text-font-size:\n * select-medium-placeholder-text-font-weight:\n * select-medium-max-width:\n * select-large-text-font-size:\n * select-large-text-font-weight:\n * select-large-text-line-height:\n * select-large-placeholder-text-font-size:\n * select-large-placeholder-text-font-weight:\n * select-large-max-width:\n * select-giant-text-font-size:\n * select-giant-text-font-weight:\n * select-giant-text-line-height:\n * select-giant-placeholder-text-font-size:\n * select-giant-placeholder-text-font-weight:\n * select-giant-max-width:\n * select-rectangle-border-radius:\n * select-semi-round-border-radius:\n * select-round-border-radius:\n * select-outline-border-style:\n * select-outline-border-width:\n * select-outline-tiny-padding:\n * select-outline-small-padding:\n * select-outline-medium-padding:\n * select-outline-large-padding:\n * select-outline-giant-padding:\n * select-outline-basic-icon-color:\n * select-outline-basic-text-color:\n * select-outline-basic-placeholder-text-color:\n * select-outline-basic-background-color:\n * select-outline-basic-border-color:\n * select-outline-basic-focus-background-color:\n * select-outline-basic-focus-border-color:\n * select-outline-basic-hover-background-color:\n * select-outline-basic-hover-border-color:\n * select-outline-basic-disabled-background-color:\n * select-outline-basic-disabled-border-color:\n * select-outline-basic-disabled-icon-color:\n * select-outline-basic-disabled-text-color:\n * select-outline-primary-icon-color:\n * select-outline-primary-text-color:\n * select-outline-primary-placeholder-text-color:\n * select-outline-primary-background-color:\n * select-outline-primary-border-color:\n * select-outline-primary-focus-background-color:\n * select-outline-primary-focus-border-color:\n * select-outline-primary-hover-background-color:\n * select-outline-primary-hover-border-color:\n * select-outline-primary-disabled-background-color:\n * select-outline-primary-disabled-border-color:\n * select-outline-primary-disabled-icon-color:\n * select-outline-primary-disabled-text-color:\n * select-outline-success-icon-color:\n * select-outline-success-text-color:\n * select-outline-success-placeholder-text-color:\n * select-outline-success-background-color:\n * select-outline-success-border-color:\n * select-outline-success-focus-background-color:\n * select-outline-success-focus-border-color:\n * select-outline-success-hover-background-color:\n * select-outline-success-hover-border-color:\n * select-outline-success-disabled-background-color:\n * select-outline-success-disabled-border-color:\n * select-outline-success-disabled-icon-color:\n * select-outline-success-disabled-text-color:\n * select-outline-info-icon-color:\n * select-outline-info-text-color:\n * select-outline-info-placeholder-text-color:\n * select-outline-info-background-color:\n * select-outline-info-border-color:\n * select-outline-info-focus-background-color:\n * select-outline-info-focus-border-color:\n * select-outline-info-hover-background-color:\n * select-outline-info-hover-border-color:\n * select-outline-info-disabled-background-color:\n * select-outline-info-disabled-border-color:\n * select-outline-info-disabled-icon-color:\n * select-outline-info-disabled-text-color:\n * select-outline-warning-icon-color:\n * select-outline-warning-text-color:\n * select-outline-warning-placeholder-text-color:\n * select-outline-warning-background-color:\n * select-outline-warning-border-color:\n * select-outline-warning-focus-background-color:\n * select-outline-warning-focus-border-color:\n * select-outline-warning-hover-background-color:\n * select-outline-warning-hover-border-color:\n * select-outline-warning-disabled-background-color:\n * select-outline-warning-disabled-border-color:\n * select-outline-warning-disabled-icon-color:\n * select-outline-warning-disabled-text-color:\n * select-outline-danger-icon-color:\n * select-outline-danger-text-color:\n * select-outline-danger-placeholder-text-color:\n * select-outline-danger-background-color:\n * select-outline-danger-border-color:\n * select-outline-danger-focus-background-color:\n * select-outline-danger-focus-border-color:\n * select-outline-danger-hover-background-color:\n * select-outline-danger-hover-border-color:\n * select-outline-danger-disabled-background-color:\n * select-outline-danger-disabled-border-color:\n * select-outline-danger-disabled-icon-color:\n * select-outline-danger-disabled-text-color:\n * select-outline-control-icon-color:\n * select-outline-control-text-color:\n * select-outline-control-placeholder-text-color:\n * select-outline-control-background-color:\n * select-outline-control-border-color:\n * select-outline-control-focus-background-color:\n * select-outline-control-focus-border-color:\n * select-outline-control-hover-background-color:\n * select-outline-control-hover-border-color:\n * select-outline-control-disabled-background-color:\n * select-outline-control-disabled-border-color:\n * select-outline-control-disabled-icon-color:\n * select-outline-control-disabled-text-color:\n * select-outline-adjacent-border-style:\n * select-outline-adjacent-border-width:\n * select-outline-basic-open-border-color:\n * select-outline-basic-adjacent-border-color:\n * select-outline-primary-open-border-color:\n * select-outline-primary-adjacent-border-color:\n * select-outline-success-open-border-color:\n * select-outline-success-adjacent-border-color:\n * select-outline-info-open-border-color:\n * select-outline-info-adjacent-border-color:\n * select-outline-warning-open-border-color:\n * select-outline-warning-adjacent-border-color:\n * select-outline-danger-open-border-color:\n * select-outline-danger-adjacent-border-color:\n * select-outline-control-open-border-color:\n * select-outline-control-adjacent-border-color:\n * select-filled-border-style:\n * select-filled-border-width:\n * select-filled-tiny-padding:\n * select-filled-small-padding:\n * select-filled-medium-padding:\n * select-filled-large-padding:\n * select-filled-giant-padding:\n * select-filled-basic-background-color:\n * select-filled-basic-border-color:\n * select-filled-basic-icon-color:\n * select-filled-basic-text-color:\n * select-filled-basic-placeholder-text-color:\n * select-filled-basic-focus-background-color:\n * select-filled-basic-focus-border-color:\n * select-filled-basic-hover-background-color:\n * select-filled-basic-hover-border-color:\n * select-filled-basic-disabled-background-color:\n * select-filled-basic-disabled-border-color:\n * select-filled-basic-disabled-icon-color:\n * select-filled-basic-disabled-text-color:\n * select-filled-primary-background-color:\n * select-filled-primary-border-color:\n * select-filled-primary-icon-color:\n * select-filled-primary-text-color:\n * select-filled-primary-placeholder-text-color:\n * select-filled-primary-focus-background-color:\n * select-filled-primary-focus-border-color:\n * select-filled-primary-hover-background-color:\n * select-filled-primary-hover-border-color:\n * select-filled-primary-disabled-background-color:\n * select-filled-primary-disabled-border-color:\n * select-filled-primary-disabled-icon-color:\n * select-filled-primary-disabled-text-color:\n * select-filled-success-background-color:\n * select-filled-success-border-color:\n * select-filled-success-icon-color:\n * select-filled-success-text-color:\n * select-filled-success-placeholder-text-color:\n * select-filled-success-focus-background-color:\n * select-filled-success-focus-border-color:\n * select-filled-success-hover-background-color:\n * select-filled-success-hover-border-color:\n * select-filled-success-disabled-background-color:\n * select-filled-success-disabled-border-color:\n * select-filled-success-disabled-icon-color:\n * select-filled-success-disabled-text-color:\n * select-filled-info-background-color:\n * select-filled-info-border-color:\n * select-filled-info-icon-color:\n * select-filled-info-text-color:\n * select-filled-info-placeholder-text-color:\n * select-filled-info-focus-background-color:\n * select-filled-info-focus-border-color:\n * select-filled-info-hover-background-color:\n * select-filled-info-hover-border-color:\n * select-filled-info-disabled-background-color:\n * select-filled-info-disabled-border-color:\n * select-filled-info-disabled-icon-color:\n * select-filled-info-disabled-text-color:\n * select-filled-warning-background-color:\n * select-filled-warning-border-color:\n * select-filled-warning-icon-color:\n * select-filled-warning-text-color:\n * select-filled-warning-placeholder-text-color:\n * select-filled-warning-focus-background-color:\n * select-filled-warning-focus-border-color:\n * select-filled-warning-hover-background-color:\n * select-filled-warning-hover-border-color:\n * select-filled-warning-disabled-background-color:\n * select-filled-warning-disabled-border-color:\n * select-filled-warning-disabled-icon-color:\n * select-filled-warning-disabled-text-color:\n * select-filled-danger-background-color:\n * select-filled-danger-border-color:\n * select-filled-danger-icon-color:\n * select-filled-danger-text-color:\n * select-filled-danger-placeholder-text-color:\n * select-filled-danger-focus-background-color:\n * select-filled-danger-focus-border-color:\n * select-filled-danger-hover-background-color:\n * select-filled-danger-hover-border-color:\n * select-filled-danger-disabled-background-color:\n * select-filled-danger-disabled-border-color:\n * select-filled-danger-disabled-icon-color:\n * select-filled-danger-disabled-text-color:\n * select-filled-control-background-color:\n * select-filled-control-border-color:\n * select-filled-control-icon-color:\n * select-filled-control-text-color:\n * select-filled-control-placeholder-text-color:\n * select-filled-control-focus-background-color:\n * select-filled-control-focus-border-color:\n * select-filled-control-hover-background-color:\n * select-filled-control-hover-border-color:\n * select-filled-control-disabled-background-color:\n * select-filled-control-disabled-border-color:\n * select-filled-control-disabled-icon-color:\n * select-filled-control-disabled-text-color:\n * select-hero-tiny-padding:\n * select-hero-small-padding:\n * select-hero-medium-padding:\n * select-hero-large-padding:\n * select-hero-giant-padding:\n * select-hero-basic-left-background-color:\n * select-hero-basic-right-background-color:\n * select-hero-basic-icon-color:\n * select-hero-basic-text-color:\n * select-hero-basic-placeholder-text-color:\n * select-hero-basic-focus-left-background-color:\n * select-hero-basic-focus-right-background-color:\n * select-hero-basic-hover-left-background-color:\n * select-hero-basic-hover-right-background-color:\n * select-hero-basic-disabled-background-color:\n * select-hero-basic-disabled-icon-color:\n * select-hero-basic-disabled-text-color:\n * select-hero-primary-left-background-color:\n * select-hero-primary-right-background-color:\n * select-hero-primary-icon-color:\n * select-hero-primary-text-color:\n * select-hero-primary-placeholder-text-color:\n * select-hero-primary-focus-left-background-color:\n * select-hero-primary-focus-right-background-color:\n * select-hero-primary-hover-left-background-color:\n * select-hero-primary-hover-right-background-color:\n * select-hero-primary-disabled-background-color:\n * select-hero-primary-disabled-icon-color:\n * select-hero-primary-disabled-text-color:\n * select-hero-success-left-background-color:\n * select-hero-success-right-background-color:\n * select-hero-success-icon-color:\n * select-hero-success-text-color:\n * select-hero-success-placeholder-text-color:\n * select-hero-success-focus-left-background-color:\n * select-hero-success-focus-right-background-color:\n * select-hero-success-hover-left-background-color:\n * select-hero-success-hover-right-background-color:\n * select-hero-success-disabled-background-color:\n * select-hero-success-disabled-icon-color:\n * select-hero-success-disabled-text-color:\n * select-hero-info-left-background-color:\n * select-hero-info-right-background-color:\n * select-hero-info-icon-color:\n * select-hero-info-text-color:\n * select-hero-info-placeholder-text-color:\n * select-hero-info-focus-left-background-color:\n * select-hero-info-focus-right-background-color:\n * select-hero-info-hover-left-background-color:\n * select-hero-info-hover-right-background-color:\n * select-hero-info-disabled-background-color:\n * select-hero-info-disabled-icon-color:\n * select-hero-info-disabled-text-color:\n * select-hero-warning-left-background-color:\n * select-hero-warning-right-background-color:\n * select-hero-warning-icon-color:\n * select-hero-warning-text-color:\n * select-hero-warning-placeholder-text-color:\n * select-hero-warning-focus-left-background-color:\n * select-hero-warning-focus-right-background-color:\n * select-hero-warning-hover-left-background-color:\n * select-hero-warning-hover-right-background-color:\n * select-hero-warning-disabled-background-color:\n * select-hero-warning-disabled-icon-color:\n * select-hero-warning-disabled-text-color:\n * select-hero-danger-left-background-color:\n * select-hero-danger-right-background-color:\n * select-hero-danger-icon-color:\n * select-hero-danger-text-color:\n * select-hero-danger-placeholder-text-color:\n * select-hero-danger-focus-left-background-color:\n * select-hero-danger-focus-right-background-color:\n * select-hero-danger-hover-left-background-color:\n * select-hero-danger-hover-right-background-color:\n * select-hero-danger-disabled-background-color:\n * select-hero-danger-disabled-icon-color:\n * select-hero-danger-disabled-text-color:\n * select-hero-control-left-background-color:\n * select-hero-control-right-background-color:\n * select-hero-control-icon-color:\n * select-hero-control-text-color:\n * select-hero-control-placeholder-text-color:\n * select-hero-control-focus-left-background-color:\n * select-hero-control-focus-right-background-color:\n * select-hero-control-hover-left-background-color:\n * select-hero-control-hover-right-background-color:\n * select-hero-control-disabled-background-color:\n * select-hero-control-disabled-icon-color:\n * select-hero-control-disabled-text-color:\n * */\n@Component({\n    selector: 'nb-select',\n    templateUrl: './select.component.html',\n    styleUrls: ['./select.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => NbSelectComponent),\n            multi: true,\n        },\n        { provide: NB_SELECT_INJECTION_TOKEN, useExisting: NbSelectComponent },\n        { provide: NbFormFieldControl, useExisting: NbSelectComponent },\n        { provide: NbFormFieldControlConfig, useFactory: nbSelectFormFieldControlConfigFactory },\n    ],\n    standalone: false\n})\nexport class NbSelectComponent\n  implements OnChanges, AfterViewInit, AfterContentInit, OnDestroy, ControlValueAccessor, NbFormFieldControl\n{\n  /**\n   * Select size, available sizes:\n   * `tiny`, `small`, `medium` (default), `large`, `giant`\n   */\n  @Input() size: NbComponentSize = 'medium';\n\n  /**\n   * Select status (adds specific styles):\n   * `basic`, `primary`, `info`, `success`, `warning`, `danger`, `control`\n   */\n  @Input() status: NbComponentOrCustomStatus = 'basic';\n\n  /**\n   * Select shapes: `rectangle` (default), `round`, `semi-round`\n   */\n  @Input() shape: NbComponentShape = 'rectangle';\n\n  /**\n   * Select appearances: `outline` (default), `filled`, `hero`\n   */\n  @Input() appearance: NbSelectAppearance = 'outline';\n\n  /**\n   * Specifies class to be set on `nb-option`s container (`nb-option-list`)\n   * */\n  @Input() optionsListClass: NgClass['ngClass'];\n\n  /**\n   * Specifies class for the overlay panel with options\n   * */\n  @Input() optionsPanelClass: string | string[];\n\n  /**\n   * Specifies width (in pixels) to be set on `nb-option`s container (`nb-option-list`)\n   * */\n  @Input()\n  get optionsWidth(): number {\n    return this._optionsWidth ?? this.hostWidth;\n  }\n  set optionsWidth(value: number) {\n    this._optionsWidth = value;\n  }\n  protected _optionsWidth: number | undefined;\n\n  /**\n   * Adds `outline` styles\n   */\n  @Input()\n  @HostBinding('class.appearance-outline')\n  get outline(): boolean {\n    return this.appearance === 'outline';\n  }\n  set outline(value: boolean) {\n    if (convertToBoolProperty(value)) {\n      this.appearance = 'outline';\n    }\n  }\n  static ngAcceptInputType_outline: NbBooleanInput;\n\n  /**\n   * Adds `filled` styles\n   */\n  @Input()\n  @HostBinding('class.appearance-filled')\n  get filled(): boolean {\n    return this.appearance === 'filled';\n  }\n  set filled(value: boolean) {\n    if (convertToBoolProperty(value)) {\n      this.appearance = 'filled';\n    }\n  }\n  static ngAcceptInputType_filled: NbBooleanInput;\n\n  /**\n   * Adds `hero` styles\n   */\n  @Input()\n  @HostBinding('class.appearance-hero')\n  get hero(): boolean {\n    return this.appearance === 'hero';\n  }\n  set hero(value: boolean) {\n    if (convertToBoolProperty(value)) {\n      this.appearance = 'hero';\n    }\n  }\n  static ngAcceptInputType_hero: NbBooleanInput;\n\n  /**\n   * Disables the select\n   */\n  @Input()\n  get disabled(): boolean {\n    return !!this._disabled;\n  }\n  set disabled(value: boolean) {\n    this._disabled = convertToBoolProperty(value);\n  }\n  protected _disabled: boolean;\n  static ngAcceptInputType_disabled: NbBooleanInput;\n\n  /**\n   * If set element will fill its container\n   */\n  @Input()\n  @HostBinding('class.full-width')\n  get fullWidth(): boolean {\n    return this._fullWidth;\n  }\n  set fullWidth(value: boolean) {\n    this._fullWidth = convertToBoolProperty(value);\n  }\n  protected _fullWidth: boolean = false;\n  static ngAcceptInputType_fullWidth: NbBooleanInput;\n\n  /**\n   * Renders select placeholder if nothing selected.\n   * */\n  @Input() placeholder: string = '';\n\n  /**\n   * A function to compare option value with selected value.\n   * By default, values are compared with strict equality (`===`).\n   */\n  @Input()\n  get compareWith(): NbSelectCompareFunction {\n    return this._compareWith;\n  }\n  set compareWith(fn: NbSelectCompareFunction) {\n    if (typeof fn !== 'function') {\n      return;\n    }\n\n    this._compareWith = fn;\n\n    if (this.selectionModel.length && this.canSelectValue()) {\n      this.setSelection(this.selected);\n    }\n  }\n  protected _compareWith: NbSelectCompareFunction = (v1: any, v2: any) => v1 === v2;\n\n  /**\n   * Accepts selected item or array of selected items.\n   * */\n  @Input()\n  set selected(value) {\n    this.writeValue(value);\n  }\n  get selected() {\n    return this.multiple ? this.selectionModel.map((o) => o.value) : this.selectionModel[0].value;\n  }\n\n  /**\n   * Gives capability just write `multiple` over the element.\n   * */\n  @Input()\n  get multiple(): boolean {\n    return this._multiple;\n  }\n  set multiple(value: boolean) {\n    this._multiple = convertToBoolProperty(value);\n  }\n  protected _multiple: boolean = false;\n  static ngAcceptInputType_multiple: NbBooleanInput;\n\n  /**\n   * Determines options overlay offset (in pixels).\n   **/\n  @Input() optionsOverlayOffset = 8;\n\n  /**\n   * Determines options overlay scroll strategy.\n   **/\n  @Input() scrollStrategy: NbScrollStrategies = 'block';\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.status)) {\n      return [this.statusService.getStatusClass(this.status)];\n    }\n    return [];\n  }\n\n  /**\n   * Will be emitted when selected value changes.\n   * */\n  @Output() selectedChange: EventEmitter<any> = new EventEmitter();\n\n  /**\n   * List of `NbOptionComponent`'s components passed as content.\n   * TODO maybe it would be better provide wrapper\n   * */\n  @ContentChildren(NbOptionComponent, { descendants: true }) options: QueryList<NbOptionComponent>;\n\n  /**\n   * Custom select label, will be rendered instead of default enumeration with coma.\n   * */\n  @ContentChild(NbSelectLabelComponent) customLabel;\n\n  /**\n   * NbCard with options content.\n   * */\n  @ViewChild(NbPortalDirective) portal: NbPortalDirective;\n\n  @ViewChild('selectButton', { read: ElementRef }) button: ElementRef<HTMLButtonElement>;\n\n  /**\n   * Determines is select opened.\n   * */\n  @HostBinding('class.open')\n  get isOpen(): boolean {\n    return this.ref && this.ref.hasAttached();\n  }\n\n  /**\n   * List of selected options.\n   * */\n  selectionModel: NbOptionComponent[] = [];\n\n  positionStrategy: NbAdjustableConnectedPositionStrategy;\n\n  /**\n   * Current overlay position because of we have to toggle overlayPosition\n   * in [ngClass] direction and this directive can use only string.\n   */\n  overlayPosition: NbPosition = '' as NbPosition;\n\n  protected ref: NbOverlayRef;\n\n  protected triggerStrategy: NbTriggerStrategy;\n\n  protected alive: boolean = true;\n\n  protected destroy$ = new Subject<void>();\n\n  protected keyManager: NbFocusKeyManager<NbOptionComponent>;\n\n  /**\n   * If a user assigns value before content nb-options's rendered the value will be putted in this variable.\n   * And then applied after content rendered.\n   * Only the last value will be applied.\n   * */\n  protected queue;\n\n  /**\n   * Function passed through control value accessor to propagate changes.\n   * */\n  protected onChange: Function = () => {};\n  protected onTouched: Function = () => {};\n\n  /*\n   * @docs-private\n   **/\n  status$ = new BehaviorSubject<NbComponentOrCustomStatus>(this.status);\n\n  /*\n   * @docs-private\n   **/\n  size$ = new BehaviorSubject<NbComponentSize>(this.size);\n\n  /*\n   * @docs-private\n   **/\n  focused$ = new BehaviorSubject<boolean>(false);\n\n  /*\n   * @docs-private\n   **/\n  disabled$ = new BehaviorSubject<boolean>(this.disabled);\n\n  /*\n   * @docs-private\n   **/\n  fullWidth$ = new BehaviorSubject<boolean>(this.fullWidth);\n\n  constructor(\n    @Inject(NB_DOCUMENT) protected document,\n    protected overlay: NbOverlayService,\n    protected hostRef: ElementRef<HTMLElement>,\n    protected positionBuilder: NbPositionBuilderService,\n    protected triggerStrategyBuilder: NbTriggerStrategyBuilderService,\n    protected cd: ChangeDetectorRef,\n    protected focusKeyManagerFactoryService: NbFocusKeyManagerFactoryService<NbOptionComponent>,\n    protected focusMonitor: NbFocusMonitor,\n    protected renderer: Renderer2,\n    protected zone: NgZone,\n    protected statusService: NbStatusService,\n  ) {}\n\n  /**\n   * Determines is select hidden.\n   * */\n  get isHidden(): boolean {\n    return !this.isOpen;\n  }\n\n  /**\n   * Returns width of the select button.\n   * */\n  get hostWidth(): number {\n    return this.button.nativeElement.getBoundingClientRect().width;\n  }\n\n  get selectButtonClasses(): string[] {\n    const classes = [];\n\n    if (!this.selectionModel.length) {\n      classes.push('placeholder');\n    }\n    if (!this.selectionModel.length && !this.placeholder) {\n      classes.push('empty');\n    }\n    if (this.isOpen) {\n      classes.push(this.overlayPosition);\n    }\n\n    return classes;\n  }\n\n  /**\n   * Content rendered in the label.\n   * */\n  get selectionView() {\n    if (this.selectionModel.length > 1) {\n      return this.selectionModel.map((option: NbOptionComponent) => option.content).join(', ');\n    }\n\n    return this.selectionModel[0].content;\n  }\n\n  ngOnChanges({ disabled, status, size, fullWidth }: SimpleChanges) {\n    if (disabled) {\n      this.disabled$.next(disabled.currentValue);\n    }\n    if (status) {\n      this.status$.next(status.currentValue);\n    }\n    if (size) {\n      this.size$.next(size.currentValue);\n    }\n    if (fullWidth) {\n      this.fullWidth$.next(this.fullWidth);\n    }\n  }\n\n  ngAfterContentInit() {\n    this.options.changes\n      .pipe(\n        startWith(this.options),\n        filter(() => this.queue != null && this.canSelectValue()),\n        // Call 'writeValue' when current change detection run is finished.\n        // When writing is finished, change detection starts again, since\n        // microtasks queue is empty.\n        // Prevents ExpressionChangedAfterItHasBeenCheckedError.\n        switchMap((options: QueryList<NbOptionComponent>) => from(Promise.resolve(options))),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => this.writeValue(this.queue));\n  }\n\n  ngAfterViewInit() {\n    this.triggerStrategy = this.createTriggerStrategy();\n\n    this.subscribeOnButtonFocus();\n    this.subscribeOnTriggers();\n    this.subscribeOnOptionClick();\n\n    // TODO: #2254\n    this.zone.runOutsideAngular(() =>\n      setTimeout(() => {\n        this.renderer.addClass(this.hostRef.nativeElement, 'nb-transition');\n      }),\n    );\n  }\n\n  ngOnDestroy() {\n    this.alive = false;\n\n    this.destroy$.next();\n    this.destroy$.complete();\n\n    if (this.ref) {\n      this.ref.dispose();\n    }\n    if (this.triggerStrategy) {\n      this.triggerStrategy.destroy();\n    }\n  }\n\n  show() {\n    if (this.shouldShow()) {\n      this.attachToOverlay();\n\n      this.positionStrategy.positionChange.pipe(take(1), takeUntil(this.destroy$)).subscribe(() => {\n        this.setActiveOption();\n      });\n\n      this.cd.markForCheck();\n    }\n  }\n\n  hide() {\n    if (this.isOpen) {\n      this.ref.detach();\n      this.cd.markForCheck();\n    }\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n    this.cd.markForCheck();\n  }\n\n  writeValue(value): void {\n    if (!this.alive) {\n      return;\n    }\n\n    if (this.canSelectValue()) {\n      this.setSelection(value);\n      if (this.selectionModel.length) {\n        this.queue = null;\n      }\n    } else {\n      this.queue = value;\n    }\n  }\n\n  /**\n   * Selects option or clear all selected options if value is null.\n   * */\n  protected handleOptionClick(option: NbOptionComponent) {\n    this.queue = null;\n    if (option.value == null) {\n      this.reset();\n    } else {\n      this.selectOption(option);\n    }\n\n    this.cd.markForCheck();\n  }\n\n  /**\n   * Deselect all selected options.\n   * */\n  protected reset() {\n    this.selectionModel.forEach((option: NbOptionComponent) => option.deselect());\n    this.selectionModel = [];\n    this.hide();\n    this.button.nativeElement.focus();\n    this.emitSelected(this.multiple ? [] : null);\n  }\n\n  /**\n   * Determines how to select option as multiple or single.\n   * */\n  protected selectOption(option: NbOptionComponent) {\n    if (this.multiple) {\n      this.handleMultipleSelect(option);\n    } else {\n      this.handleSingleSelect(option);\n    }\n  }\n\n  /**\n   * Select single option.\n   * */\n  protected handleSingleSelect(option: NbOptionComponent) {\n    const selected = this.selectionModel.pop();\n\n    if (selected && !this._compareWith(selected.value, option.value)) {\n      selected.deselect();\n    }\n\n    this.selectionModel = [option];\n    option.select();\n    this.hide();\n    this.button.nativeElement.focus();\n\n    this.emitSelected(option.value);\n  }\n\n  /**\n   * Select for multiple options.\n   * */\n  protected handleMultipleSelect(option: NbOptionComponent) {\n    if (option.selected) {\n      this.selectionModel = this.selectionModel.filter((s) => !this._compareWith(s.value, option.value));\n      option.deselect();\n    } else {\n      this.selectionModel.push(option);\n      option.select();\n    }\n\n    this.emitSelected(this.selectionModel.map((opt: NbOptionComponent) => opt.value));\n  }\n\n  protected attachToOverlay() {\n    if (!this.ref) {\n      this.createOverlay();\n      this.subscribeOnPositionChange();\n      this.createKeyManager();\n      this.subscribeOnOverlayKeys();\n    }\n\n    this.ref.attach(this.portal);\n  }\n\n  protected setActiveOption() {\n    if (this.selectionModel.length) {\n      this.keyManager.setActiveItem(this.selectionModel[0]);\n    } else {\n      this.keyManager.setFirstItemActive();\n    }\n  }\n\n  protected createOverlay() {\n    const scrollStrategy = this.createScrollStrategy();\n    this.positionStrategy = this.createPositionStrategy();\n    this.ref = this.overlay.create({\n      positionStrategy: this.positionStrategy,\n      scrollStrategy,\n      panelClass: this.optionsPanelClass,\n    });\n  }\n\n  protected createKeyManager(): void {\n    this.keyManager = this.focusKeyManagerFactoryService.create(this.options).withTypeAhead(200);\n  }\n\n  protected createPositionStrategy(): NbAdjustableConnectedPositionStrategy {\n    return this.positionBuilder\n      .connectedTo(this.button)\n      .position(NbPosition.BOTTOM)\n      .offset(this.optionsOverlayOffset)\n      .adjustment(NbAdjustment.VERTICAL);\n  }\n\n  protected createScrollStrategy(): NbScrollStrategy {\n    return this.overlay.scrollStrategies[this.scrollStrategy]();\n  }\n\n  protected createTriggerStrategy(): NbTriggerStrategy {\n    return this.triggerStrategyBuilder\n      .trigger(NbTrigger.CLICK)\n      .host(this.hostRef.nativeElement)\n      .container(() => this.getContainer())\n      .build();\n  }\n\n  protected subscribeOnTriggers() {\n    this.triggerStrategy.show$.subscribe(() => this.show());\n    this.triggerStrategy.hide$.pipe(filter(() => this.isOpen)).subscribe(($event: Event) => {\n      this.hide();\n      if (!this.isClickedWithinComponent($event)) {\n        this.onTouched();\n      }\n    });\n  }\n\n  protected subscribeOnPositionChange() {\n    this.positionStrategy.positionChange.pipe(takeUntil(this.destroy$)).subscribe((position: NbPosition) => {\n      this.overlayPosition = position;\n      this.cd.detectChanges();\n    });\n  }\n\n  protected subscribeOnOptionClick() {\n    /**\n     * If the user changes provided options list in the runtime we have to handle this\n     * and resubscribe on options selection changes event.\n     * Otherwise, the user will not be able to select new options.\n     * */\n    this.options.changes\n      .pipe(\n        startWith(this.options),\n        switchMap((options: QueryList<NbOptionComponent>) => {\n          return merge(...options.map((option) => option.click));\n        }),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((clickedOption: NbOptionComponent) => this.handleOptionClick(clickedOption));\n  }\n\n  protected subscribeOnOverlayKeys(): void {\n    this.ref\n      .keydownEvents()\n      .pipe(\n        filter(() => this.isOpen),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((event: KeyboardEvent) => {\n        if (event.keyCode === ESCAPE) {\n          this.button.nativeElement.focus();\n          this.hide();\n        } else {\n          this.keyManager.onKeydown(event);\n        }\n      });\n\n    this.keyManager.tabOut.pipe(takeUntil(this.destroy$)).subscribe(() => {\n      this.hide();\n      this.onTouched();\n    });\n  }\n\n  protected subscribeOnButtonFocus() {\n    this.focusMonitor\n      .monitor(this.button)\n      .pipe(\n        map((origin) => !!origin),\n        finalize(() => this.focusMonitor.stopMonitoring(this.button)),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(this.focused$);\n  }\n\n  protected getContainer() {\n    return (\n      this.ref &&\n      this.ref.hasAttached() &&\n      <ComponentRef<any>>{\n        location: {\n          nativeElement: this.ref.overlayElement,\n        },\n      }\n    );\n  }\n\n  /**\n   * Propagate selected value.\n   * */\n  protected emitSelected(selected) {\n    this.onChange(selected);\n    this.selectedChange.emit(selected);\n  }\n\n  /**\n   * Set selected value in model.\n   * */\n  protected setSelection(value) {\n    const isResetValue = value == null;\n    let safeValue = value;\n\n    if (this.multiple) {\n      safeValue = value ?? [];\n    }\n\n    const isArray: boolean = Array.isArray(safeValue);\n\n    if (this.multiple && !isArray && !isResetValue) {\n      throw new Error(\"Can't assign single value if select is marked as multiple\");\n    }\n    if (!this.multiple && isArray) {\n      throw new Error(\"Can't assign array if select is not marked as multiple\");\n    }\n\n    const previouslySelectedOptions = this.selectionModel;\n    this.selectionModel = [];\n\n    if (this.multiple) {\n      safeValue.forEach((option) => this.selectValue(option));\n    } else {\n      this.selectValue(safeValue);\n    }\n\n    // find options which were selected before and trigger deselect\n    previouslySelectedOptions\n      .filter((option: NbOptionComponent) => !this.selectionModel.includes(option))\n      .forEach((option: NbOptionComponent) => option.deselect());\n\n    this.cd.markForCheck();\n  }\n\n  /**\n   * Selects value.\n   * */\n  protected selectValue(value) {\n    if (value == null) {\n      return;\n    }\n\n    const corresponding = this.options.find((option: NbOptionComponent) => this._compareWith(option.value, value));\n\n    if (corresponding) {\n      corresponding.select();\n      this.selectionModel.push(corresponding);\n    }\n  }\n\n  protected shouldShow(): boolean {\n    return this.isHidden && this.options?.length > 0;\n  }\n\n  /**\n   * Sets touched if focus moved outside of button and overlay,\n   * ignoring the case when focus moved to options overlay.\n   */\n  trySetTouched() {\n    if (this.isHidden) {\n      this.onTouched();\n    }\n  }\n\n  protected isClickedWithinComponent($event: Event) {\n    return this.hostRef.nativeElement === $event.target || this.hostRef.nativeElement.contains($event.target as Node);\n  }\n\n  protected canSelectValue(): boolean {\n    return !!(this.options && this.options.length);\n  }\n\n  @HostBinding('class.size-tiny')\n  get tiny(): boolean {\n    return this.size === 'tiny';\n  }\n  @HostBinding('class.size-small')\n  get small(): boolean {\n    return this.size === 'small';\n  }\n  @HostBinding('class.size-medium')\n  get medium(): boolean {\n    return this.size === 'medium';\n  }\n  @HostBinding('class.size-large')\n  get large(): boolean {\n    return this.size === 'large';\n  }\n  @HostBinding('class.size-giant')\n  get giant(): boolean {\n    return this.size === 'giant';\n  }\n  @HostBinding('class.status-primary')\n  get primary(): boolean {\n    return this.status === 'primary';\n  }\n  @HostBinding('class.status-info')\n  get info(): boolean {\n    return this.status === 'info';\n  }\n  @HostBinding('class.status-success')\n  get success(): boolean {\n    return this.status === 'success';\n  }\n  @HostBinding('class.status-warning')\n  get warning(): boolean {\n    return this.status === 'warning';\n  }\n  @HostBinding('class.status-danger')\n  get danger(): boolean {\n    return this.status === 'danger';\n  }\n  @HostBinding('class.status-basic')\n  get basic(): boolean {\n    return this.status === 'basic';\n  }\n  @HostBinding('class.status-control')\n  get control(): boolean {\n    return this.status === 'control';\n  }\n  @HostBinding('class.shape-rectangle')\n  get rectangle(): boolean {\n    return this.shape === 'rectangle';\n  }\n  @HostBinding('class.shape-round')\n  get round(): boolean {\n    return this.shape === 'round';\n  }\n  @HostBinding('class.shape-semi-round')\n  get semiRound(): boolean {\n    return this.shape === 'semi-round';\n  }\n}\n","<button\n  [disabled]=\"disabled\"\n  [ngClass]=\"selectButtonClasses\"\n  (blur)=\"trySetTouched()\"\n  (keydown.arrowDown)=\"show()\"\n  (keydown.arrowUp)=\"show()\"\n  class=\"select-button\"\n  type=\"button\"\n  #selectButton\n>\n  <span (click)=\"disabled && $event.stopPropagation()\">\n    <ng-container *ngIf=\"selectionModel.length; else placeholderTemplate\">\n      <ng-container *ngIf=\"customLabel; else defaultSelectionTemplate\">\n        <ng-content select=\"nb-select-label\"></ng-content>\n      </ng-container>\n\n      <ng-template #defaultSelectionTemplate>{{ selectionView }}</ng-template>\n    </ng-container>\n\n    <ng-template #placeholderTemplate>{{ placeholder }}</ng-template>\n  </span>\n\n  <nb-icon\n    icon=\"chevron-down-outline\"\n    pack=\"nebular-essentials\"\n    (click)=\"disabled && $event.stopPropagation()\"\n    aria-hidden=\"true\"\n  >\n  </nb-icon>\n</button>\n\n<nb-option-list\n  *nbPortal\n  [size]=\"size\"\n  [position]=\"overlayPosition\"\n  [style.width.px]=\"optionsWidth\"\n  [ngClass]=\"optionsListClass\"\n>\n  <ng-content select=\"nb-option, nb-option-group\"></ng-content>\n</nb-option-list>\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  Component,\n  ContentChildren,\n  HostBinding,\n  Input,\n  OnDestroy,\n  QueryList,\n} from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\nimport { from, Subject } from 'rxjs';\n\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbOptionComponent } from './option.component';\n\n/**\n * NbOptionGroupComponent\n *\n * @styles\n *\n * option-group-text-color:\n * option-group-tiny-start-padding:\n * option-group-small-start-padding:\n * option-group-medium-start-padding:\n * option-group-large-start-padding:\n * option-group-giant-start-padding:\n **/\n@Component({\n    selector: 'nb-option-group',\n    styleUrls: ['./option-group.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n    <span class=\"option-group-title\">{{ title }}</span>\n    <ng-content select=\"nb-option, ng-container\"></ng-content>\n  `,\n    standalone: false\n})\nexport class NbOptionGroupComponent implements AfterContentInit, OnDestroy {\n\n  protected destroy$ = new Subject<void>();\n\n  @Input() title: string;\n\n  @Input()\n  get disabled(): boolean {\n    return this._disabled;\n  }\n  set disabled(value: boolean) {\n    this._disabled = convertToBoolProperty(value);\n\n    if (this.options) {\n      this.updateOptionsDisabledState();\n    }\n  }\n  protected _disabled: boolean = false;\n  static ngAcceptInputType_disabled: NbBooleanInput;\n\n  @HostBinding('attr.disabled')\n  get disabledAttribute(): '' | null {\n    return this.disabled ? '' : null;\n  }\n\n  @ContentChildren(NbOptionComponent, { descendants: true }) options: QueryList<NbOptionComponent<any>>;\n\n  ngAfterContentInit() {\n    if (this.options.length) {\n      this.asyncUpdateOptionsDisabledState();\n    }\n\n    this.options.changes\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(() => this.asyncUpdateOptionsDisabledState());\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  /**\n   * Sets disabled state for each option to current group disabled state.\n   */\n  protected updateOptionsDisabledState(): void {\n    this.options.forEach((option: NbOptionComponent) => option.setDisabledByGroupState(this.disabled));\n  }\n\n  /**\n   * Updates options disabled state after promise resolution.\n   * This way change detection will be triggered after options state updated.\n   * Use this method when updating options during change detection run (e.g. QueryList.changes, lifecycle hooks).\n   */\n  protected asyncUpdateOptionsDisabledState(): void {\n    // Wrap Promise into Observable with `takeUntil(this.destroy$)` to prevent update if component destroyed.\n    from(Promise.resolve())\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(() => this.updateOptionsDisabledState());\n  }\n}\n\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NbOptionComponent } from './option.component';\nimport { NbOptionGroupComponent } from './option-group.component';\nimport { NbOptionListComponent } from './option-list.component';\nimport { NbCheckboxModule } from '../checkbox/checkbox.module';\n\nconst NB_OPTION_LIST_COMPONENTS = [\n  NbOptionListComponent,\n  NbOptionComponent,\n  NbOptionGroupComponent,\n];\n\n@NgModule({\n  declarations: [\n    ...NB_OPTION_LIST_COMPONENTS,\n  ],\n  imports: [\n    CommonModule,\n    NbCheckboxModule,\n  ],\n  exports: [\n    ...NB_OPTION_LIST_COMPONENTS,\n  ],\n})\nexport class NbOptionModule { }\n","import { NgModule } from '@angular/core';\n\nimport { NbOverlayModule } from '../cdk/overlay/overlay.module';\nimport { NbSharedModule } from '../shared/shared.module';\nimport { NbInputModule } from '../input/input.module';\nimport { NbCardModule } from '../card/card.module';\nimport { NbButtonModule } from '../button/button.module';\nimport { NbSelectComponent, NbSelectLabelComponent } from './select.component';\nimport { NbOptionModule } from '../option/option-list.module';\nimport { NbIconModule } from '../icon/icon.module';\n\nconst NB_SELECT_COMPONENTS = [NbSelectComponent, NbSelectLabelComponent];\n\n@NgModule({\n  imports: [NbSharedModule, NbOverlayModule, NbButtonModule, NbInputModule, NbCardModule, NbIconModule, NbOptionModule],\n  exports: [...NB_SELECT_COMPONENTS, NbOptionModule],\n  declarations: [...NB_SELECT_COMPONENTS],\n})\nexport class NbSelectModule {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n    selector: '[nbPrefix]',\n    standalone: false\n})\nexport class NbPrefixDirective {\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n    selector: '[nbSuffix]',\n    standalone: false\n})\nexport class NbSuffixDirective {\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  Component,\n  ChangeDetectionStrategy,\n  ContentChild,\n  AfterContentChecked,\n  ChangeDetectorRef,\n  ContentChildren,\n  QueryList,\n  AfterContentInit,\n  OnDestroy,\n  NgZone,\n  ElementRef,\n  Renderer2,\n  AfterViewInit,\n  HostBinding,\n} from '@angular/core';\nimport { merge, Subject, Observable, combineLatest, ReplaySubject } from 'rxjs';\nimport { takeUntil, distinctUntilChanged, map, tap } from 'rxjs/operators';\n\nimport { NbPrefixDirective } from './prefix.directive';\nimport { NbSuffixDirective } from './suffix.directive';\nimport { NbFormFieldControl, NbFormControlState, NbFormFieldControlConfig } from './form-field-control';\n\nexport type NbFormControlAddon = 'prefix' | 'suffix';\n\nfunction throwFormControlElementNotFound() {\n  throw new Error(`NbFormFieldComponent must contain [nbInput]`)\n}\n\n/*\n * NbFormFieldComponent\n *\n * @styles\n *\n * form-field-addon-basic-text-color:\n * form-field-addon-basic-highlight-text-color:\n * form-field-addon-primary-text-color:\n * form-field-addon-primary-highlight-text-color:\n * form-field-addon-success-text-color:\n * form-field-addon-success-highlight-text-color:\n * form-field-addon-info-text-color:\n * form-field-addon-info-highlight-text-color:\n * form-field-addon-warning-text-color:\n * form-field-addon-warning-highlight-text-color:\n * form-field-addon-danger-text-color:\n * form-field-addon-danger-highlight-text-color:\n * form-field-addon-control-text-color:\n * form-field-addon-control-highlight-text-color:\n * form-field-addon-disabled-text-color:\n * form-field-addon-tiny-height:\n * form-field-addon-tiny-width:\n * form-field-addon-tiny-icon-size:\n * form-field-addon-tiny-font-size:\n * form-field-addon-tiny-line-height:\n * form-field-addon-tiny-font-weight:\n * form-field-addon-small-height:\n * form-field-addon-small-width:\n * form-field-addon-small-icon-size:\n * form-field-addon-small-font-size:\n * form-field-addon-small-line-height:\n * form-field-addon-small-font-weight:\n * form-field-addon-medium-height:\n * form-field-addon-medium-width:\n * form-field-addon-medium-icon-size:\n * form-field-addon-medium-font-size:\n * form-field-addon-medium-line-height:\n * form-field-addon-medium-font-weight:\n * form-field-addon-large-height:\n * form-field-addon-large-width:\n * form-field-addon-large-icon-size:\n * form-field-addon-large-font-size:\n * form-field-addon-large-line-height:\n * form-field-addon-large-font-weight:\n * form-field-addon-giant-height:\n * form-field-addon-giant-width:\n * form-field-addon-giant-icon-size:\n * form-field-addon-giant-font-size:\n * form-field-addon-giant-line-height:\n * form-field-addon-giant-font-weight:\n **/\n@Component({\n    selector: 'nb-form-field',\n    styleUrls: ['./form-field.component.scss'],\n    templateUrl: './form-field.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbFormFieldComponent implements AfterContentChecked, AfterContentInit, AfterViewInit, OnDestroy {\n\n  protected readonly destroy$ = new Subject<void>();\n\n  protected formControlState$ = new ReplaySubject<NbFormControlState>(1);\n  prefixClasses$: Observable<string[]> = this.formControlState$.pipe(map(s => this.getAddonClasses('prefix', s)));\n  suffixClasses$: Observable<string[]> = this.formControlState$.pipe(map(s => this.getAddonClasses('suffix', s)));\n\n  @ContentChildren(NbPrefixDirective, { descendants: true }) prefix: QueryList<NbPrefixDirective>;\n  @ContentChildren(NbSuffixDirective, { descendants: true }) suffix: QueryList<NbSuffixDirective>;\n\n  @ContentChild(NbFormFieldControl, { static: false }) formControl: NbFormFieldControl;\n  @ContentChild(NbFormFieldControlConfig, { static: false }) formControlConfig: NbFormFieldControlConfig;\n\n  @HostBinding('class') formFieldClasses;\n\n  constructor(\n    protected cd: ChangeDetectorRef,\n    protected zone: NgZone,\n    protected elementRef: ElementRef,\n    protected renderer: Renderer2,\n  ) {\n  }\n\n  ngAfterContentChecked() {\n    if (!this.formControl) {\n      throwFormControlElementNotFound();\n    }\n  }\n\n  ngAfterContentInit() {\n    this.subscribeToFormControlStateChange();\n    this.subscribeToAddonChange();\n  }\n\n  ngAfterViewInit() {\n    // TODO: #2254\n    this.zone.runOutsideAngular(() => setTimeout(() => {\n      this.renderer.addClass(this.elementRef.nativeElement, 'nb-transition');\n    }));\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n  }\n\n  shouldShowPrefix(): boolean {\n    return this.getFormControlConfig().supportsPrefix && !!this.prefix.length;\n  }\n\n  shouldShowSuffix(): boolean {\n    return this.getFormControlConfig().supportsSuffix && !!this.suffix.length;\n  }\n\n  protected subscribeToFormControlStateChange() {\n    const { disabled$, focused$, size$, status$, fullWidth$ } = this.formControl;\n\n    combineLatest([disabled$, focused$, size$, status$, fullWidth$])\n      .pipe(\n        map(([disabled, focused, size, status, fullWidth]) => ({ disabled, focused, size, status, fullWidth })),\n        distinctUntilChanged((oldState, state) => this.isStatesEqual(oldState, state)),\n        tap(({ size, fullWidth }) => {\n          const formFieldClasses = [`nb-form-field-size-${size}`];\n          if (!fullWidth) {\n            formFieldClasses.push('nb-form-field-limited-width')\n          }\n          this.formFieldClasses = formFieldClasses.join(' ');\n        }),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(this.formControlState$);\n  }\n\n  protected subscribeToAddonChange() {\n    merge(this.prefix.changes, this.suffix.changes)\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(() => this.cd.markForCheck());\n  }\n\n  protected getAddonClasses(addon: NbFormControlAddon, state: NbFormControlState): string[] {\n    const classes = [\n      'nb-form-field-addon',\n      `nb-form-field-${addon}-${state.size}`,\n    ];\n\n    if (state.disabled) {\n      classes.push(`nb-form-field-addon-disabled`);\n    } else if (state.focused) {\n      classes.push(`nb-form-field-addon-${state.status}-highlight`);\n    } else {\n      classes.push(`nb-form-field-addon-${state.status}`);\n    }\n\n    return classes;\n  }\n\n  protected getFormControlConfig(): NbFormFieldControlConfig {\n    return this.formControlConfig || new NbFormFieldControlConfig();\n  }\n\n  protected isStatesEqual(oldState: NbFormControlState, state: NbFormControlState): boolean {\n    return oldState.status === state.status &&\n           oldState.disabled === state.disabled &&\n           oldState.focused === state.focused &&\n           oldState.fullWidth === state.fullWidth &&\n           oldState.size === state.size;\n  }\n}\n","<div *ngIf=\"shouldShowPrefix()\" [ngClass]=\"prefixClasses$ | async\">\n  <ng-content select=\"[nbPrefix]\"></ng-content>\n</div>\n\n<div class=\"nb-form-control-container\"\n     [class.nb-form-field-control-with-prefix]=\"shouldShowPrefix()\"\n     [class.nb-form-field-control-with-suffix]=\"shouldShowSuffix()\">\n  <ng-content></ng-content>\n</div>\n\n<div *ngIf=\"shouldShowSuffix()\" [ngClass]=\"suffixClasses$ | async\">\n  <ng-content select=\"[nbSuffix]\"></ng-content>\n</div>\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  AfterContentInit,\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ComponentRef,\n  ContentChild,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  HostBinding,\n  Inject,\n  Input,\n  OnDestroy,\n  Output,\n  QueryList,\n  ViewChild,\n  SimpleChanges,\n  OnChanges,\n  Renderer2,\n  NgZone,\n} from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ListKeyManager } from '@angular/cdk/a11y';\nimport { merge, Subject, BehaviorSubject, from, combineLatest, animationFrameScheduler, EMPTY } from 'rxjs';\nimport { startWith, switchMap, takeUntil, filter, map, finalize, take, observeOn } from 'rxjs/operators';\n\nimport { NbStatusService } from '../../services/status.service';\nimport {\n  NbAdjustableConnectedPositionStrategy,\n  NbAdjustment,\n  NbPosition,\n  NbPositionBuilderService,\n} from '../cdk/overlay/overlay-position';\nimport { NbOverlayRef, NbPortalDirective, NbScrollStrategy } from '../cdk/overlay/mapping';\nimport { NbOverlayService } from '../cdk/overlay/overlay-service';\nimport { NbTrigger, NbTriggerStrategy, NbTriggerStrategyBuilderService } from '../cdk/overlay/overlay-trigger';\nimport { NbFocusKeyManager, NbFocusKeyManagerFactoryService } from '../cdk/a11y/focus-key-manager';\nimport { ENTER, ESCAPE } from '../cdk/keycodes/keycodes';\nimport { NbComponentSize } from '../component-size';\nimport { NbComponentShape } from '../component-shape';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { NB_DOCUMENT } from '../../theme.options';\nimport { NbOptionComponent } from '../option/option.component';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NB_SELECT_INJECTION_TOKEN } from '../select/select-injection-tokens';\nimport { NbFormFieldControl, NbFormFieldControlConfig } from '../form-field/form-field-control';\nimport { NbFocusMonitor } from '../cdk/a11y/a11y.module';\nimport { NbScrollStrategies } from '../cdk/adapter/block-scroll-strategy-adapter';\nimport {\n  NbActiveDescendantKeyManager,\n  NbActiveDescendantKeyManagerFactoryService,\n} from '../cdk/a11y/descendant-key-manager';\nimport {\n  NbSelectAppearance,\n  NbSelectCompareFunction,\n  nbSelectFormFieldControlConfigFactory,\n  NbSelectLabelComponent,\n} from '../select/select.component';\n\n/**\n * Experimental component with autocomplete possibility.\n * Could be changed without any prior notice.\n * Use at your own risk.\n *\n * Style variables is fully inherited.\n * Component's public API (`@Input()` and `@Output()`) works in a same way as NbSelectComponent.\n */\n@Component({\n    selector: 'nb-select-with-autocomplete',\n    templateUrl: './select-with-autocomplete.component.html',\n    styleUrls: ['./select-with-autocomplete.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => NbSelectWithAutocompleteComponent),\n            multi: true,\n        },\n        { provide: NB_SELECT_INJECTION_TOKEN, useExisting: NbSelectWithAutocompleteComponent },\n        { provide: NbFormFieldControl, useExisting: NbSelectWithAutocompleteComponent },\n        { provide: NbFormFieldControlConfig, useFactory: nbSelectFormFieldControlConfigFactory },\n    ],\n    standalone: false\n})\nexport class NbSelectWithAutocompleteComponent\n  implements OnChanges, AfterViewInit, AfterContentInit, OnDestroy, ControlValueAccessor, NbFormFieldControl\n{\n  /**\n   * Select size, available sizes:\n   * `tiny`, `small`, `medium` (default), `large`, `giant`\n   */\n  @Input() size: NbComponentSize = 'medium';\n\n  /**\n   * Select status (adds specific styles):\n   * `basic`, `primary`, `info`, `success`, `warning`, `danger`, `control`\n   */\n  @Input() status: NbComponentOrCustomStatus = 'basic';\n\n  /**\n   * Select shapes: `rectangle` (default), `round`, `semi-round`\n   */\n  @Input() shape: NbComponentShape = 'rectangle';\n\n  /**\n   * Select appearances: `outline` (default), `filled`, `hero`\n   */\n  @Input() appearance: NbSelectAppearance = 'outline';\n\n  /**\n   * Specifies class to be set on `nb-option`s container (`nb-option-list`)\n   * */\n  @Input() optionsListClass: NgClass['ngClass'];\n\n  /**\n   * Specifies class for the overlay panel with options\n   * */\n  @Input() optionsPanelClass: string | string[];\n\n  /**\n   * Specifies width (in pixels) to be set on `nb-option`s container (`nb-option-list`)\n   * */\n  @Input()\n  get optionsWidth(): number {\n    return this._optionsWidth ?? this.hostWidth;\n  }\n  set optionsWidth(value: number) {\n    this._optionsWidth = value;\n  }\n  protected _optionsWidth: number | undefined;\n\n  /**\n   * Adds `outline` styles\n   */\n  @Input()\n  @HostBinding('class.appearance-outline')\n  get outline(): boolean {\n    return this.appearance === 'outline';\n  }\n  set outline(value: boolean) {\n    if (convertToBoolProperty(value)) {\n      this.appearance = 'outline';\n    }\n  }\n  static ngAcceptInputType_outline: NbBooleanInput;\n\n  /**\n   * Adds `filled` styles\n   */\n  @Input()\n  @HostBinding('class.appearance-filled')\n  get filled(): boolean {\n    return this.appearance === 'filled';\n  }\n  set filled(value: boolean) {\n    if (convertToBoolProperty(value)) {\n      this.appearance = 'filled';\n    }\n  }\n  static ngAcceptInputType_filled: NbBooleanInput;\n\n  /**\n   * Adds `hero` styles\n   */\n  @Input()\n  @HostBinding('class.appearance-hero')\n  get hero(): boolean {\n    return this.appearance === 'hero';\n  }\n  set hero(value: boolean) {\n    if (convertToBoolProperty(value)) {\n      this.appearance = 'hero';\n    }\n  }\n  static ngAcceptInputType_hero: NbBooleanInput;\n\n  /**\n   * Disables the select\n   */\n  @Input()\n  get disabled(): boolean {\n    return !!this._disabled;\n  }\n  set disabled(value: boolean) {\n    this._disabled = convertToBoolProperty(value);\n  }\n  protected _disabled: boolean;\n  static ngAcceptInputType_disabled: NbBooleanInput;\n\n  /**\n   * If set element will fill its container\n   */\n  @Input()\n  @HostBinding('class.full-width')\n  get fullWidth(): boolean {\n    return this._fullWidth;\n  }\n  set fullWidth(value: boolean) {\n    this._fullWidth = convertToBoolProperty(value);\n  }\n  protected _fullWidth: boolean = false;\n  static ngAcceptInputType_fullWidth: NbBooleanInput;\n\n  /**\n   * Renders select placeholder if nothing selected.\n   * */\n  @Input() placeholder: string = '';\n\n  /**\n   * A function to compare option value with selected value.\n   * By default, values are compared with strict equality (`===`).\n   */\n  @Input()\n  get compareWith(): NbSelectCompareFunction {\n    return this._compareWith;\n  }\n  set compareWith(fn: NbSelectCompareFunction) {\n    if (typeof fn !== 'function') {\n      return;\n    }\n\n    this._compareWith = fn;\n\n    if (this.selectionModel.length && this.canSelectValue()) {\n      this.setSelection(this.selected);\n    }\n  }\n  protected _compareWith: NbSelectCompareFunction = (v1: any, v2: any) => v1 === v2;\n\n  /**\n   * Accepts selected item or array of selected items.\n   * */\n  @Input()\n  set selected(value) {\n    this.writeValue(value);\n  }\n  get selected() {\n    return this.multiple ? this.selectionModel.map((o) => o.value) : this.selectionModel[0].value;\n  }\n\n  /**\n   * Gives capability just write `multiple` over the element.\n   * */\n  @Input()\n  get multiple(): boolean {\n    return this._multiple;\n  }\n  set multiple(value: boolean) {\n    this._multiple = convertToBoolProperty(value);\n\n    this.updatePositionStrategy();\n    this.updateCurrentKeyManager();\n  }\n  protected _multiple: boolean = false;\n  static ngAcceptInputType_multiple: NbBooleanInput;\n\n  /**\n   * Determines options overlay offset (in pixels).\n   **/\n  @Input() optionsOverlayOffset = 8;\n\n  /**\n   * Determines options overlay scroll strategy.\n   **/\n  @Input() scrollStrategy: NbScrollStrategies = 'block';\n\n  /**\n   * Experimental input.\n   * Could be changed without any prior notice.\n   * Use at your own risk.\n   *\n   * It replaces the button with input when the select is opened.\n   * That replacement provides a very basic API to implement options filtering functionality.\n   * Filtering itself isn't implemented inside select.\n   * So it should be implemented by the user.\n   */\n  @Input()\n  set withOptionsAutocomplete(value: boolean) {\n    this._withOptionsAutocomplete = convertToBoolProperty(value);\n    this.updatePositionStrategy();\n    this.updateCurrentKeyManager();\n\n    if (!value) {\n      this.resetAutocompleteInput();\n    }\n  }\n  get withOptionsAutocomplete(): boolean {\n    return this._withOptionsAutocomplete;\n  }\n  protected _withOptionsAutocomplete: boolean = false;\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.status)) {\n      return [this.statusService.getStatusClass(this.status)];\n    }\n    return [];\n  }\n\n  /**\n   * Will be emitted when selected value changes.\n   * */\n  @Output() selectedChange: EventEmitter<any> = new EventEmitter();\n  @Output() selectOpen: EventEmitter<void> = new EventEmitter();\n  @Output() selectClose: EventEmitter<void> = new EventEmitter();\n  @Output() optionsAutocompleteInputChange: EventEmitter<string> = new EventEmitter();\n\n  /**\n   * List of `NbOptionComponent`'s components passed as content.\n   * TODO maybe it would be better provide wrapper\n   * */\n  @ContentChildren(NbOptionComponent, { descendants: true }) options: QueryList<NbOptionComponent>;\n\n  /**\n   * Custom select label, will be rendered instead of default enumeration with coma.\n   * */\n  @ContentChild(NbSelectLabelComponent) customLabel;\n\n  /**\n   * NbCard with options content.\n   * */\n  @ViewChild(NbPortalDirective) portal: NbPortalDirective;\n\n  @ViewChild('selectButton', { read: ElementRef }) button: ElementRef<HTMLButtonElement> | undefined;\n  @ViewChild('optionsAutocompleteInput', { read: ElementRef }) optionsAutocompleteInput:\n    | ElementRef<HTMLInputElement>\n    | undefined;\n\n  /**\n   * Determines is select opened.\n   * */\n  @HostBinding('class.open')\n  get isOpen(): boolean {\n    return this.ref && this.ref.hasAttached();\n  }\n\n  get isOptionsAutocompleteAllowed(): boolean {\n    return this.withOptionsAutocomplete;\n  }\n\n  get isOptionsAutocompleteInputShown(): boolean {\n    return this.isOptionsAutocompleteAllowed && this.isOpen;\n  }\n\n  /**\n   * List of selected options.\n   * */\n  selectionModel: NbOptionComponent[] = [];\n\n  positionStrategy$: BehaviorSubject<NbAdjustableConnectedPositionStrategy | undefined> = new BehaviorSubject(\n    undefined,\n  );\n\n  /**\n   * Current overlay position because of we have to toggle overlayPosition\n   * in [ngClass] direction and this directive can use only string.\n   */\n  overlayPosition: NbPosition = '' as NbPosition;\n\n  protected ref: NbOverlayRef;\n\n  protected triggerStrategy: NbTriggerStrategy;\n\n  protected alive: boolean = true;\n\n  protected destroy$ = new Subject<void>();\n\n  protected currentKeyManager: ListKeyManager<NbOptionComponent>;\n  protected focusKeyManager: NbFocusKeyManager<NbOptionComponent>;\n  protected activeDescendantKeyManager: NbActiveDescendantKeyManager<NbOptionComponent>;\n\n  /**\n   * If a user assigns value before content nb-options's rendered the value will be putted in this variable.\n   * And then applied after content rendered.\n   * Only the last value will be applied.\n   * */\n  protected queue;\n\n  /**\n   * Function passed through control value accessor to propagate changes.\n   * */\n  protected onChange: Function = () => {};\n  protected onTouched: Function = () => {};\n\n  /*\n   * @docs-private\n   **/\n  status$ = new BehaviorSubject<NbComponentOrCustomStatus>(this.status);\n\n  /*\n   * @docs-private\n   **/\n  size$ = new BehaviorSubject<NbComponentSize>(this.size);\n\n  /*\n   * @docs-private\n   **/\n  focused$ = new BehaviorSubject<boolean>(false);\n\n  /*\n   * @docs-private\n   **/\n  disabled$ = new BehaviorSubject<boolean>(this.disabled);\n\n  /*\n   * @docs-private\n   **/\n  fullWidth$ = new BehaviorSubject<boolean>(this.fullWidth);\n\n  constructor(\n    @Inject(NB_DOCUMENT) protected document,\n    protected overlay: NbOverlayService,\n    protected hostRef: ElementRef<HTMLElement>,\n    protected positionBuilder: NbPositionBuilderService,\n    protected triggerStrategyBuilder: NbTriggerStrategyBuilderService,\n    protected cd: ChangeDetectorRef,\n    protected focusKeyManagerFactoryService: NbFocusKeyManagerFactoryService<NbOptionComponent>,\n    protected focusMonitor: NbFocusMonitor,\n    protected renderer: Renderer2,\n    protected zone: NgZone,\n    protected statusService: NbStatusService,\n    protected activeDescendantKeyManagerFactoryService: NbActiveDescendantKeyManagerFactoryService<NbOptionComponent>,\n  ) {}\n\n  /**\n   * Determines is select hidden.\n   * */\n  get isHidden(): boolean {\n    return !this.isOpen;\n  }\n\n  /**\n   * Returns width of the select button.\n   * */\n  get hostWidth(): number {\n    if (this.isOptionsAutocompleteInputShown) {\n      return this.optionsAutocompleteInput.nativeElement.getBoundingClientRect().width;\n    }\n    return this.button.nativeElement.getBoundingClientRect().width;\n  }\n\n  lastShownButtonWidth: number | undefined = undefined;\n\n  get selectButtonClasses(): string[] {\n    const classes = [];\n\n    if (!this.selectionModel.length) {\n      classes.push('placeholder');\n    }\n    if (!this.selectionModel.length && !this.placeholder) {\n      classes.push('empty');\n    }\n    if (this.isOpen) {\n      classes.push(this.overlayPosition);\n    }\n\n    return classes;\n  }\n\n  /**\n   * Content rendered in the label.\n   * */\n  get selectionView() {\n    if (this.isOptionsAutocompleteInputShown && this.multiple) {\n      return '';\n    }\n\n    if (this.selectionModel.length > 1) {\n      return this.selectionModel.map((option: NbOptionComponent) => option.content).join(', ');\n    }\n\n    return this.selectionModel[0]?.content?.trim() ?? '';\n  }\n\n  ngOnChanges({ disabled, status, size, fullWidth }: SimpleChanges) {\n    if (disabled) {\n      this.disabled$.next(disabled.currentValue);\n    }\n    if (status) {\n      this.status$.next(status.currentValue);\n    }\n    if (size) {\n      this.size$.next(size.currentValue);\n    }\n    if (fullWidth) {\n      this.fullWidth$.next(this.fullWidth);\n    }\n  }\n\n  ngAfterContentInit() {\n    this.options.changes\n      .pipe(\n        startWith(this.options),\n        filter(() => this.queue != null && this.canSelectValue()),\n        // Call 'writeValue' when current change detection run is finished.\n        // When writing is finished, change detection starts again, since\n        // microtasks queue is empty.\n        // Prevents ExpressionChangedAfterItHasBeenCheckedError.\n        switchMap((options: QueryList<NbOptionComponent>) => from(Promise.resolve(options))),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => this.writeValue(this.queue));\n  }\n\n  ngAfterViewInit() {\n    this.triggerStrategy = this.createTriggerStrategy();\n\n    this.subscribeOnButtonFocus();\n    this.subscribeOnTriggers();\n    this.subscribeOnOptionClick();\n\n    // TODO: #2254\n    this.zone.runOutsideAngular(() =>\n      setTimeout(() => {\n        this.renderer.addClass(this.hostRef.nativeElement, 'nb-transition');\n      }),\n    );\n  }\n\n  ngOnDestroy() {\n    this.alive = false;\n\n    this.destroy$.next();\n    this.destroy$.complete();\n\n    if (this.ref) {\n      this.ref.dispose();\n    }\n    if (this.triggerStrategy) {\n      this.triggerStrategy.destroy();\n    }\n  }\n\n  onAutocompleteInputChange(event: Event) {\n    this.optionsAutocompleteInputChange.emit((event.target as HTMLInputElement).value);\n  }\n\n  show() {\n    if (this.shouldShow()) {\n      this.lastShownButtonWidth = this.hostWidth;\n\n      this.attachToOverlay();\n\n      this.positionStrategy$\n        .pipe(\n          switchMap((positionStrategy) => positionStrategy.positionChange ?? EMPTY),\n          take(1),\n          takeUntil(this.destroy$),\n        )\n        .subscribe(() => {\n          if (this.isOptionsAutocompleteInputShown) {\n            this.optionsAutocompleteInput.nativeElement.focus();\n          }\n          this.setActiveOption();\n        });\n\n      this.selectOpen.emit();\n\n      this.cd.markForCheck();\n    }\n  }\n\n  hide() {\n    if (this.isOpen) {\n      this.ref.detach();\n      this.cd.markForCheck();\n      this.selectClose.emit();\n\n      this.resetAutocompleteInput();\n    }\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n    this.cd.markForCheck();\n  }\n\n  writeValue(value): void {\n    if (!this.alive) {\n      return;\n    }\n\n    if (this.canSelectValue()) {\n      this.setSelection(value);\n      if (this.selectionModel.length) {\n        this.queue = null;\n      }\n    } else {\n      this.queue = value;\n    }\n  }\n\n  /**\n   * Selects option or clear all selected options if value is null.\n   * */\n  protected handleOptionClick(option: NbOptionComponent) {\n    this.queue = null;\n    if (option.value == null) {\n      this.reset();\n    } else {\n      this.selectOption(option);\n    }\n\n    this.cd.markForCheck();\n  }\n\n  /**\n   * Deselect all selected options.\n   * */\n  protected reset() {\n    this.selectionModel.forEach((option: NbOptionComponent) => option.deselect());\n    this.selectionModel = [];\n    this.hide();\n    this.focusButton();\n    this.emitSelected(this.multiple ? [] : null);\n  }\n\n  /**\n   * Determines how to select option as multiple or single.\n   * */\n  protected selectOption(option: NbOptionComponent) {\n    if (this.multiple) {\n      this.handleMultipleSelect(option);\n    } else {\n      this.handleSingleSelect(option);\n    }\n  }\n\n  /**\n   * Select single option.\n   * */\n  protected handleSingleSelect(option: NbOptionComponent) {\n    const selected = this.selectionModel.pop();\n\n    if (selected && !this._compareWith(selected.value, option.value)) {\n      selected.deselect();\n    }\n\n    this.selectionModel = [option];\n    option.select();\n    this.hide();\n    this.focusButton();\n    this.emitSelected(option.value);\n  }\n\n  /**\n   * Select for multiple options.\n   * */\n  protected handleMultipleSelect(option: NbOptionComponent) {\n    if (option.selected) {\n      this.selectionModel = this.selectionModel.filter((s) => !this._compareWith(s.value, option.value));\n      option.deselect();\n    } else {\n      this.selectionModel.push(option);\n      option.select();\n    }\n\n    this.emitSelected(this.selectionModel.map((opt: NbOptionComponent) => opt.value));\n  }\n\n  protected attachToOverlay() {\n    if (!this.ref) {\n      this.createOverlay();\n      this.subscribeOnPositionChange();\n      this.createKeyManager();\n      this.subscribeOnOverlayKeys();\n      this.subscribeOnOptionsAutocompleteChange();\n    }\n\n    this.ref.attach(this.portal);\n  }\n\n  protected setActiveOption() {\n    if (this.selectionModel.length && !this.selectionModel[0].hidden) {\n      this.currentKeyManager?.setActiveItem(this.selectionModel[0]);\n    } else {\n      this.currentKeyManager?.setFirstItemActive();\n    }\n  }\n\n  protected createOverlay() {\n    const scrollStrategy = this.createScrollStrategy();\n    this.positionStrategy$.next(this.createPositionStrategy());\n    this.ref = this.overlay.create({\n      positionStrategy: this.positionStrategy$.value,\n      scrollStrategy,\n      panelClass: this.optionsPanelClass,\n    });\n  }\n\n  protected createKeyManager(): void {\n    this.activeDescendantKeyManager = this.activeDescendantKeyManagerFactoryService\n      .create(this.options)\n      .skipPredicate((option) => {\n        return this.isOptionHidden(option);\n      });\n\n    this.focusKeyManager = this.focusKeyManagerFactoryService\n      .create(this.options)\n      .withTypeAhead(200)\n      .skipPredicate((option) => {\n        return this.isOptionHidden(option);\n      });\n\n    this.updateCurrentKeyManager();\n  }\n\n  protected updateCurrentKeyManager() {\n    this.currentKeyManager?.setActiveItem(-1);\n    if (this.isOptionsAutocompleteAllowed) {\n      this.currentKeyManager = this.activeDescendantKeyManager;\n    } else {\n      this.currentKeyManager = this.focusKeyManager;\n    }\n    this.setActiveOption();\n  }\n\n  protected resetAutocompleteInput() {\n    if (this.optionsAutocompleteInput?.nativeElement) {\n      this.optionsAutocompleteInput.nativeElement.value = this.selectionView;\n      this.optionsAutocompleteInputChange.emit('');\n    }\n  }\n\n  protected createPositionStrategy(): NbAdjustableConnectedPositionStrategy {\n    const element: ElementRef<HTMLInputElement | HTMLButtonElement> = this.isOptionsAutocompleteAllowed\n      ? this.optionsAutocompleteInput\n      : this.button;\n    return this.positionBuilder\n      .connectedTo(element)\n      .position(NbPosition.BOTTOM)\n      .offset(this.optionsOverlayOffset)\n      .adjustment(NbAdjustment.VERTICAL);\n  }\n\n  protected updatePositionStrategy(): void {\n    if (this.ref) {\n      this.positionStrategy$.next(this.createPositionStrategy());\n      this.ref.updatePositionStrategy(this.positionStrategy$.value);\n      if (this.isOpen) {\n        this.ref.updatePosition();\n      }\n    }\n  }\n\n  protected createScrollStrategy(): NbScrollStrategy {\n    return this.overlay.scrollStrategies[this.scrollStrategy]();\n  }\n\n  protected createTriggerStrategy(): NbTriggerStrategy {\n    return this.triggerStrategyBuilder\n      .trigger(NbTrigger.CLICK)\n      .host(this.hostRef.nativeElement)\n      .container(() => this.getContainer())\n      .build();\n  }\n\n  protected subscribeOnTriggers() {\n    this.triggerStrategy.show$.subscribe(() => this.show());\n    this.triggerStrategy.hide$.pipe(filter(() => this.isOpen)).subscribe(($event: Event) => {\n      this.hide();\n      if (!this.isClickedWithinComponent($event)) {\n        this.onTouched();\n      }\n    });\n  }\n\n  protected subscribeOnPositionChange() {\n    this.positionStrategy$\n      .pipe(\n        switchMap((positionStrategy) => positionStrategy.positionChange ?? EMPTY),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((position: NbPosition) => {\n        this.overlayPosition = position;\n        this.cd.detectChanges();\n      });\n  }\n\n  protected subscribeOnOptionClick() {\n    /**\n     * If the user changes provided options list in the runtime we have to handle this\n     * and resubscribe on options selection changes event.\n     * Otherwise, the user will not be able to select new options.\n     * */\n    this.options.changes\n      .pipe(\n        startWith(this.options),\n        switchMap((options: QueryList<NbOptionComponent>) => {\n          return merge(...options.map((option) => option.click));\n        }),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((clickedOption: NbOptionComponent) => this.handleOptionClick(clickedOption));\n  }\n\n  protected subscribeOnOverlayKeys(): void {\n    this.ref\n      .keydownEvents()\n      .pipe(\n        filter(() => this.isOpen),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((event: KeyboardEvent) => {\n        if (event.keyCode === ESCAPE) {\n          this.hide();\n          this.focusButton();\n        } else if (event.keyCode === ENTER && this.isOptionsAutocompleteInputShown) {\n          event.preventDefault();\n          const activeItem = this.currentKeyManager.activeItem;\n          if (activeItem) {\n            this.selectOption(activeItem);\n          }\n        } else {\n          this.currentKeyManager.onKeydown(event);\n        }\n      });\n\n    merge(\n      this.focusKeyManager.tabOut.pipe(filter(() => !this.isOptionsAutocompleteInputShown)),\n      this.activeDescendantKeyManager.tabOut.pipe(filter(() => this.isOptionsAutocompleteInputShown)),\n    )\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(() => {\n        this.hide();\n        this.onTouched();\n      });\n  }\n\n  protected subscribeOnOptionsAutocompleteChange() {\n    this.optionsAutocompleteInputChange\n      .pipe(\n        observeOn(animationFrameScheduler),\n        filter(() => this.isOptionsAutocompleteInputShown),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => {\n        if (this.isOptionHidden(this.currentKeyManager.activeItem)) {\n          this.currentKeyManager.setFirstItemActive();\n        }\n      });\n  }\n\n  protected subscribeOnButtonFocus() {\n    const buttonFocus$ = this.focusMonitor.monitor(this.button).pipe(\n      map((origin) => !!origin),\n      startWith(false),\n      finalize(() => this.focusMonitor.stopMonitoring(this.button)),\n    );\n\n    const filterInputFocus$ = this.focusMonitor.monitor(this.optionsAutocompleteInput).pipe(\n      map((origin) => !!origin),\n      startWith(false),\n      finalize(() => this.focusMonitor.stopMonitoring(this.button)),\n    );\n\n    combineLatest([buttonFocus$, filterInputFocus$])\n      .pipe(\n        map(([buttonFocus, filterInputFocus]) => buttonFocus || filterInputFocus),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(this.focused$);\n  }\n\n  protected getContainer() {\n    return (\n      this.ref &&\n      this.ref.hasAttached() &&\n      <ComponentRef<any>>{\n        location: {\n          nativeElement: this.ref.overlayElement,\n        },\n      }\n    );\n  }\n\n  protected focusButton() {\n    /**\n     * Need to wrap with setTimeout\n     * because otherwise focus could be called\n     * when the component hasn't rerendered the button\n     * which was hidden by `isOptionsAutocompleteInputShown` property.\n     */\n    setTimeout(() => {\n      this.button?.nativeElement?.focus();\n    });\n  }\n\n  /**\n   * Propagate selected value.\n   * */\n  protected emitSelected(selected) {\n    this.onChange(selected);\n    this.selectedChange.emit(selected);\n  }\n\n  /**\n   * Set selected value in model.\n   * */\n  protected setSelection(value) {\n    const isResetValue = value == null;\n    let safeValue = value;\n\n    if (this.multiple) {\n      safeValue = value ?? [];\n    }\n\n    const isArray: boolean = Array.isArray(safeValue);\n\n    if (this.multiple && !isArray && !isResetValue) {\n      throw new Error(\"Can't assign single value if select is marked as multiple\");\n    }\n    if (!this.multiple && isArray) {\n      throw new Error(\"Can't assign array if select is not marked as multiple\");\n    }\n\n    const previouslySelectedOptions = this.selectionModel;\n    this.selectionModel = [];\n\n    if (this.multiple) {\n      safeValue.forEach((option) => this.selectValue(option));\n    } else {\n      this.selectValue(safeValue);\n    }\n\n    // find options which were selected before and trigger deselect\n    previouslySelectedOptions\n      .filter((option: NbOptionComponent) => !this.selectionModel.includes(option))\n      .forEach((option: NbOptionComponent) => option.deselect());\n\n    this.cd.markForCheck();\n  }\n\n  /**\n   * Selects value.\n   * */\n  protected selectValue(value) {\n    if (value == null) {\n      return;\n    }\n\n    const corresponding = this.options.find((option: NbOptionComponent) => this._compareWith(option.value, value));\n\n    if (corresponding) {\n      corresponding.select();\n      this.selectionModel.push(corresponding);\n    }\n  }\n\n  protected shouldShow(): boolean {\n    return this.isHidden && this.options?.length > 0;\n  }\n\n  /**\n   * Sets touched if focus moved outside of button and overlay,\n   * ignoring the case when focus moved to options overlay.\n   */\n  trySetTouched() {\n    if (this.isHidden) {\n      this.onTouched();\n    }\n  }\n\n  protected isClickedWithinComponent($event: Event) {\n    return this.hostRef.nativeElement === $event.target || this.hostRef.nativeElement.contains($event.target as Node);\n  }\n\n  protected canSelectValue(): boolean {\n    return !!(this.options && this.options.length);\n  }\n\n  protected isOptionHidden(option: NbOptionComponent): boolean {\n    return option.hidden;\n  }\n\n  @HostBinding('class.size-tiny')\n  get tiny(): boolean {\n    return this.size === 'tiny';\n  }\n  @HostBinding('class.size-small')\n  get small(): boolean {\n    return this.size === 'small';\n  }\n  @HostBinding('class.size-medium')\n  get medium(): boolean {\n    return this.size === 'medium';\n  }\n  @HostBinding('class.size-large')\n  get large(): boolean {\n    return this.size === 'large';\n  }\n  @HostBinding('class.size-giant')\n  get giant(): boolean {\n    return this.size === 'giant';\n  }\n  @HostBinding('class.status-primary')\n  get primary(): boolean {\n    return this.status === 'primary';\n  }\n  @HostBinding('class.status-info')\n  get info(): boolean {\n    return this.status === 'info';\n  }\n  @HostBinding('class.status-success')\n  get success(): boolean {\n    return this.status === 'success';\n  }\n  @HostBinding('class.status-warning')\n  get warning(): boolean {\n    return this.status === 'warning';\n  }\n  @HostBinding('class.status-danger')\n  get danger(): boolean {\n    return this.status === 'danger';\n  }\n  @HostBinding('class.status-basic')\n  get basic(): boolean {\n    return this.status === 'basic';\n  }\n  @HostBinding('class.status-control')\n  get control(): boolean {\n    return this.status === 'control';\n  }\n  @HostBinding('class.shape-rectangle')\n  get rectangle(): boolean {\n    return this.shape === 'rectangle';\n  }\n  @HostBinding('class.shape-round')\n  get round(): boolean {\n    return this.shape === 'round';\n  }\n  @HostBinding('class.shape-semi-round')\n  get semiRound(): boolean {\n    return this.shape === 'semi-round';\n  }\n}\n","<button\n  [hidden]=\"isOptionsAutocompleteInputShown\"\n  [disabled]=\"disabled\"\n  [ngClass]=\"selectButtonClasses\"\n  (blur)=\"trySetTouched()\"\n  (keydown.arrowDown)=\"show()\"\n  (keydown.arrowUp)=\"show()\"\n  class=\"select-button\"\n  type=\"button\"\n  #selectButton\n>\n  <span (click)=\"disabled && $event.stopPropagation()\">\n    <ng-container *ngIf=\"selectionModel.length; else placeholderTemplate\">\n      <ng-container *ngIf=\"customLabel; else defaultSelectionTemplate\">\n        <ng-content select=\"nb-select-label\"></ng-content>\n      </ng-container>\n\n      <ng-template #defaultSelectionTemplate>{{ selectionView }}</ng-template>\n    </ng-container>\n\n    <ng-template #placeholderTemplate>{{ placeholder }}</ng-template>\n  </span>\n\n  <nb-icon\n    icon=\"chevron-down-outline\"\n    pack=\"nebular-essentials\"\n    (click)=\"disabled && $event.stopPropagation()\"\n    aria-hidden=\"true\"\n  >\n  </nb-icon>\n</button>\n\n<nb-form-field [hidden]=\"!isOptionsAutocompleteInputShown\">\n  <input\n    nbInput\n    fullWidth\n    [style.max-width.px]=\"lastShownButtonWidth\"\n    #optionsAutocompleteInput\n    [value]=\"selectionView\"\n    [placeholder]=\"placeholder\"\n    [status]=\"status\"\n    [shape]=\"shape\"\n    [fieldSize]=\"size\"\n    (blur)=\"trySetTouched()\"\n    (click)=\"$event.stopPropagation()\"\n    (dblclick)=\"$event.stopPropagation()\"\n    (input)=\"onAutocompleteInputChange($event)\"\n  />\n  <nb-icon nbSuffix icon=\"chevron-up-outline\" pack=\"nebular-essentials\" aria-hidden=\"true\"> </nb-icon>\n</nb-form-field>\n\n<nb-option-list\n  *nbPortal\n  [size]=\"size\"\n  [position]=\"overlayPosition\"\n  [style.width.px]=\"optionsWidth\"\n  [ngClass]=\"optionsListClass\"\n>\n  <ng-content select=\"nb-option, nb-option-group\"></ng-content>\n</nb-option-list>\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { NbFormFieldComponent } from './form-field.component';\nimport { NbPrefixDirective } from './prefix.directive';\nimport { NbSuffixDirective } from './suffix.directive';\n\nconst COMPONENTS = [\n  NbFormFieldComponent,\n  NbPrefixDirective,\n  NbSuffixDirective,\n];\n\n@NgModule({\n  imports: [ CommonModule ],\n  declarations: [ ...COMPONENTS ],\n  exports: [ ...COMPONENTS ],\n})\nexport class NbFormFieldModule {\n}\n","import { NgModule } from '@angular/core';\n\nimport { NbOverlayModule } from '../cdk/overlay/overlay.module';\nimport { NbSharedModule } from '../shared/shared.module';\nimport { NbInputModule } from '../input/input.module';\nimport { NbCardModule } from '../card/card.module';\nimport { NbButtonModule } from '../button/button.module';\nimport { NbSelectWithAutocompleteComponent } from './select-with-autocomplete.component';\nimport { NbOptionModule } from '../option/option-list.module';\nimport { NbSelectModule } from '../select/select.module';\nimport { NbIconModule } from '../icon/icon.module';\nimport { NbFormFieldModule } from '../form-field/form-field.module';\n\nconst NB_SELECT_COMPONENTS = [NbSelectWithAutocompleteComponent];\n\n@NgModule({\n  imports: [\n    NbSharedModule,\n    NbOverlayModule,\n    NbButtonModule,\n    NbInputModule,\n    NbCardModule,\n    NbIconModule,\n    NbOptionModule,\n    NbFormFieldModule,\n    NbSelectModule,\n  ],\n  exports: [...NB_SELECT_COMPONENTS, NbOptionModule, NbSelectModule],\n  declarations: [...NB_SELECT_COMPONENTS],\n})\nexport class NbSelectWithAutocompleteModule {}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  Output,\n  QueryList,\n  ViewChild,\n  AfterContentInit,\n  OnDestroy,\n} from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { NbComponentSize } from '../component-size';\nimport { NbPosition } from '../cdk/overlay/overlay-position';\nimport { NbOptionComponent } from '../option/option.component';\nimport { NbPortalDirective } from '../cdk/overlay/mapping';\n\n// Component class scoped counter for aria attributes.\nlet lastAutocompleteId: number = 0;\n\n/**\n * The `NbAutocompleteComponent` overlay component.\n * Provides an `NbOptionList` overlay component.\n * */\n@Component({\n    selector: 'nb-autocomplete',\n    templateUrl: './autocomplete.component.html',\n    styleUrls: ['./autocomplete.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbAutocompleteComponent<T> implements AfterContentInit, OnDestroy {\n  protected destroy$: Subject<void> = new Subject<void>();\n\n  /**\n   * HTML input reference to which autocomplete connected.\n   * */\n  hostRef: ElementRef;\n\n  /**\n   * Component scoped id for aria attributes.\n   * */\n  id: string = `nb-autocomplete-${lastAutocompleteId++}`;\n\n  /**\n   * @docs-private\n   * Current overlay position because of we have to toggle overlayPosition\n   * in [ngClass] direction.\n   */\n  _overlayPosition: NbPosition = '' as NbPosition;\n\n  get overlayPosition(): NbPosition {\n    return this._overlayPosition;\n  }\n\n  set overlayPosition(value: NbPosition) {\n    this._overlayPosition = value;\n    // Need run change detection after first set from NbAutocompleteDirective\n    this.cd.detectChanges();\n  }\n\n  /**\n   * Returns width of the input.\n   * */\n  get hostWidth(): number {\n    return this.hostRef.nativeElement.getBoundingClientRect().width;\n  }\n\n  /**\n   * Function passed as input to process each string option value before render.\n   * */\n  @Input() handleDisplayFn: (value: any) => string;\n\n  /**\n   * Autocomplete size, available sizes:\n   * `tiny`, `small`, `medium` (default), `large`, `giant`\n   */\n  @Input() size: NbComponentSize = 'medium';\n\n  /**\n   * Flag passed as input to always make first option active.\n   * */\n  @Input() activeFirst: boolean = false;\n\n  /**\n   * Specifies class to be set on `nb-option`s container (`nb-option-list`)\n   * */\n  @Input() optionsListClass: NgClass['ngClass'];\n\n  /**\n   * Specifies class for the overlay panel with options\n   * */\n  @Input() optionsPanelClass: string | string[];\n\n  /**\n   * Specifies width (in pixels) to be set on `nb-option`s container (`nb-option-list`)\n   * */\n  @Input()\n  get optionsWidth(): number {\n    return this._optionsWidth ?? this.hostWidth;\n  }\n  set optionsWidth(value: number) {\n    this._optionsWidth = value;\n  }\n  protected _optionsWidth: number | undefined;\n\n  /**\n   * Will be emitted when selected value changes.\n   * */\n  @Output() selectedChange: EventEmitter<T> = new EventEmitter();\n\n  /**\n   * List of `NbOptionComponent`'s components passed as content.\n   * */\n  @ContentChildren(NbOptionComponent, { descendants: true }) options: QueryList<NbOptionComponent<T>>;\n\n  /**\n   * NbOptionList with options content.\n   * */\n  @ViewChild(NbPortalDirective) portal: NbPortalDirective;\n\n  constructor(protected cd: ChangeDetectorRef) {}\n\n  ngAfterContentInit() {\n    this.options.changes.pipe(takeUntil(this.destroy$)).subscribe(() => this.cd.detectChanges());\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  /**\n   * Autocomplete knows nothing about host html input element.\n   * So, attach method set input hostRef for styling.\n   * */\n  setHost(hostRef: ElementRef) {\n    this.hostRef = hostRef;\n  }\n\n  /**\n   * Propagate selected value.\n   * */\n  emitSelected(selected: T) {\n    this.selectedChange.emit(selected);\n  }\n\n  @HostBinding('class.size-tiny')\n  get tiny(): boolean {\n    return this.size === 'tiny';\n  }\n  @HostBinding('class.size-small')\n  get small(): boolean {\n    return this.size === 'small';\n  }\n  @HostBinding('class.size-medium')\n  get medium(): boolean {\n    return this.size === 'medium';\n  }\n  @HostBinding('class.size-large')\n  get large(): boolean {\n    return this.size === 'large';\n  }\n  @HostBinding('class.size-giant')\n  get giant(): boolean {\n    return this.size === 'giant';\n  }\n}\n","<nb-option-list *nbPortal\n                [size]=\"size\"\n                [position]=\"overlayPosition\"\n                [style.width.px]=\"optionsWidth\"\n                role=\"listbox\"\n                [id]=\"id\"\n                [class.empty]=\"!options?.length\"\n                [ngClass]=\"optionsListClass\">\n  <ng-content select=\"nb-option, nb-option-group\"></ng-content>\n</nb-option-list>\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  AfterViewInit,\n  ChangeDetectorRef,\n  ComponentRef,\n  Directive,\n  ElementRef,\n  forwardRef,\n  HostBinding,\n  HostListener,\n  Input,\n  OnDestroy,\n  QueryList,\n  Renderer2,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { merge, Subject } from 'rxjs';\nimport { filter, startWith, switchMap, takeUntil, tap } from 'rxjs/operators';\n\nimport { NbOverlayRef, NbScrollStrategy } from '../cdk/overlay/mapping';\nimport { NbTrigger, NbTriggerStrategy, NbTriggerStrategyBuilderService } from '../cdk/overlay/overlay-trigger';\nimport { NbOverlayService } from '../cdk/overlay/overlay-service';\nimport { ENTER, ESCAPE } from '../cdk/keycodes/keycodes';\nimport {\n  NbAdjustableConnectedPositionStrategy,\n  NbAdjustment,\n  NbPosition,\n  NbPositionBuilderService,\n} from '../cdk/overlay/overlay-position';\nimport {\n  NbActiveDescendantKeyManager,\n  NbActiveDescendantKeyManagerFactoryService,\n  NbKeyManagerActiveItemMode,\n} from '../cdk/a11y/descendant-key-manager';\nimport { NbScrollStrategies } from '../cdk/adapter/block-scroll-strategy-adapter';\nimport { NbOptionComponent } from '../option/option.component';\nimport { NbAutocompleteComponent } from './autocomplete.component';\n\n/**\n * The `NbAutocompleteDirective` provides a capability to expand input with\n * `NbAutocompleteComponent` overlay containing options to select and fill input with.\n *\n * @stacked-example(Showcase, autocomplete/autocomplete-showcase.component)\n *\n * ### Installation\n *\n * Import `NbAutocompleteModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbAutocompleteModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * You can bind control with form controls or ngModel.\n *\n * @stacked-example(Autocomplete form binding, autocomplete/autocomplete-form.component)\n *\n * Options in the autocomplete may be grouped using `nb-option-group` component.\n *\n * @stacked-example(Grouping, autocomplete/autocomplete-group.component)\n *\n * Autocomplete may change selected option value via provided function.\n *\n * @stacked-example(Custom display, autocomplete/autocomplete-custom-display.component)\n *\n * Also, autocomplete may make first option in option list active automatically.\n *\n * @stacked-example(Active first, autocomplete/autocomplete-active-first.component)\n *\n * */\n@Directive({\n    selector: 'input[nbAutocomplete]',\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => NbAutocompleteDirective),\n            multi: true,\n        },\n    ],\n    standalone: false\n})\nexport class NbAutocompleteDirective<T> implements OnDestroy, AfterViewInit, ControlValueAccessor {\n  /**\n   * NbAutocompleteComponent instance passed via input.\n   * */\n  protected _autocomplete: NbAutocompleteComponent<T>;\n\n  /**\n   * Trigger strategy used by overlay.\n   * @docs-private\n   * */\n  protected triggerStrategy: NbTriggerStrategy;\n\n  protected positionStrategy: NbAdjustableConnectedPositionStrategy;\n\n  protected overlayRef: NbOverlayRef;\n\n  protected keyManager: NbActiveDescendantKeyManager<NbOptionComponent<T>>;\n\n  protected destroy$: Subject<void> = new Subject<void>();\n\n  protected _onChange: (value: T) => void = () => {};\n\n  protected _onTouched = () => {};\n\n  /**\n   * Determines is autocomplete overlay opened.\n   * */\n  get isOpen(): boolean {\n    return this.overlayRef && this.overlayRef.hasAttached();\n  }\n\n  /**\n   * Determines is autocomplete overlay closed.\n   * */\n  get isClosed(): boolean {\n    return !this.isOpen;\n  }\n\n  /**\n   * Provides autocomplete component.\n   * */\n  @Input('nbAutocomplete')\n  get autocomplete(): NbAutocompleteComponent<T> {\n    return this._autocomplete;\n  }\n  set autocomplete(autocomplete: NbAutocompleteComponent<T>) {\n    this._autocomplete = autocomplete;\n  }\n\n  /**\n   * Determines options overlay offset (in pixels).\n   **/\n  @Input() overlayOffset: number = 8;\n\n  /**\n   * Determines options overlay scroll strategy.\n   **/\n  @Input() scrollStrategy: NbScrollStrategies = 'block';\n\n  @Input() customOverlayHost: ElementRef;\n\n  @HostBinding('class.nb-autocomplete-position-top')\n  get top(): boolean {\n    return this.isOpen && this.autocomplete.options.length && this.autocomplete.overlayPosition === NbPosition.TOP;\n  }\n\n  @HostBinding('class.nb-autocomplete-position-bottom')\n  get bottom(): boolean {\n    return this.isOpen && this.autocomplete.options.length && this.autocomplete.overlayPosition === NbPosition.BOTTOM;\n  }\n\n  @HostBinding('attr.role')\n  role: string = 'combobox';\n\n  @HostBinding('attr.aria-autocomplete')\n  ariaAutocomplete: string = 'list';\n\n  @HostBinding('attr.haspopup')\n  hasPopup: string = 'true';\n\n  @HostBinding('attr.aria-expanded')\n  get ariaExpanded(): string {\n    return this.isOpen && this.isOpen.toString();\n  }\n\n  @HostBinding('attr.aria-owns')\n  get ariaOwns() {\n    return this.isOpen ? this.autocomplete.id : null;\n  }\n\n  @HostBinding('attr.aria-activedescendant')\n  get ariaActiveDescendant() {\n    return this.isOpen && this.keyManager.activeItem ? this.keyManager.activeItem.id : null;\n  }\n\n  constructor(\n    protected hostRef: ElementRef,\n    protected overlay: NbOverlayService,\n    protected cd: ChangeDetectorRef,\n    protected triggerStrategyBuilder: NbTriggerStrategyBuilderService,\n    protected positionBuilder: NbPositionBuilderService,\n    protected activeDescendantKeyManagerFactory: NbActiveDescendantKeyManagerFactoryService<NbOptionComponent<T>>,\n    protected renderer: Renderer2,\n  ) {}\n\n  ngAfterViewInit() {\n    this.triggerStrategy = this.createTriggerStrategy();\n    this.subscribeOnTriggers();\n  }\n\n  ngOnDestroy() {\n    if (this.triggerStrategy) {\n      this.triggerStrategy.destroy();\n    }\n\n    if (this.positionStrategy) {\n      this.positionStrategy.dispose();\n    }\n\n    if (this.overlayRef) {\n      this.overlayRef.dispose();\n    }\n\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  @HostListener('input')\n  handleInput() {\n    const currentValue = this.hostRef.nativeElement.value;\n    this._onChange(currentValue);\n    this.setHostInputValue(this.getDisplayValue(currentValue));\n    this.show();\n  }\n\n  @HostListener('keydown.arrowDown')\n  @HostListener('keydown.arrowUp')\n  handleKeydown() {\n    this.show();\n  }\n\n  @HostListener('blur')\n  handleBlur() {\n    this._onTouched();\n  }\n\n  show() {\n    if (this.shouldShow()) {\n      this.attachToOverlay();\n      this.setActiveItem();\n    }\n  }\n\n  hide() {\n    if (this.isOpen) {\n      this.overlayRef.detach();\n      // Need to update class via @HostBinding\n      this.cd.markForCheck();\n    }\n  }\n\n  writeValue(value: T): void {\n    this.handleInputValueUpdate(value);\n  }\n\n  registerOnChange(fn: (value: any) => {}): void {\n    this._onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this._onTouched = fn;\n  }\n\n  setDisabledState(disabled: boolean): void {\n    this.renderer.setProperty(this.hostRef.nativeElement, 'disabled', disabled);\n  }\n\n  protected subscribeOnOptionClick() {\n    /**\n     * If the user changes provided options list in the runtime we have to handle this\n     * and resubscribe on options selection changes event.\n     * Otherwise, the user will not be able to select new options.\n     * */\n    this.autocomplete.options.changes\n      .pipe(\n        tap(() => this.setActiveItem()),\n        startWith(this.autocomplete.options),\n        switchMap((options: QueryList<NbOptionComponent<T>>) => {\n          return merge(...options.map((option) => option.click));\n        }),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((clickedOption: NbOptionComponent<T>) => this.handleInputValueUpdate(clickedOption.value, true));\n  }\n\n  protected subscribeOnPositionChange() {\n    this.positionStrategy.positionChange.pipe(takeUntil(this.destroy$)).subscribe((position: NbPosition) => {\n      this.autocomplete.overlayPosition = position;\n      this.cd.detectChanges();\n    });\n  }\n\n  protected getActiveItem(): NbOptionComponent<T> {\n    return this.keyManager.activeItem;\n  }\n\n  protected setupAutocomplete() {\n    this.autocomplete.setHost(this.customOverlayHost || this.hostRef);\n  }\n\n  protected getDisplayValue(value: string) {\n    const displayFn = this.autocomplete.handleDisplayFn;\n    return displayFn ? displayFn(value) : value;\n  }\n\n  protected getContainer() {\n    return (\n      this.overlayRef &&\n      this.isOpen &&\n      <ComponentRef<any>>{\n        location: {\n          nativeElement: this.overlayRef.overlayElement,\n        },\n      }\n    );\n  }\n\n  protected handleInputValueUpdate(value: T, focusInput: boolean = false) {\n    this.setHostInputValue(value ?? '');\n    this._onChange(value);\n    if (focusInput) {\n      this.hostRef.nativeElement.focus();\n    }\n    this.autocomplete.emitSelected(value);\n    this.hide();\n  }\n\n  protected subscribeOnTriggers() {\n    this.triggerStrategy.show$.pipe(filter(() => this.isClosed)).subscribe(() => this.show());\n\n    this.triggerStrategy.hide$.pipe(filter(() => this.isOpen)).subscribe(() => this.hide());\n  }\n\n  protected createTriggerStrategy(): NbTriggerStrategy {\n    return this.triggerStrategyBuilder\n      .trigger(NbTrigger.FOCUS)\n      .host(this.hostRef.nativeElement)\n      .container(() => this.getContainer())\n      .build();\n  }\n\n  protected createKeyManager(): void {\n    this.keyManager = this.activeDescendantKeyManagerFactory.create(this.autocomplete.options);\n  }\n\n  protected setHostInputValue(value) {\n    this.hostRef.nativeElement.value = this.getDisplayValue(value);\n  }\n\n  protected createPositionStrategy(): NbAdjustableConnectedPositionStrategy {\n    return this.positionBuilder\n      .connectedTo(this.customOverlayHost || this.hostRef)\n      .position(NbPosition.BOTTOM)\n      .offset(this.overlayOffset)\n      .adjustment(NbAdjustment.VERTICAL);\n  }\n\n  protected subscribeOnOverlayKeys(): void {\n    this.overlayRef\n      .keydownEvents()\n      .pipe(takeUntil(this.destroy$))\n      .subscribe((event: KeyboardEvent) => {\n        if (event.keyCode === ESCAPE && this.isOpen) {\n          event.preventDefault();\n          this.hostRef.nativeElement.focus();\n          this.hide();\n        } else if (event.keyCode === ENTER) {\n          event.preventDefault();\n          const activeItem = this.getActiveItem();\n          if (!activeItem) {\n            return;\n          }\n          this.handleInputValueUpdate(activeItem.value, true);\n        } else {\n          this.keyManager.onKeydown(event);\n        }\n      });\n  }\n\n  protected setActiveItem() {\n    // If autocomplete has activeFirst input set to true,\n    // keyManager set first option active, otherwise - reset active option.\n    const mode = this.autocomplete.activeFirst\n      ? NbKeyManagerActiveItemMode.FIRST_ACTIVE\n      : NbKeyManagerActiveItemMode.RESET_ACTIVE;\n    this.keyManager.setActiveItem(mode);\n    this.cd.detectChanges();\n  }\n\n  protected attachToOverlay() {\n    if (!this.overlayRef) {\n      this.setupAutocomplete();\n      this.initOverlay();\n    }\n    this.overlayRef.attach(this.autocomplete.portal);\n  }\n\n  protected createOverlay() {\n    const scrollStrategy = this.createScrollStrategy();\n    this.overlayRef = this.overlay.create({\n      positionStrategy: this.positionStrategy,\n      scrollStrategy,\n      panelClass: this.autocomplete.optionsPanelClass,\n    });\n  }\n\n  protected initOverlay() {\n    this.positionStrategy = this.createPositionStrategy();\n\n    this.createKeyManager();\n    this.subscribeOnPositionChange();\n    this.subscribeOnOptionClick();\n    this.checkOverlayVisibility();\n    this.createOverlay();\n    this.subscribeOnOverlayKeys();\n  }\n\n  protected checkOverlayVisibility() {\n    this.autocomplete.options.changes.pipe(takeUntil(this.destroy$)).subscribe(() => {\n      if (!this.autocomplete.options.length) {\n        this.hide();\n      }\n    });\n  }\n\n  protected createScrollStrategy(): NbScrollStrategy {\n    return this.overlay.scrollStrategies[this.scrollStrategy]();\n  }\n\n  protected shouldShow(): boolean {\n    return this.isClosed;\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NbOverlayModule } from '../cdk/overlay/overlay.module';\nimport { NbCardModule } from '../card/card.module';\nimport { NbAutocompleteComponent } from './autocomplete.component';\nimport { NbAutocompleteDirective } from './autocomplete.directive';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { NbOptionModule } from '../option/option-list.module';\n\nconst NB_AUTOCOMPLETE_COMPONENTS = [\n  NbAutocompleteComponent,\n  NbAutocompleteDirective,\n];\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    NbOverlayModule,\n    NbCardModule,\n    NbOptionModule,\n  ],\n   exports: [\n     ...NB_AUTOCOMPLETE_COMPONENTS,\n     NbOptionModule,\n   ],\n   declarations: [...NB_AUTOCOMPLETE_COMPONENTS],\n})\nexport class NbAutocompleteModule {\n}\n","import { TemplateRef, InjectionToken, ViewContainerRef } from '@angular/core';\n// Do not remove (TS4023).\n// eslint-disable-next-line\nimport { ComponentType } from '@angular/cdk/overlay';\nimport { NbComponentType } from '../cdk/overlay/mapping';\n\nexport enum NbWindowState {\n  MINIMIZED = 'minimized',\n  MAXIMIZED = 'maximized',\n  FULL_SCREEN = 'full-screen',\n}\n\nexport interface NbWindowStateChange {\n  oldState: NbWindowState;\n  newState: NbWindowState;\n}\n\nexport interface NbWindowControlButtonsConfig {\n  minimize: boolean;\n  maximize: boolean;\n  fullScreen: boolean;\n  close: boolean;\n}\n\nexport const NB_WINDOW_DEFAULT_BUTTONS_CONFIG: NbWindowControlButtonsConfig = {\n  minimize: true,\n  maximize: true,\n  fullScreen: true,\n  close: true,\n};\n\n/**\n * Window configuration options.\n */\nexport class NbWindowConfig {\n  /**\n   * Window title.\n   */\n  title: string = '';\n\n  /**\n   * Window title as template. Use it instead of `title` property.\n   */\n  titleTemplate?: TemplateRef<any>;\n\n  /**\n   * Title as template may receive data through `config.titleTemplateContext` property.\n   * Window title as Template. You can access context inside template as $implicit.\n   */\n  titleTemplateContext?: Object = {};\n\n  /**\n   * Initial window state. Full screen by default.\n   */\n  initialState: NbWindowState = NbWindowState.FULL_SCREEN;\n\n  /**\n   * If true than backdrop will be rendered behind window.\n   * By default set to true.\n   */\n  hasBackdrop: boolean = true;\n\n  /**\n   * If set to true mouse clicks on backdrop will close a window.\n   * Default is true.\n   */\n  closeOnBackdropClick: boolean = true;\n\n  /**\n   * If true then escape press will close a window.\n   * Default is true.\n   */\n  closeOnEsc: boolean = true;\n\n  /**\n   * Class to be applied to the window.\n   */\n  windowClass: string = '';\n\n  /**\n   * Both, template and component may receive data through `config.context` property.\n   * For components, this data will be set as component properties.\n   * For templates, you can access it inside template as $implicit.\n   */\n  context?: Object = {};\n\n  /**\n   * Where the attached component should live in Angular's *logical* component tree.\n   * This affects what is available for injection and the change detection order for the\n   * component instantiated inside of the window. This does not affect where the window\n   * content will be rendered.\n   */\n  viewContainerRef: ViewContainerRef = null;\n\n  /**\n   * Windows control buttons can be hidden by setting according property to false.\n   */\n  buttons: Partial<NbWindowControlButtonsConfig> = {};\n\n  constructor(...configs: Partial<NbWindowConfig>[]) {\n    Object.assign(this, ...configs);\n    this.applyDefaultButtonConfig();\n  }\n\n  protected applyDefaultButtonConfig() {\n    Object.assign(this, { buttons: { ...NB_WINDOW_DEFAULT_BUTTONS_CONFIG, ...this.buttons } });\n  }\n}\n\nexport const NB_WINDOW_CONTENT = new InjectionToken<TemplateRef<any> | NbComponentType>('Nebular Window Content');\nexport const NB_WINDOW_CONFIG = new InjectionToken<NbWindowConfig>('Nebular Window Config');\nexport const NB_WINDOW_CONTEXT = new InjectionToken<Object>('Nebular Window Context');\n","import { ComponentRef } from '@angular/core';\nimport { Observable, ReplaySubject, Subject } from 'rxjs';\nimport { NbWindowComponent } from './window.component';\nimport { NbWindowConfig, NbWindowState, NbWindowStateChange } from './window.options';\n\n/**\n * The `NbWindowRef` helps to manipulate window after it was created.\n * The window can be dismissed by using `close` method of the windowRef.\n * You can access rendered component as `componentRef` property of the windowRef.\n * Property `contentInstance` contains the instance of the component opened in the window.\n */\nexport class NbWindowRef<T = any, R = any> {\n  componentRef: ComponentRef<NbWindowComponent>;\n  componentInstance: T;\n\n  protected prevStateValue: NbWindowState;\n  protected stateValue: NbWindowState;\n  /**\n   * Current window state.\n   */\n  get state() {\n    return this.stateValue;\n  }\n  set state(newState: NbWindowState) {\n    if (newState && this.stateValue !== newState) {\n      this.prevStateValue = this.state;\n      this.stateValue = newState;\n      this.stateChange$.next({ oldState: this.prevStateValue, newState });\n    }\n  }\n\n  protected stateChange$ = new ReplaySubject<NbWindowStateChange>(1);\n  /**\n   * Emits when window state change.\n   */\n  get stateChange(): Observable<NbWindowStateChange> {\n    return this.stateChange$.asObservable();\n  }\n\n  protected _closed = false;\n  protected closed$ = new Subject<R>();\n  /**\n   * Emits when window was closed.\n   */\n  get onClose() {\n    return this.closed$.asObservable();\n  }\n\n  constructor(public config: NbWindowConfig) {\n    this.state = config.initialState;\n  }\n\n  /**\n   * Minimize window.\n   */\n  minimize() {\n    this.state = NbWindowState.MINIMIZED;\n  }\n\n  /**\n   * Maximize window.\n   */\n  maximize() {\n    this.state = NbWindowState.MAXIMIZED;\n  }\n\n  /**\n   * Set window on top.\n   */\n  fullScreen() {\n    this.state = NbWindowState.FULL_SCREEN;\n  }\n\n  toPreviousState() {\n    this.state = this.prevStateValue;\n  }\n\n  /**\n   * Closes window.\n   * */\n  close(res?: R) {\n    if (this._closed) {\n      return;\n    }\n\n    this._closed = true;\n    this.componentRef.destroy();\n    this.componentInstance = null;\n    this.stateChange$.complete();\n    this.closed$.next(res);\n    this.closed$.complete();\n  }\n}\n","import { Component, ViewContainerRef, ViewChild } from '@angular/core';\n\n@Component({\n    selector: 'nb-windows-container',\n    template: `<ng-container #viewContainerRef></ng-container>`,\n    styleUrls: ['./windows-container.component.scss'],\n    standalone: false\n})\nexport class NbWindowsContainerComponent {\n\n  // TODO static must be false as of Angular 9.0.0, issues/1514\n  @ViewChild('viewContainerRef', { read: ViewContainerRef, static: true }) viewContainerRef: ViewContainerRef;\n}\n","import {\n  Component,\n  ElementRef,\n  HostBinding,\n  Inject,\n  OnDestroy,\n  OnInit,\n  TemplateRef,\n  Renderer2,\n  ViewChild,\n  Type,\n  ComponentFactoryResolver,\n  Input,\n  AfterViewChecked,\n} from '@angular/core';\nimport { NbFocusTrap, NbFocusTrapFactoryService } from '../cdk/a11y/focus-trap';\nimport { NbComponentPortal, NbComponentType, NbTemplatePortal } from '../cdk/overlay/mapping';\nimport { NbOverlayContainerComponent } from '../cdk/overlay/overlay-container';\nimport { NB_WINDOW_CONTENT, NbWindowConfig, NbWindowState, NB_WINDOW_CONTEXT } from './window.options';\nimport { NbWindowRef } from './window-ref';\n\n@Component({\n    selector: 'nb-window',\n    template: `\n    <nb-card>\n      <nb-card-header>\n        <div *ngIf=\"config.titleTemplate; else textTitleTemplate\" cdkFocusInitial tabindex=\"-1\">\n          <ng-container\n            *ngTemplateOutlet=\"config.titleTemplate; context: { $implicit: config.titleTemplateContext }\"\n          ></ng-container>\n        </div>\n\n        <ng-template #textTitleTemplate>\n          <div cdkFocusInitial class=\"title\" tabindex=\"-1\">{{ config.title }}</div>\n        </ng-template>\n\n        <div class=\"buttons\">\n          <ng-container *ngIf=\"showMinimize\">\n            <button nbButton ghost (click)=\"minimize()\">\n              <nb-icon icon=\"minus-outline\" pack=\"nebular-essentials\"></nb-icon>\n            </button>\n          </ng-container>\n\n          <ng-container *ngIf=\"showMaximize\">\n            <button nbButton ghost *ngIf=\"isFullScreen\" (click)=\"maximize()\">\n              <nb-icon icon=\"collapse-outline\" pack=\"nebular-essentials\"></nb-icon>\n            </button>\n          </ng-container>\n\n          <ng-container *ngIf=\"showFullScreen\">\n            <button nbButton ghost *ngIf=\"minimized || maximized\" (click)=\"maximizeOrFullScreen()\">\n              <nb-icon icon=\"expand-outline\" pack=\"nebular-essentials\"></nb-icon>\n            </button>\n          </ng-container>\n\n          <ng-container *ngIf=\"showClose\">\n            <button nbButton ghost (click)=\"close()\">\n              <nb-icon icon=\"close-outline\" pack=\"nebular-essentials\"></nb-icon>\n            </button>\n          </ng-container>\n        </div>\n      </nb-card-header>\n      <nb-card-body *ngIf=\"maximized || isFullScreen\">\n        <nb-overlay-container></nb-overlay-container>\n      </nb-card-body>\n    </nb-card>\n  `,\n    styleUrls: ['./window.component.scss'],\n    standalone: false\n})\nexport class NbWindowComponent implements OnInit, AfterViewChecked, OnDestroy {\n  @Input() cfr: ComponentFactoryResolver;\n\n  @HostBinding('class.full-screen')\n  get isFullScreen() {\n    return this.windowRef.state === NbWindowState.FULL_SCREEN;\n  }\n\n  @HostBinding('class.maximized')\n  get maximized() {\n    return this.windowRef.state === NbWindowState.MAXIMIZED;\n  }\n\n  @HostBinding('class.minimized')\n  get minimized() {\n    return this.windowRef.state === NbWindowState.MINIMIZED;\n  }\n\n  get showMinimize(): boolean {\n    return this.config.buttons.minimize;\n  }\n\n  get showMaximize(): boolean {\n    return this.config.buttons.maximize;\n  }\n\n  get showFullScreen(): boolean {\n    return this.config.buttons.fullScreen;\n  }\n\n  get showClose(): boolean {\n    return this.config.buttons.close;\n  }\n\n  @ViewChild(NbOverlayContainerComponent) overlayContainer: NbOverlayContainerComponent;\n\n  protected focusTrap: NbFocusTrap;\n\n  constructor(\n    @Inject(NB_WINDOW_CONTENT) public content: TemplateRef<any> | NbComponentType,\n    @Inject(NB_WINDOW_CONTEXT) public context: Object,\n    public windowRef: NbWindowRef,\n    public config: NbWindowConfig,\n    protected focusTrapFactory: NbFocusTrapFactoryService,\n    protected elementRef: ElementRef,\n    protected renderer: Renderer2,\n  ) {}\n\n  ngOnInit() {\n    this.focusTrap = this.focusTrapFactory.create(this.elementRef.nativeElement);\n    this.focusTrap.blurPreviouslyFocusedElement();\n    this.focusTrap.focusInitialElement();\n\n    if (this.config.windowClass) {\n      this.renderer.addClass(this.elementRef.nativeElement, this.config.windowClass);\n    }\n  }\n\n  ngAfterViewChecked() {\n    if (!this.overlayContainer || this.overlayContainer.isAttached) {\n      return;\n    }\n\n    if (this.content instanceof TemplateRef) {\n      this.attachTemplate();\n    } else {\n      this.attachComponent();\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.focusTrap) {\n      this.focusTrap.restoreFocus();\n    }\n\n    this.close();\n  }\n\n  minimize() {\n    if (this.windowRef.state === NbWindowState.MINIMIZED) {\n      this.windowRef.toPreviousState();\n    } else {\n      this.windowRef.minimize();\n    }\n  }\n\n  maximize() {\n    this.windowRef.maximize();\n  }\n\n  fullScreen() {\n    this.windowRef.fullScreen();\n  }\n\n  maximizeOrFullScreen() {\n    if (this.windowRef.state === NbWindowState.MINIMIZED && this.showMaximize) {\n      this.maximize();\n    } else {\n      this.fullScreen();\n    }\n  }\n\n  close() {\n    this.windowRef.close();\n  }\n\n  protected attachTemplate() {\n    this.overlayContainer.attachTemplatePortal(\n      new NbTemplatePortal(this.content as TemplateRef<any>, null, this.context),\n    );\n  }\n\n  protected attachComponent() {\n    const portal = new NbComponentPortal(this.content as Type<any>, null, null, this.cfr);\n    const ref = this.overlayContainer.attachComponentPortal(portal, this.context);\n    this.windowRef.componentInstance = ref.instance;\n\n    ref.changeDetectorRef.detectChanges();\n  }\n}\n","import {\n  ComponentFactoryResolver,\n  ComponentRef,\n  Inject,\n  Injectable,\n  Injector,\n  TemplateRef,\n  ViewContainerRef,\n} from '@angular/core';\nimport { filter } from 'rxjs/operators';\nimport { NbComponentPortal, NbComponentType, NbOverlayPositionBuilder, NbOverlayRef } from '../cdk/overlay/mapping';\nimport { NbOverlayService } from '../cdk/overlay/overlay-service';\nimport { NbBlockScrollStrategyAdapter } from '../cdk/adapter/block-scroll-strategy-adapter';\nimport {\n  NB_WINDOW_CONFIG,\n  NB_WINDOW_CONTENT,\n  NB_WINDOW_CONTEXT,\n  NbWindowConfig,\n  NbWindowState,\n} from './window.options';\nimport { NbWindowRef } from './window-ref';\nimport { NbWindowsContainerComponent } from './windows-container.component';\nimport { NbWindowComponent } from './window.component';\nimport { NB_DOCUMENT } from '../../theme.options';\n\n/**\n * The `NbWindowService` can be used to open windows.\n *\n * @stacked-example(Showcase, window/window-showcase.component)\n *\n * ### Installation\n *\n * Import `NbWindowModule` to your app module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbWindowModule.forRoot(config),\n *   ],\n * })\n * export class AppModule { }\n * ```\n *\n * If you are using it in a lazy loaded module than you have to install `NbWindowModule.forChild`:\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbWindowModule.forChild(config),\n *   ],\n * })\n * export class LazyLoadedModule { }\n * ```\n *\n * ### Usage\n *\n * A new window can be opened by calling the `open` method with a component or template to be loaded\n * and an optional configuration.\n * `open` method will return `NbWindowRef` that can be used for the further manipulations.\n *\n * ```ts\n * const windowRef = this.windowService.open(MyComponent, { ... });\n * ```\n *\n * `NbWindowRef` gives you ability manipulate opened window.\n * Also, you can inject `NbWindowRef` inside provided component which rendered in window.\n *\n * ```ts\n * this.windowService.open(MyWindowComponent, { ... });\n *\n * // my.component.ts\n * constructor(protected windowRef: NbWindowRef) {\n * }\n *\n * minimize() {\n *   this.windowRef.minimize();\n * }\n *\n * close() {\n *   this.windowRef.close();\n * }\n * ```\n *\n * Instead of component you can create window from TemplateRef. As usual you can access context provided via config\n * via `let-` variables. Also you can get reference to the `NbWindowRef` in context's `windowRef` property.\n *\n * @stacked-example(Window content from TemplateRef, window/template-window.component)\n *\n * You could pass the optional window return value to the `NbWindowRef.close` method.\n * The passed value would be emitted to the `NbWindowRef.onClose` listeners.\n *\n * @stacked-example(Result, window/window-result.component)\n *\n * ### Configuration\n *\n * As mentioned above, `open` method of the `NbWindowService` may receive optional configuration options.\n * Also, you can modify default windows configuration through `NbWindowModule.forRoot({ ... })`.\n * You can read about all available options on [API tab](docs/components/window/api#nbwindowconfig).\n *\n * @stacked-example(Configuration, window/windows-backdrop.component)\n *\n * You can configure which buttons are available in a window via the `buttons` property of the window config.\n * @stacked-example(Control buttons, window/window-controls.component)\n *\n */\n@Injectable()\nexport class NbWindowService {\n  protected document: Document;\n  protected overlayRef: NbOverlayRef;\n  protected windowsContainerViewRef: ViewContainerRef;\n  protected openWindows: NbWindowRef[] = [];\n\n  constructor(\n    protected componentFactoryResolver: ComponentFactoryResolver,\n    protected overlayService: NbOverlayService,\n    protected overlayPositionBuilder: NbOverlayPositionBuilder,\n    protected blockScrollStrategy: NbBlockScrollStrategyAdapter,\n    @Inject(NB_WINDOW_CONFIG) protected readonly defaultWindowsConfig: NbWindowConfig,\n    protected cfr: ComponentFactoryResolver,\n    @Inject(NB_DOCUMENT) document,\n  ) {\n    this.document = document;\n  }\n\n  /**\n   * Opens new window.\n   * @param windowContent\n   * @param windowConfig\n   * */\n  open(windowContent: TemplateRef<any> | NbComponentType, windowConfig: Partial<NbWindowConfig> = {}): NbWindowRef {\n    if (this.shouldCreateWindowsContainer()) {\n      this.createWindowsContainer();\n    }\n\n    const config = new NbWindowConfig(this.defaultWindowsConfig, windowConfig);\n    const windowRef = new NbWindowRef(config);\n    windowRef.componentRef = this.appendWindow(windowContent, config, windowRef);\n\n    this.openWindows.push(windowRef);\n    this.subscribeToEvents(windowRef);\n\n    return windowRef;\n  }\n\n  protected shouldCreateWindowsContainer(): boolean {\n    if (this.windowsContainerViewRef) {\n      const containerEl = this.windowsContainerViewRef.element.nativeElement;\n      return !this.document.body.contains(containerEl);\n    }\n\n    return true;\n  }\n\n  protected createWindowsContainer() {\n    if (this.overlayRef) {\n      this.overlayRef.dispose();\n    }\n\n    this.overlayRef = this.overlayService.create({\n      scrollStrategy: this.overlayService.scrollStrategies.noop(),\n      positionStrategy: this.overlayPositionBuilder.global().bottom().right(),\n      hasBackdrop: true,\n    });\n    const windowsContainerPortal = new NbComponentPortal(NbWindowsContainerComponent, null, null, this.cfr);\n    const overlayRef = this.overlayRef.attach(windowsContainerPortal);\n    this.windowsContainerViewRef = overlayRef.instance.viewContainerRef;\n  }\n\n  protected appendWindow(\n    content: TemplateRef<any> | NbComponentType,\n    config: NbWindowConfig,\n    windowRef: NbWindowRef,\n  ): ComponentRef<NbWindowComponent> {\n    const context = content instanceof TemplateRef ? { $implicit: config.context, windowRef } : config.context;\n\n    const providers = [\n      { provide: NB_WINDOW_CONTENT, useValue: content },\n      { provide: NB_WINDOW_CONTEXT, useValue: context },\n      { provide: NbWindowConfig, useValue: config },\n      { provide: NbWindowRef, useValue: windowRef },\n    ];\n    const parentInjector = config.viewContainerRef\n      ? config.viewContainerRef.injector\n      : this.windowsContainerViewRef.injector;\n    const injector = Injector.create({ parent: parentInjector, providers });\n    const windowFactory = this.componentFactoryResolver.resolveComponentFactory(NbWindowComponent);\n\n    const ref = this.windowsContainerViewRef.createComponent(\n      windowFactory,\n      this.windowsContainerViewRef.length,\n      injector,\n    );\n    ref.instance.cfr = this.cfr;\n    ref.changeDetectorRef.detectChanges();\n    return ref;\n  }\n\n  protected subscribeToEvents(windowRef: NbWindowRef) {\n    if (windowRef.config.closeOnBackdropClick) {\n      this.overlayRef.backdropClick().subscribe(() => windowRef.close());\n    }\n\n    if (windowRef.config.closeOnEsc) {\n      this.overlayRef\n        .keydownEvents()\n        .pipe(filter((event: KeyboardEvent) => event.keyCode === 27))\n        .subscribe(() => windowRef.close());\n    }\n\n    windowRef.stateChange.subscribe(() => this.checkAndUpdateOverlay());\n\n    windowRef.onClose.subscribe(() => {\n      this.openWindows.splice(this.openWindows.indexOf(windowRef), 1);\n      this.checkAndUpdateOverlay();\n    });\n  }\n\n  protected checkAndUpdateOverlay() {\n    const fullScreenWindows = this.openWindows.filter((w) => w.state === NbWindowState.FULL_SCREEN);\n    if (fullScreenWindows.length > 0) {\n      this.blockScrollStrategy.enable();\n    } else {\n      this.blockScrollStrategy.disable();\n    }\n\n    if (fullScreenWindows.some((w) => w.config.hasBackdrop)) {\n      this.overlayRef.backdropElement.removeAttribute('hidden');\n    } else {\n      this.overlayRef.backdropElement.setAttribute('hidden', '');\n    }\n  }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NbOverlayModule } from '../cdk/overlay/overlay.module';\nimport { NbCardModule } from '../card/card.module';\nimport { NbIconModule } from '../icon/icon.module';\nimport { NbButtonModule } from '../button/button.module';\nimport { NbWindowService } from './window.service';\nimport { NbWindowsContainerComponent } from './windows-container.component';\nimport { NbWindowComponent } from './window.component';\nimport { NB_WINDOW_CONFIG, NbWindowConfig } from './window.options';\n\n@NgModule({\n  imports: [ CommonModule, NbOverlayModule, NbCardModule, NbIconModule, NbButtonModule ],\n  declarations: [\n    NbWindowsContainerComponent,\n    NbWindowComponent,\n  ],\n})\nexport class NbWindowModule {\n  static forRoot(defaultConfig?: Partial<NbWindowConfig>): ModuleWithProviders<NbWindowModule> {\n    return {\n      ngModule: NbWindowModule,\n      providers: [\n        NbWindowService,\n        { provide: NB_WINDOW_CONFIG, useValue: defaultConfig },\n      ],\n    };\n  }\n\n  static forChild(defaultConfig?: Partial<NbWindowConfig>): ModuleWithProviders<NbWindowModule> {\n    return {\n      ngModule: NbWindowModule,\n      providers: [\n        NbWindowService,\n        { provide: NB_WINDOW_CONFIG, useValue: defaultConfig },\n      ],\n    };\n  }\n}\n","import {\n  AfterViewInit,\n  Attribute,\n  ChangeDetectorRef,\n  ComponentRef,\n  Directive,\n  ElementRef,\n  forwardRef,\n  Inject,\n  Input,\n  isDevMode,\n  Renderer2,\n} from '@angular/core';\nimport { distinctUntilChanged, filter, map, pairwise, startWith, takeUntil } from 'rxjs/operators';\nimport { fromEvent, merge, Subject, Subscription } from 'rxjs';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NbTimePickerComponent } from './timepicker.component';\nimport { NbOverlayRef, NbScrollStrategy } from '../cdk/overlay/mapping';\nimport {\n  NbAdjustableConnectedPositionStrategy,\n  NbAdjustment,\n  NbPosition,\n  NbPositionBuilderService,\n} from '../cdk/overlay/overlay-position';\nimport { NbOverlayService } from '../cdk/overlay/overlay-service';\nimport { NbTrigger, NbTriggerStrategy, NbTriggerStrategyBuilderService } from '../cdk/overlay/overlay-trigger';\nimport { NbSelectedTimePayload } from './model';\nimport { NbDateService } from '../calendar-kit/services/date.service';\nimport { NbCalendarTimeModelService } from '../calendar-kit/services/calendar-time-model.service';\nimport { NB_DOCUMENT } from '../../theme.options';\n\n/**\n * The `NbTimePickerDirective` is form control that gives you ability to select a time. The timepicker\n * is shown when input receives a `focus` event.\n * ```html\n * <input [nbTimepicker]=\"timepicker\">\n * <nb-timepicker #timepicker></nb-timepicker>\n * ```\n *\n * @stacked-example(Showcase, timepicker/timepicker-showcase.component)\n *\n * ### Installation\n *\n * Import `NbTimepickerModule.forRoot()` to your root module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbTimepickerModule.forRoot(),\n *   ],\n * })\n * export class AppModule { }\n * ```\n * And `NbTimepickerModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbTimepickerModule,\n *   ],\n * })\n * export class PageModule { }\n *\n * ```\n * <div id=\"native-parse-issue\" class=\"note note-warning\">\n * <div class=\"note-title\">Note</div>\n * <div class=\"note-body\">\n * Timepicker uses native Date object by default, which doesn't support parsing by custom format.\n * According to the ECMAScript specification, the only supported format is a format described by ISO 8061 standard.\n * This standard requires date part to be included in the date string,\n * meaning you have to type a date+time in the input.\n * We highly recommend you to use NbDateFnsDateModule or NbMomentDateModule to be able to support time only strings in\n * the timepicker inputs. These modules use date-fns and moment date libraries, which provide capabilities\n * to parse time only strings.\n * See \"Formatting Issue\" at\n * <a href=\"https://akveo.github.io/nebular/docs/components/datepicker/overview#formatting-issue\">Date picker docs</a>\n * for installation instructions.\n * </div>\n * </div>\n * <hr>\n *\n * ### Usage\n *\n * To show seconds column along with hours and minutes use `withSeconds` input\n *\n * ```html\n * <input [nbTimepicker]=\"timepicker\">\n * <nb-timepicker #timepicker withSeconds></nb-timepicker>\n * ```\n * @stacked-example(Time picker with seconds, timepicker/timepicker-with-seconds.component)\n *\n * To force timepicker work in 12 hours format, use `twelveHoursFormat` input.\n * By default, timepicker choose 12 or 24 formats based on application locale standards\n *\n * ```html\n * <input [nbTimepicker]=\"timepicker\" twelveHoursFormat>\n * <nb-timepicker #timepicker></nb-timepicker>\n * ```\n *\n * @stacked-example(Twelve hours format showcase, timepicker/timepicker-twelve-hours-format.component)\n *\n * A single column picker with options value as time and minute, so users won’t be able to pick\n * hours and minutes individually.\n * You can control options minutes offset via `step` input, e.g.: 11:00, 11:20, 11:40...'\n *\n * @stacked-example(Single column, timepicker/timepicker-single-column.component)\n *\n * Timepicker support forms and reactive forms API so you can provide value using `formControl` and `ngModel` directives\n * @stacked-example(Form control, timepicker/timepicker-form-control.component)\n *\n * <input [nbTimepicker]=\"timepicker\" twelveHoursFormat>\n * <nb-timepicker #timepicke [formControl]=\"formControl\"></nb-timepicker>\n *\n * @stacked-example(NgModel, timepicker/timepicker-ng-model.component)\n *\n * <input [nbTimepicker]=\"timepicker\" twelveHoursFormat>\n * <nb-timepicker #timepicke [ngModel]=\"date\"></nb-timepicker>\n *\n * You can provide localized versions of the timepicker text via the `localization` property of the config\n * object passed to the `forRoot` or `forChild` methods of the `NbTimepickerModule`:\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbTimepickerModule.forRoot({\n *       localization: {\n *         hoursText: 'Hr',\n *         minutesText: 'Min',\n *         secondsText: 'Sec',\n *         ampmText: 'Am/Pm',\n *       }\n *     }),\n *   ],\n * })\n * export class AppModule { }\n * ```\n *\n * @styles\n *\n * timepicker-cell-text-color:\n * timepicker-cell-hover-background-color:\n * timepicker-cell-hover-text-color:\n * timepicker-cell-focus-background-color:\n * timepicker-cell-focus-text-color:\n * timepicker-cell-active-background-color:\n * timepicker-cell-active-text-color:\n * timepicker-cell-text-font-size:\n * timepicker-cell-text-font-family:\n * timepicker-cell-text-line-height:\n * timepicker-cell-text-font-weight:\n * timepicker-cell-height:\n * timepicker-header-cell-text-color:\n * timepicker-header-cell-text-font-size:\n * timepicker-header-cell-text-font-family:\n * timepicker-header-cell-height:\n * timepicker-header-cell-text-line-height:\n * timepicker-header-cell-text-font-weight:\n * timepicker-border-color:\n * timepicker-border-style:\n * timepicker-border-width:\n * timepicker-scrollbar-color:\n * timepicker-scrollbar-background-color:\n * timepicker-scrollbar-width:\n * timepicker-single-column-width:\n * timepicker-multiple-column-width:\n * timepicker-title-height:\n * timepicker-title-padding:\n * timepicker-container-width:\n * timepicker-container-height:\n * */\n@Directive({\n    selector: 'input[nbTimepicker]',\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => NbTimePickerDirective),\n            multi: true,\n        },\n    ],\n    standalone: false\n})\nexport class NbTimePickerDirective<D> implements AfterViewInit, ControlValueAccessor {\n  /**\n   * Provides timepicker component.\n   * */\n  @Input('nbTimepicker')\n  get timepicker(): NbTimePickerComponent<D> {\n    return this._timePickerComponent;\n  }\n\n  set timepicker(timePicker: NbTimePickerComponent<D>) {\n    this._timePickerComponent = timePicker;\n\n    this.pickerInputsChangedSubscription?.unsubscribe();\n    this.pickerInputsChangedSubscription = this._timePickerComponent.timepickerFormatChange$\n      .pipe(\n        map(() => this._timePickerComponent.computedTimeFormat),\n        startWith(this._timePickerComponent.computedTimeFormat),\n        distinctUntilChanged(),\n        pairwise(),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(([prevFormat, nextFormat]) => {\n        if (this.inputValue) {\n          const date = this.dateService.parse(this.inputValue, prevFormat);\n          this.writeValue(date);\n        }\n      });\n  }\n  protected _timePickerComponent: NbTimePickerComponent<D>;\n  protected pickerInputsChangedSubscription: Subscription | undefined;\n\n  /**\n   * Time picker overlay offset.\n   * */\n  @Input() overlayOffset = 8;\n\n  /**\n   * String representation of latest selected date.\n   * Updated when value is updated programmatically (writeValue), via timepicker (subscribeOnApplyClick)\n   * or via input field (handleInputChange)\n   * @docs-private\n   */\n  protected lastInputValue: string;\n  /**\n   * Positioning strategy used by overlay.\n   * @docs-private\n   * */\n  protected positionStrategy: NbAdjustableConnectedPositionStrategy;\n  protected overlayRef: NbOverlayRef;\n  protected destroy$: Subject<void> = new Subject<void>();\n  protected onChange: (value: D) => void = () => {};\n  protected onTouched = () => {};\n  /**\n   * Trigger strategy used by overlay.\n   * @docs-private\n   * */\n  protected triggerStrategy: NbTriggerStrategy;\n\n  /**\n   * Returns html input element.\n   * @docs-private\n   * */\n  get input(): HTMLInputElement {\n    return this.hostRef.nativeElement;\n  }\n\n  /**\n   * Determines is timepicker overlay opened.\n   * @docs-private\n   * */\n  get isOpen(): boolean {\n    return this.overlayRef && this.overlayRef.hasAttached();\n  }\n\n  /**\n   * Determines is timepicker overlay closed.\n   * @docs-private\n   * */\n  get isClosed(): boolean {\n    return !this.isOpen;\n  }\n\n  constructor(\n    @Inject(NB_DOCUMENT) protected document,\n    protected positionBuilder: NbPositionBuilderService,\n    protected hostRef: ElementRef,\n    protected triggerStrategyBuilder: NbTriggerStrategyBuilderService,\n    protected overlay: NbOverlayService,\n    protected cd: ChangeDetectorRef,\n    protected calendarTimeModelService: NbCalendarTimeModelService<D>,\n    protected dateService: NbDateService<D>,\n    protected renderer: Renderer2,\n    @Attribute('placeholder') protected placeholder: string,\n  ) {}\n\n  /**\n   * Returns host input value.\n   * @docs-private\n   * */\n  get inputValue(): string {\n    return this.input.value;\n  }\n\n  set inputValue(value: string) {\n    this.input.value = value;\n  }\n\n  ngAfterViewInit() {\n    this.subscribeOnInputChange();\n\n    if (!this.placeholder) {\n      this.renderer.setProperty(this.input, 'placeholder', this.timepicker.computedTimeFormat);\n    }\n    this.triggerStrategy = this.createTriggerStrategy();\n    this.subscribeOnTriggers();\n    this.subscribeToBlur();\n  }\n\n  show() {\n    if (this.isClosed) {\n      this.attachToOverlay();\n    }\n  }\n\n  hide() {\n    if (this.isOpen) {\n      this.overlayRef.detach();\n      this.cd.markForCheck();\n    }\n  }\n\n  /**\n   * Attaches picker to the timepicker portal.\n   * @docs-private\n   * */\n  protected attachToOverlay() {\n    if (!this.overlayRef) {\n      this.setupTimepicker();\n      this.initOverlay();\n    }\n    this.overlayRef.attach(this.timepicker.portal);\n  }\n\n  setupTimepicker() {\n    if (this.dateService.getId() === 'native' && isDevMode()) {\n      console.warn(\n        'Date.parse does not support parsing time with custom format.' +\n          ' See details here https://akveo.github.io/nebular/docs/components/datepicker/overview#native-parse-issue',\n      );\n    }\n    this.timepicker.setHost(this.hostRef);\n    if (this.inputValue) {\n      const val = this.dateService.getId() === 'native' ? this.parseNativeDateString(this.inputValue) : this.inputValue;\n      this.timepicker.date = this.dateService.parse(val, this.timepicker.computedTimeFormat);\n    } else {\n      this.timepicker.date = this.calendarTimeModelService.getResetTime();\n    }\n  }\n\n  protected initOverlay() {\n    this.positionStrategy = this.createPositionStrategy();\n    this.subscribeOnApplyClick();\n    this.createOverlay();\n  }\n\n  protected subscribeOnApplyClick() {\n    this.timepicker.onSelectTime.pipe(takeUntil(this.destroy$)).subscribe((value: NbSelectedTimePayload<D>) => {\n      const time = this.dateService.format(value.time, this.timepicker.computedTimeFormat).toUpperCase();\n      this.inputValue = time;\n      this.timepicker.date = value.time;\n      this.onChange(value.time);\n      if (value.save) {\n        this.lastInputValue = time;\n        this.hide();\n      }\n    });\n  }\n\n  protected createOverlay() {\n    const scrollStrategy = this.createScrollStrategy();\n    this.overlayRef = this.overlay.create({ positionStrategy: this.positionStrategy, scrollStrategy });\n  }\n\n  protected subscribeOnTriggers() {\n    this.triggerStrategy.show$.pipe(filter(() => this.isClosed)).subscribe(() => this.show());\n\n    this.triggerStrategy.hide$.pipe(filter(() => this.isOpen)).subscribe(() => {\n      this.inputValue = this.lastInputValue || '';\n      this.hide();\n    });\n  }\n\n  protected createTriggerStrategy(): NbTriggerStrategy {\n    return this.triggerStrategyBuilder\n      .trigger(NbTrigger.FOCUS)\n      .host(this.hostRef.nativeElement)\n      .container(() => this.getContainer())\n      .build();\n  }\n\n  protected createPositionStrategy(): NbAdjustableConnectedPositionStrategy {\n    return this.positionBuilder\n      .connectedTo(this.hostRef)\n      .position(NbPosition.BOTTOM)\n      .offset(this.overlayOffset)\n      .adjustment(NbAdjustment.COUNTERCLOCKWISE);\n  }\n\n  protected getContainer() {\n    return (\n      this.overlayRef &&\n      this.isOpen &&\n      <ComponentRef<any>>{\n        location: {\n          nativeElement: this.overlayRef.overlayElement,\n        },\n      }\n    );\n  }\n\n  protected createScrollStrategy(): NbScrollStrategy {\n    return this.overlay.scrollStrategies.block();\n  }\n\n  protected subscribeOnInputChange() {\n    fromEvent(this.input, 'input')\n      .pipe(\n        map(() => this.inputValue),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((value: string) => this.handleInputChange(value));\n  }\n\n  protected subscribeToBlur() {\n    merge(\n      this.timepicker.blur,\n      fromEvent(this.input, 'blur').pipe(filter(() => !this.isOpen && this.document.activeElement !== this.input)),\n    )\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(() => this.onTouched());\n  }\n\n  /**\n   * Parses input value and write if it isn't null.\n   * @docs-private\n   * */\n  protected handleInputChange(value: string) {\n    if (this.dateService.getId() === 'native') {\n      /**\n       * Native date service dont parse only time string value,\n       * and we adding year mouth and day to convert string to valid date format\n       **/\n      value = this.parseNativeDateString(value);\n    }\n\n    const isValidDate: boolean = this.dateService.isValidDateString(value, this.timepicker.computedTimeFormat);\n    if (isValidDate) {\n      this.lastInputValue = value;\n\n      const date = this.dateService.parse(value, this.timepicker.computedTimeFormat);\n      this.onChange(date);\n      this.timepicker.date = date;\n    }\n  }\n\n  protected updateValue(value: D) {\n    if (value) {\n      this.timepicker.date = value;\n\n      const timeString = this.dateService.format(value, this.timepicker.computedTimeFormat).toUpperCase();\n      this.inputValue = timeString;\n      this.lastInputValue = timeString;\n    }\n  }\n\n  writeValue(value: D): void {\n    this.updateValue(value);\n  }\n\n  registerOnChange(fn: (value: any) => {}): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.input.disabled = isDisabled;\n  }\n\n  protected parseNativeDateString(value: string): string {\n    const date = this.dateService.today();\n    const year = this.dateService.getYear(date);\n    const month = this.calendarTimeModelService.paddToTwoSymbols(this.dateService.getMonth(date));\n    const day = this.calendarTimeModelService.paddToTwoSymbols(this.dateService.getDate(date));\n\n    return `${year}-${month}-${day} ${value}`;\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { NbOverlayModule } from '../cdk/overlay/overlay.module';\nimport { NbListModule } from '../list/list.module';\nimport { NbCardModule } from '../card/card.module';\nimport { NbCalendarKitModule } from '../calendar-kit/calendar-kit.module';\nimport { NbTimePickerDirective } from './timepicker.directive';\nimport { NbTimePickerComponent } from './timepicker.component';\nimport { NbTimePickerCellComponent } from './timepicker-cell.component';\nimport { NbCalendarTimeModelService } from '../calendar-kit/services/calendar-time-model.service';\nimport { NB_TIME_PICKER_CONFIG, NbTimePickerConfig } from './model';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    NbOverlayModule,\n    NbListModule,\n    NbCardModule,\n    NbCalendarKitModule,\n  ],\n  providers: [NbCalendarTimeModelService],\n  exports: [NbTimePickerComponent, NbTimePickerCellComponent, NbTimePickerDirective],\n  declarations: [NbTimePickerComponent, NbTimePickerCellComponent, NbTimePickerDirective],\n})\nexport class NbTimepickerModule {\n  static forRoot(config: NbTimePickerConfig = {}): ModuleWithProviders<NbTimepickerModule> {\n    return {\n      ngModule: NbTimepickerModule,\n      providers: [{provide: NB_TIME_PICKER_CONFIG, useValue: config}],\n    };\n  }\n\n  static forChild(config: NbTimePickerConfig = {}): ModuleWithProviders<NbTimepickerModule> {\n    return {\n      ngModule: NbTimepickerModule,\n      providers: [{provide: NB_TIME_PICKER_CONFIG, useValue: config}],\n    };\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Injectable, Type } from '@angular/core';\n\nimport { NbCalendarRange } from '../calendar/calendar-range.component';\nimport { NbDatepickerComponent, NbRangepickerComponent } from './datepicker.component';\nimport { NbDatepickerAdapter } from './datepicker.directive';\nimport { NbDateService } from '../calendar-kit/services/date.service';\nimport { NbDateTimePickerComponent } from './date-timepicker.component';\n\n@Injectable()\nexport class NbDateAdapterService<D> extends NbDatepickerAdapter<D> {\n  picker: Type<NbDatepickerComponent<D>> = NbDatepickerComponent;\n\n  constructor(protected dateService: NbDateService<D>) {\n    super();\n  }\n\n  parse(date: string, format): D {\n    return this.dateService.parse(date, format);\n  }\n\n  format(date: D, format: string): string {\n    return this.dateService.format(date, format);\n  }\n\n  isValid(date: string, format: string): boolean {\n    return this.dateService.isValidDateString(date, format);\n  }\n}\n\n@Injectable()\nexport class NbRangeAdapterService<D> extends NbDatepickerAdapter<NbCalendarRange<D>> {\n  picker: Type<NbRangepickerComponent<D>> = NbRangepickerComponent;\n\n  constructor(protected dateService: NbDateService<D>) {\n    super();\n  }\n\n  parse(range: string, format): NbCalendarRange<D> {\n    const [start, end] = range.split('-').map(subDate => subDate.trim());\n    return {\n      start: this.dateService.parse(start, format),\n      end: this.dateService.parse(end, format),\n    };\n  }\n\n  format(range: NbCalendarRange<D>, format: string): string {\n    if (!range) {\n      return '';\n    }\n\n    const start = this.dateService.format(range.start, format);\n    const isStartValid = this.dateService.isValidDateString(start, format);\n\n    if (!isStartValid) {\n      return '';\n    }\n\n    const end = this.dateService.format(range.end, format);\n    const isEndValid = this.dateService.isValidDateString(end, format);\n\n    if (isEndValid) {\n      return `${start} - ${end}`;\n    } else {\n      return start;\n    }\n  }\n\n  isValid(range: string, format: string): boolean {\n    const [start, end] = range.split('-').map(subDate => subDate.trim());\n    return this.dateService.isValidDateString(start, format) && this.dateService.isValidDateString(end, format);\n  }\n}\n\n@Injectable()\nexport class NbDateTimeAdapterService<D> extends NbDatepickerAdapter<D> {\n  picker: Type<NbDateTimePickerComponent<D>> = NbDateTimePickerComponent;\n\n  constructor(protected dateService: NbDateService<D>) {\n    super();\n  }\n\n  parse(date: string, format: string): D {\n    return this.dateService.parse(date, format);\n  }\n\n  format(date: any, format: string): string {\n    return this.dateService.format(date, format);\n  }\n\n  isValid(date: string, format: string): boolean {\n    return this.dateService.isValidDateString(date, format);\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule, DatePipe } from '@angular/common';\n\nimport { NB_DATE_ADAPTER, NbDatepickerDirective } from './datepicker.directive';\nimport { NbOverlayModule } from '../cdk/overlay/overlay.module';\nimport { NbCalendarModule } from '../calendar/calendar.module';\nimport { NbCalendarComponent } from '../calendar/calendar.component';\nimport { NbDatepickerContainerComponent } from './datepicker-container.component';\nimport {\n  NbDatepickerComponent,\n  NbRangepickerComponent,\n  NbBasePickerComponent,\n} from './datepicker.component';\nimport { NbCalendarRangeComponent } from '../calendar/calendar-range.component';\nimport { NbCalendarRangeModule } from '../calendar/calendar-range.module';\nimport { NbDateAdapterService, NbDateTimeAdapterService, NbRangeAdapterService } from './datepicker-adapter';\nimport { NbCalendarWithTimeComponent } from './calendar-with-time.component';\nimport { NbCardModule } from '../card/card.module';\nimport { NbBaseCalendarModule } from '../calendar/base-calendar.module';\nimport { NbTimepickerModule } from '../timepicker/timepicker.module';\nimport { NbCalendarKitModule } from '../calendar-kit/calendar-kit.module';\nimport { NbDateTimePickerComponent } from './date-timepicker.component';\n\n@NgModule({\n  imports: [\n    NbOverlayModule,\n    NbCalendarModule,\n    NbCalendarRangeModule,\n    NbCardModule,\n    NbBaseCalendarModule,\n    NbTimepickerModule,\n    NbCalendarKitModule,\n  ],\n  exports: [\n    NbDatepickerDirective,\n    NbDatepickerComponent,\n    NbRangepickerComponent,\n    NbDateTimePickerComponent,\n    NbCalendarWithTimeComponent,\n  ],\n  declarations: [\n    NbDatepickerDirective,\n    NbDatepickerContainerComponent,\n    NbCalendarWithTimeComponent,\n    NbDateTimePickerComponent,\n    NbDatepickerComponent,\n    NbRangepickerComponent,\n    NbBasePickerComponent,\n  ],\n})\nexport class NbDatepickerModule {\n  static forRoot(): ModuleWithProviders<NbDatepickerModule> {\n    return {\n      ngModule: NbDatepickerModule,\n      providers: [\n        DatePipe,\n        {\n          provide: NB_DATE_ADAPTER,\n          multi: true,\n          useClass: NbDateAdapterService,\n        },\n        {\n          provide: NB_DATE_ADAPTER,\n          multi: true,\n          useClass: NbRangeAdapterService,\n        },\n        {\n          provide: NB_DATE_ADAPTER,\n          multi: true,\n          useClass: NbDateTimeAdapterService,\n        },\n      ],\n    };\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  HostBinding,\n  Input,\n  Output,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n} from '@angular/core';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbComponentOrCustomStatus } from '../component-status';\n\n/**\n * The `NbRadioComponent` provides the same functionality as native `<input type=\"radio\">`\n * with Nebular styles and animations.\n *\n * @stacked-example(Showcase, radio/radio-showcase.component)\n *\n * ### Installation\n *\n * Import `NbRadioModule` to your feature module.\n *\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbRadioModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n *\n * ### Usage\n *\n * Radio buttons should be wrapped in `nb-radio-group` to provide form bindings.\n *\n * ```html\n * <nb-radio-group [(ngModel)]=\"selectedOption\">\n *   <nb-radio value=\"1\">Option 1</nb-radio>\n *   <nb-radio value=\"2\">Option 2</nb-radio>\n *   <nb-radio value=\"3\">Option 3</nb-radio>\n * </nb-radio-group>\n * ```\n *\n * You can disable some radios in the group using a `disabled` attribute.\n *\n * @stacked-example(Disabled, radio/radio-disabled.component)\n *\n *\n * @styles\n *\n * radio-width:\n * radio-height:\n * radio-border-style:\n * radio-border-width:\n * radio-text-font-family:\n * radio-text-font-size:\n * radio-text-font-weight:\n * radio-text-line-height:\n * radio-outline-color:\n * radio-outline-width:\n * radio-basic-text-color:\n * radio-basic-border-color:\n * radio-basic-background-color:\n * radio-basic-checked-background-color:\n * radio-basic-checked-border-color:\n * radio-basic-inner-circle-color:\n * radio-basic-focus-border-color:\n * radio-basic-focus-inner-circle-color:\n * radio-basic-hover-background-color:\n * radio-basic-hover-border-color:\n * radio-basic-hover-inner-circle-color:\n * radio-basic-hover-checked-background-color:\n * radio-basic-active-border-color:\n * radio-basic-active-inner-circle-color:\n * radio-basic-disabled-background-color:\n * radio-basic-disabled-border-color:\n * radio-basic-disabled-text-color:\n * radio-basic-disabled-checked-background-color:\n * radio-basic-disabled-checked-border-color:\n * radio-basic-disabled-checked-inner-circle-color:\n * radio-primary-text-color:\n * radio-primary-border-color:\n * radio-primary-background-color:\n * radio-primary-checked-background-color:\n * radio-primary-checked-border-color:\n * radio-primary-inner-circle-color:\n * radio-primary-focus-border-color:\n * radio-primary-focus-inner-circle-color:\n * radio-primary-hover-background-color:\n * radio-primary-hover-border-color:\n * radio-primary-hover-inner-circle-color:\n * radio-primary-hover-checked-background-color:\n * radio-primary-active-border-color:\n * radio-primary-active-inner-circle-color:\n * radio-primary-disabled-background-color:\n * radio-primary-disabled-border-color:\n * radio-primary-disabled-text-color:\n * radio-primary-disabled-checked-background-color:\n * radio-primary-disabled-checked-border-color:\n * radio-primary-disabled-checked-inner-circle-color:\n * radio-success-text-color:\n * radio-success-border-color:\n * radio-success-background-color:\n * radio-success-checked-background-color:\n * radio-success-checked-border-color:\n * radio-success-inner-circle-color:\n * radio-success-focus-border-color:\n * radio-success-focus-inner-circle-color:\n * radio-success-hover-background-color:\n * radio-success-hover-border-color:\n * radio-success-hover-inner-circle-color:\n * radio-success-hover-checked-background-color:\n * radio-success-active-border-color:\n * radio-success-active-inner-circle-color:\n * radio-success-disabled-background-color:\n * radio-success-disabled-border-color:\n * radio-success-disabled-text-color:\n * radio-success-disabled-checked-background-color:\n * radio-success-disabled-checked-border-color:\n * radio-success-disabled-checked-inner-circle-color:\n * radio-info-text-color:\n * radio-info-border-color:\n * radio-info-background-color:\n * radio-info-checked-background-color:\n * radio-info-checked-border-color:\n * radio-info-inner-circle-color:\n * radio-info-focus-border-color:\n * radio-info-focus-inner-circle-color:\n * radio-info-hover-background-color:\n * radio-info-hover-border-color:\n * radio-info-hover-inner-circle-color:\n * radio-info-hover-checked-background-color:\n * radio-info-active-border-color:\n * radio-info-active-inner-circle-color:\n * radio-info-disabled-background-color:\n * radio-info-disabled-border-color:\n * radio-info-disabled-text-color:\n * radio-info-disabled-checked-background-color:\n * radio-info-disabled-checked-border-color:\n * radio-info-disabled-checked-inner-circle-color:\n * radio-warning-text-color:\n * radio-warning-border-color:\n * radio-warning-background-color:\n * radio-warning-checked-background-color:\n * radio-warning-checked-border-color:\n * radio-warning-inner-circle-color:\n * radio-warning-focus-border-color:\n * radio-warning-focus-inner-circle-color:\n * radio-warning-hover-background-color:\n * radio-warning-hover-border-color:\n * radio-warning-hover-inner-circle-color:\n * radio-warning-hover-checked-background-color:\n * radio-warning-active-border-color:\n * radio-warning-active-inner-circle-color:\n * radio-warning-disabled-background-color:\n * radio-warning-disabled-border-color:\n * radio-warning-disabled-text-color:\n * radio-warning-disabled-checked-background-color:\n * radio-warning-disabled-checked-border-color:\n * radio-warning-disabled-checked-inner-circle-color:\n * radio-danger-text-color:\n * radio-danger-border-color:\n * radio-danger-background-color:\n * radio-danger-checked-background-color:\n * radio-danger-checked-border-color:\n * radio-danger-inner-circle-color:\n * radio-danger-focus-border-color:\n * radio-danger-focus-inner-circle-color:\n * radio-danger-hover-background-color:\n * radio-danger-hover-border-color:\n * radio-danger-hover-inner-circle-color:\n * radio-danger-hover-checked-background-color:\n * radio-danger-active-border-color:\n * radio-danger-active-inner-circle-color:\n * radio-danger-disabled-background-color:\n * radio-danger-disabled-border-color:\n * radio-danger-disabled-text-color:\n * radio-danger-disabled-checked-background-color:\n * radio-danger-disabled-checked-border-color:\n * radio-danger-disabled-checked-inner-circle-color:\n * radio-control-text-color:\n * radio-control-background-color:\n * radio-control-border-color:\n * radio-control-checked-background-color:\n * radio-control-checked-border-color:\n * radio-control-inner-circle-color:\n * radio-control-focus-border-color:\n * radio-control-focus-inner-circle-color:\n * radio-control-hover-background-color:\n * radio-control-hover-border-color:\n * radio-control-hover-inner-circle-color:\n * radio-control-hover-checked-background-color:\n * radio-control-active-border-color:\n * radio-control-active-inner-circle-color:\n * radio-control-disabled-background-color:\n * radio-control-disabled-border-color:\n * radio-control-disabled-text-color:\n * radio-control-disabled-checked-background-color:\n * radio-control-disabled-checked-border-color:\n * radio-control-disabled-checked-inner-circle-color:\n * */\n@Component({\n    selector: 'nb-radio',\n    template: `\n    <label>\n      <input\n        #input\n        type=\"radio\"\n        class=\"native-input visually-hidden\"\n        [name]=\"name\"\n        [value]=\"value\"\n        [checked]=\"checked\"\n        [disabled]=\"disabled\"\n        (change)=\"onChange($event)\"\n        (click)=\"onClick($event)\">\n      <span class=\"outer-circle\"></span>\n      <span class=\"inner-circle\"></span>\n      <span class=\"text\">\n        <ng-content></ng-content>\n      </span>\n    </label>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    styleUrls: ['./radio.component.scss'],\n    standalone: false\n})\nexport class NbRadioComponent {\n\n  @Input()\n  get name(): string {\n    return this._name;\n  }\n  set name(value: string) {\n    if (this._name !== value) {\n      this._name = value;\n    }\n  }\n  private _name: string;\n\n  @Input()\n  get checked(): boolean {\n    return this._checked;\n  }\n  set checked(value: boolean) {\n    const boolValue = convertToBoolProperty(value);\n    if (this._checked !== boolValue) {\n      this._checked = boolValue;\n    }\n  }\n  private _checked: boolean = false;\n  static ngAcceptInputType_checked: NbBooleanInput;\n\n  @Input()\n  get value(): any {\n    return this._value;\n  }\n  set value(value: any) {\n    if (this._value !== value) {\n      this._value = value;\n    }\n  }\n  private _value: any;\n\n  @Input()\n  get disabled(): boolean {\n    return this._disabled;\n  }\n  set disabled(disabled: boolean) {\n    const boolValue = convertToBoolProperty(disabled);\n    if (this._disabled !== boolValue) {\n      this._disabled = boolValue;\n    }\n  }\n  private _disabled: boolean = false;\n  static ngAcceptInputType_disabled: NbBooleanInput;\n\n  @Input() status: NbComponentOrCustomStatus = 'basic';\n\n  @Output() valueChange: EventEmitter<any> = new EventEmitter();\n\n  @Output() blur: EventEmitter<void> = new EventEmitter();\n\n  @ViewChild('input', { read: ElementRef }) input: ElementRef<HTMLInputElement>;\n\n  constructor(\n    protected cd: ChangeDetectorRef,\n    protected renderer: Renderer2,\n    protected statusService: NbStatusService,\n  ) {}\n\n  @HostBinding('class.status-primary')\n  get isPrimary(): boolean {\n    return this.status === 'primary';\n  }\n\n  @HostBinding('class.status-success')\n  get isSuccess(): boolean {\n    return this.status === 'success';\n  }\n\n  @HostBinding('class.status-warning')\n  get isWarning(): boolean {\n    return this.status === 'warning';\n  }\n\n  @HostBinding('class.status-danger')\n  get isDanger(): boolean {\n    return this.status === 'danger';\n  }\n\n  @HostBinding('class.status-info')\n  get isInfo(): boolean {\n    return this.status === 'info';\n  }\n\n  @HostBinding('class.status-basic')\n  get isBasic(): boolean {\n    return this.status === 'basic';\n  }\n\n  @HostBinding('class.status-control')\n  get isControl(): boolean {\n    return this.status === 'control';\n  }\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.status)) {\n      return [this.statusService.getStatusClass(this.status)];\n    }\n    return [];\n  }\n\n  onChange(event: Event) {\n    event.stopPropagation();\n    this.checked = true;\n    this.valueChange.emit(this.value);\n  }\n\n  onClick(event: Event) {\n    event.stopPropagation();\n  }\n\n  /*\n   * @docs-private\n   * We use this method when setting radio inputs from radio group component.\n   * Otherwise Angular won't detect changes in radio template as cached last rendered\n   * value didn't updated.\n   **/\n  _markForCheck() {\n    this.cd.markForCheck();\n  }\n\n  /*\n   * @docs-private\n   * Use this method when setting radio name from radio group component.\n   * In case option 'name' isn't set on nb-radio component we need to set name\n   * right away, so it won't overlap with options without names from other radio\n   * groups. Otherwise they all would have same name and will be considered as\n   * options from one group so only the last option will stay selected.\n   **/\n  _setName(name: string) {\n    this.name = name;\n\n    if (this.input) {\n      this.renderer.setProperty(this.input.nativeElement, 'name', name);\n    }\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  Component,\n  ContentChildren,\n  EventEmitter,\n  forwardRef,\n  Input,\n  OnDestroy,\n  Output,\n  QueryList,\n  PLATFORM_ID,\n  Inject,\n  ElementRef,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { from, fromEvent, merge, Subject } from 'rxjs';\nimport { filter, startWith, switchMap, takeUntil } from 'rxjs/operators';\n\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NB_DOCUMENT } from '../../theme.options';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { NbRadioComponent } from './radio.component';\n\n/**\n * The `NbRadioGroupComponent` is the wrapper for `nb-radio` button.\n * It provides form bindings:\n *\n * ```html\n * <nb-radio-group [(ngModel)]=\"selectedOption\">\n *   <nb-radio value=\"1\">Option 1</nb-radio>\n *   <nb-radio value=\"2\">Option 2</nb-radio>\n *   <nb-radio value=\"3\">Option 3</nb-radio>\n * </nb-radio-group>\n * ```\n *\n * Also, you can use `value` and `valueChange` for binding without forms.\n *\n * ```html\n * <nb-radio-group [(value)]=\"selectedOption\">\n *   <nb-radio value=\"1\">Option 1</nb-radio>\n *   <nb-radio value=\"2\">Option 2</nb-radio>\n *   <nb-radio value=\"3\">Option 3</nb-radio>\n * </nb-radio-group>\n * ```\n *\n * Radio items name has to be provided through `name` input property of the radio group.\n *\n * ```html\n * <nb-radio-group name=\"my-radio-group\">\n *   ...\n * </nb-radio-group>\n * ```\n *\n * You can change radio group status by setting `status` input.\n * @stacked-example(Statuses, radio/radio-statuses.component)\n *\n * Also, you can disable the whole group using `disabled` attribute.\n * @stacked-example(Disabled group, radio/radio-disabled-group.component)\n *\n * Radio group supports `ngModel` and reactive forms:\n * @stacked-example(Radio Group with forms, radio/radio-form.component)\n *\n * */\n@Component({\n    selector: 'nb-radio-group',\n    template: `\n    <ng-content select=\"nb-radio\"></ng-content>`,\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => NbRadioGroupComponent),\n            multi: true,\n        },\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbRadioGroupComponent implements AfterContentInit, OnDestroy, ControlValueAccessor {\n\n  protected destroy$ = new Subject<void>();\n  protected onChange = (value: any) => {};\n  protected onTouched = () => {};\n\n  @Input()\n  get value(): any {\n    return this._value;\n  }\n  set value(value: any) {\n    this._value = value;\n    this.updateValues();\n  }\n  protected _value: any;\n\n  @Input()\n  get name(): string {\n    return this._name;\n  }\n  set name(name: string) {\n    this._name = name;\n    this.updateNames();\n  }\n  protected _name: string;\n\n  @Input()\n  get disabled(): boolean {\n    return this._disabled;\n  }\n  set disabled(disabled: boolean) {\n    this._disabled = convertToBoolProperty(disabled);\n    this.updateDisabled();\n  }\n  protected _disabled: boolean;\n  static ngAcceptInputType_disabled: NbBooleanInput;\n\n  /**\n   * Radio buttons status.\n   * Possible values are `primary` (default), `success`, `warning`, `danger`, `info`.\n   */\n  @Input()\n  get status(): NbComponentOrCustomStatus {\n    return this._status;\n  }\n  set status(value: NbComponentOrCustomStatus) {\n    if (this._status !== value) {\n      this._status = value;\n      this.updateStatus();\n    }\n  }\n  protected _status: NbComponentOrCustomStatus = 'basic';\n\n  @ContentChildren(NbRadioComponent, { descendants: true }) radios: QueryList<NbRadioComponent>;\n\n  @Output() valueChange: EventEmitter<any> = new EventEmitter();\n\n  constructor(\n    protected hostElement: ElementRef<HTMLElement>,\n    @Inject(PLATFORM_ID) protected platformId,\n    @Inject(NB_DOCUMENT) protected document,\n  ) {}\n\n  ngAfterContentInit() {\n    // In case option 'name' isn't set on nb-radio component,\n    // we need to set it's name right away, so it won't overlap with options\n    // without names from other radio groups. Otherwise they all would have\n    // same name and will be considered as options from one group so only the\n    // last option will stay selected.\n    this.updateNames();\n\n    this.radios.changes\n      .pipe(\n        startWith(this.radios),\n        // 'changes' emit during change detection run and we can't update\n        // option properties right of since they already was initialized.\n        // Instead we schedule microtask to update radios after change detection\n        // run is finished and trigger one more change detection run.\n        switchMap((radios: QueryList<NbRadioComponent>) => from(Promise.resolve(radios))),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => this.updateAndSubscribeToRadios());\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  writeValue(value: any): void {\n    this.value = value;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  protected updateAndSubscribeToRadios() {\n    this.updateValueFromCheckedOption();\n    this.updateNames();\n    this.updateValues();\n    this.updateDisabled();\n    this.updateStatus();\n    this.subscribeOnRadiosValueChange();\n    this.subscribeOnRadiosBlur();\n  }\n\n  protected updateNames() {\n    if (this.radios) {\n      this.radios.forEach((radio: NbRadioComponent) => radio._setName(this.name));\n    }\n  }\n\n  protected updateValues() {\n    this.updateAndMarkForCheckRadios((radio: NbRadioComponent) => radio.checked = radio.value === this.value);\n  }\n\n  protected updateDisabled() {\n    if (typeof this.disabled !== 'undefined') {\n      this.updateAndMarkForCheckRadios((radio: NbRadioComponent) => radio.disabled = this.disabled);\n    }\n  }\n\n  protected subscribeOnRadiosValueChange() {\n    if (!this.radios || !this.radios.length) {\n      return;\n    }\n\n    merge(...this.radios.map((radio: NbRadioComponent) => radio.valueChange))\n      .pipe(\n        takeUntil(\n          merge(\n            this.radios.changes,\n            this.destroy$,\n          ),\n        ),\n      )\n      .subscribe((value: any) => {\n        this.writeValue(value);\n        this.propagateValue(value);\n      });\n  }\n\n  protected propagateValue(value: any) {\n    this.valueChange.emit(value);\n    this.onChange(value);\n  }\n\n  protected subscribeOnRadiosBlur() {\n    const hasNoRadios = !this.radios || !this.radios.length;\n    if (!isPlatformBrowser(this.platformId) || hasNoRadios) {\n      return;\n    }\n\n    const hostElement = this.hostElement.nativeElement;\n    fromEvent<Event>(hostElement, 'focusin')\n      .pipe(\n        filter(event => hostElement.contains(event.target as Node)),\n        switchMap(() => merge(\n          fromEvent<Event>(this.document, 'focusin'),\n          fromEvent<Event>(this.document, 'click'),\n        )),\n        filter(event => !hostElement.contains(event.target as Node)),\n        takeUntil(\n          merge(\n            this.radios.changes,\n            this.destroy$,\n          ),\n        ),\n      )\n      .subscribe(() => this.onTouched());\n  }\n\n  protected updateStatus() {\n    this.updateAndMarkForCheckRadios((radio: NbRadioComponent) => radio.status = this.status);\n  }\n\n  protected updateAndMarkForCheckRadios(updateFn: (NbRadioComponent) => void) {\n    if (this.radios) {\n      this.radios.forEach((radio) => {\n        updateFn(radio);\n        radio._markForCheck();\n      });\n    }\n  }\n\n  protected updateValueFromCheckedOption() {\n    const checkedRadio = this.radios.find((radio) => radio.checked);\n    const isValueMissing = this.value === undefined || this.value === null;\n    if (checkedRadio && isValueMissing && checkedRadio.value !== this.value) {\n      this.value = checkedRadio.value;\n    }\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NbRadioComponent } from './radio.component';\nimport { NbRadioGroupComponent } from './radio-group.component';\n\n\n@NgModule({\n  imports: [],\n  exports: [NbRadioComponent, NbRadioGroupComponent],\n  declarations: [NbRadioComponent, NbRadioGroupComponent],\n})\nexport class NbRadioModule {\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  NgZone,\n  OnDestroy,\n  Output,\n  Renderer2,\n} from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { NbHighlightableOption } from '../cdk/a11y/descendant-key-manager';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { NbComponentSize } from '../component-size';\n\nexport type NbTagAppearance = 'filled' | 'outline';\n\nexport interface NbTagSelectionChange {\n  tag: NbTagComponent;\n  selected: boolean;\n}\n\nlet tagUniqueId = 0;\n\n/**\n *\n * To show a cross on a tag and enable `remove` event add the `removable` attribute.\n * @stacked-example(Removable tags, tag/tag-removable.component)\n *\n * You can change appearance via `appearance` input:\n * @stacked-example(Tag Appearance, tag/tag-appearance.component)\n *\n * You can change status via `status` input:\n * @stacked-example(Tag Status, tag/tag-status.component)\n *\n * @styles\n *\n * tag-text-font-family:\n * tag-text-transform:\n * tag-border-width:\n * tag-border-style:\n * tag-border-radius:\n * tag-tiny-text-font-size:\n * tag-tiny-text-font-weight:\n * tag-tiny-text-line-height:\n * tag-tiny-padding:\n * tag-tiny-close-offset:\n * tag-small-text-font-size:\n * tag-small-text-font-weight:\n * tag-small-text-line-height:\n * tag-small-padding:\n * tag-small-close-offset:\n * tag-medium-text-font-size:\n * tag-medium-text-font-weight:\n * tag-medium-text-line-height:\n * tag-medium-padding:\n * tag-medium-close-offset:\n * tag-large-text-font-size:\n * tag-large-text-font-weight:\n * tag-large-text-line-height:\n * tag-large-padding:\n * tag-large-close-offset:\n * tag-giant-text-font-size:\n * tag-giant-text-font-weight:\n * tag-giant-text-line-height:\n * tag-giant-padding:\n * tag-giant-close-offset:\n * tag-filled-basic-background-color:\n * tag-filled-basic-border-color:\n * tag-filled-basic-text-color:\n * tag-filled-basic-active-background-color:\n * tag-filled-basic-active-border-color:\n * tag-filled-basic-hover-background-color:\n * tag-filled-basic-hover-border-color:\n * tag-filled-basic-selected-background-color:\n * tag-filled-basic-selected-border-color:\n * tag-filled-primary-background-color:\n * tag-filled-primary-border-color:\n * tag-filled-primary-text-color:\n * tag-filled-primary-active-background-color:\n * tag-filled-primary-active-border-color:\n * tag-filled-primary-hover-background-color:\n * tag-filled-primary-hover-border-color:\n * tag-filled-primary-selected-background-color:\n * tag-filled-primary-selected-border-color:\n * tag-filled-success-background-color:\n * tag-filled-success-border-color:\n * tag-filled-success-text-color:\n * tag-filled-success-active-background-color:\n * tag-filled-success-active-border-color:\n * tag-filled-success-hover-background-color:\n * tag-filled-success-hover-border-color:\n * tag-filled-success-selected-background-color:\n * tag-filled-success-selected-border-color:\n * tag-filled-info-background-color:\n * tag-filled-info-border-color:\n * tag-filled-info-text-color:\n * tag-filled-info-active-background-color:\n * tag-filled-info-active-border-color:\n * tag-filled-info-hover-background-color:\n * tag-filled-info-hover-border-color:\n * tag-filled-info-selected-background-color:\n * tag-filled-info-selected-border-color:\n * tag-filled-warning-background-color:\n * tag-filled-warning-border-color:\n * tag-filled-warning-text-color:\n * tag-filled-warning-active-background-color:\n * tag-filled-warning-active-border-color:\n * tag-filled-warning-hover-background-color:\n * tag-filled-warning-hover-border-color:\n * tag-filled-warning-selected-background-color:\n * tag-filled-warning-selected-border-color:\n * tag-filled-danger-background-color:\n * tag-filled-danger-border-color:\n * tag-filled-danger-text-color:\n * tag-filled-danger-active-background-color:\n * tag-filled-danger-active-border-color:\n * tag-filled-danger-hover-background-color:\n * tag-filled-danger-hover-border-color:\n * tag-filled-danger-selected-background-color:\n * tag-filled-danger-selected-border-color:\n * tag-filled-control-background-color:\n * tag-filled-control-border-color:\n * tag-filled-control-text-color:\n * tag-filled-control-active-background-color:\n * tag-filled-control-active-border-color:\n * tag-filled-control-hover-background-color:\n * tag-filled-control-hover-border-color:\n * tag-filled-control-selected-background-color:\n * tag-filled-control-selected-border-color:\n * tag-outline-basic-background-color:\n * tag-outline-basic-border-color:\n * tag-outline-basic-text-color:\n * tag-outline-basic-active-background-color:\n * tag-outline-basic-active-border-color:\n * tag-outline-basic-active-text-color:\n * tag-outline-basic-hover-background-color:\n * tag-outline-basic-hover-border-color:\n * tag-outline-basic-hover-text-color:\n * tag-outline-basic-selected-background-color:\n * tag-outline-basic-selected-border-color:\n * tag-outline-basic-selected-text-color:\n * tag-outline-primary-background-color:\n * tag-outline-primary-border-color:\n * tag-outline-primary-text-color:\n * tag-outline-primary-active-background-color:\n * tag-outline-primary-active-border-color:\n * tag-outline-primary-active-text-color:\n * tag-outline-primary-hover-background-color:\n * tag-outline-primary-hover-border-color:\n * tag-outline-primary-hover-text-color:\n * tag-outline-primary-selected-background-color:\n * tag-outline-primary-selected-border-color:\n * tag-outline-primary-selected-text-color:\n * tag-outline-success-background-color:\n * tag-outline-success-border-color:\n * tag-outline-success-text-color:\n * tag-outline-success-active-background-color:\n * tag-outline-success-active-border-color:\n * tag-outline-success-active-text-color:\n * tag-outline-success-hover-background-color:\n * tag-outline-success-hover-border-color:\n * tag-outline-success-hover-text-color:\n * tag-outline-success-selected-background-color:\n * tag-outline-success-selected-border-color:\n * tag-outline-success-selected-text-color:\n * tag-outline-info-background-color:\n * tag-outline-info-border-color:\n * tag-outline-info-text-color:\n * tag-outline-info-active-background-color:\n * tag-outline-info-active-border-color:\n * tag-outline-info-active-text-color:\n * tag-outline-info-hover-background-color:\n * tag-outline-info-hover-border-color:\n * tag-outline-info-hover-text-color:\n * tag-outline-info-selected-background-color:\n * tag-outline-info-selected-border-color:\n * tag-outline-info-selected-text-color:\n * tag-outline-warning-background-color:\n * tag-outline-warning-border-color:\n * tag-outline-warning-text-color:\n * tag-outline-warning-active-background-color:\n * tag-outline-warning-active-border-color:\n * tag-outline-warning-active-text-color:\n * tag-outline-warning-hover-background-color:\n * tag-outline-warning-hover-border-color:\n * tag-outline-warning-hover-text-color:\n * tag-outline-warning-selected-background-color:\n * tag-outline-warning-selected-border-color:\n * tag-outline-warning-selected-text-color:\n * tag-outline-danger-background-color:\n * tag-outline-danger-border-color:\n * tag-outline-danger-text-color:\n * tag-outline-danger-active-background-color:\n * tag-outline-danger-active-border-color:\n * tag-outline-danger-active-text-color:\n * tag-outline-danger-hover-background-color:\n * tag-outline-danger-hover-border-color:\n * tag-outline-danger-hover-text-color:\n * tag-outline-danger-selected-background-color:\n * tag-outline-danger-selected-border-color:\n * tag-outline-danger-selected-text-color:\n * tag-outline-control-background-color:\n * tag-outline-control-border-color:\n * tag-outline-control-text-color:\n * tag-outline-control-active-background-color:\n * tag-outline-control-active-border-color:\n * tag-outline-control-active-text-color:\n * tag-outline-control-hover-background-color:\n * tag-outline-control-hover-border-color:\n * tag-outline-control-hover-text-color:\n * tag-outline-control-selected-background-color:\n * tag-outline-control-selected-border-color:\n * tag-outline-control-selected-text-color:\n */\n@Component({\n    selector: 'nb-tag',\n    templateUrl: './tag.component.html',\n    exportAs: 'nbTag',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbTagComponent implements AfterViewInit, OnDestroy, NbHighlightableOption {\n\n  private _destroy$: Subject<NbTagComponent> = new Subject<NbTagComponent>();\n\n  get destroy$(): Observable<NbTagComponent> {\n    return this._destroy$.asObservable();\n  }\n\n  /**\n   * Tag text.\n   */\n  @Input() text: string;\n\n  @Input()\n  @HostBinding('class.selected')\n  @HostBinding('attr.aria-selected')\n  get selected(): boolean {\n    return this._selected;\n  }\n  set selected(value: boolean) {\n    if (this.selected !== convertToBoolProperty(value)) {\n      this._selected = !this.selected;\n      this.selectedChange.emit({ tag: this, selected: this.selected });\n    }\n  }\n  protected _selected: boolean = false;\n  static ngAcceptInputType_selected: NbBooleanInput;\n\n  /**\n   * Controls whether the user can remove a tag or not.\n   */\n  @Input()\n  get removable(): boolean {\n    return this._removable;\n  }\n  set removable(value: boolean) {\n    this._removable = convertToBoolProperty(value);\n  }\n  protected _removable: boolean = false;\n  static ngAcceptInputType_removable: NbBooleanInput;\n\n  /**\n   * Tag appearance: `filled`, `outline`.\n   */\n  @Input() appearance: NbTagAppearance = 'filled';\n\n  /**\n   * Tag status: `basic`, `primary`, `info`, `success`, `warning`, `danger`, `control`.\n   */\n  @Input() status: NbComponentOrCustomStatus = 'basic';\n\n  /**\n   * Tag size: `tiny`, `small`, `medium`, `large`, `giant`.\n   */\n  @Input() size: NbComponentSize = 'medium';\n\n  @Input()\n  @HostBinding('attr.role')\n  role: string = 'option';\n\n  /**\n   * Emits when the user removes the tag\n   * (whether by clicking on the remove button or by pressing `delete` or `backspace` key).\n   */\n  @Output() readonly remove: EventEmitter<NbTagComponent> = new EventEmitter<NbTagComponent>();\n\n  @Output() readonly selectedChange: EventEmitter<NbTagSelectionChange> = new EventEmitter<NbTagSelectionChange>();\n\n  @HostBinding('class.active')\n  _isActive: boolean = false;\n\n  @HostBinding('attr.id')\n  _id: string = `nb-tag-${tagUniqueId++}`;\n\n  @HostBinding('class.appearance-filled')\n  get filled(): boolean {\n    return this.appearance === 'filled';\n  }\n  set filled(value: boolean) {\n    if (convertToBoolProperty(value)) {\n      this.appearance = 'filled';\n    }\n  }\n\n  @HostBinding('class.appearance-outline')\n  get outline(): boolean {\n    return this.appearance === 'outline';\n  }\n  set outline(value: boolean) {\n    if (convertToBoolProperty(value)) {\n      this.appearance = 'outline';\n    }\n  }\n\n  @HostBinding('class.status-basic')\n  get basic() {\n    return this.status === 'basic';\n  }\n\n  @HostBinding('class.status-primary')\n  get primary() {\n    return this.status === 'primary';\n  }\n\n  @HostBinding('class.status-success')\n  get success() {\n    return this.status === 'success';\n  }\n\n  @HostBinding('class.status-info')\n  get info() {\n    return this.status === 'info';\n  }\n\n  @HostBinding('class.status-warning')\n  get warning() {\n    return this.status === 'warning';\n  }\n\n  @HostBinding('class.status-danger')\n  get danger() {\n    return this.status === 'danger';\n  }\n\n  @HostBinding('class.status-control')\n  get control() {\n    return this.status === 'control';\n  }\n\n  @HostBinding('class.size-tiny')\n  get tiny() {\n    return this.size === 'tiny';\n  }\n\n  @HostBinding('class.size-small')\n  get small() {\n    return this.size === 'small';\n  }\n\n  @HostBinding('class.size-medium')\n  get medium() {\n    return this.size === 'medium';\n  }\n\n  @HostBinding('class.size-large')\n  get large() {\n    return this.size === 'large';\n  }\n\n  @HostBinding('class.size-giant')\n  get giant() {\n    return this.size === 'giant';\n  }\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.status)) {\n      return [this.statusService.getStatusClass(this.status)];\n    }\n    return [];\n  }\n\n  @HostListener('keydown.delete')\n  @HostListener('keydown.backspace')\n  _remove(): void {\n    if (this.removable) {\n      this.remove.emit(this);\n    }\n  }\n\n  constructor(\n    public _hostElement: ElementRef,\n    protected cd: ChangeDetectorRef,\n    protected renderer: Renderer2,\n    protected zone: NgZone,\n    protected statusService: NbStatusService,\n  ) {}\n\n  ngAfterViewInit() {\n    // TODO: #2254\n    this.zone.runOutsideAngular(() => setTimeout(() => {\n      this.renderer.addClass(this._hostElement.nativeElement, 'nb-transition');\n    }));\n  }\n\n  ngOnDestroy() {\n    this._destroy$.next(this);\n  }\n\n  _toggleSelection(): void {\n    this.selected = !this.selected;\n    this.cd.markForCheck();\n  }\n\n  setActiveStyles(): void {\n    if (!this._isActive) {\n      this._isActive = true;\n      this.cd.markForCheck();\n    }\n  }\n\n  setInactiveStyles(): void {\n    if (this._isActive) {\n      this._isActive = false;\n      this.cd.markForCheck();\n    }\n  }\n}\n","{{ text }}\n<nb-icon *ngIf=\"removable\"\n         (click)=\"_remove()\"\n         class=\"nb-tag-remove size-{{size}}\"\n         icon=\"close-outline\"\n         pack=\"nebular-essentials\"\n         aria-hidden=\"true\">\n</nb-icon>\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  AfterViewInit,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  NgZone,\n  Output,\n  Renderer2,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { filter, map, takeUntil } from 'rxjs/operators';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { NbFocusMonitor } from '../cdk/a11y/a11y.module';\nimport { ENTER } from '../cdk/keycodes/keycodes';\nimport { NbFormFieldControl } from '../form-field/form-field-control';\nimport { NbInputDirective } from '../input/input.directive';\n\nexport interface NbTagInputAddEvent {\n  input: ElementRef<HTMLInputElement>;\n  value: string;\n}\n\n/**\n *\n * `[nbTagInput]` directive connects input with a `nb-tag-list` component.\n *\n * @stacked-example(Tag Input, tag/tag-input.component)\n *\n * @additional-example(Tag Input with Autocomplete, tag/tag-input-with-autocomplete.component)\n *\n * @styles\n *\n * tag-list-tiny-tag-offset:\n * tag-list-small-tag-offset:\n * tag-list-medium-tag-offset:\n * tag-list-large-tag-offset:\n * tag-list-giant-tag-offset:\n * tag-list-with-input-tiny-padding:\n * tag-list-with-input-small-padding:\n * tag-list-with-input-medium-padding:\n * tag-list-with-input-large-padding:\n * tag-list-with-input-giant-padding:\n */\n@Directive({\n    selector: 'input[nbTagInput]',\n    exportAs: 'nbTagInput',\n    providers: [\n        { provide: NbFormFieldControl, useExisting: NbTagInputDirective },\n    ],\n    standalone: false\n})\nexport class NbTagInputDirective extends NbInputDirective implements AfterViewInit {\n\n  protected readonly keyDown$: Subject<KeyboardEvent> = new Subject<KeyboardEvent>();\n\n  get _value(): string {\n    return this._hostElement.nativeElement.value;\n  }\n\n  /**\n   * Controls which keys should trigger tag add event.\n   */\n  @Input() separatorKeys: number[] = [ENTER];\n\n  /**\n   * Emits when a tag need to be added.\n   */\n  @Output() tagAdd: EventEmitter<NbTagInputAddEvent> = new EventEmitter<NbTagInputAddEvent>();\n\n  @HostBinding('class.nb-tag-input') readonly nbTagInputClass = true;\n\n  @HostListener('keydown', ['$event'])\n  _onKeydown(event: KeyboardEvent): void {\n    this.keyDown$.next(event);\n  }\n\n  constructor(\n    public _hostElement: ElementRef<HTMLInputElement>,\n    protected focusMonitor: NbFocusMonitor,\n    protected renderer: Renderer2,\n    protected zone: NgZone,\n    protected statusService: NbStatusService,\n  ) {\n    super(_hostElement, focusMonitor, renderer, zone, statusService);\n  }\n\n  ngAfterViewInit() {\n    super.ngAfterViewInit();\n\n    this.keyDown$\n      .pipe(\n        filter(({ keyCode }: KeyboardEvent) => this.isSeparatorKey(keyCode)),\n        map(() => this._value),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((value: string) => this.tagAdd.emit({ value, input: this._hostElement }));\n  }\n\n  protected isSeparatorKey(keyCode: number): boolean {\n    return this.separatorKeys.includes(keyCode);\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  AfterContentInit,\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  Output,\n  QueryList,\n  Renderer2,\n} from '@angular/core';\nimport { merge, Subject } from 'rxjs';\nimport { filter, finalize, map, startWith, switchMap, takeUntil } from 'rxjs/operators';\n\nimport { NbLayoutDirection, NbLayoutDirectionService } from '../../services/direction.service';\nimport { NbStatusService } from '../../services/status.service';\nimport { NbFocusMonitor } from '../cdk/a11y/a11y.module';\nimport {\n  NbActiveDescendantKeyManager,\n  NbActiveDescendantKeyManagerFactoryService,\n} from '../cdk/a11y/descendant-key-manager';\nimport { BACKSPACE, DELETE, SPACE } from '../cdk/keycodes/keycodes';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbComponentSize } from '../component-size';\nimport { NbAutocompleteDirective } from '../autocomplete/autocomplete.directive';\nimport { NbTagComponent } from './tag.component';\nimport { NbTagInputDirective } from './tag-input.directive';\n\n/**\n *\n * `nb-tag-list` component displays a list of `nb-tag` components.\n *\n * @stacked-example(Tag List Showcase, tag/tag-showcase.component)\n *\n * @styles\n *\n * tag-list-tiny-tag-offset:\n * tag-list-small-tag-offset:\n * tag-list-medium-tag-offset:\n * tag-list-large-tag-offset:\n * tag-list-giant-tag-offset:\n * tag-list-with-input-tiny-padding:\n * tag-list-with-input-small-padding:\n * tag-list-with-input-medium-padding:\n * tag-list-with-input-large-padding:\n * tag-list-with-input-giant-padding:\n * tag-list-with-input-rectangle-border-radius:\n * tag-list-with-input-semi-round-border-radius:\n * tag-list-with-input-round-border-radius:\n */\n@Component({\n    selector: 'nb-tag-list',\n    template: `\n    <div class=\"nb-tag-list-tags-wrapper\">\n      <ng-content select=\"nb-tag, input[nbTagInput]\"></ng-content>\n    </div>\n  `,\n    exportAs: 'nbTagList',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbTagListComponent implements OnInit, AfterContentInit, AfterViewInit, OnDestroy {\n  protected readonly destroy$: Subject<void> = new Subject<void>();\n  protected readonly keyDown$: Subject<KeyboardEvent> = new Subject<KeyboardEvent>();\n  protected readonly tagClick$: Subject<NbTagComponent> = new Subject<NbTagComponent>();\n  protected focused: boolean = false;\n  protected keyManager: NbActiveDescendantKeyManager<NbTagComponent>;\n\n  @ContentChildren(NbTagComponent) tags: QueryList<NbTagComponent>;\n  @ContentChild(NbTagInputDirective) tagInput: NbTagInputDirective;\n  @ContentChild(NbAutocompleteDirective) autocompleteDirective: NbAutocompleteDirective<any>;\n\n  /**\n   * Controls tags offset.\n   */\n  @Input()\n  size: NbComponentSize = 'medium';\n\n  @Input()\n  @HostBinding('attr.tabindex')\n  tabIndex: number = 0;\n\n  @Input()\n  @HostBinding('attr.role')\n  role: string = 'listbox';\n\n  @Input()\n  @HostBinding('attr.aria-multiselectable')\n  get multiple(): boolean {\n    return this._multiple;\n  }\n  set multiple(value: boolean) {\n    this._multiple = convertToBoolProperty(value);\n  }\n  protected _multiple: boolean = false;\n  static ngAcceptInputType_multiple: NbBooleanInput;\n\n  @HostBinding('attr.aria-activedescendant')\n  activeTagId: string | null = null;\n\n  /**\n   * Emits when tag need to be removed (whether because of click on the remove button\n   * or when `delete` or `backspace` key pressed).\n   */\n  @Output() readonly tagRemove: EventEmitter<NbTagComponent> = new EventEmitter<NbTagComponent>();\n\n  @HostBinding('class.nb-tag-list-with-input')\n  get _hasInput(): boolean {\n    return !!this.tagInput;\n  }\n\n  @HostBinding('class.focus')\n  get _isFocused(): boolean {\n    return this.focused;\n  }\n\n  @HostBinding('class.input-full-width')\n  get _isFullWidth(): boolean {\n    return !!this.tagInput?.fullWidth;\n  }\n\n  @HostBinding('class')\n  get _inputClasses(): string[] {\n    if (this._hasInput) {\n      return [\n        `shape-${this.tagInput.shape}`,\n        `size-${this.tagInput.fieldSize}`,\n        this.statusService.getStatusClass(this.tagInput.status),\n      ];\n    }\n\n    return [`size-${this.size}`];\n  }\n\n  @HostListener('keydown', ['$event'])\n  _onKeydown(event: KeyboardEvent): void {\n    this.keyDown$.next(event);\n  }\n\n  @HostListener('click', ['$event'])\n  _onClick({ target }: MouseEvent): void {\n    const clickedTag = this.tags.find((tag: NbTagComponent) => tag._hostElement.nativeElement === target);\n    if (clickedTag) {\n      this.tagClick$.next(clickedTag);\n    }\n  }\n\n  constructor(\n    protected hostElement: ElementRef<HTMLElement>,\n    protected cd: ChangeDetectorRef,\n    protected renderer: Renderer2,\n    protected zone: NgZone,\n    protected focusMonitor: NbFocusMonitor,\n    protected activeDescendantKeyManagerFactory: NbActiveDescendantKeyManagerFactoryService<NbTagComponent>,\n    protected directionService: NbLayoutDirectionService,\n    protected statusService: NbStatusService,\n  ) {}\n\n  ngOnInit() {\n    this.focusMonitor\n      .monitor(this.hostElement, true)\n      .pipe(\n        map((origin) => !!origin),\n        finalize(() => this.focusMonitor.stopMonitoring(this.hostElement)),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((isFocused: boolean) => this.onFocusChange(isFocused));\n  }\n\n  ngAfterContentInit() {\n    this.initKeyManager();\n    this.setAutocompleteCustomHost();\n  }\n\n  ngAfterViewInit() {\n    this.listenToLayoutDirectionChange();\n    this.listenListKeyDown();\n    this.listenInputKeyDown();\n    this.listenTagClick();\n    this.listenTagRemove();\n    this.listenTagDestroy();\n    this.listenActiveTagChange();\n    this.listenNoTags();\n\n    // TODO: #2254\n    this.zone.runOutsideAngular(() =>\n      setTimeout(() => {\n        this.renderer.addClass(this.hostElement.nativeElement, 'nb-transition');\n      }),\n    );\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n  }\n\n  protected initKeyManager(): void {\n    this.keyManager = this.activeDescendantKeyManagerFactory\n      .create(this.tags)\n      .withHorizontalOrientation(this.directionService.getDirection())\n      .withWrap();\n  }\n\n  protected listenToLayoutDirectionChange(): void {\n    this.directionService\n      .onDirectionChange()\n      .pipe(takeUntil(this.destroy$))\n      .subscribe((direction: NbLayoutDirection) => this.keyManager.withHorizontalOrientation(direction));\n  }\n\n  protected listenListKeyDown(): void {\n    const tagListKeyDown$ = this.keyDown$.pipe(\n      filter(({ target }: KeyboardEvent) => target === this.hostElement.nativeElement),\n    );\n    const activeTagKeyDown$ = tagListKeyDown$.pipe(filter(() => !!this.keyManager.activeItem));\n\n    tagListKeyDown$\n      .pipe(takeUntil(this.destroy$))\n      .subscribe((event: KeyboardEvent) => this.keyManager.onKeydown(event));\n\n    activeTagKeyDown$\n      .pipe(\n        filter(({ keyCode }: KeyboardEvent) => keyCode === SPACE),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((event: KeyboardEvent) => {\n        this.toggleTag(this.keyManager.activeItem);\n        // Prevents page scroll.\n        event.preventDefault();\n      });\n\n    activeTagKeyDown$\n      .pipe(\n        filter(({ keyCode }: KeyboardEvent) => this.isBackspaceOrDelete(keyCode)),\n        map(() => this.keyManager.activeItem),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((tagToRemove: NbTagComponent) => tagToRemove._remove());\n  }\n\n  protected listenInputKeyDown(): void {\n    const inputKeyDown$ = this.keyDown$.pipe(\n      filter(({ target }: KeyboardEvent) => target === this.tagInput?._hostElement.nativeElement),\n    );\n\n    inputKeyDown$\n      .pipe(\n        filter(({ keyCode }: KeyboardEvent) => {\n          return this.tagInput._value === '' && this.isBackspaceOrDelete(keyCode) && this.tags.length > 0;\n        }),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => {\n        this.hostElement.nativeElement.focus();\n        this.keyManager.setLastItemActive();\n        this.cd.markForCheck();\n      });\n  }\n\n  protected listenTagClick(): void {\n    this.tagClick$.pipe(takeUntil(this.destroy$)).subscribe((clickedTag: NbTagComponent) => {\n      this.toggleTag(clickedTag);\n      this.keyManager.setActiveItem(clickedTag);\n    });\n  }\n\n  protected listenTagRemove(): void {\n    this.tags.changes\n      .pipe(\n        startWith(this.tags),\n        switchMap((tags: QueryList<NbTagComponent>) => merge(...tags.map((tag: NbTagComponent) => tag.remove))),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((tagToRemove: NbTagComponent) => this.tagRemove.emit(tagToRemove));\n  }\n\n  protected listenTagDestroy(): void {\n    this.tags.changes\n      .pipe(\n        startWith(this.tags),\n        switchMap((tags: QueryList<NbTagComponent>) => merge(...tags.map((tag: NbTagComponent) => tag.destroy$))),\n        filter((destroyedTag: NbTagComponent) => destroyedTag === this.keyManager.activeItem),\n        map((destroyedTag: NbTagComponent) => destroyedTag === this.tags.last),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((isLastTagDestroyed: boolean) => {\n        if (isLastTagDestroyed) {\n          this.keyManager.setPreviousItemActive();\n        } else {\n          this.keyManager.setNextItemActive();\n        }\n      });\n  }\n\n  protected listenNoTags(): void {\n    this.tags.changes\n      .pipe(\n        startWith(this.tags),\n        filter((tags: QueryList<NbTagComponent>) => tags.length === 0),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => this.focusInputIfActive());\n  }\n\n  protected listenActiveTagChange(): void {\n    this.keyManager.change\n      .pipe(\n        map(() => this.keyManager.activeItem?._id),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((activeTagId: string | null) => {\n        this.activeTagId = activeTagId;\n        this.cd.markForCheck();\n      });\n  }\n\n  protected onFocusChange(isFocused: boolean): void {\n    this.focused = isFocused;\n    this.cd.markForCheck();\n\n    if (!isFocused || this.tagInput?.focused$.value) {\n      this.keyManager?.setActiveItem(-1);\n      return;\n    }\n\n    // Focus input when focusing tag list without tags. Otherwise select first tag.\n    if (this.tags.length === 0 && this._hasInput) {\n      this.focusInput();\n    } else {\n      this.keyManager.setFirstItemActive();\n    }\n  }\n\n  protected isBackspaceOrDelete(keyCode: number): boolean {\n    return keyCode === BACKSPACE || keyCode === DELETE;\n  }\n\n  protected setAutocompleteCustomHost(): void {\n    if (this.autocompleteDirective) {\n      this.autocompleteDirective.customOverlayHost = this.hostElement;\n    }\n  }\n\n  protected toggleTag(tagToToggle: NbTagComponent): void {\n    tagToToggle._toggleSelection();\n\n    if (tagToToggle.selected && !this.multiple) {\n      this.tags.forEach((tag: NbTagComponent) => {\n        if (tag !== tagToToggle) {\n          tag.selected = false;\n        }\n      });\n    }\n  }\n\n  protected focusInput(): void {\n    if (this._hasInput) {\n      this.tagInput._hostElement.nativeElement.focus();\n    }\n  }\n\n  protected focusInputIfActive(): void {\n    if (this._isFocused) {\n      this.focusInput();\n    }\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { NbIconModule } from '../icon/icon.module';\nimport { NbTagComponent } from './tag.component';\nimport { NbTagListComponent } from './tag-list.component';\nimport { NbTagInputDirective } from './tag-input.directive';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    NbIconModule,\n  ],\n  declarations: [\n    NbTagComponent,\n    NbTagListComponent,\n    NbTagInputDirective,\n  ],\n  exports: [\n    NbTagComponent,\n    NbTagListComponent,\n    NbTagInputDirective,\n  ],\n})\nexport class NbTagModule { }\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nexport const NB_DEFAULT_ROW_LEVEL: number = 0;\n\nexport type NbDataGetter<N, T> = (N) => T;\nexport type NbChildrenGetter<N, T> = (N) => (T[] | undefined);\nexport type NbExpandedGetter<N> = (N) => boolean;\n\nexport interface NbGetters<N, T> {\n  dataGetter?: NbDataGetter<N, T>;\n  childrenGetter?: NbChildrenGetter<N, T>;\n  expandedGetter?: NbExpandedGetter<N>;\n}\n\n/**\n * Implicit context of cells and rows\n */\nexport class NbTreeGridPresentationNode<T> {\n  constructor(\n    /**\n     * Data object associated with row\n     */\n    public readonly data: T,\n    public children: NbTreeGridPresentationNode<T>[] | undefined,\n    /**\n     * Row expand state\n     */\n    public expanded: boolean,\n    public readonly level: number,\n  ) {}\n\n  /**\n   * True if row has child rows\n   */\n  hasChildren(): boolean {\n    return !!this.children && !!this.children.length;\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\n\nimport { Injectable } from '@angular/core';\n\nimport { NbTreeGridPresentationNode } from './tree-grid.model';\n\n/**\n * Service used to filter tree grid data. Searched searchString in all object values.\n * If you need custom filter, you can extend this service and override filterPredicate or whole filter method.\n */\n@Injectable()\nexport class NbTreeGridFilterService<T> {\n  filter(query: string, data: NbTreeGridPresentationNode<T>[]): NbTreeGridPresentationNode<T>[] {\n    if (!query) {\n      return data;\n    }\n\n    return data.reduce((filtered: NbTreeGridPresentationNode<T>[], node: NbTreeGridPresentationNode<T>) => {\n      let filteredChildren: NbTreeGridPresentationNode<T>[];\n\n      if (node.children) {\n        filteredChildren = this.filter(query, node.children);\n        node.children = filteredChildren;\n      }\n\n      node.expanded = false;\n\n      if (filteredChildren && filteredChildren.length) {\n        node.expanded = true;\n        filtered.push(node);\n      } else if (this.filterPredicate(node.data, query)) {\n        filtered.push(node);\n      }\n\n      return filtered;\n    }, []);\n  }\n\n  protected filterPredicate(data: T, searchQuery: string): boolean {\n    const preparedQuery = searchQuery.trim().toLocaleLowerCase();\n    for (const val of Object.values(data)) {\n      const preparedVal = `${val}`.trim().toLocaleLowerCase();\n      if (preparedVal.includes(preparedQuery)) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  Component,\n  ContentChild,\n  Directive,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Inject,\n  Input,\n  Output,\n  TemplateRef,\n} from '@angular/core';\n\nimport { convertToBoolProperty, NbBooleanInput, NbNullableInput } from '../helpers';\nimport { NB_SORT_HEADER_COLUMN_DEF } from '../cdk/table/cell';\n\n/** Column definition associated with a `NbSortHeaderDirective`. */\ninterface NbSortHeaderColumnDef {\n  name: string;\n}\n\nexport interface NbSortRequest {\n  column: string;\n  direction: NbSortDirection;\n}\n\nexport interface NbSortable {\n  sort(sortRequest: NbSortRequest);\n}\n\nexport type NbSortDirectionValues = 'asc' | 'desc' | '';\nexport enum NbSortDirection {\n  ASCENDING = 'asc',\n  DESCENDING = 'desc',\n  NONE = '',\n}\nconst sortDirections: NbSortDirection[] = [\n  NbSortDirection.ASCENDING,\n  NbSortDirection.DESCENDING,\n  NbSortDirection.NONE,\n];\n\n/**\n * Directive triggers sort method of passed object when sort header changes direction\n */\n@Directive({\n    selector: '[nbSort]',\n    standalone: false\n})\nexport class NbSortDirective {\n  @Input('nbSort') sortable: NbSortable;\n  static ngAcceptInputType_sortable: NbSortable | NbNullableInput;\n\n  @Output() sort: EventEmitter<NbSortRequest> = new EventEmitter<NbSortRequest>();\n\n  emitSort(sortRequest: NbSortRequest) {\n    if (this.sortable && this.sortable.sort) {\n      this.sortable.sort(sortRequest);\n    }\n    this.sort.emit(sortRequest);\n  }\n}\n\nexport interface NbSortHeaderIconDirectiveContext {\n  $implicit: NbSortDirection;\n  isAscending: boolean;\n  isDescending: boolean;\n  isNone: boolean;\n}\n\n/**\n * Directive for headers sort icons. Mark you icon implementation with this structural directive and\n * it'll set template's implicit context with current direction. Context also has `isAscending`,\n * `isDescending` and `isNone` properties.\n */\n@Directive({\n    selector: '[nbSortHeaderIcon]',\n    standalone: false\n})\nexport class NbSortHeaderIconDirective {}\n\n@Component({\n    selector: 'nb-sort-icon',\n    template: `\n    <ng-container *ngIf=\"isDirectionSet()\">\n      <nb-icon *ngIf=\"isAscending()\" icon=\"chevron-down-outline\" pack=\"nebular-essentials\" aria-hidden=\"true\"></nb-icon>\n      <nb-icon *ngIf=\"isDescending()\" icon=\"chevron-up-outline\" pack=\"nebular-essentials\" aria-hidden=\"true\"></nb-icon>\n    </ng-container>\n  `,\n    standalone: false\n})\nexport class NbSortIconComponent {\n  @Input() direction: NbSortDirection = NbSortDirection.NONE;\n\n  isAscending(): boolean {\n    return this.direction === NbSortDirection.ASCENDING;\n  }\n\n  isDescending(): boolean {\n    return this.direction === NbSortDirection.DESCENDING;\n  }\n\n  isDirectionSet(): boolean {\n    return this.isAscending() || this.isDescending();\n  }\n}\n\n/**\n * Marks header as sort header so it emitting sort event when clicked.\n */\n@Component({\n    selector: '[nbSortHeader]',\n    template: `\n    <button\n      class=\"nb-tree-grid-header-change-sort-button\"\n      type=\"button\"\n      [attr.disabled]=\"getDisabledAttributeValue()\"\n      (click)=\"sortData()\">\n      <ng-content></ng-content>\n    </button>\n    <nb-sort-icon *ngIf=\"!sortIcon; else customIcon\" [direction]=\"direction\"></nb-sort-icon>\n    <ng-template #customIcon [ngTemplateOutlet]=\"sortIcon\" [ngTemplateOutletContext]=\"getIconContext()\"></ng-template>\n  `,\n    standalone: false\n})\nexport class NbSortHeaderComponent {\n\n  @ContentChild(NbSortHeaderIconDirective, { read: TemplateRef })\n  sortIcon: TemplateRef<NbSortHeaderIconDirectiveContext>;\n\n  /**\n   * Current sort direction. Possible values: `asc`, `desc`, ``(none)\n   * @type {NbSortDirection}\n   */\n  @Input('nbSortHeader') direction: NbSortDirection;\n  static ngAcceptInputType_direction: NbSortDirectionValues;\n\n  private disabledValue: boolean = false;\n\n  /**\n   * Disable sort header\n   */\n  @Input()\n  @HostBinding('class.disabled')\n  set disabled(value) {\n    this.disabledValue = convertToBoolProperty(value);\n  }\n  get disabled(): boolean {\n    return this.disabledValue;\n  }\n  static ngAcceptInputType_disabled: NbBooleanInput;\n\n  @HostListener('click')\n  sortIfEnabled() {\n    if (!this.disabled) {\n      this.sortData();\n    }\n  }\n\n  constructor(\n    private sort: NbSortDirective,\n    @Inject(NB_SORT_HEADER_COLUMN_DEF) private columnDef: NbSortHeaderColumnDef,\n  ) {}\n\n  isAscending(): boolean {\n    return this.direction === NbSortDirection.ASCENDING;\n  }\n\n  isDescending(): boolean {\n    return this.direction === NbSortDirection.DESCENDING;\n  }\n\n  sortData(): void {\n    const sortRequest = this.createSortRequest();\n    this.sort.emitSort(sortRequest);\n  }\n\n  getIconContext(): NbSortHeaderIconDirectiveContext {\n    return {\n      $implicit: this.direction,\n      isAscending: this.isAscending(),\n      isDescending: this.isDescending(),\n      isNone: !this.isAscending() && !this.isDescending(),\n    };\n  }\n\n  getDisabledAttributeValue(): '' | null {\n    return this.disabled ? '' : null;\n  }\n\n  private createSortRequest(): NbSortRequest {\n    this.direction = this.getNextDirection();\n    return { direction: this.direction, column: this.columnDef.name };\n  }\n\n  private getNextDirection(): NbSortDirection {\n    const sortDirectionCycle = sortDirections;\n    let nextDirectionIndex = sortDirectionCycle.indexOf(this.direction) + 1;\n    if (nextDirectionIndex >= sortDirectionCycle.length) {\n      nextDirectionIndex = 0;\n    }\n    return sortDirectionCycle[nextDirectionIndex];\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\n\nimport { Injectable } from '@angular/core';\nimport { NbSortDirection, NbSortRequest } from '../tree-grid-sort.component';\nimport { NbTreeGridPresentationNode } from './tree-grid.model';\n\n/**\n * Service used to sort tree grid data. Uses Array.prototype.sort method.\n * If you need custom sorting, you can extend this service and override comparator or whole sort method.\n */\n@Injectable()\nexport class NbTreeGridSortService<T> {\n\n  sort(request: NbSortRequest, data: NbTreeGridPresentationNode<T>[]): NbTreeGridPresentationNode<T>[] {\n    if (!request) {\n      return data;\n    }\n\n    const sorted = data.sort((na, nb) => this.comparator(request, na, nb));\n    for (const node of data) {\n      if (node.children) {\n        node.children = this.sort(request, node.children);\n      }\n    }\n    return sorted;\n  }\n\n  protected comparator(\n    request: NbSortRequest,\n    na: NbTreeGridPresentationNode<T>,\n    nb: NbTreeGridPresentationNode<T>,\n  ): number {\n    const key = request.column;\n    const dir = request.direction;\n    const a = na.data[key];\n    const b = nb.data[key];\n\n    let res = 0;\n\n    if (a > b) {\n      res = 1\n    }\n    if (a < b) {\n      res = -1\n    }\n\n    return dir === NbSortDirection.ASCENDING ? res : res * -1;\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\n\nimport { Injectable } from '@angular/core';\n\nimport { NbTreeGridPresentationNode } from './tree-grid.model';\n\nexport interface NbToggleOptions {\n  deep?: boolean;\n}\n\n@Injectable()\nexport class NbTreeGridService<T> {\n  expand(data: NbTreeGridPresentationNode<T>[], row: T, options: NbToggleOptions = {}) {\n    const node: NbTreeGridPresentationNode<T> = this.find(data, row);\n    node.expanded = true;\n\n    if (options.deep && node.hasChildren()) {\n      node.children.forEach((n: NbTreeGridPresentationNode<T>) => this.expand(data, n.data, options));\n    }\n  }\n\n  collapse(data: NbTreeGridPresentationNode<T>[], row: T, options: NbToggleOptions = {}) {\n    const node: NbTreeGridPresentationNode<T> = this.find(data, row);\n    node.expanded = false;\n\n    if (options.deep && node.hasChildren()) {\n      node.children.forEach((n: NbTreeGridPresentationNode<T>) => this.collapse(data, n.data, options));\n    }\n  }\n\n  toggle(data: NbTreeGridPresentationNode<T>[], row: T, options: NbToggleOptions = {}) {\n    const node: NbTreeGridPresentationNode<T> = this.find(data, row);\n    if (node.expanded) {\n      this.collapse(data, row, options);\n    } else {\n      this.expand(data, row, options);\n    }\n  }\n\n  private find(data: NbTreeGridPresentationNode<T>[], row: T): NbTreeGridPresentationNode<T> {\n    const toCheck: NbTreeGridPresentationNode<T>[] = [...data];\n\n    for (const node of toCheck) {\n      if (node.data === row) {\n        return node;\n      }\n\n      if (node.hasChildren()) {\n        toCheck.push(...node.children);\n      }\n    }\n\n    return undefined;\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Injectable } from '@angular/core';\n\nimport { NbGetters, NB_DEFAULT_ROW_LEVEL, NbTreeGridPresentationNode } from './tree-grid.model';\n\n@Injectable()\nexport class NbTreeGridDataService<T> {\n\n  private defaultGetters: NbGetters<any, T> = {\n    dataGetter: node => node.data,\n    childrenGetter: d => d.children || undefined,\n    expandedGetter: d => !!d.expanded,\n  };\n\n  toPresentationNodes<N>(\n    nodes: N[],\n    customGetters?: NbGetters<N, T>,\n    level: number = NB_DEFAULT_ROW_LEVEL,\n  ): NbTreeGridPresentationNode<T>[] {\n    const getters: NbGetters<N, T> = { ...this.defaultGetters, ...customGetters };\n\n    return this.mapNodes(nodes, getters, level);\n  }\n\n  private mapNodes<N>(nodes: N[], getters: NbGetters<N, T>, level: number): NbTreeGridPresentationNode<T>[] {\n    const { dataGetter, childrenGetter, expandedGetter } = getters;\n\n    return nodes.map(node => {\n      const childrenNodes = childrenGetter(node);\n      let children: NbTreeGridPresentationNode<T>[];\n      if (childrenNodes) {\n        children = this.toPresentationNodes(childrenNodes, getters, level + 1);\n      }\n\n      return new NbTreeGridPresentationNode(dataGetter(node), children, expandedGetter(node), level);\n    });\n  }\n\n  flattenExpanded(nodes: NbTreeGridPresentationNode<T>[]): NbTreeGridPresentationNode<T>[] {\n    return nodes.reduce((res: NbTreeGridPresentationNode<T>[], node: NbTreeGridPresentationNode<T>) => {\n      res.push(node);\n\n      if (node.expanded && node.hasChildren()) {\n        res.push(...this.flattenExpanded(node.children));\n      }\n\n      return res;\n    }, []);\n  }\n\n  copy(nodes: NbTreeGridPresentationNode<T>[]): NbTreeGridPresentationNode<T>[] {\n    return nodes.map((node: NbTreeGridPresentationNode<T>) => {\n      let children: NbTreeGridPresentationNode<T>[];\n      if (node.hasChildren()) {\n        children = this.copy(node.children);\n      }\n      return new NbTreeGridPresentationNode(node.data, children, node.expanded, node.level);\n    });\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { NbCollectionViewer } from '../../cdk/collections/collection-viewer';\nimport { NbDataSource } from '../../cdk/table/data-source';\nimport { NbSortable, NbSortRequest } from '../tree-grid-sort.component';\nimport { NbTreeGridDataService } from './tree-grid-data.service';\nimport { NbTreeGridFilterService } from './tree-grid-filter.service';\nimport { NbTreeGridSortService } from './tree-grid-sort.service';\nimport { NbGetters, NB_DEFAULT_ROW_LEVEL, NbTreeGridPresentationNode } from './tree-grid.model';\nimport { NbToggleOptions, NbTreeGridService } from './tree-grid.service';\n\nexport interface NbFilterable {\n  filter(filterRequest: string);\n}\n\nexport class NbTreeGridDataSource<T> extends NbDataSource<NbTreeGridPresentationNode<T>>\n                                     implements NbSortable, NbFilterable {\n  /** Stream that emits when a new data array is set on the data source. */\n  private data: BehaviorSubject<NbTreeGridPresentationNode<T>[]>;\n\n  /** Stream emitting render data to the table (depends on ordered data changes). */\n  private readonly renderData = new BehaviorSubject<NbTreeGridPresentationNode<T>[]>([]);\n\n  private readonly filterRequest = new BehaviorSubject<string>('');\n\n  private readonly sortRequest = new BehaviorSubject<NbSortRequest>(null);\n\n  constructor(private sortService: NbTreeGridSortService<T>,\n              private filterService: NbTreeGridFilterService<T>,\n              private treeGridService: NbTreeGridService<T>,\n              private treeGridDataService: NbTreeGridDataService<T>) {\n    super();\n  }\n\n  setData<N>(data: N[], customGetters?: NbGetters<N, T>) {\n    let presentationData: NbTreeGridPresentationNode<T>[] = [];\n    if (data) {\n      presentationData = this.treeGridDataService.toPresentationNodes(data, customGetters);\n    }\n\n    this.data = new BehaviorSubject(presentationData);\n    this.updateChangeSubscription();\n  }\n\n  connect(\n    collectionViewer: NbCollectionViewer,\n  ): Observable<NbTreeGridPresentationNode<T>[] | ReadonlyArray<NbTreeGridPresentationNode<T>>> {\n    return this.renderData;\n  }\n\n  disconnect(collectionViewer: NbCollectionViewer) {\n  }\n\n  expand(row: T) {\n    this.treeGridService.expand(this.data.value, row);\n    this.data.next(this.data.value);\n  }\n\n  collapse(row: T) {\n    this.treeGridService.collapse(this.data.value, row);\n    this.data.next(this.data.value);\n  }\n\n  toggle(row: T, options?: NbToggleOptions) {\n    this.treeGridService.toggle(this.data.value, row, options);\n    this.data.next(this.data.value);\n  }\n\n  toggleByIndex(dataIndex: number, options?: NbToggleOptions) {\n    const node: NbTreeGridPresentationNode<T> = this.renderData.value && this.renderData.value[dataIndex];\n    if (node) {\n      this.toggle(node.data, options);\n    }\n  }\n\n  getLevel(rowIndex: number): number {\n    const row = this.renderData.value[rowIndex];\n    return row ? row.level : NB_DEFAULT_ROW_LEVEL;\n  }\n\n  sort(sortRequest: NbSortRequest) {\n    this.sortRequest.next(sortRequest);\n  }\n\n  filter(searchQuery: string) {\n    this.filterRequest.next(searchQuery);\n  }\n\n  protected updateChangeSubscription() {\n    const dataStream = this.data;\n\n    const filteredData = combineLatest([dataStream, this.filterRequest])\n      .pipe(\n        map(([data]) => this.treeGridDataService.copy(data)),\n        map(data => this.filterData(data)),\n      );\n\n    const sortedData = combineLatest([filteredData, this.sortRequest])\n      .pipe(\n        map(([data]) => this.sortData(data)),\n      );\n\n    sortedData\n      .pipe(\n        map((data: NbTreeGridPresentationNode<T>[]) => this.treeGridDataService.flattenExpanded(data)),\n      )\n      .subscribe((data: NbTreeGridPresentationNode<T>[]) => this.renderData.next(data));\n  }\n\n  private filterData(data: NbTreeGridPresentationNode<T>[]): NbTreeGridPresentationNode<T>[] {\n    return this.filterService.filter(this.filterRequest.value, data);\n  }\n\n  private sortData(data: NbTreeGridPresentationNode<T>[]): NbTreeGridPresentationNode<T>[] {\n    return this.sortService.sort(this.sortRequest.value, data);\n  }\n}\n\n@Injectable()\nexport class NbTreeGridDataSourceBuilder<T> {\n  constructor(private filterService: NbTreeGridFilterService<T>,\n              private sortService: NbTreeGridSortService<T>,\n              private treeGridService: NbTreeGridService<T>,\n              private treeGridDataService: NbTreeGridDataService<T>) {\n  }\n\n  create<N>(data: N[], customGetters?: NbGetters<N, T>): NbTreeGridDataSource<T> {\n    const dataSource = new NbTreeGridDataSource<T>(\n      this.sortService,\n      this.filterService,\n      this.treeGridService,\n      this.treeGridDataService,\n    );\n\n    dataSource.setData(data, customGetters);\n    return dataSource;\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { InjectionToken } from '@angular/core';\n\nexport const NB_TREE_GRID = new InjectionToken('NB_TREE_GRID');\n","import { Injectable, IterableDiffer, IterableDiffers } from '@angular/core';\nimport { merge, Observable, Subject } from 'rxjs';\n\n\n@Injectable()\nexport class NbColumnsService {\n  private allColumns: string[];\n  private visibleColumns: string[];\n  private changesDiffer: IterableDiffer<any>;\n  private columnHide$: Subject<void> = new Subject<void>();\n  private columnShow$: Subject<void> = new Subject<void>();\n\n  constructor(private differs: IterableDiffers) {}\n\n  setColumns(columns: Iterable<string>): void {\n    if (!this.changesDiffer) {\n      this.changesDiffer = this.differs.find(columns || []).create();\n    }\n\n    if (this.changesDiffer.diff(columns)) {\n      this.allColumns = Array.from(columns);\n      this.visibleColumns = Array.from(columns);\n    }\n  }\n\n  getVisibleColumns(): string[] {\n    return this.visibleColumns;\n  }\n\n  hideColumn(column: string): void {\n    const toRemove = this.visibleColumns.indexOf(column);\n    if (toRemove > -1) {\n      this.visibleColumns.splice(toRemove, 1);\n      this.columnHide$.next();\n    }\n  }\n\n  showColumn(column: string): void {\n    if (this.visibleColumns.includes(column)) {\n      return;\n    }\n    this.visibleColumns.splice(this.findInsertIndex(column), 0, column);\n    this.columnShow$.next();\n  }\n\n  onColumnsChange(): Observable<void> {\n    return merge(this.columnShow$, this.columnHide$);\n  }\n\n  private findInsertIndex(column: string): number {\n    const initialIndex = this.allColumns.indexOf(column);\n\n    if (initialIndex === 0 || !this.visibleColumns.length) {\n      return 0;\n    }\n    if (initialIndex === this.allColumns.length - 1) {\n      return this.visibleColumns.length;\n    }\n\n    const leftSiblingIndex = initialIndex - 1;\n    for (let i = leftSiblingIndex; i >= 0; i--) {\n      const leftSibling = this.allColumns[i];\n      const index = this.visibleColumns.indexOf(leftSibling);\n      if (index !== -1) {\n        return index + 1;\n      }\n    }\n\n    const rightSiblingIndex = initialIndex + 1;\n    for (let i = rightSiblingIndex; i < this.allColumns.length; i++) {\n      const rightSibling = this.allColumns[i];\n      const index = this.visibleColumns.indexOf(rightSibling);\n      if (index !== -1) {\n        return index;\n      }\n    }\n\n    throw new Error(`Can't restore column position.`);\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  AfterViewInit,\n  Attribute,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  HostBinding,\n  Inject,\n  Input,\n  IterableDiffers,\n  OnDestroy,\n  QueryList,\n  EmbeddedViewRef,\n  ViewContainerRef,\n  Optional,\n  SkipSelf,\n} from '@angular/core';\nimport { CDK_TABLE } from '@angular/cdk/table';\nimport { fromEvent, merge, Subject } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\n\nimport { NB_DOCUMENT, NB_WINDOW } from '../../theme.options';\nimport { NbPlatform } from '../cdk/platform/platform-service';\nimport { NbDirectionality } from '../cdk/bidi/bidi-service';\nimport {\n  NB_TABLE_TEMPLATE,\n  NbTable,\n  NB_TABLE_PROVIDERS,\n  NB_COALESCED_STYLE_SCHEDULER,\n  NB_VIEW_REPEATER_STRATEGY,\n} from '../cdk/table/table.module';\nimport { NB_STICKY_POSITIONING_LISTENER, NbRowContext } from '../cdk/table/type-mappings';\nimport { NbViewportRulerAdapter } from '../cdk/adapter/viewport-ruler-adapter';\nimport { NbTreeGridDataSource, NbTreeGridDataSourceBuilder } from './data-source/tree-grid-data-source';\nimport { NB_DEFAULT_ROW_LEVEL, NbTreeGridPresentationNode } from './data-source/tree-grid.model';\nimport { NbToggleOptions } from './data-source/tree-grid.service';\nimport { NB_TREE_GRID } from './tree-grid-injection-tokens';\nimport { NbTreeGridRowComponent } from './tree-grid-row.component';\nimport { NbTreeGridCellDirective } from './tree-grid-cell.component';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\nimport { NbTreeGridColumnDefDirective } from './tree-grid-column-def.directive';\nimport {\n  NbTreeGridFooterRowDefDirective,\n  NbTreeGridHeaderRowDefDirective,\n  NbTreeGridRowDefDirective,\n} from './tree-grid-def.component';\nimport { NbColumnsService } from './tree-grid-columns.service';\n\n/**\n * Tree grid component that can be used to display nested rows of data.\n * Supports filtering and sorting.\n * @stacked-example(Showcase, tree-grid/tree-grid-showcase.component)\n *\n * ### Installation\n *\n * Import `NbTreeGridModule` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbTreeGridModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n *\n * ### Usage\n *\n * As the most basic usage you need to define [nbTreeGridRowDef](docs/components/treegrid/api#nbtreegridrowdefdirective)\n * where you should pass columns to display in rows and\n * [nbTreeGridColumnDef](docs/components/treegrid/api#nbtreegridcolumndefdirective) - component containing cell\n * definitions for each column passed to row definition.\n * @stacked-example(Basic, tree-grid/tree-grid-basic.component)\n *\n * `NbTreeGridComponent`'s source input and `NbTreeGridDataSourceBuilder.create` expecting data to be an array of\n * objects with `data`, `children` and `expanded` properties. If your data doesn't match this interface, you can pass\n * getter functions for each property as arguments to `NbTreeGridDataSourceBuilder.create` method.\n * @stacked-example(Custom node structure, tree-grid/tree-grid-custom-node-structure.component)\n *\n * To use sorting you can add `nbSort` directive to table and subscribe to `sort` method. When user click on header,\n * sort event will be emitted. Event object contain clicked column name and desired sort direction.\n * @stacked-example(Sortable, tree-grid/tree-grid-sortable.component)\n *\n * You can use `Data Source Builder` to create `NbTreeGridDataSource` which would have toggle, sort and\n * filter methods. Then you can call this methods to change sort or toggle rows programmatically. Also `nbSort` and\n * `nbFilterInput` directives both support `NbTreeGridDataSource`, so you can pass it directly as an input and\n * directives will trigger sort, toggle themselves.\n * @stacked-example(Data Source Builder, tree-grid/tree-grid-showcase.component)\n *\n * You can create responsive grid by setting `hideOn` and `showOn` inputs of\n * [nbTreeGridColumnDef](docs/components/tree-grid/api#nbtreegridcolumndefdirective) directive.\n * When viewport reaches specified width grid hides or shows columns.\n * @stacked-example(Responsive columns, tree-grid/tree-grid-responsive.component)\n *\n * To customize sort or row toggle icons you can use `nbSortHeaderIcon` and `nbTreeGridRowToggle` directives\n * respectively. `nbSortHeaderIcon` is a structural directive and it's implicit context set to current direction.\n * Also context has three properties: `isAscending`, `isDescending` and `isNone`.\n * @stacked-example(Custom icons, tree-grid/tree-grid-custom-icons.component)\n *\n * By default, row to toggle happens when user clicks anywhere in the row. Also double click expands row deeply.\n * To disable this you can set `[clickToToggle]=\"false\"` input of `nbTreeGridRow`.\n * @stacked-example(Disable click toggle, tree-grid/tree-grid-disable-click-toggle.component)\n *\n * @styles\n *\n * tree-grid-cell-border-width:\n * tree-grid-cell-border-style:\n * tree-grid-cell-border-color:\n * tree-grid-row-min-height:\n * tree-grid-cell-padding:\n * tree-grid-header-background-color:\n * tree-grid-header-text-color:\n * tree-grid-header-text-font-family:\n * tree-grid-header-text-font-size:\n * tree-grid-header-text-font-weight:\n * tree-grid-header-text-line-height:\n * tree-grid-footer-background-color:\n * tree-grid-footer-text-color:\n * tree-grid-footer-text-font-family:\n * tree-grid-footer-text-font-size:\n * tree-grid-footer-text-font-weight:\n * tree-grid-footer-text-line-height:\n * tree-grid-row-background-color:\n * tree-grid-row-even-background-color:\n * tree-grid-row-hover-background-color:\n * tree-grid-row-text-color:\n * tree-grid-row-text-font-family:\n * tree-grid-row-text-font-size:\n * tree-grid-row-text-font-weight:\n * tree-grid-row-text-line-height:\n * tree-grid-sort-header-button-background-color:\n * tree-grid-sort-header-button-border:\n * tree-grid-sort-header-button-padding:\n */\n@Component({\n    selector: 'table[nbTreeGrid]',\n    template: NB_TABLE_TEMPLATE,\n    styleUrls: ['./tree-grid.component.scss'],\n    providers: [\n        { provide: NB_TREE_GRID, useExisting: NbTreeGridComponent },\n        { provide: CDK_TABLE, useExisting: NbTreeGridComponent },\n        NbColumnsService,\n        ...NB_TABLE_PROVIDERS,\n    ],\n    standalone: false\n})\nexport class NbTreeGridComponent<T> extends NbTable<NbTreeGridPresentationNode<T>>\n                                    implements AfterViewInit, OnDestroy {\n\n  constructor(private dataSourceBuilder: NbTreeGridDataSourceBuilder<T>,\n              differs: IterableDiffers,\n              changeDetectorRef: ChangeDetectorRef,\n              elementRef: ElementRef,\n              @Attribute('role') role: string,\n              dir: NbDirectionality,\n              @Inject(NB_DOCUMENT) document,\n              platform: NbPlatform,\n              @Inject(NB_WINDOW) private window,\n              @Inject(NB_VIEW_REPEATER_STRATEGY) protected readonly _viewRepeater,\n              @Inject(NB_COALESCED_STYLE_SCHEDULER) protected readonly _coalescedStyleScheduler,\n              _viewportRuler: NbViewportRulerAdapter,\n              @Optional() @SkipSelf() @Inject(NB_STICKY_POSITIONING_LISTENER)\n              protected readonly _stickyPositioningListener,\n  ) {\n    super(differs, changeDetectorRef, elementRef, role, dir, document, platform, _viewRepeater,\n          _coalescedStyleScheduler, _viewportRuler, _stickyPositioningListener);\n    this.platform = platform;\n  }\n\n  private destroy$ = new Subject<void>();\n  private _source: NbTreeGridDataSource<T>;\n  private platform: NbPlatform;\n\n  /**\n   * The table's data\n   * @param data\n   * @type {<T>[] | NbTreeGridDataSource}\n   */\n  @Input('nbTreeGrid') set source(data: T[] | NbTreeGridDataSource<T>) {\n    if (!data) {\n      return;\n    }\n\n    if (data instanceof NbTreeGridDataSource) {\n      this._source = data;\n    } else {\n      this._source = this.dataSourceBuilder.create(data);\n    }\n    this.dataSource = this._source;\n  }\n\n  @Input() levelPadding: string = '';\n\n  /**\n   * Make all columns equal width. False by default.\n   */\n  @Input()\n  set equalColumnsWidth(value: boolean) {\n    this.equalColumnsWidthValue = convertToBoolProperty(value);\n  }\n  get equalColumnsWidth(): boolean {\n    return this.equalColumnsWidthValue;\n  }\n  private equalColumnsWidthValue: boolean = false;\n  static ngAcceptInputType_equalColumnsWidth: NbBooleanInput;\n\n  @HostBinding('class.nb-tree-grid') readonly treeClass = true;\n\n  ngAfterViewInit() {\n    this.checkDefsCount();\n    const rowsChange$ = merge(\n      this._contentRowDefs.changes,\n      this._contentHeaderRowDefs.changes,\n      this._contentFooterRowDefs.changes,\n    );\n    rowsChange$.pipe(takeUntil(this.destroy$))\n      .subscribe(() => this.checkDefsCount());\n\n    if (this.platform.isBrowser) {\n      this.updateVisibleColumns();\n\n      const windowResize$ = fromEvent(this.window, 'resize').pipe(debounceTime(50));\n      merge(rowsChange$, this._contentColumnDefs.changes, windowResize$)\n        .pipe(takeUntil(this.destroy$))\n        .subscribe(() => this.updateVisibleColumns());\n    }\n  }\n\n  ngOnDestroy() {\n    super.ngOnDestroy();\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  toggleRow(row: NbTreeGridRowComponent, options?: NbToggleOptions): void {\n    const context = this.getRowContext(row);\n    this._source.toggle(context.$implicit.data, options);\n  }\n\n  toggleCellRow(cell: NbTreeGridCellDirective): void {\n    const context = this.getCellContext(cell);\n    this._source.toggle(context.$implicit.data);\n  }\n\n  getColumnWidth(): string {\n    if (this.equalColumnsWidth) {\n      return `${100 / this.getColumnsCount()}%`;\n    }\n    return '';\n  }\n\n  getCellLevel(cell: NbTreeGridCellDirective, columnName: string): number {\n    if (this.isFirstColumn(columnName)) {\n      return this.getCellContext(cell).$implicit.level;\n    }\n    return NB_DEFAULT_ROW_LEVEL;\n  }\n\n  private getRowContext(row: NbTreeGridRowComponent): NbRowContext<NbTreeGridPresentationNode<T>> {\n    return this.getContextByRowEl(row.elementRef.nativeElement);\n  }\n\n  private getCellContext(cell: NbTreeGridCellDirective): NbRowContext<NbTreeGridPresentationNode<T>> {\n    return this.getContextByCellEl(cell.elementRef.nativeElement);\n  }\n\n  private getContextByCellEl(cellEl: HTMLElement): NbRowContext<NbTreeGridPresentationNode<T>> {\n    return this.getContextByRowEl(cellEl.parentElement);\n  }\n\n  private getContextByRowEl(rowEl: HTMLElement): NbRowContext<NbTreeGridPresentationNode<T>> {\n    const rowsContainer: ViewContainerRef = this._rowOutlet.viewContainer;\n\n    for (let i = 0; i < rowsContainer.length; i++) {\n      const rowViewRef = rowsContainer.get(i) as EmbeddedViewRef<NbRowContext<NbTreeGridPresentationNode<T>>>;\n\n      if (rowViewRef.rootNodes.includes(rowEl)) {\n        return rowViewRef.context;\n      }\n    }\n\n    return undefined;\n  }\n\n  private getColumns(): string[] {\n    let rowDef: NbTreeGridHeaderRowDefDirective | NbTreeGridRowDefDirective<any>;\n\n    if (this._contentHeaderRowDefs.length) {\n      rowDef = this._contentHeaderRowDefs.first as NbTreeGridHeaderRowDefDirective;\n    } else {\n      rowDef = this._contentRowDefs.first as NbTreeGridRowDefDirective<any>;\n    }\n\n    return Array.from(rowDef.getVisibleColumns() || []);\n  }\n\n  private getColumnsCount(): number {\n    return this.getColumns().length;\n  }\n\n  private isFirstColumn(columnName: string): boolean {\n    return this.getColumns()[0] === columnName;\n  }\n\n  private checkDefsCount(): void {\n    if (this._contentRowDefs.length > 1) {\n      throw new Error(`Found multiple row definitions`);\n    }\n    if (this._contentHeaderRowDefs.length > 1) {\n      throw new Error(`Found multiple header row definitions`);\n    }\n    if (this._contentFooterRowDefs.length > 1) {\n      throw new Error(`Found multiple footer row definitions`);\n    }\n  }\n\n  private updateVisibleColumns(): void {\n    const width = this.window.innerWidth;\n    const columnDefs = (this._contentColumnDefs as QueryList<NbTreeGridColumnDefDirective>);\n\n    const columnsToHide: string[] = columnDefs\n      .filter((col: NbTreeGridColumnDefDirective) => col.shouldHide(width))\n      .map(col => col.name);\n\n    const columnsToShow: string[] = columnDefs\n      .filter((col: NbTreeGridColumnDefDirective) => col.shouldShow(width))\n      .map(col => col.name);\n\n    if (!columnsToHide.length && !columnsToShow.length) {\n      return;\n    }\n\n    const rowDefs = [\n      this._contentHeaderRowDefs.first as NbTreeGridHeaderRowDefDirective,\n      this._contentRowDefs.first as NbTreeGridRowDefDirective<any>,\n      this._contentFooterRowDefs.first as NbTreeGridFooterRowDefDirective,\n    ].filter(d => !!d);\n\n    for (const rowDef of rowDefs) {\n      for (const column of columnsToHide) {\n        rowDef.hideColumn(column);\n      }\n\n      for (const column of columnsToShow) {\n        rowDef.showColumn(column);\n      }\n    }\n  }\n}\n","import { Directive, Input, IterableDiffers, OnChanges, SimpleChanges, TemplateRef } from '@angular/core';\nimport {\n  NbCdkCellDef,\n  NbCdkFooterCellDef,\n  NbCdkFooterRowDef,\n  NbCdkHeaderCellDef,\n  NbCdkHeaderRowDef,\n  NbCdkRowDef,\n} from '../cdk/table/type-mappings';\nimport { NbCellDefDirective, NbFooterCellDefDirective, NbHeaderCellDefDirective } from '../cdk/table/cell';\nimport { NbFooterRowDefDirective, NbHeaderRowDefDirective, NbRowDefDirective } from '../cdk/table/row';\nimport { NbColumnsService } from './tree-grid-columns.service';\n\nexport interface NbTreeGridResponsiveRowDef {\n  hideColumn(column: string);\n  showColumn(column: string);\n}\n\n/**\n * Data row definition for the tree-grid.\n * Captures the header row's template and columns to display.\n */\n@Directive({\n    selector: '[nbTreeGridRowDef]',\n    providers: [{ provide: NbCdkRowDef, useExisting: NbTreeGridRowDefDirective }],\n    standalone: false\n})\nexport class NbTreeGridRowDefDirective<T> extends NbRowDefDirective<T>\n                                          implements OnChanges, NbTreeGridResponsiveRowDef {\n\n  /**\n   * Columns to be displayed on this row\n   */\n  @Input('nbTreeGridRowDefColumns') columns: Iterable<string>;\n\n  constructor(\n    template: TemplateRef<any>,\n    differs: IterableDiffers,\n    private columnsService: NbColumnsService,\n  ) {\n    super(template, differs);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    super.ngOnChanges(changes);\n\n    if (changes['columns']) {\n      this.updateColumns(this.columns);\n    }\n  }\n\n  updateColumns(columns: Iterable<string>) {\n    this.columnsService.setColumns(columns);\n  }\n\n  getVisibleColumns(): Iterable<string> {\n    return this.columnsService.getVisibleColumns();\n  }\n\n  /** @docs-private */\n  hideColumn(column: string): void {\n    this.columnsService.hideColumn(column);\n  }\n\n  /** @docs-private */\n  showColumn(column: string): void {\n    this.columnsService.showColumn(column);\n  }\n}\n\n@Directive({\n    selector: '[nbTreeGridHeaderRowDef]',\n    providers: [{ provide: NbCdkHeaderRowDef, useExisting: NbTreeGridHeaderRowDefDirective }],\n    standalone: false\n})\nexport class NbTreeGridHeaderRowDefDirective extends NbHeaderRowDefDirective\n                                             implements OnChanges, NbTreeGridResponsiveRowDef {\n  /**\n   * Columns to be displayed on this row\n   */\n  @Input('nbTreeGridHeaderRowDef') columns: Iterable<string>;\n\n  constructor(\n    template: TemplateRef<any>,\n    differs: IterableDiffers,\n    private columnsService: NbColumnsService,\n  ) {\n    super(template, differs);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    super.ngOnChanges(changes);\n\n    if (changes['columns']) {\n      this.updateColumns(this.columns);\n    }\n  }\n\n  updateColumns(columns: Iterable<string>) {\n    this.columnsService.setColumns(columns);\n  }\n\n  getVisibleColumns(): Iterable<string> {\n    return this.columnsService.getVisibleColumns();\n  }\n\n  /** @docs-private */\n  hideColumn(column: string): void {\n    this.columnsService.hideColumn(column);\n  }\n\n  /** @docs-private */\n  showColumn(column: string): void {\n    this.columnsService.showColumn(column);\n  }\n}\n\n@Directive({\n    selector: '[nbTreeGridFooterRowDef]',\n    providers: [{ provide: NbCdkFooterRowDef, useExisting: NbTreeGridFooterRowDefDirective }],\n    standalone: false\n})\nexport class NbTreeGridFooterRowDefDirective extends NbFooterRowDefDirective\n                                             implements OnChanges, NbTreeGridResponsiveRowDef {\n  /**\n   * Columns to be displayed on this row\n   */\n  @Input('nbTreeGridFooterRowDef') columns: Iterable<string>;\n\n  constructor(\n    template: TemplateRef<any>,\n    differs: IterableDiffers,\n    private columnsService: NbColumnsService,\n  ) {\n    super(template, differs);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    super.ngOnChanges(changes);\n\n    if (changes['columns']) {\n      this.updateColumns(this.columns);\n    }\n  }\n\n  updateColumns(columns: Iterable<string>) {\n    this.columnsService.setColumns(columns);\n  }\n\n  getVisibleColumns(): Iterable<string> {\n    return this.columnsService.getVisibleColumns();\n  }\n\n  /** @docs-private */\n  hideColumn(column: string): void {\n    this.columnsService.hideColumn(column);\n  }\n\n  /** @docs-private */\n  showColumn(column: string): void {\n    this.columnsService.showColumn(column);\n  }\n}\n\n/**\n * Cell definition for a nb-table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\n@Directive({\n    selector: '[nbTreeGridCellDef]',\n    providers: [{ provide: NbCdkCellDef, useExisting: NbTreeGridCellDefDirective }],\n    standalone: false\n})\nexport class NbTreeGridCellDefDirective extends NbCellDefDirective {}\n\n/**\n * Header cell definition for the nb-table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\n@Directive({\n    selector: '[nbTreeGridHeaderCellDef]',\n    providers: [{ provide: NbCdkHeaderCellDef, useExisting: NbTreeGridHeaderCellDefDirective }],\n    standalone: false\n})\nexport class NbTreeGridHeaderCellDefDirective extends NbHeaderCellDefDirective {}\n\n/**\n * Footer cell definition for the nb-table.\n * Captures the template of a column's footer cell and as well as cell-specific properties.\n */\n@Directive({\n    selector: '[nbTreeGridFooterCellDef]',\n    providers: [{ provide: NbCdkFooterCellDef, useExisting: NbTreeGridFooterCellDefDirective }],\n    standalone: false\n})\nexport class NbTreeGridFooterCellDefDirective extends NbFooterCellDefDirective {}\n","import { Component, ElementRef, HostListener, Inject, Input, OnDestroy } from '@angular/core';\nimport { Subject, timer } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\nimport { NbCdkFooterRow, NbCdkHeaderRow, NbCdkRow } from '../cdk/table/type-mappings';\nimport { NbFooterRowComponent, NbHeaderRowComponent, NbRowComponent } from '../cdk/table/row';\nimport { NbTreeGridComponent } from './tree-grid.component';\nimport { NB_TREE_GRID } from './tree-grid-injection-tokens';\n\nexport const NB_ROW_DOUBLE_CLICK_DELAY: number = 200;\n\n/**\n * Cells container. Adds the right class and role.\n */\n@Component({\n    // eslint-disable-next-line @angular-eslint/component-selector\n    selector: 'tr[nbTreeGridRow]',\n    template: `<ng-container nbCellOutlet></ng-container>`,\n    // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n    host: {\n        class: 'nb-tree-grid-row',\n        role: 'row',\n    },\n    providers: [{ provide: NbCdkRow, useExisting: NbTreeGridRowComponent }],\n    standalone: false\n})\nexport class NbTreeGridRowComponent extends NbRowComponent implements OnDestroy {\n  private readonly doubleClick$ = new Subject<void>();\n  private readonly tree: NbTreeGridComponent<any>;\n\n  /**\n   * Time to wait for second click to expand row deeply.\n   * 200ms by default.\n   */\n  @Input() doubleClickDelay: number = NB_ROW_DOUBLE_CLICK_DELAY;\n\n  /**\n   * Toggle row on click. Enabled by default.\n   */\n  @Input() clickToToggle: boolean = true;\n\n  @HostListener('click')\n  toggleIfEnabledNode(): void {\n    if (!this.clickToToggle) {\n      return;\n    }\n\n    timer(NB_ROW_DOUBLE_CLICK_DELAY)\n      .pipe(take(1), takeUntil(this.doubleClick$))\n      .subscribe(() => this.tree.toggleRow(this));\n  }\n\n  @HostListener('dblclick')\n  toggleIfEnabledNodeDeep() {\n    if (!this.clickToToggle) {\n      return;\n    }\n\n    this.doubleClick$.next();\n    this.tree.toggleRow(this, { deep: true });\n  }\n\n  constructor(@Inject(NB_TREE_GRID) tree, public elementRef: ElementRef<HTMLElement>) {\n    super();\n    this.tree = tree as NbTreeGridComponent<any>;\n  }\n\n  ngOnDestroy() {\n    this.doubleClick$.complete();\n  }\n}\n\n@Component({\n    // eslint-disable-next-line @angular-eslint/component-selector\n    selector: 'tr[nbTreeGridHeaderRow]',\n    template: ` <ng-container nbCellOutlet></ng-container>`,\n    // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n    host: {\n        class: 'nb-tree-grid-header-row',\n        role: 'row',\n    },\n    providers: [{ provide: NbCdkHeaderRow, useExisting: NbTreeGridHeaderRowComponent }],\n    standalone: false\n})\nexport class NbTreeGridHeaderRowComponent extends NbHeaderRowComponent {}\n\n@Component({\n    // eslint-disable-next-line @angular-eslint/component-selector\n    selector: 'tr[nbTreeGridFooterRow]',\n    template: ` <ng-container nbCellOutlet></ng-container>`,\n    // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n    host: {\n        class: 'nb-tree-grid-footer-row',\n        role: 'row',\n    },\n    providers: [{ provide: NbCdkFooterRow, useExisting: NbTreeGridFooterRowComponent }],\n    standalone: false\n})\nexport class NbTreeGridFooterRowComponent extends NbFooterRowComponent {}\n","import { Directive, Input, OnChanges } from '@angular/core';\nimport { NbCdkColumnDef } from '../cdk/table/type-mappings';\nimport { NB_SORT_HEADER_COLUMN_DEF, NbColumnDefDirective } from '../cdk/table/cell';\n\n/**\n * Column definition for the tree-grid.\n * Defines a set of cells available for a table column.\n */\n@Directive({\n    selector: '[nbTreeGridColumnDef]',\n    providers: [\n        { provide: NbCdkColumnDef, useExisting: NbTreeGridColumnDefDirective },\n        { provide: NB_SORT_HEADER_COLUMN_DEF, useExisting: NbTreeGridColumnDefDirective },\n    ],\n    standalone: false\n})\nexport class NbTreeGridColumnDefDirective extends NbColumnDefDirective implements OnChanges {\n  /**\n   * Column name\n   */\n  @Input('nbTreeGridColumnDef')\n  get name(): string {\n    return this._name;\n  }\n  set name(value: string) {\n    this._setNameInput(value);\n  }\n\n  private hideOnValue: number | null = null;\n  /**\n   * Amount of pixels of viewport at which column should be hidden.\n   * type number\n   */\n  @Input()\n  get hideOn(): number | null {\n    return this.hideOnValue;\n  }\n  set hideOn(value: number | null) {\n    this.hideOnValue = !value && value !== 0\n      ? null\n      : parseInt(value as unknown as string, 10);\n  }\n\n  private showOnValue: number | null = null;\n  /**\n   * Amount of pixels of viewport at which column should be shown.\n   * type number\n   */\n  @Input()\n  get showOn(): number | null {\n    return this.showOnValue;\n  }\n  set showOn(value: number | null) {\n    this.showOnValue = !value && value !== 0\n      ? null\n      : parseInt(value as unknown as string, 10);\n  }\n\n  ngOnChanges() {\n    if (this.hideOn != null && this.showOn != null) {\n      throw new Error(`hideOn and showOn are mutually exclusive and can't be used simultaneously.`);\n    }\n  }\n\n  shouldHide(width: number): boolean {\n    return !this.shouldShow(width);\n  }\n\n  shouldShow(width: number): boolean {\n    if (this.hideOn == null && this.showOn == null) {\n      return true;\n    }\n\n    if (this.hideOn != null) {\n      return width > this.hideOn;\n    }\n\n    return width >= this.showOn;\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  ChangeDetectorRef,\n  Directive,\n  ElementRef,\n  HostBinding,\n  Inject,\n  OnInit,\n  OnDestroy,\n  PLATFORM_ID,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nimport { NbLayoutDirectionService } from '../../services/direction.service';\nimport { NB_WINDOW } from '../../theme.options';\nimport { NbCellDirective, NbFooterCellDirective, NbHeaderCellDirective } from '../cdk/table/cell';\nimport { NbCdkCell, NbCdkFooterCell, NbCdkHeaderCell } from '../cdk/table/type-mappings';\nimport { NB_TREE_GRID } from './tree-grid-injection-tokens';\nimport { NbTreeGridComponent } from './tree-grid.component';\nimport { NbTreeGridColumnDefDirective } from './tree-grid-column-def.directive';\nimport { NB_DEFAULT_ROW_LEVEL } from './data-source/tree-grid.model';\nimport { NbColumnsService } from './tree-grid-columns.service';\n\n@Directive({\n    selector: 'td[nbTreeGridCell]',\n    host: {\n        'class': 'nb-tree-grid-cell',\n        'role': 'gridcell',\n    },\n    providers: [{ provide: NbCdkCell, useExisting: NbTreeGridCellDirective }],\n    standalone: false\n})\nexport class NbTreeGridCellDirective extends NbCellDirective implements OnInit, OnDestroy {\n  private destroy$ = new Subject<void>();\n  private readonly tree: NbTreeGridComponent<any>;\n  private readonly columnDef: NbTreeGridColumnDefDirective;\n  private initialLeftPadding: string = '';\n  private initialRightPadding: string = '';\n  private latestWidth: string;\n  elementRef: ElementRef<HTMLElement>;\n\n  @HostBinding('style.width')\n  get columnWidth(): string {\n    this.latestWidth = this.tree.getColumnWidth();\n    if (this.latestWidth) {\n      return this.latestWidth;\n    }\n\n    return null;\n  }\n\n  @HostBinding('style.padding-left')\n  get leftPadding(): string | SafeStyle | null {\n    if (this.directionService.isLtr()) {\n      return this.getStartPadding();\n    }\n    return null;\n  }\n\n  @HostBinding('style.padding-right')\n  get rightPadding(): string | SafeStyle | null {\n    if (this.directionService.isRtl()) {\n      return this.getStartPadding();\n    }\n    return null;\n  }\n\n  constructor(\n    columnDef: NbTreeGridColumnDefDirective,\n    elementRef: ElementRef<HTMLElement>,\n    @Inject(NB_TREE_GRID) tree,\n    @Inject(PLATFORM_ID) private platformId,\n    @Inject(NB_WINDOW) private window,\n    private sanitizer: DomSanitizer,\n    private directionService: NbLayoutDirectionService,\n    private columnService: NbColumnsService,\n    private cd: ChangeDetectorRef,\n  ) {\n    super(columnDef, elementRef);\n    this.tree = tree as NbTreeGridComponent<any>;\n    this.columnDef = columnDef;\n    this.elementRef = elementRef;\n  }\n\n  ngOnInit() {\n    if (isPlatformBrowser(this.platformId)) {\n      const style = this.window.getComputedStyle(this.elementRef.nativeElement);\n      this.initialLeftPadding = style.paddingLeft;\n      this.initialRightPadding = style.paddingRight;\n    }\n\n    this.columnService.onColumnsChange()\n      .pipe(\n        filter(() => this.latestWidth !== this.tree.getColumnWidth()),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => this.cd.detectChanges());\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  toggleRow(): void {\n    this.tree.toggleCellRow(this);\n  }\n\n  private get initialStartPadding(): string {\n      return this.directionService.isLtr()\n      ? this.initialLeftPadding\n      : this.initialRightPadding;\n  }\n\n  private getStartPadding(): string | SafeStyle | null {\n    const rowLevel = this.tree.getCellLevel(this, this.columnDef.name);\n    if (rowLevel === NB_DEFAULT_ROW_LEVEL) {\n      return null;\n    }\n\n    const nestingLevel = rowLevel + 1;\n    let padding: string = '';\n    if (this.tree.levelPadding) {\n      padding = `calc(${this.tree.levelPadding} * ${nestingLevel})`;\n    } else if (this.initialStartPadding) {\n      padding = `calc(${this.initialStartPadding} * ${nestingLevel})`;\n    }\n\n    if (!padding) {\n      return null;\n    }\n\n    return this.sanitizer.bypassSecurityTrustStyle(padding);\n  }\n}\n\n@Directive({\n    selector: 'th[nbTreeGridHeaderCell]',\n    host: {\n        'class': 'nb-tree-grid-header-cell',\n        'role': 'columnheader',\n    },\n    providers: [{ provide: NbCdkHeaderCell, useExisting: NbTreeGridHeaderCellDirective }],\n    standalone: false\n})\nexport class NbTreeGridHeaderCellDirective extends NbHeaderCellDirective implements OnInit, OnDestroy {\n  private destroy$ = new Subject<void>();\n  private latestWidth: string;\n  private readonly tree: NbTreeGridComponent<any>;\n\n  @HostBinding('style.width')\n  get columnWidth(): string {\n    this.latestWidth = this.tree.getColumnWidth();\n    return this.latestWidth || null;\n  }\n\n  constructor(\n    columnDef: NbTreeGridColumnDefDirective,\n    elementRef: ElementRef<HTMLElement>,\n    @Inject(NB_TREE_GRID) tree,\n    private columnService: NbColumnsService,\n    private cd: ChangeDetectorRef,\n  ) {\n    super(columnDef, elementRef);\n    this.tree = tree as NbTreeGridComponent<any>;\n  }\n\n  ngOnInit() {\n    this.columnService.onColumnsChange()\n      .pipe(\n        filter(() => this.latestWidth !== this.tree.getColumnWidth()),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => this.cd.detectChanges());\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n}\n\n@Directive({\n    selector: 'td[nbTreeGridFooterCell]',\n    host: {\n        'class': 'nb-tree-grid-footer-cell',\n        'role': 'gridcell',\n    },\n    providers: [{ provide: NbCdkFooterCell, useExisting: NbTreeGridFooterCellDirective }],\n    standalone: false\n})\nexport class NbTreeGridFooterCellDirective extends NbFooterCellDirective implements OnInit, OnDestroy {\n  private destroy$ = new Subject<void>();\n  private latestWidth: string;\n  private readonly tree: NbTreeGridComponent<any>;\n\n  @HostBinding('style.width')\n  get columnWidth(): string {\n    this.latestWidth = this.tree.getColumnWidth();\n    return this.latestWidth || null;\n  }\n\n  constructor(\n    columnDef: NbTreeGridColumnDefDirective,\n    elementRef: ElementRef,\n    @Inject(NB_TREE_GRID) tree,\n    private columnService: NbColumnsService,\n    private cd: ChangeDetectorRef,\n  ) {\n    super(columnDef, elementRef);\n    this.tree = tree as NbTreeGridComponent<any>;\n  }\n\n  ngOnInit() {\n    this.columnService.onColumnsChange()\n      .pipe(\n        filter(() => this.latestWidth !== this.tree.getColumnWidth()),\n        takeUntil(this.destroy$),\n      )\n      .subscribe(() => this.cd.detectChanges());\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Directive, HostListener, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\n\nimport { NbFilterable } from './data-source/tree-grid-data-source';\n\n@Directive({\n    selector: '[nbFilter]',\n    standalone: false\n})\nexport class NbFilterDirective {\n  @Input('nbFilter') filterable: NbFilterable;\n\n  filter(filterRequest: string) {\n    this.filterable.filter(filterRequest);\n  }\n}\n\n/**\n * Helper directive to trigger data source's filter method when user types in input\n */\n@Directive({\n    selector: '[nbFilterInput]',\n    providers: [{ provide: NbFilterDirective, useExisting: NbFilterInputDirective }],\n    standalone: false\n})\nexport class NbFilterInputDirective extends NbFilterDirective implements OnInit, OnDestroy {\n  private search$: Subject<string> = new Subject<string>();\n  private destroy$ = new Subject<void>();\n\n  @Input('nbFilterInput') filterable: NbFilterable;\n\n  /**\n   * Debounce time before triggering filter method. Set in milliseconds.\n   * Default 200.\n   */\n  @Input() debounceTime: number = 200;\n\n  ngOnInit() {\n    this.search$\n      .pipe(\n        debounceTime(this.debounceTime),\n        takeUntil(this.destroy$),\n      )\n      .subscribe((query: string) => {\n        super.filter(query)\n      });\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n    this.search$.complete();\n  }\n\n  @HostListener('input', ['$event'])\n  filter(event) {\n    this.search$.next(event.target.value);\n  }\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Directive, HostListener } from '@angular/core';\nimport { NbTreeGridCellDirective } from './tree-grid-cell.component';\n\n/**\n * When using custom row toggle, apply this directive on your toggle to toggle row on element click.\n */\n@Directive({\n    selector: '[nbTreeGridRowToggle]',\n    standalone: false\n})\nexport class NbTreeGridRowToggleDirective {\n  @HostListener('click', ['$event'])\n  toggleRow($event) {\n    this.cell.toggleRow();\n    $event.stopPropagation();\n  }\n\n  constructor(private cell: NbTreeGridCellDirective) {}\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { Component, HostListener, Input } from '@angular/core';\nimport { NbTreeGridCellDirective } from './tree-grid-cell.component';\n\n/**\n * NbTreeGridRowToggleComponent\n */\n@Component({\n    selector: 'nb-tree-grid-row-toggle',\n    template: `\n    <button class=\"row-toggle-button\" [attr.aria-label]=\"expanded ? 'collapse' : 'expand'\">\n      <nb-icon [icon]=\"expanded ? 'chevron-down-outline' : 'chevron-right-outline'\"\n               pack=\"nebular-essentials\"\n               aria-hidden=\"true\">\n      </nb-icon>\n    </button>\n  `,\n    styles: [`\n    button {\n      background: transparent;\n      border: none;\n      padding: 0;\n    }\n  `],\n    standalone: false\n})\nexport class NbTreeGridRowToggleComponent {\n  private expandedValue: boolean;\n  @Input()\n  set expanded(value: boolean) {\n    this.expandedValue = value;\n  }\n  get expanded(): boolean {\n    return this.expandedValue;\n  }\n\n  @HostListener('click', ['$event'])\n  toggleRow($event) {\n    this.cell.toggleRow();\n    $event.stopPropagation();\n  }\n\n  constructor(private cell: NbTreeGridCellDirective) {}\n}\n","/*\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { NbTableModule } from '../cdk/table/table.module';\nimport { NbIconModule } from '../icon/icon.module';\nimport { NbTreeGridComponent } from './tree-grid.component';\nimport {\n  NbTreeGridCellDefDirective,\n  NbTreeGridFooterCellDefDirective,\n  NbTreeGridFooterRowDefDirective,\n  NbTreeGridHeaderCellDefDirective,\n  NbTreeGridHeaderRowDefDirective,\n  NbTreeGridRowDefDirective,\n} from './tree-grid-def.component';\nimport {\n  NbTreeGridFooterRowComponent,\n  NbTreeGridHeaderRowComponent,\n  NbTreeGridRowComponent,\n} from './tree-grid-row.component';\nimport {\n  NbTreeGridCellDirective,\n  NbTreeGridFooterCellDirective,\n  NbTreeGridHeaderCellDirective,\n} from './tree-grid-cell.component';\nimport {\n  NbSortDirective,\n  NbSortHeaderComponent,\n  NbSortHeaderIconDirective,\n  NbSortIconComponent,\n} from './tree-grid-sort.component';\nimport { NbTreeGridDataSourceBuilder } from './data-source/tree-grid-data-source';\nimport { NbTreeGridSortService } from './data-source/tree-grid-sort.service';\nimport { NbTreeGridFilterService } from './data-source/tree-grid-filter.service';\nimport { NbTreeGridService } from './data-source/tree-grid.service';\nimport { NbTreeGridDataService } from './data-source/tree-grid-data.service';\nimport { NbFilterDirective, NbFilterInputDirective } from './tree-grid-filter';\nimport { NbTreeGridRowToggleDirective } from './tree-grid-row-toggle.directive';\nimport { NbTreeGridColumnDefDirective } from './tree-grid-column-def.directive';\nimport { NbTreeGridRowToggleComponent } from './tree-grid-row-toggle.component';\n\nconst COMPONENTS = [\n  // Tree Grid\n  NbTreeGridComponent,\n\n  NbTreeGridRowDefDirective,\n  NbTreeGridRowComponent,\n  NbTreeGridCellDefDirective,\n  NbTreeGridCellDirective,\n\n  NbTreeGridHeaderRowDefDirective,\n  NbTreeGridHeaderRowComponent,\n  NbTreeGridHeaderCellDefDirective,\n  NbTreeGridHeaderCellDirective,\n\n  NbTreeGridFooterRowDefDirective,\n  NbTreeGridFooterRowComponent,\n  NbTreeGridFooterCellDefDirective,\n  NbTreeGridFooterCellDirective,\n\n  NbTreeGridColumnDefDirective,\n\n  // Sort directives\n  NbSortDirective,\n  NbSortHeaderComponent,\n  NbSortIconComponent,\n\n  // Filter directives\n  NbFilterDirective,\n  NbFilterInputDirective,\n\n  NbTreeGridRowToggleDirective,\n  NbTreeGridRowToggleComponent,\n  NbSortHeaderIconDirective,\n];\n\n@NgModule({\n  imports: [ CommonModule, NbTableModule, NbIconModule ],\n  declarations: [ ...COMPONENTS ],\n  exports: [ NbTableModule, ...COMPONENTS ],\n  providers: [\n    NbTreeGridSortService,\n    NbTreeGridFilterService,\n    NbTreeGridService,\n    NbTreeGridDataService,\n    NbTreeGridDataSourceBuilder,\n  ],\n})\nexport class NbTreeGridModule {}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport {\n  Component,\n  Input,\n  HostBinding,\n  forwardRef,\n  ChangeDetectorRef,\n  OnInit,\n  Output,\n  EventEmitter,\n  OnDestroy,\n  ChangeDetectionStrategy,\n  Renderer2,\n  ElementRef,\n  AfterViewInit,\n  NgZone,\n} from '@angular/core';\nimport { trigger, state, style, animate, transition } from '@angular/animations';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { NbStatusService } from '../../services/status.service';\nimport { NbLayoutDirectionService } from '../../services/direction.service';\nimport { NbComponentOrCustomStatus } from '../component-status';\nimport { convertToBoolProperty, NbBooleanInput } from '../helpers';\n\n/**\n * Toggle is a control representing `on` and `off` states.\n *\n * @stacked-example(Showcase, toggle/toggle-showcase.component)\n *\n * ### Installation\n *\n * Import `NbToggleComponent` to your feature module.\n * ```ts\n * @NgModule({\n *   imports: [\n *     // ...\n *     NbToggleModule,\n *   ],\n * })\n * export class PageModule { }\n * ```\n * ### Usage\n *\n * Toggle may have one of the following statuses: `basic`, `primary`, `success`, `warning`, `danger`, `info`, `control`\n *\n * @stacked-example(Toggle status, toggle/toggle-status.component)\n *\n * Toggle can be disabled via `disabled` input.\n *\n * @stacked-example(Disabled Toggles, toggle/toggle-disabled.component)\n *\n * Toggle may have a label with following positions: `left`, `right`, `start`, `end` (default)\n *\n * @stacked-example(Toggles With Labels, toggle/toggle-label-position.component.ts)\n *\n * You can set control state via `checked` binding:\n *\n * ```html\n * <nb-toggle [(checked)]=\"checked\"></nb-toggle>\n * ```\n *\n * Or it could be set via reactive forms or ngModel bindings:\n *\n * @stacked-example(Toggle form binding, toggle/toggle-form.component)\n *\n * @styles\n *\n * toggle-height:\n * toggle-width:\n * toggle-border-width:\n * toggle-border-radius:\n * toggle-outline-width:\n * toggle-outline-color:\n * toggle-switcher-size:\n * toggle-switcher-icon-size:\n * toggle-text-font-family:\n * toggle-text-font-size:\n * toggle-text-font-weight:\n * toggle-text-line-height:\n * toggle-cursor:\n * toggle-disabled-cursor:\n * toggle-basic-text-color:\n * toggle-basic-background-color:\n * toggle-basic-border-color:\n * toggle-basic-checked-background-color:\n * toggle-basic-checked-border-color:\n * toggle-basic-checked-switcher-background-color:\n * toggle-basic-checked-switcher-checkmark-color:\n * toggle-basic-focus-background-color:\n * toggle-basic-focus-border-color:\n * toggle-basic-focus-checked-background-color:\n * toggle-basic-focus-checked-border-color:\n * toggle-basic-hover-background-color:\n * toggle-basic-hover-border-color:\n * toggle-basic-hover-checked-background-color:\n * toggle-basic-hover-checked-border-color:\n * toggle-basic-active-background-color:\n * toggle-basic-active-border-color:\n * toggle-basic-active-checked-background-color:\n * toggle-basic-active-checked-border-color:\n * toggle-basic-disabled-background-color:\n * toggle-basic-disabled-border-color:\n * toggle-basic-disabled-switcher-background-color:\n * toggle-basic-disabled-checked-switcher-checkmark-color:\n * toggle-basic-disabled-text-color:\n * toggle-primary-text-color:\n * toggle-primary-background-color:\n * toggle-primary-border-color:\n * toggle-primary-checked-background-color:\n * toggle-primary-checked-border-color:\n * toggle-primary-checked-switcher-background-color:\n * toggle-primary-checked-switcher-checkmark-color:\n * toggle-primary-focus-background-color:\n * toggle-primary-focus-border-color:\n * toggle-primary-focus-checked-background-color:\n * toggle-primary-focus-checked-border-color:\n * toggle-primary-hover-background-color:\n * toggle-primary-hover-border-color:\n * toggle-primary-hover-checked-background-color:\n * toggle-primary-hover-checked-border-color:\n * toggle-primary-active-background-color:\n * toggle-primary-active-border-color:\n * toggle-primary-active-checked-background-color:\n * toggle-primary-active-checked-border-color:\n * toggle-primary-disabled-background-color:\n * toggle-primary-disabled-border-color:\n * toggle-primary-disabled-switcher-background-color:\n * toggle-primary-disabled-checked-switcher-checkmark-color:\n * toggle-primary-disabled-text-color:\n * toggle-success-text-color:\n * toggle-success-background-color:\n * toggle-success-border-color:\n * toggle-success-checked-background-color:\n * toggle-success-checked-border-color:\n * toggle-success-checked-switcher-background-color:\n * toggle-success-checked-switcher-checkmark-color:\n * toggle-success-focus-background-color:\n * toggle-success-focus-border-color:\n * toggle-success-focus-checked-background-color:\n * toggle-success-focus-checked-border-color:\n * toggle-success-hover-background-color:\n * toggle-success-hover-border-color:\n * toggle-success-hover-checked-background-color:\n * toggle-success-hover-checked-border-color:\n * toggle-success-active-background-color:\n * toggle-success-active-border-color:\n * toggle-success-active-checked-background-color:\n * toggle-success-active-checked-border-color:\n * toggle-success-disabled-background-color:\n * toggle-success-disabled-border-color:\n * toggle-success-disabled-switcher-background-color:\n * toggle-success-disabled-checked-switcher-checkmark-color:\n * toggle-success-disabled-text-color:\n * toggle-info-text-color:\n * toggle-info-background-color:\n * toggle-info-border-color:\n * toggle-info-checked-background-color:\n * toggle-info-checked-border-color:\n * toggle-info-checked-switcher-background-color:\n * toggle-info-checked-switcher-checkmark-color:\n * toggle-info-focus-background-color:\n * toggle-info-focus-border-color:\n * toggle-info-focus-checked-background-color:\n * toggle-info-focus-checked-border-color:\n * toggle-info-hover-background-color:\n * toggle-info-hover-border-color:\n * toggle-info-hover-checked-background-color:\n * toggle-info-hover-checked-border-color:\n * toggle-info-active-background-color:\n * toggle-info-active-border-color:\n * toggle-info-active-checked-background-color:\n * toggle-info-active-checked-border-color:\n * toggle-info-disabled-background-color:\n * toggle-info-disabled-border-color:\n * toggle-info-disabled-switcher-background-color:\n * toggle-info-disabled-checked-switcher-checkmark-color:\n * toggle-info-disabled-text-color:\n * toggle-warning-text-color:\n * toggle-warning-background-color:\n * toggle-warning-border-color:\n * toggle-warning-checked-background-color:\n * toggle-warning-checked-border-color:\n * toggle-warning-checked-switcher-background-color:\n * toggle-warning-checked-switcher-checkmark-color:\n * toggle-warning-focus-background-color:\n * toggle-warning-focus-border-color:\n * toggle-warning-focus-checked-background-color:\n * toggle-warning-focus-checked-border-color:\n * toggle-warning-hover-background-color:\n * toggle-warning-hover-border-color:\n * toggle-warning-hover-checked-background-color:\n * toggle-warning-hover-checked-border-color:\n * toggle-warning-active-background-color:\n * toggle-warning-active-border-color:\n * toggle-warning-active-checked-background-color:\n * toggle-warning-active-checked-border-color:\n * toggle-warning-disabled-background-color:\n * toggle-warning-disabled-border-color:\n * toggle-warning-disabled-switcher-background-color:\n * toggle-warning-disabled-checked-switcher-checkmark-color:\n * toggle-warning-disabled-text-color:\n * toggle-danger-text-color:\n * toggle-danger-background-color:\n * toggle-danger-border-color:\n * toggle-danger-checked-background-color:\n * toggle-danger-checked-border-color:\n * toggle-danger-checked-switcher-background-color:\n * toggle-danger-checked-switcher-checkmark-color:\n * toggle-danger-focus-background-color:\n * toggle-danger-focus-border-color:\n * toggle-danger-focus-checked-background-color:\n * toggle-danger-focus-checked-border-color:\n * toggle-danger-hover-background-color:\n * toggle-danger-hover-border-color:\n * toggle-danger-hover-checked-background-color:\n * toggle-danger-hover-checked-border-color:\n * toggle-danger-active-background-color:\n * toggle-danger-active-border-color:\n * toggle-danger-active-checked-background-color:\n * toggle-danger-active-checked-border-color:\n * toggle-danger-disabled-background-color:\n * toggle-danger-disabled-border-color:\n * toggle-danger-disabled-switcher-background-color:\n * toggle-danger-disabled-checked-switcher-checkmark-color:\n * toggle-danger-disabled-text-color:\n * toggle-control-text-color:\n * toggle-control-background-color:\n * toggle-control-border-color:\n * toggle-control-checked-background-color:\n * toggle-control-checked-border-color:\n * toggle-control-checked-switcher-background-color:\n * toggle-control-checked-switcher-checkmark-color:\n * toggle-control-focus-background-color:\n * toggle-control-focus-border-color:\n * toggle-control-focus-checked-background-color:\n * toggle-control-focus-checked-border-color:\n * toggle-control-hover-background-color:\n * toggle-control-hover-border-color:\n * toggle-control-hover-checked-background-color:\n * toggle-control-hover-checked-border-color:\n * toggle-control-active-background-color:\n * toggle-control-active-border-color:\n * toggle-control-active-checked-background-color:\n * toggle-control-active-checked-border-color:\n * toggle-control-disabled-background-color:\n * toggle-control-disabled-border-color:\n * toggle-control-disabled-switcher-background-color:\n * toggle-control-disabled-checked-switcher-checkmark-color:\n * toggle-control-disabled-text-color:\n */\n@Component({\n    selector: 'nb-toggle',\n    animations: [\n        trigger('position', [\n            state('right', style({ right: 0, left: '*' })),\n            state('left', style({ left: 0, right: '*' })),\n            transition(':enter', [animate(0)]),\n            transition('right <=> left', [animate('0.15s')]),\n        ]),\n    ],\n    template: `\n    <label class=\"toggle-label\">\n      <input type=\"checkbox\"\n             class=\"native-input visually-hidden\"\n             role=\"switch\"\n             [attr.aria-checked]=\"checked\"\n             [disabled]=\"disabled\"\n             [checked]=\"checked\"\n             (change)=\"updateValue($event)\"\n             (blur)=\"onTouched()\"\n             (click)=\"onInputClick($event)\">\n      <div class=\"toggle\" [class.checked]=\"checked\">\n        <span [@position]=\"checkState()\" class=\"toggle-switcher\">\n          <nb-icon *ngIf=\"checked\" icon=\"checkmark-bold-outline\" pack=\"nebular-essentials\"></nb-icon>\n        </span>\n      </div>\n      <span class=\"text\">\n        <ng-content></ng-content>\n      </span>\n    </label>\n  `,\n    styleUrls: [`./toggle.component.scss`],\n    providers: [{\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => NbToggleComponent),\n            multi: true,\n        }],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class NbToggleComponent implements OnInit, AfterViewInit, OnDestroy, ControlValueAccessor {\n\n  onChange: any = () => { };\n  onTouched: any = () => { };\n\n  private destroy$ = new Subject<void>();\n\n  /**\n   * Toggle checked\n   * @type {boolean}\n   */\n  @Input()\n  get checked(): boolean {\n    return this._checked;\n  }\n  set checked(value: boolean) {\n    this._checked = convertToBoolProperty(value);\n  }\n  private _checked: boolean = false;\n  static ngAcceptInputType_checked: NbBooleanInput;\n\n  /**\n   * Controls input disabled state\n   */\n  @Input()\n  get disabled(): boolean {\n    return this._disabled;\n  }\n  set disabled(value: boolean) {\n    this._disabled = convertToBoolProperty(value);\n  }\n  private _disabled: boolean = false;\n  static ngAcceptInputType_disabled: NbBooleanInput;\n\n  /**\n   * Toggle status.\n   * Possible values are: `basic`, `primary`, `success`, `warning`, `danger`, `info`, `control`.\n   */\n  @Input() status: NbComponentOrCustomStatus = 'basic';\n\n  /**\n   * Toggle label position.\n   * Possible values are: `left`, `right`, `start`, `end` (default)\n   */\n  @Input() labelPosition: 'left' | 'right' | 'start' | 'end' = 'end';\n\n  /**\n   * Output when checked state is changed by a user\n   * @type EventEmitter<boolean>\n   */\n  @Output() checkedChange = new EventEmitter<boolean>();\n\n  @HostBinding('class.status-primary')\n  get primary() {\n    return this.status === 'primary';\n  }\n\n  @HostBinding('class.status-success')\n  get success() {\n    return this.status === 'success';\n  }\n\n  @HostBinding('class.status-warning')\n  get warning() {\n    return this.status === 'warning';\n  }\n\n  @HostBinding('class.status-danger')\n  get danger() {\n    return this.status === 'danger';\n  }\n\n  @HostBinding('class.status-info')\n  get info() {\n    return this.status === 'info';\n  }\n\n  @HostBinding('class.status-basic')\n  get basic() {\n    return this.status === 'basic';\n  }\n\n  @HostBinding('class.status-control')\n  get control() {\n    return this.status === 'control';\n  }\n\n  @HostBinding('class')\n  get additionalClasses(): string[] {\n    if (this.statusService.isCustomStatus(this.status)) {\n      return [this.statusService.getStatusClass(this.status)];\n    }\n    return [];\n  }\n\n  @HostBinding('class.toggle-label-left')\n  get labelLeft() {\n    return this.labelPosition === 'left';\n  }\n\n  @HostBinding('class.toggle-label-right')\n  get labelRight() {\n    return this.labelPosition === 'right';\n  }\n\n  @HostBinding('class.toggle-label-start')\n  get labelStart() {\n    return this.labelPosition === 'start';\n  }\n\n  @HostBinding('class.toggle-label-end')\n  get labelEnd() {\n    return this.labelPosition === 'end';\n  }\n\n  constructor(\n    private changeDetector: ChangeDetectorRef,\n    private layoutDirection: NbLayoutDirectionService,\n    private renderer: Renderer2,\n    private hostElement: ElementRef<HTMLElement>,\n    private zone: NgZone,\n    protected statusService: NbStatusService,\n  ) {}\n\n  ngOnInit(): void {\n    this.layoutDirection.onDirectionChange()\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(() => this.changeDetector.detectChanges());\n  }\n\n  ngAfterViewInit() {\n    // TODO: #2254\n    this.zone.runOutsideAngular(() => setTimeout(() => {\n      this.renderer.addClass(this.hostElement.nativeElement, 'nb-transition');\n    }));\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  checkState(): string {\n    if (this.checked) {\n      return this.layoutDirection.isLtr() ? 'right' : 'left';\n    }\n\n    return this.layoutDirection.isLtr() ? 'left' : 'right';\n  }\n\n  registerOnChange(fn: any) {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any) {\n    this.onTouched = fn;\n  }\n\n  writeValue(val: any) {\n    this.checked = val;\n    this.changeDetector.markForCheck();\n  }\n\n  setDisabledState(val: boolean) {\n    this.disabled = convertToBoolProperty(val);\n    this.changeDetector.markForCheck();\n  }\n\n  updateValue(event: Event): void {\n    const input = (event.target as HTMLInputElement);\n    this.checked = input.checked;\n    this.checkedChange.emit(this.checked);\n    this.onChange(this.checked);\n  }\n\n  onInputClick(event: Event) {\n    event.stopPropagation();\n  }\n}\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NbIconModule } from '../icon/icon.module';\n\nimport { NbToggleComponent } from './toggle.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    NbIconModule,\n  ],\n  declarations: [NbToggleComponent],\n  exports: [NbToggleComponent],\n})\nexport class NbToggleModule { }\n","/**\n * @license\n * Copyright Akveo. All Rights Reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n */\n\nexport * from './theme.options';\nexport * from './theme.module';\nexport * from './services/theme.service';\nexport * from './services/spinner.service';\nexport * from './services/breakpoints.service';\nexport * from './services/color.helper';\nexport * from './services/direction.service';\nexport * from './services/scroll.service';\nexport * from './services/ruler.service';\nexport * from './services/status.service';\nexport * from './services/js-themes-registry.service';\nexport * from './services/js-themes/corporate.theme';\nexport * from './services/js-themes/cosmic.theme';\nexport * from './services/js-themes/default.theme';\nexport * from './services/js-themes/dark.theme';\nexport * from './services/js-themes/theme.options';\nexport * from './components/component-size';\nexport * from './components/component-shape';\nexport * from './components/component-status';\nexport * from './components/card/card.module';\nexport * from './components/card/card.component';\nexport * from './components/card/flip-card/flip-card.component';\nexport * from './components/card/reveal-card/reveal-card.component';\nexport * from './components/card/shared/shared.component';\nexport * from './components/calendar/calendar.module';\nexport * from './components/calendar/calendar.component';\nexport * from './components/calendar/calendar-range.module';\nexport * from './components/calendar/calendar-range.component';\n/* eslint-disable max-len */\nexport { NbCalendarDayCellComponent } from './components/calendar-kit/components/calendar-day-picker/calendar-day-cell.component';\nexport { NbDateTimePickerComponent } from './components/datepicker/date-timepicker.component';\nexport { NbCalendarYearPickerComponent } from './components/calendar-kit/components/calendar-year-picker/calendar-year-picker.component';\nexport {\n  NbCalendarMonthPickerComponent,\n  MONTHS_IN_VIEW,\n  MONTHS_IN_COLUMN,\n} from './components/calendar-kit/components/calendar-month-picker/calendar-month-picker.component';\nexport { NbCalendarDayPickerComponent } from './components/calendar-kit/components/calendar-day-picker/calendar-day-picker.component';\nexport { NbCalendarViewModeComponent } from './components/calendar-kit/components/calendar-navigation/calendar-view-mode.component';\nexport { NbCalendarPageableNavigationComponent } from './components/calendar-kit/components/calendar-navigation/calendar-pageable-navigation.component';\nexport { NbCalendarDaysNamesComponent } from './components/calendar-kit/components/calendar-days-names/calendar-days-names.component';\nexport { NbCalendarWeekNumberComponent } from './components/calendar-kit/components/calendar-week-number/calendar-week-number.component';\nexport { NbCalendarMonthCellComponent } from './components/calendar-kit/components/calendar-month-picker/calendar-month-cell.component';\nexport { NbCalendarYearCellComponent } from './components/calendar-kit/components/calendar-year-picker/calendar-year-cell.component';\nexport { NbCalendarPickerRowComponent } from './components/calendar-kit/components/calendar-picker/calendar-picker-row.component';\nexport { NbCalendarPickerComponent } from './components/calendar-kit/components/calendar-picker/calendar-picker.component';\nexport { NbCalendarActionsComponent } from './components/calendar-kit/components/calendar-actions/calendar-actions.component';\n/* eslint-enable max-len */\nexport * from './components/calendar/base-calendar.component';\nexport * from './components/calendar/base-calendar.module';\nexport * from './components/calendar/base-calendar-range-cell';\nexport * from './components/calendar/calendar-range-day-cell.component';\nexport * from './components/calendar/calendar-range-month-cell.component';\nexport * from './components/calendar/calendar-range-year-cell.component';\nexport { NbCalendarMonthModelService } from './components/calendar-kit/services/calendar-month-model.service';\nexport * from './components/calendar-kit/services/calendar-year-model.service';\nexport * from './components/calendar-kit/services/calendar-time-model.service';\nexport { NbNativeDateService } from './components/calendar-kit/services/native-date.service';\nexport { NbDateService, NbDayPeriod } from './components/calendar-kit/services/date.service';\nexport * from './components/calendar-kit/model';\nexport * from './components/calendar-kit/calendar-kit.module';\nexport * from './components/layout/layout.module';\nexport * from './components/layout/layout.component';\nexport * from './components/layout/layout-direction.directive';\nexport * from './components/layout/restore-scroll-top.service';\nexport * from './components/menu/menu.module';\nexport { NbMenuService, NbMenuItem, NbMenuBag } from './components/menu/menu.service';\nexport * from './components/menu/menu.component';\nexport * from './components/route-tabset/route-tabset.module';\nexport * from './components/route-tabset/route-tabset.component';\nexport * from './components/sidebar/sidebar.module';\nexport { NbSidebarService } from './components/sidebar/sidebar.service';\nexport * from './components/sidebar/sidebar.component';\nexport * from './components/tabset/tabset.module';\nexport * from './components/datepicker/date-timepicker.component';\nexport * from './components/datepicker/calendar-with-time.component';\nexport * from './components/tabset/tabset.component';\nexport * from './components/tabset/tab-content.directive';\nexport * from './components/tabset/tab-title.directive';\nexport * from './components/user/user.module';\nexport * from './components/user/user.component';\nexport * from './components/actions/actions.module';\nexport * from './components/actions/actions.component';\nexport * from './components/search/search.module';\nexport * from './components/search/search.service';\nexport * from './components/search/search.component';\nexport * from './components/checkbox/checkbox.component';\nexport * from './components/checkbox/checkbox.module';\nexport * from './components/badge/badge.component';\nexport * from './components/badge/badge.module';\nexport * from './components/popover/popover.directive';\nexport * from './components/popover/popover.module';\nexport * from './components/popover/popover.component';\nexport * from './components/context-menu/context-menu.directive';\nexport * from './components/context-menu/context-menu.component';\nexport * from './components/context-menu/context-menu.module';\nexport * from './components/progress-bar/progress-bar.component';\nexport * from './components/progress-bar/progress-bar.module';\nexport * from './components/alert/alert.component';\nexport * from './components/alert/alert.module';\nexport * from './components/chat/chat.component';\nexport * from './components/chat/chat-message.component';\nexport * from './components/chat/chat-message-map.component';\nexport * from './components/chat/chat-message-file.component';\nexport * from './components/chat/chat-message-quote.component';\nexport * from './components/chat/chat-message-text.component';\nexport * from './components/chat/chat-form.component';\nexport * from './components/chat/chat.module';\nexport * from './components/chat/chat.options';\nexport * from './components/chat/chat-avatar.component';\nexport * from './components/chat/chat-custom-message.directive';\nexport * from './components/chat/chat-custom-message.service';\nexport * from './components/chat/chat-title.directive';\nexport * from './components/spinner/spinner.component';\nexport * from './components/spinner/spinner.directive';\nexport * from './components/spinner/spinner.module';\nexport * from './components/stepper/stepper-tokens';\nexport * from './components/stepper/stepper.component';\nexport * from './components/stepper/step.component';\nexport * from './components/stepper/stepper-button.directive';\nexport * from './components/stepper/stepper.module';\nexport * from './components/accordion/accordion.component';\nexport * from './components/accordion/accordion-item.component';\nexport * from './components/accordion/accordion-item-body.component';\nexport * from './components/accordion/accordion-item-header.component';\nexport * from './components/accordion/accordion.module';\nexport * from './components/button/base-button';\nexport * from './components/button/button.component';\nexport * from './components/button/button.module';\nexport * from './components/button-group/button-group.component';\nexport * from './components/button-group/button-group.module';\nexport * from './components/button-group/button-toggle.directive';\nexport * from './components/button-group/button-group-injection-tokens';\nexport * from './components/list/list.component';\nexport * from './components/list/list.module';\nexport * from './components/list/list-page-tracker.directive';\nexport * from './components/list/infinite-list.directive';\nexport * from './components/input/input.directive';\nexport * from './components/input/input.module';\nexport * from './components/cdk/overlay/overlay.module';\nexport * from './components/cdk/overlay/overlay-service';\nexport * from './components/cdk/overlay/overlay-position';\nexport * from './components/cdk/overlay/overlay-container';\nexport * from './components/cdk/overlay/overlay-trigger';\nexport * from './components/cdk/overlay/mapping';\nexport * from './components/cdk/overlay/position-helper';\nexport * from './components/cdk/overlay/dynamic/dynamic-overlay';\nexport * from './components/cdk/overlay/dynamic/dynamic-overlay-handler';\nexport * from './components/cdk/platform/platform-service';\nexport * from './components/cdk/a11y/a11y.module';\nexport * from './components/cdk/a11y/focus-trap';\nexport * from './components/cdk/a11y/focus-key-manager';\nexport * from './components/cdk/adapter/adapter.module';\nexport * from './components/cdk/adapter/block-scroll-strategy-adapter';\nexport * from './components/cdk/adapter/overlay-container-adapter';\nexport * from './components/cdk/adapter/scroll-dispatcher-adapter';\nexport * from './components/cdk/adapter/viewport-ruler-adapter';\nexport * from './components/cdk/bidi/bidi-service';\nexport * from './components/cdk/bidi/bidi.module';\nexport * from './components/cdk/table/cell';\nexport * from './components/cdk/table/data-source';\nexport * from './components/cdk/table/row';\nexport * from './components/cdk/table/table.module';\nexport * from './components/dialog/dialog-config';\nexport * from './components/dialog/dialog-ref';\nexport * from './components/dialog/dialog.service';\nexport * from './components/dialog/dialog.module';\nexport * from './components/toastr/toastr.module';\nexport * from './components/toastr/toastr.service';\nexport * from './components/toastr/model';\nexport * from './components/toastr/toast.component';\nexport * from './components/toastr/toastr-config';\nexport * from './components/toastr/toastr-container.component';\nexport * from './components/tooltip/tooltip.module';\nexport * from './components/tooltip/tooltip.directive';\nexport * from './components/tooltip/tooltip.component';\nexport * from './components/select/select.module';\nexport * from './components/select-with-autocomplete/select-with-autocomplete.module';\nexport * from './components/select/select.component';\nexport * from './components/select-with-autocomplete/select-with-autocomplete.component';\nexport * from './components/option/option-list.module';\nexport * from './components/option/option.component';\nexport * from './components/option/option-group.component';\nexport * from './components/option/option-list.component';\nexport * from './components/select/select-injection-tokens';\nexport * from './components/autocomplete/autocomplete.module';\nexport * from './components/autocomplete/autocomplete.component';\nexport * from './components/autocomplete/autocomplete.directive';\nexport * from './components/window/window.module';\nexport * from './components/window/window.service';\nexport * from './components/window/window-ref';\nexport * from './components/window/window.options';\nexport * from './components/window/window.component';\nexport * from './components/window/windows-container.component';\nexport * from './components/timepicker/timepicker.module';\nexport * from './components/timepicker/model';\nexport * from './components/timepicker/timepicker.component';\nexport * from './components/timepicker/timepicker.directive';\nexport * from './components/timepicker/timepicker-cell.component';\nexport * from './components/datepicker/datepicker.module';\nexport * from './components/datepicker/datepicker.directive';\nexport * from './components/datepicker/datepicker-adapter';\nexport * from './components/datepicker/datepicker-container.component';\nexport * from './components/datepicker/datepicker.component';\nexport * from './components/dialog/dialog-container';\nexport * from './components/radio/radio.module';\nexport * from './components/radio/radio-group.component';\nexport * from './components/radio/radio.component';\nexport * from './components/tag/tag.module';\nexport * from './components/tag/tag.component';\nexport * from './components/tag/tag-list.component';\nexport * from './components/tag/tag-input.directive';\nexport * from './components/tree-grid/tree-grid.module';\nexport * from './components/tree-grid/tree-grid.component';\nexport * from './components/tree-grid/tree-grid-row.component';\nexport * from './components/tree-grid/tree-grid-injection-tokens';\nexport * from './components/tree-grid/tree-grid-sort.component';\nexport * from './components/tree-grid/tree-grid-row-toggle.component';\nexport * from './components/tree-grid/tree-grid-column-def.directive';\nexport * from './components/tree-grid/tree-grid-cell.component';\nexport * from './components/tree-grid/tree-grid-def.component';\nexport * from './components/tree-grid/tree-grid-filter';\nexport * from './components/tree-grid/tree-grid-row-toggle.directive';\nexport * from './components/tree-grid/data-source/tree-grid.model';\nexport * from './components/tree-grid/data-source/tree-grid-data-source';\nexport * from './components/tree-grid/data-source/tree-grid-data.service';\nexport * from './components/tree-grid/data-source/tree-grid-filter.service';\nexport * from './components/tree-grid/data-source/tree-grid.service';\nexport * from './components/tree-grid/data-source/tree-grid-sort.service';\nexport * from './components/tree-grid/tree-grid-columns.service';\nexport * from './components/icon/icon.module';\nexport * from './components/icon/icon.component';\nexport * from './components/icon/icon';\nexport * from './components/icon/icon-pack';\nexport * from './components/icon/icon-libraries';\nexport * from './components/toggle/toggle.module';\nexport * from './components/toggle/toggle.component';\nexport * from './components/form-field/form-field.module';\nexport * from './components/form-field/form-field.component';\nexport * from './components/form-field/prefix.directive';\nexport * from './components/form-field/suffix.directive';\nexport * from './components/form-field/form-field-control';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["palette","i1.NbMediaBreakpointsService","i2.NbJSThemesRegistry","i1.NbLayoutDirectionService","i1.NbViewportRulerAdapter","i2.NbPlatform","i3.NbOverlayPositionBuilder","i4.NbOverlayContainerAdapter","i1.NbPortalOutletDirective","i2","i1.NbOverlay","i2.NbLayoutDirectionService","i2.NbLayoutScrollService","observableFromEvent","observableMerge","i1","i2.NbIconLibraries","i3.NbStatusService","i1.NbIconLibraries","i1.NbStatusService","i2.NbIconComponent","i1.NbDateService","i2.NbCalendarYearModelService","i3.NbButtonComponent","i4.NbIconComponent","i2.NbButtonComponent","i3.NbIconComponent","i2.NbCalendarPickerRowComponent","i3.NbCalendarPickerComponent","i2.NbCalendarPickerComponent","i1.NbCalendarMonthModelService","i3.NbCalendarDaysNamesComponent","i4.NbCalendarPickerComponent","i5.NbCalendarWeekNumberComponent","i3.NbCalendarViewModeComponent","i4.NbCalendarPageableNavigationComponent","i5.NbCalendarYearPickerComponent","i6.NbCalendarMonthPickerComponent","i7.NbCalendarDayPickerComponent","i8","i9.NbCardComponent","i9.NbCardBodyComponent","i9.NbCardHeaderComponent","i1.NbBaseCalendarComponent","COMPONENTS","i2.NbBaseCalendarComponent","i1.NbPlatform","i2.NbCalendarTimeModelService","i3.NbDateService","i4","i5.NbPortalDirective","i6.NbListComponent","i6.NbListItemComponent","i7.NbCardComponent","i7.NbCardFooterComponent","i7.NbCardHeaderComponent","i8.NbCalendarActionsComponent","i9.NbTimePickerCellComponent","i3.NbPortalOutletDirective","i4.NbCardComponent","i4.NbCardBodyComponent","i4.NbCardFooterComponent","i5.NbBaseCalendarComponent","i6.NbTimePickerComponent","i7.NbCalendarActionsComponent","i1.NbOverlayContainerComponent","i1.NbPositionBuilderService","i2.NbTriggerStrategyBuilderService","i3.NbOverlayService","i4.NbDateService","i5.NbCalendarTimeModelService","i1.NbThemeService","i2.NbSpinnerService","i3.NbLayoutDirectionService","i4.NbLayoutScrollService","i5.NbLayoutRulerService","i6.NbRestoreScrollTopHelper","i7.NbOverlayContainerAdapter","i1.NbLayoutDirection","i1.NbMenuService","i3","i5.NbIconComponent","i6.NbBadgeComponent","i1.NbMenuInternalService","i4.NbMergeConfigsPipe","i1.NbSidebarService","i2.NbThemeService","i3.NbBadgeComponent","observableOf","i4.NbSearchService","i5.NbThemeService","i6","i7.NbOverlayService","i8.NbPortalDirective","i1.NbOverlayService","i2.NbOverlayContainer","i3.NbDynamicOverlay","i4.NbLayoutDirectionService","i1.NbDynamicOverlayHandler","i1.NbMenuComponent","i2.NbDynamicOverlayHandler","i1.NbFocusMonitor","i2.NbStatusService","i5.NbInputDirective","i6.NbButtonComponent","i4.NbChatMessageTextComponent","i2.NbChatMessageTextComponent","i1.NbChatOptions","i2.NbChatMessageFileComponent","i2.NbChatCustomMessageService","i5.NbChatMessageFileComponent","i6.NbChatMessageQuoteComponent","i7.NbChatMessageMapComponent","i8.NbChatAvatarComponent","i1.NbChatCustomMessageService","i1.NbStepperComponent","i1.NbAccordionComponent","i1.NbAccordionItemComponent","i1.NbLayoutScrollService","i2.NbLayoutRulerService","i1.NbDirectionality","i3.NbViewportRulerAdapter","i1.NbDialogConfig","i2.NbFocusTrapFactoryService","i2.NbOverlayService","i2.NbPositionHelper","i4.NbToastComponent","i2.NbCheckboxComponent","i2.NbPositionBuilderService","i3.NbTriggerStrategyBuilderService","i4.NbFocusKeyManagerFactoryService","i5.NbFocusMonitor","i6.NbStatusService","i7","i9.NbIconComponent","i10.NbOptionListComponent","NB_SELECT_COMPONENTS","i7.NbActiveDescendantKeyManagerFactoryService","i9.NbPortalDirective","i10.NbInputDirective","i11.NbIconComponent","i12.NbOptionListComponent","i13.NbFormFieldComponent","i14.NbSuffixDirective","i2.NbPortalDirective","i3.NbOptionListComponent","i3.NbPositionBuilderService","i4.NbActiveDescendantKeyManagerFactoryService","i1.NbWindowRef","i2.NbWindowConfig","i3.NbFocusTrapFactoryService","i5.NbOverlayContainerComponent","i6.NbCardComponent","i6.NbCardBodyComponent","i6.NbCardHeaderComponent","i7.NbIconComponent","i8.NbButtonComponent","i2.NbOverlayPositionBuilder","i3.NbBlockScrollStrategyAdapter","i4.NbCalendarTimeModelService","i5.NbDateService","i2.NbActiveDescendantKeyManagerFactoryService","i4.NbStatusService","i1.NbTreeGridFilterService","i2.NbTreeGridSortService","i3.NbTreeGridService","i4.NbTreeGridDataService","i1.NbTreeGridDataSourceBuilder","i2.NbDirectionality","i3.NbPlatform","i4.NbViewportRulerAdapter","i5.NbDataRowOutletDirective","i5.NbHeaderRowOutletDirective","i5.NbFooterRowOutletDirective","i5.NbNoDataRowOutletDirective","i1.NbColumnsService","i1.NbCellOutletDirective","i1.NbTreeGridColumnDefDirective","i4.NbColumnsService","i1.NbTreeGridCellDirective"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;AAIG;MAUU,gBAAgB,GAAG,IAAI,cAAc,CAAiB,uBAAuB;MAC7E,oBAAoB,GAAG,IAAI,cAAc,CAAsB,2BAA2B;MAC1F,qBAAqB,GAAG,IAAI,cAAc,CAAqB,4BAA4B;MAC3F,YAAY,GAAG,IAAI,cAAc,CAAqB,mBAAmB;AAEtF;;AAEK;MACQ,SAAS,GAAG,IAAI,cAAc,CAAS,QAAQ;MAC/C,WAAW,GAAG,IAAI,cAAc,CAAW,UAAU;;ACvBlE;;;;AAIG;AAeU,MAAA,yBAAyB,GAAG;AACvC,IAAA;AACE,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,CAAC;AACT,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,GAAG;AACX,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,IAAI;AACZ,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,KAAK,EAAE,IAAI;AACZ,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,KAAK,EAAE,IAAI;AACZ,KAAA;;AAGH;;;;;AAKG;MAEU,yBAAyB,CAAA;AAIpC,IAAA,WAAA,CAAkD,WAAW,EAAA;QAAX,IAAW,CAAA,WAAA,GAAX,WAAW;AAC3D,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAoB,KAAI;YAC1E,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK;AACrB,YAAA,OAAO,GAAG;SACX,EAAE,EAAE,CAAC;;AAGR;;;;AAIG;AACH,IAAA,UAAU,CAAC,KAAa,EAAA;QACtB,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE;AACjD,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE;AAEzC,QAAA,OAAO;AACJ,aAAA,IAAI,CAAC,CAAC,KAAwB,EAAE,KAAa,KAAI;YAChD,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC;AACnC,YAAA,OAAO,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;SAC7D,CAAC,IAAI,OAAO;;AAGjB;;;;AAIG;AACH,IAAA,SAAS,CAAC,IAAY,EAAA;QACpB,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;AAC/C,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE;AAEzC,QAAA,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,KAAwB,KAAK,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,OAAO;;AAGvF;;;AAGG;IACH,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW;;AAGzB;;;AAGG;IACH,iBAAiB,GAAA;QACf,OAAO,IAAI,CAAC,cAAc;;AApDjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,kBAIhB,oBAAoB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAJ7B,yBAAyB,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC;;0BAKc,MAAM;2BAAC,oBAAoB;;;AC/D1C,MAAMA,SAAO,GAAG;AACd,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,MAAM,EAAE,SAAS;CAClB;AAEY,MAAA,aAAa,GAAqB;AAC7C,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,SAAS,EAAE;AACT,QAAA,QAAQ,EAAE,uBAAuB;AACjC,QAAA,aAAa,EAAE,qBAAqB;AAEpC,QAAA,EAAE,EAAE,SAAS;AACb,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AAEd,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,OAAO,EAAE,SAAS;AAElB,QAAA,EAAE,EAAE,SAAS;AACb,QAAA,SAAS,EAAE,SAAS;AACpB,QAAA,MAAM,EAAE,SAAS;QACjB,WAAW,EAAEA,SAAO,CAAC,OAAO;AAC5B,QAAA,QAAQ,EAAE,SAAS;AACnB,QAAA,SAAS,EAAE,SAAS;QAEpB,OAAO,EAAEA,SAAO,CAAC,OAAO;QACxB,OAAO,EAAEA,SAAO,CAAC,OAAO;QACxB,IAAI,EAAEA,SAAO,CAAC,IAAI;QAClB,OAAO,EAAEA,SAAO,CAAC,OAAO;QACxB,MAAM,EAAEA,SAAO,CAAC,MAAM;AAEtB,QAAA,YAAY,EAAE,SAAS;AACvB,QAAA,YAAY,EAAE,SAAS;AACvB,QAAA,SAAS,EAAE,SAAS;AACpB,QAAA,YAAY,EAAE,SAAS;AACvB,QAAA,WAAW,EAAE,SAAS;AACvB,KAAA;;;AC3CH,MAAMA,SAAO,GAAG;AACd,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,MAAM,EAAE,SAAS;CAClB;AAEY,MAAA,YAAY,GAAqB;AAC5C,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,SAAS,EAAE;AACT,QAAA,QAAQ,EAAE,uBAAuB;AACjC,QAAA,aAAa,EAAE,qBAAqB;AAEpC,QAAA,EAAE,EAAE,SAAS;AACb,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AAEd,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,OAAO,EAAE,SAAS;AAElB,QAAA,EAAE,EAAE,SAAS;AACb,QAAA,SAAS,EAAE,SAAS;AACpB,QAAA,MAAM,EAAE,SAAS;QACjB,WAAW,EAAEA,SAAO,CAAC,OAAO;AAC5B,QAAA,QAAQ,EAAE,SAAS;AACnB,QAAA,SAAS,EAAE,SAAS;QAEpB,OAAO,EAAEA,SAAO,CAAC,OAAO;QACxB,OAAO,EAAEA,SAAO,CAAC,OAAO;QACxB,IAAI,EAAEA,SAAO,CAAC,IAAI;QAClB,OAAO,EAAEA,SAAO,CAAC,OAAO;QACxB,MAAM,EAAEA,SAAO,CAAC,MAAM;AAEtB,QAAA,YAAY,EAAE,SAAS;AACvB,QAAA,YAAY,EAAE,SAAS;AACvB,QAAA,SAAS,EAAE,SAAS;AACpB,QAAA,YAAY,EAAE,SAAS;AACvB,QAAA,WAAW,EAAE,SAAS;AACvB,KAAA;;;AC3CH,MAAMA,SAAO,GAAG;AACd,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,MAAM,EAAE,SAAS;CAClB;AAEY,MAAA,eAAe,GAAqB;AAC/C,IAAA,IAAI,EAAE,WAAW;AACjB,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,SAAS,EAAE;AACT,QAAA,QAAQ,EAAE,uBAAuB;AACjC,QAAA,aAAa,EAAE,qBAAqB;AAEpC,QAAA,EAAE,EAAE,SAAS;AACb,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AAEd,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,OAAO,EAAE,SAAS;AAElB,QAAA,EAAE,EAAE,SAAS;AACb,QAAA,SAAS,EAAE,SAAS;AACpB,QAAA,MAAM,EAAE,SAAS;QACjB,WAAW,EAAEA,SAAO,CAAC,OAAO;AAC5B,QAAA,QAAQ,EAAE,SAAS;AACnB,QAAA,SAAS,EAAE,SAAS;QAEpB,OAAO,EAAEA,SAAO,CAAC,OAAO;QACxB,OAAO,EAAEA,SAAO,CAAC,OAAO;QACxB,IAAI,EAAEA,SAAO,CAAC,IAAI;QAClB,OAAO,EAAEA,SAAO,CAAC,OAAO;QACxB,MAAM,EAAEA,SAAO,CAAC,MAAM;AAEtB,QAAA,YAAY,EAAE,SAAS;AACvB,QAAA,YAAY,EAAE,SAAS;AACvB,QAAA,SAAS,EAAE,SAAS;AACpB,QAAA,YAAY,EAAE,SAAS;AACvB,QAAA,WAAW,EAAE,SAAS;AACvB,KAAA;;;AC5CH,MAAM,OAAO,GAAG;AACd,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,MAAM,EAAE,SAAS;CAClB;AAEY,MAAA,UAAU,GAAqB;AAC1C,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,SAAS,EAAE;AACT,QAAA,QAAQ,EAAE,uBAAuB;AACjC,QAAA,aAAa,EAAE,qBAAqB;AAEpC,QAAA,EAAE,EAAE,SAAS;AACb,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AAEd,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,OAAO,EAAE,SAAS;AAElB,QAAA,EAAE,EAAE,SAAS;AACb,QAAA,SAAS,EAAE,SAAS;AACpB,QAAA,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,OAAO,CAAC,OAAO;AAC5B,QAAA,QAAQ,EAAE,SAAS;AACnB,QAAA,SAAS,EAAE,SAAS;QAEpB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,MAAM,EAAE,OAAO,CAAC,MAAM;AAEtB,QAAA,YAAY,EAAE,SAAS;AACvB,QAAA,YAAY,EAAE,SAAS;AACvB,QAAA,SAAS,EAAE,SAAS;AACpB,QAAA,YAAY,EAAE,SAAS;AACvB,QAAA,WAAW,EAAE,SAAS;AACvB,KAAA;;;AC7CH;;;;AAIG;AAYU,MAAA,eAAe,GAAuB;IACjD,aAAa;IACb,YAAY;IACZ,eAAe;IACf,UAAU;;AAGZ;;;AAGG;MAEU,kBAAkB,CAAA;IAI7B,WAA2C,CAAA,aAAiC,EAC1C,SAAA,GAAgC,EAAE,EAAA;QAH5D,IAAM,CAAA,MAAA,GAAQ,EAAE;QAKtB,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,aAAa,CAAC;AAE5D,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAU,KAAI;AAC5B,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC;AAC9C,SAAC,CAAC;;AAGJ;;;;;AAKG;AACH,IAAA,QAAQ,CAAC,MAAW,EAAE,SAAiB,EAAE,SAAiB,EAAA;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;AAC3D,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC;;AAG3D;;;;AAIG;AACH,IAAA,GAAG,CAAC,SAAiB,EAAA;QACnB,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;;AAGjC;;;;AAIG;AACH,IAAA,GAAG,CAAC,SAAiB,EAAA;QACnB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;AAC3B,YAAA,MAAM,KAAK,CAAC,CAAA,yBAAA,EAA4B,SAAS,CAAA,mBAAA,CAAqB,CAAC;;AAEzE,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;;IAGnD,cAAc,CAAC,SAA6B,EAAE,SAA6B,EAAA;QACjF,IAAI,SAAS,EAAE;YACb,MAAM,YAAY,GAAuB,EAAE;AAC3C,YAAA,SAAS,CAAC,OAAO,CAAC,CAAC,KAAuB,KAAI;AAC5C,gBAAA,MAAM,OAAO,GAAqB,SAAS,CAAC,IAAI,CAAC,CAAC,EAAoB,KAAK,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;AAC1E,uBAAA,EAAE;AAEzB,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC;AACtD,gBAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AAChC,aAAC,CAAC;AAEF,YAAA,SAAS,CAAC,OAAO,CAAC,CAAC,KAAuB,KAAI;AAC5C,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAoB,KAAK,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE;AACxE,oBAAA,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;;AAE5B,aAAC,CAAC;AACF,YAAA,OAAO,YAAY;;AAErB,QAAA,OAAO,SAAS;;AAIV,IAAA,QAAQ,CAAC,IAAI,EAAA;AACnB,QAAA,OAAO,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;;;AAIzD,IAAA,SAAS,CAAC,MAAM,EAAE,GAAG,OAAO,EAAA;AAClC,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACnB,YAAA,OAAO,MAAM;;AAEf,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE;AAE9B,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAClD,YAAA,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;gBACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;AAC9B,oBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AAChB,wBAAA,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;;AAEtC,oBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;;qBACnC;AACL,oBAAA,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;;;;QAInD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC;;8GA3FhC,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAIT,qBAAqB,EAAA,EAAA,EAAA,KAAA,EACrB,YAAY,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHALrB,kBAAkB,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B;;0BAKc,MAAM;2BAAC,qBAAqB;;0BAC5B,MAAM;2BAAC,YAAY;;;ACjClC;;;;AAIG;AAYH;;AAEG;MAEU,cAAc,CAAA;AASzB,IAAA,WAAA,CAAgD,OAAY,EACxC,iBAA4C,EAC5C,gBAAoC,EAAA;QAFR,IAAO,CAAA,OAAA,GAAP,OAAO;QACnC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;AAP5B,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,aAAa,CAAC,CAAC,CAAC;AACpC,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,OAAO,EAAE;AAClC,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,OAAO,EAAE;AAClC,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,aAAa,CAAS,CAAC,CAAC;AAKvD,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE;AAC3B,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;;;AAIlC;;;AAGG;AACH,IAAA,WAAW,CAAC,IAAY,EAAA;AACtB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;AAC9D,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;;AAG1B,IAAA,iBAAiB,CAAC,KAAa,EAAA;AAC7B,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGrC;;;;;AAKG;IACH,UAAU,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAC9B,GAAG,CAAC,CAAC,KAAU,KAAI;YACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;SAC7C,CAAC,CACH;;AAGH;;;;;;;AAOG;IACH,kBAAkB,GAAA;QAChB,OAAO,IAAI,CAAC;AACT,aAAA,IAAI,CACH,SAAS,CAAC,SAAS,CAAC,EACpB,QAAQ,EAAE,EACV,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAmB,KAAI;YAC3C,OAAO;AACL,gBAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,SAAS,CAAC;AAC5C,gBAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,KAAK,CAAC;aACC;SAC5C,CAAC,EACF,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAyC,KAAI;AACpE,YAAA,OAAO,SAAS,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;AACtC,SAAC,CAAC,EACF,oBAAoB,CAAC,IAAI,EAAE,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EACrE,KAAK,EAAE,CACR;;AAGL;;;AAGG;IACH,aAAa,GAAA;QACX,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;;AAGzC;;;AAGG;AACH,IAAA,iBAAiB,CAAC,SAAiB,EAAA;AACjC,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC;;AAGzC;;;AAGG;IACH,mBAAmB,GAAA;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;;AAG9C;;;AAGG;AACH,IAAA,iBAAiB,CAAC,SAAiB,EAAA;AACjC,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC;;AAGzC;;;AAGG;IACH,mBAAmB,GAAA;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;;AA5GnC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,kBASL,gBAAgB,EAAA,EAAA,EAAA,KAAA,EAAAC,yBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHATzB,cAAc,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B;;0BAUc,MAAM;2BAAC,gBAAgB;;;AC7BtC;;;;AAIG;AAIH;;AAEG;MAEU,gBAAgB,CAAA;AAK3B,IAAA,WAAA,CAAyC,QAAQ,EAAA;QAAR,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAHzC,IAAO,CAAA,OAAA,GAAmB,EAAE;QAC5B,IAAQ,CAAA,QAAA,GAAW,mBAAmB;;AAI9C;;;;AAIG;AACH,IAAA,cAAc,CAAC,MAAoB,EAAA;AACjC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;;AAG3B;;AAEG;IACH,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;;AAGnB;;AAEG;IACH,IAAI,GAAA;QACF,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,UAAU,EAAE;;IAGX,UAAU,CAAC,IAAI,GAAG,CAAC,MAAM,QAAO,EAAA;AACtC,QAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;YACxC,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;AACzB,SAAC;AACE,aAAA,KAAK,CAAC,CAAC,KAAK,KAAI;;AAEf,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AACtB,SAAC,CAAC;;;IAIE,WAAW,GAAA;AACjB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE;QACnC,IAAI,EAAE,EAAE;AACN,YAAA,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,OAAO;;;IAIzB,WAAW,GAAA;AACjB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE;QACnC,IAAI,EAAE,EAAE;AACN,YAAA,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,MAAM;;;IAIxB,iBAAiB,GAAA;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;;AA1DzC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,kBAKP,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHALpB,gBAAgB,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B;;0BAMc,MAAM;2BAAC,WAAW;;;ACbjC;;AAEK;IACO;AAAZ,CAAA,UAAY,iBAAiB,EAAA;AAC3B,IAAA,iBAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,iBAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACb,CAAC,EAHW,iBAAiB,KAAjB,iBAAiB,GAG5B,EAAA,CAAA,CAAA;AAED;;AAEK;MACQ,mBAAmB,GAAG,IAAI,cAAc,CAAoB,kBAAkB;AAE3F;;;AAGG;MAEU,wBAAwB,CAAA;IAGnC,WACmD,CAAA,SAAA,GAAY,iBAAiB,CAAC,GAAG,EAAA;QAAjC,IAAS,CAAA,SAAA,GAAT,SAAS;AAHpD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,aAAa,CAAoB,CAAC,CAAC;AAKhE,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;;AAG9B;;;AAGK;IACE,KAAK,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,KAAK,iBAAiB,CAAC,GAAG;;AAGjD;;;AAGK;IACE,KAAK,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,KAAK,iBAAiB,CAAC,GAAG;;AAGjD;;;AAGK;IACL,YAAY,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;;AAGvB;;;AAGG;AACH,IAAA,YAAY,CAAC,SAA4B,EAAA;AACvC,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC1B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC;;AAGvC;;;AAGG;IACH,iBAAiB,GAAA;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAqB,CAAC;;AA/CpD,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,kBAIb,mBAAmB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAJ9B,wBAAwB,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC;;0BAKI;;0BAAY,MAAM;2BAAC,mBAAmB;;;ACJ3C;;;;;;;;AAQG;MAEU,qBAAqB,CAAA;AADlC,IAAA,WAAA,GAAA;AAGU,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,OAAO,EAAO;AACvC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAoB;AAC/C,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAO;AAC5B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAW;AAmE7C;AAjEC;;;;AAIG;IACH,WAAW,GAAA;AACT,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,QAAsC,KAAI;AAC/D,YAAA,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAoB;AAChD,YAAA,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC;YAC5B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC;AAE1C,YAAA,OAAO,MAAM,QAAQ,CAAC,QAAQ,EAAE;AAClC,SAAC,CAAC;;AAGJ;;;;;AAKG;AACH,IAAA,QAAQ,CAAC,CAAA,GAAY,IAAI,EAAE,IAAY,IAAI,EAAA;QACzC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;;AAGnC;;;;AAIG;IACH,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAO,CAAC;;AAGxC;;;AAGG;IACH,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAoB,CAAC;;AAG3D;;;AAGG;IACH,aAAa,GAAA;QACX,OAAO,IAAI,CAAC,kBAAkB;;IAGhC,kBAAkB,GAAA;QAChB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;;AAGvC;;;AAGG;AACH,IAAA,gBAAgB,CAAC,KAAU,EAAA;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;;AAG1B,IAAA,UAAU,CAAC,UAAmB,EAAA;AAC5B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;;8GAtExB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAArB,qBAAqB,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC;;;ACED;;;;;AAKG;MAEU,oBAAoB,CAAA;AADjC,IAAA,WAAA,GAAA;AAGU,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,OAAO,EAAE;AAuB9C;AArBC;;;AAGG;IACH,aAAa,GAAA;AACX,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,QAAwC,KAAI;AACjE,YAAA,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAsB;AAClD,YAAA,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC;YAC5B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC;AAE7C,YAAA,OAAO,MAAM,QAAQ,CAAC,QAAQ,EAAE;AAClC,SAAC,CAAC;;AAGJ;;;AAGG;IACH,eAAe,GAAA;QACb,OAAO,IAAI,CAAC,qBAAqB;;8GAvBxB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAApB,oBAAoB,EAAA,CAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC;;;ACvCD;;;;AAIG;MAeU,cAAc,CAAA;8GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YANvB,YAAY;;YAEZ,WAAW;YACX,YAAY,CAAA,EAAA,CAAA,CAAA;AAGH,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YANvB,YAAY;;YAEZ,WAAW;YACX,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAGH,cAAc,EAAA,UAAA,EAAA,CAAA;kBAR1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;;wBAEZ,WAAW;wBACX,YAAY;AACb,qBAAA;AACF,iBAAA;;;ACZD;;AAEK;AACC,MAAO,WAAY,SAAQ,SAAS,CAAA;IAGxC,WACY,CAAA,OAAoB,EACpB,OAA6B,EAC7B,MAAc,EACd,QAAkB,EAC5B,YAAY,EAAA;QACZ,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC;QAL7C,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAGlB,IAAI,CAAC,4BAA4B,EAAE;;IAGrC,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE;QACrC,IAAI,CAAC,OAAO,EAAE;;IAGhB,4BAA4B,GAAA;AAC1B,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE;;IAG5B,4BAA4B,GAAA;QACpC,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,QAAQ,CAAC,aAA4B;;AAE7E;AAGK,MAAO,yBAA0B,SAAQ,gBAAgB,CAAA;AAC7D,IAAA,WAAA,CACY,OAA6B,EAC7B,MAAc,EACK,QAAQ,EAAA;AACrC,QAAA,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC;QAHtB,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAM,CAAA,MAAA,GAAN,MAAM;QACa,IAAQ,CAAA,QAAA,GAAR,QAAQ;;IAIvC,MAAM,CAAC,OAAoB,EAAE,oBAA8B,EAAA;AACzD,QAAA,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC;;AATtF,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,4EAI1B,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAJV,yBAAyB,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC;;0BAKI,MAAM;2BAAC,WAAW;;;ACrCjB,MAAO,iBAAqB,SAAQ,eAAkB,CAAA;AAAG;MAElD,+BAA+B,CAAA;AAC1C,IAAA,MAAM,CAAC,KAAyB,EAAA;AAC9B,QAAA,OAAO,IAAI,iBAAiB,CAAI,KAAK,CAAC;;AAEzC;;ACNK,MAAO,4BAAgC,SAAQ,0BAA6B,CAAA;AAAG;MAExE,0CAA0C,CAAA;AACrD,IAAA,MAAM,CAAC,KAAyB,EAAA;AAC9B,QAAA,OAAO,IAAI,4BAA4B,CAAI,KAAK,CAAC;;AAEpD;AAED,IAAY,0BAGX;AAHD,CAAA,UAAY,0BAA0B,EAAA;AACpC,IAAA,0BAAA,CAAA,0BAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,CAAA,GAAA,cAAiB;AACjB,IAAA,0BAAA,CAAA,0BAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAgB;AAClB,CAAC,EAHW,0BAA0B,KAA1B,0BAA0B,GAGrC,EAAA,CAAA,CAAA;;ACPK,MAAO,cAAe,SAAQ,YAAY,CAAA;8GAAnC,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAd,cAAc,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B;;MAIY,YAAY,CAAA;AACvB,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO;AACL,YAAA,QAAQ,EAAE,YAAY;AACtB,YAAA,SAAS,EAAE;gBACT,yBAAyB;gBACzB,+BAA+B;gBAC/B,0CAA0C;AAC1C,gBAAA,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE;AACpD,aAAA;SACF;;8GAVQ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAZ,YAAY,EAAA,CAAA,CAAA;+GAAZ,YAAY,EAAA,CAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,QAAQ;mBAAC,EAAE;;;ACqBN,MAAO,iBAAkB,SAAQ,SAAS,CAAA;8GAAnC,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,YAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAOK,MAAO,uBAAwB,SAAQ,eAAe,CAAA;8GAA/C,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAGK,MAAO,iBAA2B,SAAQ,eAAkB,CAAA;AAAG;AAG/D,MAAO,SAAU,SAAQ,OAAO,CAAA;8GAAzB,SAAS,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAT,SAAS,EAAA,CAAA,CAAA;;2FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBADrB;;AAMK,MAAO,wBAAyB,SAAQ,sBAAsB,CAAA;8GAAvD,wBAAwB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAxB,wBAAwB,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC;;AAGK,MAAO,gBAA0B,SAAQ,cAAiB,CAAA;AAC9D,IAAA,WAAA,CAAY,QAAwB,EAAE,gBAAmC,EAAE,OAAW,EAAA;AACpF,QAAA,KAAK,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,CAAC;;AAE7C;AAGK,MAAO,kBAAmB,SAAQ,gBAAgB,CAAA;8GAA3C,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAlB,kBAAkB,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B;;AAGK,MAAO,mCAAoC,SAAQ,iCAAiC,CAAA;AAAG;AAEvF,MAAO,gBAAiB,SAAQ,cAAc,CAAA;AAAG;AAYvD,MAAM,WAAW,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC;AAEjD;;;AAGK;MAMQ,kBAAkB,CAAA;AAC7B,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO;AACL,YAAA,QAAQ,EAAE,kBAAkB;AAC5B,YAAA,SAAS,EAAE,CAAC,SAAS,EAAE,wBAAwB,CAAC;SACjD;;8GALQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EApDlB,YAAA,EAAA,CAAA,iBAAiB,EAMjB,uBAAuB,aAmCf,aAAa,EAAE,YAAY,CAAA,EAAA,OAAA,EAAA,CAA3B,aAAa,EAAE,YAAY,EAzCnC,iBAAiB,EAMjB,uBAAuB,CAAA,EAAA,CAAA,CAAA;AA8CvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EAJhB,OAAA,EAAA,CAAA,WAAW,EAPL,aAAa,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAWnC,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,GAAG,WAAW,CAAC;oBACzB,OAAO,EAAE,CAAC,GAAG,WAAW,EAAE,iBAAiB,EAAE,uBAAuB,CAAC;AACrE,oBAAA,YAAY,EAAE,CAAC,iBAAiB,EAAE,uBAAuB,CAAC;AAC3D,iBAAA;;;IC9EW;AAAZ,CAAA,UAAY,uBAAuB,EAAA;AACjC,IAAA,uBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,uBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,uBAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC7B,IAAA,uBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AAC3B,CAAC,EALW,uBAAuB,KAAvB,uBAAuB,GAKlC,EAAA,CAAA,CAAA;IAEW;AAAZ,CAAA,UAAY,wBAAwB,EAAA;AAClC,IAAA,wBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,wBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,wBAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC7B,IAAA,wBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC7B,CAAC,EALW,wBAAwB,KAAxB,wBAAwB,GAKnC,EAAA,CAAA,CAAA;MAKY,gBAAgB,CAAA;AAC3B,IAAA,WAAA,CAAsB,eAAyC,EAAA;QAAzC,IAAe,CAAA,eAAA,GAAf,eAAe;;AAErC,IAAA,iBAAiB,CAAC,QAA0B,EAAA;AAC1C,QAAA,IAAI,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,QAAQ,CAAC,QAAmC,CAAC,EAAE;AACxF,YAAA,OAAO,QAAmC;;AAG5C,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE;AAChC,YAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,QAAoC,CAAC;;aACrE;AACL,YAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,QAAoC,CAAC;;;AAI9E,IAAA,kBAAkB,CAAC,QAA0B,EAAA;AAC3C,QAAA,IAAI,MAAM,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,QAAQ,CAAC,QAAoC,CAAC,EAAE;AAC1F,YAAA,OAAO,QAAoC;;AAG7C,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE;AAChC,YAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,QAAmC,CAAC;;aACrE;AACL,YAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,QAAmC,CAAC;;;AAI9E,IAAA,aAAa,CAAC,QAA0B,EAAA;QACtC,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;QAExD,OAAO,eAAe,KAAK,uBAAuB,CAAC,OAAO,IAAI,eAAe,KAAK,uBAAuB,CAAC,SAAS;;AAGrH,IAAA,eAAe,CAAC,QAA0B,EAAA;QACxC,MAAM,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AAE1D,QAAA,QACE,gBAAgB,KAAK,wBAAwB,CAAC,SAAS;AACvD,YAAA,gBAAgB,KAAK,wBAAwB,CAAC,YAAY;;AAIpD,IAAA,wBAAwB,CAAC,QAAkC,EAAA;QACnE,QAAQ,QAAQ;YACd,KAAK,wBAAwB,CAAC,SAAS;gBACrC,OAAO,uBAAuB,CAAC,OAAO;YACxC,KAAK,wBAAwB,CAAC,QAAQ;gBACpC,OAAO,uBAAuB,CAAC,SAAS;YAC1C,KAAK,wBAAwB,CAAC,YAAY;gBACxC,OAAO,uBAAuB,CAAC,UAAU;YAC3C,KAAK,wBAAwB,CAAC,WAAW;gBACvC,OAAO,uBAAuB,CAAC,YAAY;;;AAIvC,IAAA,wBAAwB,CAAC,QAAkC,EAAA;QACnE,QAAQ,QAAQ;YACd,KAAK,wBAAwB,CAAC,SAAS;gBACrC,OAAO,uBAAuB,CAAC,SAAS;YAC1C,KAAK,wBAAwB,CAAC,QAAQ;gBACpC,OAAO,uBAAuB,CAAC,OAAO;YACxC,KAAK,wBAAwB,CAAC,YAAY;gBACxC,OAAO,uBAAuB,CAAC,YAAY;YAC7C,KAAK,wBAAwB,CAAC,WAAW;gBACvC,OAAO,uBAAuB,CAAC,UAAU;;;AAIrC,IAAA,yBAAyB,CAAC,QAAiC,EAAA;QACnE,QAAQ,QAAQ;YACd,KAAK,uBAAuB,CAAC,SAAS;gBACpC,OAAO,wBAAwB,CAAC,QAAQ;YAC1C,KAAK,uBAAuB,CAAC,OAAO;gBAClC,OAAO,wBAAwB,CAAC,SAAS;YAC3C,KAAK,uBAAuB,CAAC,YAAY;gBACvC,OAAO,wBAAwB,CAAC,WAAW;YAC7C,KAAK,uBAAuB,CAAC,UAAU;gBACrC,OAAO,wBAAwB,CAAC,YAAY;;;AAIxC,IAAA,yBAAyB,CAAC,QAAiC,EAAA;QACnE,QAAQ,QAAQ;YACd,KAAK,uBAAuB,CAAC,SAAS;gBACpC,OAAO,wBAAwB,CAAC,SAAS;YAC3C,KAAK,uBAAuB,CAAC,OAAO;gBAClC,OAAO,wBAAwB,CAAC,QAAQ;YAC1C,KAAK,uBAAuB,CAAC,YAAY;gBACvC,OAAO,wBAAwB,CAAC,YAAY;YAC9C,KAAK,uBAAuB,CAAC,UAAU;gBACrC,OAAO,wBAAwB,CAAC,WAAW;;;8GA1FtC,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAhB,gBAAgB,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B;;;ACbK,MAAO,UAAW,SAAQ,QAAQ,CAAA;8GAA3B,UAAU,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAV,UAAU,EAAA,UAAA,EAHT,MAAM,EAAA,QAAA,EACR,QAAQ,EAAA,CAAA,CAAA;;2FAEP,UAAU,EAAA,UAAA,EAAA,CAAA;kBAJtB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AAClB,oBAAA,QAAQ,EAAE,QAAQ;AACnB,iBAAA;;;ACKK,MAAO,sBAAuB,SAAQ,aAAa,CAAA;IACvD,WAAY,CAAA,QAAoB,EAAE,MAAc,EAC1B,KAA2B,EAC3B,MAA6B,EAClB,QAAa,EAAA;AAC5C,QAAA,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;QAHb,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAM,CAAA,MAAA,GAAN,MAAM;;IAK5B,eAAe,GAAA;AACb,QAAA,IAAI,GAAG;AACP;;;AAGI;AACJ,QAAA,IAAI,CAAC,KAAK,CAAC,aAAa;aACrB,IAAI,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;aAC5F,SAAS,CAAC,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC;AAChC,QAAA,OAAO,GAAG;;IAGZ,yBAAyB,GAAA;AACvB,QAAA,IAAI,GAAG;AACP;;;AAGI;AACJ,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW;aACpB,IAAI,CAAC,GAAG,CAAC,CAAC,QAA0B,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;aACjF,SAAS,CAAC,QAAQ,IAAI,GAAG,GAAG,QAAQ,CAAC;AACxC,QAAA,OAAO,GAAG;;AA7BD,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,kIAIb,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAJpB,sBAAsB,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC;;0BAKc,MAAM;2BAAC,WAAW;;;ACXjC,SAAS,wBAAwB,GAAA;IAC/B,MAAM,IAAI,KAAK,CAAC,CAAA;AACuE,wFAAA,CAAA,CAAC;AAC1F;AAEA;;;;;;AAMK;AAEC,MAAO,yBAA0B,SAAQ,kBAAkB,CAAA;AAG/D,IAAA,YAAY,CAAC,SAAsB,EAAA;AACjC,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;;IAG5B,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;;IAGrB,gBAAgB,GAAA;QACxB,IAAI,CAAC,cAAc,EAAE;QAErB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC;AACrD,QAAA,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,uBAAuB,CAAC;AAChD,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC;AACrC,QAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS;;IAG1B,cAAc,GAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,YAAA,wBAAwB,EAAE;;;8GAvBnB,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAzB,yBAAyB,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC;;;ICOW;AAAZ,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,YAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,YAAA,CAAA,kBAAA,CAAA,GAAA,kBAAqC;AACrC,IAAA,YAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,YAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AAC3B,CAAC,EANW,YAAY,KAAZ,YAAY,GAMvB,EAAA,CAAA,CAAA;IAiBW;AAAZ,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,UAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,UAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,UAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC7B,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,UAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,UAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC/B,CAAC,EAfW,UAAU,KAAV,UAAU,GAerB,EAAA,CAAA,CAAA;AAED,MAAM,SAAS,GAAG;AAChB,IAAA,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,EAAA;QACvB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE;KACrG;AACD,IAAA,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,EAAA;QACxB,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE;KACtG;AACD,IAAA,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,EAAA;QACtB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE;KACtG;AACD,IAAA,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,EAAA;QACrB,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE;KACvG;AACD,IAAA,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,EAAA;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;KACrC;AACD,IAAA,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,EAAA;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;KACtC;AACD,IAAA,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,EAAA;QACzB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE;KACrG;AACD,IAAA,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,MAAM,EAAA;QAC5B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE;KAC/F;AACD,IAAA,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,MAAM,EAAA;QAC9B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE;KAChG;AACD,IAAA,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,MAAM,EAAA;QAC5B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE;KACpG;AACD,IAAA,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,EAAA;QAC3B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE;KACtG;AACD,IAAA,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,MAAM,EAAA;QAC9B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE;KAChG;AACD,IAAA,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,EAAA;QAC3B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE;KACjG;AACD,IAAA,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,EAAA;QACzB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE;KACrG;CACF;AAED,MAAM,sBAAsB,GAAG;AAC7B,IAAA,GAAG,SAAS;AACZ,IAAA,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,EAAA;QACvB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE;KACrG;AACD,IAAA,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,EAAA;QACtB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE;KACtG;AACD,IAAA,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,EAAA;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;KACtC;AACD,IAAA,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,EAAA;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;KACrC;CACF;AAED,MAAM,2BAA2B,GAAG;AAClC,IAAA,UAAU,CAAC,GAAG;AACd,IAAA,UAAU,CAAC,OAAO;AAClB,IAAA,UAAU,CAAC,SAAS;AACpB,IAAA,UAAU,CAAC,KAAK;AAChB,IAAA,UAAU,CAAC,SAAS;AACpB,IAAA,UAAU,CAAC,YAAY;AACvB,IAAA,UAAU,CAAC,MAAM;AACjB,IAAA,UAAU,CAAC,YAAY;AACvB,IAAA,UAAU,CAAC,UAAU;AACrB,IAAA,UAAU,CAAC,GAAG;AACd,IAAA,UAAU,CAAC,UAAU;AACrB,IAAA,UAAU,CAAC,OAAO;CACnB;AACD,MAAM,mBAAmB,GAAG;AAC1B,IAAA,UAAU,CAAC,GAAG;AACd,IAAA,UAAU,CAAC,SAAS;AACpB,IAAA,UAAU,CAAC,OAAO;AAClB,IAAA,UAAU,CAAC,GAAG;AACd,IAAA,UAAU,CAAC,OAAO;AAClB,IAAA,UAAU,CAAC,UAAU;AACrB,IAAA,UAAU,CAAC,MAAM;AACjB,IAAA,UAAU,CAAC,UAAU;AACrB,IAAA,UAAU,CAAC,YAAY;AACvB,IAAA,UAAU,CAAC,KAAK;AAChB,IAAA,UAAU,CAAC,YAAY;AACvB,IAAA,UAAU,CAAC,SAAS;CACrB;AACD,MAAM,kBAAkB,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC;AAC9D,MAAM,oBAAoB,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC;AAE/D,SAAS,gBAAgB,CAAC,EAAuB,EAAE,EAAuB,EAAA;AACxE,IAAA,QACE,EAAE,CAAC,OAAO,KAAK,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,KAAK,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,QAAQ,KAAK,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,QAAQ,KAAK,EAAE,CAAC,QAAQ;AAExH;AAEA;;;AAGK;AACC,MAAO,qCACX,SAAQ,mCAAmC,CAAA;AAD7C,IAAA,WAAA,GAAA;;QAKY,IAAO,CAAA,OAAA,GAAW,EAAE;QAMrB,IAAc,CAAA,cAAA,GAA2B,IAAI,CAAC,eAAe,CAAC,IAAI,CACzE,GAAG,CAAC,CAAC,cAAgD,KAAK,cAAc,CAAC,cAAc,CAAC,EACxF,GAAG,CAAC,CAAC,cAAwC,KAAI;YAC/C,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAI;AAC1D,gBAAA,OAAO,gBAAgB,CAAC,iBAAiB,EAAE,cAAc,CAAC;aAC3D,CAAC,CAAC,GAAG;SACP,CAAC,CACH;;AAED,IAAA,MAAM,CAAC,UAAwB,EAAA;AAC7B;;;AAGK;QACL,IAAI,CAAC,cAAc,EAAE;AACrB,QAAA,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;;AAG1B,IAAA,SAAS,CAAC,SAA4B,EAAA;AACpC,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;AAC3B,QAAA,OAAO,IAAI;;IAGb,KAAK,GAAA;QACH,IAAI,CAAC,cAAc,EAAE;QACrB,KAAK,CAAC,KAAK,EAAE;;AAGf,IAAA,QAAQ,CAAC,QAAoB,EAAA;AAC3B,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;AACzB,QAAA,OAAO,IAAI;;AAGb,IAAA,UAAU,CAAC,UAAwB,EAAA;AACjC,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU;AAC7B,QAAA,OAAO,IAAI;;AAGb,IAAA,MAAM,CAAC,MAAc,EAAA;AACnB,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AACrB,QAAA,OAAO,IAAI;;IAGH,cAAc,GAAA;AACtB,QAAA,MAAM,SAAS,GAAiB,IAAI,CAAC,eAAe,EAAE;AACtD,QAAA,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC;AACtC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAK,iBAAiB,CAAC,CAAC;;IAGnF,eAAe,GAAA;AACvB,QAAA,QAAQ,IAAI,CAAC,WAAW;YACtB,KAAK,YAAY,CAAC,IAAI;AACpB,gBAAA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;YACzB,KAAK,YAAY,CAAC,SAAS;AACzB,gBAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,mBAAmB,CAAC;YAC5D,KAAK,YAAY,CAAC,gBAAgB;AAChC,gBAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,2BAA2B,CAAC;YACpE,KAAK,YAAY,CAAC,UAAU;AAC1B,gBAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,oBAAoB,CAAC;YAC7D,KAAK,YAAY,CAAC,QAAQ;AACxB,gBAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,kBAAkB,CAAC;;;AAIrD,IAAA,oBAAoB,CAAC,QAAoB,EAAA;AACjD,QAAA,IAAI,QAAQ,KAAK,UAAU,CAAC,IAAI,EAAE;AAChC,YAAA,OAAO,IAAI,CAAC,UAAU,KAAK,iBAAiB,CAAC,GAAG,GAAG,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG;;AAEtF,QAAA,IAAI,QAAQ,KAAK,UAAU,CAAC,KAAK,EAAE;AACjC,YAAA,OAAO,IAAI,CAAC,UAAU,KAAK,iBAAiB,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,GAAG,UAAU,CAAC,KAAK;;AAEtF,QAAA,OAAO,QAAQ;;AAGP,IAAA,sBAAsB,CAAC,SAAuB,EAAA;AACtD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,KAAK,iBAAiB,CAAC,GAAG,GAAG,sBAAsB,GAAG,SAAS;AAEnG,QAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,MAAM;AACnD,YAAA,GAAG,EAAE,QAAQ;YACb,iBAAiB,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAwB;AAC/E,SAAA,CAAC,CAAC;;AAGK,IAAA,yBAAyB,CAAC,SAAuB,EAAA;;QAEzD,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC;QAC/D,MAAM,kBAAkB,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC;QAC3D,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,kBAAkB,CAAC;QACrD,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC;AACzD,QAAA,OAAO,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC;;AAEtC;AAEK,MAAO,wBAAyB,SAAQ,sBAAsB,CAAA;AAClE,IAAA,QAAQ,CAAC,QAAiC,EAAA;QACxC,QAAQ,QAAQ;YACd,KAAK,uBAAuB,CAAC,SAAS;AACpC,gBAAA,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE;YAE1B,KAAK,uBAAuB,CAAC,OAAO;AAClC,gBAAA,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE;YAE3B,KAAK,uBAAuB,CAAC,YAAY;AACvC,gBAAA,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;YAE7B,KAAK,uBAAuB,CAAC,UAAU;AACrC,gBAAA,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;;;AAGnC;MAGY,wBAAwB,CAAA;IACnC,WACiC,CAAA,QAAQ,EAC7B,aAAqC,EACrC,QAAoB,EACpB,eAAyC,EACzC,gBAA2C,EAAA;QAJtB,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAC7B,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;;IAG5B,MAAM,GAAA;QACJ,OAAO,IAAI,wBAAwB,EAAE;;AAGvC,IAAA,WAAW,CAAC,UAAsB,EAAA;QAChC,OAAO,IAAI,qCAAqC,CAC9C,UAAU,EACV,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,gBAAgB;aAEpB,sBAAsB,CAAC,KAAK;aAC5B,QAAQ,CAAC,KAAK,CAAC;;AAtBT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,kBAEzB,WAAW,EAAA,EAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,yBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAFV,wBAAwB,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC;;0BAGI,MAAM;2BAAC,WAAW;;;MCnQV,8BAA8B,CAAA;AAGzC,IAAA,IACI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,GAAG;;AAGzC,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,SAAS;;AAG/C,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,OAAO;;AAG7C,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,GAAG;;AAG/E,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,OAAO;;AAG7C,IAAA,IACI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,UAAU;;AAGhD,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,MAAM;;AAG5C,IAAA,IACI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,YAAY;;AAGlD,IAAA,IACI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,UAAU;;AAGhD,IAAA,IACI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,KAAK;;AAGhF,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,SAAS;;AAG/C,IAAA,IACI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,YAAY;;8GA5DvC,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,iqBAH7B,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAGH,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAJ1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAEU,QAAQ,EAAA,CAAA;sBAAhB;gBAGG,GAAG,EAAA,CAAA;sBADN,WAAW;uBAAC,sBAAsB;gBAM/B,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,4BAA4B;gBAMrC,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,0BAA0B;gBAMnC,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,wBAAwB;gBAMjC,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,0BAA0B;gBAMnC,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,6BAA6B;gBAMtC,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,yBAAyB;gBAMlC,WAAW,EAAA,CAAA;sBADd,WAAW;uBAAC,+BAA+B;gBAMxC,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,6BAA6B;gBAMtC,IAAI,EAAA,CAAA;sBADP,WAAW;uBAAC,uBAAuB;gBAMhC,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,4BAA4B;gBAMrC,WAAW,EAAA,CAAA;sBADd,WAAW;uBAAC,+BAA+B;;MAejC,2BAA2B,CAAA;AAStC,IAAA,WAAA,CAAsB,GAAqB,EACrB,QAAkB,EAAU,iBAAoC,EAAA;QADhE,IAAG,CAAA,GAAA,GAAH,GAAG;QACH,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAAoB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QALnE,IAAU,CAAA,UAAA,GAAY,KAAK;;AAQ3B,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO;;IAGvB,qBAAqB,CAAI,MAA4B,EAAE,OAAgB,EAAA;QACrE,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,wBAAwB,CAAC;QAC3E,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,MAAM,CAAC;QACpE,IAAI,OAAO,EAAE;YACX,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC;;AAE/C,QAAA,YAAY,CAAC,iBAAiB,CAAC,YAAY,EAAE;AAC7C,QAAA,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE;AAC9C,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,OAAO,YAAY;;AAGrB,IAAA,oBAAoB,CAAI,MAA2B,EAAA;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,MAAM,CAAC;QAClE,WAAW,CAAC,aAAa,EAAE;AAC3B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,OAAO,WAAW;;AAGpB,IAAA,mBAAmB,CAAC,OAAe,EAAA;AACjC,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACtB,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AACrC,QAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;AACtC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;;IAGxB,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE;AACnC,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;;AAE5B,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;;AAGf,IAAA,mBAAmB,CAAC,GAA6B,EAAA;QACzD,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,OAAO,CAAC;YACrD,CAAC,wBAAwB,EAAE,GAAG,CAAC;AAChC,SAAA,CAAC,CAAC;;8GAtDM,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA3B,2BAA2B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAG3B,uBAAuB,EATtB,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;AAGX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGU,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBARvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE;;;AAGX,EAAA,CAAA;AACC,oBAAA,UAAU,EAAE;AACf,iBAAA;4IAIuD,YAAY,EAAA,CAAA;sBAAjE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,uBAAuB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;AC5FtC,SAAA,KAAK,CAAI,SAA0B,EAAE,gBAAwB,EAAA;IAC3E,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AACnD,IAAA,SAAS,CAAC,iBAAiB,CAAC,aAAa,EAAE;AAC3C,IAAA,OAAO,SAAS;AAClB;AAEM,SAAU,eAAe,CAC7B,GAAiB,EACjB,SAA6B,EAC7B,OAAe,EACf,wBAAmD,EAAA;AAEnD,IAAA,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,iBAAiB,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,wBAAwB,CAAC,CAAC;AACvG,IAAA,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC;AAC5B,IAAA,OAAO,YAAY;AACrB;MAGa,gBAAgB,CAAA;IAC3B,WAAsB,CAAA,OAAkB,EAAY,eAAyC,EAAA;QAAvE,IAAO,CAAA,OAAA,GAAP,OAAO;QAAuB,IAAe,CAAA,eAAA,GAAf,eAAe;;AAGnE,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB;;AAGtC,IAAA,MAAM,CAAC,MAAwB,EAAA;QAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;AAC9C,QAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB;AACnC,aAAA,SAAS,CAAC,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACjD,QAAA,OAAO,UAAU;;8GAZR,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAhB,gBAAgB,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B;;;ACvBK,MAAO,yBAA0B,SAAQ,gBAAgB,CAAA;AAC7D,IAAA,WAAA,CAAY,MAAc,EACd,QAAoB,EACV,aAAoC,EACzB,QAAa,EAAA;AAC5C,QAAA,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC;QAFb,IAAa,CAAA,aAAA,GAAb,aAAa;;AAKnC,IAAA,QAAQ,CAAC,aAAsB,EAAA;AAC7B,QAAA,OAAO,KAAK,CACV,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,EAC7B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAC9B;;AAZQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,iGAIhB,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAJpB,yBAAyB,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC;;0BAKc,MAAM;2BAAC,WAAW;;;ACLjC;;;AAGK;AAEC,MAAO,4BAA6B,SAAQ,mBAAmB,CAAA;AACnE,IAAA,WAAA,CAAiC,QAAa,EAClC,aAAqC,EAC3B,aAAoC,EAAA;AACxD,QAAA,KAAK,CAAC,aAAa,EAAE,QAAQ,CAAC;QADV,IAAa,CAAA,aAAA,GAAb,aAAa;;IAInC,MAAM,GAAA;QACJ,KAAK,CAAC,MAAM,EAAE;AACd,QAAA,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC;;IAGtC,OAAO,GAAA;QACL,KAAK,CAAC,OAAO,EAAE;AACf,QAAA,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC;;AAd1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,kBACnB,WAAW,EAAA,EAAA,EAAA,KAAA,EAAAP,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAQ,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHADpB,4BAA4B,EAAA,CAAA,CAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC;;0BAEc,MAAM;2BAAC,WAAW;;AAkB3B,MAAO,uBAAwB,SAAQ,qBAAqB,CAAA;IAChE,WAAsB,CAAA,aAAoC,EACpC,gBAAkC,EAClC,aAAqC,EACrC,MAAc,EACO,QAAQ,EAAA;QACjD,KAAK,CAAC,gBAAgB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC;QALpC,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAM,CAAA,MAAA,GAAN,MAAM;QACe,IAAQ,CAAA,QAAA,GAAR,QAAQ;AAInD,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,IAAI,4BAA4B,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC;;AAT1F,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,6IAKd,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHALpB,uBAAuB,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC;;0BAMc,MAAM;2BAAC,WAAW;;;MC1BpB,kBAAkB,CAAA;AAC7B,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO;AACL,YAAA,QAAQ,EAAE,kBAAkB;AAC5B,YAAA,SAAS,EAAE;gBACT,sBAAsB;gBACtB,yBAAyB;gBACzB,4BAA4B;gBAC5B,yBAAyB;gBACzB,uBAAuB;AACvB,gBAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,yBAAyB,EAAE;AACrE,gBAAA,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,yBAAyB,EAAE;AACvE,gBAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,yBAAyB,EAAE;AACrE,gBAAA,EAAE,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,uBAAuB,EAAE;AACzE,aAAA;SACF;;8GAfQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAlB,kBAAkB,EAAA,CAAA,CAAA;+GAAlB,kBAAkB,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,QAAQ;mBAAC,EAAE;;;ICJA;AAAZ,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACjB,CAAC,EANW,SAAS,KAAT,SAAS,GAMpB,EAAA,CAAA,CAAA;AAcD;;;AAGK;MACiB,qBAAqB,CAAA;IACzC,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;;AAKd,IAAA,sBAAsB,CAAC,OAAgB,EAAA;AAC/C,QAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;;AAGtD,IAAA,mBAAmB,CAAC,OAAgB,EAAA;AAC5C,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;;AAGpD,IAAA,QAAQ,CAAC,OAAgB,EAAA;QACjC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;;AAG1B,IAAA,aAAa,CAAC,OAAgB,EAAA;AACtC,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC;;AAMtF,IAAA,WAAA,CACY,QAAkB,EAClB,IAAiB,EACjB,SAAkC,EAAA;QAFlC,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAI,CAAA,IAAA,GAAJ,IAAI;QACJ,IAAS,CAAA,SAAA,GAAT,SAAS;AAxBX,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAQ;;AA0B3C;AAED;;;;;AAKK;AACC,MAAO,sBAAuB,SAAQ,qBAAqB,CAAA;AAAjE,IAAA,WAAA,GAAA;;;;;;QAKY,IAAM,CAAA,MAAA,GAAiCC,SAAmB,CAAQ,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CACtG,GAAG,CAAC,CAAC,KAAY,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAiB,CAAC,EAAE,KAAK,CAAqB,CAAC,EAC/G,KAAK,EAAE,EACP,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B;AAEQ,QAAA,IAAA,CAAA,KAAK,GAAsB,IAAI,CAAC,MAAM,CAAC,IAAI,CAClD,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,UAAU,CAAC,EACpC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,KAAK,CAAC,EACzB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B;QAEQ,IAAK,CAAA,KAAA,GAAsB,IAAI,CAAC,MAAM,CAAC,IAAI,CAClD,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAiB,CAAC,CAAC,EAC5F,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,KAAK,CAAC,EACzB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B;;AACF;AAED;;;;AAIK;AACC,MAAO,sBAAuB,SAAQ,qBAAqB,CAAA;AAAjE,IAAA,WAAA,GAAA;;QACE,IAAK,CAAA,KAAA,GAAsBA,SAAmB,CAAQ,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,IAAI,CACjF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;;;QAG/B,KAAK,CAAC,GAAG,CAAC;;QAEV,SAAS,CAACA,SAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,EACvD,MAAM,EAAE,EACR,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B;AAED,QAAA,IAAA,CAAA,KAAK,GAAsBA,SAAmB,CAAQ,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,IAAI,CACjF,SAAS,CAAC,MACRA,SAAmB,CAAQ,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,IAAI,CACzD,YAAY,CAAC,GAAG,CAAC,EACjB,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EACnC,MAAM,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,MAAiB,CAAC,CAAC,CACxE,CACF,EACD,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B;;AACF;AAED;;;;AAIK;AACC,MAAO,qBAAsB,SAAQ,qBAAqB,CAAA;AAAhE,IAAA,WAAA,GAAA;;QACE,IAAK,CAAA,KAAA,GAAsBA,SAAmB,CAAQ,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,IAAI;;;QAGjF,KAAK,CAAC,GAAG,CAAC;;QAEV,SAAS,CAACA,SAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,EACvD,MAAM,EAAE,EACR,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B;AAED,QAAA,IAAA,CAAA,KAAK,GAAsBA,SAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;;AACzG;AAED;;;;AAIK;AACC,MAAO,sBAAuB,SAAQ,qBAAqB,CAAA;AAAjE,IAAA,WAAA,GAAA;;AACY,QAAA,IAAA,CAAA,SAAS,GAAsBA,SAAmB,CAAQ,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,IAAI,CAC7F,SAAS,CAAC,MACRA,SAAmB,CAAQ,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,IAAI,CACvD,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EACnC,MAAM,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,MAAiB,CAAC,CAAC,CACxE,CACF,EACD,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B;AAES,QAAA,IAAA,CAAA,QAAQ,GAAsBA,SAAmB,CAAQ,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,CACzF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EAC/B,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B;QAES,IAAS,CAAA,SAAA,GAAsBA,SAAmB,CAAQ,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAC9F,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;AAChC;;;AAGG;AACH,QAAA,MAAM,CAAC,CAAC,KAAK,KAAI;YACf,IAAI,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,MAAiB,CAAC,EAAE;gBACxD,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;;AAEjE,YAAA,OAAO,KAAK;SACb,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B;QAES,IAAY,CAAA,YAAA,GAAsBA,SAAmB,CAAQ,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,IAAI,CACnG,MAAM,CAAC,CAAC,KAAY,KAAM,KAAuB,CAAC,OAAO,KAAK,CAAC,CAAC,EAChE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EAChC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B;AAED,QAAA,IAAA,CAAA,KAAK,GAAsBC,KAAe,CAACD,SAAmB,CAAQ,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC9G,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EAC/B,YAAY,CAAC,GAAG,CAAC;;QAEjB,SAAS,CAACA,SAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,EACrD,MAAM,EAAE,EACR,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B;QAED,IAAK,CAAA,KAAA,GAAGC,KAAe,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;;AAC5G;AAED;;AAEK;AACC,MAAO,qBAAsB,SAAQ,qBAAqB,CAAA;AAAhE,IAAA,WAAA,GAAA;;QACE,IAAK,CAAA,KAAA,GAAsB,KAAK;QAChC,IAAK,CAAA,KAAA,GAAsB,KAAK;;AACjC;MAGY,+BAA+B,CAAA;AAK1C,IAAA,WAAA,CAA2C,SAAS,EAAA;QAAT,IAAS,CAAA,SAAA,GAAT,SAAS;;AAEpD,IAAA,OAAO,CAAC,OAAkB,EAAA;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;AACvB,QAAA,OAAO,IAAI;;AAGb,IAAA,IAAI,CAAC,IAAiB,EAAA;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,QAAA,OAAO,IAAI;;AAGb,IAAA,SAAS,CAAC,SAAkC,EAAA;AAC1C,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;AAC3B,QAAA,OAAO,IAAI;;IAGb,KAAK,GAAA;AACH,QAAA,QAAQ,IAAI,CAAC,QAAQ;YACnB,KAAK,SAAS,CAAC,KAAK;AAClB,gBAAA,OAAO,IAAI,sBAAsB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC;YAChF,KAAK,SAAS,CAAC,IAAI;AACjB,gBAAA,OAAO,IAAI,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC;YAC/E,KAAK,SAAS,CAAC,KAAK;AAClB,gBAAA,OAAO,IAAI,sBAAsB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC;YAChF,KAAK,SAAS,CAAC,KAAK;AAClB,gBAAA,OAAO,IAAI,sBAAsB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC;YAChF,KAAK,SAAS,CAAC,IAAI;AACjB,gBAAA,OAAO,IAAI,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC;AAC/E,YAAA;AACE,gBAAA,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;;;AAnCzC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,+BAA+B,kBAKtB,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHALpB,+BAA+B,EAAA,CAAA,CAAA;;2FAA/B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAD3C;;0BAMc,MAAM;2BAAC,WAAW;;;MCrLpB,eAAe,CAAA;AAC1B,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO;AACL,YAAA,QAAQ,EAAE,eAAe;AACzB,YAAA,SAAS,EAAE;gBACT,wBAAwB;gBACxB,+BAA+B;gBAC/B,gBAAgB;gBAChB,gBAAgB;AAChB,gBAAA,GAAG,kBAAkB,CAAC,OAAO,EAAE,CAAC,SAAS;AACzC,gBAAA,GAAG,kBAAkB,CAAC,OAAO,EAAE,CAAC,SAAS;AACzC,gBAAA,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC,SAAS;AACpC,aAAA;SACF;;8GAbQ,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,iBATxB,8BAA8B;AAC9B,YAAA,2BAA2B,aAL3B,kBAAkB;AAClB,YAAA,cAAc,aAOd,kBAAkB;YAClB,kBAAkB;YAClB,2BAA2B,CAAA,EAAA,CAAA,CAAA;AAGlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAbxB,kBAAkB;AAClB,YAAA,cAAc,EAOd,kBAAkB;YAClB,kBAAkB,CAAA,EAAA,CAAA,CAAA;;2FAIT,eAAe,EAAA,UAAA,EAAA,CAAA;kBAf3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,kBAAkB;wBAClB,cAAc;AACf,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACZ,8BAA8B;wBAC9B,2BAA2B;AAC5B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,kBAAkB;wBAClB,kBAAkB;wBAClB,2BAA2B;AAC5B,qBAAA;AACF,iBAAA;;;AC3BD;;;;AAIG;MAOU,eAAe,CAAA;AAD5B,IAAA,WAAA,GAAA;AAEW,QAAA,IAAA,CAAA,YAAY,GAAwB,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;AAyB1G;AAvBC,IAAA,YAAY,CAAC,MAAiC,EAAA;QAC5C,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAA2B,CAAC;;AAGhE,IAAA,cAAc,CAAC,MAAiC,EAAA;AAC9C,QAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE;AACpC,YAAA,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;;AAGnC,QAAA,OAAO,KAAK;;AAGd,IAAA,cAAc,CAAC,MAAiC,EAAA;AAC9C,QAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE;YACpC,OAAO,CAAA,OAAA,EAAU,MAAM,CAAA,CAAE;;AAG3B,QAAA,OAAO,SAAS;;AAGR,IAAA,mBAAmB,CAAC,MAAiC,EAAA;QAC7D,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;;8GAxB7C,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAf,eAAe,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B;;;ACVD;;;;AAIG;AA6BG,SAAU,aAAa,CAAC,UAAkB,EAAA;AAC9C,IAAA,IAAI,iBAAiB,CAAC,UAAU,CAAC,EAAE;AACjC,QAAA,OAAO,MAAM;;;;;;AAOf,IAAA,OAAO,SAAS;AAClB;MASa,aAAa,CAAA;;AAGxB;;;;;;;;;AASG;AACH,IAAA,OAAO,OAAO,CAAC,cAAA,GAAiC,EAAE,IAAI,EAAE,SAAS,EAAE,EACpD,UAA+B,EAC/B,kBAAwC,EACxC,eAAmC,EAAA;QAEhD,OAAO;AACL,YAAA,QAAQ,EAAE,aAAa;AACvB,YAAA,SAAS,EAAE;gBACT,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,cAAc,IAAI,EAAE,EAAE;AAC7D,gBAAA,EAAE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,eAAe,EAAE;gBAC7D,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,IAAI,EAAE,EAAE;gBACrD,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,kBAAkB,IAAI,yBAAyB,EAAE;AAC5F,gBAAA,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE;AAC/C,gBAAA,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,CAAE,WAAW,CAAE,EAAE;gBACxE,kBAAkB;gBAClB,cAAc;gBACd,yBAAyB;gBACzB,gBAAgB;gBAChB,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,eAAe,IAAI,iBAAiB,CAAC,GAAG,EAAE;gBACpF,wBAAwB;gBACxB,qBAAqB;gBACrB,oBAAoB;AACpB,gBAAA,GAAG,eAAe,CAAC,OAAO,EAAE,CAAC,SAAS;gBACtC,eAAe;AAChB,aAAA;SACF;;8GAtCQ,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YALtB,YAAY,CAAA,EAAA,CAAA,CAAA;AAKH,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YALtB,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAKH,aAAa,EAAA,UAAA,EAAA,CAAA;kBAPzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;AACb,qBAAA;AACD,oBAAA,OAAO,EAAE,EACR;AACF,iBAAA;;;MCnDY,aAAa,CAAA;AACxB,IAAA,OAAO,KAAK,CAAC,KAAK,EAAE,MAAM,EAAA;QACxB,OAAO,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC;;AAGpD,IAAA,OAAO,IAAI,CAAC,KAAK,EAAE,MAAM,EAAA;QACvB,OAAO,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC;;AAGpD,IAAA,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAA;AAC/B,QAAA,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;AACjC,QAAA,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC;QAElC,IAAI,MAAM,GAAG,GAAG;AAChB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7B,YAAA,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1C,YAAA,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3C,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,SAAS,GAAG,UAAU,KAAK,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;AAC5F,YAAA,MAAM,IAAI,CAAC,GAAG,GAAG,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;;AAExC,QAAA,OAAO,MAAM;;AAGf,IAAA,OAAO,SAAS,CAAC,GAAG,EAAE,KAAK,EAAA;AACzB,QAAA,IAAI,CAAC;AACL,QAAA,IAAI,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AACxC,YAAA,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;AAC9B,YAAA,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AAClB,gBAAA,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;;YAE1C,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AACrB,YAAA,OAAO,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG;;AAE3F,QAAA,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC;;AAE7B;;IC7BW;AAAZ,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,cAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACf,CAAC,EAHW,cAAc,KAAd,cAAc,GAGzB,EAAA,CAAA,CAAA;;MCEY,UAAU,CAAA;AAErB,IAAA,WAAA,CAAsB,IAAI,EAAY,OAAY,EAAY,SAA+B,EAAE,EAAA;QAAzE,IAAI,CAAA,IAAA,GAAJ,IAAI;QAAY,IAAO,CAAA,OAAA,GAAP,OAAO;QAAiB,IAAM,CAAA,MAAA,GAAN,MAAM;;AAEpE,IAAA,UAAU,CAAC,OAAuB,EAAA;QAChC,MAAM,OAAO,GAAG,EAAE;AAElB,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;;QAGrC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAA,CAAA,EAAI,IAAI,CAAC,IAAI,CAAA,CAAE,GAAG,IAAI,CAAC,IAAI;AACpG,QAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAClB,QAAA,OAAO,OAAO;;AAGhB,IAAA,UAAU,CAAC,OAAuB,EAAA;QAChC,OAAO,IAAI,CAAC,OAAO;;AAEtB;MAEY,SAAS,CAAA;AAEpB,IAAA,WAAA,CAAsB,IAAI,EAAY,OAAY,EAAY,SAA2B,EAAE,EAAA;QAArE,IAAI,CAAA,IAAA,GAAJ,IAAI;QAAY,IAAO,CAAA,OAAA,GAAP,OAAO;QAAiB,IAAM,CAAA,MAAA,GAAN,MAAM;;AAEpE,IAAA,UAAU,CAAC,OAAuB,EAAA;QAChC,MAAM,OAAO,GAAG,EAAE;AAElB,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;;AAErC,QAAA,OAAO,OAAO;;AAGhB,IAAA,UAAU,CAAC,OAAuB,EAAA;QAChC,OAAO,IAAI,CAAC,OAAO;;AAEtB;;AChDD;;;;AAIG;MAMU,gBAAgB,CAAA;AAK5B;AAED,SAAS,sBAAsB,CAAC,IAAY,EAAA;AAC1C,IAAA,MAAM,KAAK,CAAC,CAAA,WAAA,EAAc,IAAI,CAAA,mBAAA,CAAqB,CAAC;AACtD;AAEA,SAAS,uBAAuB,GAAA;AAC9B,IAAA,MAAM,KAAK,CAAC,iCAAiC,CAAC;AAChD;AAEA,SAAS,uBAAuB,CAAC,IAAY,EAAE,IAAY,EAAE,WAAmB,EAAA;IAC9E,MAAM,KAAK,CAAC,CAAA,MAAA,EAAS,IAAI,CAAA,aAAA,EAAgB,WAAW,CAA2B,wBAAA,EAAA,IAAI,CAAG,CAAA,CAAA,CAAC;AACzF;AAEA;;AAEG;MAEU,eAAe,CAAA;AAD5B,IAAA,WAAA,GAAA;AAEY,QAAA,IAAA,CAAA,KAAK,GAA4B,IAAI,GAAG,EAAE;AAwJrD;AArJC;;;;;AAKG;AACH,IAAA,eAAe,CAAC,IAAY,EAAE,KAAc,EAAE,SAA2B,EAAE,EAAA;AACzE,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE;YACnB,IAAI;YACJ,KAAK,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACrC,MAAM;YACN,IAAI,EAAE,cAAc,CAAC,GAAG;AACzB,SAAA,CAAC;;AAGJ;;;;AAIG;AACH,IAAA,gBAAgB,CAAC,IAAY,EAAE,MAAA,GAA+B,EAAE,EAAA;AAC9D,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE;YACnB,IAAI;YACJ,MAAM;YACN,KAAK,EAAE,IAAI,GAAG,EAAE;YAChB,IAAI,EAAE,cAAc,CAAC,IAAI;AAC1B,SAAA,CAAC;;AAGJ;;;AAGG;AACH,IAAA,OAAO,CAAC,IAAY,EAAA;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;;AAG7B;;;AAGG;AACH,IAAA,cAAc,CAAC,IAAY,EAAA;QACzB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACzB,sBAAsB,CAAC,IAAI,CAAC;;QAG9B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;;AAGzC;;;;;;AAMG;IACH,UAAU,CAAC,IAAY,EAAE,IAAa,EAAA;AACpC,QAAA,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE;QAEjF,IAAI,SAAS,CAAC,IAAI,KAAK,cAAc,CAAC,GAAG,EAAE;YACzC,uBAAuB,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC;;QAGhE,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC;QAElD,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,IAAI;;QAGb,OAAO;YACL,IAAI;YACJ,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,IAAI,EAAE,cAAc,CAAC,GAAG;AACxB,YAAA,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC;SACvD;;AAGH;;;;;;AAMG;IACH,WAAW,CAAC,IAAY,EAAE,IAAa,EAAA;AACrC,QAAA,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE;QAEjF,IAAI,SAAS,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI,EAAE;YAC1C,uBAAuB,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;;AAGjE,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE;AACxD,QAAA,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI;QAE3D,OAAO;YACL,IAAI;YACJ,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,IAAI,EAAE,cAAc,CAAC,IAAI;AACzB,YAAA,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC;SAC/D;;AAGH;;;;;;AAMG;IACH,OAAO,CAAC,IAAY,EAAE,IAAa,EAAA;AACjC,QAAA,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE;QAEjF,IAAI,SAAS,CAAC,IAAI,KAAK,cAAc,CAAC,GAAG,EAAE;YACzC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC;;QAGpC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC;;AAG3B,IAAA,aAAa,CAAC,IAAY,EAAE,OAAwB,EAAE,MAAwB,EAAA;AACtF,QAAA,OAAO,OAAO,YAAY,SAAS,GAAG,OAAO,GAAG,IAAI,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC;;AAG5E,IAAA,cAAc,CAAC,IAAY,EAAE,OAAwB,EAAE,MAA4B,EAAA;AAC3F,QAAA,OAAO,OAAO,YAAY,UAAU,GAAG,OAAO,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC;;AAG9E,IAAA,cAAc,CAAC,IAAY,EAAA;QACnC,MAAM,IAAI,GAAe,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;QAC7C,IAAI,CAAC,IAAI,EAAE;YACT,sBAAsB,CAAC,IAAI,CAAC;;AAE9B,QAAA,OAAO,IAAI;;IAGH,qBAAqB,GAAA;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,uBAAuB,EAAE;;QAE3B,OAAO,IAAI,CAAC,WAAW;;IAGf,eAAe,CAAC,IAAY,EAAE,IAAgB,EAAA;QACtD,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACxB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;;AAG7B,QAAA,OAAO,IAAI;;8GAvJF,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cADF,MAAM,EAAA,CAAA,CAAA;;2FACnB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;AChClC;;;;AAIG;AAyBH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+EG;MAQU,eAAe,CAAA;AAQ1B,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,MAAM;;AAG/B,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;;AAGjC,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,OAAO;;AAGhC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,iBAAiB,GAAA;QACnB,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAClD,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;AAEzD,QAAA,OAAO,EAAE;;AA2BX;;;;AAIG;AACH,IAAA,IACI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO;;IAErB,IAAI,MAAM,CAAC,KAA4B,EAAA;QACrC,IAAI,CAAC,KAAK,EAAE;YACV;;AAGF,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AAEpB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,IAAI,CAAC,IAAI,GAAG,KAAK;;aACZ;AACL,YAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;AACtB,YAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;AACtB,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM;AAC1B,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;;;IAKhC,WACY,CAAA,SAAuB,EACvB,WAA4B,EAC5B,EAAc,EACd,QAAmB,EACnB,aAA8B,EAAA;QAJ9B,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAa,CAAA,aAAA,GAAb,aAAa;QAxGf,IAAW,CAAA,WAAA,GAAG,EAAE;QAG1B,IAAI,CAAA,IAAA,GAAa,EAAE;;IAwGnB,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC;;IAGpE,WAAW,GAAA;AACT,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;QAC9D,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC;;aAC9C;YACL,IAAI,CAAC,SAAS,EAAE;;;AAIpB,IAAA,UAAU,CAAC,IAAY,EAAE,IAAa,EAAE,OAAiC,EAAA;AACvE,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;QAE3D,IAAI,CAAC,cAAc,EAAE;AACnB,YAAA,OAAO,SAAS;;QAGlB,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QACvD,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,OAAO,CAAC;;AAG7D,QAAA,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC3D,QAAA,OAAO,cAAc;;IAGb,SAAS,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE;AACd,QAAA,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;;AAGd,IAAA,aAAa,CAAC,OAAiB,EAAA;QACvC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,SAAiB,KAAI;AAC7C,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC;AAC7D,SAAC,CAAC;AAEF,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,SAAiB,KAAI;AACpC,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC;AAC1D,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,WAAW,GAAG,OAAO;;8GAzJjB,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,4hBAJd,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIH,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,YAET,EAAE,EAAA,eAAA,EACK,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA;0LAQnB,IAAI,EAAA,CAAA;sBADH,WAAW;uBAAC,WAAW;gBAIpB,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,IAAI,EAAA,CAAA;sBADP,WAAW;uBAAC,mBAAmB;gBAM5B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,qBAAqB;gBAM9B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,oBAAoB;gBAM7B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,iBAAiB,EAAA,CAAA;sBADpB,WAAW;uBAAC,OAAO;gBAYX,IAAI,EAAA,CAAA;sBAAZ;gBAMQ,IAAI,EAAA,CAAA;sBAAZ;gBAMQ,OAAO,EAAA,CAAA;sBAAf;gBAMQ,MAAM,EAAA,CAAA;sBAAd;gBAQG,MAAM,EAAA,CAAA;sBADT;;;ACpMH;;;;AAIG;MAmBU,YAAY,CAAA;AAIvB,IAAA,WAAA,CAAoB,YAA6B,EAAA;QAA7B,IAAY,CAAA,YAAA,GAAZ,YAAY;QAFxB,IAAkB,CAAA,kBAAA,GAAG,oBAAoB;;QAK/C,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;YACtD;;;QAIF,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,EAAE;AACzD,YAAA,sBAAsB,EAAE,sVAAsV;AAC9W,YAAA,oBAAoB,EAAE,4YAA4Y;AACla,YAAA,sBAAsB,EAAE,gYAAgY;AACxZ,YAAA,uBAAuB,EAAE,+YAA+Y;AACxa,YAAA,mBAAmB,EAAE,4VAA4V;AACjX,YAAA,qBAAqB,EAAE,+dAA+d;AACtf,YAAA,mBAAmB,EAAE,4mBAA4mB;AACjoB,YAAA,wBAAwB,EAAE,ooBAAooB;AAC9pB,YAAA,uBAAuB,EAAE,oYAAoY;AAC7Z,YAAA,eAAe,EAAE,0ZAA0Z;AAC3a,YAAA,eAAe,EAAE,ofAAof;AACrgB,YAAA,gBAAgB,EAAE,+XAA+X;AACjZ,YAAA,eAAe,EAAE,ibAAib;AAClc,YAAA,kBAAkB,EAAE,2fAA2f;AAC/gB,YAAA,gBAAgB,EAAE,2gBAA2gB;AAC7hB,YAAA,eAAe,EAAE,mSAAmS;AACpT,YAAA,oBAAoB,EAAE,sQAAsQ;AAC5R,YAAA,wBAAwB,EAAE,maAAma;AAC7b,YAAA,YAAY,EAAE,ocAAoc;AACnd,SAAA,CAAC;;;8GAhCO,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,EANrB,YAAA,EAAA,CAAA,eAAe,CAHf,EAAA,OAAA,EAAA,CAAA,YAAY,aAMZ,eAAe,CAAA,EAAA,CAAA,CAAA;AAGN,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YATrB,YAAY,CAAA,EAAA,CAAA,CAAA;;2FASH,YAAY,EAAA,UAAA,EAAA,CAAA;kBAXxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;AACb,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACZ,eAAe;AAChB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,eAAe;AAChB,qBAAA;AACF,iBAAA;;;ACtBD;;;;AAIG;AAQH;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;MAMU,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,2EAHpB,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAG5B,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,CAA2B,yBAAA,CAAA;AACrC,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAID;;;AAGG;MAMU,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,yEAHlB,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAG5B,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,QAAQ,EAAE,CAA2B,yBAAA,CAAA;AACrC,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAID;;;AAGG;MAMU,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,2EAHpB,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAG5B,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,CAA2B,yBAAA,CAAA;AACrC,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+EG;MAYU,eAAe,CAAA;AAE1B;;;AAGG;AACH,IAAA,IACI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK;;IAEnB,IAAI,IAAI,CAAC,KAA2B,EAAA;AAClC,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;AAkBpB,IAAA,IACI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM;;AAG7B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAG9B,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;;AAG/B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAG9B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAG9B,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,MAAM;;AAG/B,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;;AAGjC,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,OAAO;;AAGhC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,MAAM;;AAGpB,IAAA,IACI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,MAAM;;AAG/B,IAAA,IACI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;;AAGjC,IAAA,IACI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,OAAO;;AAGhC,IAAA,IACI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,iBAAiB,GAAA;QACnB,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAClD,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;AAEzD,QAAA,OAAO,EAAE;;AAGX,IAAA,WAAA,CAAsB,aAA8B,EAAA;QAA9B,IAAa,CAAA,aAAA,GAAb,aAAa;QA5HnC,IAAK,CAAA,KAAA,GAAyB,EAAE;AAEhC;;;AAGG;QAEH,IAAM,CAAA,MAAA,GAAmC,EAAE;AAE3C;;;AAGG;QAEH,IAAM,CAAA,MAAA,GAA2B,EAAE;;8GA3BxB,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EARd,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;AAKX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+MAAA,CAAA,EAAA,CAAA,CAAA;;2FAGU,eAAe,EAAA,UAAA,EAAA,CAAA;kBAX3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EAET,QAAA,EAAA;;;;;AAKX,EAAA,CAAA,EAAA,UAAA,EACa,KAAK,EAAA,MAAA,EAAA,CAAA,+MAAA,CAAA,EAAA;iFASf,IAAI,EAAA,CAAA;sBADP;gBAcD,MAAM,EAAA,CAAA;sBADL;gBAQD,MAAM,EAAA,CAAA;sBADL;gBAIG,IAAI,EAAA,CAAA;sBADP,WAAW;uBAAC,iBAAiB;gBAM1B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAM3B,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,mBAAmB;gBAM5B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAM3B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAM3B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,IAAI,EAAA,CAAA;sBADP,WAAW;uBAAC,mBAAmB;gBAM5B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,qBAAqB;gBAM9B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,oBAAoB;gBAM7B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,cAAc;gBAMvB,aAAa,EAAA,CAAA;sBADhB,WAAW;uBAAC,sBAAsB;gBAM/B,UAAU,EAAA,CAAA;sBADb,WAAW;uBAAC,mBAAmB;gBAM5B,aAAa,EAAA,CAAA;sBADhB,WAAW;uBAAC,sBAAsB;gBAM/B,aAAa,EAAA,CAAA;sBADhB,WAAW;uBAAC,sBAAsB;gBAM/B,YAAY,EAAA,CAAA;sBADf,WAAW;uBAAC,qBAAqB;gBAM9B,WAAW,EAAA,CAAA;sBADd,WAAW;uBAAC,oBAAoB;gBAM7B,aAAa,EAAA,CAAA;sBADhB,WAAW;uBAAC,sBAAsB;gBAM/B,iBAAiB,EAAA,CAAA;sBADpB,WAAW;uBAAC,OAAO;;;AChStB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDG;MAeU,qBAAqB,CAAA;AAdlC,IAAA,WAAA,GAAA;AAeE;;;AAGG;QAGH,IAAQ,CAAA,QAAA,GAAY,KAAK;AAEzB;;;AAGG;QACM,IAAgB,CAAA,gBAAA,GAAG,IAAI;AAKjC;IAHC,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ;;8GAhBrB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAXpB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;AAQX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2sBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAdjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAEhB,QAAA,EAAA;;;;;;;;AAQX,EAAA,CAAA,EAAA,UAAA,EACa,KAAK,EAAA,MAAA,EAAA,CAAA,2sBAAA,CAAA,EAAA;8BASnB,QAAQ,EAAA,CAAA;sBAFP;;sBACA,WAAW;uBAAC,gBAAgB;gBAOpB,gBAAgB,EAAA,CAAA;sBAAxB;;;ACjFH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDG;MAsBU,mBAAmB,CAAA;AArBhC,IAAA,WAAA,GAAA;AAsBE;;;AAGG;QAGH,IAAO,CAAA,OAAA,GAAY,KAAK;AAExB;;;AAGG;QACM,IAAgB,CAAA,gBAAA,GAAG,IAAI;AAKjC;IAHC,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO;;8GAhBnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAlBlB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;AAeX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,kvCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBArB/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAEd,QAAA,EAAA;;;;;;;;;;;;;;;AAeX,EAAA,CAAA,EAAA,UAAA,EACa,KAAK,EAAA,MAAA,EAAA,CAAA,kvCAAA,CAAA,EAAA;8BASnB,OAAO,EAAA,CAAA;sBAFN;;sBACA,WAAW;uBAAC,eAAe;gBAOnB,gBAAgB,EAAA,CAAA;sBAAxB;;;ACzFH;;;;AAIG;MAMU,oBAAoB,CAAA;8GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,0EAHnB,4CAA4C,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAG7C,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,4CAA4C;AACtD,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAGD;;;;AAIG;MAMU,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,yEAHlB,4CAA4C,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAG7C,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,QAAQ,EAAE,4CAA4C;AACtD,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACvBD;;;;AAIG;AAiBH,MAAM,kBAAkB,GAAG;IACzB,eAAe;IACf,mBAAmB;IACnB,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;IACrB,mBAAmB;IACnB,oBAAoB;IACpB,mBAAmB;CACpB;MAcY,YAAY,CAAA;8GAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,iBAtBvB,eAAe;YACf,mBAAmB;YACnB,qBAAqB;YACrB,qBAAqB;YACrB,qBAAqB;YACrB,mBAAmB;YACnB,oBAAoB;AACpB,YAAA,mBAAmB,aAKjB,cAAc;AACd,YAAA,YAAY,aAbd,eAAe;YACf,mBAAmB;YACnB,qBAAqB;YACrB,qBAAqB;YACrB,qBAAqB;YACrB,mBAAmB;YACnB,oBAAoB;YACpB,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAeR,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAVrB,cAAc;YACd,YAAY,CAAA,EAAA,CAAA,CAAA;;2FASH,YAAY,EAAA,UAAA,EAAA,CAAA;kBAZxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,cAAc;wBACd,YAAY;AACb,qBAAA;AACD,oBAAA,YAAY,EAAE;AACZ,wBAAA,GAAG,kBAAkB;AACtB,qBAAA;AACD,oBAAA,OAAO,EAAE;AACP,wBAAA,GAAG,kBAAkB;AACtB,qBAAA;AACF,iBAAA;;;AC3CD;;;;AAIG;IAUS;AAAZ,CAAA,UAAY,kBAAkB,EAAA;AAC5B,IAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,kBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACf,CAAC,EAJW,kBAAkB,KAAlB,kBAAkB,GAI7B,EAAA,CAAA,CAAA;IAGW;AAAZ,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,cAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACjB,CAAC,EAHW,cAAc,KAAd,cAAc,GAGzB,EAAA,CAAA,CAAA;;ACxBD;;;;AAIG;AAKG,SAAU,qBAAqB,CAAC,GAAQ,EAAA;AAC5C,IAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QAC3B,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE;AAE9B,QAAA,OAAO,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,EAAE;;IAGrC,OAAO,CAAC,CAAC,GAAG;AACd;AAEM,SAAU,gBAAgB,CAAC,EAAE,EAAA;AACjC;;;;AAIK;IACL,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC;AACzC,IAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;AACpE,IAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC;AAC1E,IAAA,OAAO,EAAE,CAAC,YAAY,GAAG,SAAS,GAAG,YAAY;AACnD;;AC7BA;;;;AAIG;MASmB,aAAa,CAAA;AAAnC,IAAA,WAAA,GAAA;QACW,IAAY,CAAA,YAAA,GAAW,CAAC;AAEjC;;AAEI;QACK,IAAmB,CAAA,mBAAA,GAAG,EAAE;;AAIjC,IAAA,SAAS,CAAC,MAAW,EAAA;AACnB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;;AAGtB;;AAEK;AACL,IAAA,SAAS,CAAC,IAAO,EAAE,KAAQ,EAAE,GAAM,EAAA;QACjC,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC;;;AAG/E;;AAEK;IACL,aAAa,CAAC,KAAQ,EAAE,KAAQ,EAAA;AAC9B,QAAA,OAAO,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;;;AAGvD;;AAEK;IACL,eAAe,CAAC,KAAQ,EAAE,KAAQ,EAAA;AAChC,QAAA,OAAO,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC;;AAGzD;;AAEK;IACL,cAAc,CAAC,KAAQ,EAAE,KAAQ,EAAA;AAC/B,QAAA,OAAO,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC;;IAiNxD,mBAAmB,CAAC,KAAQ,EAAE,KAAQ,EAAA;AACpC,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC;;IAGzE,UAAU,CAAC,KAAQ,EAAE,KAAQ,EAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;;IAGtD,YAAY,CAAC,KAAQ,EAAE,KAAQ,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;;IAG1D,wBAAwB,GAAA;AACtB,QAAA,OAAO,OAAO;;IAGhB,mCAAmC,GAAA;AACjC,QAAA,OAAO,UAAU;;IAGnB,+BAA+B,GAAA;AAC7B,QAAA,OAAO,YAAY;;AAGrB,IAAA,YAAY,CAAC,IAAO,EAAA;AAClB,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB;QACvE,IAAI,gBAAgB,EAAE;YACpB,OAAsB,IAAA;;aACjB;YACL,OAAsB,IAAA;;;AAG3B;;ACrSD;;;;AAIG;AAEI,MAAM,KAAK,GAAG,CAAI,MAAW,EAAE,SAAiB,EAAE,MAAA,GAAiB,CAAC,KAAW;IACpF,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,KAAI;AACxC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,MAAM,IAAI,SAAS,CAAC;AAC3D,QAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AACpB,YAAA,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE;;QAEtB,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,QAAA,OAAO,GAAG;KACX,EAAE,EAAE,CAAC;AACR,CAAC;AACD;;AAEK;AACE,MAAM,WAAW,GAAG,CAAI,IAAY,EAAE,EAAE,GAAG,CAAC,EAAE,WAA0B,CAAC,IAAI,CAAC,KAAI;IACvF,MAAM,GAAG,GAAG,EAAE;AAEd,IAAA,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;QAC9B,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;;AAGvB,IAAA,OAAO,GAAG;AACZ,CAAC;AAED;;AAEK;AACE,MAAM,KAAK,GAAG,CAAI,KAAa,EAAE,QAA0B,GAAA,CAAC,IAAI,CAAC,KAAI;IAC1E,OAAO,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC;AACxC,CAAC;;AClCD;;;;AAIG;MAQU,0BAA0B,CAAA;AAKrC,IAAA,WAAA,CAAsB,WAA6B,EAAA;QAA7B,IAAW,CAAA,WAAA,GAAX,WAAW;QAHvB,IAAW,CAAA,WAAA,GAAG,EAAE;QAChB,IAAU,CAAA,UAAA,GAAG,CAAC;;IAKxB,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW;;IAGzB,aAAa,GAAA;QACX,OAAO,IAAI,CAAC,UAAU;;AAGxB,IAAA,YAAY,CAAC,QAAW,EAAA;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC/C,QAAA,IAAI,aAAqB;AACzB,QAAA,IAAI,IAAI,IAAI,CAAC,EAAE;YACb,aAAa,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;;aAC3C;AACL,YAAA,aAAa,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;;QAErE,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;QAE9F,OAAO,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC;;IAG5B,YAAY,CAAC,IAAY,EAAE,IAAO,EAAA;QAC1C,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;;8GA9BhG,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAA1B,0BAA0B,EAAA,CAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC;;;ACgBD;MACsB,QAAQ,CAAA;AAuB5B;;AAEG;AACH,IAAA,IAEI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;;IAErC,IAAI,MAAM,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,UAAU,GAAG,QAAQ;;;AAK9B;;AAEG;AACH,IAAA,IAEI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,UAAU,KAAK,SAAS;;IAEtC,IAAI,OAAO,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;;;AAK/B;;AAEG;AACH,IAAA,IAEI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,UAAU,KAAK,OAAO;;IAEpC,IAAI,KAAK,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,UAAU,GAAG,OAAO;;;AAK7B;;AAEG;AACH,IAAA,IAEI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU;;IAExB,IAAI,SAAS,CAAC,KAAc,EAAA;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAKhD;;AAEG;AACH,IAAA,IAGI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;;IAEvB,IAAI,QAAQ,CAAC,KAAc,EAAA;QACzB,IAAI,IAAI,CAAC,QAAQ,KAAK,qBAAqB,CAAC,KAAK,CAAC,EAAE;AAClD,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,QAAQ;AAC/B,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC;;;;AAYxF,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,IAAI;;AAGb,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE;AACzB,YAAA,OAAO,GAAG;;AAGZ,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;;AAGjC,IAAA,IACI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM;;AAG7B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAG9B,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;;AAG/B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAG9B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAG9B,IAAA,IACI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,WAAW;;AAGnC,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,OAAO;;AAG/B,IAAA,IACI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,YAAY;;AAOpC,IAAA,IACI,iBAAiB,GAAA;QACnB,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAClD,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;AAEzD,QAAA,OAAO,EAAE;;IAKX,WACY,CAAA,QAAmB,EACnB,WAAoC,EACpC,EAAqB,EACrB,IAAY,EACZ,aAA8B,EAAA;QAJ9B,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAI,CAAA,IAAA,GAAJ,IAAI;QACJ,IAAa,CAAA,aAAA,GAAb,aAAa;AAjLzB;;;AAGG;QACM,IAAI,CAAA,IAAA,GAAoB,QAAQ;AAEzC;;;AAGG;QACM,IAAM,CAAA,MAAA,GAA8B,OAAO;AAEpD;;AAEG;QACM,IAAK,CAAA,KAAA,GAAqB,WAAW;AAE9C;;AAEG;QACM,IAAU,CAAA,UAAA,GAAuB,QAAQ;QA0D1C,IAAU,CAAA,UAAA,GAAG,KAAK;QAkBlB,IAAS,CAAA,SAAA,GAAY,KAAK;QA8DD,IAAQ,CAAA,QAAA,GAAG,KAAK;QAElB,IAAS,CAAA,SAAA,GAAG,KAAK;;IAqBhD,qBAAqB,GAAA;QACnB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAElD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;;IAG7C,eAAe,GAAA;;QAEb,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,UAAU,CAAC,MAAK;AAChD,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,eAAe,CAAC;SACxE,CAAC,CAAC;;AAGL;;AAEI;AACJ,IAAA,gBAAgB,CAAC,MAAmC,EAAA;QAClD,IAAI,iBAAiB,GAAG,KAAK;AAE7B,QAAA,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;AACxB,YAAA,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE;gBAC3D,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;gBACvB,iBAAiB,GAAG,IAAI;;;QAI5B,IAAI,iBAAiB,EAAE;AACrB,YAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;;AAI1B,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa;AACzC,QAAA,OAAO,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC;;AAGpC,IAAA,IAAc,KAAK,GAAA;QACjB,OAAQ,IAAI,CAAC,EAA2B,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAW,KAAK,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,CAAC;;AAGxG,IAAA,WAAW,CAAC,IAAU,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC;;8GAjO3C,QAAQ,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAR,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,yBAAA,EAAA,aAAA,EAAA,0BAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EA2KX,eAAe,EAAA,IAAA,EAAU,UAAU,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FA3KhC,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAF7B;uLAOU,IAAI,EAAA,CAAA;sBAAZ;gBAMQ,MAAM,EAAA,CAAA;sBAAd;gBAKQ,KAAK,EAAA,CAAA;sBAAb;gBAKQ,UAAU,EAAA,CAAA;sBAAlB;gBAOG,MAAM,EAAA,CAAA;sBAFT;;sBACA,WAAW;uBAAC,yBAAyB;gBAgBlC,OAAO,EAAA,CAAA;sBAFV;;sBACA,WAAW;uBAAC,0BAA0B;gBAgBnC,KAAK,EAAA,CAAA;sBAFR;;sBACA,WAAW;uBAAC,wBAAwB;gBAgBjC,SAAS,EAAA,CAAA;sBAFZ;;sBACA,WAAW;uBAAC,kBAAkB;gBAgB3B,QAAQ,EAAA,CAAA;sBAHX;;sBACA,WAAW;uBAAC,oBAAoB;;sBAChC,WAAW;uBAAC,oBAAoB;gBAgBxB,QAAQ,EAAA,CAAA;sBAAhB;gBAIG,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,eAAe;gBAcxB,IAAI,EAAA,CAAA;sBADP,WAAW;uBAAC,iBAAiB;gBAM1B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAM3B,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,mBAAmB;gBAM5B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAM3B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAM3B,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,uBAAuB;gBAMhC,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,mBAAmB;gBAM5B,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,wBAAwB;gBAKJ,QAAQ,EAAA,CAAA;sBAAxC,WAAW;uBAAC,kBAAkB;gBAEA,SAAS,EAAA,CAAA;sBAAvC,WAAW;uBAAC,gBAAgB;gBAGzB,iBAAiB,EAAA,CAAA;sBADpB,WAAW;uBAAC,OAAO;gBAQoC,KAAK,EAAA,CAAA;sBAA5D,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;;;ACvMxD;;;;AAIG;AAmBH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAufG;AAYG,MAAO,iBAAkB,SAAQ,QAAQ,CAAA;AAC7C;;AAEG;AACH,IAAA,IAEI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,UAAU,KAAK,MAAM;;IAEnC,IAAI,IAAI,CAAC,KAAc,EAAA;AACrB,QAAA,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,UAAU,GAAG,MAAM;;;AAK5B,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,MAAM;;AAG/B,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;;AAGjC,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,OAAO;;AAGhC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC;;;;;;;;;AASG;AAEH,IAAA,OAAO,CAAC,KAAK,EAAA;AACX,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,wBAAwB,EAAE;;;IAIpC,WACY,CAAA,QAAmB,EACnB,WAAoC,EACpC,EAAqB,EACrB,IAAY,EACZ,aAA8B,EAAA;QAExC,KAAK,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,CAAC;QAN3C,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAI,CAAA,IAAA,GAAJ,IAAI;QACJ,IAAa,CAAA,aAAA,GAAb,aAAa;;8GA1Ed,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EANf,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gGAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE;SACxD,EALS,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;AAEX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAOU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAX7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,4FAA4F;AACtG,oBAAA,QAAQ,EAAE;;AAEX,EAAA,CAAA;AACC,oBAAA,SAAS,EAAE;AACP,wBAAA,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,mBAAmB,EAAE;AACxD,qBAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE;AACf,iBAAA;uLAOK,IAAI,EAAA,CAAA;sBAFP;;sBACA,WAAW;uBAAC,uBAAuB;gBAYhC,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,IAAI,EAAA,CAAA;sBADP,WAAW;uBAAC,mBAAmB;gBAM5B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,qBAAqB;gBAM9B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,oBAAoB;gBAM7B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAgBnC,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;ACvlBnC;;;;AAIG;MAqBU,2BAA2B,CAAA;IAMtC,WACY,CAAA,WAA6B,EAC7B,gBAA+C,EAAA;QAD/C,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;AANnB,QAAA,IAAA,CAAA,QAAQ,GAAuB,kBAAkB,CAAC,IAAI;AAErD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,CAAO,IAAI,CAAC;;IAOnD,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACd,YAAA,OAAO,EAAE;;AAGX,QAAA,QAAQ,IAAI,CAAC,QAAQ;AACnB,YAAA,KAAK,kBAAkB,CAAC,IAAI,EAAE;AAC5B,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC;AAC7E,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAChD,gBAAA,OAAO,CAAG,EAAA,KAAK,CAAI,CAAA,EAAA,IAAI,EAAE;;YAE3B,KAAK,kBAAkB,CAAC,KAAK;AAC3B,gBAAA,OAAO,CAAG,EAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE;YACjD,KAAK,kBAAkB,CAAC,IAAI;gBAC1B,OAAO,CAAA,EAAG,IAAI,CAAC,YAAY,EAAE,CAAM,GAAA,EAAA,IAAI,CAAC,WAAW,EAAE,CAAA,CAAE;;;IAI7D,OAAO,GAAA;QACL,IAAI,IAAI,CAAC,QAAQ,KAAK,kBAAkB,CAAC,IAAI,EAAE;AAC7C,YAAA,OAAO,sBAAsB;;AAG/B,QAAA,OAAO,oBAAoB;;IAGnB,YAAY,GAAA;AACpB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3D,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;;IAG/C,WAAW,GAAA;AACnB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3D,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QAE5C,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE;;8GA/C3C,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,EAT1B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;AAKX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,gGAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIU,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAXvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,QAAQ,EAAE;;;;;AAKX,EAAA,CAAA;oBACC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE;AACf,iBAAA;qHAEU,IAAI,EAAA,CAAA;sBAAZ;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBAES,UAAU,EAAA,CAAA;sBAAnB;;;AC7BH;;;;AAIG;MAoBU,qCAAqC,CAAA;AAIhD,IAAA,WAAA,CAAoB,gBAA0C,EAAA;QAA1C,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;AAH1B,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,YAAY,EAAQ;AAC/B,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,YAAY,EAAQ;;AAKzC,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;;8GAR3B,qCAAqC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAArB,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qCAAqC,EAVpC,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;AAOX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,uOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAsB,iBAAA,EAAA,QAAA,EAAA,gGAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGU,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBAbjD,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iCAAiC,EAEjC,QAAA,EAAA;;;;;;;AAOX,EAAA,CAAA,EAAA,UAAA,EACa,KAAK,EAAA,MAAA,EAAA,CAAA,uOAAA,CAAA,EAAA;0FAGT,IAAI,EAAA,CAAA;sBAAb;gBACS,IAAI,EAAA,CAAA;sBAAb;;;AC1BH;;;;AAIG;MAyBU,2BAA2B,CAAA;AActC,IAAA,WAAA,CAAsB,WAA6B,EAAA;QAA7B,IAAW,CAAA,WAAA,GAAX,WAAW;AALxB,QAAA,IAAA,CAAA,IAAI,GAAmB,cAAc,CAAC,MAAM;AAG3C,QAAA,IAAA,CAAA,MAAM,GAAoB,IAAI,YAAY,CAAC,IAAI,CAAC;QAuB1D,IAAa,CAAA,aAAA,GAAG,IAAI;;AAlBpB,IAAA,IAAmC,QAAQ,GAAA;AACzC,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC;;AAGvE,IAAA,IAAgC,KAAK,GAAA;AACnC,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;;AAG7E,IAAA,IAAmC,QAAQ,GAAA;QACzC,OAAO,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE;;AAGvD,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,KAAK;;AAM3C,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;;IAI5C,OAAO,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB;;QAGF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGrB,cAAc,GAAA;QACpB,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;;IAGrF,cAAc,GAAA;QACpB,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;;IAGvF,SAAS,GAAA;QACf,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGzC,OAAO,GAAA;QACb,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;8GA/DpC,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAL,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,EAR1B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,aAAA,EAAA,eAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;AAIX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIU,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAVvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,QAAQ,EAAE;;;;AAIX,EAAA,CAAA;oBACC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE;AACf,iBAAA;+EAEU,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,GAAG,EAAA,CAAA;sBAAX;gBAEQ,GAAG,EAAA,CAAA;sBAAX;gBAEQ,aAAa,EAAA,CAAA;sBAArB;gBAEQ,IAAI,EAAA,CAAA;sBAAZ;gBAGS,MAAM,EAAA,CAAA;sBAAf;gBAKkC,QAAQ,EAAA,CAAA;sBAA1C,WAAW;uBAAC,gBAAgB;gBAIG,KAAK,EAAA,CAAA;sBAApC,WAAW;uBAAC,aAAa;gBAIS,QAAQ,EAAA,CAAA;sBAA1C,WAAW;uBAAC,gBAAgB;gBAKzB,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,kBAAkB;gBAM/B,aAAa,EAAA,CAAA;sBADZ,WAAW;uBAAC,iBAAiB;gBAQ9B,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO;;;ACtEvB;;;;AAIG;MAgCU,4BAA4B,CAAA;AAgBvC,IAAA,WAAA,CAAoB,GAA6B,EAAA;QAA7B,IAAG,CAAA,GAAA,GAAH,GAAG;AARd,QAAA,IAAA,CAAA,IAAI,GAAmB,cAAc,CAAC,MAAM;;AAG3C,QAAA,IAAA,CAAA,MAAM,GAAoB,IAAI,YAAY,EAAE;;IAOtD,WAAW,GAAA;AACT,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC;AAEhE,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;QAEzB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAO,KAAI;AAC3B,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YACtF,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC;AAC/C,YAAA,SAAS,CAAC,iBAAiB,CAAC,aAAa,EAAE;AAC7C,SAAC,CAAC;;IAGI,gBAAgB,CAAC,SAA+B,EAAE,IAAO,EAAA;AAC/D,QAAA,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;AACxC,QAAA,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;AAC5C,QAAA,SAAS,CAAC,IAAI,GAAG,IAAI;AACrB,QAAA,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG;AACxB,QAAA,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG;AACxB,QAAA,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AAC9B,QAAA,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;AAC1B,QAAA,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;8GAtCrD,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAc5B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,WAAW,EAAU,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,gBAAgB,gEAlBpC,6BAA6B,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,qDAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAI9B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAdxC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,YASxB,6BAA6B,EAAA,eAAA,EACtB,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,MAAA,EAAA,CAAA,qDAAA,CAAA,EAAA;6FAGV,GAAG,EAAA,CAAA;sBAAX;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBAGS,MAAM,EAAA,CAAA;sBAAf;gBAGiE,YAAY,EAAA,CAAA;sBAA7E,SAAS;uBAAC,WAAW,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE;;;AClDlE;;;;AAIG;MA0BU,yBAAyB,CAAA;AAnBtC,IAAA,WAAA,GAAA;AA2BW,QAAA,IAAA,CAAA,IAAI,GAAmB,cAAc,CAAC,MAAM;AAE3C,QAAA,IAAA,CAAA,MAAM,GAAoB,IAAI,YAAY,EAAE;AAMvD;AAJC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,KAAK;;8GAdhC,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAjBxB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;AAaX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,4BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,eAAA,EAAA,aAAA,EAAA,WAAA,EAAA,KAAA,EAAA,KAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAnBrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;AAaX,EAAA,CAAA;oBACC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAEU,IAAI,EAAA,CAAA;sBAAZ;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBAES,MAAM,EAAA,CAAA;sBAAf;gBAGG,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,kBAAkB;;;AC1CjC;;;;AAIG;MAmCU,6BAA6B,CAAA;IAUxC,IACI,cAAc,CAAC,aAAyC,EAAA;QAC1D,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,GAAG,aAAa;;;AAYtC,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,KAAK;;IAK3C,WACY,CAAA,WAA6B,EAC7B,gBAA+C,EAAA;QAD/C,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAlB5B,IAAa,CAAA,aAAA,GAA+B,2BAA2B;AAE9D,QAAA,IAAA,CAAA,IAAI,GAAmB,cAAc,CAAC,MAAM;AAK3C,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAK;;IAc5C,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG5D,IAAA,QAAQ,CAAC,IAAI,EAAA;AACX,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;8GA1CjB,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAN,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,EAhB5B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,cAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;AAYX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,eAAA,EAAA,eAAA,EAAA,KAAA,EAAA,KAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIU,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAlBzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;AAYX,EAAA,CAAA;oBACC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE;AACf,iBAAA;qHAGU,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,GAAG,EAAA,CAAA;sBAAX;gBAEQ,GAAG,EAAA,CAAA;sBAAX;gBAEQ,MAAM,EAAA,CAAA;sBAAd;gBAGG,cAAc,EAAA,CAAA;sBADjB,KAAK;uBAAC,eAAe;gBAQb,IAAI,EAAA,CAAA;sBAAZ;gBAGQ,IAAI,EAAA,CAAA;sBAAZ;gBAES,UAAU,EAAA,CAAA;sBAAnB;gBAGG,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;;;AChEjC;;;;AAIG;MAyBU,4BAA4B,CAAA;AAcvC,IAAA,WAAA,CAAoB,WAA6B,EAAA;QAA7B,IAAW,CAAA,WAAA,GAAX,WAAW;AALtB,QAAA,IAAA,CAAA,IAAI,GAAmB,cAAc,CAAC,MAAM;AAG3C,QAAA,IAAA,CAAA,MAAM,GAAoB,IAAI,YAAY,CAAC,IAAI,CAAC;QAuB1D,IAAc,CAAA,cAAA,GAAG,IAAI;;AAlBrB,IAAA,IAAmC,QAAQ,GAAA;AACzC,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC;;AAGxE,IAAA,IAAgC,KAAK,GAAA;AACnC,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;;AAG9E,IAAA,IAAmC,QAAQ,GAAA;QACzC,OAAO,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE;;AAGvD,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,KAAK;;AAM3C,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;IAIjD,OAAO,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB;;QAGF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGnB,cAAc,GAAA;QACtB,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;;IAGpF,cAAc,GAAA;QACtB,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;;IAGtF,UAAU,GAAA;QAClB,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGxC,QAAQ,GAAA;QAChB,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;8GA/DrC,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAP,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAR3B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,eAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;AAIX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIU,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAVxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,QAAQ,EAAE;;;;AAIX,EAAA,CAAA;oBACC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE;AACf,iBAAA;+EAEU,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,aAAa,EAAA,CAAA;sBAArB;gBAEQ,GAAG,EAAA,CAAA;sBAAX;gBAEQ,GAAG,EAAA,CAAA;sBAAX;gBAEQ,IAAI,EAAA,CAAA;sBAAZ;gBAGS,MAAM,EAAA,CAAA;sBAAf;gBAKkC,QAAQ,EAAA,CAAA;sBAA1C,WAAW;uBAAC,gBAAgB;gBAIG,KAAK,EAAA,CAAA;sBAApC,WAAW;uBAAC,aAAa;gBAIS,QAAQ,EAAA,CAAA;sBAA1C,WAAW;uBAAC,gBAAgB;gBAKzB,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,kBAAkB;gBAM/B,cAAc,EAAA,CAAA;sBADb,WAAW;uBAAC,kBAAkB;gBAQ/B,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO;;;ACtEvB;;;;AAIG;AAkBI,MAAM,cAAc,GAAG;AACvB,MAAM,gBAAgB,GAAG;MAoBnB,8BAA8B,CAAA;AAuBzC,IAAA,WAAA,CAAsB,WAA6B,EAAA;QAA7B,IAAW,CAAA,WAAA,GAAX,WAAW;AAhBxB,QAAA,IAAA,CAAA,IAAI,GAAmB,cAAc,CAAC,MAAM;AAa3C,QAAA,IAAA,CAAA,WAAW,GAAoB,IAAI,YAAY,EAAE;QAY3D,IAAa,CAAA,aAAA,GAAmC,4BAA4B;;IAN5E,IACI,cAAc,CAAC,aAAyC,EAAA;QAC1D,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,GAAG,aAAa;;;AAKtC,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,KAAK;;AAG3C,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,KAAK,EAAE;YACjB,IAAI,CAAC,UAAU,EAAE;;;IAIrB,UAAU,GAAA;AACR,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AACjD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AACjD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC;AAC7D,QAAA,MAAM,MAAM,GAAG,CAAE,UAAU,CAAE;AAE7B,QAAA,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,cAAc,EAAE,UAAU,EAAE,EAAE;AAClE,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;;QAGhE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC;;AAG/C,IAAA,QAAQ,CAAC,KAAQ,EAAA;AACf,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;;8GA3DnB,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,EAhB7B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,cAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;AAYX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,eAAA,EAAA,eAAA,EAAA,KAAA,EAAA,KAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIU,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAlB1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;AAYX,EAAA,CAAA;oBACC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE;AACf,iBAAA;+EAGU,GAAG,EAAA,CAAA;sBAAX;gBAEQ,GAAG,EAAA,CAAA;sBAAX;gBAEQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBAMQ,KAAK,EAAA,CAAA;sBAAb;gBAKQ,IAAI,EAAA,CAAA;sBAAZ;gBAES,WAAW,EAAA,CAAA;sBAApB;gBAOG,cAAc,EAAA,CAAA;sBADjB,KAAK;uBAAC,eAAe;gBASlB,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;;;AC7EjC;;;;AAIG;MA0BU,0BAA0B,CAAA;AAmBrC,IAAA,WAAA,CAAsB,WAA6B,EAAA;QAA7B,IAAW,CAAA,WAAA,GAAX,WAAW;AALxB,QAAA,IAAA,CAAA,IAAI,GAAmB,cAAc,CAAC,MAAM;AAG3C,QAAA,IAAA,CAAA,MAAM,GAAoB,IAAI,YAAY,CAAC,IAAI,CAAC;QA+B1D,IAAY,CAAA,YAAA,GAAG,IAAI;;AA1BnB,IAAA,IAAgC,KAAK,GAAA;AACnC,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;;AAG5E,IAAA,IAAyC,aAAa,GAAA;AACpD,QAAA,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC;;AAGvE,IAAA,IAAmC,QAAQ,GAAA;AACzC,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC;;AAGtE,IAAA,IAAgC,KAAK,GAAA;AACnC,QAAA,OAAO,CAAC,IAAI,CAAC,IAAI;;AAGnB,IAAA,IAAmC,QAAQ,GAAA;AACzC,QAAA,OAAO,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE;;AAG/E,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,KAAK;;AAM3C,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;;IAIzD,OAAO,GAAA;QACL,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE;YAC/B;;QAGF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGrB,cAAc,GAAA;QACpB,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;;IAGhF,cAAc,GAAA;QACpB,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;;IAGhF,aAAa,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;;8GAxEjD,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAR,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EARzB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;AAIX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIU,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAVtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE;;;;AAIX,EAAA,CAAA;oBACC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE;AACf,iBAAA;+EAGU,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,aAAa,EAAA,CAAA;sBAArB;gBAEQ,WAAW,EAAA,CAAA;sBAAnB;gBAEQ,GAAG,EAAA,CAAA;sBAAX;gBAEQ,GAAG,EAAA,CAAA;sBAAX;gBAEQ,MAAM,EAAA,CAAA;sBAAd;gBAEQ,IAAI,EAAA,CAAA;sBAAZ;gBAGS,MAAM,EAAA,CAAA;sBAAf;gBAK+B,KAAK,EAAA,CAAA;sBAApC,WAAW;uBAAC,aAAa;gBAIe,aAAa,EAAA,CAAA;sBAArD,WAAW;uBAAC,sBAAsB;gBAIA,QAAQ,EAAA,CAAA;sBAA1C,WAAW;uBAAC,gBAAgB;gBAIG,KAAK,EAAA,CAAA;sBAApC,WAAW;uBAAC,aAAa;gBAIS,QAAQ,EAAA,CAAA;sBAA1C,WAAW;uBAAC,gBAAgB;gBAKzB,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,kBAAkB;gBAM/B,YAAY,EAAA,CAAA;sBADX,WAAW;uBAAC,gBAAgB;gBAQ7B,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO;;;ACpFvB;;;;AAIG;MASU,2BAA2B,CAAA;AAEtC,IAAA,WAAA,CAAsB,WAA6B,EAAA;QAA7B,IAAW,CAAA,WAAA,GAAX,WAAW;;AAGjC,IAAA,cAAc,CAAC,WAAc,EAAE,aAAyB,GAAA,IAAI,EAAE,cAAuB,EAAA;QACnF,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,cAAc,CAAC;QAC3D,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,aAAa,CAAC;;IAG3D,WAAW,CAAC,WAAc,EAAE,cAAuB,EAAA;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC;QACtD,MAAM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,cAAc,CAAC;AAClF,QAAA,OAAO,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,kBAAkB,CAAC;;AAG/D,IAAA,kBAAkB,CAAC,KAAY,EAAE,WAAc,EAAE,aAAsB,EAAA;QAC7E,IAAI,kBAAkB,GAAG,KAAK;AAE9B,QAAA,IAAI,IAAI,CAAC,4BAA4B,CAAC,kBAAkB,CAAC,EAAE;YACzD,kBAAkB,GAAG,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,WAAW,EAAE,aAAa,CAAC;;AAGhG,QAAA,IAAI,IAAI,CAAC,4BAA4B,CAAC,kBAAkB,CAAC,EAAE;YACzD,kBAAkB,GAAG,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,WAAW,EAAE,aAAa,CAAC;;AAGhG,QAAA,OAAO,kBAAkB;;AAGnB,IAAA,oBAAoB,CAAC,KAAY,EAAE,WAAc,EAAE,aAAsB,EAAA;AAC/E,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,EAAE;QAC/B,MAAM,aAAa,GAAW,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,SAAS,CAAC,MAAM;AAC9E,QAAA,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;AAC5F,QAAA,OAAO,CAAC,SAAS,EAAE,GAAG,KAAK,CAAC;;AAGtB,IAAA,oBAAoB,CAAC,KAAY,EAAE,WAAc,EAAE,aAAsB,EAAA;AAC/E,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE;QAC5B,MAAM,aAAa,GAAW,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,QAAQ,CAAC,MAAM;AAC7E,QAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;AACxF,QAAA,OAAO,CAAC,GAAG,KAAK,EAAE,QAAQ,CAAC;;AAGrB,IAAA,sBAAsB,CAAC,WAAc,EAAE,aAAsB,EAAE,aAAqB,EAAA;AAC1F,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACxD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,KAAK,CAAC;AAClE,QAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,KAAK;AACtC,aAAA,KAAK,CAAC,WAAW,GAAG,aAAa;AACjC,aAAA,GAAG,CAAC,IAAI,IAAI,aAAa,GAAG,IAAI,GAAG,IAAI,CAAC;;AAGrC,IAAA,sBAAsB,CAAC,WAAc,EAAE,aAAsB,EAAE,aAAqB,EAAA;AAC1F,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;AACvD,QAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,KAAK;AACtC,aAAA,KAAK,CAAC,CAAC,EAAE,aAAa;AACtB,aAAA,GAAG,CAAC,IAAI,IAAI,aAAa,GAAG,IAAI,GAAG,IAAI,CAAC;;IAGrC,qBAAqB,CAAC,IAAO,EAAE,cAAuB,EAAA;QAC5D,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC;QACzD,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,cAAc,CAAC;;IAGpD,gBAAgB,CAAC,IAAO,EAAE,cAAuB,EAAA;QACvD,MAAM,SAAS,GAAG,cAAc,IAAI,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE;AACxE,QAAA,OAAO,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG1D,IAAA,4BAA4B,CAAC,KAAY,EAAA;AAC/C,QAAA,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY;;AAGhD,IAAA,4BAA4B,CAAC,KAAY,EAAA;AAC/C,QAAA,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY;;AAG/D,IAAA,uBAAuB,CAAC,IAAO,EAAA;QACrC,MAAM,WAAW,GAAW,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,IAAI,CAAC;AACzE,QAAA,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC,IAAG;YAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;YAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC7C,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;AACxD,SAAC,CAAC;;8GAnFO,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAA3B,2BAA2B,EAAA,CAAA,CAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC;;;ACZD;;;;AAIG;MAiBU,4BAA4B,CAAA;AAOvC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,KAAK;;AAS3C,IAAA,WAAA,CAAoB,WAA6B,EAAA;QAA7B,IAAW,CAAA,WAAA,GAAX,WAAW;;IAG/B,QAAQ,GAAA;AACN,QAAA,MAAM,IAAI,GAAoB,IAAI,CAAC,eAAe,EAAE;QACpD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;;IAGzC,WAAW,CAAC,EAAC,cAAc,EAAgB,EAAA;QACzC,IAAI,cAAc,EAAE;AAClB,YAAA,MAAM,IAAI,GAAoB,IAAI,CAAC,eAAe,EAAE;YACpD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;;;IAInC,eAAe,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,iBAAiB;AACtC,aAAA,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;;AAGpB,IAAA,gBAAgB,CAAC,IAAqB,EAAA;AAC5C,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE;AAClF,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE;YACvC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;;AAGzB,QAAA,OAAO,IAAI;;IAGL,aAAa,CAAC,IAAI,EAAE,CAAC,EAAA;QAC3B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;;8GAhD9B,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAN3B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;AAEX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,yRAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIU,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBATxC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAExB,QAAA,EAAA;;AAEX,EAAA,CAAA,EAAA,eAAA,EACkB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,KAAK,EAAA,MAAA,EAAA,CAAA,yRAAA,CAAA,EAAA;+EAMV,IAAI,EAAA,CAAA;sBAAZ;gBAIG,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,kBAAkB;gBAStB,cAAc,EAAA,CAAA;sBAAtB;;;ACrCH;;;;AAIG;MAmBU,6BAA6B,CAAA;AAgBxC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,KAAK;;AAG3C,IAAA,WAAA,CAAoB,WAA6B,EAAA;QAA7B,IAAW,CAAA,WAAA,GAAX,WAAW;;AAE/B,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,KAAK,EAAE;AACjB,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE;;;IAItC,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,KAAI;;;YAGlC,MAAM,OAAO,GAAG,CAAE,GAAG,IAAI,CAAE,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,GAAM,KAAK,CAAC,CAAC,GAAG,CAAC;;;YAG7D,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC;AAChD,SAAC,CAAC;;8GArCO,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAY,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,EAV5B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;AAKX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+MAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKU,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAZzC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,EAC1B,QAAA,EAAA;;;;;AAKX,EAAA,CAAA,EAAA,eAAA,EAEkB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,KAAK,EAAA,MAAA,EAAA,CAAA,+MAAA,CAAA,EAAA;+EAOnB,KAAK,EAAA,CAAA;sBADJ;gBAID,IAAI,EAAA,CAAA;sBADH;gBAOQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAGG,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,kBAAkB;;;ACvCjC;;;;AAIG;AAoBH;;AAEK;MA4BQ,4BAA4B,CAAA;AA4BvC;;AAEK;IACL,IACI,gBAAgB,CAAC,aAAyC,EAAA;QAC5D,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,GAAG,aAAa;;;AAiBtC;;;AAGK;AACL,IAAA,IACI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,eAAe;;IAE7B,IAAI,cAAc,CAAC,KAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,eAAe,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAqBrD,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,KAAK;;AAU3C,IAAA,WAAA,CAAoB,UAA0C,EAAA;QAA1C,IAAU,CAAA,UAAA,GAAV,UAAU;AAtF9B;;;AAGK;QACI,IAAc,CAAA,cAAA,GAAY,IAAI;QA0BvC,IAAa,CAAA,aAAA,GAAmC,0BAA0B;AAE1E;;;AAGK;AACI,QAAA,IAAA,CAAA,IAAI,GAAmB,cAAc,CAAC,MAAM;QAmB3C,IAAe,CAAA,eAAA,GAAY,KAAK;AAc1C;;AAEK;AACK,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAK;;AAiB5C,IAAA,WAAW,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAiB,EAAA;AACxE,QAAA,IAAI,WAAW,IAAI,cAAc,IAAI,cAAc,EAAE;YACnD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC;;;AAI3G,IAAA,QAAQ,CAAC,GAAM,EAAA;AACb,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;;8GAvGhB,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAqB,2BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAzB3B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;AAoBX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,kDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAArB,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAsB,4BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,eAAA,EAAA,eAAA,EAAA,KAAA,EAAA,KAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,6BAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKU,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBA3BxC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EACxB,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;AAoBX,EAAA,CAAA,EAAA,eAAA,EAEkB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,KAAK,EAAA,MAAA,EAAA,CAAA,kDAAA,CAAA,EAAA;6FAOV,WAAW,EAAA,CAAA;sBAAnB;gBAMQ,cAAc,EAAA,CAAA;sBAAtB;gBAKQ,GAAG,EAAA,CAAA;sBAAX;gBAKQ,GAAG,EAAA,CAAA;sBAAX;gBAKQ,MAAM,EAAA,CAAA;sBAAd;gBAMG,gBAAgB,EAAA,CAAA;sBADnB,KAAK;uBAAC,eAAe;gBAYb,IAAI,EAAA,CAAA;sBAAZ;gBAMQ,IAAI,EAAA,CAAA;sBAAZ;gBAOG,cAAc,EAAA,CAAA;sBADjB;gBAaQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAMQ,cAAc,EAAA,CAAA;sBAAtB;gBAKS,UAAU,EAAA,CAAA;sBAAnB;gBAGG,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;;;ACvIjC;;;;AAIG;AAeH;;;;AAIK;MAMQ,uBAAuB,CAAA;AAiElC;;;AAGK;AACL,IAAA,IAEI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,eAAe;;IAE7B,IAAI,cAAc,CAAC,KAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,eAAe,GAAG,qBAAqB,CAAC,KAAK,CAAC;;IAqBrD,WACY,CAAA,WAA6B,EAC7B,gBAA+C,EAAA;QAD/C,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;AAhG5B;;;AAGK;QACI,IAAa,CAAA,aAAA,GAAY,IAAI;AAEtC;;AAEK;AACe,QAAA,IAAA,CAAA,cAAc,GAAuB,kBAAkB,CAAC,IAAI;AAiChF;;;AAGK;AACI,QAAA,IAAA,CAAA,IAAI,GAAmB,cAAc,CAAC,MAAM;AAKrD;;AAEK;QAGL,IAAc,CAAA,cAAA,GAAY,IAAI;QAmBpB,IAAe,CAAA,eAAA,GAAG,KAAK;AAcjC;;AAEK;AACK,QAAA,IAAA,CAAA,UAAU,GAAoB,IAAI,YAAY,EAAE;QAkB1D,IAAQ,CAAA,QAAA,GAAG,kBAAkB;;IAX7B,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;;;AAI/C,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,KAAK;;AAK3C,IAAA,WAAW,CAAC,QAA4B,EAAA;AACtC,QAAA,IAAI,CAAC,cAAc,GAAG,QAAQ;;AAGhC,IAAA,cAAc,CAAC,WAAc,EAAA;AAC3B,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;;IAGhC,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;;IAG7B,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;;IAG5B,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;;IAG5B,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;;IAG3B,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;;IAG7B,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;;IAG5B,YAAY,GAAA;AACV,QAAA,QAAQ,IAAI,CAAC,cAAc;YACzB,KAAK,kBAAkB,CAAC,IAAI;AAC1B,gBAAA,OAAO,IAAI,CAAC,SAAS,EAAE;YACzB,KAAK,kBAAkB,CAAC,KAAK;AAC3B,gBAAA,OAAO,IAAI,CAAC,QAAQ,EAAE;YACxB,KAAK,kBAAkB,CAAC,IAAI;AAC1B,gBAAA,OAAO,IAAI,CAAC,SAAS,EAAE;;;IAI7B,YAAY,GAAA;AACV,QAAA,QAAQ,IAAI,CAAC,cAAc;YACzB,KAAK,kBAAkB,CAAC,IAAI;AAC1B,gBAAA,OAAO,IAAI,CAAC,SAAS,EAAE;YACzB,KAAK,kBAAkB,CAAC,KAAK;AAC3B,gBAAA,OAAO,IAAI,CAAC,QAAQ,EAAE;YACxB,KAAK,kBAAkB,CAAC,IAAI;AAC1B,gBAAA,OAAO,IAAI,CAAC,SAAS,EAAE;;;IAI7B,gBAAgB,GAAA;QACd,IAAI,IAAI,CAAC,cAAc,KAAK,kBAAkB,CAAC,IAAI,EAAE;YACnD,OAAO,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC;;AAGlD,QAAA,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC;;AAGnC,IAAA,kBAAkB,CAAC,SAAiB,EAAA;AAC1C,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC;;AAGnE,IAAA,iBAAiB,CAAC,SAAiB,EAAA;AACzC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC;;AAGlE,IAAA,kBAAkB,CAAC,SAAiB,EAAA;QAC1C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC;;8GAzLxG,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAZ,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,ktBC7BpC,k4EAqDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,2BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qCAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,OAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,6BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,KAAA,EAAA,KAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,8BAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,KAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,KAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDxBa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,cAEhB,KAAK,EAAA,QAAA,EAAA,k4EAAA,EAAA;qHAQV,aAAa,EAAA,CAAA;sBAArB;gBAKmB,cAAc,EAAA,CAAA;sBAAjC,KAAK;uBAAC,WAAW;gBAMT,GAAG,EAAA,CAAA;sBAAX;gBAKQ,GAAG,EAAA,CAAA;sBAAX;gBAKQ,MAAM,EAAA,CAAA;sBAAd;gBAKQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAKQ,kBAAkB,EAAA,CAAA;sBAA1B;gBAKQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAMQ,IAAI,EAAA,CAAA;sBAAZ;gBAGQ,WAAW,EAAA,CAAA;sBAAnB;gBAOD,cAAc,EAAA,CAAA;sBAFb;;sBACA,WAAW;uBAAC,sBAAsB;gBAM1B,IAAI,EAAA,CAAA;sBAAZ;gBAQG,cAAc,EAAA,CAAA;sBAFjB;;sBACA,WAAW;uBAAC,uBAAuB;gBAa3B,gBAAgB,EAAA,CAAA;sBAAxB;gBAMQ,cAAc,EAAA,CAAA;sBAAtB;gBAKS,UAAU,EAAA,CAAA;sBAAnB;gBAcG,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;;;AExIjC;;;;AAIG;AAcH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgLK;MAyBQ,mBAAmB,CAAA;AAxBhC,IAAA,WAAA,GAAA;AA0BE;;;AAGK;QACI,IAAa,CAAA,aAAA,GAAY,IAAI;AAEtC;;AAEK;AACI,QAAA,IAAA,CAAA,SAAS,GAAuB,kBAAkB,CAAC,IAAI;AAiChE;;;AAGK;AACI,QAAA,IAAA,CAAA,IAAI,GAAmB,cAAc,CAAC,MAAM;AAKrD;;AAEK;QACI,IAAc,CAAA,cAAA,GAAY,IAAI;QAkB7B,IAAe,CAAA,eAAA,GAAY,KAAK;AAG1C;;AAEK;QACI,IAAgB,CAAA,gBAAA,GAAW,GAAG;AAQvC;;AAEK;AACK,QAAA,IAAA,CAAA,UAAU,GAAoB,IAAI,YAAY,EAAE;AAC3D;AA7BC;;;AAGK;AACL,IAAA,IACI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,eAAe;;IAE7B,IAAI,cAAc,CAAC,KAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,eAAe,GAAG,qBAAqB,CAAC,KAAK,CAAC;;8GAxE1C,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAtBlB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,SAAA,EAAA,WAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;AAmBX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,WAAA,EAAA,KAAA,EAAA,KAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAxB/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;AAmBX,EAAA,CAAA;AACC,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAOU,aAAa,EAAA,CAAA;sBAArB;gBAKQ,SAAS,EAAA,CAAA;sBAAjB;gBAMQ,GAAG,EAAA,CAAA;sBAAX;gBAKQ,GAAG,EAAA,CAAA;sBAAX;gBAKQ,MAAM,EAAA,CAAA;sBAAd;gBAKQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAKQ,kBAAkB,EAAA,CAAA;sBAA1B;gBAKQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAMQ,IAAI,EAAA,CAAA;sBAAZ;gBAGQ,WAAW,EAAA,CAAA;sBAAnB;gBAKQ,cAAc,EAAA,CAAA;sBAAtB;gBAKQ,IAAI,EAAA,CAAA;sBAAZ;gBAOG,cAAc,EAAA,CAAA;sBADjB;gBAaQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAMQ,cAAc,EAAA,CAAA;sBAAtB;gBAKS,UAAU,EAAA,CAAA;sBAAnB;;;ACtTH;;;;AAIG;AAQH,MAAM,oBAAoB,GAAG;IAC3B,iBAAiB;CAClB;MAaY,cAAc,CAAA;8GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,EAdzB,YAAA,EAAA,CAAA,iBAAiB,CAKf,EAAA,OAAA,EAAA,CAAA,cAAc,aALhB,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAcN,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YATvB,cAAc,CAAA,EAAA,CAAA,CAAA;;2FASL,cAAc,EAAA,UAAA,EAAA,CAAA;kBAX1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,cAAc;AACf,qBAAA;AACD,oBAAA,YAAY,EAAE;AACZ,wBAAA,GAAG,oBAAoB;AACxB,qBAAA;AACD,oBAAA,OAAO,EAAE;AACP,wBAAA,GAAG,oBAAoB;AACxB,qBAAA;AACF,iBAAA;;;AC1BD;;;;AAIG;AAeH;;;AAGK;AAEC,MAAO,mBAAoB,SAAQ,aAAmB,CAAA;AAG1D,IAAA,WAAA,CAA+B,MAAc,EAAA;AAC3C,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;;AAGxB,IAAA,SAAS,CAAC,MAAc,EAAA;AACtB,QAAA,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC;;IAItC,QAAQ,CAAC,IAAU,EAAE,IAAY,EAAA;QAC/B,MAAM,MAAM,GAAS,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AACrC,QAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;AAErB,QAAA,OAAO,MAAM;;IAGf,UAAU,CAAC,IAAU,EAAE,MAAc,EAAA;QACnC,MAAM,MAAM,GAAS,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AACrC,QAAA,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;AAEzB,QAAA,OAAO,MAAM;;IAGf,UAAU,CAAC,IAAU,EAAE,MAAc,EAAA;QACnC,MAAM,MAAM,GAAS,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AACrC,QAAA,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;AAEzB,QAAA,OAAO,MAAM;;IAGf,eAAe,CAAC,IAAU,EAAE,MAAc,EAAA;QACxC,MAAM,MAAM,GAAS,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AACrC,QAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;AAE9B,QAAA,OAAO,MAAM;;IAGf,iBAAiB,CAAC,IAAY,EAAE,MAAc,EAAA;AAC5C,QAAA,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;;IAGnD,iBAAiB,CAAC,IAAY,EAAE,MAAc,EAAA;QAC5C,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC;;IAG7C,KAAK,GAAA;QACH,OAAO,IAAI,IAAI,EAAE;;IAGnB,mBAAmB,GAAA;QACjB,OAAO,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC;;AAG5D,IAAA,OAAO,CAAC,IAAU,EAAA;AAChB,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE;;AAGvB,IAAA,QAAQ,CAAC,IAAU,EAAA;AACjB,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE;;AAGxB,IAAA,OAAO,CAAC,IAAU,EAAA;AAChB,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE;;AAG3B,IAAA,YAAY,CAAC,IAAU,EAAA;AACrB,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE;;AAGtB;;;AAGK;IACL,iBAAiB,GAAA;AACf,QAAA,OAAO,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC;;AAG7C,IAAA,YAAY,CAAC,IAAU,EAAE,KAA0B,GAAA,gBAAgB,CAAC,WAAW,EAAA;AAC7E,QAAA,MAAM,KAAK,GAAW,IAAI,CAAC,QAAQ,EAAE;QACrC,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC;;AAG/C,IAAA,mBAAmB,CAAC,KAAa,EAAE,KAA0B,GAAA,gBAAgB,CAAC,WAAW,EAAA;AACvF,QAAA,OAAO,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC;;IAGzE,iBAAiB,GAAA;AACf,QAAA,OAAO,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;;IAGtF,MAAM,CAAC,IAAU,EAAE,MAAc,EAAA;QAC/B,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;;AAG9C;;AAEK;IACL,KAAK,CAAC,IAAY,EAAE,MAAc,EAAA;QAChC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;;IAGnC,MAAM,CAAC,IAAU,EAAE,GAAW,EAAA;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC;;IAGnF,QAAQ,CAAC,IAAU,EAAE,GAAW,EAAA;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;;;QAG3E,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAC1E,QAAA,OAAO,KAAK;;IAGd,UAAU,CAAC,IAAU,EAAE,MAAc,EAAA;AACnC,QAAA,MAAM,MAAM,GAAS,IAAI,IAAI,CAAC,IAAI,CAAC;QACnC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,MAAM,CAAC;AAE7C,QAAA,OAAO,MAAM;;IAGf,QAAQ,CAAC,IAAU,EAAE,IAAY,EAAA;AAC/B,QAAA,MAAM,MAAM,GAAS,IAAI,IAAI,CAAC,IAAI,CAAC;QACnC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;AAEvC,QAAA,OAAO,MAAM;;AAGf,IAAA,QAAQ,CAAC,IAAU,EAAA;AACjB,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE;;AAGxB,IAAA,UAAU,CAAC,IAAU,EAAA;AACnB,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE;;AAG1B,IAAA,UAAU,CAAC,IAAU,EAAA;AACnB,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE;;AAG1B,IAAA,eAAe,CAAC,IAAU,EAAA;AACxB,QAAA,OAAO,IAAI,CAAC,eAAe,EAAE;;IAG/B,OAAO,CAAC,IAAU,EAAE,GAAW,EAAA;QAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;;AAGnF,IAAA,KAAK,CAAC,IAAU,EAAA;QACd,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;;IAGjC,YAAY,CAAC,KAAW,EAAE,KAAW,EAAA;QACnC,OAAO,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE;;AAG1C,IAAA,UAAU,CAAC,IAAY,EAAE,KAAa,EAAE,IAAY,EAAA;QAClD,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;;;QAI1C,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,GAAG,EAAE;YAC3B,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC;;AAEjD,QAAA,OAAO,MAAM;;AAGf,IAAA,WAAW,CAAC,IAAU,EAAA;AACpB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;;AAGpE,IAAA,aAAa,CAAC,IAAU,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;;AAGhE,IAAA,sBAAsB,CAAC,IAAU,EAAA;QAC/B,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE;;AAGzC,IAAA,UAAU,CAAC,IAAU,EAAA;AACnB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;;AAGpD,IAAA,YAAY,CAAC,IAAU,EAAA;AACrB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;;AAGlD,IAAA,OAAO,CAAC,IAAU,EAAA;AAChB,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE;;IAGvB,SAAS,CAAC,KAAW,EAAE,KAAW,EAAA;AAChC,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC;YACnC,KAAK,CAAC,OAAO,EAAE,KAAK,KAAK,CAAC,OAAO,EAAE;;IAGvC,WAAW,CAAC,KAAW,EAAE,KAAW,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC;YAClC,KAAK,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC,QAAQ,EAAE;;IAGzC,UAAU,CAAC,KAAW,EAAE,KAAW,EAAA;QACjC,OAAO,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE;;IAGpD,KAAK,GAAA;AACH,QAAA,OAAO,QAAQ;;AAGjB,IAAA,aAAa,CAAC,IAAU,EAAA;AACtB,QAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;;IAGzD,aAAa,GAAA;AACX,QAAA,OAAO,YAAY;;IAGrB,oBAAoB,GAAA;AAClB,QAAA,OAAO,SAAS;;AA9NP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,kBAGV,SAAS,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAHlB,mBAAmB,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;0BAIc,MAAM;2BAAC,SAAS;;;MCtBlB,0BAA0B,CAAA;AAGrC,IAAA,WAAA,CAAsB,WAA6B,EAAA;QAA7B,IAAW,CAAA,WAAA,GAAX,WAAW;QAFxB,IAAmB,CAAA,mBAAA,GAAG,EAAE;;AAKjC,IAAA,aAAa,CAAC,IAAA,GAAe,IAAI,CAAC,mBAAmB,EAAA;AACnD,QAAA,IAAI,IAAI,GAAM,IAAI,CAAC,YAAY,EAAE;AAEjC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAEhD,MAAM,MAAM,GAAQ,EAAE;AAEtB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE;AACvD,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YACjB,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC;;AAGhD,QAAA,OAAO,MAAM;;IAGf,YAAY,GAAA;QACV,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;QACpC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QAC3C,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7C,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7C,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC;AAElD,QAAA,OAAO,KAAK;;AAGd,IAAA,gBAAgB,CAAC,CAAS,EAAA;AACxB,QAAA,IAAI,CAAC,GAAG,EAAE,EAAE;YACV,OAAO,GAAG,GAAG,CAAC;;AAGhB,QAAA,OAAO,CAAC,CAAC,QAAQ,EAAE;;AAGrB,IAAA,eAAe,CAAC,iBAA0B,EAAE,WAAA,GAAuB,KAAK,EAAA;QACtE,IAAI,iBAAiB,EAAE;AACrB,YAAA,OAAO,CAAG,EAAA,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAI,CAAA,EAAA,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,EAAE;;QAGzF,IAAI,WAAW,EAAE;AACf,YAAA,OAAO,CAAG,EAAA,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAI,CAAA,EAAA,IAAI,CAAC,WAAW,CAAC,mCAAmC,EAAE,EAAE;;AAGxG,QAAA,OAAO,CAAG,EAAA,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAI,CAAA,EAAA,IAAI,CAAC,WAAW,CAAC,wBAAwB,EAAE,EAAE;;8GAhDlF,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAtB,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAA1B,0BAA0B,EAAA,CAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC;;;MCqBY,0BAA0B,CAAA;AAvBvC,IAAA,WAAA,GAAA;QAgCY,IAAgB,CAAA,gBAAA,GAAG,IAAI;QAUjC,IAAsB,CAAA,sBAAA,GAAG,KAAK;AAIpB,QAAA,IAAA,CAAA,cAAc,GAAuB,IAAI,YAAY,EAAE;AACvD,QAAA,IAAA,CAAA,SAAS,GAAuB,IAAI,YAAY,EAAE;AAC7D;IAxBC,IAAa,eAAe,CAAC,KAAa,EAAA;QACxC,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;;;;AAGjC,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,gBAAgB;;;IAI9B,IAAa,qBAAqB,CAAC,KAAa,EAAA;QAC9C,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK;;;AAGvC,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,sBAAsB;;;8GAjBzB,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EArBzB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;AAgBX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,gUAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,iBAAA,EAAA,QAAA,EAAA,gGAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKU,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAvBtC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EACrB,QAAA,EAAA;;;;;;;;;;;;;;;;AAgBX,EAAA,CAAA,EAAA,eAAA,EAEkB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,KAAK,EAAA,MAAA,EAAA,CAAA,gUAAA,CAAA,EAAA;8BAGN,eAAe,EAAA,CAAA;sBAA3B;gBAUY,qBAAqB,EAAA,CAAA;sBAAjC;gBAUQ,qBAAqB,EAAA,CAAA;sBAA7B;gBAES,cAAc,EAAA,CAAA;sBAAvB;gBACS,SAAS,EAAA,CAAA;sBAAlB;;;ACjDH;;;;AAIG;AAiCH,MAAM,QAAQ,GAAG;AACf,IAAA,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,mBAAmB,EAAE;IACzD,QAAQ;IACR,2BAA2B;IAC3B,0BAA0B;IAC1B,0BAA0B;CAC3B;AAED,MAAMmB,YAAU,GAAG;IACjB,2BAA2B;IAC3B,qCAAqC;IACrC,4BAA4B;IAC5B,6BAA6B;IAC7B,8BAA8B;IAC9B,4BAA4B;IAC5B,0BAA0B;IAC1B,0BAA0B;IAC1B,4BAA4B;IAC5B,2BAA2B;IAC3B,4BAA4B;IAC5B,yBAAyB;IACzB,6BAA6B;CAC9B;AAED;;;;;;;;;;;;;;;;AAgBK;MAOQ,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,iBAtC9B,2BAA2B;YAC3B,qCAAqC;YACrC,4BAA4B;YAC5B,6BAA6B;YAC7B,8BAA8B;YAC9B,4BAA4B;YAC5B,0BAA0B;YAC1B,0BAA0B;YAC1B,4BAA4B;YAC5B,2BAA2B;YAC3B,4BAA4B;YAC5B,yBAAyB;AACzB,YAAA,6BAA6B,aAqBlB,cAAc,EAAE,cAAc,EAAE,YAAY,aAjCvD,2BAA2B;YAC3B,qCAAqC;YACrC,4BAA4B;YAC5B,6BAA6B;YAC7B,8BAA8B;YAC9B,4BAA4B;YAC5B,0BAA0B;YAC1B,0BAA0B;YAC1B,4BAA4B;YAC5B,2BAA2B;YAC3B,4BAA4B;YAC5B,yBAAyB;YACzB,6BAA6B,CAAA,EAAA,CAAA,CAAA;+GA0BlB,mBAAmB,EAAA,SAAA,EAFnB,CAAC,GAAG,QAAQ,CAAC,YAHb,cAAc,EAAE,cAAc,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAK5C,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAE,cAAc,EAAE,cAAc,EAAE,YAAY,CAAE;AACzD,oBAAA,OAAO,EAAE,CAAC,GAAGA,YAAU,CAAC;AACxB,oBAAA,YAAY,EAAE,CAAC,GAAGA,YAAU,CAAC;AAC7B,oBAAA,SAAS,EAAE,CAAC,GAAG,QAAQ,CAAC;AACzB,iBAAA;;;ACnFD;;;;AAIG;MAeU,oBAAoB,CAAA;8GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAApB,oBAAoB,EAAA,YAAA,EAAA,CAFhB,uBAAuB,CAF5B,EAAA,OAAA,EAAA,CAAA,mBAAmB,EAAE,cAAc,EAAE,YAAY,CAAA,EAAA,OAAA,EAAA,CACjD,uBAAuB,CAAA,EAAA,CAAA,CAAA;AAGtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAJrB,OAAA,EAAA,CAAA,mBAAmB,EAAE,cAAc,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAIhD,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,mBAAmB,EAAE,cAAc,EAAE,YAAY,CAAC;oBAC5D,OAAO,EAAE,CAAC,uBAAuB,CAAC;oBAClC,YAAY,EAAE,CAAC,uBAAuB,CAAC;AACxC,iBAAA;;;AClBD;;;;AAIG;MAaU,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAFZ,YAAA,EAAA,CAAA,mBAAmB,CAFxB,EAAA,OAAA,EAAA,CAAA,oBAAoB,aACpB,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAGlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAJjB,oBAAoB,CAAA,EAAA,CAAA,CAAA;;2FAInB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,oBAAoB,CAAC;oBAC/B,OAAO,EAAE,CAAC,mBAAmB,CAAC;oBAC9B,YAAY,EAAE,CAAC,mBAAmB,CAAC;AACpC,iBAAA;;;AChBD;;;;AAIG;MAImB,uBAAuB,CAAA;AAG3C,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,CAAC,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;;AAEtF;;ACdD;;;;AAIG;AAyBG,MAAO,+BAAmC,SAAQ,uBAA0B,CAAA;AAmBhF,IAAA,WAAA,CAAsB,WAA6B,EAAA;AACjD,QAAA,KAAK,EAAE;QADa,IAAW,CAAA,WAAA,GAAX,WAAW;AALxB,QAAA,IAAA,CAAA,IAAI,GAAmB,cAAc,CAAC,MAAM;AAG3C,QAAA,IAAA,CAAA,MAAM,GAAoB,IAAI,YAAY,CAAC,IAAI,CAAC;QA0B1D,IAAc,CAAA,cAAA,GAAG,IAAI;QAGrB,IAAY,CAAA,YAAA,GAAG,IAAI;;AAvBnB,IAAA,IACI,OAAO,GAAA;QACT,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC9B,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC;;AAGtD,QAAA,OAAO,KAAK;;AAGd,IAAA,IACI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;;AAGtG,IAAA,IACI,GAAG,GAAA;QACL,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;;AASpG,IAAA,IACI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;;AAGrF,IAAA,IACI,aAAa,GAAA;AACf,QAAA,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC;;AAGvE,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,OAAO,IAAI;;AAGb,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;;AAG5E,QAAA,OAAO,KAAK;;AAGd,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,CAAC,IAAI,CAAC,IAAI;;AAGnB,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE;;AAG/E,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,KAAK;;AAG3C,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;;IAIzD,OAAO,GAAA;QACL,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE;YAC/B;;QAGF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGnB,cAAc,GAAA;QACtB,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;;IAG9E,cAAc,GAAA;QACtB,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;;IAG9E,aAAa,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGlD,IAAA,SAAS,CAAC,IAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAsB,EAAA;AAC7D,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC;AAC/E,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC;QAExE,OAAO,kBAAkB,IAAI,aAAa;;8GAnHjC,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAvB,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,EAN9B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;AAEX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIU,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAR3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,QAAQ,EAAE;;AAEX,EAAA,CAAA;oBACC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE;AACf,iBAAA;+EAGU,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,aAAa,EAAA,CAAA;sBAArB;gBAEQ,WAAW,EAAA,CAAA;sBAAnB;gBAEQ,GAAG,EAAA,CAAA;sBAAX;gBAEQ,GAAG,EAAA,CAAA;sBAAX;gBAEQ,MAAM,EAAA,CAAA;sBAAd;gBAEQ,IAAI,EAAA,CAAA;sBAAZ;gBAGS,MAAM,EAAA,CAAA;sBAAf;gBAOG,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,gBAAgB;gBAUzB,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,aAAa;gBAMtB,GAAG,EAAA,CAAA;sBADN,WAAW;uBAAC,WAAW;gBAMxB,cAAc,EAAA,CAAA;sBADb,WAAW;uBAAC,kBAAkB;gBAI/B,YAAY,EAAA,CAAA;sBADX,WAAW;uBAAC,gBAAgB;gBAIzB,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,aAAa;gBAMtB,aAAa,EAAA,CAAA;sBADhB,WAAW;uBAAC,sBAAsB;gBAM/B,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,gBAAgB;gBAczB,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,aAAa;gBAMtB,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,gBAAgB;gBAMzB,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,kBAAkB;gBAU/B,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO;;;ACvHvB;;;;AAIG;AA2BG,MAAO,gCAAoC,SAAQ,uBAA0B,CAAA;AAejF,IAAA,WAAA,CAAsB,WAA6B,EAAA;AACjD,QAAA,KAAK,EAAE;QADa,IAAW,CAAA,WAAA,GAAX,WAAW;AALxB,QAAA,IAAA,CAAA,IAAI,GAAmB,cAAc,CAAC,MAAM;AAG3C,QAAA,IAAA,CAAA,MAAM,GAAoB,IAAI,YAAY,CAAC,IAAI,CAAC;QAkD1D,IAAa,CAAA,aAAA,GAAG,IAAI;QAGpB,IAAc,CAAA,cAAA,GAAG,IAAI;;AA/CrB,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC;;AAGvE,IAAA,IACI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;;AAG1F,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;;AAGxF,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,OAAO,IAAI;;AAGb,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;;AAG7E,QAAA,OAAO,KAAK;;AAGd,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;;AAGzE,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE;;AAGvD,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,KAAK;;AAS3C,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;;IAI5C,OAAO,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB;;QAGF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGnB,cAAc,GAAA;QACtB,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;;IAGnF,cAAc,GAAA;QACtB,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;;IAGrF,SAAS,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGvC,OAAO,GAAA;QACf,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGrC,IAAA,SAAS,CAAC,IAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAsB,EAAA;AAC7D,QAAA,IAAI,KAAK,IAAI,GAAG,EAAE;YAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;YAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;YACjD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC;AAE7C,YAAA,OAAO,QAAQ,IAAI,SAAS,IAAI,QAAQ,IAAI,OAAO;;QAGrD,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;;8GA1GtC,gCAAgC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,EAR/B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,aAAA,EAAA,eAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;AAIX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIU,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAV5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,QAAQ,EAAE;;;;AAIX,EAAA,CAAA;oBACC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE;AACf,iBAAA;+EAGU,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,GAAG,EAAA,CAAA;sBAAX;gBAEQ,GAAG,EAAA,CAAA;sBAAX;gBAEQ,aAAa,EAAA,CAAA;sBAArB;gBAEQ,IAAI,EAAA,CAAA;sBAAZ;gBAGS,MAAM,EAAA,CAAA;sBAAf;gBAOG,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,gBAAgB;gBAMzB,UAAU,EAAA,CAAA;sBADb,WAAW;uBAAC,aAAa;gBAMtB,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,WAAW;gBAMpB,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,gBAAgB;gBAczB,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,aAAa;gBAMtB,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,gBAAgB;gBAMzB,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,kBAAkB;gBAM/B,aAAa,EAAA,CAAA;sBADZ,WAAW;uBAAC,iBAAiB;gBAI9B,cAAc,EAAA,CAAA;sBADb,WAAW;uBAAC,kBAAkB;gBAQ/B,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO;;;ACvGvB;;;;AAIG;AA2BG,MAAO,iCAAqC,SAAQ,uBAA0B,CAAA;AAGlF,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;AAqBjD,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,OAAO,IAAI;;AAGb,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;;AAG9E,QAAA,OAAO,KAAK;;AAGd,IAAA,IACI,OAAO,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC;;AAErD,QAAA,OAAO,KAAK;;AAGd,IAAA,IACI,UAAU,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;;AAE1E,QAAA,OAAO,KAAK;;AAGd,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;;AAExE,QAAA,OAAO,KAAK;;AAGd,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;;AAG9E,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE;;AAGvD,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,KAAK;;IAI3C,OAAO,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB;;QAGF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG7B,IAAA,WAAA,CAAsB,WAA6B,EAAA;AACjD,QAAA,KAAK,EAAE;QADa,IAAW,CAAA,WAAA,GAAX,WAAW;AAxExB,QAAA,IAAA,CAAA,IAAI,GAAmB,cAAc,CAAC,MAAM;AAG3C,QAAA,IAAA,CAAA,MAAM,GAAoB,IAAI,YAAY,CAAC,IAAI,CAAC;QAG1D,IAAc,CAAA,cAAA,GAAG,IAAI;QAGrB,IAAc,CAAA,cAAA,GAAG,IAAI;;IAmEX,cAAc,GAAA;QACtB,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;;IAGpF,cAAc,GAAA;QACtB,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;;IAGtF,UAAU,GAAA;QAClB,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGxC,QAAQ,GAAA;QAChB,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGtC,QAAQ,CAAC,IAAO,EAAE,KAAyB,EAAA;QACnD,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,EAAE;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC;AACrD,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC;AACzD,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC;AAErD,YAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC;AAC9E,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC;YAEvE,OAAO,kBAAkB,IAAI,aAAa;;AAG5C,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC;;8GAtH7C,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iCAAiC,EARhC,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;AAIX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIU,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAV7C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,8BAA8B;AACxC,oBAAA,QAAQ,EAAE;;;;AAIX,EAAA,CAAA;oBACC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE;AACf,iBAAA;+EAQU,IAAI,EAAA,CAAA;sBAAZ;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBAEQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBAEQ,IAAI,EAAA,CAAA;sBAAZ;gBAGS,MAAM,EAAA,CAAA;sBAAf;gBAGD,cAAc,EAAA,CAAA;sBADb,WAAW;uBAAC,kBAAkB;gBAI/B,cAAc,EAAA,CAAA;sBADb,WAAW;uBAAC,kBAAkB;gBAI3B,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,gBAAgB;gBAczB,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,gBAAgB;gBASzB,UAAU,EAAA,CAAA;sBADb,WAAW;uBAAC,aAAa;gBAStB,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,WAAW;gBASpB,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,aAAa;gBAMtB,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,gBAAgB;gBAMzB,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,kBAAkB;gBAM/B,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO;;;AC5GvB;;;;AAIG;AAuBH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyIK;MAyBQ,wBAAwB,CAAA;AA4BnC;;AAEK;IACL,IACI,cAAc,CAAC,aAA0D,EAAA;QAC3E,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,gBAAgB,GAAG,aAAa;;;AAKzC;;AAEK;IACL,IACI,mBAAmB,CAAC,aAA0D,EAAA;QAChF,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,kBAAkB,GAAG,aAAa;;;AAK3C;;AAEK;IACL,IACI,kBAAkB,CAAC,aAA0D,EAAA;QAC/E,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,iBAAiB,GAAG,aAAa;;;AAwB1C;;;AAGK;AACL,IAAA,IACI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,eAAe;;IAE7B,IAAI,cAAc,CAAC,KAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,eAAe,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAqBrD,IAAA,WAAA,CAAsB,WAA6B,EAAA;QAA7B,IAAW,CAAA,WAAA,GAAX,WAAW;AA7GjC;;;AAGK;QACI,IAAa,CAAA,aAAA,GAAY,IAAI;AAEtC;;AAEK;AACI,QAAA,IAAA,CAAA,SAAS,GAAuB,kBAAkB,CAAC,IAAI;QA2BhE,IAAgB,CAAA,gBAAA,GAAgD,+BAA+B;QAWtF,IAAkB,CAAA,kBAAA,GAAgD,iCAAiC;QAW5G,IAAiB,CAAA,iBAAA,GAAgD,gCAAgC;AAEjG;;;AAGK;AACI,QAAA,IAAA,CAAA,IAAI,GAAmB,cAAc,CAAC,MAAM;AAKrD;;AAEK;QACI,IAAc,CAAA,cAAA,GAAY,IAAI;QAkB7B,IAAe,CAAA,eAAA,GAAY,KAAK;AAG1C;;AAEK;QACI,IAAgB,CAAA,gBAAA,GAAW,GAAG;AAQvC;;AAEK;AACK,QAAA,IAAA,CAAA,WAAW,GAAqC,IAAI,YAAY,EAAE;;AAK5E,IAAA,QAAQ,CAAC,IAAO,EAAA;QACd,IAAI,CAAC,cAAc,EAAE;AACrB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;;IAGnB,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;;;AAInC,IAAA,cAAc,CAAC,IAAO,EAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;AAC3B,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;;aACf;AACL,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;;;IAIlB,gBAAgB,GAAA;QACtB,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK;AACjC,QAAA,OAAO,KAAK,IAAI,CAAC,GAAG;;AAGd,IAAA,WAAW,CAAC,KAAQ,EAAA;AAC1B,QAAA,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;;AAGrB,IAAA,SAAS,CAAC,IAAO,EAAA;AACvB,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK;AAE5B,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE;YAClD,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;;aACjC;AACL,YAAA,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;;;AAIzC,IAAA,WAAW,CAAC,KAAyB,EAAA;AAC3C,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;;8GAzJnB,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAtBvB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,SAAA,EAAA,WAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,cAAA,EAAA,CAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,oBAAA,EAAA,qBAAA,CAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,CAAA,mBAAA,EAAA,oBAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;AAmBX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAwB,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,WAAA,EAAA,KAAA,EAAA,KAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGU,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAxBpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;AAmBX,EAAA,CAAA;AACC,oBAAA,UAAU,EAAE;AACf,iBAAA;+EAMU,aAAa,EAAA,CAAA;sBAArB;gBAKQ,SAAS,EAAA,CAAA;sBAAjB;gBAMQ,GAAG,EAAA,CAAA;sBAAX;gBAKQ,GAAG,EAAA,CAAA;sBAAX;gBAKQ,MAAM,EAAA,CAAA;sBAAd;gBAMG,cAAc,EAAA,CAAA;sBADjB,KAAK;uBAAC,kBAAkB;gBAYrB,mBAAmB,EAAA,CAAA;sBADtB,KAAK;uBAAC,oBAAoB;gBAMlB,kBAAkB,EAAA,CAAA;sBAA1B;gBAMG,kBAAkB,EAAA,CAAA;sBADrB,KAAK;uBAAC,mBAAmB;gBAYjB,IAAI,EAAA,CAAA;sBAAZ;gBAGQ,WAAW,EAAA,CAAA;sBAAnB;gBAKQ,cAAc,EAAA,CAAA;sBAAtB;gBAKQ,KAAK,EAAA,CAAA;sBAAb;gBAOG,cAAc,EAAA,CAAA;sBADjB;gBAaQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAMQ,cAAc,EAAA,CAAA;sBAAtB;gBAKS,WAAW,EAAA,CAAA;sBAApB;;;ACzSH;;;;AAIG;MAqBU,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,iBAN9B,wBAAwB;YACxB,+BAA+B;YAC/B,gCAAgC;YAChC,iCAAiC,CAAA,EAAA,OAAA,EAAA,CANzB,oBAAoB,CAAA,EAAA,OAAA,EAAA,CACpB,wBAAwB,CAAA,EAAA,CAAA,CAAA;AAQvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YATtB,oBAAoB,CAAA,EAAA,CAAA,CAAA;;2FASnB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAVjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,oBAAoB,CAAC;oBAC/B,OAAO,EAAE,CAAC,wBAAwB,CAAC;AACnC,oBAAA,YAAY,EAAE;wBACZ,wBAAwB;wBACxB,+BAA+B;wBAC/B,gCAAgC;wBAChC,iCAAiC;AAClC,qBAAA;AACF,iBAAA;;;ACxBD;;;;AAIG;MAIU,qBAAqB,GAAG,IAAI,cAAc,CAAC,uBAAuB;AASlE,MAAA,yCAAyC,GAAmC;AACvF,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,WAAW,EAAE,KAAK;AAClB,IAAA,WAAW,EAAE,KAAK;AAClB,IAAA,QAAQ,EAAE,OAAO;;;ACnBnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCG;MAOU,eAAe,CAAA;AAN5B,IAAA,WAAA,GAAA;AAOE;;;;AAIG;QAGH,IAAI,CAAA,IAAA,GAAG,MAAM;AACd;8GATY,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,kJAJd,CAAiD,+CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,yEAAA,CAAA,EAAA,CAAA,CAAA;;2FAIlD,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;+BACI,SAAS,EAAA,QAAA,EACT,CAAiD,+CAAA,CAAA,EAAA,UAAA,EAE/C,KAAK,EAAA,MAAA,EAAA,CAAA,yEAAA,CAAA,EAAA;8BAUnB,IAAI,EAAA,CAAA;sBAFH;;sBACA,WAAW;uBAAC,WAAW;;AAI1B;;;AAGG;MAOU,mBAAmB,CAAA;AANhC,IAAA,WAAA,GAAA;AAOE;;;;AAIG;QAGH,IAAI,CAAA,IAAA,GAAG,UAAU;AAClB;8GATY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,uJAJlB,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wDAAA,CAAA,EAAA,CAAA,CAAA;;2FAI5B,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;+BACI,cAAc,EAAA,QAAA,EACd,CAA2B,yBAAA,CAAA,EAAA,UAAA,EAEzB,KAAK,EAAA,MAAA,EAAA,CAAA,wDAAA,CAAA,EAAA;8BAUnB,IAAI,EAAA,CAAA;sBAFH;;sBACA,WAAW;uBAAC,WAAW;;;MC9Cb,yBAAyB,CAAA;IAMpC,IAAa,QAAQ,CAAC,QAAiB,EAAA;QACrC,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;YACzB,IAAI,CAAC,eAAe,EAAE;;AAExB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;;;AAErC,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;;IAOvB,WAAsB,CAAA,MAAc,EACd,eAA2B,EAAA;QAD3B,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAe,CAAA,eAAA,GAAf,eAAe;AArB3B,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,OAAO,EAAW;AACxC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,CAAC,QAAQ,CAAC,CAAC;AACxE,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;AAc9B,QAAA,IAAA,CAAA,MAAM,GAAsC,IAAI,YAAY,EAAE;;IASxE,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;;IAGzC,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;;;;YAIjB,IAAI,CAAC,MAAM,CAAC;AACX,iBAAA,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAClD,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;;;IAIlC,eAAe,GAAA;QACvB,IAAI,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE;YAChE,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAC5B,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,cAAc,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAC,CAAC,CAAC;;;IAIjF,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;;8GApDf,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAPxB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;AAEX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,oSAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBATrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EACpB,QAAA,EAAA;;AAEX,EAAA,CAAA,EAAA,eAAA,EAEkB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,KAAK,EAAA,MAAA,EAAA,CAAA,oSAAA,CAAA,EAAA;iGAQN,QAAQ,EAAA,CAAA;sBAApB;gBAUQ,KAAK,EAAA,CAAA;sBAAb;gBACS,MAAM,EAAA,CAAA;sBAAf;gBAE4B,qBAAqB,EAAA,CAAA;sBAAjD,SAAS;uBAAC,gBAAgB;gBAO3B,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO;;;ACjBvB;;;AAGG;MASU,qBAAqB,CAAA;AAahC;;AAEG;AACH,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;;AAGlC;;AAEK;AACL,IAAA,IACI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW;;IAEzB,IAAI,UAAU,CAAC,UAAkB,EAAA;AAC/B,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU;;AAM/B;;AAEK;AACL,IAAA,IACI,iBAAiB,GAAA;QACnB,OAAO,IAAI,CAAC,kBAAkB;;IAEhC,IAAI,iBAAiB,CAAC,KAAc,EAAA;AAClC,QAAA,IAAI,CAAC,kBAAkB,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAKxD;;AAEK;AACL,IAAA,IACI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,cAAc;;IAE5B,IAAI,aAAa,CAAC,KAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,cAAc,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAKpD;;;AAGK;AACL,IAAA,IACI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY;;IAE1B,IAAI,WAAW,CAAC,KAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAKlD;;AAEK;AACL,IAAA,IACI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa;;IAE3B,IAAI,YAAY,CAAC,KAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,aAAa,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAKnD;;;AAGK;IACL,IACI,IAAI,CAAC,IAAY,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;;AAEnB,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK;;AAInB;;AAEK;IACL,IACI,IAAI,CAAC,IAAO,EAAA;AACd,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QACpD,IAAI,CAAC,kBAAkB,EAAE;AACzB,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;AAGxB,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK;;IAwBnB,WAC2C,CAAA,MAA0B,EACzD,eAA2B,EAClB,MAAc,EAC1B,EAAqB,EAClB,wBAAuD,EACvD,WAA6B,EAAA;QALE,IAAM,CAAA,MAAA,GAAN,MAAM;QACrC,IAAe,CAAA,eAAA,GAAf,eAAe;QAElB,IAAE,CAAA,EAAA,GAAF,EAAE;QACC,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB;QACxB,IAAW,CAAA,WAAA,GAAX,WAAW;AA7Ib,QAAA,IAAA,CAAA,KAAK,GAAkB,IAAI,OAAO,EAAQ;QAM3C,IAAsB,CAAA,sBAAA,GAAG,sDAAgC;QAElE,IAAI,CAAA,IAAA,GAAG,IAAI;AAEX,QAAA,IAAA,CAAA,uBAAuB,GAAkB,IAAI,OAAO,EAAE;AAqBtD,QAAA,IAAA,CAAA,kBAAkB,GAAW,IAAI,CAAC,eAAe,EAAE;QAyBzC,IAAc,CAAA,cAAA,GAAY,IAAI;AA4DxC;;;;AAIG;QACM,IAAU,CAAA,UAAA,GAAY,IAAI;AAQnC;;AAEK;AACK,QAAA,IAAA,CAAA,YAAY,GAA2C,IAAI,YAAY,EAA4B;AAW3G,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;;IAGlC,WAAW,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,YAAY,EAAiB,EAAA;AAC/E,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,EAAE;AAC7C,QAAA,IAAI,cAAc,KAAK,IAAI,CAAC,kBAAkB,EAAE;AAC9C,YAAA,IAAI,CAAC,kBAAkB,GAAG,cAAc;AACxC,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE;;QAGrC,MAAM,eAAe,GAAG,IAAI,IAAI,iBAAiB,IAAI,WAAW,IAAI,YAAY;AAEhF,QAAA,IAAI,eAAe,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YAC5C,IAAI,CAAC,kBAAkB,EAAE;;;AAI7B,IAAA,OAAO,CAAC,OAAmB,EAAA;AACzB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;;AAGxB,IAAA,MAAM,CAAC,OAAmB,EAAA;AACxB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;;IAGxB,cAAc,GAAA;QACZ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;AACpC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,IAAI,EAAE,IAAI;AACX,SAAA,CAAC;;AAGJ,IAAA,OAAO,CAAC,KAAa,EAAA;AACnB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;;AAG/D,IAAA,SAAS,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;;AAGjE,IAAA,SAAS,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;;AAGjE,IAAA,cAAc,CAAC,KAAQ,EAAA;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;;AAGzB,IAAA,eAAe,CAAC,cAA2B,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,cAAc,EAAE;YAC/D;;;;AAKF,QAAA,MAAM,SAAS,GAAG,cAAc,KAAA,IAAA,wBAAsB,CAAC,CAAC,GAAG,CAAC;QAC5D,MAAM,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,mBAAmB;AAClE,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;;AAGnE,IAAA,WAAW,CAAC,IAAO,EAAA;QACjB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;IAGxC,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,IAAI,EAAE,IAAI;AACX,SAAA,CAAC;;IAGJ,iBAAiB,CAAC,KAAK,EAAE,IAAsB,EAAA;QAC7C,OAAO,IAAI,CAAC,KAAK;;IAGnB,wBAAwB,CAAC,KAAK,EAAE,IAAO,EAAA;QACrC,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;;IAGvC,gBAAgB,CAAC,KAAK,EAAE,IAAiB,EAAA;AACvC,QAAA,OAAO,IAAI;;IAGb,WAAW,GAAA;QACT,OAAO,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,YAAY;;AAG/C,IAAA,cAAc,CAAC,GAAW,EAAA;AACxB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG;;AAGrD,QAAA,OAAO,KAAK;;AAGd,IAAA,gBAAgB,CAAC,GAAW,EAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG;;AAGvD,QAAA,OAAO,KAAK;;AAGd,IAAA,gBAAgB,CAAC,GAAW,EAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG;;AAGvD,QAAA,OAAO,KAAK;;AAGd,IAAA,mBAAmB,CAAC,SAAsB,EAAA;AACxC,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,OAAO,SAAS,KAAK,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG/D,QAAA,OAAO,KAAK;;AAGd,IAAA,iBAAiB,CAAC,IAAO,EAAA;AACvB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,WAAW,EAAE;;AAG7E,IAAA,uBAAuB,CAAC,KAAQ,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC;;AAG/D,QAAA,OAAO,KAAK;;IAGJ,kBAAkB,GAAA;QAC1B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AAEtG,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,EAAE;AAC9C,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,wBAAwB,EAAE;AAC3D,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE;;AAGvF;;AAEG;IACH,SAAS,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO;;IAG3B,aAAa,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AAC3B,YAAA,OAAO,KAAK,CAAC,EAAE,EAAE,CAAC,CAAS,KAAI;AAC7B,gBAAA,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE;AAC9E,aAAC,CAAC;;AAGJ,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,OAAO,KAAK,CAAC,EAAE,EAAE,CAAC,CAAS,KAAI;AAC7B,gBAAA,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;AAC7B,gBAAA,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;AACjF,aAAC,CAAC;;QAGJ,OAAO,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAS,KAAI;AACvC,YAAA,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE;AACnC,YAAA,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;AACjF,SAAC,CAAC;;IAGM,wBAAwB,GAAA;AAChC,QAAA,OAAO,KAAK,CAAC,EAAE,EAAE,CAAC,CAAS,KAAI;AAC7B,YAAA,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE;AAC9E,SAAC,CAAC;;IAGM,eAAe,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,EAAE;;QAGrD,OAAO,IAAI,CAAC,UAAU;;AAGxB;;AAEG;IACH,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,OAAO,CAAA,EACL,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC;AACxB,kBAAE,IAAI,CAAC,WAAW,CAAC,+BAA+B;kBAChD,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAC3C,EAAE;;aACG;YACL,OAAO,CAAA,EACL,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC;AACxB,kBAAE,IAAI,CAAC,WAAW,CAAC,mCAAmC;kBACpD,IAAI,CAAC,WAAW,CAAC,wBAAwB,EAC/C,EAAE;;;AAII,IAAA,cAAc,CAAC,MAA0B,EAAA;QACjD,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB;;aAC5C;AACL,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC;;AAG/E,QAAA,MAAM,YAAY,GAAG,EAAE,GAAG,yCAAyC,EAAE,IAAI,MAAM,EAAE,YAAY,IAAI,EAAE,CAAC,EAAE;AACtG,QAAA,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS;AACvC,QAAA,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC,WAAW;AAC3C,QAAA,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC,WAAW;AAC3C,QAAA,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,QAAQ;;8GAnW5B,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAyItB,qBAAqB,EAAA,EAAA,EAAA,KAAA,EAAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAErB,SAAS,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,0BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGA3IR,qBAAqB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAsIrB,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrL9B,izHAsGA,EAAA,MAAA,EAAA,CAAA,ypBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,uBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDvDa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,YAGf,cAAc,EAAA,eAAA,EACP,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,izHAAA,EAAA,MAAA,EAAA,CAAA,ypBAAA,CAAA,EAAA;;0BA2IhB,MAAM;2BAAC,qBAAqB;;0BAE5B,MAAM;2BAAC,SAAS;wIAnHf,UAAU,EAAA,CAAA;sBADb;gBAeG,iBAAiB,EAAA,CAAA;sBADpB;gBAcG,aAAa,EAAA,CAAA;sBADhB;gBAeG,WAAW,EAAA,CAAA;sBADd;gBAcG,YAAY,EAAA,CAAA;sBADf;gBAeG,IAAI,EAAA,CAAA;sBADP;gBAaG,IAAI,EAAA,CAAA;sBADP;gBAmBQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,qBAAqB,EAAA,CAAA;sBAA7B;gBAKS,YAAY,EAAA,CAAA;sBAArB;gBAC+C,MAAM,EAAA,CAAA;sBAArD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;AExG1C,MAAO,2BAA+B,SAAQ,mBAAsB,CAAA;AAoDxE,IAAA,WAAA,CACY,WAA6B,EAChC,EAAqB,EAClB,wBAAuD,EAAA;AAEjE,QAAA,KAAK,EAAE;QAJG,IAAW,CAAA,WAAA,GAAX,WAAW;QACd,IAAE,CAAA,EAAA,GAAF,EAAE;QACC,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB;;IAKpC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE;;;IAI5D,eAAe,GAAA;QACb,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;;AAGhE,IAAA,iBAAiB,CAAC,IAAO,EAAA;AACvB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AAClD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AACtD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AACtD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAEhE,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;QACpD,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC;QACvD,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC;QACvD,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC;QACvD,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,OAAO,EAAE,YAAY,CAAC;AAEjE,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO;;AAGrB,IAAA,YAAY,CAAC,YAAsC,EAAA;AACjD,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAE/C,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC1F,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC9F,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC9F,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAExG,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO;;IAGrB,SAAS,GAAA;QACP,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGjC,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;;IAGhD,WAAW,GAAA;QACT,OAAO,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,YAAY;;IAG/C,OAAO,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,KAAK;;8GA7GhC,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAApC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA0B,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,EAiD3B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,KAAA,EAAA,OAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,uBAAuB,EACvB,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,qBAAqB,EA5GpB,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wvBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,WAAA,EAAA,KAAA,EAAA,KAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,aAAA,EAAA,cAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,UAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,uBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKU,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBA5DvC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EACvB,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDX,EAAA,CAAA,EAAA,eAAA,EAEkB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,KAAK,EAAA,MAAA,EAAA,CAAA,wvBAAA,CAAA,EAAA;qJAMV,WAAW,EAAA,CAAA;sBAAnB;gBAKQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAKQ,aAAa,EAAA,CAAA;sBAArB;gBAMQ,WAAW,EAAA,CAAA;sBAAnB;gBAKQ,YAAY,EAAA,CAAA;sBAApB;gBAMQ,IAAI,EAAA,CAAA;sBAAZ;gBAKQ,UAAU,EAAA,CAAA;sBAAlB;gBAKQ,KAAK,EAAA,CAAA;sBAAb;gBAEQ,eAAe,EAAA,CAAA;sBAAvB;gBAEQ,qBAAqB,EAAA,CAAA;sBAA7B;gBAEQ,qBAAqB,EAAA,CAAA;sBAA7B;gBAEmC,YAAY,EAAA,CAAA;sBAA/C,SAAS;uBAAC,uBAAuB;gBACA,UAAU,EAAA,CAAA;sBAA3C,SAAS;uBAAC,qBAAqB;;;AC/HlC;;;;AAIG;AAeG,MAAO,8BAA+B,SAAQ,8BAA8B,CAAA;AAKhF,IAAA,MAAM,CAAI,MAA4B,EAAA;QACpC,OAAO,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,MAAM,CAAC;;8GANjD,8BAA8B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA9B,8BAA8B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAG9B,2BAA2B,EAR1B,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;AAEX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGU,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAP1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,QAAQ,EAAE;;AAEX,EAAA,CAAA;AACC,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAI2D,gBAAgB,EAAA,CAAA;sBAAzE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,2BAA2B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;ACtB1D;;;;AAIG;AA4BH;;;AAGK;MACiB,mBAAmB,CAAA;AAoBxC;AAsBD;;;AAGK;MACiB,YAAY,CAAA;AAmCjC;MAEY,eAAe,GAAG,IAAI,cAAc,CAA2B,oBAAoB;MAEnF,uBAAuB,GAAG,IAAI,cAAc,CAAC,sBAAsB;AAEhF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2IK;MAiBQ,qBAAqB,CAAA;AAChC;;AAEK;;IAEL,IACI,SAAS,CAAC,MAAuB,EAAA;AACnC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;QACpB,IAAI,CAAC,WAAW,EAAE;;IA2BpB,WACiC,CAAA,QAAQ,EACJ,kBAA4C,EACrE,OAAmB,EACnB,WAA6B,EAC7B,cAAiC,EAAA;QAJZ,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACJ,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB;QAC3C,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAc,CAAA,cAAA,GAAd,cAAc;AAlBhB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;QAC9B,IAAiB,CAAA,iBAAA,GAAY,KAAK;AAElC,QAAA,IAAA,CAAA,QAAQ,GAAgB,MAAK,GAAG;AAChC,QAAA,IAAA,CAAA,SAAS,GAAe,MAAK,GAAG;AAE1C;;AAEK;AACK,QAAA,IAAA,CAAA,SAAS,GAAgB,UAAU,CAAC,OAAO,CACnD,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAC7G;QASC,IAAI,CAAC,sBAAsB,EAAE;;AAG/B;;AAEK;AACL,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa;;AAGnC;;AAEK;AACL,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK;;IAGzB,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;;AAG1B;;AAEK;AACL,IAAA,UAAU,CAAC,KAAQ,EAAA;AACjB,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACvB,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;;aACjB;AACL,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;;AAItB,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGrB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU;;AAGlC;;AAEK;IACL,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;;AAG7B;;AAEG;IACO,UAAU,GAAA;AAClB,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;;AAGpB;;AAEK;IACK,cAAc,GAAA;AACtB;;;AAGK;AACL,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,EAAE,EAAE;AAC1B,YAAA,OAAO,IAAI;;AAGb,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AACnF,QAAA,OAAO,OAAO,GAAG,IAAI,GAAG,EAAE,iBAAiB,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE;;AAG3E;;AAEK;IACK,YAAY,GAAA;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE;AAC/C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAC9E,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI;AAChF,cAAE;AACF,cAAE,EAAE,eAAe,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;;AAG5D;;AAEK;IACK,YAAY,GAAA;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE;AAC/C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAC9E,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI;AAChF,cAAE;AACF,cAAE,EAAE,eAAe,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;;AAG5D;;AAEK;IACK,eAAe,GAAA;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE;AAC/C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAC9E,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,kBAAkB,EAAE,IAAI,EAAE;;AAG7F;;AAEK;IACK,uBAAuB,GAAA;QAC/B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC,MAAM,YAAY,MAAM,CAAC;AAEpG,QAAA,IAAI,IAAI,CAAC,2BAA2B,EAAE,EAAE;AACtC,YAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC;;;AAI/D;;AAEK;IACK,WAAW,GAAA;QACnB,IAAI,CAAC,uBAAuB,EAAE;QAC9B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AAEhC,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;;AAGvF,QAAA,IAAI,CAAC,+BAA+B,EAAE,WAAW,EAAE;AACnD,QAAA,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC,MAAM,CAAC;AAChD,aAAA,IAAI,CACH,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAC7B,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAC7B,oBAAoB,EAAE,EACtB,QAAQ,EAAE,EACV,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAEzB,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,KAAI;AACtC,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;AACtE,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;;AAEzB,SAAC,CAAC;;;;AAKJ,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC3B,IAAI,CAAC,MAAM,CAAC;AACT,iBAAA,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,OAAO,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC,EAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAC1B,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;iBAEzB,SAAS,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3B,gBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;AACnC,gBAAA,IAAI,CAAC,KAAK,GAAG,SAAS;AACxB,aAAC,CAAC;;QAGN,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAQ,KAAI;AAC5E,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACvB,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AACtB,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AAEpB,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE;gBAC5B,IAAI,CAAC,UAAU,EAAE;;AAErB,SAAC,CAAC;AAEF,QAAA,KAAK,CACH,IAAI,CAAC,MAAM,CAAC,IAAI,EAChB,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,CAChC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,KAAK,IAAI,CAAC,KAAK,CAAC,CACjF;AAEA,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC7B,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;;AAG5B,IAAA,WAAW,CAAC,KAAQ,EAAA;AAC5B,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK;;AAGjB,IAAA,UAAU,CAAC,KAAQ,EAAA;QAC3B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;;AAG7F;;AAEK;IACK,2BAA2B,GAAA;AACnC,QAAA,OAAO,CAAC,IAAI,CAAC,iBAAiB,IAAI,EAAE,IAAI,CAAC,iBAAiB,YAAY,mBAAmB,CAAC;;IAGlF,sBAAsB,GAAA;AAC9B,QAAA,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO;AAC1B,aAAA,IAAI,CACH,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,EAC1B,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEzB,aAAA,SAAS,CAAC,CAAC,KAAa,KAAK,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;;AAGhE;;AAEK;AACK,IAAA,iBAAiB,CAAC,KAAa,EAAA;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AAExC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACnB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;;AAGd,IAAA,eAAe,CAAC,KAAK,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AAC7D,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;;AAGhE,QAAA,OAAO,IAAI;;8GAzQF,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAoCtB,WAAW,EAAA,EAAA,EAAA,KAAA,EACX,eAAe,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA5C,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AArCd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAdnB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,CAAA,cAAA,EAAA,WAAA,CAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACpD,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACpD,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;AACJ,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGQ,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAhBjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,2BAA2B,CAAC;AACpD,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;AACD,wBAAA;AACI,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAAE,UAAU,CAAC,2BAA2B,CAAC;AACpD,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;AACJ,qBAAA;AACD,oBAAA,UAAU,EAAE;AACf,iBAAA;;0BAqCI,MAAM;2BAAC,WAAW;;0BAClB,MAAM;2BAAC,eAAe;2HA/BrB,SAAS,EAAA,CAAA;sBADZ,KAAK;uBAAC,cAAc;;;AC5RvB;;;;AAIG;AA8CH;;AAEK;AACC,MAAgB,YAAsB,SAAQ,YAAkB,CAAA;IAmJpE,WACY,CAAA,OAAyB,EACzB,eAAyC,EACzC,sBAAuD,EACvD,GAA6B,EAC7B,WAA6B,EAC7B,kBAAkB,EAAA;AAE5B,QAAA,KAAK,EAAE;QAPG,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB;QACtB,IAAG,CAAA,GAAA,GAAH,GAAG;QACH,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB;AAjErB,QAAA,IAAA,CAAA,cAAc,GAAkB,IAAI,OAAO,EAAE;AAgC5C,QAAA,IAAA,CAAA,KAAK,GAAwB,IAAI,aAAa,EAAQ;AAEhE;;;AAGK;AACK,QAAA,IAAA,CAAA,SAAS,GAAe,IAAI,OAAO,EAAE;QAOrC,IAAa,CAAA,aAAA,GAAG,CAAC;AAEjB,QAAA,IAAA,CAAA,UAAU,GAAiB,YAAY,CAAC,gBAAgB;AAExD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;AAQ9B,QAAA,IAAA,CAAA,KAAK,GAAkB,IAAI,OAAO,EAAQ;;AAapD;;AAEK;AACL,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ;;AAGlD;;AAEK;AACL,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;;AAGtC,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;;AAG3C,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;;AAGlC;;AAEG;AACH,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;;AAKlC;;;AAGK;AACL,IAAA,MAAM,CAAC,OAAmB,EAAA;AACxB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;QACtB,IAAI,CAAC,mBAAmB,EAAE;;IAG5B,kBAAkB,GAAA;AAChB,QAAA,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;;IAG9D,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACb,IAAI,CAAC,aAAa,EAAE;;QAGtB,IAAI,CAAC,cAAc,EAAE;;IAGvB,UAAU,GAAA;QACR,OAAO,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK;;IAG1C,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,GAAG,EAAE;AACZ,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;;;AAInB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;AACvB,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AACxB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;;;IAMf,aAAa,GAAA;AACrB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,EAAE;QACrD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAC7B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE;AAC3D,SAAA,CAAC;QACF,IAAI,CAAC,yBAAyB,EAAE;;IAGxB,cAAc,GAAA;QACtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,iBAAiB,CAAC,8BAA8B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7G,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,sBAAsB,EAAE;QAC7B,IAAI,CAAC,UAAU,EAAE;QACjB,IAAI,CAAC,eAAe,EAAE;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,YAAY,EAAE;;IAGvC,sBAAsB,GAAA;QAC9B,OAAO,IAAI,CAAC;AACT,aAAA,WAAW,CAAC,IAAI,CAAC,OAAO;AACxB,aAAA,QAAQ,CAAC,UAAU,CAAC,MAAM;AAC1B,aAAA,MAAM,CAAC,IAAI,CAAC,aAAa;AACzB,aAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;;IAGtB,yBAAyB,GAAA;QACjC,IAAI,CAAC,gBAAgB,CAAC;AACnB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,aAAA,SAAS,CAAC,CAAC,QAAoB,KAAK,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;;IAGnE,qBAAqB,GAAA;QAC7B,OAAO,IAAI,CAAC;AACT,aAAA,OAAO,CAAC,SAAS,CAAC,KAAK;AACvB,aAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa;AAC/B,aAAA,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS;AAC9B,aAAA,KAAK,EAAE;;IAGF,mBAAmB,GAAA;AAC3B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,qBAAqB,EAAE;AACnD,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACvD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,MAAK;AACxC,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YACjB,IAAI,CAAC,IAAI,EAAE;AACb,SAAC,CAAC;;IAGM,iBAAiB,GAAA;QACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;;AAGhH;;AAEK;IACK,sBAAsB,GAAA;QAC9B,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AACxC,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,SAAC,CAAC;;IAGM,eAAe,GAAA;QACvB,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;QAC9C,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;QACtC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG;QAC1B,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG;QAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;QAChC,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB;QAClD,IAAI,CAAC,MAAM,CAAC,mBAAmB,GAAG,IAAI,CAAC,kBAAkB;QACzD,IAAI,CAAC,MAAM,CAAC,kBAAkB,GAAG,IAAI,CAAC,iBAAiB;QACvD,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;QAC5B,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;QAChD,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;QAC1C,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;QAChD,IAAI,CAAC,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB;QACpD,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;;IAGxC,WAAW,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;YACxD,MAAM,IAAI,KAAK,CACb,4FAA4F;gBAC1F,6FAA6F;gBAC7F,yCAAyC;AACzC,gBAAA,2FAA2F,CAC9F;;AAGH,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;AAC9F,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,UAAU,IAAI,CAAC,WAAW,EAAE;AAC3D,YAAA,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC;;;AAGzE;AAMK,MAAO,qBAA+B,SAAQ,YAAqB,CAAA;AA8EvE;;;AAGK;AACL,IAAA,IACI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,eAAe;;IAE7B,IAAI,cAAc,CAAC,KAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,eAAe,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAerD,IAAA,WAAA,CACuB,QAAQ,EAC7B,eAAyC,EACzC,sBAAuD,EACvD,OAAyB,EACzB,GAA6B,EAC7B,WAA6B,EACgB,kBAAkB,EAAA;AAE/D,QAAA,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,GAAG,EAAE,WAAW,EAAE,kBAAkB,CAAC;AAxG/F;;;AAGK;QACI,IAAa,CAAA,aAAA,GAAY,IAAI;AAEtC;;AAEK;AACI,QAAA,IAAA,CAAA,SAAS,GAAuB,kBAAkB,CAAC,IAAI;AAiChE;;;AAGK;AACI,QAAA,IAAA,CAAA,IAAI,GAAmB,cAAc,CAAC,MAAM;AAQrD;;;AAGG;QACM,IAAY,CAAA,YAAA,GAAY,IAAI;AAErC;;;AAGG;QACM,IAAc,CAAA,cAAA,GAAY,IAAI;AAEvC;;AAEK;QACI,IAAgB,CAAA,gBAAA,GAAW,GAAG;QAa7B,IAAe,CAAA,eAAA,GAAY,KAAK;AAK1C;;AAEK;QACI,IAAa,CAAA,aAAA,GAAG,CAAC;AAEjB,QAAA,IAAA,CAAA,UAAU,GAAiB,YAAY,CAAC,gBAAgB;;IAejE,QAAQ,GAAA;QACN,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;;AAGnB,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,MAAM,EAAE;YAClB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE;gBACnC,IAAI,CAAC,WAAW,EAAE;;AAEpB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;;AAE5B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,eAAe,EAAE;;;IAI1B,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;QACxB,IAAI,CAAC,IAAI,EAAE;AACX,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AAErB,QAAA,IAAI,IAAI,CAAC,GAAG,EAAE;AACZ,YAAA,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;;AAGpB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE;;;AAMlC,IAAA,IAAc,iBAAiB,GAAA;AAC7B,QAAA,OAAO,SAAS;;AAGlB,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,SAAS;;AAElB,IAAA,IAAI,KAAK,CAAC,KAAQ,EAAA;AAER,IAAA,UAAU;8GA7JT,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAuGtB,WAAW,EAAA,EAAA,EAAA,KAAA,EAAA6C,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,+BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAMC,uBAAuB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA7GlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,2nBAHpB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAGH,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,UAAU,EAAE;AACf,iBAAA;;0BAwGI,MAAM;2BAAC,WAAW;;0BAMlB;;0BAAY,MAAM;2BAAC,uBAAuB;yCAxGpC,MAAM,EAAA,CAAA;sBAAd;gBAMQ,aAAa,EAAA,CAAA;sBAArB;gBAKQ,SAAS,EAAA,CAAA;sBAAjB;gBAMQ,GAAG,EAAA,CAAA;sBAAX;gBAKQ,GAAG,EAAA,CAAA;sBAAX;gBAKQ,MAAM,EAAA,CAAA;sBAAd;gBAKQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAKQ,kBAAkB,EAAA,CAAA;sBAA1B;gBAKQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAMQ,IAAI,EAAA,CAAA;sBAAZ;gBAMQ,WAAW,EAAA,CAAA;sBAAnB;gBAMQ,YAAY,EAAA,CAAA;sBAApB;gBAMQ,cAAc,EAAA,CAAA;sBAAtB;gBAKQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAOG,cAAc,EAAA,CAAA;sBADjB;gBAUQ,cAAc,EAAA,CAAA;sBAAtB;gBAKQ,aAAa,EAAA,CAAA;sBAArB;gBAEQ,UAAU,EAAA,CAAA;sBAAlB;;AA6DH;;;AAGG;AAMG,MAAO,qBAAyB,SAAQ,qBAAmD,CAAA;AALjG,IAAA,WAAA,GAAA;;QAMY,IAAW,CAAA,WAAA,GAAiC,mBAAmB;AA4C1E;AA1CC;;AAEK;IACL,IAAa,IAAI,CAAC,IAAO,EAAA;AACvB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;;AAGnB;;AAEK;AACL,IAAA,IAAc,UAAU,GAAA;QACtB,OAAO,IAAI,CAAC,WAA8B;;AAG5C,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,SAAS;;IAGnD,IAAI,KAAK,CAAC,IAAO,EAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI;YACjB;;QAGF,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,YAAA,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI;AAC9B,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI;;;AAI3B,IAAA,IAAc,iBAAiB,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU;;IAGrB,UAAU,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK;AACvB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI;;;8GA1CV,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,kKAHpB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAGH,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAOc,IAAI,EAAA,CAAA;sBAAhB;gBAOa,UAAU,EAAA,CAAA;sBAAvB;;AAkCH;;;AAGG;AAMG,MAAO,sBAA0B,SAAQ,qBAI9C,CAAA;AATD,IAAA,WAAA,GAAA;;QAUY,IAAW,CAAA,WAAA,GAAsC,wBAAwB;AAiDpF;AA/CC;;AAEK;IACL,IAAa,KAAK,CAAC,KAAyB,EAAA;AAC1C,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;AAGpB;;AAEK;AACL,IAAA,IAAc,WAAW,GAAA;QACvB,OAAO,IAAI,CAAC,WAA+C;;AAG7D,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,SAAS;;IAGpD,IAAI,KAAK,CAAC,KAAyB,EAAA;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;YAClB;;QAGF,IAAI,KAAK,EAAE;AACT,YAAA,MAAM,WAAW,GAAG,KAAK,IAAI,KAAK,CAAC,KAAK;AACxC,YAAA,IAAI,CAAC,WAAW,GAAG,WAAW;AAC9B,YAAA,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,WAAW;AACrC,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK;;;AAI7B,IAAA,IAAc,iBAAiB,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW;;IAGhC,UAAU,GAAA;QACR,OAAO,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;;IAGzE,UAAU,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;AACxB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;;8GAnDX,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,uKAHrB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAGH,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAWc,KAAK,EAAA,CAAA;sBAAjB;gBAOa,WAAW,EAAA,CAAA;sBAAxB;;;ACxlBH;;;AAGG;AAOG,MAAO,yBACX,SAAQ,qBAA2D,CAAA;AAKnE,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,SAAS;;IAEnD,IAAI,KAAK,CAAC,IAAS,EAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI;YACjB;;QAGF,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,YAAA,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI;AAC9B,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI;AACvB,YAAA,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE;;;AAejC;;AAEK;AACL,IAAA,IACI,iBAAiB,GAAA;QACnB,OAAO,IAAI,CAAC,kBAAkB;;IAEhC,IAAI,iBAAiB,CAAC,KAAc,EAAA;AAClC,QAAA,IAAI,CAAC,kBAAkB,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAKxD;;AAEK;AACL,IAAA,IACI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,cAAc;;IAE5B,IAAI,aAAa,CAAC,KAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,cAAc,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAKpD;;;AAGK;AACL,IAAA,IACI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY;;IAE1B,IAAI,WAAW,CAAC,KAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAKlD;;AAEK;AACL,IAAA,IACI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa;;IAE3B,IAAI,YAAY,CAAC,KAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,aAAa,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAKnD;;AAEK;AACL,IAAA,IAAc,cAAc,GAAA;QAC1B,OAAO,IAAI,CAAC,WAA8B;;AAG5C,IAAA,WAAA,CACuB,QAAQ,EAC7B,eAAyC,EACzC,sBAAuD,EACvD,OAAyB,EACzB,GAA6B,EAC7B,WAA6B,EACgB,kBAAkB,EACrD,4BAA2D,EAAA;AAErE,QAAA,KAAK,CAAC,QAAQ,EAAE,eAAe,EAAE,sBAAsB,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,kBAAkB,CAAC;QAF7F,IAA4B,CAAA,4BAAA,GAA5B,4BAA4B;QAlG9B,IAAW,CAAA,WAAA,GAAyC,2BAA2B;QA4BhF,IAAqB,CAAA,qBAAA,GAAG,IAAI;QAyB3B,IAAc,CAAA,cAAA,GAAY,IAAI;;IAkDxC,QAAQ,GAAA;QACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,EAAE;AACnD,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;;IAGT,eAAe,GAAA;QACvB,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;QAC5C,IAAI,CAAC,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB;QACtD,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;QAC9C,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;QAC1C,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;QAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;QAC9B,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe;QAClD,IAAI,CAAC,MAAM,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB;QAC9D,IAAI,CAAC,MAAM,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB;AAE9D,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE;;aAC3D;YACL,IAAI,CAAC,MAAM,CAAC,UAAU;AACpB,gBAAA,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC;AACxB,sBAAE,IAAI,CAAC,WAAW,CAAC,mCAAmC;AACtD,sBAAE,IAAI,CAAC,WAAW,CAAC,wBAAwB,EAAE;;QAEnD,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE;;AAG/B,IAAA,IAAc,iBAAiB,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU;;IAGrB,UAAU,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK;AACvB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI;;;IAIX,eAAe,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,OAAO,IAAI,CAAC,4BAA4B,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC;;aAC3E;AACL,YAAA,OAAO,IAAI,CAAC,4BAA4B,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,WAAW,CAAC;;;8GAxJ3F,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EA+F1B,WAAW,EAAA,EAAA,EAAA,KAAA,EAAAH,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,+BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAMC,uBAAuB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AArGlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,qcAJxB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIH,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,EAAE;oBACZ,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE;AACf,iBAAA;;0BAgGI,MAAM;2BAAC,WAAW;;0BAMlB;;0BAAY,MAAM;2BAAC,uBAAuB;+EA1EpC,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,qBAAqB,EAAA,CAAA;sBAA7B;gBACQ,qBAAqB,EAAA,CAAA;sBAA7B;gBAMG,iBAAiB,EAAA,CAAA;sBADpB;gBAcG,aAAa,EAAA,CAAA;sBADhB;gBAeG,WAAW,EAAA,CAAA;sBADd;gBAcG,YAAY,EAAA,CAAA;sBADf;gBAaa,cAAc,EAAA,CAAA;sBAA3B;;;AC7HH;;;;AAIG;AAEa,SAAA,cAAc,CAAC,IAAI,EAAE,IAAI,EAAA;AACvC,IAAA,MAAM,YAAY,GAAG,gBAAgB,CAAC,IAAI,CAAC;IAC3C,OAAO,IAAI,KAAK,YAAY;AAC9B;AAEgB,SAAA,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAA;AACzC,IAAA,MAAM,YAAY,GAAG,gBAAgB,CAAC,IAAI,CAAC;IAC3C,MAAM,qBAAqB,GAAG,OAAO;AACrC,IAAA,OAAO,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC;QAClC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;AAClF;AAEM,SAAU,gBAAgB,CAAC,GAAG,EAAA;IAClC,OAAO,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;AACvC;AAEM,SAAU,oBAAoB,CAAC,GAAW,EAAA;IAC9C,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;AAClC,IAAA,OAAO,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE;AAClC;AAEgB,SAAA,eAAe,CAAC,IAAY,EAAE,QAAgB,EAAA;AAC5D,IAAA,OAAO,oBAAoB,CAAC,IAAI,CAAC,KAAK,QAAQ;AAChD;AAEgB,SAAA,iBAAiB,CAAC,IAAY,EAAE,QAAgB,EAAA;IAC9D,OAAO,oBAAoB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACtD;;AC1BA;;;;;;AAMG;MAEU,wBAAwB,CAAA;AAEnC,IAAA,WAAA,CAAoB,MAAc,EAAA;QAAd,IAAM,CAAA,MAAA,GAAN,MAAM;;IAG1B,aAAa,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC;aAChB,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,EACf,MAAM,CAAC,KAAK,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,YAAY,aAAa,CAAC,EACjE,QAAQ,EAAE,EACV,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,IAAqB,EAAE,OAAwB,CAAC,CAAC,EAC3F,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CACrB;;IAGG,WAAW,CAAC,IAAmB,EAAE,OAAsB,EAAA;AAC7D,QAAA,OAAO,CAAC,IAAI,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC;;8GAjBnE,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAvD,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAxB,wBAAwB,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC;;;ACdD;;;;AAIG;AA8BH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0FG;MAuBU,iBAAiB,CAAA;AAa5B;;;AAGG;IACH,IACI,MAAM,CAAC,GAAY,EAAA;AACrB,QAAA,IAAI,CAAC,WAAW,GAAG,qBAAqB,CAAC,GAAG,CAAC;;AAI/C;;;;;;AAMG;IACH,IACI,UAAU,CAAC,GAAY,EAAA;AACzB,QAAA,IAAI,CAAC,eAAe,GAAG,qBAAqB,CAAC,GAAG,CAAC;AACjD,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe;;AAIxC;;;;AAIG;IACH,IACI,UAAU,CAAC,GAAY,EAAA;AACzB,QAAA,IAAI,CAAC,eAAe,GAAG,qBAAqB,CAAC,GAAG,CAAC;;;AAIjD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1D,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC;;aAC7C;YACL,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC;;;AAKvD;;;AAGG;IACH,IACI,gBAAgB,CAAC,GAAY,EAAA;AAC/B,QAAA,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC,GAAG,CAAC;;IAiBzD,WACY,CAAA,YAA4B,EAC5B,cAAgC,EAChC,UAAsB,EACtB,QAAmB,EACA,MAAM,EACJ,QAAQ,EACR,UAAkB,EACvC,sBAAgD,EAChD,aAAoC,EACpC,YAAkC,EAClC,SAAmC,EACnC,gBAA2C,EAAA;QAX3C,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACW,IAAM,CAAA,MAAA,GAAN,MAAM;QACJ,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAU,CAAA,UAAA,GAAV,UAAU;QAC/B,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB;QACtB,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QA3FlB,IAAgB,CAAA,gBAAA,GAAG,uBAAuB;QAC1C,IAAe,CAAA,eAAA,GAAG,KAAK;QAIjC,IAAW,CAAA,WAAA,GAAY,KAAK;QAC5B,IAAqB,CAAA,qBAAA,GAAY,IAAI;QAEH,IAAe,CAAA,eAAA,GAAY,KAAK;QAChC,IAAe,CAAA,eAAA,GAAY,KAAK;QAC7B,IAAa,CAAA,aAAA,GAAY,KAAK;AAiEzD,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC;AAE5C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;QAgBpC,IAAI,CAAC,0BAA0B,EAAE;AAEjC,QAAA,IAAI,CAAC;AACF,aAAA,aAAa;AACb,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,aAAA,SAAS,CAAC,CAAC,KAAU,KAAI;AACxB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1D,YAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;AAClB,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,CAAA,SAAA,EAAY,KAAK,CAAC,QAAQ,CAAA,CAAE,CAAC;;AAE/D,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA,SAAA,EAAY,KAAK,CAAC,IAAI,CAAA,CAAE,CAAC;AACxD,SAAC,CAAC;AAEJ,QAAA,IAAI,CAAC;AACF,aAAA,mBAAmB;AACnB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,aAAA,SAAS,CAAC,CAAC,SAAiB,KAAI;AAC/B,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,SAAS,CAAC;AAClE,SAAC,CAAC;AAEJ,QAAA,IAAI,CAAC;AACF,aAAA,mBAAmB;AACnB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,aAAA,SAAS,CAAC,CAAC,SAAiB,KAAI;AAC/B,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,SAAS,CAAC;AACrE,SAAC,CAAC;QAEJ,IAAI,CAAC,cAAc,CAAC,cAAc,CAChC,IAAI,OAAO,CAAO,CAAC,OAAO,KAAI;YAC5B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;SAC/E,CAAC,CACH;AACD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;AAE1B,QAAA,IAAI,CAAC;AACF,aAAA,eAAe;AACf,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,aAAA,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAI;YAC1B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACnC,QAAQ,CAAC,QAAQ,EAAE;AACrB,SAAC,CAAC;AAEJ,QAAA,IAAI,CAAC;AACF,aAAA,aAAa;AACb,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,aAAA,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAI;YAC1B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvC,QAAQ,CAAC,QAAQ,EAAE;AACrB,SAAC,CAAC;AAEJ,QAAA,IAAI,CAAC;AACF,aAAA,aAAa;AACb,aAAA,IAAI,CACH,MAAM,CAAC,MAAM,IAAI,CAAC,qBAAqB,CAAC,EACxC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAEzB,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AACnB,SAAC,CAAC;AAEJ,QAAA,IAAI,CAAC;AACF,aAAA,kBAAkB;AAClB,aAAA,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AACjE,aAAA,SAAS,CAAC,CAAC,UAAmB,KAAI;AACjC;;;;AAIG;YACH,IAAI,UAAU,EAAE;gBACd,IAAI,CAAC,YAAY,EAAE;;iBACd;gBACL,IAAI,CAAC,WAAW,EAAE;;AAEtB,SAAC,CAAC;AAEJ,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;;YAEtC,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;;;IAI/D,eAAe,GAAA;AACb,QAAA,IAAI,CAAC;AACF,aAAA,iBAAiB;AACjB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,aAAA,SAAS,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;AAE5D,QAAA,IAAI,CAAC;AACF,aAAA,cAAc;AACd,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,aAAA,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAoB,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAE/D,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGhC,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;QACxB,IAAI,CAAC,4BAA4B,EAAE;;AAIrC,IAAA,QAAQ,CAAC,MAAM,EAAA;AACb,QAAA,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,MAAM,CAAC;;AAI7C,IAAA,QAAQ,CAAC,KAAK,EAAA;QACZ,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;;AAG9D;;;;;;AAMG;IACH,aAAa,GAAA;QACX,IAAI,WAAW,EACb,YAAY,EACZ,WAAW,EACX,YAAY,GAAG,CAAC;AAClB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,aAAa;AAC3D,YAAA,WAAW,GAAG,SAAS,CAAC,WAAW;AACnC,YAAA,YAAY,GAAG,SAAS,CAAC,YAAY;AACrC,YAAA,WAAW,GAAG,SAAS,CAAC,WAAW;AACnC,YAAA,YAAY,GAAG,SAAS,CAAC,YAAY;;aAChC;YACL,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ;YAC/C,WAAW,GAAG,eAAe,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW;YAC7D,YAAY,GAAG,eAAe,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY;YAChE,WAAW,GAAG,eAAe,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW;YAC7D,YAAY,GAAG,eAAe,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY;;QAGlE,OAAO;YACL,WAAW;YACX,YAAY;YACZ,WAAW;YACX,YAAY;SACb;;AAGH;;;;;;;AAOG;IACH,iBAAiB,GAAA;QACf,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACvC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;;AAGvB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,aAAa;AAC3D,YAAA,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,UAAU,EAAE,CAAC,EAAE,SAAS,CAAC,SAAS,EAAE;;QAG5D,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,qBAAqB,EAAE;AAE1E,QAAA,MAAM,CAAC,GACL,CAAC,YAAY,CAAC,IAAI;AAClB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU;YAC7B,IAAI,CAAC,MAAM,CAAC,OAAO;AACnB,YAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU;AACxC,YAAA,CAAC;AAEH,QAAA,MAAM,CAAC,GACL,CAAC,YAAY,CAAC,GAAG;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS;YAC5B,IAAI,CAAC,MAAM,CAAC,OAAO;AACnB,YAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS;AACvC,YAAA,CAAC;AAEH,QAAA,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE;;IAGP,0BAA0B,GAAA;AAClC,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;YACtC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;;;IAI3D,4BAA4B,GAAA;AACpC,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE;AACxC,YAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE;;;AAIlC,IAAA,MAAM,CAAC,CAAA,GAAY,IAAI,EAAE,IAAY,IAAI,EAAA;AAC/C,QAAA,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE;AAC7D,QAAA,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,QAAQ,GAAG,CAAC;AAC5B,QAAA,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,QAAQ,GAAG,CAAC;QAE5B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACvC;;AAEF,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,aAAa;AAC5D,YAAA,IAAI,UAAU,CAAC,QAAQ,EAAE;AACvB,gBAAA,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;;iBACpB;AACL,gBAAA,UAAU,CAAC,UAAU,GAAG,CAAC;AACzB,gBAAA,UAAU,CAAC,SAAS,GAAG,CAAC;;;aAErB;YACL,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;;;;IAKpB,WAAW,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB;;AAGF,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAE3B,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC;AAE5E,QAAA,MAAM,0BAA0B,GAAG,IAAI,CAAC,sBAAsB,CAAC,aAAa;AAC5E,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa;AAE3D,QAAA,MAAM,qBAAqB,GAAG,aAAa,CAAC,WAAW;QACvD,IAAI,CAAC,mCAAmC,GAAG,0BAA0B,CAAC,KAAK,CAAC,QAAQ;AACpF,QAAA,0BAA0B,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ;AACpD,QAAA,MAAM,wBAAwB,GAAG,aAAa,CAAC,WAAW;AAC1D,QAAA,MAAM,WAAW,GAAG,wBAAwB,GAAG,qBAAqB;QAEpE,IAAI,CAAC,WAAW,EAAE;YAChB;;QAGF,IAAI,CAAC,qBAAqB,GAAG;AAC3B,YAAA,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,WAAW;AACrC,YAAA,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,YAAY;SACxC;AAED,QAAA,IAAI,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,EAAE;YACvC,aAAa,CAAC,KAAK,CAAC,YAAY,GAAG,CAAG,EAAA,WAAW,IAAI;;aAChD;YACL,aAAa,CAAC,KAAK,CAAC,WAAW,GAAG,CAAG,EAAA,WAAW,IAAI;;;IAIhD,YAAY,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK;AAE5B,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC;AAC/E,YAAA,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,mCAAmC;AAEnG,YAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC9B,gBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa;gBAC3D,aAAa,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI;gBACjE,aAAa,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK;AACnE,gBAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI;;;;AApW5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAqFlB,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAwD,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,SAAS,EACT,EAAA,EAAA,KAAA,EAAA,WAAW,aACX,WAAW,EAAA,EAAA,EAAA,KAAA,EAAAC,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,yBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAvFV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,whBAoEe,gBAAgB,EAAA,EAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAEjB,UAAU,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAGd,UAAU,EA5FpC,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;AAgBX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,45DAAA,CAAA,EAAA,CAAA,CAAA;;2FAGU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAtB7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAEX,QAAA,EAAA;;;;;;;;;;;;;;;;AAgBX,EAAA,CAAA,EAAA,UAAA,EACa,KAAK,EAAA,MAAA,EAAA,CAAA,45DAAA,CAAA,EAAA;;0BAuFhB,MAAM;2BAAC,SAAS;;0BAChB,MAAM;2BAAC,WAAW;;0BAClB,MAAM;2BAAC,WAAW;uNA9Ea,eAAe,EAAA,CAAA;sBAAhD,WAAW;uBAAC,mBAAmB;gBACE,eAAe,EAAA,CAAA;sBAAhD,WAAW;uBAAC,mBAAmB;gBACK,aAAa,EAAA,CAAA;sBAAjD,WAAW;uBAAC,sBAAsB;gBAO/B,MAAM,EAAA,CAAA;sBADT;gBAcG,UAAU,EAAA,CAAA;sBADb;gBAaG,UAAU,EAAA,CAAA;sBADb;gBAoBG,gBAAgB,EAAA,CAAA;sBADnB;gBAO8D,UAAU,EAAA,CAAA;sBAAxE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,sBAAsB,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;gBAG7D,sBAAsB,EAAA,CAAA;sBADrB,SAAS;uBAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE;gBAIpE,kBAAkB,EAAA,CAAA;sBADjB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;gBA4HlD,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;gBAMzC,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;;AAiK3C;;;;;;;;;AASG;MAMU,uBAAuB,CAAA;AAIlC;;;AAGG;IACH,IACI,IAAI,CAAC,GAAY,EAAA;AACnB,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC;AAC3C,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;;AAIzB;;;AAGG;IACH,IACI,KAAK,CAAC,GAAY,EAAA;AACpB,QAAA,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC,GAAG,CAAC;AAC5C,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;;8GAtBb,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,mNAHtB,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAG5B,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE,CAA2B,yBAAA,CAAA;AACrC,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAE4B,SAAS,EAAA,CAAA;sBAAnC,WAAW;uBAAC,YAAY;gBACG,UAAU,EAAA,CAAA;sBAArC,WAAW;uBAAC,aAAa;gBAOtB,IAAI,EAAA,CAAA;sBADP;gBAYG,KAAK,EAAA,CAAA;sBADR;;AAQH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BG;MAUU,uBAAuB,CAAA;AAIlC,IAAA,WAAA,CAAoB,MAAyB,EAAA;QAAzB,IAAM,CAAA,MAAA,GAAN,MAAM;;AAE1B;;;AAGG;IACH,IACI,KAAK,CAAC,GAAY,EAAA;AACpB,QAAA,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC,GAAG,CAAC;;AAI9C;;;;AAIG;IACH,IACI,SAAS,CAAC,GAAY,EAAA;AACxB,QAAA,IAAI,CAAC,cAAc,GAAG,qBAAqB,CAAC,GAAG,CAAC;AAChD,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;QACvB,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc;;8GAzBtC,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAPtB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;AAIX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAGU,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBATnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE;;;;AAIX,EAAA,CAAA;AACC,oBAAA,UAAU,EAAE;AACf,iBAAA;mFAE6B,UAAU,EAAA,CAAA;sBAArC,WAAW;uBAAC,aAAa;gBACM,cAAc,EAAA,CAAA;sBAA7C,WAAW;uBAAC,iBAAiB;gBAS1B,KAAK,EAAA,CAAA;sBADR;gBAYG,SAAS,EAAA,CAAA;sBADZ;;AASH;;;;;;;;;;;;;;;;;;;;AAoBG;MAUU,uBAAuB,CAAA;AAGlC;;;AAGG;IACH,IACI,KAAK,CAAC,GAAY,EAAA;AACpB,QAAA,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC,GAAG,CAAC;;8GATnC,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAPtB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;AAIX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAGU,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBATnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE;;;;AAIX,EAAA,CAAA;AACC,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAE6B,UAAU,EAAA,CAAA;sBAArC,WAAW;uBAAC,aAAa;gBAOtB,KAAK,EAAA,CAAA;sBADR;;;ACnpBH;;;;AAIG;AAOH,MACe,8BAA8B,CAAA;IAG3C,WACY,CAAA,WAA6B,EAC7B,aAA+B,EAC/B,EAAqB,EACrB,gBAA0C,EAC1C,eAAkC,EAAA;QAJlC,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAe,CAAA,eAAA,GAAf,eAAe;AAPjB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;;IAUxC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC;AACF,aAAA,iBAAiB;aACjB,IAAI,CACH,GAAG,CAAC,CAAC,eAAkC,KAAK,eAAe,KAAK,IAAI,CAAC,eAAe,CAAC,EACrF,oBAAoB,EAAE,EACtB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEzB,aAAA,SAAS,CAAC,CAAC,UAAmB,KAAK,IAAI,CAAC,UAAU,CAAU,UAAU,CAAC,CAAC;;IAG7E,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;;AAGhB,IAAA,UAAU,CAAI,UAAa,EAAA;QACnC,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YAC5C,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AACvD,YAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;aACjB,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AACnD,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;;;8GAhCjB,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA1E,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA2E,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAD5C;;AAsCD;;;;;;AAMG;AAKG,MAAO,cAAe,SAAQ,8BAA8B,CAAA;AAChE,IAAA,WAAA,CACY,WAA6B,EAC7B,aAA+B,EAC/B,EAAqB,EACrB,gBAA0C,EAAA;AAEpD,QAAA,KAAK,CAAC,WAAW,EAAE,aAAa,EAAE,EAAE,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,GAAG,CAAC;QALpE,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;;8GALjB,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA3E,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAd,cAAc,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,SAAS;AACnB,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAYD;;;;;;AAMG;AAKG,MAAO,cAAe,SAAQ,8BAA8B,CAAA;AAChE,IAAA,WAAA,CACY,WAA6B,EAC7B,aAA+B,EAC/B,EAAqB,EACrB,gBAA0C,EAAA;AAEpD,QAAA,KAAK,CAAC,WAAW,EAAE,aAAa,EAAE,EAAE,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,GAAG,CAAC;QALpE,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;;8GALjB,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAd,cAAc,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,SAAS;AACnB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACjFD;;;;AAIG;AAgBH,MAAM,oBAAoB,GAAG;IAC3B,iBAAiB;IACjB,uBAAuB;IACvB,uBAAuB;IACvB,uBAAuB;CACxB;AAED,MAAM,oBAAoB,GAAG,CAAC,cAAc,EAAE,cAAc,CAAC;MAQhD,cAAc,CAAA;8GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,iBAdzB,iBAAiB;YACjB,uBAAuB;YACvB,uBAAuB;AACvB,YAAA,uBAAuB,EAGK,cAAc,EAAE,cAAc,CAGhD,EAAA,OAAA,EAAA,CAAA,cAAc,aATxB,iBAAiB;YACjB,uBAAuB;YACvB,uBAAuB;YACvB,uBAAuB,EAGK,cAAc,EAAE,cAAc,CAAA,EAAA,CAAA,CAAA;AAQ/C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,EAHd,SAAA,EAAA,CAAC,wBAAwB,CAAC,YAF3B,cAAc,CAAA,EAAA,CAAA,CAAA;;2FAKb,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,cAAc,CAAC;AACzB,oBAAA,YAAY,EAAE,CAAC,GAAG,oBAAoB,EAAE,GAAG,oBAAoB,CAAC;oBAChE,SAAS,EAAE,CAAC,wBAAwB,CAAC;AACrC,oBAAA,OAAO,EAAE,CAAC,GAAG,oBAAoB,EAAE,GAAG,oBAAoB,CAAC;AAC5D,iBAAA;;;AClCD;;;;AAIG;AAgBH,MAAM,UAAU,GAAG,IAAI,OAAO,EAAa;AAC3C,MAAM,SAAS,GAAG,IAAI,aAAa,CAAuC,CAAC,CAAC;AAC5E,MAAM,aAAa,GAAG,IAAI,aAAa,CAAkB,CAAC,CAAC;AAC3D,MAAM,gBAAgB,GAAG,IAAI,aAAa,CAAwD,CAAC,CAAC;AACpG,MAAM,WAAW,GAAG,IAAI,aAAa,CAAY,CAAC,CAAC;AACnD,MAAM,UAAU,GAAG,IAAI,aAAa,CAAY,CAAC,CAAC;AAClD,MAAM,cAAc,GAAG,IAAI,aAAa,CAAY,CAAC,CAAC;AACtD,MAAM,YAAY,GAAG,IAAI,aAAa,CAAkB,CAAC,CAAC;AAI1D;AACA;;;;;;;AAOG;MACU,UAAU,CAAA;AAAvB,IAAA,WAAA,GAAA;AA8CE;;;AAGG;QACH,IAAS,CAAA,SAAA,GAAuB,MAAM;;AA8BtC;;AAEG;IACH,OAAO,UAAU,CAAC,IAAgB,EAAA;QAChC,MAAM,OAAO,GAAG,EAAE;AAElB,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM;QACxB,OAAO,MAAM,EAAE;AACb,YAAA,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;AACvB,YAAA,MAAM,GAAG,MAAM,CAAC,MAAM;;AAGxB,QAAA,OAAO,OAAO;;AAGhB,IAAA,OAAO,QAAQ,CAAC,IAAgB,EAAE,aAAyB,EAAA;QACzD,OAAO,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,KAAK;;AAEnH;AAED;AACA;AACA;;;;;;;AAOG;MAEU,aAAa,CAAA;AACxB;;;;AAIG;IACH,QAAQ,CAAC,KAAmB,EAAE,GAAY,EAAA;QACxC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;;AAGhC;;;AAGG;AACH,IAAA,WAAW,CAAC,GAAY,EAAA;AACtB,QAAA,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;;AAG5B;;;AAGG;AACH,IAAA,YAAY,CAAC,GAAY,EAAA;AACvB,QAAA,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;;AAG7B;;;;AAIG;AACH,IAAA,eAAe,CAAC,GAAY,EAAA;AAC1B,QAAA,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAY,IAAI,CAAC;QAErD,gBAAgB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAExC,QAAA,OAAO,QAAQ,CAAC,YAAY,EAAE;;IAGhC,WAAW,GAAA;AACT,QAAA,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;;IAGjC,YAAY,GAAA;AACV,QAAA,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;;IAGlC,WAAW,GAAA;AACT,QAAA,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;;IAGjC,eAAe,GAAA;AACb,QAAA,OAAO,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;;8GApD1B,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAb,aAAa,EAAA,CAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB;;MA0DY,qBAAqB,CAAA;AAChC,IAAA,WAAA,CAAoB,QAAkB,EAAA;QAAlB,IAAQ,CAAA,QAAA,GAAR,QAAQ;;AAE5B,IAAA,YAAY,CAAC,KAAmB,EAAA;AAC9B,QAAA,MAAM,WAAW,GAAG,IAAI,UAAU,EAAE;AACpC,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AAClB,YAAA,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,WAAW,CAAC;AAClC,YAAA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACnB,SAAC,CAAC;;AAGJ,IAAA,aAAa,CAAC,KAAmB,EAAE,GAAW,EAAE,gBAAyB,KAAK,EAAA;QAC5E,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAC9C,IAAI,YAAY,EAAE;YAChB,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,CAAC;;;IAI5D,UAAU,CAAC,IAAgB,EAAE,KAAmB,EAAE,aAAyB,GAAA,KAAK,EAAE,GAAW,EAAA;QAC3F,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAClD,QAAA,MAAM,cAAc,GAAG,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE;QAErE,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AAChD,YAAA,MAAM,CAAC,QAAQ,GAAG,IAAI;;YAEtB,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACrC,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC;;AAG9B,YAAA,MAAM,cAAc,GAAG,CAAC,MAAM,CAAC,QAAQ;AACvC,YAAA,MAAM,CAAC,QAAQ,GAAG,IAAI;YACtB,MAAM,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC;;;;;AAKxC,YAAA,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,cAAc,EAAE;AAC9B,gBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC;;iBAC1B;AACL,gBAAA,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;;;AAI/B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;;QAEpB,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACnC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC;;;AAI5B,QAAA,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE;AAC1C,YAAA,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,GAAG,CAAC;;;AAI1C,IAAA,WAAW,CAAC,KAAmB,EAAE,GAAW,EAAE,MAAmB,EAAA;QAC/D,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC;AAExD,QAAA,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE;AACjC,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC;;;IAIjC,SAAS,GAAA;AACP,QAAA,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;;IAGhC,cAAc,GAAA;AACZ,QAAA,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;;IAGpC,aAAa,GAAA;AACX,QAAA,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;;IAGnC,iBAAiB,GAAA;AACf,QAAA,OAAO,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;;IAGvC,SAAS,CAAC,IAAgB,EAAE,GAAY,EAAA;QACtC,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;;IAGhC,aAAa,CAAC,IAAgB,EAAE,GAAY,EAAA;QAC1C,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;;IAGpC,UAAU,CAAC,IAAgB,EAAE,GAAY,EAAA;QACvC,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;;IAGjC,SAAS,CAAC,IAAgB,EAAE,GAAY,EAAA;QACtC,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;;AAGhC;;;;AAIG;AACK,IAAA,cAAc,CAAC,KAAmB,EAAA;QACxC,MAAM,eAAe,GAAG,EAAE;AAE1B,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,gBAAA,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;;AAE5B,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AAErB,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,gBAAA,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;;;AAI/D,QAAA,OAAO,eAAe;;AAGxB;;;;;AAKG;IACK,aAAa,CAAC,KAAmB,EAAE,MAAmB,EAAA;QAC5D,MAAM,cAAc,GAAG,EAAE;AAEzB,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,IAAI,MAAM,KAAK,IAAI,KAAK,MAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE;gBACpE;;AAGF,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,gBAAA,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;;AAE3B,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AAErB,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,gBAAA,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;;;AAI7D,QAAA,OAAO,cAAc;;IAGf,aAAa,CAAC,IAAI,EAAE,WAAW,EAAA;AACrC,QAAA,MAAM,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE;QAC5B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC;AAC1C,QAAA,IAAI,CAAC,QAAQ;YACX,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAC9B,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC;AACxC,aAAC,CAAC;;AAGE,IAAA,SAAS,CAAC,IAAgB,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ;YACX,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAC9B,gBAAA,KAAK,CAAC,MAAM,GAAG,IAAI;AACnB,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACvB,aAAC,CAAC;;AAGN;;;;AAIG;AACK,IAAA,aAAa,CAAC,KAAmB,EAAA;AACvC,QAAA,IAAI,YAAY;AAEhB,QAAA,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAI;AAClB,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;;YAElD,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;gBAC/C,YAAY,GAAG,IAAI;;AAGrB,YAAA,OAAO,YAAY;AACrB,SAAC,CAAC;AAEF,QAAA,OAAO,YAAY;;AAGb,IAAA,eAAe,CAAC,IAAgB,EAAA;AACtC,QAAA,MAAM,KAAK,GAAY,IAAI,CAAC,SAAS,KAAK,MAAM;AAChD,QAAA,MAAM,IAAI,GAAW,IAAI,CAAC,IAAI;QAE9B,MAAM,gBAAgB,GAAG;cACrB,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,IAAI;AAC3C,cAAE,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC;QAEhD,IAAI,gBAAgB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE;AAC7C,YAAA,OAAO;AACL,kBAAE,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ;AACzD,kBAAE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;;AAGhE,QAAA,OAAO,gBAAgB;;8GArMd,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAY,IAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAArB,qBAAqB,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC;;;AC/MD;;;;AAIG;AAmBH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6DG;MAOU,gBAAgB,CAAA;AAQ3B;;;;;;;AAOG;AACH,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;;IAEvB,IAAI,QAAQ,CAAC,KAAsB,EAAA;QACjC,IAAI,CAAC,SAAS,GAAG,KAAK,IAAI,IAAI,CAAC,gBAAgB;;AAKjD;;;AAGG;AACH,IAAA,IAEI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ;;IAEtB,IAAI,OAAO,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAU9C,IAAA,IACI,iBAAiB,GAAA;QACnB,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAClD,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;AAEzD,QAAA,OAAO,EAAE;;AAGX,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,MAAM;;AAG/B,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;;AAGjC,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,OAAO;;AAGhC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,GAAG,GAAA;QACL,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;;AAGtC,IAAA,IACI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;;AAGxC,IAAA,IACI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;;AAGzC,IAAA,IACI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;;AAGvC,IAAA,IACI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;;AAGxC,IAAA,IACI,GAAG,GAAA;QACL,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;;AAGtC,IAAA,IACI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;;AAGzC,IAAA,WAAA,CAAsB,aAA8B,EAAA;QAA9B,IAAa,CAAA,aAAA,GAAb,aAAa;AA1HnC;;;AAGG;QACM,IAAI,CAAA,IAAA,GAAW,EAAE;QAiBhB,IAAgB,CAAA,gBAAA,GAAoB,WAAW;AAC/C,QAAA,IAAA,CAAA,SAAS,GAAoB,IAAI,CAAC,gBAAgB;AAgB5D;;;AAGG;QACM,IAAM,CAAA,MAAA,GAA8B,OAAO;;8GA5CzC,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAI,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,0wBAHf,CAAyB,uBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4kBAAA,CAAA,EAAA,CAAA,CAAA;;2FAG1B,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;+BACI,UAAU,EAAA,QAAA,EAEV,CAAyB,uBAAA,CAAA,EAAA,UAAA,EACvB,KAAK,EAAA,MAAA,EAAA,CAAA,4kBAAA,CAAA,EAAA;iFAQV,IAAI,EAAA,CAAA;sBAAZ;gBAWG,QAAQ,EAAA,CAAA;sBADX;gBAgBG,OAAO,EAAA,CAAA;sBAFV;;sBACA,WAAW;uBAAC,gBAAgB;gBAapB,MAAM,EAAA,CAAA;sBAAd;gBAGG,iBAAiB,EAAA,CAAA;sBADpB,WAAW;uBAAC,OAAO;gBAShB,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,IAAI,EAAA,CAAA;sBADP,WAAW;uBAAC,mBAAmB;gBAM5B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,qBAAqB;gBAM9B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,oBAAoB;gBAM7B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,GAAG,EAAA,CAAA;sBADN,WAAW;uBAAC,oBAAoB;gBAM7B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,sBAAsB;gBAM/B,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,uBAAuB;gBAMhC,IAAI,EAAA,CAAA;sBADP,WAAW;uBAAC,qBAAqB;gBAM9B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,sBAAsB;gBAM/B,GAAG,EAAA,CAAA;sBADN,WAAW;uBAAC,oBAAoB;gBAM7B,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,uBAAuB;;;AClNtC;;;;AAIG;IAwBS;AAAZ,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,cAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACzB,CAAC,EAHW,cAAc,KAAd,cAAc,GAGzB,EAAA,CAAA,CAAA;MAcY,mBAAmB,CAAA;IAY9B,WAAsB,CAAA,WAA0B,EAC1B,gBAA0C,EAAA;QAD1C,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAZ7B,IAAQ,CAAA,QAAA,GAAe,IAAI;AAG1B,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAO;AACnC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAO;AACvC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAO;AACpC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAO;AAEnC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;;IAMxC,SAAS,GAAA;QACP,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,cAAc,CAAC,QAAQ,GAAG,cAAc,CAAC,SAAS;;IAGhG,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,WAAW,CAAC,eAAe;AAC7B,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,EAC5C,GAAG,CAAC,CAAC,EAAE,IAAI,EAAa,KAAK,IAAI,CAAC,QAAQ,CAAC,EAC3C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAEzB,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,GAAG,UAAU,GAAG,cAAc,CAAC,QAAQ,GAAG,cAAc,CAAC,SAAS,CAAC;;IAGhH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;;AAG1B,IAAA,eAAe,CAAC,IAAgB,EAAA;AAC9B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG/B,IAAA,WAAW,CAAC,IAAgB,EAAA;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG3B,IAAA,YAAY,CAAC,IAAgB,EAAA;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG5B,IAAA,WAAW,CAAC,IAAgB,EAAA;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG3B,kBAAkB,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;AAC1B,YAAA,OAAO,sBAAsB;;AAG/B,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK;AAChC,cAAE;cACA,uBAAuB;;8GAzDlB,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA4D,aAAA,EAAA,EAAA,EAAA,KAAA,EAAApE,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EC7ChC,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,qoHA4FA,ED/Ca,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAqE,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA/B,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAgC,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,mBAAmB,EAThB,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,eAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACR,OAAO,CAAC,QAAQ,EAAE;AACd,gBAAA,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;AACpE,gBAAA,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;AACtD,gBAAA,UAAU,CAAC,CAAA,EAAG,cAAc,CAAC,SAAS,CAAQ,KAAA,EAAA,cAAc,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;aACzF,CAAC;AACL,SAAA,EAAA,CAAA,CAAA;;2FAGQ,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAZ/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAEZ,UAAA,EAAA;wBACR,OAAO,CAAC,QAAQ,EAAE;AACd,4BAAA,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;AACpE,4BAAA,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;AACtD,4BAAA,UAAU,CAAC,CAAA,EAAG,cAAc,CAAC,SAAS,CAAQ,KAAA,EAAA,cAAc,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;yBACzF,CAAC;AACL,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,qoHAAA,EAAA;mHAGV,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBAES,SAAS,EAAA,CAAA;sBAAlB;gBACS,aAAa,EAAA,CAAA;sBAAtB;gBACS,UAAU,EAAA,CAAA;sBAAnB;gBACS,SAAS,EAAA,CAAA;sBAAlB;;AAsDH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsGG;MAsBU,eAAe,CAAA;AAgB1B;;;;AAIG;AACH,IAAA,IACI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa;;IAE3B,IAAI,YAAY,CAAC,KAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,aAAa,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAOnD,IAAA,WAAA,CAAyC,MAAM,EACJ,UAAU,EAC/B,mBAA0C,EAC1C,MAAc,EAAA;QAHK,IAAM,CAAA,MAAA,GAAN,MAAM;QACJ,IAAU,CAAA,UAAA,GAAV,UAAU;QAC/B,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QACnB,IAAM,CAAA,MAAA,GAAN,MAAM;QARlB,IAAa,CAAA,aAAA,GAAY,KAAK;AAG9B,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;;IAQxC,QAAQ,GAAA;QACN,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AAEjD,QAAA,IAAI,CAAC;AACF,aAAA,SAAS;aACT,IAAI,CACH,MAAM,CAAC,CAAC,IAA0C,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EACjF,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEzB,aAAA,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAE1C,QAAA,IAAI,CAAC;AACF,aAAA,cAAc;aACd,IAAI,CACH,MAAM,CAAC,CAAC,IAAqB,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAC5D,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAEzB,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAEvC,QAAA,IAAI,CAAC;AACF,aAAA,iBAAiB;aACjB,IAAI,CACH,MAAM,CAAC,CAAC,IAA2D,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAClG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEzB,aAAA,SAAS,CAAC,CAAC,IAA2D,KAAI;YACzE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;AAC/E,SAAC,CAAC;AAEJ,QAAA,IAAI,CAAC;AACF,aAAA,aAAa;aACb,IAAI,CACH,MAAM,CAAC,CAAC,IAAqB,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAC5D,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAEzB,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAEtC,IAAI,CAAC,MAAM,CAAC;AACT,aAAA,IAAI,CACH,MAAM,CAAC,KAAK,IAAI,KAAK,YAAY,aAAa,CAAC,EAC/C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAEzB,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC;AACjF,SAAC,CAAC;;IAGN,eAAe,GAAA;QACb,UAAU,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;;AAGnG,IAAA,SAAS,CAAC,IAA0C,EAAA;QAClD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAE9B,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AACjD,QAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC;;AAGjF,IAAA,WAAW,CAAC,IAAgB,EAAA;QAC1B,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;;AAGpD,IAAA,eAAe,CAAC,IAAgB,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;;AAElE,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ;QAC9B,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;;;AAIxD,IAAA,YAAY,CAAC,IAAgB,EAAA;AAC3B,QAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC;;AAGpF,IAAA,WAAW,CAAC,IAAgB,EAAA;QAC1B,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;;IAGpD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;;IAGhB,YAAY,GAAA;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;QAE7C,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,QAAQ,CAAC,IAAI,EAAE;AACjB,gBAAA,MAAM,MAAM,GAAqB;oBAC/B,WAAW,EAAE,QAAQ,CAAC,WAAW;oBACjC,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB;oBACjD,QAAQ,EAAE,QAAQ,CAAC,QAAQ;oBAC3B,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;iBAC5C;AACD,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;;YAG/C,IAAI,QAAQ,CAAC,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;gBACtD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,GAAG;;;;IAKpC,WAAW,GAAA;AACnB,QAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC;;AAGlD,IAAA,WAAW,CAAC,KAAmB,EAAA;AACvC,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,gBAAA,OAAO,IAAI;;AAGb,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;YACjE,IAAI,QAAQ,EAAE;AACZ,gBAAA,OAAO,QAAQ;;;AAInB,QAAA,OAAO,SAAS;;AAGR,IAAA,UAAU,CAAC,GAAW,EAAA;QAC9B,OAAO,CAAC,GAAG,IAAI,GAAG,KAAK,IAAI,CAAC,GAAG;;AAGvB,IAAA,eAAe,CAAC,KAAmB,EAAA;QAC3C,IAAI,QAAQ,GAAG,IAAI;AACnB,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAgB,KAAI;AACjC,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,QAAQ,GAAG,IAAI;;AAEjB,YAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC9D,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;;AAElD,SAAC,CAAC;AACF,QAAA,OAAO,QAAQ;;8GAhLN,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAiCN,SAAS,EAAA,EAAA,EAAA,KAAA,EACT,WAAW,EAAA,EAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAlC,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAlCpB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EAlBd,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,KAAA,EAAA,OAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;AAeX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+mBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA+B,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAtLU,mBAAmB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,eAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAyLnB,eAAe,EAAA,UAAA,EAAA,CAAA;kBArB3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EAET,QAAA,EAAA;;;;;;;;;;;;;;;AAeX,EAAA,CAAA,EAAA,UAAA,EACa,KAAK,EAAA,MAAA,EAAA,CAAA,+mBAAA,CAAA,EAAA;;0BAmCN,MAAM;2BAAC,SAAS;;0BAChB,MAAM;2BAAC,WAAW;+FA1BtB,GAAG,EAAA,CAAA;sBAAX;gBAMQ,KAAK,EAAA,CAAA;sBAAb;gBAQG,YAAY,EAAA,CAAA;sBADf;;;AE3PH;;;;AAIG;MASU,aAAa,CAAA;8GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAb,aAAa,EAAA,YAAA,EAAA,CAFR,gBAAgB,CAAA,EAAA,OAAA,EAAA,CADrB,gBAAgB,CAAA,EAAA,CAAA,CAAA;+GAGhB,aAAa,EAAA,CAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAJzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAE,gBAAgB,CAAE;oBAC7B,YAAY,EAAE,CAAE,gBAAgB,CAAE;AACnC,iBAAA;;;ACZD;;;;AAIG;AAUH,MAAM,gBAAgB,GAAG,CAAC,eAAe,EAAE,mBAAmB,CAAC;AAE/D,MAAM,iBAAiB,GAAG,CAAC,aAAa,EAAE,qBAAqB,CAAC;MAWnD,YAAY,CAAA;AACvB,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO;AACL,YAAA,QAAQ,EAAE,YAAY;AACtB,YAAA,SAAS,EAAE;AACT,gBAAA,GAAG,iBAAiB;AACrB,aAAA;SACF;;8GAPQ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,EAbC,YAAA,EAAA,CAAA,eAAe,EAAE,mBAAmB,aAM1D,cAAc;YACd,YAAY;YACZ,aAAa,CAAA,EAAA,OAAA,EAAA,CARS,eAAe,EAAE,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAajD,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAPrB,cAAc;YACd,YAAY;YACZ,aAAa,CAAA,EAAA,CAAA,CAAA;;2FAKJ,YAAY,EAAA,UAAA,EAAA,CAAA;kBATxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,cAAc;wBACd,YAAY;wBACZ,aAAa;AACd,qBAAA;AACD,oBAAA,YAAY,EAAE,CAAC,GAAG,gBAAgB,CAAC;AACnC,oBAAA,OAAO,EAAE,CAAC,GAAG,gBAAgB,CAAC;AAC/B,iBAAA;;;MCpBY,kBAAkB,CAAA;IAC7B,SAAS,CAAS,GAAG,OAAiB,EAAA;QACpC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC;;8GAF3B,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAlB,kBAAkB,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,gBAAgB;AACtB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACLD;;;;AAIG;AAwBH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoEG;MAiDU,sBAAsB,CAAA;AAhDnC,IAAA,WAAA,GAAA;QAiDmC,IAAc,CAAA,cAAA,GAAY,KAAK;AAOhE;;;AAGG;AACM,QAAA,IAAA,CAAA,iBAAiB,GAAgD,EAAE,KAAK,EAAE,IAAI,EAAE;AAYzF;;;AAGG;AACO,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAc;AAKrD;AAnBC;;;AAGG;IACH,IACI,SAAS,CAAC,GAAY,EAAA;AACxB,QAAA,IAAI,CAAC,cAAc,GAAG,qBAAqB,CAAC,GAAG,CAAC;;AAUlD,IAAA,SAAS,CAAC,GAAe,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;;8GA/Bf,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EA7CrB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,6yBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjE,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,uBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA0D,kBAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGU,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAhDlC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAEjB,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CX,EAAA,CAAA,EAAA,UAAA,EACa,KAAK,EAAA,MAAA,EAAA,CAAA,6yBAAA,CAAA,EAAA;8BAGc,cAAc,EAAA,CAAA;sBAA9C,WAAW;uBAAC,kBAAkB;gBAKtB,IAAI,EAAA,CAAA;sBAAZ;gBAMQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAOG,SAAS,EAAA,CAAA;sBADZ;gBAUS,SAAS,EAAA,CAAA;sBAAlB;;;AC7KH;;;;AAIG;MAeU,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAnB,mBAAmB,EAAA,YAAA,EAAA,CAHf,sBAAsB,EAAE,kBAAkB,aAD/C,cAAc,EAAE,YAAY,CAAA,EAAA,OAAA,EAAA,CAE5B,sBAAsB,CAAA,EAAA,CAAA,CAAA;+GAErB,mBAAmB,EAAA,OAAA,EAAA,CAJpB,cAAc,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAI3B,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,cAAc,EAAE,YAAY,CAAC;AACvC,oBAAA,YAAY,EAAE,CAAC,sBAAsB,EAAE,kBAAkB,CAAC;oBAC1D,OAAO,EAAE,CAAC,sBAAsB,CAAC;AAClC,iBAAA;;;AClBD;;;;AAIG;AAOI,MAAM,gBAAgB,GAAG,IAAI,OAAO,EAAuD;AAC3F,MAAM,0BAA0B,GAAG,IAAI,OAAO,EAAiE;AAEtH;;;;;;;AAOG;MAEU,gBAAgB,CAAA;AAD7B,IAAA,WAAA,GAAA;AAGU,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAqC;AAC1D,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAmB;AACxC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAmB;AAC1C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAmB;AA6FlD;AA3FC;;;;AAIG;IACH,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;;AAGnC;;;AAGG;IACH,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;;AAGnC;;;AAGG;IACH,UAAU,GAAA;QACR,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;;AAGrC;;;AAGG;IACH,SAAS,GAAA;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;;AAGpC;;;;;AAKG;AACH,IAAA,MAAM,CAAC,OAAO,GAAG,KAAK,EAAE,GAAY,EAAA;QAClC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;;AAGrC;;;;AAIG;AACH,IAAA,MAAM,CAAC,GAAY,EAAA;QACjB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;;AAG5B;;;;AAIG;AACH,IAAA,QAAQ,CAAC,GAAY,EAAA;QACnB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;;AAG9B;;;;AAIG;AACH,IAAA,OAAO,CAAC,GAAY,EAAA;QAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;;AAG7B;;;;AAIG;AACH,IAAA,eAAe,CAAC,GAAY,EAAA;AAC1B,QAAA,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAiB,CAAC,CAAC;QACrD,gBAAgB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QACxC,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC;;AAG7C;;;;AAIG;AACH,IAAA,yBAAyB,CAAC,GAAY,EAAA;AACpC,QAAA,MAAM,QAAQ,GAAG,IAAI,aAAa,EAA4B;QAC9D,0BAA0B,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QAClD,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC;;8GAhGlC,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAhB,gBAAgB,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B;;;ACtBD;;;;AAIG;AAyBH;;;;;AAKG;MAMU,wBAAwB,CAAA;8GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,8EAHvB,CAA6B,2BAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAG9B,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE,CAA6B,2BAAA,CAAA;AACvC,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAGD;;;;;AAKG;MAMU,wBAAwB,CAAA;8GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,8EAHvB,CAA6B,2BAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAG9B,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE,CAA6B,2BAAA,CAAA;AACvC,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAGD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuEG;MAgBU,kBAAkB,CAAA;AAc7B,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,UAAU;;AAElC,IAAA,IACI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,WAAW;;AAEnC,IAAA,IACI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,WAAW;;AAGnC;;;AAGG;IACH,IACI,KAAK,CAAC,GAAY,EAAA;AACpB,QAAA,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC,GAAG,CAAC;AAC5C,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,UAAU;AACjC,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;;AAIvB;;;AAGG;IACH,IACI,IAAI,CAAC,GAAY,EAAA;AACnB,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC;AAC3C,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,SAAS;AACjC,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;;AAIvB;;;AAGG;IACH,IACI,KAAK,CAAC,GAAY,EAAA;AACpB,QAAA,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC,GAAG,CAAC;AAC5C,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,UAAU;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;;AAIzB;;;AAGG;IACH,IACI,GAAG,CAAC,GAAY,EAAA;AAClB,QAAA,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAC,GAAG,CAAC;AAC1C,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,QAAQ;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;;AAIzB;;;AAGG;IACH,IACI,KAAK,CAAC,GAAY,EAAA;AACpB,QAAA,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC,GAAG,CAAC;;AAI9C;;;AAGG;IACH,IACI,cAAc,CAAC,GAAY,EAAA;AAC7B,QAAA,IAAI,CAAC,mBAAmB,GAAG,qBAAqB,CAAC,GAAG,CAAC;;AAIvD;;;AAGG;AACH,IAAA,IACI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;;IAEpB,IAAI,KAAK,CAAC,KAAqB,EAAA;AAC7B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;;AAIrB;;;AAGG;AACH,IAAA,IACI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW;;IAEzB,IAAI,UAAU,CAAC,KAAc,EAAA;QAC3B,IAAI,IAAI,CAAC,UAAU,KAAK,qBAAqB,CAAC,KAAK,CAAC,EAAE;AACpD,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,UAAU;YACnC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;;;AA2CrD,IAAA,WAAA,CACU,cAAgC,EAChC,YAA4B,EAC5B,OAAmB,EACnB,EAAqB,EAAA;QAHrB,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAE,CAAA,EAAA,GAAF,EAAE;AAzKO,QAAA,IAAA,CAAA,sBAAsB,GAAqB,IAAI,OAAO,EAAW;QAC1E,IAAe,CAAA,eAAA,GAA6B,IAAI;AAEhD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;QAExC,IAAmB,CAAA,mBAAA,GAAY,IAAI;QAEP,IAAU,CAAA,UAAA,GAAY,KAAK;QAC3B,IAAU,CAAA,UAAA,GAAY,KAAK;QAC5B,IAAS,CAAA,SAAA,GAAY,IAAI;QACxB,IAAU,CAAA,UAAA,GAAY,KAAK;QAC7B,IAAQ,CAAA,QAAA,GAAY,KAAK;QAkGzC,IAAM,CAAA,MAAA,GAAmB,UAAU;QAgBnC,IAAW,CAAA,WAAA,GAAY,KAAK;;AAYtC;;;;;;AAMG;AACM,QAAA,IAAA,CAAA,oBAAoB,GAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AAExE;;;;;;AAMG;AACM,QAAA,IAAA,CAAA,oBAAoB,GAAa,CAAC,IAAI,EAAE,IAAI,CAAC;AAEtD;;AAEG;AACgB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAkB;AAEnE;;AAEG;AACgB,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,YAAY,EAA4B;;IASvF,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC;AACF,aAAA,QAAQ;AACR,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAClD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEzB,aAAA,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAEnD,QAAA,IAAI,CAAC;AACF,aAAA,QAAQ;AACR,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAClD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAEzB,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;AAEjC,QAAA,IAAI,CAAC;AACF,aAAA,UAAU;AACV,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAClD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAEzB,SAAS,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;AAEnC,QAAA,IAAI,CAAC;AACF,aAAA,SAAS;AACT,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAClD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAEzB,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAElC;AACG,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAClD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEzB,aAAA,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEzD;AACG,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAClD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEzB,aAAA,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAEnE,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,UAAmB,KAAK,CAAC,UAAU,CAAC,EAC5C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAEzB,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAEjC,IAAI,CAAC,2BAA2B,EAAE;;IAGpC,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;;;AAI1B,IAAA,OAAO,CAAC,KAAK,EAAA;AACX,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC;QAEhE,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YACvC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;AAE3C,YAAA,IAAI,IAAI,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;gBAC/F,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;;;;AAK1C;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;;AAG/B;;AAEG;IACH,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;;AAG9B;;AAEG;IACH,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;;AAG/B;;;;;;;;;;AAUG;IACH,MAAM,CAAC,UAAmB,KAAK,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,IAAI,CAAC,eAAe,KAAK,QAAQ,EAAE;gBACrC,OAAO,GAAG,KAAK;;;AAInB,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,EAAE;AAC5D,YAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;;aACvB;AACL,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,WAAW,GAAG,WAAW,CAAC;;;IAI/C,2BAA2B,GAAA;AACnC,QAAA,aAAa,CAAC;YACZ,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC5D,YAAA,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAwD;SAC7F;AACE,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,UAAU,CAAC,EACpC,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,KAAK,WAAW,CAAC,EACrC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAEzB,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAyC,KAAI;AACrE,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;AACpE,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;AAEpE,YAAA,IAAI,kBAAkB;YAEtB,IAAI,WAAW,EAAE;AACf,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB;gBACrC,IAAI,CAAC,OAAO,EAAE;gBACd,kBAAkB,GAAG,QAAQ;;YAE/B,IAAI,WAAW,EAAE;AACf,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI;gBACjB,IAAI,CAAC,QAAQ,EAAE;gBACf,kBAAkB,GAAG,QAAQ;;YAE/B,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE;gBAC/E,IAAI,CAAC,MAAM,EAAE;AACb,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAK;gBAClB,kBAAkB,GAAG,IAAI;;YAG3B,IAAI,kBAAkB,IAAI,kBAAkB,KAAK,IAAI,CAAC,eAAe,EAAE;AACrE,gBAAA,IAAI,CAAC,eAAe,GAAG,kBAAkB;gBACzC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AACrD,gBAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;AAE1B,SAAC,CAAC;;AAGI,IAAA,WAAW,CAAC,OAAoB,EAAA;AACxC,QAAA,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,SAAS,EAAE;AAC3D,YAAA,OAAO,SAAS;;QAGlB,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE;AACzC,YAAA,OAAO,OAAO;;QAGhB,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC;;AAGtC,IAAA,WAAW,CAAC,KAAqB,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;AACxB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;YAClB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AACjC,YAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;;8GA9Vf,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAZjB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,GAAA,EAAA,KAAA,EAAA,KAAA,EAAA,OAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,GAAA,EAAA,KAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;AAQX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,0+BAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAf9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAEZ,QAAA,EAAA;;;;;;;;AAQX,EAAA,CAAA,EAAA,eAAA,EACkB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,KAAK,EAAA,MAAA,EAAA,CAAA,0+BAAA,CAAA,EAAA;qKAUS,UAAU,EAAA,CAAA;sBAArC,WAAW;uBAAC,aAAa;gBACE,UAAU,EAAA,CAAA;sBAArC,WAAW;uBAAC,aAAa;gBACC,SAAS,EAAA,CAAA;sBAAnC,WAAW;uBAAC,YAAY;gBACG,UAAU,EAAA,CAAA;sBAArC,WAAW;uBAAC,aAAa;gBACA,QAAQ,EAAA,CAAA;sBAAjC,WAAW;uBAAC,WAAW;gBAGpB,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,gBAAgB;gBAKzB,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,iBAAiB;gBAK1B,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,iBAAiB;gBAU1B,KAAK,EAAA,CAAA;sBADR;gBAcG,IAAI,EAAA,CAAA;sBADP;gBAcG,KAAK,EAAA,CAAA;sBADR;gBAcG,GAAG,EAAA,CAAA;sBADN;gBAcG,KAAK,EAAA,CAAA;sBADR;gBAWG,cAAc,EAAA,CAAA;sBADjB;gBAWG,KAAK,EAAA,CAAA;sBADR;gBAcG,UAAU,EAAA,CAAA;sBADb;gBAmBQ,GAAG,EAAA,CAAA;sBAAX;gBAUQ,oBAAoB,EAAA,CAAA;sBAA5B;gBASQ,oBAAoB,EAAA,CAAA;sBAA5B;gBAKkB,WAAW,EAAA,CAAA;sBAA7B;gBAKkB,qBAAqB,EAAA,CAAA;sBAAvC;;;AClTH;;;;AAIG;AAcH,MAAM,qBAAqB,GAAG;IAC5B,kBAAkB;IAClB,wBAAwB;IACxB,wBAAwB;CACzB;AAED,MAAM,oBAAoB,GAAG;IAC3B,gBAAgB;CACjB;MAaY,eAAe,CAAA;AAC1B,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO;AACL,YAAA,QAAQ,EAAE,eAAe;AACzB,YAAA,SAAS,EAAE;AACT,gBAAA,GAAG,oBAAoB;AACxB,aAAA;SACF;;8GAPQ,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,iBApB1B,kBAAkB;YAClB,wBAAwB;YACxB,wBAAwB,CAAA,EAAA,OAAA,EAAA,CAStB,cAAc,CAAA,EAAA,OAAA,EAAA,CAXhB,kBAAkB;YAClB,wBAAwB;YACxB,wBAAwB,CAAA,EAAA,CAAA,CAAA;AAkBb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YATxB,cAAc,CAAA,EAAA,CAAA,CAAA;;2FASL,eAAe,EAAA,UAAA,EAAA,CAAA;kBAX3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,cAAc;AACf,qBAAA;AACD,oBAAA,YAAY,EAAE;AACZ,wBAAA,GAAG,qBAAqB;AACzB,qBAAA;AACD,oBAAA,OAAO,EAAE;AACP,wBAAA,GAAG,qBAAqB;AACzB,qBAAA;AACF,iBAAA;;;ACpCD;;AAEK;MAKQ,qBAAqB,CAAA;AAChC,IAAA,WAAA,CAAmB,WAA6B,EAAA;QAA7B,IAAW,CAAA,WAAA,GAAX,WAAW;;8GADnB,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCFY,mBAAmB,CAAA;AAC9B,IAAA,WAAA,CAAmB,WAA6B,EAAA;QAA7B,IAAW,CAAA,WAAA,GAAX,WAAW;;8GADnB,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACLD;;;;AAIG;AA0BH;;;;;;;;;;AAUG;MAeU,cAAc,CAAA;AAd3B,IAAA,WAAA,GAAA;QAoFE,IAAW,CAAA,WAAA,GAAY,KAAK;QAE5B,IAAe,CAAA,eAAA,GAAY,KAAK;QAChC,IAAa,CAAA,aAAA,GAAG,KAAK;AAoCrB;;;;AAIG;QACM,IAAW,CAAA,WAAA,GAA8B,OAAO;AAWzD;;;;AAIG;QACH,IAAI,CAAA,IAAA,GAAY,KAAK;AACtB;AAnHC;;;AAGG;AACH,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;;IAEvB,IAAI,QAAQ,CAAC,GAAY,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC;;AAW7C;;;AAGG;AACH,IAAA,IAEI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,aAAa;;IAE3B,IAAI,QAAQ,CAAC,GAAY,EAAA;AACvB,QAAA,IAAI,CAAC,aAAa,GAAG,qBAAqB,CAAC,GAAG,CAAC;;AAIjD;;;AAGG;IACH,IACI,UAAU,CAAC,GAAY,EAAA;AACzB,QAAA,IAAI,CAAC,eAAe,GAAG,qBAAqB,CAAC,GAAG,CAAC;;AAEnD,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,eAAe;;AAgB7B;;;AAGG;AACH,IAAA,IACI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,WAAW;;IAEzB,IAAI,MAAM,CAAC,GAAY,EAAA;AACrB,QAAA,IAAI,CAAC,WAAW,GAAG,qBAAqB,CAAC,GAAG,CAAC;AAC7C,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;;;AAKpB;;;;;AAKG;IACH,IACI,QAAQ,CAAC,GAAY,EAAA;AACvB,QAAA,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC,GAAG,CAAC;;8GAnG7B,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EACX,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,qBAAqB,EACrB,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,mBAAmB,EAdrB,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;AASX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAvE,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGU,cAAc,EAAA,UAAA,EAAA,CAAA;kBAd1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,QAAQ,EAAE;;;;;;;;;AASX,EAAA,CAAA;AACC,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAEsC,mBAAmB,EAAA,CAAA;sBAAvD,YAAY;uBAAC,qBAAqB;gBACA,iBAAiB,EAAA,CAAA;sBAAnD,YAAY;uBAAC,mBAAmB;gBAMxB,QAAQ,EAAA,CAAA;sBAAhB;gBAMQ,KAAK,EAAA,CAAA;sBAAb;gBAOG,QAAQ,EAAA,CAAA;sBADX;gBAcQ,OAAO,EAAA,CAAA;sBAAf;gBAQG,QAAQ,EAAA,CAAA;sBAFX,KAAK;uBAAC,UAAU;;sBAChB,WAAW;uBAAC,gBAAgB;gBAczB,UAAU,EAAA,CAAA;sBADb;gBAaQ,KAAK,EAAA,CAAA;sBAAb;gBAGD,WAAW,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAW/B,MAAM,EAAA,CAAA;sBADT;gBAmBG,QAAQ,EAAA,CAAA;sBADX;gBAUQ,SAAS,EAAA,CAAA;sBAAjB;gBAOQ,WAAW,EAAA,CAAA;sBAAnB;gBASQ,aAAa,EAAA,CAAA;sBAArB;;AAUH;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0GG;MA0CU,iBAAiB,CAAA;AAM5B;;;AAGG;IACH,IACI,SAAS,CAAC,GAAY,EAAA;AACxB,QAAA,IAAI,CAAC,cAAc,GAAG,qBAAqB,CAAC,GAAG,CAAC;;IAkBlD,WAAoB,CAAA,KAAqB,EAAU,iBAAoC,EAAA;QAAnE,IAAK,CAAA,KAAA,GAAL,KAAK;QAA0B,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QA1BpE,IAAc,CAAA,cAAA,GAAY,KAAK;AAkB/B;;;AAGG;AACO,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAO;AAErC,QAAA,IAAA,CAAA,QAAQ,GAAkB,IAAI,OAAO,EAAQ;;;IAKrD,kBAAkB,GAAA;QAChB,IAAI,CAAC,KAAK,CAAC;AACR,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,MAAW,KACd,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAChG,EACD,KAAK,CAAC,CAAC,CAAC,EACR,GAAG,CAAC,CAAC,GAAmB,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EACpD,MAAM,CAAC,CAAC,GAAmB,KAAK,CAAC,CAAC,GAAG,CAAC,EACtC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEzB,aAAA,SAAS,CAAC,CAAC,WAA2B,KAAI;AACzC,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;AAC3B,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AACvC,SAAC,CAAC;;IAGN,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;;;AAI1B,IAAA,SAAS,CAAC,WAA2B,EAAA;AACnC,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;YACzB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,GAAG,KAAK,WAAW,CAAC,CAAC;AAC9D,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC;;;8GA3DzB,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,SAAA,EACX,cAAc,EAvCnB,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,o6BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAwE,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA/D,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAzC7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAEX,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCX,EAAA,CAAA,EAAA,UAAA,EACa,KAAK,EAAA,MAAA,EAAA,CAAA,o6BAAA,CAAA,EAAA;mHAGc,IAAI,EAAA,CAAA;sBAApC,eAAe;uBAAC,cAAc;gBAG/B,cAAc,EAAA,CAAA;sBADb,WAAW;uBAAC,kBAAkB;gBAQ3B,SAAS,EAAA,CAAA;sBADZ;gBAUQ,UAAU,EAAA,CAAA;sBAAlB;gBAMS,SAAS,EAAA,CAAA;sBAAlB;;;AC9WH;;;;AAIG;AAYH,MAAM,oBAAoB,GAAG,CAAC,iBAAiB,EAAE,cAAc,CAAC;AAEhE,MAAM,oBAAoB,GAAG,CAAC,qBAAqB,EAAE,mBAAmB,CAAC;MAO5D,cAAc,CAAA;8GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAd,cAAc,EAAA,YAAA,EAAA,CATG,iBAAiB,EAAE,cAAc,EAEjC,qBAAqB,EAAE,mBAAmB,CAG5D,EAAA,OAAA,EAAA,CAAA,cAAc,EAAE,aAAa,EAAE,YAAY,CALzB,EAAA,OAAA,EAAA,CAAA,iBAAiB,EAAE,cAAc,EAEjC,qBAAqB,EAAE,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAO3D,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,EAJf,OAAA,EAAA,CAAA,cAAc,EAAE,aAAa,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAI1C,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,cAAc,EAAE,aAAa,EAAE,YAAY,CAAC;AACtD,oBAAA,YAAY,EAAE,CAAC,GAAG,oBAAoB,EAAE,GAAG,oBAAoB,CAAC;AAChE,oBAAA,OAAO,EAAE,CAAC,GAAG,oBAAoB,EAAE,GAAG,oBAAoB,CAAC;AAC5D,iBAAA;;;ACxBD;;;;AAIG;AAWH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6FG;MAOU,eAAe,CAAA;AAgB1B;;;;AAIG;IACH,IACI,OAAO,CAAC,KAAa,EAAA;QACvB,IAAI,CAAC,oBAAoB,GAAG,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,OAAO,KAAK,CAAA,CAAA,CAAG,CAAC,GAAG,IAAI;;AAqBxG;;AAEG;AACH,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;;IAEvB,IAAI,QAAQ,CAAC,GAAY,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC;;AAK7C;;;AAGG;AACH,IAAA,IACI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU;;IAExB,IAAI,SAAS,CAAC,GAAY,EAAA;AACxB,QAAA,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC,GAAG,CAAC;;AAK9C;;;AAGG;AACH,IAAA,IACI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa;;IAE3B,IAAI,YAAY,CAAC,GAAY,EAAA;AAC3B,QAAA,IAAI,CAAC,aAAa,GAAG,qBAAqB,CAAC,GAAG,CAAC;;AAKjD;;;AAGG;AACH,IAAA,IACI,WAAW,GAAA;QACb,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS;;IAE1C,IAAI,WAAW,CAAC,GAAY,EAAA;AAC1B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,qBAAqB,CAAC,GAAG,CAAC;;AA0B9D,IAAA,IACI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM;;AAG7B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAG9B,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;;AAG/B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAG9B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAG9B,IAAA,IACI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,WAAW;;AAGnC,IAAA,IACI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,YAAY;;AAGpC,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,OAAO;;AAG/B,IAAA,WAAA,CAAoB,YAA0B,EAAA;QAA1B,IAAY,CAAA,YAAA,GAAZ,YAAY;AA5JhC;;;AAGG;QACM,IAAI,CAAA,IAAA,GAAW,WAAW;AAwBnC;;;AAGG;QACM,IAAI,CAAA,IAAA,GAAoB,QAAQ;AAEzC;;;AAGG;QACM,IAAK,CAAA,KAAA,GAAqB,OAAO;QAYlC,IAAS,CAAA,SAAA,GAAY,IAAI;QAczB,IAAU,CAAA,UAAA,GAAY,IAAI;QAc1B,IAAa,CAAA,aAAA,GAAY,IAAI;AAsBrC;;;;AAIG;QACM,IAAW,CAAA,WAAA,GAA8B,OAAO;;IAqDzD,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAElC,YAAA,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;;AAGxE,QAAA,OAAO,EAAE;;8GAzKA,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAT,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,0qBCnH5B,szBAgBA,EAAA,MAAA,EAAA,CAAA,koBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA8E,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDmGa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,cAGP,KAAK,EAAA,QAAA,EAAA,szBAAA,EAAA,MAAA,EAAA,CAAA,koBAAA,CAAA,EAAA;mFAUV,IAAI,EAAA,CAAA;sBAAZ;gBAMQ,KAAK,EAAA,CAAA;sBAAb;gBAQG,OAAO,EAAA,CAAA;sBADV;gBASQ,KAAK,EAAA,CAAA;sBAAb;gBAMQ,IAAI,EAAA,CAAA;sBAAZ;gBAMQ,KAAK,EAAA,CAAA;sBAAb;gBAMG,QAAQ,EAAA,CAAA;sBADX;gBAeG,SAAS,EAAA,CAAA;sBADZ;gBAeG,YAAY,EAAA,CAAA;sBADf;gBAeG,WAAW,EAAA,CAAA;sBADd;gBAaQ,SAAS,EAAA,CAAA;sBAAjB;gBAOQ,WAAW,EAAA,CAAA;sBAAnB;gBASQ,aAAa,EAAA,CAAA;sBAArB;gBAGG,IAAI,EAAA,CAAA;sBADP,WAAW;uBAAC,iBAAiB;gBAM1B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAM3B,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,mBAAmB;gBAM5B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAM3B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAM3B,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,uBAAuB;gBAMhC,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,wBAAwB;gBAMjC,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,mBAAmB;;;AE9QlC;;;;AAIG;AAWH,MAAM,kBAAkB,GAAG;IACzB,eAAe;CAChB;MAcY,YAAY,CAAA;8GAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAZ,YAAY,EAAA,YAAA,EAAA,CAfvB,eAAe,CAAA,EAAA,OAAA,EAAA,CAKb,cAAc;AACd,YAAA,aAAa,aANf,eAAe,CAAA,EAAA,CAAA,CAAA;AAeJ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAVrB,cAAc;YACd,aAAa,CAAA,EAAA,CAAA,CAAA;;2FASJ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAZxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,cAAc;wBACd,aAAa;AACd,qBAAA;AACD,oBAAA,YAAY,EAAE;AACZ,wBAAA,GAAG,kBAAkB;AACtB,qBAAA;AACD,oBAAA,OAAO,EAAE;AACP,wBAAA,GAAG,kBAAkB;AACtB,qBAAA;AACF,iBAAA;;;AC9BD;;;;AAIG;AAUH;;AAEG;MA6CU,iBAAiB,CAAA;AA5C9B,IAAA,WAAA,GAAA;AA0DE;;;AAGG;QACM,IAAK,CAAA,KAAA,GAAW,EAAE;QAoBjB,IAAS,CAAA,SAAA,GAAY,KAAK;AAuBpC;;;;AAIG;QACM,IAAW,CAAA,WAAA,GAA8B,OAAO;AAU1D;AAlDC;;;AAGG;AACH,IAAA,IAEI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;;IAEvB,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAK/C;;;AAGG;AACH,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;;IAEvB,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;;8GAlDpC,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAzChB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,kiBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAxE,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAwE,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA/D,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBA5C7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAEX,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCX,EAAA,CAAA,EAAA,UAAA,EACa,KAAK,EAAA,MAAA,EAAA,CAAA,kiBAAA,CAAA,EAAA;8BAQV,IAAI,EAAA,CAAA;sBAAZ;gBAMQ,IAAI,EAAA,CAAA;sBAAZ;gBAMQ,KAAK,EAAA,CAAA;sBAAb;gBAMQ,IAAI,EAAA,CAAA;sBAAZ;gBAQG,QAAQ,EAAA,CAAA;sBAFX;;sBACA,WAAW;uBAAC,gBAAgB;gBAezB,QAAQ,EAAA,CAAA;sBADX;gBAcQ,SAAS,EAAA,CAAA;sBAAjB;gBAOQ,WAAW,EAAA,CAAA;sBAAnB;gBASQ,aAAa,EAAA,CAAA;sBAArB;;AAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0EG;MASU,kBAAkB,CAAA;AAR/B,IAAA,WAAA,GAAA;QAoBY,IAAK,CAAA,KAAA,GAAoB,OAAO;QAahC,IAAU,CAAA,UAAA,GAAY,KAAK;AA2BtC;AAlDC;;AAEG;AACH,IAAA,IACI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK;;IAEnB,IAAI,IAAI,CAAC,KAAsB,EAAA;AAC7B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;AAIpB;;AAEG;AACH,IAAA,IAEI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU;;IAExB,IAAI,SAAS,CAAC,KAAc,EAAA;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAKhD,IAAA,IACI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM;;AAG7B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAG9B,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;;AAG/B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAG9B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;8GAlDnB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EALjB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;AAEX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4MAAA,CAAA,EAAA,CAAA,CAAA;;2FAGU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAR9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAEZ,QAAA,EAAA;;AAEX,EAAA,CAAA,EAAA,UAAA,EACa,KAAK,EAAA,MAAA,EAAA,CAAA,4MAAA,CAAA,EAAA;8BAQf,IAAI,EAAA,CAAA;sBADP;gBAcG,SAAS,EAAA,CAAA;sBAFZ;;sBACA,WAAW;uBAAC,kBAAkB;gBAW3B,IAAI,EAAA,CAAA;sBADP,WAAW;uBAAC,iBAAiB;gBAM1B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAM3B,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,mBAAmB;gBAM5B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAM3B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;;;AC9QjC;;;;AAIG;AAWH,MAAM,qBAAqB,GAAG;IAC5B,iBAAiB;IACjB,kBAAkB;CACnB;MAeY,eAAe,CAAA;8GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,iBAjB1B,iBAAiB;AACjB,YAAA,kBAAkB,aAKhB,cAAc;YACd,aAAa;AACb,YAAA,YAAY,aARd,iBAAiB;YACjB,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAgBP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAXxB,cAAc;YACd,aAAa;YACb,YAAY,CAAA,EAAA,CAAA,CAAA;;2FASH,eAAe,EAAA,UAAA,EAAA,CAAA;kBAb3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,cAAc;wBACd,aAAa;wBACb,YAAY;AACb,qBAAA;AACD,oBAAA,YAAY,EAAE;AACZ,wBAAA,GAAG,qBAAqB;AACzB,qBAAA;AACD,oBAAA,OAAO,EAAE;AACP,wBAAA,GAAG,qBAAqB;AACzB,qBAAA;AACF,iBAAA;;;AChCD;;;;AAIG;AAMH;;AAEG;MAEU,eAAe,CAAA;AAD5B,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,OAAO,EAAkC;AAClE,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,OAAO,EAAwC;AACxE,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,OAAO,EAAwC;AAC1E,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAkC;AAqErE;AAnEC;;;;AAIG;IACH,cAAc,CAAC,UAAkB,EAAE,GAAY,EAAA;QAC7C,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;;AAGnD;;;;AAIG;IACH,gBAAgB,CAAC,UAAkB,EAAE,GAAY,EAAA;QAC/C,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;;AAGrD;;;;AAIG;IACH,YAAY,CAAC,IAAY,EAAE,GAAY,EAAA;QACrC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;;AAG7C;;;;AAIG;IACH,WAAW,CAAC,IAAY,EAAE,GAAY,EAAA;QACpC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,GAAG,EAAC,CAAC;;AAGrC;;;AAGG;IACH,gBAAgB,GAAA;QACd,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;;AAG9C;;;AAGG;IACH,kBAAkB,GAAA;QAChB,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;;AAGhD;;;AAGG;IACH,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;;AAG9C;;;AAGG;IACH,aAAa,GAAA;QACX,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;;8GAvE7B,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAf,eAAe,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B;;;ACbD;;;;AAIG;AA4BH;;;AAGG;MAoCU,sBAAsB,CAAA;AAnCnC,IAAA,WAAA,GAAA;QAgDW,IAAI,CAAA,IAAA,GAAG,KAAK;AAEX,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAE;AAC1B,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAE;AAC3B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAE;AA4E3C;aA3FiB,IAAiB,CAAA,iBAAA,GAAG,cAAH,CAAkB;aACnC,IAAkB,CAAA,kBAAA,GAAG,eAAH,CAAmB;aACrC,IAAe,CAAA,eAAA,GAAG,YAAH,CAAgB;aAC/B,IAAY,CAAA,YAAA,GAAG,SAAH,CAAa;aACzB,IAAmB,CAAA,mBAAA,GAAG,gBAAH,CAAoB;aACvC,IAAe,CAAA,eAAA,GAAG,YAAH,CAAgB;aAC/B,IAAe,CAAA,eAAA,GAAG,YAAH,CAAgB;AAa/C,IAAA,IACI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,IAAI;;AAGlB,IAAA,IACI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,sBAAsB,CAAC,iBAAiB;;AAG/D,IAAA,IACI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,sBAAsB,CAAC,kBAAkB;;AAGhE,IAAA,IACI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,sBAAsB,CAAC,eAAe;;AAG7D,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,sBAAsB,CAAC,YAAY;;AAG1D,IAAA,IACI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,sBAAsB,CAAC,mBAAmB;;AAGjE,IAAA,IACI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,sBAAsB,CAAC,eAAe;;AAG7D,IAAA,IACI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,sBAAsB,CAAC,eAAe;;IAG7D,WAAW,CAAC,EAAE,IAAI,EAAiB,EAAA;AACjC,QAAA,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK;AACzE,QAAA,IAAI,YAAY,IAAI,IAAI,CAAC,YAAY,EAAE;YACrC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;;QAG5C,IAAI,CAAC,UAAU,EAAE;;IAGnB,eAAe,GAAA;QACb,IAAI,CAAC,UAAU,EAAE;;IAGnB,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;;AAGnB,IAAA,YAAY,CAAC,IAAI,EAAA;QACf,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;;;AAI1B,IAAA,eAAe,CAAC,IAAY,EAAA;AAC1B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG7B,UAAU,GAAA;QACR,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;AAClC,YAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE;;;8GA1FhC,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAvBrB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;AAoBX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,62EAAA,EAAA,k0DAAA,EAAA,20CAAA,EAAA,wjDAAA,EAAA,orDAAA,EAAA,2jFAAA,EAAA,uoDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,iBAAA,EAAA,QAAA,EAAA,gGAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGU,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAnClC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EACV,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAUrC,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;AAoBX,EAAA,CAAA,EAAA,UAAA,EACa,KAAK,EAAA,MAAA,EAAA,CAAA,62EAAA,EAAA,k0DAAA,EAAA,20CAAA,EAAA,wjDAAA,EAAA,orDAAA,EAAA,2jFAAA,EAAA,uoDAAA,CAAA,EAAA;8BAYV,IAAI,EAAA,CAAA;sBAAZ;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBAES,KAAK,EAAA,CAAA;sBAAd;gBACS,MAAM,EAAA,CAAA;sBAAf;gBACS,WAAW,EAAA,CAAA;sBAApB;gBAEyB,YAAY,EAAA,CAAA;sBAArC,SAAS;uBAAC,aAAa;gBAGpB,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,YAAY;gBAMrB,WAAW,EAAA,CAAA;sBADd,WAAW;uBAAC,oBAAoB;gBAM7B,YAAY,EAAA,CAAA;sBADf,WAAW;uBAAC,qBAAqB;gBAM9B,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,kBAAkB;gBAM3B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,eAAe;gBAMxB,aAAa,EAAA,CAAA;sBADhB,WAAW;uBAAC,sBAAsB;gBAM/B,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,kBAAkB;gBAM3B,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,kBAAkB;;AA0CjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDG;MAsBU,iBAAiB,CAAA;IAqC5B,WACU,CAAA,aAA8B,EAC9B,YAA4B,EAC5B,MAAc,EACd,cAAgC,EAChC,cAAiC,EAAA;QAJjC,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAAc,CAAA,cAAA,GAAd,cAAc;AAxChB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;QAEtC,IAAe,CAAA,eAAA,GAAG,KAAK;AAUvB;;;AAGG;QACM,IAAW,CAAA,WAAA,GAAW,WAAW;AAE1C;;;;AAIG;QACM,IAAI,CAAA,IAAA,GAAW,qBAAqB;;IAoB7C,QAAQ,GAAA;QACN,IAAI,CAAC,MAAM,CAAC;AACT,aAAA,IAAI,CACH,MAAM,CAAC,KAAK,IAAI,KAAK,YAAY,aAAa,CAAC,EAC/C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAEzB,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AAErC,QAAA,IAAI,CAAC,aAAa,CAAC,gBAAgB;aAChC,IAAI,CACH,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,EAClD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAEzB,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AAErC,QAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB;aAClC,IAAI,CACH,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,EAClD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAEzB,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;;IAGvC,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE;YACpD,IAAI,CAAC,mBAAmB,EAAE;AAC1B,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;;AAG1B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;;IAG1B,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;YAC9C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;;QAGhD,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9C,QAAAiE,EAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AAC/C,YAAA,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,aAAa,CAAC;AAClD,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,YAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;AACrC,SAAC,CAAC;;IAGJ,UAAU,GAAA;QACR,IAAI,CAAC,mBAAmB,EAAE;AAC1B,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;AAC5B,QAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;AACnC,QAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE;;AAGzC,IAAA,MAAM,CAAC,IAAI,EAAA;QACT,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;QAC/C,IAAI,CAAC,UAAU,EAAE;;AAGnB,IAAA,SAAS,CAAC,IAAY,EAAA;QACpB,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;;IAGhD,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;;IAGxD,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;;IAGlD,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,aAAa,CAAC;AAClD,QAAAA,EAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YACjD,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;AAChD,SAAC,CAAC;;8GAxHO,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAkCjB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,iBAAiB,EACO,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAU,EApDjC,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;AAcX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,uYAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAzE,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,iBAAA,EAAA,QAAA,EAAA,gGAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAtKU,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAyKtB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBArB7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EACJ,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAErC,QAAA,EAAA;;;;;;;;;;;;;;AAcX,EAAA,CAAA,EAAA,UAAA,EACa,KAAK,EAAA,MAAA,EAAA,CAAA,uYAAA,CAAA,EAAA;4LAcV,GAAG,EAAA,CAAA;sBAAX;gBAMQ,WAAW,EAAA,CAAA;sBAAnB;gBAOQ,IAAI,EAAA,CAAA;sBAAZ;gBAOQ,IAAI,EAAA,CAAA;sBAAZ;gBAE6B,iBAAiB,EAAA,CAAA;sBAA9C,SAAS;uBAAC,iBAAiB;gBACqB,YAAY,EAAA,CAAA;sBAA5D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,cAAc,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;;;ACnRjD;;;;AAIG;MA+BU,cAAc,CAAA;8GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,iBAXvB,iBAAiB;AACjB,YAAA,sBAAsB,aAPtB,cAAc;YACd,eAAe;YACf,YAAY;AACZ,YAAA,cAAc,aAOd,iBAAiB;YACjB,sBAAsB,CAAA,EAAA,CAAA,CAAA;AAMb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,EAJd,SAAA,EAAA;YACT,eAAe;AAChB,SAAA,EAAA,OAAA,EAAA,CAfC,cAAc;YACd,eAAe;YACf,YAAY;YACZ,cAAc,CAAA,EAAA,CAAA,CAAA;;2FAcL,cAAc,EAAA,UAAA,EAAA,CAAA;kBAnB1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,cAAc;wBACd,eAAe;wBACf,YAAY;wBACZ,cAAc;AACf,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACZ,iBAAiB;wBACjB,sBAAsB;AACvB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,iBAAiB;wBACjB,sBAAsB;AACvB,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT,eAAe;AAChB,qBAAA;AACF,iBAAA;;;AClCD;;;;AAIG;AAsBH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkOG;MA8BU,mBAAmB,CAAA;AAK9B,IAAA,IACI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ;;IAEtB,IAAI,OAAO,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAK9C;;AAEG;AACH,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;;IAEvB,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAW/C;;AAEG;AACH,IAAA,IACI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,cAAc;;IAE5B,IAAI,aAAa,CAAC,KAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,cAAc,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAWpD,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;;AAGjC,IAAA,IACI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,MAAM;;AAG/B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,OAAO;;AAGhC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,iBAAiB,GAAA;QACnB,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAClD,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;AAEzD,QAAA,OAAO,EAAE;;IAGX,WACU,CAAA,cAAiC,EACjC,QAAmB,EACnB,WAAoC,EACpC,IAAY,EACZ,aAA8B,EAAA;QAJ9B,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAI,CAAA,IAAA,GAAJ,IAAI;QACJ,IAAa,CAAA,aAAA,GAAb,aAAa;AAnGvB,QAAA,IAAA,CAAA,QAAQ,GAAQ,MAAK,GAAI;AACzB,QAAA,IAAA,CAAA,SAAS,GAAQ,MAAK,GAAI;QASlB,IAAQ,CAAA,QAAA,GAAY,KAAK;QAazB,IAAS,CAAA,SAAA,GAAY,KAAK;AAGlC;;;AAGG;QACM,IAAM,CAAA,MAAA,GAA8B,OAAO;QAY5C,IAAc,CAAA,cAAA,GAAY,KAAK;AAGvC;;;AAGG;AACO,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAW;;IAqDrD,eAAe,GAAA;;QAEb,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,UAAU,CAAC,MAAK;AAChD,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,eAAe,CAAC;SACxE,CAAC,CAAC;;AAGL,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGrB,IAAA,UAAU,CAAC,GAAQ,EAAA;AACjB,QAAA,IAAI,CAAC,QAAQ,GAAG,GAAG;AACnB,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;;AAGpC,IAAA,gBAAgB,CAAC,GAAY,EAAA;AAC3B,QAAA,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAC,GAAG,CAAC;AAC1C,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;;IAGpC,UAAU,GAAA;QACR,IAAI,CAAC,SAAS,EAAE;;AAGlB,IAAA,2BAA2B,CAAC,KAAY,EAAA;AACtC,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,MAA2B;AAChD,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;QAC5B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AACrC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;AAC3B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa;;8GA1I/B,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,yhBARjB,CAAC;AACJ,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA,CAAC,EAvBI,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;AAiBX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,yjBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiB,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAUU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBA7B/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EACb,QAAA,EAAA;;;;;;;;;;;;;;;;;AAiBX,EAAA,CAAA,EAAA,SAAA,EAEY,CAAC;AACJ,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC;AAClD,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA,CAAC,EACW,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,MAAA,EAAA,CAAA,yjBAAA,CAAA,EAAA;uLAQf,OAAO,EAAA,CAAA;sBADV;gBAcG,QAAQ,EAAA,CAAA;sBADX;gBAcQ,MAAM,EAAA,CAAA;sBAAd;gBAMG,aAAa,EAAA,CAAA;sBADhB;gBAcS,aAAa,EAAA,CAAA;sBAAtB;gBAGG,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,qBAAqB;gBAM9B,IAAI,EAAA,CAAA;sBADP,WAAW;uBAAC,mBAAmB;gBAM5B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,oBAAoB;gBAM7B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,iBAAiB,EAAA,CAAA;sBADpB,WAAW;uBAAC,OAAO;;;AClXtB;;;;AAIG;MAgBU,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAhB,gBAAgB,EAAA,YAAA,EAAA,CAHZ,mBAAmB,CAAA,EAAA,OAAA,EAAA,CAHhC,cAAc;AACd,YAAA,YAAY,aAGJ,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAElB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YANzB,cAAc;YACd,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAKH,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAR5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,cAAc;wBACd,YAAY;AACb,qBAAA;oBACD,YAAY,EAAE,CAAC,mBAAmB,CAAC;oBACnC,OAAO,EAAE,CAAC,mBAAmB,CAAC;AAC/B,iBAAA;;;MCDY,gBAAgB,CAAA;AAgB3B,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;;AAG3C,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;;AAGnD,IAAA,WAAA,CACY,OAAyB,EACzB,wBAAkD,EAClD,IAAY,EACZ,gBAAoC,EAAA;QAHpC,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB;QACxB,IAAI,CAAA,IAAA,GAAJ,IAAI;QACJ,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAxBlB,IAAO,CAAA,OAAA,GAAW,EAAE;QAGpB,IAAa,CAAA,aAAA,GAAoB,EAAE;QAEnC,IAAQ,CAAA,QAAA,GAAG,KAAK;AAEhB,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,OAAO,EAAQ;AAC7C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAC9C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;AAC9B,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,OAAO,EAAgB;;AAiBvD,IAAA,MAAM,CACJ,aAA0C,EAC1C,OAAyB,EACzB,OAAe,EACf,gBAAuD,EACvD,aAAiC,GAAA,EAAE,EACnC,QAAQ,GAAG,KAAK,EAAA;AAEhB,QAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC;AAC3C,QAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;AAChC,QAAA,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;AAC1C,QAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;AACpC,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AAE1B,QAAA,OAAO,IAAI;;AAGb,IAAA,UAAU,CAAC,OAAyB,EAAA;AAClC,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AAEtB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,aAAa,EAAE;;QAEtB,IAAI,CAAC,cAAc,EAAE;;AAGvB,IAAA,UAAU,CAAC,OAAe,EAAA;AACxB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AAEtB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,aAAa,EAAE;;QAEtB,IAAI,CAAC,cAAc,EAAE;;IAGvB,oBAAoB,CAAC,OAAyB,EAAE,OAAe,EAAA;AAC7D,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACtB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACtB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,aAAa,EAAE;;QAEtB,IAAI,CAAC,cAAc,EAAE;;AAGvB,IAAA,YAAY,CAAC,aAA0C,EAAA;AACrD,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;;AAGlC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU;QACnC,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,IAAI,EAAE;;;AAIf,IAAA,mBAAmB,CAAC,gBAAuD,EAAA;AACzE,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE;AAEnC,QAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;QAExC,IAAI,CAAC,gBAAgB,CAAC;aACnB,IAAI,CACH,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAC9B,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAE9D,aAAA,SAAS,CAAC,CAAC,QAAoB,KAAI;AAClC,YAAA,IAAI,CAAC,mBAAmB,GAAG,QAAQ;YACnC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC;AACrC,SAAC,CAAC;AAEJ,QAAA,IAAI,IAAI,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,CAAC,gBAAgB,CAAC;;;AAI1D,IAAA,gBAAgB,CAAC,aAA8B,EAAA;AAC7C,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;AAElC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU;QACnC,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,IAAI,EAAE;;;AAIf,IAAA,WAAW,CAAC,QAAiB,EAAA;QAC3B,IAAI,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;YACnC,IAAI,CAAC,IAAI,EAAE;;AAEb,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;;IAG1B,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB;;AAGF,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACb,IAAI,CAAC,aAAa,EAAE;;QAGtB,IAAI,CAAC,eAAe,EAAE;AAEtB,QAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE;;YAEjC,IAAI,CAAC,iBAAiB,EAAE;AACxB,YAAA,OAAO,IAAI,CAAC,IAAI,EAAE;;AAGpB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG1B,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACb;;AAGF,QAAA,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;AACjB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AAErB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;;IAG3B,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,IAAI,EAAE;;aACN;YACL,IAAI,CAAC,IAAI,EAAE;;;IAIf,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;QACxB,IAAI,CAAC,IAAI,EAAE;QACX,IAAI,CAAC,iBAAiB,EAAE;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;AACxB,QAAA,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE;AACvC,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;;IAGjC,YAAY,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;;IAGb,aAAa,GAAA;QACrB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAC7B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE;YAC1D,GAAG,IAAI,CAAC,aAAa;AACtB,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC;;IAG/B,eAAe,GAAA;AACvB,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,EAAE;AACtD,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,YAAA,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,EAAE,gBAAgB,EAAE,IAAI,CAAC,wBAAwB,CAAC;;AAEjH,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE;;IAG/B,aAAa,GAAA;AACrB,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,EAAE;QACtD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AACxD,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE;AACvC,QAAA,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,aAAa,EAAE;;IAGxC,sBAAsB,GAAA;QAC9B,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,GAAG,EAAE,IAAI,CAAC,wBAAwB;YAClC,QAAQ,EAAE,IAAI,CAAC,mBAAmB;SACnC;;AAGH;;;AAGG;AACO,IAAA,wBAAwB,CAAC,OAAqB,EAAA;QACtD,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAC/C,MAAM,CAAC,CAAC,gBAA8B,KAAK,gBAAgB,KAAK,OAAO,CAAC,CACzE;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;;IAGjH,cAAc,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,GAAG,EAAE;AACZ,YAAA,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE;;;IAInB,qBAAqB,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;;IAGzE,iBAAiB,GAAA;AACzB,QAAA,IAAI,IAAI,CAAC,GAAG,EAAE;AACZ,YAAA,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;YAClB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACnC,YAAA,IAAI,CAAC,GAAG,GAAG,IAAI;AACf,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;;;8GA5Od,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAoE,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAhB,gBAAgB,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B;;;ACAK,MAAO,sBAAuB,SAAQ,YAAY,CAAA;AACtD,IAAA,WAAA,CAAY,aAAkB,EAAE,YAAiB,EAAE,cAAuB,KAAK,EAAA;AAC7E,QAAA,KAAK,CAAC,aAAa,EAAE,YAAY,EAAE,WAAW,CAAC;;IAGjD,SAAS,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,aAAa;;AAElD;MAGY,uBAAuB,CAAA;AAqBlC,IAAA,WAAA,CACU,eAAyC,EACzC,sBAAuD,EACvD,qBAAuC,EACvC,gBAA0C,EAAA;QAH1C,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB;QACtB,IAAqB,CAAA,qBAAA,GAArB,qBAAqB;QACrB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAtBhB,IAAQ,CAAA,QAAA,GAAW,EAAE;AAErB,QAAA,IAAA,CAAA,QAAQ,GAAc,SAAS,CAAC,IAAI;QACpC,IAAS,CAAA,SAAA,GAAY,KAAK;AAC1B,QAAA,IAAA,CAAA,SAAS,GAAe,UAAU,CAAC,GAAG;AACtC,QAAA,IAAA,CAAA,WAAW,GAAiB,YAAY,CAAC,IAAI;QAC7C,IAAO,CAAA,OAAA,GAAW,EAAE;QACpB,IAAc,CAAA,cAAA,GAAoB,EAAE;QAOpC,IAAO,CAAA,OAAA,GAA8C,EAAE;AAEvD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;;AASxC,IAAA,IAAI,CAAC,IAAgB,EAAA;AACnB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;AAChE,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,QAAA,OAAO,IAAI;;AAGb,IAAA,OAAO,CAAC,OAAkB,EAAA;AACxB,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACzE,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;AACvB,QAAA,OAAO,IAAI;;AAGb,IAAA,QAAQ,CAAC,QAAiB,EAAA;AACxB,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC;AAC5E,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;AACzB,QAAA,OAAO,IAAI;;AAGb,IAAA,QAAQ,CAAC,QAAoB,EAAA;AAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC;AAC5E,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;AACzB,QAAA,OAAO,IAAI;;AAGb,IAAA,UAAU,CAAC,UAAwB,EAAA;AACjC,QAAA,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC;AAClF,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU;AAC7B,QAAA,OAAO,IAAI;;AAGb,IAAA,aAAa,CAAC,aAA0C,EAAA;AACtD,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC;AAC3F,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa;AACnC,QAAA,OAAO,IAAI;;AAGb,IAAA,OAAO,CAAC,OAAyB,EAAA;AAC/B,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACzE,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;AACvB,QAAA,OAAO,IAAI;;AAGb,IAAA,OAAO,CAAC,OAAW,EAAA;AACjB,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACzE,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;AACvB,QAAA,OAAO,IAAI;;AAGb,IAAA,MAAM,CAAC,MAAc,EAAA;AACnB,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;AACtE,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AACrB,QAAA,OAAO,IAAI;;AAGb,IAAA,aAAa,CAAC,aAA8B,EAAA;AAC1C,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC;AAC3F,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa;AACnC,QAAA,OAAO,IAAI;;IAGb,KAAK,GAAA;QACH,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACvC,YAAA,MAAM,KAAK,CAAC,CAAA;AAC8B,+CAAA,CAAA,CAAC;;AAE7C,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CACrD,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,sBAAsB,EAAE,EAC7B,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,SAAS,CACf;QAED,IAAI,CAAC,OAAO,EAAE;QACd,IAAI,CAAC,YAAY,EAAE;QAEnB,OAAO,IAAI,CAAC,cAAc;;IAG5B,OAAO,GAAA;AACL;;;;;AAKG;AACH,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,OAAO,SAAS;;AAGlB,QAAA,IAAI,IAAI,CAAC,gCAAgC,EAAE,EAAE;YAC3C,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;;AAGxE,QAAA,IAAI,IAAI,CAAC,+BAA+B,EAAE,EAAE;YAC1C,IAAI,CAAC,OAAO,EAAE;;AAGhB,QAAA,IAAI,IAAI,CAAC,2BAA2B,EAAE,EAAE;AACtC,YAAA,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC;;AAGxE,QAAA,IAAI,IAAI,CAAC,6BAA6B,EAAE,EAAE;YACxC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC;;AAGvD,QAAA,IAAI,IAAI,CAAC,6BAA6B,EAAE,EAAE;YACxC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC;;AAG3D,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;YAC5B,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;;QAGjD,IAAI,CAAC,YAAY,EAAE;QACnB,OAAO,IAAI,CAAC,cAAc;;IAG5B,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,MAAM,IAAI,KAAK,CAAC,CAAA;AAC6B,kDAAA,CAAA,CAAC;;QAEhD,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,0BAA0B,EAAE;;IAGnC,UAAU,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE;;;IAIlC,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;QAExB,IAAI,CAAC,UAAU,EAAE;QACjB,IAAI,CAAC,YAAY,EAAE;AACnB,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;;;IAIvB,sBAAsB,GAAA;QAC9B,OAAO,IAAI,CAAC;AACT,aAAA,WAAW,CAAC,IAAI,CAAC,KAAK;AACtB,aAAA,QAAQ,CAAC,IAAI,CAAC,SAAS;AACvB,aAAA,UAAU,CAAC,IAAI,CAAC,WAAW;AAC3B,aAAA,MAAM,CAAC,IAAI,CAAC,OAAO;aACnB,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;;AAG1C,IAAA,mBAAmB,CAAC,cAAgC,EAAA;AAC5D,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AACzB,aAAA,OAAO,CAAC,IAAI,CAAC,QAAQ;AACrB,aAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa;aAC7B,SAAS,CAAC,MAAM,cAAc,CAAC,YAAY,EAAE;AAC7C,aAAA,KAAK,EAAE;AAEV,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;AACjE,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;;IAGzD,0BAA0B,GAAA;AAClC,QAAA,IAAI,CAAC;AACF,aAAA,iBAAiB;AACjB,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aACtC,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;AACxE,SAAC,CAAC;;IAGI,2BAA2B,GAAA;AACnC,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,gCAAgC,EAAE;;IAG5F,gCAAgC,GAAA;AACxC,QAAA,OAAO,IAAI,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE;;IAGvG,+BAA+B,GAAA;QACvC,OAAO,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE;;IAG9C,6BAA6B,GAAA;AACrC,QAAA,OAAO,IAAI,CAAC,sBAAsB,EAAE;;IAG9B,6BAA6B,GAAA;AACnC,QAAA,OAAO,IAAI,CAAC,sBAAsB,EAAE;;IAG5B,sBAAsB,GAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE;;IAGnE,gBAAgB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE;;IAGvD,gBAAgB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE;;IAGvD,mBAAmB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE;;IAG7D,iBAAiB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE;;IAGzD,aAAa,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE;;IAGjD,gBAAgB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE;;IAGvD,eAAe,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE;;IAGrD,sBAAsB,GAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE;;IAGnE,iBAAiB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE;;IAGzD,YAAY,GAAA;AACpB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;;8GAxQR,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA7B,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,+BAAA,EAAA,EAAA,EAAA,KAAA,EAAA6B,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAvB,uBAAuB,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC;;;AC3BD;;;;AAIG;AAkBH;;;;;;;;;;;;;;;;;;AAkBK;AAUC,MAAO,kBAAmB,SAAQ,8BAA8B,CAAA;IAOpE,aAAa,GAAA;QACX,IAAI,CAAC,aAAa,EAAE;QACpB,IAAI,CAAC,aAAa,EAAE;;IAGZ,aAAa,GAAA;AACrB,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;;IAGtB,aAAa,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,OAAO,YAAY,WAAW,EAAE;YACvC,IAAI,CAAC,cAAc,EAAE;;AAChB,aAAA,IAAI,IAAI,CAAC,OAAO,YAAY,IAAI,EAAE;YACvC,IAAI,CAAC,eAAe,EAAE;;aACjB;YACL,IAAI,CAAC,YAAY,EAAE;;;IAIb,cAAc,GAAA;AACtB,QAAA,IAAI,CAAC;AACF,aAAA,oBAAoB,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAO,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;;IAG3F,eAAe,GAAA;AACvB,QAAA,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;AACxE,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC;AAC7E,QAAA,GAAG,CAAC,iBAAiB,CAAC,aAAa,EAAE;;IAG7B,YAAY,GAAA;QACpB,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC;;8GAtC9C,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAClB,2BAA2B,EAP1B,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;AAGX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,sNAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhC,2BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAT9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAEZ,QAAA,EAAA;;;AAGX,EAAA,CAAA,EAAA,UAAA,EACa,KAAK,EAAA,MAAA,EAAA,CAAA,sNAAA,CAAA,EAAA;8BAGqB,gBAAgB,EAAA,CAAA;sBAAvD,SAAS;uBAAC,2BAA2B;gBAE7B,OAAO,EAAA,CAAA;sBAAf;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,GAAG,EAAA,CAAA;sBAAX;;;ACvDH;;;;AAIG;AAwBH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmFK;MAOQ,kBAAkB,CAAA;AA2B7B;;;;AAIK;AACL,IAAA,IACI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW;;IAEzB,IAAI,UAAU,CAAC,KAAmB,EAAA;AAChC,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;;AAuB1B,IAAA,IACI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa;;IAE3B,IAAI,YAAY,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,YAAY,EAAE;AAC/B,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;YAC1B,IAAI,CAAC,aAAa,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE;;;AAU1D,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;;IAGlE,WAAsB,CAAA,OAAmB,EAAY,qBAA8C,EAAA;QAA7E,IAAO,CAAA,OAAA,GAAP,OAAO;QAAwB,IAAqB,CAAA,qBAAA,GAArB,qBAAqB;QAhFhE,IAAgB,CAAA,gBAAA,GAAG,kBAAkB;AAErC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;AASxC;;AAEK;QAEL,IAAO,CAAA,OAAA,GAAW,EAAE;AAEpB;;;AAGK;;AAGL,QAAA,IAAA,CAAA,QAAQ,GAAe,UAAU,CAAC,GAAG;AAe3B,QAAA,IAAA,CAAA,WAAW,GAAiB,YAAY,CAAC,SAAS;AAG5D;;;AAGK;AAEL,QAAA,IAAA,CAAA,OAAO,GAAc,SAAS,CAAC,KAAK;AAGpC;;AAEK;QAEL,IAAM,CAAA,MAAA,GAAG,EAAE;;;QAIiB,IAAQ,CAAA,QAAA,GAAY,KAAK;QAYrD,IAAa,CAAA,aAAA,GAAW,EAAE;AAG1B,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,YAAY,EAAwB;QAEzD,IAAa,CAAA,aAAA,GAAoB,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE;;IAQ5E,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC;;IAGpF,WAAW,GAAA;QACT,IAAI,CAAC,OAAO,EAAE;;IAGhB,eAAe,GAAA;QACb,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC,KAAK,EAAE;QAE5D,IAAI,CAAC,cAAc,CAAC;AACjB,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AACtC,aAAA,SAAS,CAAC,CAAC,OAAgB,KAAK,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;;IAGrF,OAAO,GAAA;QACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC,OAAO,EAAE;;IAGhE,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;;IAG5B,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;;IAG5B,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;;IAG9B,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE;AACpC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;;IAGhB,uBAAuB,GAAA;QAC/B,OAAO,IAAI,CAAC;AACT,aAAA,QAAQ,CAAC,IAAI,CAAC,QAAQ;AACtB,aAAA,OAAO,CAAC,IAAI,CAAC,OAAO;AACpB,aAAA,QAAQ,CAAC,IAAI,CAAC,QAAQ;AACtB,aAAA,MAAM,CAAC,IAAI,CAAC,MAAM;AAClB,aAAA,UAAU,CAAC,IAAI,CAAC,UAAU;AAC1B,aAAA,OAAO,CAAC,IAAI,CAAC,OAAO;AACpB,aAAA,OAAO,CAAC,IAAI,CAAC,OAAO;AACpB,aAAA,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC;;8GAlI3B,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAiC,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAHhB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,EAAA,UAAA,CAAA,EAAA,UAAA,EAAA,CAAA,qBAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,SAAA,CAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,EAAA,UAAA,CAAA,EAAA,YAAA,EAAA,CAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,EAAA,SAAA,EAAA,CAAC,uBAAuB,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAG7C,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,SAAS,EAAE,CAAC,uBAAuB,EAAE,gBAAgB,CAAC;AACtD,oBAAA,UAAU,EAAE;AACf,iBAAA;kHAWC,OAAO,EAAA,CAAA;sBADN,KAAK;uBAAC,WAAW;gBAOlB,OAAO,EAAA,CAAA;sBADN,KAAK;uBAAC,kBAAkB;gBASzB,QAAQ,EAAA,CAAA;sBADP,KAAK;uBAAC,oBAAoB;gBAUvB,UAAU,EAAA,CAAA;sBADb,KAAK;uBAAC,qBAAqB;gBAe5B,OAAO,EAAA,CAAA;sBADN,KAAK;uBAAC,kBAAkB;gBAQzB,MAAM,EAAA,CAAA;sBADL,KAAK;uBAAC,iBAAiB;gBAKI,QAAQ,EAAA,CAAA;sBAAnC,KAAK;uBAAC,mBAAmB;gBAGtB,YAAY,EAAA,CAAA;sBADf,KAAK;uBAAC,gBAAgB;gBAavB,wBAAwB,EAAA,CAAA;sBADvB;;;AC9LH;;;;AAIG;MAcU,eAAe,CAAA;8GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,iBAHX,kBAAkB,EAAE,kBAAkB,CAD3C,EAAA,OAAA,EAAA,CAAA,eAAe,aAEf,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAEjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAJhB,eAAe,CAAA,EAAA,CAAA,CAAA;;2FAId,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,eAAe,CAAC;AAC1B,oBAAA,YAAY,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;oBACtD,OAAO,EAAE,CAAC,kBAAkB,CAAC;AAC9B,iBAAA;;;ACjBD;;;;AAIG;AAOH;;;;;;;;;;;;;;AAcK;AAQC,MAAO,sBAAuB,SAAQ,8BAA8B,CAAA;AAP1E,IAAA,WAAA,GAAA;;QASW,IAAK,CAAA,KAAA,GAAiB,EAAE;AAIjC,QAAA,IAAA,CAAA,OAAO,GAA0C,EAAE,KAAK,EAAE,EAAE,EAAE;AAQ/D;AALC;;;AAGG;AACH,IAAA,aAAa;8GAbF,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EALrB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,GAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;AAEX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGU,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE;;AAEX,EAAA,CAAA;AACC,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAGU,KAAK,EAAA,CAAA;sBAAb;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBAGD,OAAO,EAAA,CAAA;sBADN;;;ACtCH;;;;AAIG;AA8BH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqFK;MAMQ,sBAAsB,CAAA;AAKjC;;;AAGK;AACL,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;;IAEvB,IAAI,QAAQ,CAAC,KAAiB,EAAA;AAC5B,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;YACtB,IAAI,CAAC,oBAAoB,EAAE;;;AAa/B;;AAEK;AACL,IAAA,IACI,GAAG,GAAA;QACL,OAAO,IAAI,CAAC,IAAI;;IAElB,IAAI,GAAG,CAAC,KAAa,EAAA;AACnB,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,GAAG,EAAE;AACtB,YAAA,IAAI,CAAC,IAAI,GAAG,KAAK;YACjB,IAAI,CAAC,oBAAoB,EAAE;;;AAK/B;;AAEK;AACL,IAAA,IACI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;;IAEpB,IAAI,KAAK,CAAC,KAAmB,EAAA;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;QACnB,IAAI,CAAC,oBAAoB,EAAE;;;AAW7B,IAAA,IACI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,iBAAiB;;IAE/B,IAAI,gBAAgB,CAAC,KAAa,EAAA;AAChC,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,gBAAgB,EAAE;AACnC,YAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;YAC9B,IAAI,CAAC,aAAa,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,gBAAgB,EAAE;;;AAe9D,IAAA,WAAA,CAAoB,OAAmB,EACnB,WAA0B,EAC1B,qBAA8C,EAAA;QAF9C,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAqB,CAAA,qBAAA,GAArB,qBAAqB;QAtFzC,IAAe,CAAA,eAAA,GAAG,IAAI;AAgBtB,QAAA,IAAA,CAAA,SAAS,GAAe,UAAU,CAAC,MAAM;AAEzC;;;;AAIK;AAEL,QAAA,IAAA,CAAA,UAAU,GAAiB,YAAY,CAAC,SAAS;AA8BjD;;;AAGK;AAEL,QAAA,IAAA,CAAA,OAAO,GAAc,SAAS,CAAC,KAAK;QAapC,IAAiB,CAAA,iBAAA,GAAW,EAAE;QAKpB,IAAa,CAAA,aAAA,GAAoB,EAAE,UAAU,EAAE,IAAI,CAAC,gBAAgB,EAAE;QACtE,IAAc,CAAA,cAAA,GAAyB,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACpG,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;QAChC,IAAM,CAAA,MAAA,GAAiB,EAAE;;IASjC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CAAC,IAAI,CAAC,OAAO;aACjB,aAAa,CAAC,sBAAsB,CAAC;;IAG1C,WAAW,GAAA;QACT,IAAI,CAAC,OAAO,EAAE;;IAGhB,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,uBAAuB;AAC/C,aAAA,KAAK,EAAE;QACV,IAAI,CAAC,oBAAoB,EAAE;;IAG7B,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,uBAAuB;AAC/C,aAAA,OAAO,EAAE;;IAGd,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;;IAG5B,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;;IAG5B,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;;IAG9B,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE;AACpC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;;IAGhB,uBAAuB,GAAA;QAC/B,OAAO,IAAI,CAAC;AACT,aAAA,QAAQ,CAAC,IAAI,CAAC,QAAQ;AACtB,aAAA,OAAO,CAAC,IAAI,CAAC,OAAO;AACpB,aAAA,UAAU,CAAC,IAAI,CAAC,UAAU;AAC1B,aAAA,OAAO,CAAC,IAAI,CAAC,cAAc;AAC3B,aAAA,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC;;AAGtC;;;AAGK;AACG,IAAA,aAAa,CAAC,KAAmB,EAAA;QACvC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAC3B,YAAA,MAAM,KAAK,CAAC,CAAA,wCAAA,EAA2C,KAAK,CAAA,CAAE,CAAC;;;IAI3D,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW;AACzB,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,IAAI,CAAC,EACxE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAEzB,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;;IAGvB,oBAAoB,GAAA;QAC5B,IAAI,CAAC,cAAc,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;;8GAhK1E,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAApB,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAqB,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAHpB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CAAA,wBAAA,EAAA,UAAA,CAAA,EAAA,UAAA,EAAA,CAAA,yBAAA,EAAA,YAAA,CAAA,EAAA,GAAA,EAAA,CAAA,kBAAA,EAAA,KAAA,CAAA,EAAA,KAAA,EAAA,CAAA,eAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,EAAA,SAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,oBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,yBAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,CAAC,uBAAuB,EAAE,gBAAgB,CAAC,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAG7C,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,SAAS,EAAE,CAAC,uBAAuB,EAAE,gBAAgB,CAAC;AACtD,oBAAA,UAAU,EAAE;AACf,iBAAA;2IAIC,eAAe,EAAA,CAAA;sBADd,WAAW;uBAAC,yBAAyB;gBAQlC,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,wBAAwB;gBAkB/B,UAAU,EAAA,CAAA;sBADT,KAAK;uBAAC,yBAAyB;gBAO5B,GAAG,EAAA,CAAA;sBADN,KAAK;uBAAC,kBAAkB;gBAgBrB,KAAK,EAAA,CAAA;sBADR,KAAK;uBAAC,eAAe;gBAetB,OAAO,EAAA,CAAA;sBADN,KAAK;uBAAC,sBAAsB;gBAKzB,gBAAgB,EAAA,CAAA;sBADnB,KAAK;uBAAC,oBAAoB;;;AC9L7B;;;;AAIG;MAgBU,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAnB,mBAAmB,EAAA,YAAA,EAAA,CAFf,sBAAsB,EAAE,sBAAsB,CAAA,EAAA,OAAA,EAAA,CAFnD,YAAY,EAAE,eAAe,EAAE,YAAY,CAAA,EAAA,OAAA,EAAA,CAC3C,sBAAsB,CAAA,EAAA,CAAA,CAAA;AAGrB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,EAJpB,OAAA,EAAA,CAAA,YAAY,EAAE,eAAe,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAI1C,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,YAAY,CAAC;oBACtD,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,oBAAA,YAAY,EAAE,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;AAC/D,iBAAA;;;ACnBD;;;;AAIG;AAQH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmFG;MAcU,sBAAsB,CAAA;AAsBjC,IAAA,IACI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM;;AAG7B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAG9B,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;;AAG/B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAG9B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAG9B,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,MAAM;;AAG/B,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;;AAGjC,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,OAAO;;AAGhC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,iBAAiB,GAAA;QACnB,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAClD,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;AAEzD,QAAA,OAAO,EAAE;;AAGX,IAAA,WAAA,CAAsB,aAA8B,EAAA;QAA9B,IAAa,CAAA,aAAA,GAAb,aAAa;AAxFnC;;AAEG;QACM,IAAK,CAAA,KAAA,GAAW,CAAC;AAE1B;;AAEG;QACM,IAAM,CAAA,MAAA,GAA8B,OAAO;AAEpD;;AAEG;QACM,IAAI,CAAA,IAAA,GAAoB,QAAQ;AAEzC;;AAEG;QACM,IAAY,CAAA,YAAA,GAAY,KAAK;;8GApB3B,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAjF,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAVrB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;AAOX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4RAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGU,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAblC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAEjB,QAAA,EAAA;;;;;;;AAOX,EAAA,CAAA,EAAA,UAAA,EACa,KAAK,EAAA,MAAA,EAAA,CAAA,4RAAA,CAAA,EAAA;iFAOV,KAAK,EAAA,CAAA;sBAAb;gBAKQ,MAAM,EAAA,CAAA;sBAAd;gBAKQ,IAAI,EAAA,CAAA;sBAAZ;gBAKQ,YAAY,EAAA,CAAA;sBAApB;gBAGG,IAAI,EAAA,CAAA;sBADP,WAAW;uBAAC,iBAAiB;gBAM1B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAM3B,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,mBAAmB;gBAM5B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAM3B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAM3B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,IAAI,EAAA,CAAA;sBADP,WAAW;uBAAC,mBAAmB;gBAM5B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,qBAAqB;gBAM9B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,oBAAoB;gBAM7B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,iBAAiB,EAAA,CAAA;sBADpB,WAAW;uBAAC,OAAO;;;AC/LtB;;;;AAIG;MAcU,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,EAHf,YAAA,EAAA,CAAA,sBAAsB,CAFnC,EAAA,OAAA,EAAA,CAAA,cAAc,aAGN,sBAAsB,CAAA,EAAA,CAAA,CAAA;AAErB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YAL5B,cAAc,CAAA,EAAA,CAAA,CAAA;;2FAKL,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,cAAc;AACf,qBAAA;oBACD,YAAY,EAAE,CAAC,sBAAsB,CAAC;oBACtC,OAAO,EAAE,CAAC,sBAAsB,CAAC;AAClC,iBAAA;;;ACjBD;;;;AAIG;AAUH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+FG;MAYU,gBAAgB,CAAA;AA6B3B;;AAEG;AACH,IAAA,IAEI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;;IAEvB,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAW/C,IAAA,WAAA,CAAsB,aAA8B,EAAA;QAA9B,IAAa,CAAA,aAAA,GAAb,aAAa;AA/CnC;;;;AAIG;QACM,IAAI,CAAA,IAAA,GAAyB,EAAE;AAExC;;;AAGG;QACM,IAAM,CAAA,MAAA,GAA8B,OAAO;AAEpD;;;;AAIG;QACM,IAAM,CAAA,MAAA,GAA2B,EAAE;AAE5C;;;;AAIG;QACM,IAAO,CAAA,OAAA,GAA2B,EAAE;QAanC,IAAS,CAAA,SAAA,GAAY,KAAK;AAGpC;;;AAGG;AACO,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAE;;AAKpC;;AAEG;IACH,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;;AAGnB,IAAA,IACI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM;;AAG7B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAG9B,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;;AAG/B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAG9B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAG9B,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,MAAM;;AAG/B,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;;AAGjC,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,OAAO;;AAGhC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,MAAM;;AAG/B,IAAA,IACI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;;AAGjC,IAAA,IACI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,OAAO;;AAGhC,IAAA,IACI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS;;AAGnC,IAAA,IACI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS;;AAGnC,IAAA,IACI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,OAAO,KAAK,MAAM;;AAGhC,IAAA,IACI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS;;AAGnC,IAAA,IACI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;;AAGlC,IAAA,IACI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,OAAO,KAAK,OAAO;;AAGjC,IAAA,IACI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS;;AAGnC,IAAA,IACI,iBAAiB,GAAA;QACnB,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAClD,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;AAEzD,QAAA,OAAO,EAAE;;8GAlMA,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAU,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EARf,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;AAKX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,iYAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGU,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAX5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAEV,QAAA,EAAA;;;;;AAKX,EAAA,CAAA,EAAA,UAAA,EACa,KAAK,EAAA,MAAA,EAAA,CAAA,iYAAA,CAAA,EAAA;iFASV,IAAI,EAAA,CAAA;sBAAZ;gBAMQ,MAAM,EAAA,CAAA;sBAAd;gBAOQ,MAAM,EAAA,CAAA;sBAAd;gBAOQ,OAAO,EAAA,CAAA;sBAAf;gBAOG,QAAQ,EAAA,CAAA;sBAFX;;sBACA,WAAW;uBAAC,gBAAgB;gBAcnB,KAAK,EAAA,CAAA;sBAAd;gBAaG,IAAI,EAAA,CAAA;sBADP,WAAW;uBAAC,iBAAiB;gBAM1B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAM3B,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,mBAAmB;gBAM5B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAM3B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAM3B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,IAAI,EAAA,CAAA;sBADP,WAAW;uBAAC,mBAAmB;gBAM5B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,qBAAqB;gBAM9B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,oBAAoB;gBAM7B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,aAAa,EAAA,CAAA;sBADhB,WAAW;uBAAC,sBAAsB;gBAM/B,aAAa,EAAA,CAAA;sBADhB,WAAW;uBAAC,sBAAsB;gBAM/B,UAAU,EAAA,CAAA;sBADb,WAAW;uBAAC,mBAAmB;gBAM5B,aAAa,EAAA,CAAA;sBADhB,WAAW;uBAAC,sBAAsB;gBAM/B,YAAY,EAAA,CAAA;sBADf,WAAW;uBAAC,qBAAqB;gBAM9B,WAAW,EAAA,CAAA;sBADd,WAAW;uBAAC,oBAAoB;gBAM7B,aAAa,EAAA,CAAA;sBADhB,WAAW;uBAAC,sBAAsB;gBAM/B,cAAc,EAAA,CAAA;sBADjB,WAAW;uBAAC,uBAAuB;gBAMhC,cAAc,EAAA,CAAA;sBADjB,WAAW;uBAAC,uBAAuB;gBAMhC,WAAW,EAAA,CAAA;sBADd,WAAW;uBAAC,oBAAoB;gBAM7B,cAAc,EAAA,CAAA;sBADjB,WAAW;uBAAC,uBAAuB;gBAMhC,aAAa,EAAA,CAAA;sBADhB,WAAW;uBAAC,sBAAsB;gBAM/B,YAAY,EAAA,CAAA;sBADf,WAAW;uBAAC,qBAAqB;gBAM9B,cAAc,EAAA,CAAA;sBADjB,WAAW;uBAAC,uBAAuB;gBAMhC,iBAAiB,EAAA,CAAA;sBADpB,WAAW;uBAAC,OAAO;;;ACtTtB;;;;AAIG;MAmBU,aAAa,CAAA;8GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,EANtB,YAAA,EAAA,CAAA,gBAAgB,CAHhB,EAAA,OAAA,EAAA,CAAA,cAAc,aAMd,gBAAgB,CAAA,EAAA,CAAA,CAAA;AAGP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YATtB,cAAc,CAAA,EAAA,CAAA,CAAA;;2FASL,aAAa,EAAA,UAAA,EAAA,CAAA;kBAXzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,cAAc;AACf,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACZ,gBAAgB;AACjB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,gBAAgB;AACjB,qBAAA;AACF,iBAAA;;;ACtBD;;;;AAIG;AAOH;;AAEI;MAEkB,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAlB,kBAAkB,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBADvC;;AASD;;AAEI;MAES,wBAAwB,CAAA;AADrC,IAAA,WAAA,GAAA;QAEE,IAAc,CAAA,cAAA,GAAG,IAAI;QACrB,IAAc,CAAA,cAAA,GAAG,IAAI;AACtB;8GAHY,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAxB,wBAAwB,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC;;;AC1BD;;;;AAIG;AA2BH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0LG;MAQU,gBAAgB,CAAA;AAsB3B;;AAEG;AACH,IAAA,IAEI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU;;IAExB,IAAI,SAAS,CAAC,KAAc,EAAA;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAKhD,IAAA,IACI,iBAAiB,GAAA;QACnB,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAClD,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;AAEzD,QAAA,OAAO,EAAE;;IAGX,WACY,CAAA,UAA8D,EAC9D,YAA4B,EAC5B,QAAmB,EACnB,IAAY,EACZ,aAA8B,EAAA;QAJ9B,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAI,CAAA,IAAA,GAAJ,IAAI;QACJ,IAAa,CAAA,aAAA,GAAb,aAAa;AA/Cf,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;AAExC;;AAEG;QAEH,IAAS,CAAA,SAAA,GAAoB,QAAQ;AAErC;;;AAGG;QACM,IAAM,CAAA,MAAA,GAA8B,OAAO;AAEpD;;AAEG;QAEH,IAAK,CAAA,KAAA,GAAqB,WAAW;QAa7B,IAAU,CAAA,UAAA,GAAG,KAAK;AAuI1B;;AAEI;QACJ,IAAO,CAAA,OAAA,GAAG,IAAI,eAAe,CAA4B,IAAI,CAAC,MAAM,CAAC;AAErE;;AAEI;QACJ,IAAK,CAAA,KAAA,GAAG,IAAI,eAAe,CAAkB,IAAI,CAAC,SAAS,CAAC;AAE5D;;AAEI;AACJ,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAE9C;;AAEI;AACJ,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAE/C;;AAEI;QACJ,IAAU,CAAA,UAAA,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC,SAAS,CAAC;;IA1IzD,SAAS,GAAA;QACP,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ;QACzD,IAAI,UAAU,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACvC,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;;;AAInC,IAAA,WAAW,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAiB,EAAA;QACzD,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;;QAEhC,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;;QAEjC,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;;;IAIxC,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU;AACtC,aAAA,IAAI,CACH,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,EACvB,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EACjE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEzB,aAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;;IAG7B,eAAe,GAAA;;QAEb,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,UAAU,CAAC,MAAK;AAChD,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,eAAe,CAAC;SACvE,CAAC,CAAC;;IAGL,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;;AAGtB,IAAA,IACI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,SAAS,KAAK,MAAM;;AAGlC,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,SAAS,KAAK,OAAO;;AAGnC,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ;;AAGpC,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,SAAS,KAAK,OAAO;;AAGnC,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,SAAS,KAAK,OAAO;;AAGnC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,MAAM;;AAG/B,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;;AAGjC,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,OAAO;;AAGhC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,WAAW;;AAGnC,IAAA,IACI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,YAAY;;AAGpC,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,OAAO;;8GArKpB,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA4F,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EALd,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,gBAAgB,EAAE;AACjE,SAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGQ,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kCAAkC;AAC5C,oBAAA,SAAS,EAAE;AACP,wBAAA,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,kBAAkB,EAAE;AACjE,qBAAA;AACD,oBAAA,UAAU,EAAE;AACf,iBAAA;iLASC,SAAS,EAAA,CAAA;sBADR;gBAOQ,MAAM,EAAA,CAAA;sBAAd;gBAMD,KAAK,EAAA,CAAA;sBADJ;gBAQG,SAAS,EAAA,CAAA;sBAFZ;;sBACA,WAAW;uBAAC,wBAAwB;gBAWjC,iBAAiB,EAAA,CAAA;sBADpB,WAAW;uBAAC,OAAO;gBA0DhB,IAAI,EAAA,CAAA;sBADP,WAAW;uBAAC,iBAAiB;gBAM1B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAM3B,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,mBAAmB;gBAM5B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAM3B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAM3B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,IAAI,EAAA,CAAA;sBADP,WAAW;uBAAC,mBAAmB;gBAM5B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,qBAAqB;gBAM9B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,oBAAoB;gBAM7B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,uBAAuB;gBAMhC,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,wBAAwB;gBAMjC,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,mBAAmB;;;ACpYlC;;;;AAIG;AAgBH;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BG;MAgDU,mBAAmB,CAAA;IAgE9B,WAAsB,CAAA,EAAqB,EAAY,YAA0B,EAAA;QAA3D,IAAE,CAAA,EAAA,GAAF,EAAE;QAA+B,IAAY,CAAA,YAAA,GAAZ,YAAY;QA/DnE,IAAM,CAAA,MAAA,GAA8B,OAAO;QAC3C,IAAU,CAAA,UAAA,GAAY,KAAK;QAC3B,IAAU,CAAA,UAAA,GAAY,KAAK;QAE3B,IAAY,CAAA,YAAA,GAAU,EAAE;QACxB,IAAY,CAAA,YAAA,GAAG,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,CAAC;AAEvD;;;AAGG;QACM,IAAO,CAAA,OAAA,GAAW,EAAE;AAE7B;;;AAGG;QACM,IAAkB,CAAA,kBAAA,GAAW,gBAAgB;AACtD;;;AAGG;QACM,IAAW,CAAA,WAAA,GAAW,EAAE;AAEjC;;;AAGG;QACM,IAAU,CAAA,UAAA,GAAW,qBAAqB;AAEnD;;;AAGG;QACM,IAAU,CAAA,UAAA,GAAY,IAAI;AAEnC;;;AAGG;QACM,IAAS,CAAA,SAAA,GAAY,KAAK;AAEnC;;;AAGG;QACM,IAAmB,CAAA,mBAAA,GAAW,mBAAmB;AAE1D;;;AAGG;AACO,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,YAAY,EAAsC;AAEvE;;;AAGG;;AAEO,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAU;QAEpB,IAAQ,CAAA,QAAA,GAAG,KAAK;;AAKhD,IAAA,MAAM,CAAC,KAAU,EAAA;AACf,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,eAAe,EAAE;AAEvB,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;YACrB,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE;gBAClD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE;oBAC3C,MAAM,GAAG,GAAG,IAAI;oBAEhB,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACzC,wBAAA,MAAM,EAAE,GAAG,IAAI,UAAU,EAAE;AAC3B,wBAAA,EAAE,CAAC,MAAM,GAAG,CAAC,CAAM,KAAI;4BACrB,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM;AACzB,4BAAA,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,OAAO,GAAG,CAAC,GAAG,CAAA,CAAA,CAAG,CAAC;AAC5E,4BAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACzB,yBAAC;AAED,wBAAA,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC;;AAExB,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;;;;;AAMnC,IAAA,UAAU,CAAC,IAAI,EAAA;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC;AAC7C,QAAA,IAAI,KAAK,IAAI,CAAC,EAAE;YACd,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;;;AAKtC,IAAA,UAAU,CAAC,KAAgB,EAAA;QACzB,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;;;AAKxB,IAAA,WAAW,CAAC,KAAgB,EAAA;QAC1B,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;;;IAIzB,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE;AAClE,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;AACnE,YAAA,IAAI,CAAC,OAAO,GAAG,EAAE;AACjB,YAAA,IAAI,CAAC,YAAY,GAAG,EAAE;;;AAI1B,IAAA,SAAS,CAAC,MAAiC,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;AAC1B,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;;;IAI3B,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE;;QAGlC,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,EAAE;YACtC,OAAO,IAAI,CAAC,MAAM;;AAGpB,QAAA,OAAO,OAAO;;IAGhB,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE;;IAGxB,kBAAkB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;AACxD,YAAA,OAAO,SAAS;;QAGlB,OAAO,IAAI,CAAC,MAAM;;AAGpB,IAAA,aAAa,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;;8GA9JrB,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAvF,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EA7ClB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAuE,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAxD,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA+E,gBAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,gGAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBA/C/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCX,EAAA,CAAA;oBACC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE;AACf,iBAAA;mHAaU,OAAO,EAAA,CAAA;sBAAf;gBAMQ,kBAAkB,EAAA,CAAA;sBAA1B;gBAKQ,WAAW,EAAA,CAAA;sBAAnB;gBAMQ,UAAU,EAAA,CAAA;sBAAlB;gBAMQ,UAAU,EAAA,CAAA;sBAAlB;gBAMQ,SAAS,EAAA,CAAA;sBAAjB;gBAMQ,mBAAmB,EAAA,CAAA;sBAA3B;gBAMS,IAAI,EAAA,CAAA;sBAAb;gBAOS,aAAa,EAAA,CAAA;sBAAtB;gBAE+B,QAAQ,EAAA,CAAA;sBAAvC,WAAW;uBAAC,iBAAiB;gBAK9B,MAAM,EAAA,CAAA;sBADL,YAAY;uBAAC,MAAM,EAAE,CAAC,QAAQ,CAAC;gBAmChC,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC;gBAUpC,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;;;AC5MvC;;;;AAIG;AAMH;;;AAGG;MAEU,0BAA0B,CAAA;AADvC,IAAA,WAAA,GAAA;AAEqB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,GAAG,EAAwC;AAapF;IAXC,QAAQ,CAAC,IAAY,EAAE,QAAsC,EAAA;QAC3D,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC;;AAGzC,IAAA,UAAU,CAAC,IAAY,EAAA;QACrB,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC;;AAGzC,IAAA,WAAW,CAAC,IAAY,EAAA;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;;8GAZ3B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAA1B,0BAA0B,EAAA,CAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC;;;ACdD;;;;AAIG;AAIH;;AAEG;MAUU,0BAA0B,CAAA;AATvC,IAAA,WAAA,GAAA;AA6BE;;;AAGG;QACM,IAAU,CAAA,UAAA,GAAW,WAAW;AAE1C;8GA1BY,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAPzB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;AAGX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAzF,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIU,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBATtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE;;;AAGX,EAAA,CAAA;oBACC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAOU,MAAM,EAAA,CAAA;sBAAd;gBAMQ,OAAO,EAAA,CAAA;sBAAf;gBAMQ,IAAI,EAAA,CAAA;sBAAZ;gBAMQ,UAAU,EAAA,CAAA;sBAAlB;;;AC5CH;;;;AAIG;AAeH;;AAEG;MA2BU,0BAA0B,CAAA;AA4BrC;;;AAGG;IACH,IACI,KAAK,CAAC,KAA0B,EAAA;AAClC,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAS,KAAI;YAChD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAClC,OAAO;AACL,gBAAA,GAAG,IAAI;AACP,gBAAA,QAAQ,EAAE,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,CAAO,IAAA,EAAA,IAAI,CAAC,GAAG,GAAG,CAAC;AACnF,gBAAA,OAAO,EAAE,OAAO;aACjB;AACH,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;;IAGzB,WAAsB,CAAA,EAAqB,EAAY,YAA0B,EAAA;QAA3D,IAAE,CAAA,EAAA,GAAF,EAAE;QAA+B,IAAY,CAAA,YAAA,GAAZ,YAAY;AAvBnE;;;AAGG;QACM,IAAU,CAAA,UAAA,GAAW,WAAW;;AAuBzC,IAAA,OAAO,CAAC,IAAuB,EAAA;AAC7B,QAAA,MAAM,IAAI,GAAI,IAAsC,CAAC,IAAI;QACzD,IAAI,IAAI,EAAE;AACR,YAAA,OAAO,CAAE,WAAW,EAAE,YAAY,EAAE,WAAW,CAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;;AAElE,QAAA,OAAO,KAAK;;8GAtDH,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAxBzB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;AAoBX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiB,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA+E,0BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIU,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBA1BtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;AAoBX,EAAA,CAAA;oBACC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE;AACf,iBAAA;mHASU,OAAO,EAAA,CAAA;sBAAf;gBAMQ,MAAM,EAAA,CAAA;sBAAd;gBAMQ,IAAI,EAAA,CAAA;sBAAZ;gBAMQ,UAAU,EAAA,CAAA;sBAAlB;gBAOG,KAAK,EAAA,CAAA;sBADR;;;AChFH;;;;AAIG;AAIH;;AAEG;MAeU,2BAA2B,CAAA;AAdxC,IAAA,WAAA,GAAA;AAkCC;;;AAGI;QACM,IAAU,CAAA,UAAA,GAAW,WAAW;AAQ1C;8GAhCY,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,EAZ1B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;AAQX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA1F,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA2F,0BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA3F,IAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIU,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAdvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,QAAQ,EAAE;;;;;;;;AAQX,EAAA,CAAA;oBACC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAOU,OAAO,EAAA,CAAA;sBAAf;gBAMQ,MAAM,EAAA,CAAA;sBAAd;gBAMQ,IAAI,EAAA,CAAA;sBAAZ;gBAMQ,UAAU,EAAA,CAAA;sBAAlB;gBAMQ,KAAK,EAAA,CAAA;sBAAb;;;ACvDH;;;;AAIG;MAEU,aAAa,CAAA;AAEzB;;ACRD;;;;AAIG;AAKH;;AAEG;MAUU,yBAAyB,CAAA;AAsCpC,IAAA,IAAI,IAAI,GAAA;QACN,OAAO;;AAEL,YAAA,GAAG,EAAE,CAAA,sDAAA,EAAyD,IAAI,CAAC,QAAQ,CAAA,CAAA,EAAI,IAAI,CAAC,SAAS,CAAA,0BAAA,EAA6B,IAAI,CAAC,MAAM,CAAE,CAAA;AACvI,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,IAAI,EAAE,UAAU;SACjB;;AAKH,IAAA,WAAA,CAAY,OAAsB,EAAA;AA7BlC;;;AAGG;QACM,IAAU,CAAA,UAAA,GAAW,WAAW;AA0BvC,QAAA,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,mBAAmB;;8GAlDhC,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA4F,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAPxB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;AAGX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,MAAA,EAAA,YAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBATrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE;;;AAGX,EAAA,CAAA;oBACC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE;AACf,iBAAA;+EAOU,OAAO,EAAA,CAAA;sBAAf;gBAMQ,MAAM,EAAA,CAAA;sBAAd;gBAMQ,IAAI,EAAA,CAAA;sBAAZ;gBAMQ,UAAU,EAAA,CAAA;sBAAlB;gBAMQ,QAAQ,EAAA,CAAA;sBAAhB;gBAMQ,SAAS,EAAA,CAAA;sBAAjB;;;MC5CU,qBAAqB,CAAA;AAVlC,IAAA,WAAA,GAAA;QAmBW,IAAW,CAAA,WAAA,GAAG,IAAI;AAC5B;8GAVY,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EARpB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,wBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;AAIX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA7F,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAVjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE;;;;AAIX,EAAA,CAAA;oBACC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAGU,QAAQ,EAAA,CAAA;sBAAhB;gBAID,WAAW,EAAA,CAAA;sBAFV;;sBACA,WAAW;uBAAC,wBAAwB;gBAI5B,WAAW,EAAA,CAAA;sBADnB,WAAW;uBAAC,cAAc;;;ACrB7B;;;;AAIG;AAWH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CG;MA0EU,sBAAsB,CAAA;AAKjC,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,wBAAwB,EAAE,IAAI,IAAI,CAAC,KAAK;;AAGtD,IAAA,IAAI,iBAAiB,GAAA;QACnB,OAAO,IAAI,CAAC,wBAAwB,EAAE,IAAI,IAAI,CAAC,QAAQ;;AAGzD,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;;AAGzD,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI;;AAGb,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK;;AAGpB;;AAEG;AACH,IAAA,IAEI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;;IAEpB,IAAI,KAAK,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAoD5C;;;AAGG;IACH,IACI,MAAM,CAAC,KAAa,EAAA;QACtB,IAAI,CAAC,WAAW,GAAG,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,OAAO,KAAK,CAAA,CAAA,CAAG,CAAC,GAAG,IAAI;;IAe/F,WAAsB,CAAA,YAA0B,EAAY,oBAAgD,EAAA;QAAtF,IAAY,CAAA,YAAA,GAAZ,YAAY;QAA0B,IAAoB,CAAA,oBAAA,GAApB,oBAAoB;QA5G7D,IAAmB,CAAA,mBAAA,GAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC;QAqCzE,IAAM,CAAA,MAAA,GAAY,KAAK;;IAyEjC,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;AACpC,YAAA,OAAO;AACJ,iBAAA,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACtB,iBAAA,MAAM,CAAC,CAAC,EAAE,CAAC;iBACX,IAAI,CAAC,EAAE;AACP,iBAAA,WAAW,EAAE;;AAElB,QAAA,OAAO,EAAE;;IAGX,qBAAqB,GAAA;;AAEnB,QAAA,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG1E,YAAY,GAAA;QACV,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QACtD,OAAO,aAAa,CAAC,WAAW;;IAGlC,mBAAmB,GAAA;AACjB,QAAA,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE;;IAGnE,wBAAwB,GAAA;QACtB,MAAM,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/D,QAAA,OAAO,CAAC,sBAAsB,CAAC,QAAQ;;AAG/B,IAAA,gBAAgB,CAAC,IAAY,EAAA;QACrC,MAAM,sBAAsB,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,IAAI,CAAC;QAC1E,IAAI,CAAC,sBAAsB,EAAE;AAC3B,YAAA,MAAM,IAAI,KAAK,CACb,CAAA,8CAAA,EAAiD,IAAI,CAAK,GAAA,CAAA;gBACxD,CAAyE,sEAAA,EAAA,IAAI,CAAI,EAAA,CAAA,CACpF;;AAEH,QAAA,OAAO,sBAAsB;;8GAtJpB,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA8F,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAvErB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,aAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DX,EACa,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA7B,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAyB,0BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,0BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,MAAA,EAAA,YAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,MAAA,EAAA,YAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACR,OAAO,CAAC,UAAU,EAAE;gBAChB,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;AAClD,gBAAA,UAAU,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;AACjF,gBAAA,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC;aACnF,CAAC;AACL,SAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIQ,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAzElC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4DX,EAAA,CAAA;AACC,oBAAA,UAAU,EAAE;wBACR,OAAO,CAAC,UAAU,EAAE;4BAChB,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;AAClD,4BAAA,UAAU,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;AACjF,4BAAA,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC;yBACnF,CAAC;AACL,qBAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE;AACf,iBAAA;yHAmBK,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,WAAW;gBAMpB,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,iBAAiB;gBAU1B,KAAK,EAAA,CAAA;sBAFR;;sBACA,WAAW;uBAAC,aAAa;gBAcjB,OAAO,EAAA,CAAA;sBAAf;gBAMQ,MAAM,EAAA,CAAA;sBAAd;gBAMQ,IAAI,EAAA,CAAA;sBAAZ;gBAMQ,UAAU,EAAA,CAAA;sBAAlB;gBAKQ,KAAK,EAAA,CAAA;sBAAb;gBAMQ,KAAK,EAAA,CAAA;sBAAb;gBAMQ,QAAQ,EAAA,CAAA;sBAAhB;gBAMQ,SAAS,EAAA,CAAA;sBAAjB;gBAOG,MAAM,EAAA,CAAA;sBADT;gBASQ,IAAI,EAAA,CAAA;sBAAZ;gBAMQ,iBAAiB,EAAA,CAAA;sBAAzB;;;MCzOU,oBAAoB,CAAA;AAG/B,IAAA,WAAA,CAAmB,WAA6B,EAAA;QAA7B,IAAW,CAAA,WAAA,GAAX,WAAW;QAFrB,IAAO,CAAA,OAAA,GAAW,EAAE;;8GADlB,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,CAAe,aAAA,CAAA;AACzB,oBAAA,UAAU,EAAE;AACf,iBAAA;gFAEU,OAAO,EAAA,CAAA;sBAAf;;;ACPH;;;;AAIG;AA0BH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgNG;MA8BU,eAAe,CAAA;AAiB1B;;AAEG;AACH,IAAA,IACI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa;;IAE3B,IAAI,YAAY,CAAC,KAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,aAAa,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAUnD,IAAA,WAAA,CAAsB,aAA8B,EAAA;QAA9B,IAAa,CAAA,aAAA,GAAb,aAAa;AA1BnC;;;AAGG;QACM,IAAM,CAAA,MAAA,GAA8B,OAAO;QAE3C,IAAqB,CAAA,qBAAA,GAAW,kBAAkB;QAYjD,IAAa,CAAA,aAAA,GAAY,IAAI;;AAUvC,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,QAAQ,IAAI,OAAO,EAAE;YACvB,IAAI,CAAC,gBAAgB,EAAE;;;IAI3B,kBAAkB,GAAA;QAChB,IAAI,CAAC,gBAAgB,EAAE;;IAGzB,eAAe,GAAA;QACb,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AAC3C,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;YACxB,IAAI,CAAC,UAAU,EAAE;AACnB,SAAC,CAAC;QAEF,IAAI,CAAC,UAAU,EAAE;;IAGnB,UAAU,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,gBAAgB,EAAE;;;IAI3B,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY;;IAG5E,gBAAgB,GAAA;AACxB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;;;AAIxC,IAAA,IACI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM;;AAG7B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAG9B,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;;AAG/B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAG9B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAG9B,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,MAAM;;AAG/B,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;;AAGjC,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,OAAO;;AAGhC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,iBAAiB,GAAA;QACnB,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAClD,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;AAEzD,QAAA,OAAO,EAAE;;8GAzIA,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA9F,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,SAAA,EAHb,CAAC,0BAA0B,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAmC3B,mBAAmB,EACnB,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,oBAAoB,EAFjB,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAAA,sBAAsB,EAzD3B,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;AAsBX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,6OAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIU,eAAe,EAAA,UAAA,EAAA,CAAA;kBA7B3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EAET,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;AAsBX,EAAA,CAAA,EAAA,SAAA,EACY,CAAC,0BAA0B,CAAC,EAAA,UAAA,EAC3B,KAAK,EAAA,MAAA,EAAA,CAAA,6OAAA,CAAA,EAAA;iFAGV,KAAK,EAAA,CAAA;sBAAb;gBAMQ,IAAI,EAAA,CAAA;sBAAZ;gBAMQ,MAAM,EAAA,CAAA;sBAAd;gBAEQ,qBAAqB,EAAA,CAAA;sBAA7B;gBAMG,YAAY,EAAA,CAAA;sBADf;gBAUwB,UAAU,EAAA,CAAA;sBAAlC,SAAS;uBAAC,YAAY;gBACkB,QAAQ,EAAA,CAAA;sBAAhD,eAAe;uBAAC,sBAAsB;gBACJ,QAAQ,EAAA,CAAA;sBAA1C,YAAY;uBAAC,mBAAmB;gBACG,aAAa,EAAA,CAAA;sBAAhD,YAAY;uBAAC,oBAAoB;gBAwC9B,IAAI,EAAA,CAAA;sBADP,WAAW;uBAAC,iBAAiB;gBAM1B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAM3B,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,mBAAmB;gBAM5B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAM3B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAM3B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,IAAI,EAAA,CAAA;sBADP,WAAW;uBAAC,mBAAmB;gBAM5B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,qBAAqB;gBAM9B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,oBAAoB;gBAM7B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,iBAAiB,EAAA,CAAA;sBADpB,WAAW;uBAAC,OAAO;;;AChZtB;;;;AAIG;AAMH,MAAM,mBAAmB,GAAG;IAC1B,gBAAgB;CACjB;MAOY,aAAa,CAAA;8GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,EARxB,YAAA,EAAA,CAAA,gBAAgB,CAIL,EAAA,OAAA,EAAA,CAAA,cAAc,aAJzB,gBAAgB,CAAA,EAAA,CAAA,CAAA;AAQL,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAJb,cAAc,CAAA,EAAA,CAAA,CAAA;;2FAId,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAE,cAAc,CAAE;AAC3B,oBAAA,YAAY,EAAE,mBAAmB;AACjC,oBAAA,OAAO,EAAE,mBAAmB;AAC7B,iBAAA;;;ACbD,SAAS,gCAAgC,GAAA;AACvC,IAAA,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC;AACxE;AAEA;;;;;;;;;;;;;;AAcG;MAKU,4BAA4B,CAAA;AACvC;;;AAGG;AACH,IAAA,IACI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,KAAK;;IAEnB,IAAI,eAAe,CAAC,KAAa,EAAA;AAC/B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;AAIpB,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK;;AAGnB;;;;;AAKG;IACH,IACI,uBAAuB,CAAC,KAAc,EAAA;AACxC,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAE/C,IAAA,IAAI,uBAAuB,GAAA;QACzB,OAAO,IAAI,CAAC,SAAS;;AAKvB,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,uBAAuB;;IAGrC,WAAmB,CAAA,WAA6B,EAAY,oBAAgD,EAAA;QAAzF,IAAW,CAAA,WAAA,GAAX,WAAW;QAA8B,IAAoB,CAAA,oBAAA,GAApB,oBAAoB;QAPtE,IAAS,CAAA,SAAA,GAAY,KAAK;;IASpC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,gCAAgC,EAAE;;QAEpC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;;IAGrD,WAAW,GAAA;QACT,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;8GAhDtC,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAyG,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA5B,4BAA4B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAJxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,CAAmB,iBAAA,CAAA;AAC7B,oBAAA,UAAU,EAAE;AACf,iBAAA;sHAOK,eAAe,EAAA,CAAA;sBADlB;gBAoBG,uBAAuB,EAAA,CAAA;sBAD1B;;;ACpDH;;;;AAIG;AAqBH,MAAM,kBAAkB,GAAG;IACzB,eAAe;IACf,sBAAsB;IACtB,mBAAmB;IACnB,0BAA0B;IAC1B,0BAA0B;IAC1B,2BAA2B;IAC3B,yBAAyB;IACzB,qBAAqB;CACtB;AAED,MAAM,kBAAkB,GAAG,CAAC,4BAA4B,EAAE,oBAAoB,CAAC;MAOlE,YAAY,CAAA;IACvB,OAAO,OAAO,CAAC,OAAuB,EAAA;QACpC,OAAO;AACL,YAAA,QAAQ,EAAE,YAAY;AACtB,YAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC;SACjE;;IAGH,OAAO,QAAQ,CAAC,OAAuB,EAAA;QACrC,OAAO;AACL,YAAA,QAAQ,EAAE,YAAY;AACtB,YAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC;SACjE;;8GAZQ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,iBAjBvB,eAAe;YACf,sBAAsB;YACtB,mBAAmB;YACnB,0BAA0B;YAC1B,0BAA0B;YAC1B,2BAA2B;YAC3B,yBAAyB;AACzB,YAAA,qBAAqB,EAGK,4BAA4B,EAAE,oBAAoB,CAGlE,EAAA,OAAA,EAAA,CAAA,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,aAbrE,eAAe;YACf,sBAAsB;YACtB,mBAAmB;YACnB,0BAA0B;YAC1B,0BAA0B;YAC1B,2BAA2B;YAC3B,yBAAyB;YACzB,qBAAqB,EAGK,4BAA4B,EAAE,oBAAoB,CAAA,EAAA,CAAA,CAAA;AAOjE,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAJb,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,CAAA,EAAA,CAAA,CAAA;;2FAI1D,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,CAAC;AACtE,oBAAA,YAAY,EAAE,CAAC,GAAG,kBAAkB,EAAE,GAAG,kBAAkB,CAAC;AAC5D,oBAAA,OAAO,EAAE,CAAC,GAAG,kBAAkB,EAAE,GAAG,kBAAkB,CAAC;AACxD,iBAAA;;;AC1CD;;;;AAIG;AAQH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCG;MAUU,kBAAkB,CAAA;AAuB7B,IAAA,IACI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM;;AAG7B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAG9B,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;;AAG/B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAG9B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAG9B,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,MAAM;;AAG/B,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;;AAGjC,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,OAAO;;AAGhC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,iBAAiB,GAAA;QACnB,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAClD,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;AAEzD,QAAA,OAAO,EAAE;;AAGX,IAAA,WAAA,CAAsB,aAA8B,EAAA;QAA9B,IAAa,CAAA,aAAA,GAAb,aAAa;AAzFnC;;;AAGG;QAEH,IAAO,CAAA,OAAA,GAAW,YAAY;AAE9B;;;;AAIG;QAEH,IAAI,CAAA,IAAA,GAAoB,QAAQ;AAEhC;;;AAGG;QACM,IAAM,CAAA,MAAA,GAA8B,OAAO;;8GArBzC,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA/F,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAPjB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;AAGX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,kfAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAT9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EACZ,QAAA,EAAA;;;AAGX,EAAA,CAAA,EAAA,UAAA,EAEa,KAAK,EAAA,MAAA,EAAA,CAAA,kfAAA,CAAA,EAAA;iFASnB,OAAO,EAAA,CAAA;sBADN;gBASD,IAAI,EAAA,CAAA;sBADH;gBAOQ,MAAM,EAAA,CAAA;sBAAd;gBAGG,IAAI,EAAA,CAAA;sBADP,WAAW;uBAAC,iBAAiB;gBAM1B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAM3B,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,mBAAmB;gBAM5B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAM3B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAM3B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,IAAI,EAAA,CAAA;sBADP,WAAW;uBAAC,mBAAmB;gBAM5B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,qBAAqB;gBAM9B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,oBAAoB;gBAM7B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,iBAAiB,EAAA,CAAA;sBADpB,WAAW;uBAAC,OAAO;;;AC7ItB;;;;AAIG;AAmBH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCG;MAKU,kBAAkB,CAAA;AAuB7B;;;AAGG;IACH,IACI,SAAS,CAAC,GAAY,EAAA;AACxB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,GAAG,EAAE;gBACP,IAAI,CAAC,IAAI,EAAE;;iBACN;gBACL,IAAI,CAAC,IAAI,EAAE;;;aAER;AACL,YAAA,IAAI,CAAC,UAAU,GAAG,GAAG;;;AAMzB,IAAA,WAAA,CAAoB,aAA+B,EAC/B,wBAAkD,EAClD,QAAmB,EACnB,gBAA4B,EAAA;QAH5B,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB;QACxB,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QA3C5B,IAAU,CAAA,UAAA,GAAG,KAAK;AAU1B;;;AAGG;QACuB,IAAa,CAAA,aAAA,GAA8B,OAAO;AAE5E;;AAEG;QACqB,IAAW,CAAA,WAAA,GAAoB,QAAQ;QAmBpB,IAAc,CAAA,cAAA,GAAG,KAAK;;IAQjE,QAAQ,GAAA;QACN,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,kBAAkB,CAAC;AACjG,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,IAAI,EAAE;;;IAIf,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AAC3B,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;;;IAI/B,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAqB,IAAI,CAAC,gBAAgB,CAAC;YAC5F,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC7C,YAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,aAAa,EAAE;AAC9C,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;AACnG,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;;;AAI9B,IAAA,iBAAiB,CAAC,QAA4B,EAAA;AAC5C,QAAA,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc;AACtC,QAAA,OAAO,IAAI,CAAC,aAAa,KAAK,WAAW,KAAK,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;AACnF,QAAA,OAAO,IAAI,CAAC,WAAW,KAAK,WAAW,KAAK,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;;8GA3EpE,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,CAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,aAAA,EAAA,CAAA,iBAAA,EAAA,eAAA,CAAA,EAAA,WAAA,EAAA,CAAA,eAAA,EAAA,aAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,4BAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,UAAU,EAAE;AACf,iBAAA;6KAW4B,cAAc,EAAA,CAAA;sBAAxC,KAAK;uBAAC,kBAAkB;gBAMC,aAAa,EAAA,CAAA;sBAAtC,KAAK;uBAAC,iBAAiB;gBAKA,WAAW,EAAA,CAAA;sBAAlC,KAAK;uBAAC,eAAe;gBAOlB,SAAS,EAAA,CAAA;sBADZ,KAAK;uBAAC,WAAW;gBAayB,cAAc,EAAA,CAAA;sBAAxD,WAAW;uBAAC,4BAA4B;;;AC3G3C;;;;AAIG;MAeU,eAAe,CAAA;8GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAf,eAAe,EAAA,YAAA,EAAA,CAFX,kBAAkB,EAAE,kBAAkB,aAHnD,cAAc,CAAA,EAAA,OAAA,EAAA,CAEN,kBAAkB,EAAE,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAGrC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YALxB,cAAc,CAAA,EAAA,CAAA,CAAA;;2FAKL,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,cAAc;AACf,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;AACjD,oBAAA,YAAY,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;AACvD,iBAAA;;;MChBY,UAAU,GAAG,IAAI,cAAc,CAAC,2BAA2B;;ACGxE;;;AAGG;MAUU,eAAe,CAAA;AAwB1B;;;;AAIG;AACH,IAAA,IACI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO;;IAErB,IAAI,MAAM,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAK7C;;;;AAIK;AACL,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,KAAK,YAAY,WAAW;;AAG1C;;;;AAIG;AACH,IAAA,IACI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW;;IAE5C,IAAI,SAAS,CAAC,KAAc,EAAA;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAKhD,IAAA,IAAc,WAAW,GAAA;QACvB,OAAO,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;;AAKvF,IAAA,WAAA,CAAgC,OAAO,EAAA;QAjC7B,IAAO,CAAA,OAAA,GAAG,KAAK;QAwBf,IAAU,CAAA,UAAA,GAAY,KAAK;QAOrC,IAAU,CAAA,UAAA,GAAG,KAAK;AAGhB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;;AAGxB;;AAEK;IACL,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI;;AAG9B;;AAEK;IACL,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;;;AAtFjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,kBAqEN,UAAU,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGArEnB,eAAe,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAUf,WAAW,EAjBV,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;AAIX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAGU,eAAe,EAAA,UAAA,EAAA,CAAA;kBAT3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,SAAS;AACnB,oBAAA,QAAQ,EAAE;;;;AAIX,EAAA,CAAA;AACC,oBAAA,UAAU,EAAE;AACf,iBAAA;;0BAsEc,MAAM;2BAAC,UAAU;yCA3DY,OAAO,EAAA,CAAA;sBAAhD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAK/B,WAAW,EAAA,CAAA;sBAAnB;gBAOQ,KAAK,EAAA,CAAA;sBAAb;gBAQG,MAAM,EAAA,CAAA;sBADT;gBAyBG,SAAS,EAAA,CAAA;sBADZ;;;ACvEH;;;;AAIG;AAyBH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyFG;MAQU,kBAAkB,CAAA;AAP/B,IAAA,WAAA,GAAA;QAoCY,IAAc,CAAA,cAAA,GAAW,CAAC;QAa1B,IAAsB,CAAA,sBAAA,GAAY,KAAK;AAiBjD;;AAEG;QACM,IAAW,CAAA,WAAA,GAAyB,YAAY;QAa/C,IAAO,CAAA,OAAA,GAAG,IAAI;AAGxB;;;AAGG;AACO,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAqB;AAkG7D;AAnLC;;AAEG;AACH,IAAA,IACI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,cAAc;;IAE5B,IAAI,aAAa,CAAC,KAAa,EAAA;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;YAC3B;;QAGF,IAAI,CAAC,yBAAyB,EAAE;AAChC,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;AAC7B,YAAA,MAAM,uBAAuB,GAAG,IAAI,CAAC,cAAc;AACnD,YAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,QAAQ;AAC5C,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAE3B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBACnB,KAAK,EAAE,IAAI,CAAC,aAAa;gBACzB,IAAI,EAAE,IAAI,CAAC,QAAQ;gBACnB,uBAAuB;gBACvB,sBAAsB;AACvB,aAAA,CAAC;;;AAMN;;;AAGG;IACH,IACI,qBAAqB,CAAC,KAAc,EAAA;AACtC,QAAA,IAAI,CAAC,sBAAsB,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAE5D,IAAA,IAAI,qBAAqB,GAAA;QACvB,OAAO,IAAI,CAAC,sBAAsB;;AAKpC;;AAEG;AACH,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,SAAS;;IAE1E,IAAI,QAAQ,CAAC,IAAqB,EAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACf;;AAEF,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;;AAQzD;;;AAGG;IACH,IACI,MAAM,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAE7C,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO;;AAWrB,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,WAAW,KAAK,UAAU;;AAExC,IAAA,IACI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,KAAK,YAAY;;AAK1C;;AAEK;IACL,IAAI,GAAA;QACF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;;AAG9E;;AAEK;IACL,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC,CAAC;;AAG1D;;;AAGG;AACH,IAAA,UAAU,CAAC,IAAqB,EAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;YAC/B,IAAI,CAAC,MAAM,EAAE;;;AAIjB;;AAEK;IACL,KAAK,GAAA;AACH,QAAA,MAAM,uBAAuB,GAAG,IAAI,CAAC,aAAa;AAClD,QAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,QAAQ;AAE5C,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC;AACvB,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;AAE1C,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACnB,KAAK,EAAE,IAAI,CAAC,aAAa;YACzB,IAAI,EAAE,IAAI,CAAC,QAAQ;YACnB,uBAAuB;YACvB,sBAAsB;AACvB,SAAA,CAAC;;AAGJ,IAAA,cAAc,CAAC,IAAqB,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI;;AAG/B;;AAEI;AACJ,IAAA,eAAe,CAAC,IAAqB,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,OAAO,IAAI,CAAC,KAAyB;;AAEvC,QAAA,OAAO,IAAI;;AAGH,IAAA,WAAW,CAAC,KAAa,EAAA;QACjC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS;;AAGpC,IAAA,aAAa,CAAC,YAAoB,EAAA;AAC1C,QAAA,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QACtD,IAAI,OAAO,IAAI,YAAY,GAAG,CAAC,IAAI,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,YAAY,KAAK,IAAI,CAAC,aAAa,EAAE;AAC3G,YAAA,OAAO,KAAK;;QAGd,IAAI,YAAY,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACtD,YAAA,OAAO,IAAI;;QAGb,IAAI,eAAe,GAAG,IAAI;AAC1B,QAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;YACtD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;gBACxB,eAAe,GAAG,KAAK;gBACvB;;;AAGJ,QAAA,OAAO,eAAe;;IAGd,yBAAyB,GAAA;AACjC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI;;;8GAjLxB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAHhB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC,EAgGtD,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,eAAe,6BC3NlC,8xCA8BA,EAAA,MAAA,EAAA,CAAA,oqBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDgGa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAGX,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAoB,kBAAA,EAAE,CAAC,EAAA,UAAA,EACzD,KAAK,EAAA,QAAA,EAAA,8xCAAA,EAAA,MAAA,EAAA,CAAA,oqBAAA,CAAA,EAAA;8BAOf,aAAa,EAAA,CAAA;sBADhB;gBAgCG,qBAAqB,EAAA,CAAA;sBADxB;gBAcG,QAAQ,EAAA,CAAA;sBADX;gBAcQ,WAAW,EAAA,CAAA;sBAAnB;gBAOG,MAAM,EAAA,CAAA;sBADT;gBAcS,UAAU,EAAA,CAAA;sBAAnB;gBAGG,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,gBAAgB;gBAKzB,UAAU,EAAA,CAAA;sBADb,WAAW;uBAAC,kBAAkB;gBAKG,KAAK,EAAA,CAAA;sBAAtC,eAAe;uBAAC,eAAe;;;MEpNrB,sBAAsB,CAAA;AAIjC,IAAA,WAAA,CAAsB,OAA2B,EAAA;QAA3B,IAAO,CAAA,OAAA,GAAP,OAAO;QAFM,IAAI,CAAA,IAAA,GAAW,QAAQ;;IAM1D,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;;8GATV,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA+F,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE;AACf,iBAAA;oFAGoC,IAAI,EAAA,CAAA;sBAAtC;;sBAAS,WAAW;uBAAC,WAAW;gBAMjC,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO;;MAUV,0BAA0B,CAAA;AAIrC,IAAA,WAAA,CAAsB,OAA2B,EAAA;QAA3B,IAAO,CAAA,OAAA,GAAP,OAAO;QAFM,IAAI,CAAA,IAAA,GAAW,QAAQ;;IAM1D,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;;8GATd,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAJtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,UAAU,EAAE;AACf,iBAAA;oFAGoC,IAAI,EAAA,CAAA;sBAAtC;;sBAAS,WAAW;uBAAC,WAAW;gBAMjC,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO;;;AC/BvB;;;;AAIG;MA4BU,eAAe,CAAA;8GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,iBAZxB,kBAAkB;YAClB,eAAe;YACf,sBAAsB;AACtB,YAAA,0BAA0B,aAP1B,cAAc;AACd,YAAA,YAAY,aASZ,kBAAkB;YAClB,eAAe;YACf,sBAAsB;YACtB,0BAA0B,CAAA,EAAA,CAAA,CAAA;AAGjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAhBxB,cAAc;YACd,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAeH,eAAe,EAAA,UAAA,EAAA,CAAA;kBAlB3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,cAAc;wBACd,YAAY;AACb,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACZ,kBAAkB;wBAClB,eAAe;wBACf,sBAAsB;wBACtB,0BAA0B;AAC3B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,kBAAkB;wBAClB,eAAe;wBACf,sBAAsB;wBACtB,0BAA0B;AAC3B,qBAAA;AACF,iBAAA;;;AC/BD;;;;AAIG;AAMH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDG;MASU,oBAAoB,CAAA;AARjC,IAAA,WAAA,GAAA;AAUE,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAW;QAe/B,IAAU,CAAA,UAAA,GAAG,KAAK;AAiB3B;AA9BC;;;AAGG;AACH,IAAA,IACI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,UAAU;;IAExB,IAAI,KAAK,CAAC,GAAY,EAAA;AACpB,QAAA,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC,GAAG,CAAC;;AAM9C;;AAEG;IACH,OAAO,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;;;AAInC;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;;8GAhCrB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EANnB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;AAEX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,QAAQ,EAAE;;AAEX,EAAA,CAAA;oBACC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAUK,KAAK,EAAA,CAAA;sBADR,KAAK;uBAAC,OAAO;;;ACnFhB;;;;AAIG;AAsBH;;AAEG;MAWU,wBAAwB,CAAA;AAEnC;;;AAGG;AACH,IAAA,IAEI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,cAAc;;IAE5B,IAAI,SAAS,CAAC,GAAY,EAAA;AACxB,QAAA,IAAI,CAAC,cAAc,GAAG,qBAAqB,CAAC,GAAG,CAAC;QAChD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;QAC9C,IAAI,CAAC,UAAU,EAAE;;AAInB;;;AAGG;AACH,IAAA,IAEI,QAAQ,GAAA;AACV,QAAA,OAAO,CAAC,IAAI,CAAC,SAAS;;IAExB,IAAI,QAAQ,CAAC,GAAY,EAAA;QACvB,IAAI,CAAC,cAAc,GAAG,CAAC,qBAAqB,CAAC,GAAG,CAAC;;AAInD;;;AAGG;AACH,IAAA,IAEI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,aAAa;;IAE3B,IAAI,QAAQ,CAAC,GAAY,EAAA;AACvB,QAAA,IAAI,CAAC,aAAa,GAAG,qBAAqB,CAAC,GAAG,CAAC;QAC/C,IAAI,CAAC,UAAU,EAAE;;IAgBnB,WAA4B,CAAA,SAA+B,EAAU,EAAqB,EAAA;QAA9D,IAAS,CAAA,SAAA,GAAT,SAAS;QAAgC,IAAE,CAAA,EAAA,GAAF,EAAE;AAZvE;;;AAGG;AACO,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAW;AAEvD,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,OAAO,EAAW;QAExC,IAAc,CAAA,cAAA,GAAG,IAAI;QACrB,IAAa,CAAA,aAAA,GAAG,KAAK;AACrB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;;AAKtC;;AAEG;IACH,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;;AAElB,YAAA,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,SAAS;AAE/B,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;gBACzB,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;;AAE1C,YAAA,IAAI,CAAC,SAAS,GAAG,OAAO;;;AAI5B;;AAEG;IACH,IAAI,GAAA;QACF,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;;AAG5C;;AAEG;IACH,KAAK,GAAA;QACH,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;;IAG3C,QAAQ,GAAA;QACN,IAAI,CAAC,SAAS,CAAC;AACZ,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC7B,SAAS,CAAC,SAAS,IAAG;YACrB,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAClD,SAAC,CAAC;;AAGJ,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGzC,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;AACxB,QAAA,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE;;IAGjC,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;AACvC,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;8GA/Gb,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAPvB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;AAGX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+MAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIU,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAVpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAEnB,QAAA,EAAA;;;AAGX,EAAA,CAAA,EAAA,eAAA,EACkB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,KAAK,EAAA,MAAA,EAAA,CAAA,+MAAA,CAAA,EAAA;;0BA6DN;yEAnDT,SAAS,EAAA,CAAA;sBAFZ,KAAK;uBAAC,WAAW;;sBACjB,WAAW;uBAAC,iBAAiB;gBAiB1B,QAAQ,EAAA,CAAA;sBAFX,KAAK;uBAAC,UAAU;;sBAChB,WAAW;uBAAC,gBAAgB;gBAezB,QAAQ,EAAA,CAAA;sBAFX,KAAK;uBAAC,UAAU;;sBAChB,WAAW;uBAAC,gBAAgB;gBAcnB,eAAe,EAAA,CAAA;sBAAxB;;;AC1FH;;;;AAIG;AAgBH,MAAM,wBAAwB,GAAG,OAAO,CAAC,mBAAmB,EAAE;AAC5D,IAAA,KAAK,CACH,WAAW,EACX,KAAK,CAAC;AACJ,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,UAAU,EAAE,QAAQ;AACpB,QAAA,MAAM,EAAE,CAAC;AACV,KAAA,CAAC,CACH;AACD,IAAA,KAAK,CACH,UAAU,EACV,KAAK,CAAC;AACJ,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,UAAU,EAAE,SAAS;AACtB,KAAA,CAAC,CACH;AACD,IAAA,UAAU,CAAC,uBAAuB,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;AAC7D,IAAA,UAAU,CAAC,uBAAuB,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC/D,CAAA,CAAC;AAEF;;AAEG;MAcU,4BAA4B,CAAA;IAGvC,WAA4B,CAAA,aAAuC,EAAU,EAAqB,EAAA;QAAtE,IAAa,CAAA,aAAA,GAAb,aAAa;QAAoC,IAAE,CAAA,EAAA,GAAF,EAAE;AAFvE,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;;AAItC,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,WAAW,GAAG,UAAU;;IAGhE,QAAQ,GAAA;QACN,IAAI,CAAC,aAAa,CAAC;AAChB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC7B,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;;IAG5C,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;;8GAjBf,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,wBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAX3B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;GAMX,EACa,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAC,wBAAwB,CAAC,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAI7B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAbxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,QAAQ,EAAE;;;;;;AAMX,EAAA,CAAA;oBACC,UAAU,EAAE,CAAC,wBAAwB,CAAC;oBACtC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE;AACf,iBAAA;;0BAIc;;;AC3Df;;;;AAIG;AAkBH;;AAEG;MA2BU,8BAA8B,CAAA;AAEzC,IAAA,IACI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS;;AAGrC,IAAA,IAEI,QAAQ,GAAA;AACV,QAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS;;;AAItC,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,GAAG,GAAG;;AAGjD,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ;;IAMpC,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;;AAG7B,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,OAAO,WAAW;;AAEpB,QAAA,OAAO,UAAU;;IAInB,WAA4B,CAAA,aAAuC,EAAU,EAAqB,EAAA;QAAtE,IAAa,CAAA,aAAA,GAAb,aAAa;QAAoC,IAAE,CAAA,EAAA,GAAF,EAAE;AADvE,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;;IAItC,QAAQ,GAAA;QACN,IAAI,CAAC,aAAa,CAAC;AAChB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC7B,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;;IAG5C,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;;8GAlDf,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,wBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,EAvB7B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uCAAA,EAAA,kBAAA,EAAA,sCAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;GAUX,EACa,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,iPAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA5G,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiB,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACR,OAAO,CAAC,oBAAoB,EAAE;AAC1B,gBAAA,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC;AACpB,oBAAA,SAAS,EAAE,gBAAgB;AAC9B,iBAAA,CAAC,CAAC;AACH,gBAAA,UAAU,CAAC,uBAAuB,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;AAC7D,gBAAA,UAAU,CAAC,uBAAuB,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;aACjE,CAAC;AACL,SAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIQ,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBA1B1C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,EAE1B,QAAA,EAAA;;;;;;;;;;GAUX,EACa,UAAA,EAAA;wBACR,OAAO,CAAC,oBAAoB,EAAE;AAC1B,4BAAA,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC;AACpB,gCAAA,SAAS,EAAE,gBAAgB;AAC9B,6BAAA,CAAC,CAAC;AACH,4BAAA,UAAU,CAAC,uBAAuB,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;AAC7D,4BAAA,UAAU,CAAC,uBAAuB,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;yBACjE,CAAC;AACL,qBAAA,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,KAAK,EAAA,MAAA,EAAA,CAAA,iPAAA,CAAA,EAAA;;0BAyCN;yEApCT,WAAW,EAAA,CAAA;sBADd,WAAW;uBAAC,uCAAuC;gBAOhD,QAAQ,EAAA,CAAA;sBAFX,WAAW;uBAAC,sCAAsC;;sBAClD,WAAW;uBAAC,oBAAoB;gBAO7B,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,eAAe;gBAMxB,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,oBAAoB;gBAQjC,MAAM,EAAA,CAAA;sBAHL,YAAY;uBAAC,OAAO;;sBACpB,YAAY;uBAAC,eAAe;;sBAC5B,YAAY;uBAAC,eAAe;;;AC7E/B;;;;AAIG;AAWH,MAAM,uBAAuB,GAAG;IAC9B,oBAAoB;IACpB,wBAAwB;IACxB,8BAA8B;IAC9B,4BAA4B;CAC7B;MAQY,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,iBAZ5B,oBAAoB;YACpB,wBAAwB;YACxB,8BAA8B;AAC9B,YAAA,4BAA4B,CAIlB,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,YAAY,aAPpC,oBAAoB;YACpB,wBAAwB;YACxB,8BAA8B;YAC9B,4BAA4B,CAAA,EAAA,CAAA,CAAA;+GASjB,iBAAiB,EAAA,OAAA,EAAA,CALlB,YAAY,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAKzB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;AACrC,oBAAA,OAAO,EAAE,CAAC,GAAG,uBAAuB,CAAC;AACrC,oBAAA,YAAY,EAAE,CAAC,GAAG,uBAAuB,CAAC;AAC1C,oBAAA,SAAS,EAAE,EAAE;AACd,iBAAA;;;AC3BD;;;;AAIG;MAKU,eAAe,GAAG,IAAI,cAAc,CAAyB,iBAAiB;;ACT3F;;;;AAIG;AA8BH;;AAEG;AAOG,MAAO,uBAAwB,SAAQ,QAAQ,CAAA;AAGnD,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;;AAU5C;;AAEI;AACJ,IAAA,IAEI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ;;IAEtB,IAAI,OAAO,CAAC,KAAc,EAAA;QACxB,IAAI,IAAI,CAAC,OAAO,KAAK,qBAAqB,CAAC,KAAK,CAAC,EAAE;AACjD,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,OAAO;YAC7B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AACrC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;;;AAWtE,IAAA,IACI,KAAK,GAAA;;AAEP,QAAA,OAAO,CAAC,IAAI,CAAC,OAAO;;AAGtB,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC;;AAG/E,IAAA,IACI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlD,IAAA,IACI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM;;AAG/C,IAAA,IACI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlD,IAAA,IACI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ;;AAGjD,IAAA,IACI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlD,IAAA,IACI,iBAAiB,GAAA;QACnB,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAClD,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;AAEzD,QAAA,OAAO,EAAE;;IAIX,OAAO,GAAA;;QAEL,IAAI,IAAI,CAAC,WAAW,EAAE,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC/C,YAAA,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO;;;IAIhC,WACY,CAAA,QAAmB,EACnB,WAAoC,EACpC,EAAqB,EACrB,IAAY,EACZ,aAA8B,EACO,WAAY,EAAA;QAE3D,KAAK,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,CAAC;QAP3C,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAI,CAAA,IAAA,GAAJ,IAAI;QACJ,IAAa,CAAA,aAAA,GAAb,aAAa;QACwB,IAAW,CAAA,WAAA,GAAX,WAAW;AA9FzC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,OAAO,EAAwB;QAM/D,IAAU,CAAA,UAAA,GAA6B,QAAQ;QAsB9C,IAAQ,CAAA,QAAA,GAAY,KAAK;AAGnC;;AAEI;AACe,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAW;;AAiE9D;;AAEG;AACH,IAAA,cAAc,CAAC,KAAc,EAAA;AAC3B,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;AAzGb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,wJA+FZ,eAAe,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGA/F1B,uBAAuB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,SAAA,EAJrB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAI/D,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,wBAAwB;oBAClC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAyB,uBAAA,EAAE,CAAC;AACxE,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE;AACf,iBAAA;;0BAgGI;;0BAAY,MAAM;2BAAC,eAAe;yCAxF5B,UAAU,EAAA,CAAA;sBAAlB;gBAKQ,KAAK,EAAA,CAAA;sBAAb;gBAOG,OAAO,EAAA,CAAA;sBAFV;;sBACA,WAAW;uBAAC,mBAAmB;gBAiBb,aAAa,EAAA,CAAA;sBAA/B;gBAGG,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,oBAAoB;gBAO7B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,IAAI,EAAA,CAAA;sBADP,WAAW;uBAAC,mBAAmB;gBAM5B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,qBAAqB;gBAM9B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,iBAAiB,EAAA,CAAA;sBADpB,WAAW;uBAAC,OAAO;gBASpB,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO;;;AC5HvB;;;;AAIG;AA4BH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoEI;MAQS,sBAAsB,CAAA;AA8BjC,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;;IAEvB,IAAI,QAAQ,CAAC,KAAc,EAAA;QACzB,IAAI,IAAI,CAAC,QAAQ,KAAK,qBAAqB,CAAC,KAAK,CAAC,EAAE;AAClD,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,QAAQ;;;AAMnC;;AAEG;AACH,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;;IAEvB,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAK/C;;AAEG;AACH,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;;IAErC,IAAI,MAAM,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,UAAU,GAAG,QAAQ;;;AAK9B;;AAEG;AACH,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,UAAU,KAAK,SAAS;;IAEtC,IAAI,OAAO,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;;;AAK/B;;AAEG;AACH,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,UAAU,KAAK,OAAO;;IAEpC,IAAI,KAAK,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,UAAU,GAAG,OAAO;;;AAa7B,IAAA,IACI,iBAAiB,GAAA;QACnB,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAClD,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;AAEzD,QAAA,OAAO,EAAE;;IAGX,WAAsB,CAAA,EAAqB,EAAY,aAA8B,EAAA;QAA/D,IAAE,CAAA,EAAA,GAAF,EAAE;QAA+B,IAAa,CAAA,aAAA,GAAb,aAAa;QAhH1D,IAAgB,CAAA,gBAAA,GAAU,EAAE;AAEnB,QAAA,IAAA,CAAA,QAAQ,GAAkB,IAAI,OAAO,EAAQ;AAC7C,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAc;AAI7D;;;AAGG;QACM,IAAI,CAAA,IAAA,GAAoB,QAAQ;AAEzC;;;AAGG;QACM,IAAM,CAAA,MAAA,GAA8B,OAAO;AAEpD;;AAEG;QACM,IAAK,CAAA,KAAA,GAAqB,WAAW;AAE9C;;AAEG;QACM,IAAU,CAAA,UAAA,GAA6B,QAAQ;QAW9C,IAAS,CAAA,SAAA,GAAG,KAAK;QAajB,IAAS,CAAA,SAAA,GAAY,KAAK;AA6CpC;;;AAGG;AACO,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAS;QAEvB,IAAI,CAAA,IAAA,GAAG,OAAO;;AAYxC,IAAA,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAiB,EAAA;AAC5F,QAAA,IAAI,IAAI,IAAI,MAAM,IAAI,KAAK,IAAI,QAAQ,IAAI,MAAM,IAAI,OAAO,IAAI,KAAK,IAAI,QAAQ,EAAE;AACjF,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;;IAI7D,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAmB,KAAI;AACnF,YAAA,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC;AACtC,YAAA,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC;AACrC,SAAC,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC;aACV,IAAI;;;;;;QAMH,SAAS,CAAC,CAAC,OAA4B,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EACrF,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEzB,aAAA,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AAEjC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;;AAGxC,IAAA,wBAAwB,CAAC,OAAmB,EAAA;QACpD,MAAM,aAAa,GAA8B,OAAO,CAAC,MAAM,CAAC,CAAC,MAAgB,KAAI;YACnF,OAAO,MAAM,YAAY,uBAAuB;AAClD,SAAC,CAA8B;AAE/B,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YACzB;;AAGF,QAAA,MAAM,qBAAqB,GAAuC,aAAa,CAAC,GAAG,CACjF,CAAC,MAA+B,KAAK,MAAM,CAAC,cAAc,CAC3D;QAED,KAAK,CAAC,GAAG,qBAAqB;AAC3B,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,EAAE,OAAO,EAAwB,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,EACxE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAErD,aAAA,SAAS,CAAC,CAAC,EAAE,MAAM,EAAwB,KAAI;YAC9C;iBACG,MAAM,CAAC,CAAC,MAA+B,KAAK,MAAM,KAAK,MAAM;AAC7D,iBAAA,OAAO,CAAC,CAAC,MAA+B,KAAK,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC/E,SAAC,CAAC;QAEJ,KAAK,CAAC,GAAG,qBAAqB;aAC3B,IAAI;;QAEH,SAAS,CAAC,EAAE,CAAC;;AAEb,QAAA,YAAY,CAAC,CAAC,CAAC,EACf,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;aAErD,SAAS,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;;AAGhD,IAAA,qBAAqB,CAAC,OAAmB,EAAA;AACjD,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,MAAgB,KAAI;YACnC,MAAM,CAAC,gBAAgB,CAAC;gBACtB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACxB,aAAA,CAAC;AACJ,SAAC,CAAC;;AAGM,IAAA,gBAAgB,CAAC,aAAwC,EAAA;QACjE,MAAM,mBAAmB,GAAG;AACzB,aAAA,MAAM,CAAC,CAAC,CAA0B,KAAK,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,WAAW;aAClF,GAAG,CAAC,CAAC,CAA0B,KAAK,CAAC,CAAC,KAAK,CAAC;;AAG/C,QAAA,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1E;;AAGF,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC;AAC1C,QAAA,IAAI,CAAC,gBAAgB,GAAG,mBAAmB;;8GAxMlC,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAP,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAHpB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,sBAAsB,EAAE,CAAC,EAS/D,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,QAAQ,kDAXb,CAA6B,2BAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAK9B,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,CAA6B,2BAAA,CAAA;oBACvC,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAwB,sBAAA,EAAE,CAAC;AAC9E,oBAAA,UAAU,EAAE;AACf,iBAAA;iHAOqC,OAAO,EAAA,CAAA;sBAA1C,eAAe;uBAAC,QAAQ;gBAMhB,IAAI,EAAA,CAAA;sBAAZ;gBAMQ,MAAM,EAAA,CAAA;sBAAd;gBAKQ,KAAK,EAAA,CAAA;sBAAb;gBAKQ,UAAU,EAAA,CAAA;sBAAlB;gBAGG,QAAQ,EAAA,CAAA;sBADX;gBAgBG,QAAQ,EAAA,CAAA;sBADX;gBAcG,MAAM,EAAA,CAAA;sBADT;gBAeG,OAAO,EAAA,CAAA;sBADV;gBAeG,KAAK,EAAA,CAAA;sBADR;gBAeS,WAAW,EAAA,CAAA;sBAApB;gBAEyB,IAAI,EAAA,CAAA;sBAA7B,WAAW;uBAAC,WAAW;gBAGpB,iBAAiB,EAAA,CAAA;sBADpB,WAAW;uBAAC,OAAO;;;ACrNtB;;;;AAIG;MAUU,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,iBAHd,sBAAsB,EAAE,uBAAuB,CACpD,EAAA,OAAA,EAAA,CAAA,sBAAsB,EAAE,uBAAuB,CAAA,EAAA,CAAA,CAAA;+GAE/C,mBAAmB,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAE,sBAAsB,EAAE,uBAAuB,CAAE;AACjE,oBAAA,OAAO,EAAE,CAAE,sBAAsB,EAAE,uBAAuB,CAAE;AAC7D,iBAAA;;;ACED;;;;;AAKG;MAKU,0BAA0B,CAAA;AA2BrC,IAAA,WAAA,GAAA;AA1BQ,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;AAWtC;;AAEG;QAEH,IAAS,CAAA,SAAA,GAAW,CAAC;AAErB;;AAEG;AAEH,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAU;QAMrC,IAAI,CAAC,QAAQ,GAAG,IAAI,oBAAoB,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;;IAG7G,eAAe,GAAA;QACb,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;YAC3C,IAAI,CAAC,YAAY,EAAE;;QAGrB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;;IAG5F,WAAW,GAAA;QACT,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;;IAGhD,YAAY,GAAA;QAClB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;;AAG/D,IAAA,kBAAkB,CAAC,OAAoC,EAAA;QAC7D,MAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;QAEzD,IAAI,eAAe,IAAI,IAAI,CAAC,WAAW,KAAK,eAAe,EAAE;AAC3D,YAAA,IAAI,CAAC,WAAW,GAAG,eAAe;YAClC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;;;AAIlC,IAAA,mBAAmB,CAAC,OAAoC,EAAA;AAC9D,QAAA,MAAM,uBAAuB,GAAG,IAAI,GAAG,EAAkB;AAEzD,QAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;AAC3B,YAAA,IAAI,KAAK,CAAC,iBAAiB,GAAG,GAAG,EAAE;gBACjC;;YAGF,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC;AACpD,YAAA,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE;gBACvB;;AAEF,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC;AAEtE,YAAA,IAAI,KAAK,GAAG,KAAK,CAAC,iBAAiB;AACnC,YAAA,IAAI,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACrC,gBAAA,KAAK,IAAI,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC;;AAE5C,YAAA,uBAAuB,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC;;QAG1C,IAAI,QAAQ,GAAG,CAAC;AAChB,QAAA,IAAI,eAAe;QACnB,uBAAuB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,KAAI;AAC9C,YAAA,IAAI,KAAK,GAAG,QAAQ,EAAE;gBACpB,QAAQ,GAAG,KAAK;gBAChB,eAAe,GAAG,IAAI;;AAE1B,SAAC,CAAC;AAEF,QAAA,OAAO,eAAe;;AAGhB,IAAA,YAAY,CAAC,OAAgB,EAAA;QACnC,OAAO,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC;AACpD,cAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO;cAC1D,CAAC,CAAC;;8GA5FG,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAwBpB,mBAAmB,EAAA,IAAA,EAAU,UAAU,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAxB7C,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAJtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE;AACf,iBAAA;wDAWC,QAAQ,EAAA,CAAA;sBADP;gBAOD,SAAS,EAAA,CAAA;sBADR;gBAOD,UAAU,EAAA,CAAA;sBADT;gBAID,SAAS,EAAA,CAAA;sBADR,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,mBAAmB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;;;MC9B/C,+BAA+B,CAAA;AAI3C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BG;MAKU,uBAAuB,CAAA;AAIlC,IAAA,IAAY,aAAa,GAAA;AACvB,QAAA,OAAO,CAAC,IAAI,CAAC,YAAY;;AAe3B;;;AAGG;IACH,IACI,YAAY,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;;AAEhC,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK;;AAGjC;;;AAGG;IACH,IACI,kBAAkB,CAAC,KAAK,EAAA;AAC1B,QAAA,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC,KAAK,CAAC;;IAiBlD,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;;;AAM9B,IAAA,WAAA,CACU,UAAsB,EACtB,aAAoC,EACpC,iBAAuC,EAAA;QAFvC,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;AAjEnB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;QAEtC,IAAY,CAAA,YAAA,GAAG,KAAK;AAIZ,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAQ;QACpC,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC;AACnF,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,OAAO,EAAQ;AACtC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAQ;AACnC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC;AA+BtD;;AAEG;AAEH,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC;AAExC;;AAEG;AAEH,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC;;IAiBrC,eAAe,GAAA;QACb,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc;AAC1C,aAAA,IAAI,CACH,SAAS,CAAC,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC,EAC9C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEzB,aAAA,SAAS,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AAE5D,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CACH,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EACrF,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAEzB,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AAC1B,SAAC,CAAC;AAEJ,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CACH,SAAS,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EACxF,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAEzB,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;AAC7B,SAAC,CAAC;QAEJ,IAAI,CAAC,SAAS,CAAC;aACZ,IAAI;;;;;QAKH,SAAS,CAAC,MACR,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CACf,MAAM,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,EAClC,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CACvB,CACF,EACD,SAAS,CAAC,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC,EAC9C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEzB,aAAA,SAAS,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AAE5D,QAAA,IAAI,CAAC,sBAAsB,EAAE,CAAC,SAAS,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;;IAGzF,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;AAC7B,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;AAChC,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;AAC9B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;;AAG1B,IAAA,aAAa,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAmC,EAAA;AACtF,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,IAAI,IAAI;AACpD,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,KAAK,SAAS;AACzD,QAAA,MAAM,QAAQ,GAAG,SAAS,GAAG,IAAI,CAAC,kBAAkB;AACpD,QAAA,MAAM,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC,kBAAkB;AACtD,QAAA,MAAM,gBAAgB,GAAG,YAAY,GAAG,SAAS,GAAG,YAAY;AAEhE,QAAA,IAAI,CAAC,YAAY,IAAI,WAAW,IAAI,UAAU,KAAK,gBAAgB,IAAI,IAAI,CAAC,SAAS,EAAE;AACrF,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;;AAG9B,QAAA,IAAI,CAAC,YAAY,IAAI,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE;AAC7D,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;;AAG3B,QAAA,IAAI,CAAC,kBAAkB,GAAG,SAAS;;IAG7B,sBAAsB,GAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;YAC/E,OAAOqE,EAAY,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;;AAGhE,QAAA,OAAO,QAAQ,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,CAC9F,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,UAAU,CAAC,MAAM;YACrC,SAAS,EAAE,cAAc,CAAC,CAAC;YAC3B,YAAY,EAAE,UAAU,CAAC,YAAY;YACrC,YAAY,EAAE,UAAU,CAAC,YAAY;SACtC,CAAC,CAAC,CACJ;;IAGK,aAAa,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM;;8GA9JrE,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA8B,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,0VA6DjB,mBAAmB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FA7DzB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE;AACf,iBAAA;gJAmBC,SAAS,EAAA,CAAA;sBADR;gBAQG,YAAY,EAAA,CAAA;sBADf;gBAaG,kBAAkB,EAAA,CAAA;sBADrB;gBAUD,eAAe,EAAA,CAAA;sBADd;gBAOD,YAAY,EAAA,CAAA;sBADX;gBAID,eAAe,EAAA,CAAA;sBADd,YAAY;uBAAC,QAAQ;gBAOgB,SAAS,EAAA,CAAA;sBAA9C,eAAe;uBAAC,mBAAmB;;;ACjHtC,MAAM,UAAU,GAAG;IACjB,eAAe;IACf,mBAAmB;IACnB,0BAA0B;IAC1B,uBAAuB;CACxB;MAMY,YAAY,CAAA;8GAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,iBAVvB,eAAe;YACf,mBAAmB;YACnB,0BAA0B;AAC1B,YAAA,uBAAuB,aAHvB,eAAe;YACf,mBAAmB;YACnB,0BAA0B;YAC1B,uBAAuB,CAAA,EAAA,CAAA,CAAA;+GAOZ,YAAY,EAAA,CAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,UAAU;AACxB,oBAAA,OAAO,EAAE,UAAU;AACpB,iBAAA;;;ACXK,MAAO,gBAAiB,SAAQ,cAAc,CAAA;8GAAvC,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAhB,gBAAgB,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B;;;ACMK,MAAO,YAAa,SAAQ,UAAU,CAAA;8GAA/B,YAAY,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAZ,YAAY,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,EAJZ,SAAA,EAAA;AACT,YAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAE;AAC3D,SAAA,EAAA,CAAA,CAAA;;2FAEU,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAE;AAC3D,qBAAA;AACF,iBAAA;;;ACRD;;;;AAIG;AAcH;;;AAGG;AAMG,MAAO,kBAAmB,SAAQ,UAAU,CAAA;8GAArC,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,aAAA,EAAA,SAAA,EAHhB,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAG5D,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,aAAa;oBACvB,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAoB,kBAAA,EAAE,CAAC;AACrE,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAGD;;;AAGG;AAMG,MAAO,wBAAyB,SAAQ,gBAAgB,CAAA;8GAAjD,wBAAwB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,SAAA,EAHtB,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,wBAAwB,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGxE,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,mBAAmB;oBAC7B,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAA0B,wBAAA,EAAE,CAAC;AACjF,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAGD;;;AAGG;AAMG,MAAO,wBAAyB,SAAQ,gBAAgB,CAAA;8GAAjD,wBAAwB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,SAAA,EAHtB,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,wBAAwB,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGxE,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,mBAAmB;oBAC7B,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAA0B,wBAAA,EAAE,CAAC;AACjF,oBAAA,UAAU,EAAE;AACf,iBAAA;;MAGY,yBAAyB,GAAG,IAAI,cAAc,CAAC,2BAA2B;AAEvF;;;AAGG;AASG,MAAO,oBAAqB,SAAQ,YAAY,CAAA;AARtD,IAAA,WAAA,GAAA;;QASU,IAAqB,CAAA,qBAAA,GAAG,KAAK;QAsB7B,IAAW,CAAA,WAAA,GAAG,KAAK;AAwB5B;;AA3CC,IAAA,IACI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK;;IAEnB,IAAI,IAAI,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;;;AAI3B,IAAA,IACI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,WAAW;;IAEzB,IAAI,MAAM,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW,EAAE;AAC9B,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,YAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI;;;;AAMrC,IAAA,IACI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU;;IAExB,IAAI,SAAS,CAAC,KAAc,EAAA;AAC1B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU;AACjC,QAAA,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC;QAC9C,IAAI,CAAC,qBAAqB,GAAG,SAAS,KAAK,IAAI,CAAC,UAAU;;;IAI5D,gBAAgB,GAAA;AACd,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,qBAAqB;QACnD,IAAI,CAAC,kBAAkB,EAAE;AACzB,QAAA,OAAO,gBAAgB;;;IAIzB,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK;;8GA7CzB,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EANlB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,aAAA,EAAA,MAAA,CAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,oBAAoB,EAAE;AAC5D,YAAA,EAAE,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,oBAAoB,EAAE;AAC5E,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGQ,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,SAAS,EAAE;AACP,wBAAA,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,sBAAsB,EAAE;AAC5D,wBAAA,EAAE,OAAO,EAAE,yBAAyB,EAAE,WAAW,sBAAsB,EAAE;AAC5E,qBAAA;AACD,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAMK,IAAI,EAAA,CAAA;sBADP,KAAK;uBAAC,aAAa;gBAUhB,MAAM,EAAA,CAAA;sBADT;gBAcG,SAAS,EAAA,CAAA;sBADZ;;AAuBH;AASM,MAAO,qBAAsB,SAAQ,aAAa,CAAA;IACtD,WAAY,CAAA,SAA+B,EAAE,UAAmC,EAAA;AAC9E,QAAA,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC;AAC5B,QAAA,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA,UAAA,EAAa,SAAS,CAAC,oBAAoB,CAAA,CAAE,CAAC;;8GAH5E,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,cAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kCAAkC;AAC5C,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,gBAAgB;AACvB,wBAAA,IAAI,EAAE,cAAc;AACvB,qBAAA;AACD,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAQD;AASM,MAAO,qBAAsB,SAAQ,aAAa,CAAA;IACtD,WAAY,CAAA,SAA+B,EAAE,UAAsB,EAAA;AACjE,QAAA,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC;AAC5B,QAAA,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA,UAAA,EAAa,SAAS,CAAC,oBAAoB,CAAA,CAAE,CAAC;;8GAH5E,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kCAAkC;AAC5C,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,gBAAgB;AACvB,wBAAA,IAAI,EAAE,UAAU;AACnB,qBAAA;AACD,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAQD;AASM,MAAO,eAAgB,SAAQ,OAAO,CAAA;IAC1C,WAAY,CAAA,SAA+B,EAAE,UAAmC,EAAA;AAC9E,QAAA,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC;AAC5B,QAAA,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA,UAAA,EAAa,SAAS,CAAC,oBAAoB,CAAA,CAAE,CAAC;;8GAH5E,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAR3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,IAAI,EAAE,UAAU;AACnB,qBAAA;AACD,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACxJK,MAAgB,YAAgB,SAAQ,UAAa,CAAA;AAAG;;ACkBxD,MAAO,wBAAyB,SAAQ,aAAa,CAAA;8GAA9C,wBAAwB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,eAAA,EAAA,SAAA,EAHtB,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,wBAAwB,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGrE,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,eAAe;oBACzB,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAA0B,wBAAA,EAAE,CAAC;AAC9E,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAQK,MAAO,0BAA2B,SAAQ,eAAe,CAAA;8GAAlD,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,SAAA,EAHxB,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,0BAA0B,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGzE,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;oBAC/B,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAA4B,0BAAA,EAAE,CAAC;AAClF,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAQK,MAAO,0BAA2B,SAAQ,eAAe,CAAA;8GAAlD,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,SAAA,EAHxB,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,0BAA0B,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGzE,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;oBAC/B,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAA4B,0BAAA,EAAE,CAAC;AAClF,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAQK,MAAO,0BAA2B,SAAQ,eAAe,CAAA;8GAAlD,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,SAAA,EAHxB,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,0BAA0B,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGzE,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;oBAC/B,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAA4B,0BAAA,EAAE,CAAC;AAClF,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAQK,MAAO,qBAAsB,SAAQ,aAAa,CAAA;8GAA3C,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,SAAA,EAHnB,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGlE,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;oBAC1B,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAuB,qBAAA,EAAE,CAAC;AAC3E,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAGD;;;AAGG;AAMG,MAAO,uBAAwB,SAAQ,eAAe,CAAA;AAL5D,IAAA,WAAA,GAAA;;QAMU,IAAoB,CAAA,oBAAA,GAAG,KAAK;QAa5B,IAAU,CAAA,UAAA,GAAG,KAAK;AAY3B;AAtBC,IAAA,IACI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,UAAU;;IAExB,IAAI,MAAM,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;;;IAKpC,gBAAgB,GAAA;AACd,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,oBAAoB;QAClD,IAAI,CAAC,kBAAkB,EAAE;AACzB,QAAA,OAAO,gBAAgB;;;IAIzB,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK;;8GAxBxB,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,SAAA,CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,CAAA,EAAA,EAAA,SAAA,EAHrB,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGtE,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kBAAkB;oBAC5B,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAyB,uBAAA,EAAE,CAAC;AAC/E,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAI0B,OAAO,EAAA,CAAA;sBAA/B,KAAK;uBAAC,gBAAgB;gBAEnB,MAAM,EAAA,CAAA;sBADT,KAAK;uBAAC,sBAAsB;;AAwB/B;;;AAGG;AAMG,MAAO,uBAAwB,SAAQ,eAAe,CAAA;AAL5D,IAAA,WAAA,GAAA;;QAMU,IAAoB,CAAA,oBAAA,GAAG,KAAK;QAa5B,IAAU,CAAA,UAAA,GAAG,KAAK;AAa3B;AAvBC,IAAA,IACI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,UAAU;;IAExB,IAAI,MAAM,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;;;;IAMpC,gBAAgB,GAAA;AACd,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,oBAAoB;QAClD,IAAI,CAAC,kBAAkB,EAAE;AACzB,QAAA,OAAO,gBAAgB;;;IAIzB,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK;;8GAzBxB,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,SAAA,CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,CAAA,EAAA,EAAA,SAAA,EAHrB,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGtE,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kBAAkB;oBAC5B,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAyB,uBAAA,EAAE,CAAC;AAC/E,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAI0B,OAAO,EAAA,CAAA;sBAA/B,KAAK;uBAAC,gBAAgB;gBAEnB,MAAM,EAAA,CAAA;sBADT,KAAK;uBAAC,sBAAsB;;AAyB/B;;;;AAIG;AAMG,MAAO,iBAAqB,SAAQ,SAAY,CAAA;8GAAzC,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,SAAA,CAAA,EAAA,IAAA,EAAA,CAAA,cAAA,EAAA,MAAA,CAAA,EAAA,EAAA,SAAA,EAHf,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAG1D,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,YAAY;oBACtB,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAmB,iBAAA,EAAE,CAAC;AACnE,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAE2B,OAAO,EAAA,CAAA;sBAAhC,KAAK;uBAAC,iBAAiB;gBACD,IAAI,EAAA,CAAA;sBAA1B,KAAK;uBAAC,cAAc;;AAGvB;AAWM,MAAO,oBAAqB,SAAQ,YAAY,CAAA;8GAAzC,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAHlB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,KAAA,EAAA,EAAA,cAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAC,EAL/D,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,2CAAA,CAA6C,4DA/F9C,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAuGrB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAVhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gCAAgC;AAC1C,oBAAA,QAAQ,EAAE,CAA6C,2CAAA,CAAA;AACvD,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,eAAe;AACtB,wBAAA,IAAI,EAAE,KAAK;AACd,qBAAA;oBACD,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAsB,oBAAA,EAAE,CAAC;AACzE,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAGD;AAWM,MAAO,oBAAqB,SAAQ,YAAY,CAAA;8GAAzC,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAHlB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,KAAA,EAAA,EAAA,cAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAC,EAL/D,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,2CAAA,CAA6C,4DA5G9C,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAoHrB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAVhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gCAAgC;AAC1C,oBAAA,QAAQ,EAAE,CAA6C,2CAAA,CAAA;AACvD,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,eAAe;AACtB,wBAAA,IAAI,EAAE,KAAK;AACd,qBAAA;oBACD,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAsB,oBAAA,EAAE,CAAC;AACzE,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAGD;AAWM,MAAO,cAAe,SAAQ,MAAM,CAAA;8GAA7B,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EAHZ,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,KAAA,EAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC,EALnD,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,2CAAA,CAA6C,4DAzH9C,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAiIrB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAV1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE,CAA6C,2CAAA,CAAA;AACvD,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,QAAQ;AACf,wBAAA,IAAI,EAAE,KAAK;AACd,qBAAA;oBACD,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAgB,cAAA,EAAE,CAAC;AAC7D,oBAAA,UAAU,EAAE;AACf,iBAAA;;;AC9JM,MAAM,WAAW,GAAG,SAAS;AAC7B,MAAM,QAAQ,GAAG,MAAM;AACvB,MAAM,YAAY,GAAG,UAAU;AAE/B,MAAM,iBAAiB,GAAG,eAAe;AACzC,MAAM,cAAc,GAAG,YAAY;AACnC,MAAM,kBAAkB,GAAG,gBAAgB;AAE3C,MAAM,iBAAiB,GAAG,eAAe;AACzC,MAAM,cAAc,GAAG,YAAY;AACnC,MAAM,kBAAkB,GAAG,gBAAgB;AAE3C,MAAM,cAAc,GAAG,YAAY;AAEnC,MAAM,SAAS,GAAG,OAAO;AACzB,MAAM,eAAe,GAAG,aAAa;AACrC,MAAM,eAAe,GAAG,aAAa;AAIrC,MAAM,8BAA8B,GAAG,2BAA2B;;ACc5D,MAAA,iBAAiB,GAAG;;;;;;AAO1B,MAAM,yBAAyB,GAAG;AAClC,MAAM,4BAA4B,GAAG;AAE/B,MAAA,kBAAkB,GAAe;AAC5C,IAAA,EAAE,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,4BAA4B,EAAE;AAC9E,IAAA,EAAE,OAAO,EAAE,4BAA4B,EAAE,QAAQ,EAAE,wBAAwB,EAAE;;AAS/E;AACM,MAAO,OAAW,SAAQ,QAAW,CAAA;IACzC,WACE,CAAA,OAAwB,EACxB,iBAAoC,EACpC,UAAsB,EACH,IAAY,EAC/B,GAAqB,EACA,QAAa,EAClC,QAAoB,EAED,aAA4D,EAE5D,wBAAkD,EACrE,cAAsC,EAEnB,0BAAqD,EAAA;QAExE,KAAK,CAAC,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EACpF,wBAAwB,EAAE,cAAc,EAAE,0BAA0B,CAAC;QARxD,IAAa,CAAA,aAAA,GAAb,aAAa;QAEb,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB;QAGxB,IAA0B,CAAA,0BAAA,GAA1B,0BAA0B;;8GAfpC,OAAO,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAKL,MAAM,EAET,SAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,WAAW,oCAEX,uBAAuB,EAAA,EAAA,EAAA,KAAA,EAEvB,0BAA0B,EAAA,EAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,EAAA,EAAA,KAAA,EAGF,8BAA8B,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAdrD,OAAO,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,SAAA,EAJL,kBAAkB,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EADnB,CAAE,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAKH,OAAO,EAAA,UAAA,EAAA,CAAA;kBAPnB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,QAAQ,EAAE,CAAE,CAAA;AACZ,oBAAA,SAAS,EAAE,kBAAkB;AAC7B,oBAAA,UAAU,EAAE;AACf,iBAAA;;0BAOI,SAAS;2BAAC,MAAM;;0BAEhB,MAAM;2BAAC,WAAW;;0BAElB,MAAM;2BAAC,uBAAuB;;0BAE9B,MAAM;2BAAC,0BAA0B;;0BAGjC;;0BAAY;;0BAAY,MAAM;2BAAC,8BAA8B;;AAQlE,MAAM7E,YAAU,GAAG;IACjB,OAAO;;IAGP,wBAAwB;IACxB,uBAAuB;IACvB,oBAAoB;IACpB,kBAAkB;IAClB,iBAAiB;IACjB,wBAAwB;IACxB,uBAAuB;;IAGvB,wBAAwB;IACxB,0BAA0B;IAC1B,0BAA0B;IAC1B,0BAA0B;IAC1B,qBAAqB;;IAGrB,qBAAqB;IACrB,eAAe;IACf,qBAAqB;;IAGrB,oBAAoB;IACpB,cAAc;IACd,oBAAoB;CACrB;AAOK,MAAO,aAAc,SAAQ,cAAc,CAAA;8GAApC,aAAa,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,iBAzDb,OAAO;;YA0BlB,wBAAwB;YACxB,uBAAuB;YACvB,oBAAoB;YACpB,kBAAkB;YAClB,iBAAiB;YACjB,wBAAwB;YACxB,uBAAuB;;YAGvB,wBAAwB;YACxB,0BAA0B;YAC1B,0BAA0B;YAC1B,0BAA0B;YAC1B,qBAAqB;;YAGrB,qBAAqB;YACrB,eAAe;YACf,qBAAqB;;YAGrB,oBAAoB;YACpB,cAAc;YACd,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAIT,YAAY,CAAA,EAAA,OAAA,EAAA,CArDZ,OAAO;;YA0BlB,wBAAwB;YACxB,uBAAuB;YACvB,oBAAoB;YACpB,kBAAkB;YAClB,iBAAiB;YACjB,wBAAwB;YACxB,uBAAuB;;YAGvB,wBAAwB;YACxB,0BAA0B;YAC1B,0BAA0B;YAC1B,0BAA0B;YAC1B,qBAAqB;;YAGrB,qBAAqB;YACrB,eAAe;YACf,qBAAqB;;YAGrB,oBAAoB;YACpB,cAAc;YACd,oBAAoB,CAAA,EAAA,CAAA,CAAA;AAQT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAJb,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAIZ,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAE,YAAY,CAAE;AACzB,oBAAA,YAAY,EAAE,CAAE,GAAGA,YAAU,CAAE;AAC/B,oBAAA,OAAO,EAAE,CAAE,GAAGA,YAAU,CAAE;AAC3B,iBAAA;;;AClID;;;;AAIG;MAKU,gBAAgB,GAAG,IAAI,cAAc,CAAiB,wBAAwB;AAE3F;;AAEK;MACQ,cAAc,CAAA;AA8CzB,IAAA,WAAA,CAAY,MAA+B,EAAA;AA7C3C;;AAEK;QACL,IAAW,CAAA,WAAA,GAAY,IAAI;AAE3B;;AAEK;QACL,IAAa,CAAA,aAAA,GAAW,kBAAkB;AAE1C;;AAEK;QACL,IAAW,CAAA,WAAA,GAAW,EAAE;AAExB;;AAEK;QACL,IAAoB,CAAA,oBAAA,GAAY,IAAI;AAEpC;;AAEK;QACL,IAAU,CAAA,UAAA,GAAY,IAAI;AAE1B;;AAEK;QACL,IAAS,CAAA,SAAA,GAAY,KAAK;AAE1B;;AAEK;QACL,IAAS,CAAA,SAAA,GAAY,IAAI;AAavB,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;;AAE9B;;AC/DD;;;;AAIG;AAQH;;;;;AAKK;MACQ,WAAW,CAAA;AAWtB,IAAA,WAAA,CAAsB,UAAwB,EAAA;QAAxB,IAAU,CAAA,UAAA,GAAV,UAAU;AAHtB,QAAA,IAAA,CAAA,QAAQ,GAAiB,IAAI,OAAO,EAAE;AACvC,QAAA,IAAA,CAAA,OAAO,GAAoB,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;QAG9D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;;AAGxD;;AAEK;AACL,IAAA,KAAK,CAAC,GAAS,EAAA;AACb,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;AACvB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;;AAE3B;;AC1CD;;;;AAIG;AASH;;;;AAIK;MAMQ,0BAA0B,CAAA;AAOrC,IAAA,WAAA,CAAsB,MAAsB,EACtB,UAAsB,EACtB,gBAA2C,EAAA;QAF3C,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;;IAGtC,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AACzB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;AAC5E,YAAA,IAAI,CAAC,SAAS,CAAC,4BAA4B,EAAE;AAC7C,YAAA,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE;;;IAIxC,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE;AAC3C,YAAA,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;;;AAIjC,IAAA,qBAAqB,CAAI,MAA4B,EAAA;QACnD,OAAO,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,MAAM,CAAC;;AAGxD,IAAA,oBAAoB,CAAI,MAA2B,EAAA;QACjD,OAAO,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,MAAM,CAAC;;8GA/B5C,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA8E,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,yBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAG1B,uBAAuB,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EANtB,4CAA4C,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjE,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAG7C,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,4CAA4C;AACtD,oBAAA,UAAU,EAAE;AACf,iBAAA;8IAIuD,YAAY,EAAA,CAAA;sBAAjE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,uBAAuB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;AC1BtD;;;;AAIG;AAqBH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgHK;MAEQ,eAAe,CAAA;IAC1B,WAA2C,CAAA,QAAQ,EACH,YAAY,EACtC,eAAyC,EACzC,OAAyB,EACzB,QAAkB,EAClB,GAA6B,EAAA;QALR,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACH,IAAY,CAAA,YAAA,GAAZ,YAAY;QACtC,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAG,CAAA,GAAA,GAAH,GAAG;;AAGzB;;AAEK;AACL,IAAA,IAAI,CAAI,OAAiC,EACjC,UAAA,GAA2D,EAAE,EAAA;AACnE,QAAA,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,UAAU,EAAE,CAAC;QAC1E,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAC7C,QAAA,MAAM,SAAS,GAAG,IAAI,WAAW,CAAI,UAAU,CAAC;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,CAAC;QAC1D,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC;QAEzD,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC;AAE1D,QAAA,OAAO,SAAS;;AAGR,IAAA,aAAa,CAAC,MAAsB,EAAA;AAC5C,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,EAAE;QACtD,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,SAAS,CAAC;AAElE,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YACzB,gBAAgB;YAChB,cAAc;YACd,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,UAAU,EAAE,MAAM,CAAC,WAAW;AAC/B,SAAA,CAAC;;IAGM,sBAAsB,GAAA;QAC9B,OAAO,IAAI,CAAC;AACT,aAAA,MAAM;AACN,aAAA,gBAAgB;AAChB,aAAA,kBAAkB,EAAE;;AAGf,IAAA,oBAAoB,CAAC,SAAkB,EAAA;QAC/C,IAAI,SAAS,EAAE;YACb,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE;;aACtC;YACL,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE;;;IAItC,eAAe,CAAC,MAAsB,EAAE,UAAwB,EAAA;QACxE,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,IAAI,OAAO,CAAC,CAAC,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3G,QAAA,MAAM,eAAe,GAAG,IAAI,iBAAiB,CAAC,0BAA0B,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC;QACnG,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC;QACvD,OAAO,YAAY,CAAC,QAAQ;;AAGpB,IAAA,aAAa,CAAI,MAAsB,EACtB,OAAiC,EACjC,SAAqC,EACrC,SAAyB,EAAA;AAClD,QAAA,IAAI,OAAO,YAAY,WAAW,EAAE;AAClC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC;AACpE,YAAA,SAAS,CAAC,oBAAoB,CAAC,MAAM,CAAC;;aACjC;AACL,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC;YACrE,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC,qBAAqB,CAAC,MAAM,CAAC;AAEhE,YAAA,IAAI,MAAM,CAAC,OAAO,EAAE;AAClB,gBAAA,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;;;;AAKjE,IAAA,oBAAoB,CAAI,MAAsB,EACtB,OAAuB,EACvB,SAAyB,EAAA;AACzD,QAAA,OAAO,IAAI,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAO,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;;AAG3F;;;AAGK;AACK,IAAA,qBAAqB,CAAI,MAAsB,EACtB,OAAgB,EAChB,SAAyB,EAAA;QAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;AAC5C,QAAA,MAAM,cAAc,GAAG,IAAI,gBAAgB,CAAC,QAAQ,EAAE,IAAI,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;QAC9F,OAAO,IAAI,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,gBAAgB,EAAE,cAAc,CAAC;;AAGtE,IAAA,cAAc,CAAC,MAAsB,EAAA;AAC7C,QAAA,OAAO,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,gBAAgB,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;;AAG3E,IAAA,sBAAsB,CAAI,MAAsB,EAAE,UAAwB,EAAE,SAAyB,EAAA;AAC7G,QAAA,IAAI,MAAM,CAAC,oBAAoB,EAAE;AAC/B,YAAA,UAAU,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;;AAG/D,QAAA,IAAI,MAAM,CAAC,UAAU,EAAE;AACrB,YAAA7C,SAAmB,CAAgB,IAAI,CAAC,QAAQ,EAAE,OAAO;iBACtD,IAAI,CACH,MAAM,CAAC,CAAC,KAAoB,KAAK,KAAK,CAAC,OAAO,KAAK,EAAE,CAAC,EACtD,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC;iBAE7B,SAAS,CAAC,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;;;8GA9G9B,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EACN,WAAW,EAAA,EAAA,EAAA,KAAA,EACX,gBAAgB,EAAA,EAAA,EAAA,KAAA,EAAAqD,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA0D,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAFzB,eAAe,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B;;0BAEc,MAAM;2BAAC,WAAW;;0BAClB,MAAM;2BAAC,gBAAgB;;;AC7ItC;;;;AAIG;MAeU,cAAc,CAAA;AACzB,IAAA,OAAO,OAAO,CAAC,YAAA,GAAwC,EAAE,EAAA;QACvD,OAAO;AACL,YAAA,QAAQ,EAAE,cAAc;AACxB,YAAA,SAAS,EAAE;gBACT,eAAe;AACf,gBAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,EAAE;AACtD,aAAA;SACF;;AAGH,IAAA,OAAO,QAAQ,CAAC,YAAA,GAAwC,EAAE,EAAA;QACxD,OAAO;AACL,YAAA,QAAQ,EAAE,cAAc;AACxB,YAAA,SAAS,EAAE;gBACT,eAAe;AACf,gBAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,EAAE;AACtD,aAAA;SACF;;8GAlBQ,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,EAFV,YAAA,EAAA,CAAA,0BAA0B,CAD/B,EAAA,OAAA,EAAA,CAAA,cAAc,EAAE,eAAe,CAAA,EAAA,CAAA,CAAA;+GAG9B,cAAc,EAAA,OAAA,EAAA,CAHf,cAAc,EAAE,eAAe,CAAA,EAAA,CAAA,CAAA;;2FAG9B,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC;oBAC1C,YAAY,EAAE,CAAC,0BAA0B,CAAC;AAC3C,iBAAA;;;AClBD;;;;AAIG;AAmBH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmEK;MAOQ,gBAAgB,CAAA;AAO3B,IAAA,IACI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS;;AAG/C,IAAA,IACI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM;;AAG5C,IAAA,IACI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS;;AAG/C,IAAA,IACI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS;;AAG/C,IAAA,IACI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ;;AAG9C,IAAA,IACI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,OAAO;;AAG7C,IAAA,IACI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS;;AAG/C,IAAA,IACI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc;;AAGzC,IAAA,IACI,OAAO,GAAA;QACT,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM;AAClC,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC5B,YAAA,OAAO,IAAI;;QAGb,OAAO,CAAC,EAAE,IAAI,IAAK,IAAqB,CAAC,IAAI,CAAC;;AAGhD,IAAA,IACI,UAAU,GAAA;AACZ,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI;;AAGpB,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI;;AAG/B,IAAA,IACI,iBAAiB,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AAC/D,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;;AAEtE,QAAA,OAAO,EAAE;;IAIX,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;;AAGxB,IAAA,WAAA,CACY,QAAmB,EACnB,UAAsB,EACtB,aAA8B,EAAA;QAF9B,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAa,CAAA,aAAA,GAAb,aAAa;AA9Ef,QAAA,IAAA,CAAA,OAAO,GAAuB,IAAI,YAAY,EAAE;AAChD,QAAA,IAAA,CAAA,UAAU,GAAuB,IAAI,YAAY,EAAE;;IAgF7D,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE;AAChC,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;;;IAIvF,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;;8GA5FV,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAzG,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,qoBCjG7B,uQAOA,EAAA,MAAA,EAAA,CAAA,ydAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiB,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FD0Fa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,cAGR,KAAK,EAAA,QAAA,EAAA,uQAAA,EAAA,MAAA,EAAA,CAAA,ydAAA,CAAA,EAAA;kIAInB,KAAK,EAAA,CAAA;sBADJ;gBAGS,OAAO,EAAA,CAAA;sBAAhB;gBACS,UAAU,EAAA,CAAA;sBAAnB;gBAGG,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,IAAI,EAAA,CAAA;sBADP,WAAW;uBAAC,mBAAmB;gBAM5B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,qBAAqB;gBAM9B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,oBAAoB;gBAM7B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,cAAc,EAAA,CAAA;sBADjB,WAAW;uBAAC,wBAAwB;gBAMjC,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,gBAAgB;gBAWzB,UAAU,EAAA,CAAA;sBADb,WAAW;uBAAC,mBAAmB;gBAU5B,iBAAiB,EAAA,CAAA;sBADpB,WAAW;uBAAC,OAAO;gBASpB,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO;;;AE3KvB;;;;AAIG;AAYH,MAAM,SAAS,GAAG,KAAK,CAAC;AACtB,IAAA,SAAS,EAAE,iCAAiC;AAC5C,IAAA,MAAM,EAAE,CAAC;AACT,IAAA,UAAU,EAAE,GAAG;AACf,IAAA,WAAW,EAAE,GAAG;AAChB,IAAA,SAAS,EAAE,GAAG;AACd,IAAA,YAAY,EAAE,GAAG;AAClB,CAAA,CAAC;AAEF,MAAM,cAAc,GAAG,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE;MAcvC,0BAA0B,CAAA;IAkBrC,WAAsB,CAAA,eAAyC,EACzC,cAAgC,EAAA;QADhC,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAc,CAAA,cAAA,GAAd,cAAc;AAjB1B,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;QAGxC,IAAO,CAAA,OAAA,GAAc,EAAE;;IAiBvB,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB;AACnC,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC7B,SAAS,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;;IAG9C,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;;IAGhB,iBAAiB,GAAA;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG;AAC/E,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,EAAE;;8GAnCzC,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAvB,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA0H,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAavB,gBAAgB,EAvBlB,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;2FAC6E,EAC3E,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA7C,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA8C,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACR,OAAO,CAAC,QAAQ,EAAE;AACd,gBAAA,UAAU,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC;AAC/D,gBAAA,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC;aAClE,CAAC;AACL,SAAA,EAAA,CAAA,CAAA;;2FAGQ,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAZtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE;AAC6E,0FAAA,CAAA;AACvF,oBAAA,UAAU,EAAE;wBACR,OAAO,CAAC,QAAQ,EAAE;AACd,4BAAA,UAAU,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC;AAC/D,4BAAA,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC;yBAClE,CAAC;AACL,qBAAA;AACD,oBAAA,UAAU,EAAE;AACf,iBAAA;sHAMC,OAAO,EAAA,CAAA;sBADN;gBAID,OAAO,EAAA,CAAA;sBADN;gBAID,QAAQ,EAAA,CAAA;sBADP;gBAID,MAAM,EAAA,CAAA;sBADL,YAAY;uBAAC,gBAAgB;;;ACpDhC;;;;AAIG;MAYU,gBAAgB,GAAG,IAAI,cAAc,CAAiB,wBAAwB;AAI3F;;AAEK;MACQ,cAAc,CAAA;AAwDzB,IAAA,WAAA,CAAY,MAA+B,EAAA;AAvD3C;;AAEK;AACL,QAAA,IAAA,CAAA,QAAQ,GAAqB,uBAAuB,CAAC,OAAO;AAC5D;;AAEK;QACL,IAAM,CAAA,MAAA,GAA8B,OAAO;AAC3C;;AAEK;QACL,IAAQ,CAAA,QAAA,GAAW,IAAI;AACvB;;AAEK;QACL,IAAc,CAAA,cAAA,GAAY,IAAI;AAC9B;;;;AAIK;QACL,IAAiB,CAAA,iBAAA,GAAY,KAAK;AAClC;;AAEK;QACL,IAAmB,CAAA,mBAAA,GAA8B,UAAU;AAC3D;;AAEI;QACJ,IAAK,CAAA,KAAA,GAAY,IAAI;AACrB;;AAEG;QACH,IAAU,CAAA,UAAA,GAAW,EAAE;AACvB;;AAEK;QACL,IAAO,CAAA,OAAA,GAAY,IAAI;AACvB;;AAEK;QACL,IAAI,CAAA,IAAA,GAA0B,OAAO;AACrC;;AAEK;AACK,QAAA,IAAA,CAAA,KAAK,GAAmB;AAChC,YAAA,MAAM,EAAE,eAAe;AACvB,YAAA,OAAO,EAAE,mBAAmB;AAC5B,YAAA,IAAI,EAAE,uBAAuB;AAC7B,YAAA,OAAO,EAAE,wBAAwB;AACjC,YAAA,OAAO,EAAE,eAAe;AACxB,YAAA,OAAO,EAAE,eAAe;AACxB,YAAA,KAAK,EAAE,eAAe;SACvB;AAGC,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AACtB,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;;AAGnB,IAAA,SAAS,CAAC,MAA+B,EAAA;AACjD,QAAA,IAAI,EAAE,MAAM,IAAI,MAAM,CAAC,EAAE;YACvB,MAAM,CAAC,IAAI,GAAG;AACZ,gBAAA,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK;AACnD,gBAAA,IAAI,EAAE,oBAAoB;aAC3B;;;AAGN;;AC5FD;;;;AAIG;MAgBU,UAAU,CAAA;IAGrB,WAAoB,CAAA,cAAgC,EAAU,KAAc,EAAA;QAAxD,IAAc,CAAA,cAAA,GAAd,cAAc;QAA4B,IAAK,CAAA,KAAA,GAAL,KAAK;;IAEnE,KAAK,GAAA;QACH,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;;IAGzC,OAAO,GAAA;QACL,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,EAAE;;IAGlD,OAAO,GAAA;QACL,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,YAAY,EAAE;;AAEtD;MAEY,gBAAgB,CAAA;AAI3B,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa;;AAGjD,IAAA,WAAA,CACY,QAA0B,EAC1B,YAAsD,EACtD,cAAgC,EAAA;QAFhC,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAc,CAAA,cAAA,GAAd,cAAc;QAVhB,IAAM,CAAA,MAAA,GAAc,EAAE;AA4DtB,QAAA,IAAA,CAAA,yBAAyB,GAAG,CAAC,EAAW,EAAE,EAAW,KAAa;YAC1E,OAAO,EAAE,CAAC,OAAO,KAAK,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM,CAAC,MAAM;AACpG,SAAC;;AAjDD,IAAA,MAAM,CAAC,KAAc,EAAA;AACnB,QAAA,IAAI,KAAK,CAAC,MAAM,CAAC,iBAAiB,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;AAC7D,YAAA,OAAO,SAAS;;AAGlB,QAAA,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC;QACrC,MAAM,cAAc,GAAqB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAEhE,QAAA,IAAI,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE;AAC/B,YAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,KAAK,CAAC;;AAG9C,QAAA,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE;AACzB,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;;AAG/B,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QAEtB,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;AAC5C,QAAA,QAAQ,CAAC,aAAa,GAAG,cAAc;AAEvC,QAAA,OAAO,QAAQ;;AAGjB,IAAA,OAAO,CAAC,KAAc,EAAA;AACpB,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;AAC5B,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;;AAGvB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;QACpD,IAAI,CAAC,eAAe,EAAE;;AAGd,IAAA,WAAW,CAAC,KAAc,EAAA;AAClC,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC,mBAAmB,KAAK;AAC1C,cAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK;AAChC,cAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;;AAG3B,IAAA,mBAAmB,CAAC,KAAc,EAAA;AAC1C,QAAA,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC;;AAGtE,IAAA,mBAAmB,CAAC,KAAc,EAAA;QAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,yBAAyB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;;AAOhE,IAAA,yBAAyB,CAAC,KAAc,EAAA;AAChD,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE;YAClE;;AAEF,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;AAC5D,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;;aACZ;AACL,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;;;AAIb,IAAA,WAAW,CAAC,KAAc,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;AAC5D,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;;aACzB;AACL,YAAA,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;;;AAI3B,IAAA,WAAW,CAAC,KAAc,EAAA;AAClC,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,eAAe,EAAE;QACtB,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK;;AAGtC,IAAA,cAAc,CAAC,KAAc,EAAA;AACrC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,eAAe,EAAE;QACtB,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI;;AAGrC,IAAA,iBAAiB,CAAC,KAAc,EAAA;AACxC,QAAA,UAAU,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;;IAGpD,gBAAgB,CAAC,cAAgC,EAAE,KAAc,EAAA;AACzE,QAAA,cAAc,CAAC;AACZ,aAAA,IAAI,CACH,MAAM,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,EACzC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC;aAElC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;;IAG/B,eAAe,GAAA;AACvB,QAAA,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;;AAE9E;MAQY,yBAAyB,CAAA;IAGpC,WACY,CAAA,OAAyB,EACzB,eAAyC,EACzC,cAAgC,EAChC,GAA6B,EACR,QAAa,EAAA;QAJlC,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAAG,CAAA,GAAA,GAAH,GAAG;QACkB,IAAQ,CAAA,QAAA,GAAR,QAAQ;AAP/B,QAAA,IAAA,CAAA,QAAQ,GAAwD,IAAI,GAAG,EAAE;;AAUnF,IAAA,GAAG,CAAC,QAA0B,EAAA;QAC5B,MAAM,eAAe,GAA4B,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,QAAQ,CAAC;QAEhG,MAAM,oBAAoB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC;AAC/D,QAAA,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,eAAe,CAAC,EAAE;YACpF,IAAI,oBAAoB,EAAE;AACxB,gBAAA,oBAAoB,CAAC,UAAU,CAAC,OAAO,EAAE;;AAE3C,YAAA,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC;;QAG5C,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,eAAe;;AAGjD,IAAA,oBAAoB,CAAC,QAAiC,EAAA;QAC9D,MAAM,0BAA0B,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;QACjE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,0BAA0B,CAAC;;AAG/C,IAAA,eAAe,CAAC,QAAiC,EAAA;AACzD,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACzE,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;AACrD,QAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC;QAC/B,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,iBAAiB,CAAC,0BAA0B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACxG,OAAO;AACL,YAAA,UAAU,EAAE,GAAG;YACf,eAAe,EAAE,IAAI,gBAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC;SACnF;;AAGO,IAAA,qBAAqB,CAAC,UAAwB,EAAA;QACtD,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,0BAA0B,CAAC;;AAGxD,IAAA,WAAW,CAAC,cAAgC,EAAA;AACpD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC;;AA9CvD,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,yJAQ1B,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHARV,yBAAyB,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC;;0BASI,MAAM;2BAAC,WAAW;;AA0CvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwEK;MAEQ,eAAe,CAAA;IAC1B,WACsC,CAAA,YAA4B,EACtD,iBAA4C,EAAA;QADlB,IAAY,CAAA,YAAA,GAAZ,YAAY;QACtC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;;AAG7B;;AAEK;AACL,IAAA,IAAI,CAAC,OAAO,EAAE,KAAM,EAAE,UAAoC,EAAA;AACxD,QAAA,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,UAAU,EAAE,CAAC;AAC1E,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC7D,MAAM,KAAK,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE;AACxC,QAAA,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;;AAGhC;;AAEK;AACL,IAAA,OAAO,CAAC,OAAO,EAAE,KAAM,EAAE,MAAgC,EAAA;AACvD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;;AAGpE;;AAEK;AACL,IAAA,IAAI,CAAC,OAAO,EAAE,KAAM,EAAE,MAAgC,EAAA;AACpD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;;AAGjE;;AAEK;AACL,IAAA,OAAO,CAAC,OAAO,EAAE,KAAM,EAAE,MAAgC,EAAA;AACvD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;;AAGpE;;AAEK;AACL,IAAA,OAAO,CAAC,OAAO,EAAE,KAAM,EAAE,MAAgC,EAAA;AACvD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;;AAGpE;;AAEK;AACL,IAAA,MAAM,CAAC,OAAO,EAAE,KAAM,EAAE,MAAgC,EAAA;AACtD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;;AAGnE;;AAEK;AACL,IAAA,OAAO,CAAC,OAAO,EAAE,KAAM,EAAE,MAAgC,EAAA;AACvD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;;AAGlE;;AAEK;AACL,IAAA,OAAO,CAAC,OAAO,EAAE,KAAM,EAAE,MAAgC,EAAA;AACvD,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;;AA9D5D,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,kBAEhB,gBAAgB,EAAA,EAAA,EAAA,KAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAFf,eAAe,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B;;0BAGI,MAAM;2BAAC,gBAAgB;;;AC5R5B;;;;AAIG;MAkBU,cAAc,CAAA;AACzB,IAAA,OAAO,OAAO,CAAC,YAAA,GAAwC,EAAE,EAAA;QACvD,OAAO;AACL,YAAA,QAAQ,EAAE,cAAc;AACxB,YAAA,SAAS,EAAE;gBACT,eAAe;gBACf,yBAAyB;AACzB,gBAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,EAAE;AACtD,aAAA;SACF;;8GATQ,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAd,cAAc,EAAA,YAAA,EAAA,CAFV,0BAA0B,EAAE,gBAAgB,aADjD,cAAc,EAAE,eAAe,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA;AAG5C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,EAHf,OAAA,EAAA,CAAA,cAAc,EAAE,eAAe,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAG5C,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,YAAY,CAAC;AACxD,oBAAA,YAAY,EAAE,CAAC,0BAA0B,EAAE,gBAAgB,CAAC;AAC7D,iBAAA;;;ACrBD;;;;AAIG;MAIU,OAAO,CAAA;AAInB;;ACZD;;;;AAIG;AAYH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CG;MAyBU,kBAAkB,CAAA;AAW7B,IAAA,IACI,OAAO,GAAA;QACT,OAAO,CAAA,EAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAA,CAAE;;AAG/C,IAAA,IACI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI;;AAMb,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACvB,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;;AAG/D,QAAA,OAAO,EAAE;;AAGX,IAAA,WAAA,CAAsB,aAA8B,EAAA;QAA9B,IAAa,CAAA,aAAA,GAAb,aAAa;AA3BnC;;AAEK;AAEL,QAAA,IAAA,CAAA,QAAQ,GAAe,UAAU,CAAC,GAAG;QAarC,IAAO,CAAA,OAAA,GAAyE,EAAE;;AAalF;;;AAGG;AACH,IAAA,aAAa;8GAvCF,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA3G,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EArBjB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,cAAA,EAAA,cAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;GAMX,EACa,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,86DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiB,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACR,OAAO,CAAC,aAAa,EAAE;gBACnB,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;gBAClC,UAAU,CAAC,WAAW,EAAE;AACpB,oBAAA,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;oBACrB,OAAO,CAAC,GAAG,CAAC;iBACf,CAAC;gBACF,UAAU,CAAC,WAAW,EAAE;oBACpB,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;iBACtC,CAAC;aACL,CAAC;AACL,SAAA,EAAA,CAAA,CAAA;;2FAGQ,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAxB9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAEZ,QAAA,EAAA;;;;;;GAMX,EACa,UAAA,EAAA;wBACR,OAAO,CAAC,aAAa,EAAE;4BACnB,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;4BAClC,UAAU,CAAC,WAAW,EAAE;AACpB,gCAAA,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;gCACrB,OAAO,CAAC,GAAG,CAAC;6BACf,CAAC;4BACF,UAAU,CAAC,WAAW,EAAE;gCACpB,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;6BACtC,CAAC;yBACL,CAAC;AACL,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,MAAA,EAAA,CAAA,86DAAA,CAAA,EAAA;iFAKnB,OAAO,EAAA,CAAA;sBADN;gBAOD,QAAQ,EAAA,CAAA;sBADP;gBAIG,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,OAAO;gBAMhB,IAAI,EAAA,CAAA;sBADP,WAAW;uBAAC,cAAc;gBAM3B,OAAO,EAAA,CAAA;sBADN;;;ACxGH;;;;AAIG;AAyBH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCG;MAOU,kBAAkB,CAAA;AAsB7B;;;;AAIG;AACH,IAAA,IACI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW;;IAEzB,IAAI,UAAU,CAAC,KAAmB,EAAA;AAChC,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;;AAK1B,IAAA,IACI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa;;IAE3B,IAAI,YAAY,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,YAAY,EAAE;AAC/B,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;YAC1B,IAAI,CAAC,aAAa,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE;;;AAK1D;;;AAGG;IACH,IACI,IAAI,CAAC,IAA2B,EAAA;AAClC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC;;AAGtD;;;AAGG;IACH,IACI,MAAM,CAAC,MAAiC,EAAA;AAC1C,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC;;AAuBxD,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;;IAGlE,WAAsB,CAAA,OAAmB,EAAY,qBAA8C,EAAA;QAA7E,IAAO,CAAA,OAAA,GAAP,OAAO;QAAwB,IAAqB,CAAA,qBAAA,GAArB,qBAAqB;AA1FhE,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;QAC9B,IAAgB,CAAA,gBAAA,GAAG,kBAAkB;QAG/C,IAAO,CAAA,OAAA,GAAW,EAAE;AAQpB;;;AAGG;;AAGH,QAAA,IAAA,CAAA,QAAQ,GAAe,UAAU,CAAC,GAAG;AAe3B,QAAA,IAAA,CAAA,WAAW,GAAiB,YAAY,CAAC,SAAS;QAa5D,IAAa,CAAA,aAAA,GAAW,EAAE;AAoB1B;;;AAGK;AAEL,QAAA,IAAA,CAAA,OAAO,GAAc,SAAS,CAAC,IAAI;AAEnC;;AAEI;QACsB,IAAM,CAAA,MAAA,GAAG,CAAC;;QAGR,IAAQ,CAAA,QAAA,GAAY,KAAK;AAGrD,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,YAAY,EAAwB;QAEzD,IAAa,CAAA,aAAA,GAAoB,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE;;IAQ5E,QAAQ,GAAA;QACN,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;;IAGxG,WAAW,GAAA;QACT,IAAI,CAAC,OAAO,EAAE;;IAGhB,eAAe,GAAA;QACb,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC,KAAK,EAAE;QAE5D,IAAI,CAAC,cAAc,CAAC;AACjB,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AACtC,aAAA,SAAS,CAAC,CAAC,OAAgB,KAAK,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;;IAGrF,OAAO,GAAA;QACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC,OAAO,EAAE;;IAGhE,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;;IAG5B,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;;IAG5B,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;;IAG9B,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE;AACpC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;;IAGhB,uBAAuB,GAAA;QAC/B,OAAO,IAAI,CAAC;AACT,aAAA,QAAQ,CAAC,IAAI,CAAC,QAAQ;AACtB,aAAA,OAAO,CAAC,IAAI,CAAC,OAAO;AACpB,aAAA,QAAQ,CAAC,IAAI,CAAC,QAAQ;AACtB,aAAA,UAAU,CAAC,IAAI,CAAC,UAAU;AAC1B,aAAA,OAAO,CAAC,IAAI,CAAC,OAAO;AACpB,aAAA,OAAO,CAAC,IAAI,CAAC,OAAO;AACpB,aAAA,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC;;8GA3I3B,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAwE,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAHhB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,EAAA,UAAA,CAAA,EAAA,UAAA,EAAA,CAAA,qBAAA,EAAA,YAAA,CAAA,EAAA,YAAA,EAAA,CAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,IAAA,EAAA,CAAA,eAAA,EAAA,MAAA,CAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,SAAA,CAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,EAAA,SAAA,EAAA,CAAC,uBAAuB,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAG7C,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,SAAS,EAAE,CAAC,uBAAuB,EAAE,gBAAgB,CAAC;AACtD,oBAAA,UAAU,EAAE;AACf,iBAAA;kHAYC,OAAO,EAAA,CAAA;sBADN,KAAK;uBAAC,WAAW;gBASlB,QAAQ,EAAA,CAAA;sBADP,KAAK;uBAAC,oBAAoB;gBAUvB,UAAU,EAAA,CAAA;sBADb,KAAK;uBAAC,qBAAqB;gBAWxB,YAAY,EAAA,CAAA;sBADf,KAAK;uBAAC,gBAAgB;gBAiBnB,IAAI,EAAA,CAAA;sBADP,KAAK;uBAAC,eAAe;gBAUlB,MAAM,EAAA,CAAA;sBADT,KAAK;uBAAC,iBAAiB;gBAUxB,OAAO,EAAA,CAAA;sBADN,KAAK;uBAAC,kBAAkB;gBAMC,MAAM,EAAA,CAAA;sBAA/B,KAAK;uBAAC,iBAAiB;gBAGI,QAAQ,EAAA,CAAA;sBAAnC,KAAK;uBAAC,mBAAmB;gBAG1B,wBAAwB,EAAA,CAAA;sBADvB;;;AC7JH;;;;AAIG;MAiBU,eAAe,CAAA;8GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAf,eAAe,EAAA,YAAA,EAAA,CAHX,kBAAkB,EAAE,kBAAkB,CAAA,EAAA,OAAA,EAAA,CAD3C,cAAc,EAAE,eAAe,EAAE,YAAY,CAAA,EAAA,OAAA,EAAA,CAE7C,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAEjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,EAJhB,OAAA,EAAA,CAAA,cAAc,EAAE,eAAe,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAI5C,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,YAAY,CAAC;AACxD,oBAAA,YAAY,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;oBACtD,OAAO,EAAE,CAAC,kBAAkB,CAAC;AAC9B,iBAAA;;;MClBY,yBAAyB,GAAG,IAAI,cAAc,CAAC,2BAA2B;;ACFvF;;;;AAIG;AAqBH;AACA,IAAI,YAAY,GAAW,CAAC;AAQ5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CI;MAWS,iBAAiB,CAAA;AAQ5B,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,eAAe;;IAE/C,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAc/C,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;;IAanC,WACiD,CAAA,MAAM,EAC3C,UAAsB,EACtB,EAAqB,EACrB,IAAY,EACZ,QAAmB,EAAA;QAHnB,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAI,CAAA,IAAA,GAAJ,IAAI;QACJ,IAAQ,CAAA,QAAA,GAAR,QAAQ;QA7CV,IAAe,CAAA,eAAA,GAAG,KAAK;QAcvB,IAAS,CAAA,SAAA,GAAY,KAAK;AAGpC;;AAEK;AACK,QAAA,IAAA,CAAA,eAAe,GAAuC,IAAI,YAAY,EAAE;AAElF;;AAEG;AACO,QAAA,IAAA,CAAA,MAAM,GAAkC,IAAI,OAAO,EAAwB;QAKrF,IAAQ,CAAA,QAAA,GAAY,KAAK;QAEf,IAAK,CAAA,KAAA,GAAY,IAAI;AAE/B;;AAEK;AAEL,QAAA,IAAA,CAAA,EAAE,GAAW,CAAA,UAAA,EAAa,YAAY,EAAE,EAAE;QAmEhC,IAAO,CAAA,OAAA,GAAY,KAAK;AA1DhC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;;IAGtB,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;IAGpB,eAAe,GAAA;;QAEb,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAC1B,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,eAAe,CAAC;SACvE,CAAC,CACH;;AAGH;;AAEK;AACL,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;;AAG5C,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW;;AAGlD,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM;;;AAI7C,IAAA,IACI,QAAQ,GAAA;;;AAGV,QAAA,OAAO,IAAI,CAAC,MAAM,GAAI,IAAI,CAAC,MAA4B,CAAC,QAAQ,GAAG,KAAK;;AAG1E,IAAA,IACI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,QAAQ;;AAGtB,IAAA,IACI,iBAAiB,GAAA;QACnB,OAAO,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI;;AAGlC,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI;;AAGb,IAAA,IACI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,OAAO;;AAOrB,IAAA,OAAO,CAAC,KAAK,EAAA;AACX,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;;QAGtB,KAAK,CAAC,cAAc,EAAE;;IAGxB,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;;IAGzB,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;;AAG1B;;AAEG;AACH,IAAA,uBAAuB,CAAC,QAAiB,EAAA;;QAEvC,IAAI,IAAI,CAAC,eAAe,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE;AACnD,YAAA,IAAI,CAAC,eAAe,GAAG,QAAQ;AAC/B,YAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;;AAIhB,IAAA,YAAY,CAAC,QAAiB,EAAA;AACtC;;;;;;AAMK;QACL,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;AAC5C,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,YAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;;IAI1B,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE;;IAGvC,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,OAAO;;IAGrB,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;IAGxB,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;AAvKb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,kBA0CN,yBAAyB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA1CpC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EANhB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;AAGX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,ivBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAnF,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAgH,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,UAAA,EAAA,QAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAV7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAEJ,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACrC,QAAA,EAAA;;;AAGX,EAAA,CAAA,EAAA,UAAA,EACa,KAAK,EAAA,MAAA,EAAA,CAAA,ivBAAA,CAAA,EAAA;;0BA4ChB;;0BAAY,MAAM;2BAAC,yBAAyB;+IApCtC,KAAK,EAAA,CAAA;sBAAb;gBAGG,QAAQ,EAAA,CAAA;sBADX;gBAaS,eAAe,EAAA,CAAA;sBAAxB;gBAkBD,EAAE,EAAA,CAAA;sBADD,WAAW;uBAAC,SAAS;gBA2ClB,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,gBAAgB;gBAQzB,aAAa,EAAA,CAAA;sBADhB,WAAW;uBAAC,gBAAgB;gBAMzB,iBAAiB,EAAA,CAAA;sBADpB,WAAW;uBAAC,eAAe;gBAMxB,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,UAAU;gBAMnB,WAAW,EAAA,CAAA;sBADd,WAAW;uBAAC,cAAc;gBAS3B,OAAO,EAAA,CAAA;sBAHN,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;sBAChC,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;;sBACxC,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;;;AClM3C;;;;;;;;;;;;;;;AAeK;MAWQ,qBAAqB,CAAA;AAVlC,IAAA,WAAA,GAAA;QAYW,IAAI,CAAA,IAAA,GAAoB,QAAQ;AAsC1C;AAlCC,IAAA,IACI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,GAAG;;AAGzC,IAAA,IACI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,MAAM;;AAG5C,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM;;AAG7B,IAAA,IACI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAG9B,IAAA,IACI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;;AAG/B,IAAA,IACI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAG9B,IAAA,IACI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;8GAtCnB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EARpB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;AAIX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAVjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE;;;;AAIX,EAAA,CAAA;oBACC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAGU,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,QAAQ,EAAA,CAAA;sBAAhB;gBAGG,WAAW,EAAA,CAAA;sBADd,WAAW;uBAAC,oBAAoB;gBAM7B,cAAc,EAAA,CAAA;sBADjB,WAAW;uBAAC,uBAAuB;gBAMhC,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,iBAAiB;gBAM1B,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,kBAAkB;gBAM3B,UAAU,EAAA,CAAA;sBADb,WAAW;uBAAC,mBAAmB;gBAM5B,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,kBAAkB;gBAM3B,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,kBAAkB;;;ACnEjC;;;;AAIG;MA8DU,sBAAsB,CAAA;8GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,4EAHrB,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAG5B,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,UAAU,EAAE;AACf,iBAAA;;SAGe,qCAAqC,GAAA;AACnD,IAAA,MAAM,MAAM,GAAG,IAAI,wBAAwB,EAAE;AAC7C,IAAA,MAAM,CAAC,cAAc,GAAG,KAAK;AAC7B,IAAA,OAAO,MAAM;AACf;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8aK;MAkBQ,iBAAiB,CAAA;AAmC5B;;AAEK;AACL,IAAA,IACI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS;;IAE7C,IAAI,YAAY,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;;AAI5B;;AAEG;AACH,IAAA,IAEI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,UAAU,KAAK,SAAS;;IAEtC,IAAI,OAAO,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;;;AAK/B;;AAEG;AACH,IAAA,IAEI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;;IAErC,IAAI,MAAM,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,UAAU,GAAG,QAAQ;;;AAK9B;;AAEG;AACH,IAAA,IAEI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,UAAU,KAAK,MAAM;;IAEnC,IAAI,IAAI,CAAC,KAAc,EAAA;AACrB,QAAA,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,UAAU,GAAG,MAAM;;;AAK5B;;AAEG;AACH,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS;;IAEzB,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAK/C;;AAEG;AACH,IAAA,IAEI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU;;IAExB,IAAI,SAAS,CAAC,KAAc,EAAA;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAUhD;;;AAGG;AACH,IAAA,IACI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY;;IAE1B,IAAI,WAAW,CAAC,EAA2B,EAAA;AACzC,QAAA,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE;YAC5B;;AAGF,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;QAEtB,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AACvD,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;;;AAKpC;;AAEK;IACL,IACI,QAAQ,CAAC,KAAK,EAAA;AAChB,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;;AAExB,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK;;AAG/F;;AAEK;AACL,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;;IAEvB,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAe/C,IAAA,IACI,iBAAiB,GAAA;QACnB,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAClD,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;AAEzD,QAAA,OAAO,EAAE;;AA0BX;;AAEK;AACL,IAAA,IACI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;;IAgE3C,WACiC,CAAA,QAAQ,EAC7B,OAAyB,EACzB,OAAgC,EAChC,eAAyC,EACzC,sBAAuD,EACvD,EAAqB,EACrB,6BAAiF,EACjF,YAA4B,EAC5B,QAAmB,EACnB,IAAY,EACZ,aAA8B,EAAA;QAVT,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAC7B,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB;QACtB,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAA6B,CAAA,6BAAA,GAA7B,6BAA6B;QAC7B,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAI,CAAA,IAAA,GAAJ,IAAI;QACJ,IAAa,CAAA,aAAA,GAAb,aAAa;AA/RzB;;;AAGG;QACM,IAAI,CAAA,IAAA,GAAoB,QAAQ;AAEzC;;;AAGG;QACM,IAAM,CAAA,MAAA,GAA8B,OAAO;AAEpD;;AAEG;QACM,IAAK,CAAA,KAAA,GAAqB,WAAW;AAE9C;;AAEG;QACM,IAAU,CAAA,UAAA,GAAuB,SAAS;QA6FzC,IAAU,CAAA,UAAA,GAAY,KAAK;AAGrC;;AAEK;QACI,IAAW,CAAA,WAAA,GAAW,EAAE;QAqBvB,IAAY,CAAA,YAAA,GAA4B,CAAC,EAAO,EAAE,EAAO,KAAK,EAAE,KAAK,EAAE;QAuBvE,IAAS,CAAA,SAAA,GAAY,KAAK;AAGpC;;AAEI;QACK,IAAoB,CAAA,oBAAA,GAAG,CAAC;AAEjC;;AAEI;QACK,IAAc,CAAA,cAAA,GAAuB,OAAO;AAUrD;;AAEK;AACK,QAAA,IAAA,CAAA,cAAc,GAAsB,IAAI,YAAY,EAAE;AA4BhE;;AAEK;QACL,IAAc,CAAA,cAAA,GAAwB,EAAE;AAIxC;;;AAGG;QACH,IAAe,CAAA,eAAA,GAAe,EAAgB;QAMpC,IAAK,CAAA,KAAA,GAAY,IAAI;AAErB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;AAWxC;;AAEK;AACK,QAAA,IAAA,CAAA,QAAQ,GAAa,MAAK,GAAG;AAC7B,QAAA,IAAA,CAAA,SAAS,GAAa,MAAK,GAAG;AAExC;;AAEI;QACJ,IAAO,CAAA,OAAA,GAAG,IAAI,eAAe,CAA4B,IAAI,CAAC,MAAM,CAAC;AAErE;;AAEI;QACJ,IAAK,CAAA,KAAA,GAAG,IAAI,eAAe,CAAkB,IAAI,CAAC,IAAI,CAAC;AAEvD;;AAEI;AACJ,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAE9C;;AAEI;QACJ,IAAS,CAAA,SAAA,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC,QAAQ,CAAC;AAEvD;;AAEI;QACJ,IAAU,CAAA,UAAA,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC,SAAS,CAAC;;AAgBzD;;AAEK;AACL,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,CAAC,IAAI,CAAC,MAAM;;AAGrB;;AAEK;AACL,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK;;AAGhE,IAAA,IAAI,mBAAmB,GAAA;QACrB,MAAM,OAAO,GAAG,EAAE;AAElB,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAC/B,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;;AAE7B,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACpD,YAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;;AAEvB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;;AAGpC,QAAA,OAAO,OAAO;;AAGhB;;AAEK;AACL,IAAA,IAAI,aAAa,GAAA;QACf,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAClC,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,MAAyB,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;QAG1F,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO;;IAGvC,WAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAiB,EAAA;QAC9D,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;;QAE5C,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;;QAExC,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;;QAEpC,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;;;IAIxC,kBAAkB,GAAA;QAChB,IAAI,CAAC,OAAO,CAAC;aACV,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EACvB,MAAM,CAAC,MAAM,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;;;;;QAKzD,SAAS,CAAC,CAAC,OAAqC,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EACpF,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEzB,aAAA,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;IAGjD,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,qBAAqB,EAAE;QAEnD,IAAI,CAAC,sBAAsB,EAAE;QAC7B,IAAI,CAAC,mBAAmB,EAAE;QAC1B,IAAI,CAAC,sBAAsB,EAAE;;QAG7B,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAC1B,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,eAAe,CAAC;SACpE,CAAC,CACH;;IAGH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAElB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;AAExB,QAAA,IAAI,IAAI,CAAC,GAAG,EAAE;AACZ,YAAA,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;;AAEpB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE;;;IAIlC,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,IAAI,CAAC,eAAe,EAAE;YAEtB,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;gBAC1F,IAAI,CAAC,eAAe,EAAE;AACxB,aAAC,CAAC;AAEF,YAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;;IAI1B,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;AACjB,YAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;;AAI1B,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGrB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;AAC1B,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;AAGxB,IAAA,UAAU,CAAC,KAAK,EAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACf;;AAGF,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AACzB,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACxB,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAC9B,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI;;;aAEd;AACL,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;;AAItB;;AAEK;AACK,IAAA,iBAAiB,CAAC,MAAyB,EAAA;AACnD,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,QAAA,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE;YACxB,IAAI,CAAC,KAAK,EAAE;;aACP;AACL,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;;AAG3B,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;AAGxB;;AAEK;IACK,KAAK,GAAA;AACb,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAyB,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC7E,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;QACxB,IAAI,CAAC,IAAI,EAAE;AACX,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE;AACjC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC;;AAG9C;;AAEK;AACK,IAAA,YAAY,CAAC,MAAyB,EAAA;AAC9C,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;;aAC5B;AACL,YAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;;;AAInC;;AAEK;AACK,IAAA,kBAAkB,CAAC,MAAyB,EAAA;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE;AAE1C,QAAA,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE;YAChE,QAAQ,CAAC,QAAQ,EAAE;;AAGrB,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,MAAM,CAAC;QAC9B,MAAM,CAAC,MAAM,EAAE;QACf,IAAI,CAAC,IAAI,EAAE;AACX,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE;AAEjC,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC;;AAGjC;;AAEK;AACK,IAAA,oBAAoB,CAAC,MAAyB,EAAA;AACtD,QAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;AACnB,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAClG,MAAM,CAAC,QAAQ,EAAE;;aACZ;AACL,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;YAChC,MAAM,CAAC,MAAM,EAAE;;AAGjB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,GAAsB,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;;IAGzE,eAAe,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACb,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,yBAAyB,EAAE;YAChC,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,sBAAsB,EAAE;;QAG/B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;;IAGpB,eAAe,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAC9B,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;;aAChD;AACL,YAAA,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE;;;IAI9B,aAAa,GAAA;AACrB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,EAAE;AAClD,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,EAAE;QACrD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAC7B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,cAAc;YACd,UAAU,EAAE,IAAI,CAAC,iBAAiB;AACnC,SAAA,CAAC;;IAGM,gBAAgB,GAAA;AACxB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC;;IAGpF,sBAAsB,GAAA;QAC9B,OAAO,IAAI,CAAC;AACT,aAAA,WAAW,CAAC,IAAI,CAAC,MAAM;AACvB,aAAA,QAAQ,CAAC,UAAU,CAAC,MAAM;AAC1B,aAAA,MAAM,CAAC,IAAI,CAAC,oBAAoB;AAChC,aAAA,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC;;IAG5B,oBAAoB,GAAA;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;;IAGnD,qBAAqB,GAAA;QAC7B,OAAO,IAAI,CAAC;AACT,aAAA,OAAO,CAAC,SAAS,CAAC,KAAK;AACvB,aAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa;aAC/B,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE;AACnC,aAAA,KAAK,EAAE;;IAGF,mBAAmB,GAAA;AAC3B,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACvD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAa,KAAI;YACrF,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE;gBAC1C,IAAI,CAAC,SAAS,EAAE;;AAEpB,SAAC,CAAC;;IAGM,yBAAyB,GAAA;QACjC,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,QAAoB,KAAI;AACrG,YAAA,IAAI,CAAC,eAAe,GAAG,QAAQ;AAC/B,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACzB,SAAC,CAAC;;IAGM,sBAAsB,GAAA;AAC9B;;;;AAIK;QACL,IAAI,CAAC,OAAO,CAAC;AACV,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EACvB,SAAS,CAAC,CAAC,OAAqC,KAAI;AAClD,YAAA,OAAO,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC;SACvD,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEzB,aAAA,SAAS,CAAC,CAAC,aAAgC,KAAK,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;;IAGjF,sBAAsB,GAAA;AAC9B,QAAA,IAAI,CAAC;AACF,aAAA,aAAa;AACb,aAAA,IAAI,CACH,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,EACzB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEzB,aAAA,SAAS,CAAC,CAAC,KAAoB,KAAI;AAClC,YAAA,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;AAC5B,gBAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE;gBACjC,IAAI,CAAC,IAAI,EAAE;;iBACN;AACL,gBAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;;AAEpC,SAAC,CAAC;AAEJ,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YACnE,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,CAAC,SAAS,EAAE;AAClB,SAAC,CAAC;;IAGM,sBAAsB,GAAA;AAC9B,QAAA,IAAI,CAAC;AACF,aAAA,OAAO,CAAC,IAAI,CAAC,MAAM;AACnB,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,EACzB,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAC7D,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEzB,aAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;;IAGnB,YAAY,GAAA;QACpB,QACE,IAAI,CAAC,GAAG;AACR,YAAA,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;AACH,YAAA;AACjB,gBAAA,QAAQ,EAAE;AACR,oBAAA,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc;AACvC,iBAAA;AACF,aAAA;;AAIL;;AAEK;AACK,IAAA,YAAY,CAAC,QAAQ,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACvB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;;AAGpC;;AAEK;AACK,IAAA,YAAY,CAAC,KAAK,EAAA;AAC1B,QAAA,MAAM,YAAY,GAAG,KAAK,IAAI,IAAI;QAClC,IAAI,SAAS,GAAG,KAAK;AAErB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,SAAS,GAAG,KAAK,IAAI,EAAE;;QAGzB,MAAM,OAAO,GAAY,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;QAEjD,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,IAAI,CAAC,YAAY,EAAE;AAC9C,YAAA,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC;;AAE9E,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,OAAO,EAAE;AAC7B,YAAA,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC;;AAG3E,QAAA,MAAM,yBAAyB,GAAG,IAAI,CAAC,cAAc;AACrD,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AAExB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,SAAS,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;;aAClD;AACL,YAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;;;QAI7B;AACG,aAAA,MAAM,CAAC,CAAC,MAAyB,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC;aAC3E,OAAO,CAAC,CAAC,MAAyB,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;AAE5D,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;AAGxB;;AAEK;AACK,IAAA,WAAW,CAAC,KAAK,EAAA;AACzB,QAAA,IAAI,KAAK,IAAI,IAAI,EAAE;YACjB;;QAGF,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAyB,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAE9G,IAAI,aAAa,EAAE;YACjB,aAAa,CAAC,MAAM,EAAE;AACtB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC;;;IAIjC,UAAU,GAAA;QAClB,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC;;AAGlD;;;AAGG;IACH,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,SAAS,EAAE;;;AAIV,IAAA,wBAAwB,CAAC,MAAa,EAAA;QAC9C,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,KAAK,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAc,CAAC;;IAGzG,cAAc,GAAA;AACtB,QAAA,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;;AAGhD,IAAA,IACI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM;;AAE7B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAE9B,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;;AAE/B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAE9B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAE9B,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAElC,IAAA,IACI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,MAAM;;AAE/B,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAElC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAElC,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;;AAEjC,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,OAAO;;AAEhC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAElC,IAAA,IACI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,WAAW;;AAEnC,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,OAAO;;AAE/B,IAAA,IACI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,YAAY;;AA9wBzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,kBAwRlB,WAAW,EAAA,EAAA,EAAA,KAAA,EAAAjC,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAkC,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,+BAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,+BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAxRV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAZf,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,0BAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AAChD,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;AACD,YAAA,EAAE,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,iBAAiB,EAAE;AACtE,YAAA,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,iBAAiB,EAAE;AAC/D,YAAA,EAAE,OAAO,EAAE,wBAAwB,EAAE,UAAU,EAAE,qCAAqC,EAAE;SAC3F,EA4MW,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,sBAAsB,6DALnB,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAUvB,iBAAiB,EAEO,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAU,kDC1tB/C,soCAwCA,EAAA,MAAA,EAAA,CAAA,+pCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAxC,iBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAyC,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDkea,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAjB7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAGJ,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,uBAAuB,CAAC;AAChD,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;AACD,wBAAA,EAAE,OAAO,EAAE,yBAAyB,EAAE,WAAW,mBAAmB,EAAE;AACtE,wBAAA,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,mBAAmB,EAAE;AAC/D,wBAAA,EAAE,OAAO,EAAE,wBAAwB,EAAE,UAAU,EAAE,qCAAqC,EAAE;AAC3F,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,soCAAA,EAAA,MAAA,EAAA,CAAA,+pCAAA,CAAA,EAAA;;0BA0RhB,MAAM;2BAAC,WAAW;0VAjRZ,IAAI,EAAA,CAAA;sBAAZ;gBAMQ,MAAM,EAAA,CAAA;sBAAd;gBAKQ,KAAK,EAAA,CAAA;sBAAb;gBAKQ,UAAU,EAAA,CAAA;sBAAlB;gBAKQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAKQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAMG,YAAY,EAAA,CAAA;sBADf;gBAcG,OAAO,EAAA,CAAA;sBAFV;;sBACA,WAAW;uBAAC,0BAA0B;gBAgBnC,MAAM,EAAA,CAAA;sBAFT;;sBACA,WAAW;uBAAC,yBAAyB;gBAgBlC,IAAI,EAAA,CAAA;sBAFP;;sBACA,WAAW;uBAAC,uBAAuB;gBAehC,QAAQ,EAAA,CAAA;sBADX;gBAeG,SAAS,EAAA,CAAA;sBAFZ;;sBACA,WAAW;uBAAC,kBAAkB;gBAatB,WAAW,EAAA,CAAA;sBAAnB;gBAOG,WAAW,EAAA,CAAA;sBADd;gBAqBG,QAAQ,EAAA,CAAA;sBADX;gBAYG,QAAQ,EAAA,CAAA;sBADX;gBAaQ,oBAAoB,EAAA,CAAA;sBAA5B;gBAKQ,cAAc,EAAA,CAAA;sBAAtB;gBAGG,iBAAiB,EAAA,CAAA;sBADpB,WAAW;uBAAC,OAAO;gBAWV,cAAc,EAAA,CAAA;sBAAvB;gBAM0D,OAAO,EAAA,CAAA;sBAAjE,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;gBAKnB,WAAW,EAAA,CAAA;sBAAhD,YAAY;uBAAC,sBAAsB;gBAKN,MAAM,EAAA,CAAA;sBAAnC,SAAS;uBAAC,iBAAiB;gBAEqB,MAAM,EAAA,CAAA;sBAAtD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,cAAc,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;gBAM3C,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,YAAY;gBAggBrB,IAAI,EAAA,CAAA;sBADP,WAAW;uBAAC,iBAAiB;gBAK1B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAK3B,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,mBAAmB;gBAK5B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAK3B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAK3B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAK/B,IAAI,EAAA,CAAA;sBADP,WAAW;uBAAC,mBAAmB;gBAK5B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAK/B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAK/B,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,qBAAqB;gBAK9B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,oBAAoB;gBAK7B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAK/B,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,uBAAuB;gBAKhC,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,mBAAmB;gBAK5B,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,wBAAwB;;;AEtxCvC;;;;AAIG;AAkBH;;;;;;;;;;;AAWI;MAWS,sBAAsB,CAAA;AAVnC,IAAA,WAAA,GAAA;AAYY,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;QAe9B,IAAS,CAAA,SAAA,GAAY,KAAK;AA2CrC;AAtDC,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;;IAEvB,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;AAE7C,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,0BAA0B,EAAE;;;AAMrC,IAAA,IACI,iBAAiB,GAAA;QACnB,OAAO,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI;;IAKlC,kBAAkB,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACvB,IAAI,CAAC,+BAA+B,EAAE;;QAGxC,IAAI,CAAC,OAAO,CAAC;AACV,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC7B,SAAS,CAAC,MAAM,IAAI,CAAC,+BAA+B,EAAE,CAAC;;IAG5D,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;;AAG1B;;AAEG;IACO,0BAA0B,GAAA;AAClC,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAyB,KAAK,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;;AAGpG;;;;AAIG;IACO,+BAA+B,GAAA;;AAEvC,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AACnB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC7B,SAAS,CAAC,MAAM,IAAI,CAAC,0BAA0B,EAAE,CAAC;;8GA1D5C,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAyBhB,iBAAiB,EA/BtB,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;AAGX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2NAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGU,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAVlC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAEV,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACrC,QAAA,EAAA;;;AAGX,EAAA,CAAA,EAAA,UAAA,EACa,KAAK,EAAA,MAAA,EAAA,CAAA,2NAAA,CAAA,EAAA;8BAMV,KAAK,EAAA,CAAA;sBAAb;gBAGG,QAAQ,EAAA,CAAA;sBADX;gBAeG,iBAAiB,EAAA,CAAA;sBADpB,WAAW;uBAAC,eAAe;gBAK+B,OAAO,EAAA,CAAA;sBAAjE,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;;;AC9D3D,MAAM,yBAAyB,GAAG;IAChC,qBAAqB;IACrB,iBAAiB;IACjB,sBAAsB;CACvB;MAcY,cAAc,CAAA;8GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,iBAjBzB,qBAAqB;YACrB,iBAAiB;AACjB,YAAA,sBAAsB,aAQpB,YAAY;AACZ,YAAA,gBAAgB,aAXlB,qBAAqB;YACrB,iBAAiB;YACjB,sBAAsB,CAAA,EAAA,CAAA,CAAA;AAeX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAPvB,YAAY;YACZ,gBAAgB,CAAA,EAAA,CAAA,CAAA;;2FAMP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAZ1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;AACZ,wBAAA,GAAG,yBAAyB;AAC7B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,gBAAgB;AACjB,qBAAA;AACD,oBAAA,OAAO,EAAE;AACP,wBAAA,GAAG,yBAAyB;AAC7B,qBAAA;AACF,iBAAA;;;ACbD,MAAMC,sBAAoB,GAAG,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;MAO3D,cAAc,CAAA;8GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAd,cAAc,EAAA,YAAA,EAAA,CAPG,iBAAiB,EAAE,sBAAsB,aAG3D,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,aAHxF,iBAAiB,EAAE,sBAAsB,EAIlC,cAAc,CAAA,EAAA,CAAA,CAAA;AAGtC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,EAJf,OAAA,EAAA,CAAA,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EACjF,cAAc,CAAA,EAAA,CAAA,CAAA;;2FAGtC,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,CAAC;AACrH,oBAAA,OAAO,EAAE,CAAC,GAAGA,sBAAoB,EAAE,cAAc,CAAC;AAClD,oBAAA,YAAY,EAAE,CAAC,GAAGA,sBAAoB,CAAC;AACxC,iBAAA;;;MCXY,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCCY,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACLD;;;;AAIG;AA2BH,SAAS,+BAA+B,GAAA;AACtC,IAAA,MAAM,IAAI,KAAK,CAAC,CAAA,2CAAA,CAA6C,CAAC;AAChE;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDI;MAQS,oBAAoB,CAAA;AAgB/B,IAAA,WAAA,CACY,EAAqB,EACrB,IAAY,EACZ,UAAsB,EACtB,QAAmB,EAAA;QAHnB,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAI,CAAA,IAAA,GAAJ,IAAI;QACJ,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAQ,CAAA,QAAA,GAAR,QAAQ;AAlBD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;AAEvC,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,aAAa,CAAqB,CAAC,CAAC;QACtE,IAAc,CAAA,cAAA,GAAyB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/G,IAAc,CAAA,cAAA,GAAyB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;;IAkB/G,qBAAqB,GAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,+BAA+B,EAAE;;;IAIrC,kBAAkB,GAAA;QAChB,IAAI,CAAC,iCAAiC,EAAE;QACxC,IAAI,CAAC,sBAAsB,EAAE;;IAG/B,eAAe,GAAA;;QAEb,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,UAAU,CAAC,MAAK;AAChD,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,eAAe,CAAC;SACvE,CAAC,CAAC;;IAGL,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;;IAGtB,gBAAgB,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC,cAAc,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;;IAG3E,gBAAgB,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC,cAAc,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;;IAGjE,iCAAiC,GAAA;AACzC,QAAA,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,WAAW;AAE5E,QAAA,aAAa,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC;AAC5D,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,EACvG,oBAAoB,CAAC,CAAC,QAAQ,EAAE,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,EAC9E,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAI;AAC1B,YAAA,MAAM,gBAAgB,GAAG,CAAC,sBAAsB,IAAI,CAAA,CAAE,CAAC;YACvD,IAAI,CAAC,SAAS,EAAE;AACd,gBAAA,gBAAgB,CAAC,IAAI,CAAC,6BAA6B,CAAC;;YAEtD,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC;SACnD,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEzB,aAAA,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC;;IAG5B,sBAAsB,GAAA;AAC9B,QAAA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;AAC3C,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC7B,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;;IAGlC,eAAe,CAAC,KAAyB,EAAE,KAAyB,EAAA;AAC5E,QAAA,MAAM,OAAO,GAAG;YACd,qBAAqB;AACrB,YAAA,CAAA,cAAA,EAAiB,KAAK,CAAA,CAAA,EAAI,KAAK,CAAC,IAAI,CAAE,CAAA;SACvC;AAED,QAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;AAClB,YAAA,OAAO,CAAC,IAAI,CAAC,CAAA,4BAAA,CAA8B,CAAC;;AACvC,aAAA,IAAI,KAAK,CAAC,OAAO,EAAE;YACxB,OAAO,CAAC,IAAI,CAAC,CAAA,oBAAA,EAAuB,KAAK,CAAC,MAAM,CAAY,UAAA,CAAA,CAAC;;aACxD;YACL,OAAO,CAAC,IAAI,CAAC,CAAA,oBAAA,EAAuB,KAAK,CAAC,MAAM,CAAE,CAAA,CAAC;;AAGrD,QAAA,OAAO,OAAO;;IAGN,oBAAoB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,iBAAiB,IAAI,IAAI,wBAAwB,EAAE;;IAGvD,aAAa,CAAC,QAA4B,EAAE,KAAyB,EAAA;AAC7E,QAAA,OAAO,QAAQ,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;AAChC,YAAA,QAAQ,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ;AACpC,YAAA,QAAQ,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;AAClC,YAAA,QAAQ,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;AACtC,YAAA,QAAQ,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;;8GAzG1B,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,eAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAWjB,kBAAkB,EAClB,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,wBAAwB,4DAJrB,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EACjB,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtGpC,4eAaA,EAAA,MAAA,EAAA,CAAA,6QAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAzH,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDgFa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAGR,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,4eAAA,EAAA,MAAA,EAAA,CAAA,6QAAA,CAAA,EAAA;4JAUwC,MAAM,EAAA,CAAA;sBAAhE,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;gBACE,MAAM,EAAA,CAAA;sBAAhE,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;gBAEJ,WAAW,EAAA,CAAA;sBAA/D,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,kBAAkB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBACQ,iBAAiB,EAAA,CAAA;sBAA3E,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,wBAAwB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBAEnC,gBAAgB,EAAA,CAAA;sBAArC,WAAW;uBAAC,OAAO;;;AE3GtB;;;;AAIG;AAiEH;;;;;;;AAOG;MAkBU,iCAAiC,CAAA;AAmC5C;;AAEK;AACL,IAAA,IACI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS;;IAE7C,IAAI,YAAY,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;;AAI5B;;AAEG;AACH,IAAA,IAEI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,UAAU,KAAK,SAAS;;IAEtC,IAAI,OAAO,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;;;AAK/B;;AAEG;AACH,IAAA,IAEI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;;IAErC,IAAI,MAAM,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,UAAU,GAAG,QAAQ;;;AAK9B;;AAEG;AACH,IAAA,IAEI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,UAAU,KAAK,MAAM;;IAEnC,IAAI,IAAI,CAAC,KAAc,EAAA;AACrB,QAAA,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,UAAU,GAAG,MAAM;;;AAK5B;;AAEG;AACH,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS;;IAEzB,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAK/C;;AAEG;AACH,IAAA,IAEI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU;;IAExB,IAAI,SAAS,CAAC,KAAc,EAAA;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAUhD;;;AAGG;AACH,IAAA,IACI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY;;IAE1B,IAAI,WAAW,CAAC,EAA2B,EAAA;AACzC,QAAA,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE;YAC5B;;AAGF,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;QAEtB,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AACvD,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;;;AAKpC;;AAEK;IACL,IACI,QAAQ,CAAC,KAAK,EAAA;AAChB,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;;AAExB,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK;;AAG/F;;AAEK;AACL,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;;IAEvB,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;QAE7C,IAAI,CAAC,sBAAsB,EAAE;QAC7B,IAAI,CAAC,uBAAuB,EAAE;;AAehC;;;;;;;;;AASG;IACH,IACI,uBAAuB,CAAC,KAAc,EAAA;AACxC,QAAA,IAAI,CAAC,wBAAwB,GAAG,qBAAqB,CAAC,KAAK,CAAC;QAC5D,IAAI,CAAC,sBAAsB,EAAE;QAC7B,IAAI,CAAC,uBAAuB,EAAE;QAE9B,IAAI,CAAC,KAAK,EAAE;YACV,IAAI,CAAC,sBAAsB,EAAE;;;AAGjC,IAAA,IAAI,uBAAuB,GAAA;QACzB,OAAO,IAAI,CAAC,wBAAwB;;AAItC,IAAA,IACI,iBAAiB,GAAA;QACnB,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAClD,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;AAEzD,QAAA,OAAO,EAAE;;AAgCX;;AAEK;AACL,IAAA,IACI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;;AAG3C,IAAA,IAAI,4BAA4B,GAAA;QAC9B,OAAO,IAAI,CAAC,uBAAuB;;AAGrC,IAAA,IAAI,+BAA+B,GAAA;AACjC,QAAA,OAAO,IAAI,CAAC,4BAA4B,IAAI,IAAI,CAAC,MAAM;;IAoEzD,WACiC,CAAA,QAAQ,EAC7B,OAAyB,EACzB,OAAgC,EAChC,eAAyC,EACzC,sBAAuD,EACvD,EAAqB,EACrB,6BAAiF,EACjF,YAA4B,EAC5B,QAAmB,EACnB,IAAY,EACZ,aAA8B,EAC9B,wCAAuG,EAAA;QAXlF,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAC7B,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB;QACtB,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAA6B,CAAA,6BAAA,GAA7B,6BAA6B;QAC7B,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAI,CAAA,IAAA,GAAJ,IAAI;QACJ,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAwC,CAAA,wCAAA,GAAxC,wCAAwC;AA9UpD;;;AAGG;QACM,IAAI,CAAA,IAAA,GAAoB,QAAQ;AAEzC;;;AAGG;QACM,IAAM,CAAA,MAAA,GAA8B,OAAO;AAEpD;;AAEG;QACM,IAAK,CAAA,KAAA,GAAqB,WAAW;AAE9C;;AAEG;QACM,IAAU,CAAA,UAAA,GAAuB,SAAS;QA6FzC,IAAU,CAAA,UAAA,GAAY,KAAK;AAGrC;;AAEK;QACI,IAAW,CAAA,WAAA,GAAW,EAAE;QAqBvB,IAAY,CAAA,YAAA,GAA4B,CAAC,EAAO,EAAE,EAAO,KAAK,EAAE,KAAK,EAAE;QA0BvE,IAAS,CAAA,SAAA,GAAY,KAAK;AAGpC;;AAEI;QACK,IAAoB,CAAA,oBAAA,GAAG,CAAC;AAEjC;;AAEI;QACK,IAAc,CAAA,cAAA,GAAuB,OAAO;QAyB3C,IAAwB,CAAA,wBAAA,GAAY,KAAK;AAUnD;;AAEK;AACK,QAAA,IAAA,CAAA,cAAc,GAAsB,IAAI,YAAY,EAAE;AACtD,QAAA,IAAA,CAAA,UAAU,GAAuB,IAAI,YAAY,EAAE;AACnD,QAAA,IAAA,CAAA,WAAW,GAAuB,IAAI,YAAY,EAAE;AACpD,QAAA,IAAA,CAAA,8BAA8B,GAAyB,IAAI,YAAY,EAAE;AAuCnF;;AAEK;QACL,IAAc,CAAA,cAAA,GAAwB,EAAE;AAExC,QAAA,IAAA,CAAA,iBAAiB,GAAuE,IAAI,eAAe,CACzG,SAAS,CACV;AAED;;;AAGG;QACH,IAAe,CAAA,eAAA,GAAe,EAAgB;QAMpC,IAAK,CAAA,KAAA,GAAY,IAAI;AAErB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;AAaxC;;AAEK;AACK,QAAA,IAAA,CAAA,QAAQ,GAAa,MAAK,GAAG;AAC7B,QAAA,IAAA,CAAA,SAAS,GAAa,MAAK,GAAG;AAExC;;AAEI;QACJ,IAAO,CAAA,OAAA,GAAG,IAAI,eAAe,CAA4B,IAAI,CAAC,MAAM,CAAC;AAErE;;AAEI;QACJ,IAAK,CAAA,KAAA,GAAG,IAAI,eAAe,CAAkB,IAAI,CAAC,IAAI,CAAC;AAEvD;;AAEI;AACJ,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAE9C;;AAEI;QACJ,IAAS,CAAA,SAAA,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC,QAAQ,CAAC;AAEvD;;AAEI;QACJ,IAAU,CAAA,UAAA,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC,SAAS,CAAC;QAkCzD,IAAoB,CAAA,oBAAA,GAAuB,SAAS;;AAjBpD;;AAEK;AACL,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,CAAC,IAAI,CAAC,MAAM;;AAGrB;;AAEK;AACL,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,+BAA+B,EAAE;YACxC,OAAO,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK;;QAElF,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK;;AAKhE,IAAA,IAAI,mBAAmB,GAAA;QACrB,MAAM,OAAO,GAAG,EAAE;AAElB,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAC/B,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;;AAE7B,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACpD,YAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;;AAEvB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;;AAGpC,QAAA,OAAO,OAAO;;AAGhB;;AAEK;AACL,IAAA,IAAI,aAAa,GAAA;QACf,IAAI,IAAI,CAAC,+BAA+B,IAAI,IAAI,CAAC,QAAQ,EAAE;AACzD,YAAA,OAAO,EAAE;;QAGX,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAClC,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,MAAyB,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG1F,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;;IAGtD,WAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAiB,EAAA;QAC9D,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;;QAE5C,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;;QAExC,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;;QAEpC,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;;;IAIxC,kBAAkB,GAAA;QAChB,IAAI,CAAC,OAAO,CAAC;aACV,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EACvB,MAAM,CAAC,MAAM,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;;;;;QAKzD,SAAS,CAAC,CAAC,OAAqC,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EACpF,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEzB,aAAA,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;IAGjD,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,qBAAqB,EAAE;QAEnD,IAAI,CAAC,sBAAsB,EAAE;QAC7B,IAAI,CAAC,mBAAmB,EAAE;QAC1B,IAAI,CAAC,sBAAsB,EAAE;;QAG7B,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAC1B,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,eAAe,CAAC;SACpE,CAAC,CACH;;IAGH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAElB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;AAExB,QAAA,IAAI,IAAI,CAAC,GAAG,EAAE;AACZ,YAAA,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;;AAEpB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE;;;AAIlC,IAAA,yBAAyB,CAAC,KAAY,EAAA;QACpC,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAE,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC;;IAGpF,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,SAAS;YAE1C,IAAI,CAAC,eAAe,EAAE;AAEtB,YAAA,IAAI,CAAC;iBACF,IAAI,CACH,SAAS,CAAC,CAAC,gBAAgB,KAAK,gBAAgB,CAAC,cAAc,IAAI,KAAK,CAAC,EACzE,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;iBAEzB,SAAS,CAAC,MAAK;AACd,gBAAA,IAAI,IAAI,CAAC,+BAA+B,EAAE;AACxC,oBAAA,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC,KAAK,EAAE;;gBAErD,IAAI,CAAC,eAAe,EAAE;AACxB,aAAC,CAAC;AAEJ,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AAEtB,YAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;;IAI1B,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;AACjB,YAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;AACtB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;YAEvB,IAAI,CAAC,sBAAsB,EAAE;;;AAIjC,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGrB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;AAC1B,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;AAGxB,IAAA,UAAU,CAAC,KAAK,EAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACf;;AAGF,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AACzB,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACxB,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAC9B,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI;;;aAEd;AACL,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;;AAItB;;AAEK;AACK,IAAA,iBAAiB,CAAC,MAAyB,EAAA;AACnD,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,QAAA,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE;YACxB,IAAI,CAAC,KAAK,EAAE;;aACP;AACL,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;;AAG3B,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;AAGxB;;AAEK;IACK,KAAK,GAAA;AACb,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAyB,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC7E,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;QACxB,IAAI,CAAC,IAAI,EAAE;QACX,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC;;AAG9C;;AAEK;AACK,IAAA,YAAY,CAAC,MAAyB,EAAA;AAC9C,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;;aAC5B;AACL,YAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;;;AAInC;;AAEK;AACK,IAAA,kBAAkB,CAAC,MAAyB,EAAA;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE;AAE1C,QAAA,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE;YAChE,QAAQ,CAAC,QAAQ,EAAE;;AAGrB,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,MAAM,CAAC;QAC9B,MAAM,CAAC,MAAM,EAAE;QACf,IAAI,CAAC,IAAI,EAAE;QACX,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC;;AAGjC;;AAEK;AACK,IAAA,oBAAoB,CAAC,MAAyB,EAAA;AACtD,QAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;AACnB,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAClG,MAAM,CAAC,QAAQ,EAAE;;aACZ;AACL,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;YAChC,MAAM,CAAC,MAAM,EAAE;;AAGjB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,GAAsB,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;;IAGzE,eAAe,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACb,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,yBAAyB,EAAE;YAChC,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,sBAAsB,EAAE;YAC7B,IAAI,CAAC,oCAAoC,EAAE;;QAG7C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;;IAGpB,eAAe,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AAChE,YAAA,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;;aACxD;AACL,YAAA,IAAI,CAAC,iBAAiB,EAAE,kBAAkB,EAAE;;;IAItC,aAAa,GAAA;AACrB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,EAAE;QAClD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC1D,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AAC7B,YAAA,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK;YAC9C,cAAc;YACd,UAAU,EAAE,IAAI,CAAC,iBAAiB;AACnC,SAAA,CAAC;;IAGM,gBAAgB,GAAA;AACxB,QAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC;AACpC,aAAA,MAAM,CAAC,IAAI,CAAC,OAAO;AACnB,aAAA,aAAa,CAAC,CAAC,MAAM,KAAI;AACxB,YAAA,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;AACpC,SAAC,CAAC;AAEJ,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AACzB,aAAA,MAAM,CAAC,IAAI,CAAC,OAAO;aACnB,aAAa,CAAC,GAAG;AACjB,aAAA,aAAa,CAAC,CAAC,MAAM,KAAI;AACxB,YAAA,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;AACpC,SAAC,CAAC;QAEJ,IAAI,CAAC,uBAAuB,EAAE;;IAGtB,uBAAuB,GAAA;QAC/B,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;AACzC,QAAA,IAAI,IAAI,CAAC,4BAA4B,EAAE;AACrC,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,0BAA0B;;aACnD;AACL,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,eAAe;;QAE/C,IAAI,CAAC,eAAe,EAAE;;IAGd,sBAAsB,GAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE,aAAa,EAAE;YAChD,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa;AACtE,YAAA,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,EAAE,CAAC;;;IAItC,sBAAsB,GAAA;AAC9B,QAAA,MAAM,OAAO,GAAqD,IAAI,CAAC;cACnE,IAAI,CAAC;AACP,cAAE,IAAI,CAAC,MAAM;QACf,OAAO,IAAI,CAAC;aACT,WAAW,CAAC,OAAO;AACnB,aAAA,QAAQ,CAAC,UAAU,CAAC,MAAM;AAC1B,aAAA,MAAM,CAAC,IAAI,CAAC,oBAAoB;AAChC,aAAA,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC;;IAG5B,sBAAsB,GAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC1D,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAC7D,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,gBAAA,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE;;;;IAKrB,oBAAoB,GAAA;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;;IAGnD,qBAAqB,GAAA;QAC7B,OAAO,IAAI,CAAC;AACT,aAAA,OAAO,CAAC,SAAS,CAAC,KAAK;AACvB,aAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa;aAC/B,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE;AACnC,aAAA,KAAK,EAAE;;IAGF,mBAAmB,GAAA;AAC3B,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACvD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAa,KAAI;YACrF,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE;gBAC1C,IAAI,CAAC,SAAS,EAAE;;AAEpB,SAAC,CAAC;;IAGM,yBAAyB,GAAA;AACjC,QAAA,IAAI,CAAC;aACF,IAAI,CACH,SAAS,CAAC,CAAC,gBAAgB,KAAK,gBAAgB,CAAC,cAAc,IAAI,KAAK,CAAC,EACzE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEzB,aAAA,SAAS,CAAC,CAAC,QAAoB,KAAI;AAClC,YAAA,IAAI,CAAC,eAAe,GAAG,QAAQ;AAC/B,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACzB,SAAC,CAAC;;IAGI,sBAAsB,GAAA;AAC9B;;;;AAIK;QACL,IAAI,CAAC,OAAO,CAAC;AACV,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EACvB,SAAS,CAAC,CAAC,OAAqC,KAAI;AAClD,YAAA,OAAO,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC;SACvD,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEzB,aAAA,SAAS,CAAC,CAAC,aAAgC,KAAK,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;;IAGjF,sBAAsB,GAAA;AAC9B,QAAA,IAAI,CAAC;AACF,aAAA,aAAa;AACb,aAAA,IAAI,CACH,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,EACzB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEzB,aAAA,SAAS,CAAC,CAAC,KAAoB,KAAI;AAClC,YAAA,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;gBAC5B,IAAI,CAAC,IAAI,EAAE;gBACX,IAAI,CAAC,WAAW,EAAE;;iBACb,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,IAAI,IAAI,CAAC,+BAA+B,EAAE;gBAC1E,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU;gBACpD,IAAI,UAAU,EAAE;AACd,oBAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;;;iBAE1B;AACL,gBAAA,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,KAAK,CAAC;;AAE3C,SAAC,CAAC;AAEJ,QAAA,KAAK,CACH,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,EACrF,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,+BAA+B,CAAC,CAAC;AAE9F,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC7B,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,CAAC,SAAS,EAAE;AAClB,SAAC,CAAC;;IAGI,oCAAoC,GAAA;AAC5C,QAAA,IAAI,CAAC;aACF,IAAI,CACH,SAAS,CAAC,uBAAuB,CAAC,EAClC,MAAM,CAAC,MAAM,IAAI,CAAC,+BAA+B,CAAC,EAClD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAEzB,SAAS,CAAC,MAAK;YACd,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE;AAC1D,gBAAA,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,EAAE;;AAE/C,SAAC,CAAC;;IAGI,sBAAsB,GAAA;QAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAC9D,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,EACzB,SAAS,CAAC,KAAK,CAAC,EAChB,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAC9D;QAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,IAAI,CACrF,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,EACzB,SAAS,CAAC,KAAK,CAAC,EAChB,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAC9D;AAED,QAAA,aAAa,CAAC,CAAC,YAAY,EAAE,iBAAiB,CAAC;aAC5C,IAAI,CACH,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,gBAAgB,CAAC,KAAK,WAAW,IAAI,gBAAgB,CAAC,EACzE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEzB,aAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;;IAGnB,YAAY,GAAA;QACpB,QACE,IAAI,CAAC,GAAG;AACR,YAAA,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;AACH,YAAA;AACjB,gBAAA,QAAQ,EAAE;AACR,oBAAA,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc;AACvC,iBAAA;AACF,aAAA;;IAIK,WAAW,GAAA;AACnB;;;;;AAKG;QACH,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE;AACrC,SAAC,CAAC;;AAGJ;;AAEK;AACK,IAAA,YAAY,CAAC,QAAQ,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACvB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;;AAGpC;;AAEK;AACK,IAAA,YAAY,CAAC,KAAK,EAAA;AAC1B,QAAA,MAAM,YAAY,GAAG,KAAK,IAAI,IAAI;QAClC,IAAI,SAAS,GAAG,KAAK;AAErB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,SAAS,GAAG,KAAK,IAAI,EAAE;;QAGzB,MAAM,OAAO,GAAY,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;QAEjD,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,IAAI,CAAC,YAAY,EAAE;AAC9C,YAAA,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC;;AAE9E,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,OAAO,EAAE;AAC7B,YAAA,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC;;AAG3E,QAAA,MAAM,yBAAyB,GAAG,IAAI,CAAC,cAAc;AACrD,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AAExB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,SAAS,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;;aAClD;AACL,YAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;;;QAI7B;AACG,aAAA,MAAM,CAAC,CAAC,MAAyB,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC;aAC3E,OAAO,CAAC,CAAC,MAAyB,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;AAE5D,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;AAGxB;;AAEK;AACK,IAAA,WAAW,CAAC,KAAK,EAAA;AACzB,QAAA,IAAI,KAAK,IAAI,IAAI,EAAE;YACjB;;QAGF,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAyB,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAE9G,IAAI,aAAa,EAAE;YACjB,aAAa,CAAC,MAAM,EAAE;AACtB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC;;;IAIjC,UAAU,GAAA;QAClB,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC;;AAGlD;;;AAGG;IACH,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,SAAS,EAAE;;;AAIV,IAAA,wBAAwB,CAAC,MAAa,EAAA;QAC9C,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,KAAK,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAc,CAAC;;IAGzG,cAAc,GAAA;AACtB,QAAA,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;;AAGtC,IAAA,cAAc,CAAC,MAAyB,EAAA;QAChD,OAAO,MAAM,CAAC,MAAM;;AAGtB,IAAA,IACI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM;;AAE7B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAE9B,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;;AAE/B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAE9B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAE9B,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAElC,IAAA,IACI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,MAAM;;AAE/B,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAElC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAElC,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;;AAEjC,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,OAAO;;AAEhC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAElC,IAAA,IACI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,WAAW;;AAEnC,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,OAAO;;AAE/B,IAAA,IACI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,YAAY;;AA77BzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iCAAiC,kBAsUlC,WAAW,EAAA,EAAA,EAAA,KAAA,EAAA+E,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAkC,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,+BAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,+BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,0CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAtUV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iCAAiC,EAZ/B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,8BAAA,EAAA,gCAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,0BAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iCAAiC,CAAC;AAChE,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;AACD,YAAA,EAAE,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,iCAAiC,EAAE;AACtF,YAAA,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,iCAAiC,EAAE;AAC/E,YAAA,EAAE,OAAO,EAAE,wBAAwB,EAAE,UAAU,EAAE,qCAAqC,EAAE;SAC3F,EA2OW,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,sBAAsB,EALnB,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,iBAAiB,EAUvB,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,iBAAiB,oHAEO,UAAU,EAAA,EAAA,EAAA,YAAA,EAAA,0BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACE,UAAU,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9U3D,2yDA4DA,EAAA,MAAA,EAAA,CAAA,6uCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlG,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAmG,iBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDkCa,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAjB7C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,EAGtB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,uCAAuC,CAAC;AAChE,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;AACD,wBAAA,EAAE,OAAO,EAAE,yBAAyB,EAAE,WAAW,mCAAmC,EAAE;AACtF,wBAAA,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,mCAAmC,EAAE;AAC/E,wBAAA,EAAE,OAAO,EAAE,wBAAwB,EAAE,UAAU,EAAE,qCAAqC,EAAE;AAC3F,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,2yDAAA,EAAA,MAAA,EAAA,CAAA,6uCAAA,CAAA,EAAA;;0BAwUhB,MAAM;2BAAC,WAAW;gZA/TZ,IAAI,EAAA,CAAA;sBAAZ;gBAMQ,MAAM,EAAA,CAAA;sBAAd;gBAKQ,KAAK,EAAA,CAAA;sBAAb;gBAKQ,UAAU,EAAA,CAAA;sBAAlB;gBAKQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAKQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAMG,YAAY,EAAA,CAAA;sBADf;gBAcG,OAAO,EAAA,CAAA;sBAFV;;sBACA,WAAW;uBAAC,0BAA0B;gBAgBnC,MAAM,EAAA,CAAA;sBAFT;;sBACA,WAAW;uBAAC,yBAAyB;gBAgBlC,IAAI,EAAA,CAAA;sBAFP;;sBACA,WAAW;uBAAC,uBAAuB;gBAehC,QAAQ,EAAA,CAAA;sBADX;gBAeG,SAAS,EAAA,CAAA;sBAFZ;;sBACA,WAAW;uBAAC,kBAAkB;gBAatB,WAAW,EAAA,CAAA;sBAAnB;gBAOG,WAAW,EAAA,CAAA;sBADd;gBAqBG,QAAQ,EAAA,CAAA;sBADX;gBAYG,QAAQ,EAAA,CAAA;sBADX;gBAgBQ,oBAAoB,EAAA,CAAA;sBAA5B;gBAKQ,cAAc,EAAA,CAAA;sBAAtB;gBAaG,uBAAuB,EAAA,CAAA;sBAD1B;gBAgBG,iBAAiB,EAAA,CAAA;sBADpB,WAAW;uBAAC,OAAO;gBAWV,cAAc,EAAA,CAAA;sBAAvB;gBACS,UAAU,EAAA,CAAA;sBAAnB;gBACS,WAAW,EAAA,CAAA;sBAApB;gBACS,8BAA8B,EAAA,CAAA;sBAAvC;gBAM0D,OAAO,EAAA,CAAA;sBAAjE,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;gBAKnB,WAAW,EAAA,CAAA;sBAAhD,YAAY;uBAAC,sBAAsB;gBAKN,MAAM,EAAA,CAAA;sBAAnC,SAAS;uBAAC,iBAAiB;gBAEqB,MAAM,EAAA,CAAA;sBAAtD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,cAAc,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;gBACc,wBAAwB,EAAA,CAAA;sBAApF,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,0BAA0B,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;gBAQvD,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,YAAY;gBA6oBrB,IAAI,EAAA,CAAA;sBADP,WAAW;uBAAC,iBAAiB;gBAK1B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAK3B,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,mBAAmB;gBAK5B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAK3B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAK3B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAK/B,IAAI,EAAA,CAAA;sBADP,WAAW;uBAAC,mBAAmB;gBAK5B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAK/B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAK/B,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,qBAAqB;gBAK9B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,oBAAoB;gBAK7B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAK/B,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,uBAAuB;gBAKhC,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,mBAAmB;gBAK5B,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,wBAAwB;;;AEzhCvC;;;;AAIG;AASH,MAAMnG,YAAU,GAAG;IACjB,oBAAoB;IACpB,iBAAiB;IACjB,iBAAiB;CAClB;MAOY,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,iBAV5B,oBAAoB;YACpB,iBAAiB;YACjB,iBAAiB,CAAA,EAAA,OAAA,EAAA,CAIN,YAAY,CAAA,EAAA,OAAA,EAAA,CANvB,oBAAoB;YACpB,iBAAiB;YACjB,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAQN,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAJjB,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAIZ,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAE,YAAY,CAAE;AACzB,oBAAA,YAAY,EAAE,CAAE,GAAGA,YAAU,CAAE;AAC/B,oBAAA,OAAO,EAAE,CAAE,GAAGA,YAAU,CAAE;AAC3B,iBAAA;;;ACVD,MAAM,oBAAoB,GAAG,CAAC,iCAAiC,CAAC;MAiBnD,8BAA8B,CAAA;8GAA9B,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAA9B,8BAA8B,EAAA,YAAA,EAAA,CAjBb,iCAAiC,CAAA,EAAA,OAAA,EAAA,CAI3D,cAAc;YACd,eAAe;YACf,cAAc;YACd,aAAa;YACb,YAAY;YACZ,YAAY;YACZ,cAAc;YACd,iBAAiB;AACjB,YAAA,cAAc,CAZY,EAAA,OAAA,EAAA,CAAA,iCAAiC,EAc1B,cAAc,EAAE,cAAc,CAAA,EAAA,CAAA,CAAA;AAGtD,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,8BAA8B,YAbvC,cAAc;YACd,eAAe;YACf,cAAc;YACd,aAAa;YACb,YAAY;YACZ,YAAY;YACZ,cAAc;YACd,iBAAiB;YACjB,cAAc,EAEmB,cAAc,EAAE,cAAc,CAAA,EAAA,CAAA,CAAA;;2FAGtD,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAf1C,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,cAAc;wBACd,eAAe;wBACf,cAAc;wBACd,aAAa;wBACb,YAAY;wBACZ,YAAY;wBACZ,cAAc;wBACd,iBAAiB;wBACjB,cAAc;AACf,qBAAA;oBACD,OAAO,EAAE,CAAC,GAAG,oBAAoB,EAAE,cAAc,EAAE,cAAc,CAAC;AAClE,oBAAA,YAAY,EAAE,CAAC,GAAG,oBAAoB,CAAC;AACxC,iBAAA;;;AC7BD;;;;AAIG;AA0BH;AACA,IAAI,kBAAkB,GAAW,CAAC;AAElC;;;AAGK;MAQQ,uBAAuB,CAAA;AAoBlC,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,gBAAgB;;IAG9B,IAAI,eAAe,CAAC,KAAiB,EAAA;AACnC,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;;AAE7B,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;;AAGzB;;AAEK;AACL,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK;;AA6BjE;;AAEK;AACL,IAAA,IACI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS;;IAE7C,IAAI,YAAY,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;;AAmB5B,IAAA,WAAA,CAAsB,EAAqB,EAAA;QAArB,IAAE,CAAA,EAAA,GAAF,EAAE;AAzFd,QAAA,IAAA,CAAA,QAAQ,GAAkB,IAAI,OAAO,EAAQ;AAOvD;;AAEK;AACL,QAAA,IAAA,CAAA,EAAE,GAAW,CAAA,gBAAA,EAAmB,kBAAkB,EAAE,EAAE;AAEtD;;;;AAIG;QACH,IAAgB,CAAA,gBAAA,GAAe,EAAgB;AAwB/C;;;AAGG;QACM,IAAI,CAAA,IAAA,GAAoB,QAAQ;AAEzC;;AAEK;QACI,IAAW,CAAA,WAAA,GAAY,KAAK;AAwBrC;;AAEK;AACK,QAAA,IAAA,CAAA,cAAc,GAAoB,IAAI,YAAY,EAAE;;IAc9D,kBAAkB,GAAA;QAChB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;;IAG9F,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;;AAG1B;;;AAGK;AACL,IAAA,OAAO,CAAC,OAAmB,EAAA;AACzB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;;AAGxB;;AAEK;AACL,IAAA,YAAY,CAAC,QAAW,EAAA;AACtB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;;AAGpC,IAAA,IACI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM;;AAE7B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAE9B,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;;AAE/B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAE9B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;8GAtInB,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAmFjB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,iBAAiB,EAKvB,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,iBAAiB,gDCpI9B,2ZAUA,EAAA,MAAA,EAAA,CAAA,mOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA7B,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiI,iBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDkCa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAGV,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,2ZAAA,EAAA,MAAA,EAAA,CAAA,mOAAA,CAAA,EAAA;sFA0CV,eAAe,EAAA,CAAA;sBAAvB;gBAMQ,IAAI,EAAA,CAAA;sBAAZ;gBAKQ,WAAW,EAAA,CAAA;sBAAnB;gBAKQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAKQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAMG,YAAY,EAAA,CAAA;sBADf;gBAYS,cAAc,EAAA,CAAA;sBAAvB;gBAK0D,OAAO,EAAA,CAAA;sBAAjE,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;gBAK3B,MAAM,EAAA,CAAA;sBAAnC,SAAS;uBAAC,iBAAiB;gBA6BxB,IAAI,EAAA,CAAA;sBADP,WAAW;uBAAC,iBAAiB;gBAK1B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAK3B,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,mBAAmB;gBAK5B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAK3B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;;;AEhLjC;;;;AAIG;AAuCH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCK;MAYQ,uBAAuB,CAAA;AAwBlC;;AAEK;AACL,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;;AAGzD;;AAEK;AACL,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,CAAC,IAAI,CAAC,MAAM;;AAGrB;;AAEK;AACL,IAAA,IACI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa;;IAE3B,IAAI,YAAY,CAAC,YAAwC,EAAA;AACvD,QAAA,IAAI,CAAC,aAAa,GAAG,YAAY;;AAenC,IAAA,IACI,GAAG,GAAA;QACL,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,eAAe,KAAK,UAAU,CAAC,GAAG;;AAGhH,IAAA,IACI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,eAAe,KAAK,UAAU,CAAC,MAAM;;AAYnH,IAAA,IACI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;;AAG9C,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,GAAG,IAAI;;AAGlD,IAAA,IACI,oBAAoB,GAAA;QACtB,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,GAAG,IAAI;;AAGzF,IAAA,WAAA,CACY,OAAmB,EACnB,OAAyB,EACzB,EAAqB,EACrB,sBAAuD,EACvD,eAAyC,EACzC,iCAAmG,EACnG,QAAmB,EAAA;QANnB,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB;QACtB,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAiC,CAAA,iCAAA,GAAjC,iCAAiC;QACjC,IAAQ,CAAA,QAAA,GAAR,QAAQ;AApFV,QAAA,IAAA,CAAA,QAAQ,GAAkB,IAAI,OAAO,EAAQ;AAE7C,QAAA,IAAA,CAAA,SAAS,GAAuB,MAAK,GAAG;AAExC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAK,GAAG;AA2B/B;;AAEI;QACK,IAAa,CAAA,aAAA,GAAW,CAAC;AAElC;;AAEI;QACK,IAAc,CAAA,cAAA,GAAuB,OAAO;QAerD,IAAI,CAAA,IAAA,GAAW,UAAU;QAGzB,IAAgB,CAAA,gBAAA,GAAW,MAAM;QAGjC,IAAQ,CAAA,QAAA,GAAW,MAAM;;IA2BzB,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,qBAAqB,EAAE;QACnD,IAAI,CAAC,mBAAmB,EAAE;;IAG5B,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE;;AAGhC,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;;AAGjC,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;;AAG3B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;;IAI1B,WAAW,GAAA;QACT,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK;AACrD,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;QAC5B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,EAAE;;IAKb,aAAa,GAAA;QACX,IAAI,CAAC,IAAI,EAAE;;IAIb,UAAU,GAAA;QACR,IAAI,CAAC,UAAU,EAAE;;IAGnB,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,aAAa,EAAE;;;IAIxB,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;;AAExB,YAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;;AAI1B,IAAA,UAAU,CAAC,KAAQ,EAAA;AACjB,QAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;;AAGpC,IAAA,gBAAgB,CAAC,EAAsB,EAAA;AACrC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGrB,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;;AAGtB,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,CAAC;;IAGnE,sBAAsB,GAAA;AAC9B;;;;AAIK;AACL,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;aACvB,IAAI,CACH,GAAG,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,EAC/B,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EACpC,SAAS,CAAC,CAAC,OAAwC,KAAI;AACrD,YAAA,OAAO,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC;SACvD,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEzB,aAAA,SAAS,CAAC,CAAC,aAAmC,KAAK,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;;IAGrG,yBAAyB,GAAA;QACjC,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,QAAoB,KAAI;AACrG,YAAA,IAAI,CAAC,YAAY,CAAC,eAAe,GAAG,QAAQ;AAC5C,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACzB,SAAC,CAAC;;IAGM,aAAa,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU;;IAGzB,iBAAiB,GAAA;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,OAAO,CAAC;;AAGzD,IAAA,eAAe,CAAC,KAAa,EAAA;AACrC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe;AACnD,QAAA,OAAO,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK;;IAGnC,YAAY,GAAA;QACpB,QACE,IAAI,CAAC,UAAU;AACf,YAAA,IAAI,CAAC,MAAM;AACQ,YAAA;AACjB,gBAAA,QAAQ,EAAE;AACR,oBAAA,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc;AAC9C,iBAAA;AACF,aAAA;;AAIK,IAAA,sBAAsB,CAAC,KAAQ,EAAE,UAAA,GAAsB,KAAK,EAAA;AACpE,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,IAAI,EAAE,CAAC;AACnC,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QACrB,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE;;AAEpC,QAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC;QACrC,IAAI,CAAC,IAAI,EAAE;;IAGH,mBAAmB,GAAA;AAC3B,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;AAEzF,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;;IAG/E,qBAAqB,GAAA;QAC7B,OAAO,IAAI,CAAC;AACT,aAAA,OAAO,CAAC,SAAS,CAAC,KAAK;AACvB,aAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa;aAC/B,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE;AACnC,aAAA,KAAK,EAAE;;IAGF,gBAAgB,GAAA;AACxB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iCAAiC,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;;AAGlF,IAAA,iBAAiB,CAAC,KAAK,EAAA;AAC/B,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;;IAGtD,sBAAsB,GAAA;QAC9B,OAAO,IAAI,CAAC;aACT,WAAW,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,OAAO;AAClD,aAAA,QAAQ,CAAC,UAAU,CAAC,MAAM;AAC1B,aAAA,MAAM,CAAC,IAAI,CAAC,aAAa;AACzB,aAAA,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC;;IAG5B,sBAAsB,GAAA;AAC9B,QAAA,IAAI,CAAC;AACF,aAAA,aAAa;AACb,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,aAAA,SAAS,CAAC,CAAC,KAAoB,KAAI;YAClC,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;gBAC3C,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE;gBAClC,IAAI,CAAC,IAAI,EAAE;;AACN,iBAAA,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,EAAE;gBAClC,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;gBACvC,IAAI,CAAC,UAAU,EAAE;oBACf;;gBAEF,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;;iBAC9C;AACL,gBAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;;AAEpC,SAAC,CAAC;;IAGI,aAAa,GAAA;;;AAGrB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;cAC3B,0BAA0B,CAAC;AAC7B,cAAE,0BAA0B,CAAC,YAAY;AAC3C,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC;AACnC,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;;IAGf,eAAe,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,WAAW,EAAE;;QAEpB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;;IAGxC,aAAa,GAAA;AACrB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,EAAE;QAClD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YACpC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,cAAc;AACd,YAAA,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,iBAAiB;AAChD,SAAA,CAAC;;IAGM,WAAW,GAAA;AACnB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,EAAE;QAErD,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,yBAAyB,EAAE;QAChC,IAAI,CAAC,sBAAsB,EAAE;QAC7B,IAAI,CAAC,sBAAsB,EAAE;QAC7B,IAAI,CAAC,aAAa,EAAE;QACpB,IAAI,CAAC,sBAAsB,EAAE;;IAGrB,sBAAsB,GAAA;QAC9B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YAC9E,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE;gBACrC,IAAI,CAAC,IAAI,EAAE;;AAEf,SAAC,CAAC;;IAGM,oBAAoB,GAAA;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;;IAGnD,UAAU,GAAA;QAClB,OAAO,IAAI,CAAC,QAAQ;;8GApVX,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAnD,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA3B,+BAAA,EAAA,EAAA,EAAA,KAAA,EAAA+E,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,0CAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EATrB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,CAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,cAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oCAAA,EAAA,UAAA,EAAA,uCAAA,EAAA,aAAA,EAAA,WAAA,EAAA,WAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC;AACtD,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;AACJ,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGQ,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAXnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,6BAA6B,CAAC;AACtD,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;AACJ,qBAAA;AACD,oBAAA,UAAU,EAAE;AACf,iBAAA;wSA2CK,YAAY,EAAA,CAAA;sBADf,KAAK;uBAAC,gBAAgB;gBAWd,aAAa,EAAA,CAAA;sBAArB;gBAKQ,cAAc,EAAA,CAAA;sBAAtB;gBAEQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAGG,GAAG,EAAA,CAAA;sBADN,WAAW;uBAAC,oCAAoC;gBAM7C,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,uCAAuC;gBAMpD,IAAI,EAAA,CAAA;sBADH,WAAW;uBAAC,WAAW;gBAIxB,gBAAgB,EAAA,CAAA;sBADf,WAAW;uBAAC,wBAAwB;gBAIrC,QAAQ,EAAA,CAAA;sBADP,WAAW;uBAAC,eAAe;gBAIxB,YAAY,EAAA,CAAA;sBADf,WAAW;uBAAC,oBAAoB;gBAM7B,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,gBAAgB;gBAMzB,oBAAoB,EAAA,CAAA;sBADvB,WAAW;uBAAC,4BAA4B;gBAsCzC,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,OAAO;gBAUrB,aAAa,EAAA,CAAA;sBAFZ,YAAY;uBAAC,mBAAmB;;sBAChC,YAAY;uBAAC,iBAAiB;gBAM/B,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,MAAM;;;ACxOtB;;;;AAIG;AAYH,MAAM,0BAA0B,GAAG;IACjC,uBAAuB;IACvB,uBAAuB;CACxB;MAgBY,oBAAoB,CAAA;8GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,iBAlB/B,uBAAuB;AACvB,YAAA,uBAAuB,aAKrB,YAAY;YACZ,WAAW;YACX,eAAe;YACf,YAAY;AACZ,YAAA,cAAc,aAVhB,uBAAuB;AACvB,YAAA,uBAAuB,EAapB,cAAc,CAAA,EAAA,CAAA,CAAA;AAIN,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAZ7B,YAAY;YACZ,WAAW;YACX,eAAe;YACf,YAAY;AACZ,YAAA,cAAc,EAIb,cAAc,CAAA,EAAA,CAAA,CAAA;;2FAIN,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAdhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,eAAe;wBACf,YAAY;wBACZ,cAAc;AACf,qBAAA;AACA,oBAAA,OAAO,EAAE;AACP,wBAAA,GAAG,0BAA0B;wBAC7B,cAAc;AACf,qBAAA;AACD,oBAAA,YAAY,EAAE,CAAC,GAAG,0BAA0B,CAAC;AAC/C,iBAAA;;;IC5BW;AAAZ,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,aAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,aAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC7B,CAAC,EAJW,aAAa,KAAb,aAAa,GAIxB,EAAA,CAAA,CAAA;AAcY,MAAA,gCAAgC,GAAiC;AAC5E,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,UAAU,EAAE,IAAI;AAChB,IAAA,KAAK,EAAE,IAAI;;AAGb;;AAEG;MACU,cAAc,CAAA;AAiEzB,IAAA,WAAA,CAAY,GAAG,OAAkC,EAAA;AAhEjD;;AAEG;QACH,IAAK,CAAA,KAAA,GAAW,EAAE;AAOlB;;;AAGG;QACH,IAAoB,CAAA,oBAAA,GAAY,EAAE;AAElC;;AAEG;AACH,QAAA,IAAA,CAAA,YAAY,GAAkB,aAAa,CAAC,WAAW;AAEvD;;;AAGG;QACH,IAAW,CAAA,WAAA,GAAY,IAAI;AAE3B;;;AAGG;QACH,IAAoB,CAAA,oBAAA,GAAY,IAAI;AAEpC;;;AAGG;QACH,IAAU,CAAA,UAAA,GAAY,IAAI;AAE1B;;AAEG;QACH,IAAW,CAAA,WAAA,GAAW,EAAE;AAExB;;;;AAIG;QACH,IAAO,CAAA,OAAA,GAAY,EAAE;AAErB;;;;;AAKG;QACH,IAAgB,CAAA,gBAAA,GAAqB,IAAI;AAEzC;;AAEG;QACH,IAAO,CAAA,OAAA,GAA0C,EAAE;QAGjD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC;QAC/B,IAAI,CAAC,wBAAwB,EAAE;;IAGvB,wBAAwB,GAAA;AAChC,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,gCAAgC,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;;AAE7F;MAEY,iBAAiB,GAAG,IAAI,cAAc,CAAqC,wBAAwB;MACnG,gBAAgB,GAAG,IAAI,cAAc,CAAiB,uBAAuB;MAC7E,iBAAiB,GAAG,IAAI,cAAc,CAAS,wBAAwB;;AC1GpF;;;;;AAKG;MACU,WAAW,CAAA;AAMtB;;AAEG;AACH,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,UAAU;;IAExB,IAAI,KAAK,CAAC,QAAuB,EAAA;QAC/B,IAAI,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE;AAC5C,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK;AAChC,YAAA,IAAI,CAAC,UAAU,GAAG,QAAQ;AAC1B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,EAAE,CAAC;;;AAKvE;;AAEG;AACH,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;;AAKzC;;AAEG;AACH,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;;AAGpC,IAAA,WAAA,CAAmB,MAAsB,EAAA;QAAtB,IAAM,CAAA,MAAA,GAAN,MAAM;AAjBf,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,aAAa,CAAsB,CAAC,CAAC;QAQxD,IAAO,CAAA,OAAA,GAAG,KAAK;AACf,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAK;AASlC,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,YAAY;;AAGlC;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,SAAS;;AAGtC;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,SAAS;;AAGtC;;AAEG;IACH,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,WAAW;;IAGxC,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc;;AAGlC;;AAEK;AACL,IAAA,KAAK,CAAC,GAAO,EAAA;AACX,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB;;AAGF,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AAC3B,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;AAC7B,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;AAC5B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AACtB,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;;AAE1B;;MCpFY,2BAA2B,CAAA;8GAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA3B,2BAA2B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAGC,gBAAgB,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAP3C,CAAiD,+CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,sHAAA,CAAA,EAAA,CAAA,CAAA;;2FAIlD,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;+BACI,sBAAsB,EAAA,QAAA,EACtB,CAAiD,+CAAA,CAAA,EAAA,UAAA,EAE/C,KAAK,EAAA,MAAA,EAAA,CAAA,sHAAA,CAAA,EAAA;8BAKsD,gBAAgB,EAAA,CAAA;sBAAxF,SAAS;uBAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE;;;MC2D5D,iBAAiB,CAAA;AAG5B,IAAA,IACI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,aAAa,CAAC,WAAW;;AAG3D,IAAA,IACI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,aAAa,CAAC,SAAS;;AAGzD,IAAA,IACI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,aAAa,CAAC,SAAS;;AAGzD,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ;;AAGrC,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ;;AAGrC,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU;;AAGvC,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK;;AAOlC,IAAA,WAAA,CACoC,OAA2C,EAC3C,OAAe,EAC1C,SAAsB,EACtB,MAAsB,EACnB,gBAA2C,EAC3C,UAAsB,EACtB,QAAmB,EAAA;QANK,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAO,CAAA,OAAA,GAAP,OAAO;QAClC,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAM,CAAA,MAAA,GAAN,MAAM;QACH,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAQ,CAAA,QAAA,GAAR,QAAQ;;IAGpB,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;AAC5E,QAAA,IAAI,CAAC,SAAS,CAAC,4BAA4B,EAAE;AAC7C,QAAA,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE;AAEpC,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AAC3B,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;;;IAIlF,kBAAkB,GAAA;QAChB,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE;YAC9D;;AAGF,QAAA,IAAI,IAAI,CAAC,OAAO,YAAY,WAAW,EAAE;YACvC,IAAI,CAAC,cAAc,EAAE;;aAChB;YACL,IAAI,CAAC,eAAe,EAAE;;;IAI1B,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;;QAG/B,IAAI,CAAC,KAAK,EAAE;;IAGd,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,aAAa,CAAC,SAAS,EAAE;AACpD,YAAA,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE;;aAC3B;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;;;IAI7B,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;;IAG3B,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;;IAG7B,oBAAoB,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,aAAa,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,EAAE;YACzE,IAAI,CAAC,QAAQ,EAAE;;aACV;YACL,IAAI,CAAC,UAAU,EAAE;;;IAIrB,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;;IAGd,cAAc,GAAA;AACtB,QAAA,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CACxC,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAA2B,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAC3E;;IAGO,eAAe,GAAA;AACvB,QAAA,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAoB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;AACrF,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC;QAC7E,IAAI,CAAC,SAAS,CAAC,iBAAiB,GAAG,GAAG,CAAC,QAAQ;AAE/C,QAAA,GAAG,CAAC,iBAAiB,CAAC,aAAa,EAAE;;8GArH5B,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAuClB,iBAAiB,EAAA,EAAA,EAAA,KAAA,EACjB,iBAAiB,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,yBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAxChB,iBAAiB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAkCjB,2BAA2B,EAjF1B,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,orBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAArG,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAsG,2BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,gGAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAjD7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EACX,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CX,EAAA,CAAA,EAAA,UAAA,EAEa,KAAK,EAAA,MAAA,EAAA,CAAA,orBAAA,CAAA,EAAA;;0BAyChB,MAAM;2BAAC,iBAAiB;;0BACxB,MAAM;2BAAC,iBAAiB;gLAvClB,GAAG,EAAA,CAAA;sBAAX;gBAGG,YAAY,EAAA,CAAA;sBADf,WAAW;uBAAC,mBAAmB;gBAM5B,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,iBAAiB;gBAM1B,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,iBAAiB;gBAqBU,gBAAgB,EAAA,CAAA;sBAAvD,SAAS;uBAAC,2BAA2B;;;AC/ExC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+EG;MAEU,eAAe,CAAA;AAM1B,IAAA,WAAA,CACY,wBAAkD,EAClD,cAAgC,EAChC,sBAAgD,EAChD,mBAAiD,EACd,oBAAoC,EACvE,GAA6B,EAClB,QAAQ,EAAA;QANnB,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB;QACxB,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB;QACtB,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QACgB,IAAoB,CAAA,oBAAA,GAApB,oBAAoB;QACvD,IAAG,CAAA,GAAA,GAAH,GAAG;QARL,IAAW,CAAA,WAAA,GAAkB,EAAE;AAWvC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;;AAG1B;;;;AAIK;AACL,IAAA,IAAI,CAAC,aAAiD,EAAE,YAAA,GAAwC,EAAE,EAAA;AAChG,QAAA,IAAI,IAAI,CAAC,4BAA4B,EAAE,EAAE;YACvC,IAAI,CAAC,sBAAsB,EAAE;;QAG/B,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,oBAAoB,EAAE,YAAY,CAAC;AAC1E,QAAA,MAAM,SAAS,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC;AACzC,QAAA,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,CAAC;AAE5E,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;AAChC,QAAA,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;AAEjC,QAAA,OAAO,SAAS;;IAGR,4BAA4B,GAAA;AACpC,QAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE;YAChC,MAAM,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,aAAa;YACtE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;;AAGlD,QAAA,OAAO,IAAI;;IAGH,sBAAsB,GAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;;QAG3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;YAC3C,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,EAAE;AAC3D,YAAA,gBAAgB,EAAE,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;AACvE,YAAA,WAAW,EAAE,IAAI;AAClB,SAAA,CAAC;AACF,QAAA,MAAM,sBAAsB,GAAG,IAAI,iBAAiB,CAAC,2BAA2B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;QACvG,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,sBAAsB,CAAC;QACjE,IAAI,CAAC,uBAAuB,GAAG,UAAU,CAAC,QAAQ,CAAC,gBAAgB;;AAG3D,IAAA,YAAY,CACpB,OAA2C,EAC3C,MAAsB,EACtB,SAAsB,EAAA;QAEtB,MAAM,OAAO,GAAG,OAAO,YAAY,WAAW,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,OAAO;AAE1G,QAAA,MAAM,SAAS,GAAG;AAChB,YAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE;AACjD,YAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE;AACjD,YAAA,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE;AAC7C,YAAA,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE;SAC9C;AACD,QAAA,MAAM,cAAc,GAAG,MAAM,CAAC;AAC5B,cAAE,MAAM,CAAC,gBAAgB,CAAC;AAC1B,cAAE,IAAI,CAAC,uBAAuB,CAAC,QAAQ;AACzC,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;QACvE,MAAM,aAAa,GAAG,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,iBAAiB,CAAC;AAE9F,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,uBAAuB,CAAC,eAAe,CACtD,aAAa,EACb,IAAI,CAAC,uBAAuB,CAAC,MAAM,EACnC,QAAQ,CACT;QACD,GAAG,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG;AAC3B,QAAA,GAAG,CAAC,iBAAiB,CAAC,aAAa,EAAE;AACrC,QAAA,OAAO,GAAG;;AAGF,IAAA,iBAAiB,CAAC,SAAsB,EAAA;AAChD,QAAA,IAAI,SAAS,CAAC,MAAM,CAAC,oBAAoB,EAAE;AACzC,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;;AAGpE,QAAA,IAAI,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE;AAC/B,YAAA,IAAI,CAAC;AACF,iBAAA,aAAa;AACb,iBAAA,IAAI,CAAC,MAAM,CAAC,CAAC,KAAoB,KAAK,KAAK,CAAC,OAAO,KAAK,EAAE,CAAC;iBAC3D,SAAS,CAAC,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;;AAGvC,QAAA,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAEnE,QAAA,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;AAC/B,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAC/D,IAAI,CAAC,qBAAqB,EAAE;AAC9B,SAAC,CAAC;;IAGM,qBAAqB,GAAA;QAC7B,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,aAAa,CAAC,WAAW,CAAC;AAC/F,QAAA,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE;;aAC5B;AACL,YAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE;;AAGpC,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;YACvD,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,eAAe,CAAC,QAAQ,CAAC;;aACpD;YACL,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC;;;8GA1HnD,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA9D,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA+D,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,4BAAA,EAAA,EAAA,EAAA,KAAA,EAWhB,gBAAgB,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,EAAA,KAAA,EAEhB,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAbV,eAAe,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B;;0BAYI,MAAM;2BAAC,gBAAgB;;0BAEvB,MAAM;2BAAC,WAAW;;;MCrGV,cAAc,CAAA;IACzB,OAAO,OAAO,CAAC,aAAuC,EAAA;QACpD,OAAO;AACL,YAAA,QAAQ,EAAE,cAAc;AACxB,YAAA,SAAS,EAAE;gBACT,eAAe;AACf,gBAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa,EAAE;AACvD,aAAA;SACF;;IAGH,OAAO,QAAQ,CAAC,aAAuC,EAAA;QACrD,OAAO;AACL,YAAA,QAAQ,EAAE,cAAc;AACxB,YAAA,SAAS,EAAE;gBACT,eAAe;AACf,gBAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa,EAAE;AACvD,aAAA;SACF;;8GAlBQ,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,iBAJvB,2BAA2B;YAC3B,iBAAiB,CAAA,EAAA,OAAA,EAAA,CAHR,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,CAAA,EAAA,CAAA,CAAA;+GAMzE,cAAc,EAAA,OAAA,EAAA,CANd,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,CAAA,EAAA,CAAA,CAAA;;2FAMzE,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,CAAE;AACtF,oBAAA,YAAY,EAAE;wBACZ,2BAA2B;wBAC3B,iBAAiB;AAClB,qBAAA;AACF,iBAAA;;;ACcD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0IK;MAYQ,qBAAqB,CAAA;AAChC;;AAEK;AACL,IAAA,IACI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,oBAAoB;;IAGlC,IAAI,UAAU,CAAC,UAAoC,EAAA;AACjD,QAAA,IAAI,CAAC,oBAAoB,GAAG,UAAU;AAEtC,QAAA,IAAI,CAAC,+BAA+B,EAAE,WAAW,EAAE;AACnD,QAAA,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC,oBAAoB,CAAC;AAC9D,aAAA,IAAI,CACH,GAAG,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EACvD,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EACvD,oBAAoB,EAAE,EACtB,QAAQ,EAAE,EACV,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAEzB,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,KAAI;AACtC,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;AAChE,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;;AAEzB,SAAC,CAAC;;AAgCN;;;AAGK;AACL,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa;;AAGnC;;;AAGK;AACL,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;;AAGzD;;;AAGK;AACL,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,CAAC,IAAI,CAAC,MAAM;;AAGrB,IAAA,WAAA,CACiC,QAAQ,EAC7B,eAAyC,EACzC,OAAmB,EACnB,sBAAuD,EACvD,OAAyB,EACzB,EAAqB,EACrB,wBAAuD,EACvD,WAA6B,EAC7B,QAAmB,EACO,WAAmB,EAAA;QATxB,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAC7B,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB;QACtB,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB;QACxB,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACkB,IAAW,CAAA,WAAA,GAAX,WAAW;AA7DjD;;AAEK;QACI,IAAa,CAAA,aAAA,GAAG,CAAC;AAehB,QAAA,IAAA,CAAA,QAAQ,GAAkB,IAAI,OAAO,EAAQ;AAC7C,QAAA,IAAA,CAAA,QAAQ,GAAuB,MAAK,GAAG;AACvC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAK,GAAG;;AA4C9B;;;AAGK;AACL,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK;;IAGzB,IAAI,UAAU,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK;;IAG1B,eAAe,GAAA;QACb,IAAI,CAAC,sBAAsB,EAAE;AAE7B,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC;;AAE1F,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,qBAAqB,EAAE;QACnD,IAAI,CAAC,mBAAmB,EAAE;QAC1B,IAAI,CAAC,eAAe,EAAE;;IAGxB,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,eAAe,EAAE;;;IAI1B,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AACxB,YAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;;AAI1B;;;AAGK;IACK,eAAe,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,WAAW,EAAE;;QAEpB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;;IAGhD,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,QAAQ,IAAI,SAAS,EAAE,EAAE;YACxD,OAAO,CAAC,IAAI,CACV,8DAA8D;AAC5D,gBAAA,0GAA0G,CAC7G;;QAEH,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;AACrC,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,UAAU;AACjH,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC;;aACjF;YACL,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE;;;IAI7D,WAAW,GAAA;AACnB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,EAAE;QACrD,IAAI,CAAC,qBAAqB,EAAE;QAC5B,IAAI,CAAC,aAAa,EAAE;;IAGZ,qBAAqB,GAAA;QAC7B,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAA+B,KAAI;YACxG,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,WAAW,EAAE;AAClG,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;YACtB,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;AACjC,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;AACzB,YAAA,IAAI,KAAK,CAAC,IAAI,EAAE;AACd,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI;gBAC1B,IAAI,CAAC,IAAI,EAAE;;AAEf,SAAC,CAAC;;IAGM,aAAa,GAAA;AACrB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,EAAE;AAClD,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,cAAc,EAAE,CAAC;;IAG1F,mBAAmB,GAAA;AAC3B,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAEzF,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YACxE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,IAAI,EAAE;YAC3C,IAAI,CAAC,IAAI,EAAE;AACb,SAAC,CAAC;;IAGM,qBAAqB,GAAA;QAC7B,OAAO,IAAI,CAAC;AACT,aAAA,OAAO,CAAC,SAAS,CAAC,KAAK;AACvB,aAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa;aAC/B,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE;AACnC,aAAA,KAAK,EAAE;;IAGF,sBAAsB,GAAA;QAC9B,OAAO,IAAI,CAAC;AACT,aAAA,WAAW,CAAC,IAAI,CAAC,OAAO;AACxB,aAAA,QAAQ,CAAC,UAAU,CAAC,MAAM;AAC1B,aAAA,MAAM,CAAC,IAAI,CAAC,aAAa;AACzB,aAAA,UAAU,CAAC,YAAY,CAAC,gBAAgB,CAAC;;IAGpC,YAAY,GAAA;QACpB,QACE,IAAI,CAAC,UAAU;AACf,YAAA,IAAI,CAAC,MAAM;AACQ,YAAA;AACjB,gBAAA,QAAQ,EAAE;AACR,oBAAA,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc;AAC9C,iBAAA;AACF,aAAA;;IAIK,oBAAoB,GAAA;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE;;IAGpC,sBAAsB,GAAA;AAC9B,QAAA,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO;AAC1B,aAAA,IAAI,CACH,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,EAC1B,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEzB,aAAA,SAAS,CAAC,CAAC,KAAa,KAAK,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;;IAGtD,eAAe,GAAA;AACvB,QAAA,KAAK,CACH,IAAI,CAAC,UAAU,CAAC,IAAI,EACpB,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;AAE3G,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC7B,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;;AAGtC;;;AAGK;AACK,IAAA,iBAAiB,CAAC,KAAa,EAAA;QACvC,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,QAAQ,EAAE;AACzC;;;AAGI;AACJ,YAAA,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;;AAG3C,QAAA,MAAM,WAAW,GAAY,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC;QAC1G,IAAI,WAAW,EAAE;AACf,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAE3B,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC;AAC9E,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI;;;AAIrB,IAAA,WAAW,CAAC,KAAQ,EAAA;QAC5B,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,KAAK;AAE5B,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,WAAW,EAAE;AACnG,YAAA,IAAI,CAAC,UAAU,GAAG,UAAU;AAC5B,YAAA,IAAI,CAAC,cAAc,GAAG,UAAU;;;AAIpC,IAAA,UAAU,CAAC,KAAQ,EAAA;AACjB,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;;AAGzB,IAAA,gBAAgB,CAAC,EAAsB,EAAA;AACrC,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGrB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU;;AAGxB,IAAA,qBAAqB,CAAC,KAAa,EAAA;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;AAC3C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC7F,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE1F,OAAO,CAAA,EAAG,IAAI,CAAI,CAAA,EAAA,KAAK,IAAI,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE;;8GAzShC,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAmFtB,WAAW,EAAA,EAAA,EAAA,KAAA,EAAA5F,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,+BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA2F,0BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EASR,aAAa,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA5Ff,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EATnB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,CAAA,cAAA,EAAA,YAAA,CAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACpD,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;AACJ,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGQ,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAXjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,2BAA2B,CAAC;AACpD,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;AACJ,qBAAA;AACD,oBAAA,UAAU,EAAE;AACf,iBAAA;;0BAoFI,MAAM;2BAAC,WAAW;;0BASlB,SAAS;2BAAC,aAAa;yCAvFtB,UAAU,EAAA,CAAA;sBADb,KAAK;uBAAC,cAAc;gBA8BZ,aAAa,EAAA,CAAA;sBAArB;;;ACvNH;;;;AAIG;MA2BU,kBAAkB,CAAA;AAC7B,IAAA,OAAO,OAAO,CAAC,MAAA,GAA6B,EAAE,EAAA;QAC5C,OAAO;AACL,YAAA,QAAQ,EAAE,kBAAkB;YAC5B,SAAS,EAAE,CAAC,EAAC,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,EAAC,CAAC;SAChE;;AAGH,IAAA,OAAO,QAAQ,CAAC,MAAA,GAA6B,EAAE,EAAA;QAC7C,OAAO;AACL,YAAA,QAAQ,EAAE,kBAAkB;YAC5B,SAAS,EAAE,CAAC,EAAC,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,EAAC,CAAC;SAChE;;8GAZQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,iBAFd,qBAAqB,EAAE,yBAAyB,EAAE,qBAAqB,aARpF,YAAY;YACZ,eAAe;YACf,YAAY;YACZ,YAAY;AACZ,YAAA,mBAAmB,CAGX,EAAA,OAAA,EAAA,CAAA,qBAAqB,EAAE,yBAAyB,EAAE,qBAAqB,CAAA,EAAA,CAAA,CAAA;AAGtE,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EAJlB,SAAA,EAAA,CAAC,0BAA0B,CAAC,YANrC,YAAY;YACZ,eAAe;YACf,YAAY;YACZ,YAAY;YACZ,mBAAmB,CAAA,EAAA,CAAA,CAAA;;2FAMV,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAZ9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,eAAe;wBACf,YAAY;wBACZ,YAAY;wBACZ,mBAAmB;AACpB,qBAAA;oBACD,SAAS,EAAE,CAAC,0BAA0B,CAAC;AACvC,oBAAA,OAAO,EAAE,CAAC,qBAAqB,EAAE,yBAAyB,EAAE,qBAAqB,CAAC;AAClF,oBAAA,YAAY,EAAE,CAAC,qBAAqB,EAAE,yBAAyB,EAAE,qBAAqB,CAAC;AACxF,iBAAA;;;AC9BD;;;;AAIG;AAWG,MAAO,oBAAwB,SAAQ,mBAAsB,CAAA;AAGjE,IAAA,WAAA,CAAsB,WAA6B,EAAA;AACjD,QAAA,KAAK,EAAE;QADa,IAAW,CAAA,WAAA,GAAX,WAAW;QAFjC,IAAM,CAAA,MAAA,GAAmC,qBAAqB;;IAM9D,KAAK,CAAC,IAAY,EAAE,MAAM,EAAA;QACxB,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC;;IAG7C,MAAM,CAAC,IAAO,EAAE,MAAc,EAAA;QAC5B,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;;IAG9C,OAAO,CAAC,IAAY,EAAE,MAAc,EAAA;QAClC,OAAO,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC;;8GAhB9C,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA3I,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAApB,oBAAoB,EAAA,CAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC;;AAsBK,MAAO,qBAAyB,SAAQ,mBAAuC,CAAA;AAGnF,IAAA,WAAA,CAAsB,WAA6B,EAAA;AACjD,QAAA,KAAK,EAAE;QADa,IAAW,CAAA,WAAA,GAAX,WAAW;QAFjC,IAAM,CAAA,MAAA,GAAoC,sBAAsB;;IAMhE,KAAK,CAAC,KAAa,EAAE,MAAM,EAAA;QACzB,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACpE,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC;YAC5C,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC;SACzC;;IAGH,MAAM,CAAC,KAAyB,EAAE,MAAc,EAAA;QAC9C,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,EAAE;;AAGX,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC;AAC1D,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC;QAEtE,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,OAAO,EAAE;;AAGX,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC;AACtD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC;QAElE,IAAI,UAAU,EAAE;AACd,YAAA,OAAO,CAAG,EAAA,KAAK,CAAM,GAAA,EAAA,GAAG,EAAE;;aACrB;AACL,YAAA,OAAO,KAAK;;;IAIhB,OAAO,CAAC,KAAa,EAAE,MAAc,EAAA;QACnC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACpE,OAAO,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC;;8GAvClG,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAArB,qBAAqB,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC;;AA6CK,MAAO,wBAA4B,SAAQ,mBAAsB,CAAA;AAGrE,IAAA,WAAA,CAAsB,WAA6B,EAAA;AACjD,QAAA,KAAK,EAAE;QADa,IAAW,CAAA,WAAA,GAAX,WAAW;QAFjC,IAAM,CAAA,MAAA,GAAuC,yBAAyB;;IAMtE,KAAK,CAAC,IAAY,EAAE,MAAc,EAAA;QAChC,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC;;IAG7C,MAAM,CAAC,IAAS,EAAE,MAAc,EAAA;QAC9B,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;;IAG9C,OAAO,CAAC,IAAY,EAAE,MAAc,EAAA;QAClC,OAAO,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC;;8GAhB9C,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAxB,wBAAwB,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC;;;AC/ED;;;;AAIG;MAoDU,kBAAkB,CAAA;AAC7B,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO;AACL,YAAA,QAAQ,EAAE,kBAAkB;AAC5B,YAAA,SAAS,EAAE;gBACT,QAAQ;AACR,gBAAA;AACE,oBAAA,OAAO,EAAE,eAAe;AACxB,oBAAA,KAAK,EAAE,IAAI;AACX,oBAAA,QAAQ,EAAE,oBAAoB;AAC/B,iBAAA;AACD,gBAAA;AACE,oBAAA,OAAO,EAAE,eAAe;AACxB,oBAAA,KAAK,EAAE,IAAI;AACX,oBAAA,QAAQ,EAAE,qBAAqB;AAChC,iBAAA;AACD,gBAAA;AACE,oBAAA,OAAO,EAAE,eAAe;AACxB,oBAAA,KAAK,EAAE,IAAI;AACX,oBAAA,QAAQ,EAAE,wBAAwB;AACnC,iBAAA;AACF,aAAA;SACF;;8GAtBQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,iBAT3B,qBAAqB;YACrB,8BAA8B;YAC9B,2BAA2B;YAC3B,yBAAyB;YACzB,qBAAqB;YACrB,sBAAsB;AACtB,YAAA,qBAAqB,aAtBrB,eAAe;YACf,gBAAgB;YAChB,qBAAqB;YACrB,YAAY;YACZ,oBAAoB;YACpB,kBAAkB;AAClB,YAAA,mBAAmB,aAGnB,qBAAqB;YACrB,qBAAqB;YACrB,sBAAsB;YACtB,yBAAyB;YACzB,2BAA2B,CAAA,EAAA,CAAA,CAAA;AAYlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAzB3B,eAAe;YACf,gBAAgB;YAChB,qBAAqB;YACrB,YAAY;YACZ,oBAAoB;YACpB,kBAAkB;YAClB,mBAAmB,CAAA,EAAA,CAAA,CAAA;;2FAmBV,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBA3B9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,eAAe;wBACf,gBAAgB;wBAChB,qBAAqB;wBACrB,YAAY;wBACZ,oBAAoB;wBACpB,kBAAkB;wBAClB,mBAAmB;AACpB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,qBAAqB;wBACrB,qBAAqB;wBACrB,sBAAsB;wBACtB,yBAAyB;wBACzB,2BAA2B;AAC5B,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACZ,qBAAqB;wBACrB,8BAA8B;wBAC9B,2BAA2B;wBAC3B,yBAAyB;wBACzB,qBAAqB;wBACrB,sBAAsB;wBACtB,qBAAqB;AACtB,qBAAA;AACF,iBAAA;;;ACvDD;;;;AAIG;AAmBH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6LK;MA0BQ,gBAAgB,CAAA;AAE3B,IAAA,IACI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK;;IAEnB,IAAI,IAAI,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;AACxB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;;AAKtB,IAAA,IACI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ;;IAEtB,IAAI,OAAO,CAAC,KAAc,EAAA;AACxB,QAAA,MAAM,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;AAC9C,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE;AAC/B,YAAA,IAAI,CAAC,QAAQ,GAAG,SAAS;;;AAM7B,IAAA,IACI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;;IAEpB,IAAI,KAAK,CAAC,KAAU,EAAA;AAClB,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE;AACzB,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;;;AAKvB,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;;IAEvB,IAAI,QAAQ,CAAC,QAAiB,EAAA;AAC5B,QAAA,MAAM,SAAS,GAAG,qBAAqB,CAAC,QAAQ,CAAC;AACjD,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;AAChC,YAAA,IAAI,CAAC,SAAS,GAAG,SAAS;;;AAc9B,IAAA,WAAA,CACY,EAAqB,EACrB,QAAmB,EACnB,aAA8B,EAAA;QAF9B,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAa,CAAA,aAAA,GAAb,aAAa;QAtCjB,IAAQ,CAAA,QAAA,GAAY,KAAK;QAwBzB,IAAS,CAAA,SAAA,GAAY,KAAK;QAGzB,IAAM,CAAA,MAAA,GAA8B,OAAO;AAE1C,QAAA,IAAA,CAAA,WAAW,GAAsB,IAAI,YAAY,EAAE;AAEnD,QAAA,IAAA,CAAA,IAAI,GAAuB,IAAI,YAAY,EAAE;;AAUvD,IAAA,IACI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;;AAGjC,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,MAAM;;AAG/B,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,OAAO;;AAGhC,IAAA,IACI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,iBAAiB,GAAA;QACnB,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAClD,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;AAEzD,QAAA,OAAO,EAAE;;AAGX,IAAA,QAAQ,CAAC,KAAY,EAAA;QACnB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;QACnB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGnC,IAAA,OAAO,CAAC,KAAY,EAAA;QAClB,KAAK,CAAC,eAAe,EAAE;;AAGzB;;;;;AAKI;IACJ,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;AAGxB;;;;;;;AAOI;AACJ,IAAA,QAAQ,CAAC,IAAY,EAAA;AACnB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAEhB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC;;;8GA3I1D,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAhB,gBAAgB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAwDC,UAAU,EA/E1B,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;AAkBX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,q6BAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKU,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAzB5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EACV,QAAA,EAAA;;;;;;;;;;;;;;;;;;AAkBX,EAAA,CAAA,EAAA,eAAA,EACkB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EAEnC,KAAK,EAAA,MAAA,EAAA,CAAA,q6BAAA,CAAA,EAAA;yIAKf,IAAI,EAAA,CAAA;sBADP;gBAYG,OAAO,EAAA,CAAA;sBADV;gBAcG,KAAK,EAAA,CAAA;sBADR;gBAYG,QAAQ,EAAA,CAAA;sBADX;gBAaQ,MAAM,EAAA,CAAA;sBAAd;gBAES,WAAW,EAAA,CAAA;sBAApB;gBAES,IAAI,EAAA,CAAA;sBAAb;gBAEyC,KAAK,EAAA,CAAA;sBAA9C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;gBASpC,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,sBAAsB;gBAM/B,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,sBAAsB;gBAM/B,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,sBAAsB;gBAM/B,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,qBAAqB;gBAM9B,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,mBAAmB;gBAM5B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,oBAAoB;gBAM7B,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,sBAAsB;gBAM/B,iBAAiB,EAAA,CAAA;sBADpB,WAAW;uBAAC,OAAO;;;ACjVtB;;;;AAIG;AA2BH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCK;MAeQ,qBAAqB,CAAA;AAMhC,IAAA,IACI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;;IAEpB,IAAI,KAAK,CAAC,KAAU,EAAA;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;QACnB,IAAI,CAAC,YAAY,EAAE;;AAIrB,IAAA,IACI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK;;IAEnB,IAAI,IAAI,CAAC,IAAY,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;QACjB,IAAI,CAAC,WAAW,EAAE;;AAIpB,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;;IAEvB,IAAI,QAAQ,CAAC,QAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,QAAQ,CAAC;QAChD,IAAI,CAAC,cAAc,EAAE;;AAKvB;;;AAGG;AACH,IAAA,IACI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO;;IAErB,IAAI,MAAM,CAAC,KAAgC,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE;AAC1B,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;YACpB,IAAI,CAAC,YAAY,EAAE;;;AASvB,IAAA,WAAA,CACY,WAAoC,EACf,UAAU,EACV,QAAQ,EAAA;QAF7B,IAAW,CAAA,WAAA,GAAX,WAAW;QACU,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAQ,CAAA,QAAA,GAAR,QAAQ;AA1D/B,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;AAC9B,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,KAAU,KAAI,GAAG;AAC7B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAK,GAAG;QA+CpB,IAAO,CAAA,OAAA,GAA8B,OAAO;AAI5C,QAAA,IAAA,CAAA,WAAW,GAAsB,IAAI,YAAY,EAAE;;IAQ7D,kBAAkB,GAAA;;;;;;QAMhB,IAAI,CAAC,WAAW,EAAE;QAElB,IAAI,CAAC,MAAM,CAAC;AACT,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;;;;;QAKtB,SAAS,CAAC,CAAC,MAAmC,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EACjF,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAEzB,SAAS,CAAC,MAAM,IAAI,CAAC,0BAA0B,EAAE,CAAC;;IAGvD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;;AAG1B,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGrB,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;AAGpB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;;IAGlB,0BAA0B,GAAA;QAClC,IAAI,CAAC,4BAA4B,EAAE;QACnC,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,cAAc,EAAE;QACrB,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,4BAA4B,EAAE;QACnC,IAAI,CAAC,qBAAqB,EAAE;;IAGpB,WAAW,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAuB,KAAK,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;;IAIrE,YAAY,GAAA;QACpB,IAAI,CAAC,2BAA2B,CAAC,CAAC,KAAuB,KAAK,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC;;IAGjG,cAAc,GAAA;AACtB,QAAA,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,WAAW,EAAE;AACxC,YAAA,IAAI,CAAC,2BAA2B,CAAC,CAAC,KAAuB,KAAK,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;;;IAIvF,4BAA4B,GAAA;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACvC;;AAGF,QAAA,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAuB,KAAK,KAAK,CAAC,WAAW,CAAC;AACrE,aAAA,IAAI,CACH,SAAS,CACP,KAAK,CACH,IAAI,CAAC,MAAM,CAAC,OAAO,EACnB,IAAI,CAAC,QAAQ,CACd,CACF;AAEF,aAAA,SAAS,CAAC,CAAC,KAAU,KAAI;AACxB,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AACtB,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAC5B,SAAC,CAAC;;AAGI,IAAA,cAAc,CAAC,KAAU,EAAA;AACjC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;;IAGZ,qBAAqB,GAAA;AAC7B,QAAA,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;QACvD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,WAAW,EAAE;YACtD;;AAGF,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa;AAClD,QAAA,SAAS,CAAQ,WAAW,EAAE,SAAS;AACpC,aAAA,IAAI,CACH,MAAM,CAAC,KAAK,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,CAAC,EAC3D,SAAS,CAAC,MAAM,KAAK,CACnB,SAAS,CAAQ,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,EAC1C,SAAS,CAAQ,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CACzC,CAAC,EACF,MAAM,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,CAAC,EAC5D,SAAS,CACP,KAAK,CACH,IAAI,CAAC,MAAM,CAAC,OAAO,EACnB,IAAI,CAAC,QAAQ,CACd,CACF;aAEF,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;;IAG5B,YAAY,GAAA;AACpB,QAAA,IAAI,CAAC,2BAA2B,CAAC,CAAC,KAAuB,KAAK,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;;AAGjF,IAAA,2BAA2B,CAAC,QAAoC,EAAA;AACxE,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;gBAC5B,QAAQ,CAAC,KAAK,CAAC;gBACf,KAAK,CAAC,aAAa,EAAE;AACvB,aAAC,CAAC;;;IAII,4BAA4B,GAAA;AACpC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC;AAC/D,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;AACtE,QAAA,IAAI,YAAY,IAAI,cAAc,IAAI,YAAY,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE;AACvE,YAAA,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK;;;8GAtMxB,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EA2DtB,WAAW,EAAA,EAAA,EAAA,KAAA,EACX,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA5DV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAVnB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACpD,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;AACJ,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAyDc,gBAAgB,EAjErB,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;AACkC,+CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAWnC,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAdjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE;AACkC,+CAAA,CAAA;AAC5C,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,2BAA2B,CAAC;AACpD,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;AACJ,qBAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE;AACf,iBAAA;;0BA4DI,MAAM;2BAAC,WAAW;;0BAClB,MAAM;2BAAC,WAAW;yCArDjB,KAAK,EAAA,CAAA;sBADR;gBAWG,IAAI,EAAA,CAAA;sBADP;gBAWG,QAAQ,EAAA,CAAA;sBADX;gBAgBG,MAAM,EAAA,CAAA;sBADT;gBAYyD,MAAM,EAAA,CAAA;sBAA/D,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;gBAE9C,WAAW,EAAA,CAAA;sBAApB;;;AC5IH;;;;AAIG;MAaU,aAAa,CAAA;8GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,iBAFT,gBAAgB,EAAE,qBAAqB,CAD5C,EAAA,OAAA,EAAA,CAAA,gBAAgB,EAAE,qBAAqB,CAAA,EAAA,CAAA,CAAA;+GAGtC,aAAa,EAAA,CAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,OAAO,EAAE,CAAC,gBAAgB,EAAE,qBAAqB,CAAC;AAClD,oBAAA,YAAY,EAAE,CAAC,gBAAgB,EAAE,qBAAqB,CAAC;AACxD,iBAAA;;;AChBD;;;;AAIG;AAgCH,IAAI,WAAW,GAAG,CAAC;AAEnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8LG;MAQU,cAAc,CAAA;AAIzB,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;;AAQtC,IAAA,IAGI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;;IAEvB,IAAI,QAAQ,CAAC,KAAc,EAAA;QACzB,IAAI,IAAI,CAAC,QAAQ,KAAK,qBAAqB,CAAC,KAAK,CAAC,EAAE;AAClD,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,QAAQ;AAC/B,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;;;AAMpE;;AAEG;AACH,IAAA,IACI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU;;IAExB,IAAI,SAAS,CAAC,KAAc,EAAA;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAsChD,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;;IAErC,IAAI,MAAM,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,UAAU,GAAG,QAAQ;;;AAI9B,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,UAAU,KAAK,SAAS;;IAEtC,IAAI,OAAO,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;;;AAI/B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,OAAO;;AAGhC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,MAAM;;AAG/B,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;;AAGjC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM;;AAG7B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAG9B,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;;AAG/B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAG9B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;;AAG9B,IAAA,IACI,iBAAiB,GAAA;QACnB,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAClD,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;AAEzD,QAAA,OAAO,EAAE;;IAKX,OAAO,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;;;IAI1B,WACS,CAAA,YAAwB,EACrB,EAAqB,EACrB,QAAmB,EACnB,IAAY,EACZ,aAA8B,EAAA;QAJjC,IAAY,CAAA,YAAA,GAAZ,YAAY;QACT,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAI,CAAA,IAAA,GAAJ,IAAI;QACJ,IAAa,CAAA,aAAA,GAAb,aAAa;AA7KjB,QAAA,IAAA,CAAA,SAAS,GAA4B,IAAI,OAAO,EAAkB;QAuBhE,IAAS,CAAA,SAAA,GAAY,KAAK;QAa1B,IAAU,CAAA,UAAA,GAAY,KAAK;AAGrC;;AAEG;QACM,IAAU,CAAA,UAAA,GAAoB,QAAQ;AAE/C;;AAEG;QACM,IAAM,CAAA,MAAA,GAA8B,OAAO;AAEpD;;AAEG;QACM,IAAI,CAAA,IAAA,GAAoB,QAAQ;QAIzC,IAAI,CAAA,IAAA,GAAW,QAAQ;AAEvB;;;AAGG;AACgB,QAAA,IAAA,CAAA,MAAM,GAAiC,IAAI,YAAY,EAAkB;AAEzE,QAAA,IAAA,CAAA,cAAc,GAAuC,IAAI,YAAY,EAAwB;QAGhH,IAAS,CAAA,SAAA,GAAY,KAAK;AAG1B,QAAA,IAAA,CAAA,GAAG,GAAW,CAAA,OAAA,EAAU,WAAW,EAAE,EAAE;;IA0GvC,eAAe,GAAA;;QAEb,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,UAAU,CAAC,MAAK;AAChD,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,eAAe,CAAC;SACzE,CAAC,CAAC;;IAGL,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG3B,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ;AAC9B,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;IAGxB,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,YAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;;IAI1B,iBAAiB,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,YAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;;8GA5Mf,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,+lCC5O3B,+OAQA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiB,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDoOa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,QAAQ,YAER,OAAO,EAAA,eAAA,EACA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,+OAAA,EAAA;uLAaV,IAAI,EAAA,CAAA;sBAAZ;gBAKG,QAAQ,EAAA,CAAA;sBAHX;;sBACA,WAAW;uBAAC,gBAAgB;;sBAC5B,WAAW;uBAAC,oBAAoB;gBAiB7B,SAAS,EAAA,CAAA;sBADZ;gBAaQ,UAAU,EAAA,CAAA;sBAAlB;gBAKQ,MAAM,EAAA,CAAA;sBAAd;gBAKQ,IAAI,EAAA,CAAA;sBAAZ;gBAID,IAAI,EAAA,CAAA;sBAFH;;sBACA,WAAW;uBAAC,WAAW;gBAOL,MAAM,EAAA,CAAA;sBAAxB;gBAEkB,cAAc,EAAA,CAAA;sBAAhC;gBAGD,SAAS,EAAA,CAAA;sBADR,WAAW;uBAAC,cAAc;gBAI3B,GAAG,EAAA,CAAA;sBADF,WAAW;uBAAC,SAAS;gBAIlB,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,yBAAyB;gBAWlC,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,0BAA0B;gBAWnC,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,oBAAoB;gBAM7B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,IAAI,EAAA,CAAA;sBADP,WAAW;uBAAC,mBAAmB;gBAM5B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,qBAAqB;gBAM9B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,IAAI,EAAA,CAAA;sBADP,WAAW;uBAAC,iBAAiB;gBAM1B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAM3B,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,mBAAmB;gBAM5B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAM3B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,kBAAkB;gBAM3B,iBAAiB,EAAA,CAAA;sBADpB,WAAW;uBAAC,OAAO;gBAUpB,OAAO,EAAA,CAAA;sBAFN,YAAY;uBAAC,gBAAgB;;sBAC7B,YAAY;uBAAC,mBAAmB;;;AE/YnC;;;;AAIG;AA4BH;;;;;;;;;;;;;;;;;;;;AAoBG;AASG,MAAO,mBAAoB,SAAQ,gBAAgB,CAAA;AAIvD,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK;;AAgB9C,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;;IAG3B,WACS,CAAA,YAA0C,EACvC,YAA4B,EAC5B,QAAmB,EACnB,IAAY,EACZ,aAA8B,EAAA;QAExC,KAAK,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC;QANzD,IAAY,CAAA,YAAA,GAAZ,YAAY;QACT,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAI,CAAA,IAAA,GAAJ,IAAI;QACJ,IAAa,CAAA,aAAA,GAAb,aAAa;AA5BN,QAAA,IAAA,CAAA,QAAQ,GAA2B,IAAI,OAAO,EAAiB;AAMlF;;AAEG;AACM,QAAA,IAAA,CAAA,aAAa,GAAa,CAAC,KAAK,CAAC;AAE1C;;AAEG;AACO,QAAA,IAAA,CAAA,MAAM,GAAqC,IAAI,YAAY,EAAsB;QAE/C,IAAe,CAAA,eAAA,GAAG,IAAI;;IAiBlE,eAAe,GAAA;QACb,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,EAAE,OAAO,EAAiB,KAAK,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,EACpE,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,EACtB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAEzB,SAAS,CAAC,CAAC,KAAa,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;;AAG9E,IAAA,cAAc,CAAC,OAAe,EAAA;QACtC,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC;;8GAhDlC,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA2E,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EALjB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,mBAAmB,EAAE;AACpE,SAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGQ,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAR/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,SAAS,EAAE;AACP,wBAAA,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,qBAAqB,EAAE;AACpE,qBAAA;AACD,oBAAA,UAAU,EAAE;AACf,iBAAA;iLAYU,aAAa,EAAA,CAAA;sBAArB;gBAKS,MAAM,EAAA,CAAA;sBAAf;gBAE2C,eAAe,EAAA,CAAA;sBAA1D,WAAW;uBAAC,oBAAoB;gBAGjC,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;ACjFrC;;;;AAIG;AAuCH;;;;;;;;;;;;;;;;;;;;;AAqBG;MAYU,kBAAkB,CAAA;AAyB7B,IAAA,IAEI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;;IAEvB,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAc/C,IAAA,IACI,SAAS,GAAA;AACX,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ;;AAGxB,IAAA,IACI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,OAAO;;AAGrB,IAAA,IACI,YAAY,GAAA;AACd,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS;;AAGnC,IAAA,IACI,aAAa,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,OAAO;AACL,gBAAA,CAAA,MAAA,EAAS,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAE,CAAA;AAC9B,gBAAA,CAAA,KAAA,EAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAE,CAAA;gBACjC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;aACxD;;AAGH,QAAA,OAAO,CAAC,CAAQ,KAAA,EAAA,IAAI,CAAC,IAAI,CAAA,CAAE,CAAC;;AAI9B,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;;IAI3B,QAAQ,CAAC,EAAE,MAAM,EAAc,EAAA;QAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAmB,KAAK,GAAG,CAAC,YAAY,CAAC,aAAa,KAAK,MAAM,CAAC;QACrG,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;;;AAInC,IAAA,WAAA,CACY,WAAoC,EACpC,EAAqB,EACrB,QAAmB,EACnB,IAAY,EACZ,YAA4B,EAC5B,iCAA6F,EAC7F,gBAA0C,EAC1C,aAA8B,EAAA;QAP9B,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAI,CAAA,IAAA,GAAJ,IAAI;QACJ,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAiC,CAAA,iCAAA,GAAjC,iCAAiC;QACjC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAa,CAAA,aAAA,GAAb,aAAa;AA7FN,QAAA,IAAA,CAAA,QAAQ,GAAkB,IAAI,OAAO,EAAQ;AAC7C,QAAA,IAAA,CAAA,QAAQ,GAA2B,IAAI,OAAO,EAAiB;AAC/D,QAAA,IAAA,CAAA,SAAS,GAA4B,IAAI,OAAO,EAAkB;QAC3E,IAAO,CAAA,OAAA,GAAY,KAAK;AAOlC;;AAEG;QAEH,IAAI,CAAA,IAAA,GAAoB,QAAQ;QAIhC,IAAQ,CAAA,QAAA,GAAW,CAAC;QAIpB,IAAI,CAAA,IAAA,GAAW,SAAS;QAUd,IAAS,CAAA,SAAA,GAAY,KAAK;QAIpC,IAAW,CAAA,WAAA,GAAkB,IAAI;AAEjC;;;AAGG;AACgB,QAAA,IAAA,CAAA,SAAS,GAAiC,IAAI,YAAY,EAAkB;;IAsD/F,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC;AACF,aAAA,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI;AAC9B,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,EACzB,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAClE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEzB,aAAA,SAAS,CAAC,CAAC,SAAkB,KAAK,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;;IAGrE,kBAAkB,GAAA;QAChB,IAAI,CAAC,cAAc,EAAE;QACrB,IAAI,CAAC,yBAAyB,EAAE;;IAGlC,eAAe,GAAA;QACb,IAAI,CAAC,6BAA6B,EAAE;QACpC,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,kBAAkB,EAAE;QACzB,IAAI,CAAC,cAAc,EAAE;QACrB,IAAI,CAAC,eAAe,EAAE;QACtB,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,qBAAqB,EAAE;QAC5B,IAAI,CAAC,YAAY,EAAE;;QAGnB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAC1B,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,eAAe,CAAC;SACxE,CAAC,CACH;;IAGH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;;IAGZ,cAAc,GAAA;AACtB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACpB,aAAA,MAAM,CAAC,IAAI,CAAC,IAAI;AAChB,aAAA,yBAAyB,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;AAC9D,aAAA,QAAQ,EAAE;;IAGL,6BAA6B,GAAA;AACrC,QAAA,IAAI,CAAC;AACF,aAAA,iBAAiB;AACjB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,aAAA,SAAS,CAAC,CAAC,SAA4B,KAAK,IAAI,CAAC,UAAU,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC;;IAG5F,iBAAiB,GAAA;QACzB,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CACxC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAiB,KAAK,MAAM,KAAK,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CACjF;QACD,MAAM,iBAAiB,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAE1F;AACG,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,aAAA,SAAS,CAAC,CAAC,KAAoB,KAAK,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAExE;aACG,IAAI,CACH,MAAM,CAAC,CAAC,EAAE,OAAO,EAAiB,KAAK,OAAO,KAAK,KAAK,CAAC,EACzD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEzB,aAAA,SAAS,CAAC,CAAC,KAAoB,KAAI;YAClC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;;YAE1C,KAAK,CAAC,cAAc,EAAE;AACxB,SAAC,CAAC;QAEJ;AACG,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,EAAE,OAAO,EAAiB,KAAK,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,EACzE,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EACrC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAEzB,SAAS,CAAC,CAAC,WAA2B,KAAK,WAAW,CAAC,OAAO,EAAE,CAAC;;IAG5D,kBAAkB,GAAA;AAC1B,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CACtC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAiB,KAAK,MAAM,KAAK,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,aAAa,CAAC,CAC5F;QAED;aACG,IAAI,CACH,MAAM,CAAC,CAAC,EAAE,OAAO,EAAiB,KAAI;YACpC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,EAAE,IAAI,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;SAChG,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAEzB,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE;AACtC,YAAA,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE;AACnC,YAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;AACxB,SAAC,CAAC;;IAGI,cAAc,GAAA;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,UAA0B,KAAI;AACrF,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;AAC1B,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC;AAC3C,SAAC,CAAC;;IAGM,eAAe,GAAA;QACvB,IAAI,CAAC,IAAI,CAAC;AACP,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EACpB,SAAS,CAAC,CAAC,IAA+B,KAAK,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAmB,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EACvG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEzB,aAAA,SAAS,CAAC,CAAC,WAA2B,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;IAGvE,gBAAgB,GAAA;QACxB,IAAI,CAAC,IAAI,CAAC;AACP,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EACpB,SAAS,CAAC,CAAC,IAA+B,KAAK,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAmB,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EACzG,MAAM,CAAC,CAAC,YAA4B,KAAK,YAAY,KAAK,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EACrF,GAAG,CAAC,CAAC,YAA4B,KAAK,YAAY,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EACtE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEzB,aAAA,SAAS,CAAC,CAAC,kBAA2B,KAAI;YACzC,IAAI,kBAAkB,EAAE;AACtB,gBAAA,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE;;iBAClC;AACL,gBAAA,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE;;AAEvC,SAAC,CAAC;;IAGI,YAAY,GAAA;QACpB,IAAI,CAAC,IAAI,CAAC;AACP,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EACpB,MAAM,CAAC,CAAC,IAA+B,KAAK,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,EAC9D,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAEzB,SAAS,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;;IAGrC,qBAAqB,GAAA;QAC7B,IAAI,CAAC,UAAU,CAAC;aACb,IAAI,CACH,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC,EAC1C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEzB,aAAA,SAAS,CAAC,CAAC,WAA0B,KAAI;AACxC,YAAA,IAAI,CAAC,WAAW,GAAG,WAAW;AAC9B,YAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;AACxB,SAAC,CAAC;;AAGI,IAAA,aAAa,CAAC,SAAkB,EAAA;AACxC,QAAA,IAAI,CAAC,OAAO,GAAG,SAAS;AACxB,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;QAEtB,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,EAAE;YAC/C,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;YAClC;;;AAIF,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE;YAC5C,IAAI,CAAC,UAAU,EAAE;;aACZ;AACL,YAAA,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE;;;AAI9B,IAAA,mBAAmB,CAAC,OAAe,EAAA;AAC3C,QAAA,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,MAAM;;IAG1C,yBAAyB,GAAA;AACjC,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC9B,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW;;;AAIzD,IAAA,SAAS,CAAC,WAA2B,EAAA;QAC7C,WAAW,CAAC,gBAAgB,EAAE;QAE9B,IAAI,WAAW,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC1C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAmB,KAAI;AACxC,gBAAA,IAAI,GAAG,KAAK,WAAW,EAAE;AACvB,oBAAA,GAAG,CAAC,QAAQ,GAAG,KAAK;;AAExB,aAAC,CAAC;;;IAII,UAAU,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE;;;IAI1C,kBAAkB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,UAAU,EAAE;;;8GA9SV,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA4D,0CAAA,EAAA,EAAA,EAAA,KAAA,EAAAxF,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAyF,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,4oBAQf,mBAAmB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACnB,uBAAuB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,MAAA,EAAA,SAAA,EAFpB,cAAc,EAhBnB,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;AAIX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAX9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,QAAQ,EAAE;;;;AAIX,EAAA,CAAA;AACC,oBAAA,QAAQ,EAAE,WAAW;oBACrB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE;AACf,iBAAA;2SAQkC,IAAI,EAAA,CAAA;sBAApC,eAAe;uBAAC,cAAc;gBACI,QAAQ,EAAA,CAAA;sBAA1C,YAAY;uBAAC,mBAAmB;gBACM,qBAAqB,EAAA,CAAA;sBAA3D,YAAY;uBAAC,uBAAuB;gBAMrC,IAAI,EAAA,CAAA;sBADH;gBAKD,QAAQ,EAAA,CAAA;sBAFP;;sBACA,WAAW;uBAAC,eAAe;gBAK5B,IAAI,EAAA,CAAA;sBAFH;;sBACA,WAAW;uBAAC,WAAW;gBAKpB,QAAQ,EAAA,CAAA;sBAFX;;sBACA,WAAW;uBAAC,2BAA2B;gBAWxC,WAAW,EAAA,CAAA;sBADV,WAAW;uBAAC,4BAA4B;gBAOtB,SAAS,EAAA,CAAA;sBAA3B;gBAGG,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,8BAA8B;gBAMvC,UAAU,EAAA,CAAA;sBADb,WAAW;uBAAC,aAAa;gBAMtB,YAAY,EAAA,CAAA;sBADf,WAAW;uBAAC,wBAAwB;gBAMjC,aAAa,EAAA,CAAA;sBADhB,WAAW;uBAAC,OAAO;gBAcpB,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;gBAMnC,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;AC1JnC;;;;AAIG;MA0BU,WAAW,CAAA;8GAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,iBAVpB,cAAc;YACd,kBAAkB;AAClB,YAAA,mBAAmB,aANnB,YAAY;AACZ,YAAA,YAAY,aAQZ,cAAc;YACd,kBAAkB;YAClB,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAGV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,YAdpB,YAAY;YACZ,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAaH,WAAW,EAAA,UAAA,EAAA,CAAA;kBAhBvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,YAAY;AACb,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACZ,cAAc;wBACd,kBAAkB;wBAClB,mBAAmB;AACpB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,cAAc;wBACd,kBAAkB;wBAClB,mBAAmB;AACpB,qBAAA;AACF,iBAAA;;;AC7BD;;;;AAIG;AAEI,MAAM,oBAAoB,GAAW;AAY5C;;AAEG;MACU,0BAA0B,CAAA;AACrC,IAAA,WAAA;AACE;;AAEG;AACa,IAAA,IAAO,EAChB,QAAqD;AAC5D;;AAEG;AACI,IAAA,QAAiB,EACR,KAAa,EAAA;QANb,IAAI,CAAA,IAAA,GAAJ,IAAI;QACb,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAIR,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACC,IAAK,CAAA,KAAA,GAAL,KAAK;;AAGvB;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM;;AAEnD;;ACzCD;;;;AAIG;AAOH;;;AAGG;MAEU,uBAAuB,CAAA;IAClC,MAAM,CAAC,KAAa,EAAE,IAAqC,EAAA;QACzD,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI;;QAGb,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,QAAyC,EAAE,IAAmC,KAAI;AACpG,YAAA,IAAI,gBAAiD;AAErD,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;AACpD,gBAAA,IAAI,CAAC,QAAQ,GAAG,gBAAgB;;AAGlC,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AAErB,YAAA,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,EAAE;AAC/C,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,gBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;;iBACd,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;AACjD,gBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGrB,YAAA,OAAO,QAAQ;SAChB,EAAE,EAAE,CAAC;;IAGE,eAAe,CAAC,IAAO,EAAE,WAAmB,EAAA;QACpD,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,iBAAiB,EAAE;QAC5D,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACrC,MAAM,WAAW,GAAG,CAAA,EAAG,GAAG,CAAA,CAAE,CAAC,IAAI,EAAE,CAAC,iBAAiB,EAAE;AACvD,YAAA,IAAI,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AACvC,gBAAA,OAAO,IAAI;;;AAIf,QAAA,OAAO,KAAK;;8GApCH,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAvB,uBAAuB,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC;;;ACfD;;;;AAIG;IAiCS;AAAZ,CAAA,UAAY,eAAe,EAAA;AACzB,IAAA,eAAA,CAAA,WAAA,CAAA,GAAA,KAAiB;AACjB,IAAA,eAAA,CAAA,YAAA,CAAA,GAAA,MAAmB;AACnB,IAAA,eAAA,CAAA,MAAA,CAAA,GAAA,EAAS;AACX,CAAC,EAJW,eAAe,KAAf,eAAe,GAI1B,EAAA,CAAA,CAAA;AACD,MAAM,cAAc,GAAsB;AACxC,IAAA,eAAe,CAAC,SAAS;AACzB,IAAA,eAAe,CAAC,UAAU;AAC1B,IAAA,eAAe,CAAC,IAAI;CACrB;AAED;;AAEG;MAKU,eAAe,CAAA;AAJ5B,IAAA,WAAA,GAAA;AAQY,QAAA,IAAA,CAAA,IAAI,GAAgC,IAAI,YAAY,EAAiB;AAQhF;AANC,IAAA,QAAQ,CAAC,WAA0B,EAAA;QACjC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACvC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;;AAEjC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;;8GAVlB,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CAAA,QAAA,EAAA,UAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAEkB,QAAQ,EAAA,CAAA;sBAAxB,KAAK;uBAAC,QAAQ;gBAGL,IAAI,EAAA,CAAA;sBAAb;;AAiBH;;;;AAIG;MAKU,yBAAyB,CAAA;8GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE;AACf,iBAAA;;MAaY,mBAAmB,CAAA;AAVhC,IAAA,WAAA,GAAA;AAWW,QAAA,IAAA,CAAA,SAAS,GAAoB,eAAe,CAAC,IAAI;AAa3D;IAXC,WAAW,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,SAAS,KAAK,eAAe,CAAC,SAAS;;IAGrD,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,KAAK,eAAe,CAAC,UAAU;;IAGtD,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE;;8GAZvC,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EARlB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;AAKX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAnJ,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAV/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,QAAQ,EAAE;;;;;AAKX,EAAA,CAAA;AACC,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAEU,SAAS,EAAA,CAAA;sBAAjB;;AAeH;;AAEG;MAgBU,qBAAqB,CAAA;AAchC;;AAEG;IACH,IAEI,QAAQ,CAAC,KAAK,EAAA;AAChB,QAAA,IAAI,CAAC,aAAa,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAEnD,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,aAAa;;IAK3B,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,QAAQ,EAAE;;;IAInB,WACU,CAAA,IAAqB,EACc,SAAgC,EAAA;QADnE,IAAI,CAAA,IAAA,GAAJ,IAAI;QAC+B,IAAS,CAAA,SAAA,GAAT,SAAS;QAxB9C,IAAa,CAAA,aAAA,GAAY,KAAK;;IA2BtC,WAAW,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,SAAS,KAAK,eAAe,CAAC,SAAS;;IAGrD,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,KAAK,eAAe,CAAC,UAAU;;IAGtD,QAAQ,GAAA;AACN,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,EAAE;AAC5C,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;;IAGjC,cAAc,GAAA;QACZ,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,YAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAA,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE;YACjC,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;SACpD;;IAGH,yBAAyB,GAAA;QACvB,OAAO,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI;;IAG1B,iBAAiB,GAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACxC,QAAA,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;;IAG3D,gBAAgB,GAAA;QACtB,MAAM,kBAAkB,GAAG,cAAc;AACzC,QAAA,IAAI,kBAAkB,GAAG,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;AACvE,QAAA,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,EAAE;YACnD,kBAAkB,GAAG,CAAC;;AAExB,QAAA,OAAO,kBAAkB,CAAC,kBAAkB,CAAC;;AA5EpC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,8CAoCtB,yBAAyB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AApCxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAElB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,CAAA,cAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,yBAAyB,EAAU,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,EAfhD,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;AAUX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA/BU,mBAAmB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAkCnB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAfjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE;;;;;;;;;;AAUX,EAAA,CAAA;AACC,oBAAA,UAAU,EAAE;AACf,iBAAA;;0BAqCI,MAAM;2BAAC,yBAAyB;yCAjCnC,QAAQ,EAAA,CAAA;sBADP,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,yBAAyB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;gBAOvC,SAAS,EAAA,CAAA;sBAA/B,KAAK;uBAAC,cAAc;gBAUjB,QAAQ,EAAA,CAAA;sBAFX;;sBACA,WAAW;uBAAC,gBAAgB;gBAU7B,aAAa,EAAA,CAAA;sBADZ,YAAY;uBAAC,OAAO;;;AC9JvB;;;;AAIG;AAOH;;;AAGG;MAEU,qBAAqB,CAAA;IAEhC,IAAI,CAAC,OAAsB,EAAE,IAAqC,EAAA;QAChE,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,IAAI;;QAGb,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACtE,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;AACvB,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC;;;AAGrD,QAAA,OAAO,MAAM;;AAGL,IAAA,UAAU,CAClB,OAAsB,EACtB,EAAiC,EACjC,EAAiC,EAAA;AAEjC,QAAA,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM;AAC1B,QAAA,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS;QAC7B,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;QACtB,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;QAEtB,IAAI,GAAG,GAAG,CAAC;AAEX,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE;YACT,GAAG,GAAG,CAAC;;AAET,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE;YACT,GAAG,GAAG,CAAC,CAAC;;AAGV,QAAA,OAAO,GAAG,KAAK,eAAe,CAAC,SAAS,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;;8GAnChD,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAArB,qBAAqB,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC;;;ACfD;;;;AAIG;MAYU,iBAAiB,CAAA;AAC5B,IAAA,MAAM,CAAC,IAAqC,EAAE,GAAM,EAAE,UAA2B,EAAE,EAAA;QACjF,MAAM,IAAI,GAAkC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;AAChE,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;QAEpB,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACtC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAgC,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;;;AAInG,IAAA,QAAQ,CAAC,IAAqC,EAAE,GAAM,EAAE,UAA2B,EAAE,EAAA;QACnF,MAAM,IAAI,GAAkC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;AAChE,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;QAErB,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACtC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAgC,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;;;AAIrG,IAAA,MAAM,CAAC,IAAqC,EAAE,GAAM,EAAE,UAA2B,EAAE,EAAA;QACjF,MAAM,IAAI,GAAkC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;AAChE,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC;;aAC5B;YACL,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC;;;IAI3B,IAAI,CAAC,IAAqC,EAAE,GAAM,EAAA;AACxD,QAAA,MAAM,OAAO,GAAoC,CAAC,GAAG,IAAI,CAAC;AAE1D,QAAA,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;AAC1B,YAAA,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,EAAE;AACrB,gBAAA,OAAO,IAAI;;AAGb,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;gBACtB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;;;AAIlC,QAAA,OAAO,SAAS;;8GAzCP,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAjB,iBAAiB,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B;;;ACfD;;;;AAIG;MAOU,qBAAqB,CAAA;AADlC,IAAA,WAAA,GAAA;AAGU,QAAA,IAAA,CAAA,cAAc,GAAsB;AAC1C,YAAA,UAAU,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI;YAC7B,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,SAAS;YAC5C,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ;SAClC;AA+CF;AA7CC,IAAA,mBAAmB,CACjB,KAAU,EACV,aAA+B,EAC/B,QAAgB,oBAAoB,EAAA;QAEpC,MAAM,OAAO,GAAoB,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,aAAa,EAAE;QAE7E,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC;;AAGrC,IAAA,QAAQ,CAAI,KAAU,EAAE,OAAwB,EAAE,KAAa,EAAA;QACrE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,OAAO;AAE9D,QAAA,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,IAAG;AACtB,YAAA,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC;AAC1C,YAAA,IAAI,QAAyC;YAC7C,IAAI,aAAa,EAAE;AACjB,gBAAA,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC;;AAGxE,YAAA,OAAO,IAAI,0BAA0B,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;AAChG,SAAC,CAAC;;AAGJ,IAAA,eAAe,CAAC,KAAsC,EAAA;QACpD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,GAAoC,EAAE,IAAmC,KAAI;AAChG,YAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YAEd,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACvC,gBAAA,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;;AAGlD,YAAA,OAAO,GAAG;SACX,EAAE,EAAE,CAAC;;AAGR,IAAA,IAAI,CAAC,KAAsC,EAAA;AACzC,QAAA,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAmC,KAAI;AACvD,YAAA,IAAI,QAAyC;AAC7C,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;gBACtB,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;;AAErC,YAAA,OAAO,IAAI,0BAA0B,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC;AACvF,SAAC,CAAC;;8GAnDO,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAArB,qBAAqB,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC;;;ACVD;;;;AAIG;AAmBG,MAAO,oBAAwB,SAAQ,YAA2C,CAAA;AAYtF,IAAA,WAAA,CAAoB,WAAqC,EACrC,aAAyC,EACzC,eAAqC,EACrC,mBAA6C,EAAA;AAC/D,QAAA,KAAK,EAAE;QAJW,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;;AATtB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAAkC,EAAE,CAAC;AAErE,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;AAE/C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC;;IASvE,OAAO,CAAI,IAAS,EAAE,aAA+B,EAAA;QACnD,IAAI,gBAAgB,GAAoC,EAAE;QAC1D,IAAI,IAAI,EAAE;YACR,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,IAAI,EAAE,aAAa,CAAC;;QAGtF,IAAI,CAAC,IAAI,GAAG,IAAI,eAAe,CAAC,gBAAgB,CAAC;QACjD,IAAI,CAAC,wBAAwB,EAAE;;AAGjC,IAAA,OAAO,CACL,gBAAoC,EAAA;QAEpC,OAAO,IAAI,CAAC,UAAU;;AAGxB,IAAA,UAAU,CAAC,gBAAoC,EAAA;;AAG/C,IAAA,MAAM,CAAC,GAAM,EAAA;AACX,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGjC,IAAA,QAAQ,CAAC,GAAM,EAAA;AACb,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;QACnD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;IAGjC,MAAM,CAAC,GAAM,EAAE,OAAyB,EAAA;AACtC,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;IAGjC,aAAa,CAAC,SAAiB,EAAE,OAAyB,EAAA;AACxD,QAAA,MAAM,IAAI,GAAkC,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC;QACrG,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;;;AAInC,IAAA,QAAQ,CAAC,QAAgB,EAAA;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC3C,OAAO,GAAG,GAAG,GAAG,CAAC,KAAK,GAAG,oBAAoB;;AAG/C,IAAA,IAAI,CAAC,WAA0B,EAAA;AAC7B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;;AAGpC,IAAA,MAAM,CAAC,WAAmB,EAAA;AACxB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;;IAG5B,wBAAwB,GAAA;AAChC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI;QAE5B,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC;AAChE,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EACpD,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CACnC;QAEH,MAAM,UAAU,GAAG,aAAa,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC;AAC9D,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CACrC;QAEH;AACG,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,IAAqC,KAAK,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAE/F,aAAA,SAAS,CAAC,CAAC,IAAqC,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;AAG7E,IAAA,UAAU,CAAC,IAAqC,EAAA;AACtD,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC;;AAG1D,IAAA,QAAQ,CAAC,IAAqC,EAAA;AACpD,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC;;AAE7D;MAGY,2BAA2B,CAAA;AACtC,IAAA,WAAA,CAAoB,aAAyC,EACzC,WAAqC,EACrC,eAAqC,EACrC,mBAA6C,EAAA;QAH7C,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;;IAGvC,MAAM,CAAI,IAAS,EAAE,aAA+B,EAAA;QAClD,MAAM,UAAU,GAAG,IAAI,oBAAoB,CACzC,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,mBAAmB,CACzB;AAED,QAAA,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC;AACvC,QAAA,OAAO,UAAU;;8GAhBR,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAoJ,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAA3B,2BAA2B,EAAA,CAAA,CAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC;;;AC9HD;;;;AAIG;MAIU,YAAY,GAAG,IAAI,cAAc,CAAC,cAAc;;MCHhD,gBAAgB,CAAA;AAO3B,IAAA,WAAA,CAAoB,OAAwB,EAAA;QAAxB,IAAO,CAAA,OAAA,GAAP,OAAO;AAHnB,QAAA,IAAA,CAAA,WAAW,GAAkB,IAAI,OAAO,EAAQ;AAChD,QAAA,IAAA,CAAA,WAAW,GAAkB,IAAI,OAAO,EAAQ;;AAIxD,IAAA,UAAU,CAAC,OAAyB,EAAA;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACvB,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;;QAGhE,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACpC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;YACrC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;;;IAI7C,iBAAiB,GAAA;QACf,OAAO,IAAI,CAAC,cAAc;;AAG5B,IAAA,UAAU,CAAC,MAAc,EAAA;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC;AACpD,QAAA,IAAI,QAAQ,GAAG,CAAC,CAAC,EAAE;YACjB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvC,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;;;AAI3B,IAAA,UAAU,CAAC,MAAc,EAAA;QACvB,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YACxC;;AAEF,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;AACnE,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;;IAGzB,eAAe,GAAA;QACb,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC;;AAG1C,IAAA,eAAe,CAAC,MAAc,EAAA;QACpC,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC;QAEpD,IAAI,YAAY,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AACrD,YAAA,OAAO,CAAC;;QAEV,IAAI,YAAY,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/C,YAAA,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM;;AAGnC,QAAA,MAAM,gBAAgB,GAAG,YAAY,GAAG,CAAC;AACzC,QAAA,KAAK,IAAI,CAAC,GAAG,gBAAgB,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YACtC,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC;AACtD,YAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;gBAChB,OAAO,KAAK,GAAG,CAAC;;;AAIpB,QAAA,MAAM,iBAAiB,GAAG,YAAY,GAAG,CAAC;AAC1C,QAAA,KAAK,IAAI,CAAC,GAAG,iBAAiB,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YACvC,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC;AACvD,YAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AAChB,gBAAA,OAAO,KAAK;;;AAIhB,QAAA,MAAM,IAAI,KAAK,CAAC,CAAA,8BAAA,CAAgC,CAAC;;8GAxExC,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAhB,gBAAgB,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B;;;ACJD;;;;AAIG;AAkDH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqFG;AAaG,MAAO,mBAAuB,SAAQ,OAAsC,CAAA;IAGhF,WAAoB,CAAA,iBAAiD,EACzD,OAAwB,EACxB,iBAAoC,EACpC,UAAsB,EACH,IAAY,EAC/B,GAAqB,EACA,QAAQ,EAC7B,QAAoB,EACO,MAAM,EACqB,aAAa,EACV,wBAAwB,EACjF,cAAsC,EAEnB,0BAA0B,EAAA;QAEvD,KAAK,CAAC,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EACpF,wBAAwB,EAAE,cAAc,EAAE,0BAA0B,CAAC;QAhBzD,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QAQE,IAAM,CAAA,MAAA,GAAN,MAAM;QACqB,IAAa,CAAA,aAAA,GAAb,aAAa;QACV,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB;QAG9D,IAA0B,CAAA,0BAAA,GAA1B,0BAA0B;AAOjD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;QAsB7B,IAAY,CAAA,YAAA,GAAW,EAAE;QAY1B,IAAsB,CAAA,sBAAA,GAAY,KAAK;QAGH,IAAS,CAAA,SAAA,GAAG,IAAI;AAxC1D,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;;AAO1B;;;;AAIG;IACH,IAAyB,MAAM,CAAC,IAAmC,EAAA;QACjE,IAAI,CAAC,IAAI,EAAE;YACT;;AAGF,QAAA,IAAI,IAAI,YAAY,oBAAoB,EAAE;AACxC,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;;aACd;YACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC;;AAEpD,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO;;AAKhC;;AAEG;IACH,IACI,iBAAiB,CAAC,KAAc,EAAA;AAClC,QAAA,IAAI,CAAC,sBAAsB,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAE5D,IAAA,IAAI,iBAAiB,GAAA;QACnB,OAAO,IAAI,CAAC,sBAAsB;;IAOpC,eAAe,GAAA;QACb,IAAI,CAAC,cAAc,EAAE;QACrB,MAAM,WAAW,GAAG,KAAK,CACvB,IAAI,CAAC,eAAe,CAAC,OAAO,EAC5B,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAClC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CACnC;QACD,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aACtC,SAAS,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;AAEzC,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;YAC3B,IAAI,CAAC,oBAAoB,EAAE;AAE3B,YAAA,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAC7E,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,aAAa;AAC9D,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;iBAC7B,SAAS,CAAC,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;;;IAInD,WAAW,GAAA;QACT,KAAK,CAAC,WAAW,EAAE;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;;IAG1B,SAAS,CAAC,GAA2B,EAAE,OAAyB,EAAA;QAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;AACvC,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC;;AAGtD,IAAA,aAAa,CAAC,IAA6B,EAAA;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;;IAG7C,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,OAAO,CAAA,EAAG,GAAG,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG;;AAE3C,QAAA,OAAO,EAAE;;IAGX,YAAY,CAAC,IAA6B,EAAE,UAAkB,EAAA;AAC5D,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE;YAClC,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK;;AAElD,QAAA,OAAO,oBAAoB;;AAGrB,IAAA,aAAa,CAAC,GAA2B,EAAA;QAC/C,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC;;AAGrD,IAAA,cAAc,CAAC,IAA6B,EAAA;QAClD,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;;AAGvD,IAAA,kBAAkB,CAAC,MAAmB,EAAA;QAC5C,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,aAAa,CAAC;;AAG7C,IAAA,iBAAiB,CAAC,KAAkB,EAAA;AAC1C,QAAA,MAAM,aAAa,GAAqB,IAAI,CAAC,UAAU,CAAC,aAAa;AAErE,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC7C,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAiE;YAEvG,IAAI,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBACxC,OAAO,UAAU,CAAC,OAAO;;;AAI7B,QAAA,OAAO,SAAS;;IAGV,UAAU,GAAA;AAChB,QAAA,IAAI,MAAwE;AAE5E,QAAA,IAAI,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE;AACrC,YAAA,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAwC;;aACvE;AACL,YAAA,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,KAAuC;;QAGvE,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC;;IAG7C,eAAe,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM;;AAGzB,IAAA,aAAa,CAAC,UAAkB,EAAA;QACtC,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,KAAK,UAAU;;IAGpC,cAAc,GAAA;QACpB,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,8BAAA,CAAgC,CAAC;;QAEnD,IAAI,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE;AACzC,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,qCAAA,CAAuC,CAAC;;QAE1D,IAAI,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE;AACzC,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,qCAAA,CAAuC,CAAC;;;IAIpD,oBAAoB,GAAA;AAC1B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU;AACpC,QAAA,MAAM,UAAU,GAAI,IAAI,CAAC,kBAA8D;QAEvF,MAAM,aAAa,GAAa;AAC7B,aAAA,MAAM,CAAC,CAAC,GAAiC,KAAK,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;aACnE,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC;QAEvB,MAAM,aAAa,GAAa;AAC7B,aAAA,MAAM,CAAC,CAAC,GAAiC,KAAK,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;aACnE,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC;QAEvB,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YAClD;;AAGF,QAAA,MAAM,OAAO,GAAG;YACd,IAAI,CAAC,qBAAqB,CAAC,KAAwC;YACnE,IAAI,CAAC,eAAe,CAAC,KAAuC;YAC5D,IAAI,CAAC,qBAAqB,CAAC,KAAwC;SACpE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAElB,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC5B,YAAA,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE;AAClC,gBAAA,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;;AAG3B,YAAA,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE;AAClC,gBAAA,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;;;;8GAtMpB,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAOP,MAAM,EAAA,SAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,EAAA,EAAA,KAAA,EAET,WAAW,EAAA,EAAA,EAAA,KAAA,EAAAC,UAAA,EAAA,EAAA,EAAA,KAAA,EAEX,SAAS,EAAA,EAAA,EAAA,KAAA,EACT,yBAAyB,EAAA,EAAA,EAAA,KAAA,EACzB,4BAA4B,EAAA,EAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,EAAA,EAAA,KAAA,EAEJ,8BAA8B,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAf/D,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EARjB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE;AAC3D,YAAA,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,mBAAmB,EAAE;YACxD,gBAAgB;AAChB,YAAA,GAAG,kBAAkB;AACxB,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,0MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,qYAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGQ,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAZ/B,SAAS;+BACI,mBAAmB,EAAA,QAAA,EACnB,iBAAiB,EAEhB,SAAA,EAAA;AACP,wBAAA,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,qBAAqB,EAAE;AAC3D,wBAAA,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,qBAAqB,EAAE;wBACxD,gBAAgB;AAChB,wBAAA,GAAG,kBAAkB;AACxB,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,MAAA,EAAA,CAAA,qYAAA,CAAA,EAAA;;0BASN,SAAS;2BAAC,MAAM;;0BAEhB,MAAM;2BAAC,WAAW;;0BAElB,MAAM;2BAAC,SAAS;;0BAChB,MAAM;2BAAC,yBAAyB;;0BAChC,MAAM;2BAAC,4BAA4B;;0BAEnC;;0BAAY;;0BAAY,MAAM;2BAAC,8BAA8B;yCAiBjD,MAAM,EAAA,CAAA;sBAA9B,KAAK;uBAAC,YAAY;gBAaV,YAAY,EAAA,CAAA;sBAApB;gBAMG,iBAAiB,EAAA,CAAA;sBADpB;gBAU2C,SAAS,EAAA,CAAA;sBAApD,WAAW;uBAAC,oBAAoB;;;AClMnC;;;AAGG;AAMG,MAAO,yBAA6B,SAAQ,iBAAoB,CAAA;AAQpE,IAAA,WAAA,CACE,QAA0B,EAC1B,OAAwB,EAChB,cAAgC,EAAA;AAExC,QAAA,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC;QAFhB,IAAc,CAAA,cAAA,GAAd,cAAc;;AAKxB,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;AAE1B,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;;;AAIpC,IAAA,aAAa,CAAC,OAAyB,EAAA;AACrC,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC;;IAGzC,iBAAiB,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE;;;AAIhD,IAAA,UAAU,CAAC,MAAc,EAAA;AACvB,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC;;;AAIxC,IAAA,UAAU,CAAC,MAAc,EAAA;AACvB,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC;;8GAvC7B,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,yBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,SAAA,EAHvB,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,yBAAyB,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGpE,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;oBAC9B,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAA2B,yBAAA,EAAE,CAAC;AAC7E,oBAAA,UAAU,EAAE;AACf,iBAAA;0IAOmC,OAAO,EAAA,CAAA;sBAAxC,KAAK;uBAAC,yBAAyB;;AA0C5B,MAAO,+BAAgC,SAAQ,uBAAuB,CAAA;AAO1E,IAAA,WAAA,CACE,QAA0B,EAC1B,OAAwB,EAChB,cAAgC,EAAA;AAExC,QAAA,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC;QAFhB,IAAc,CAAA,cAAA,GAAd,cAAc;;AAKxB,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;AAE1B,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;;;AAIpC,IAAA,aAAa,CAAC,OAAyB,EAAA;AACrC,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC;;IAGzC,iBAAiB,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE;;;AAIhD,IAAA,UAAU,CAAC,MAAc,EAAA;AACvB,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC;;;AAIxC,IAAA,UAAU,CAAC,MAAc,EAAA;AACvB,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC;;8GAtC7B,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA/B,+BAA+B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,wBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,SAAA,EAH7B,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGhF,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAL3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,0BAA0B;oBACpC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAiC,+BAAA,EAAE,CAAC;AACzF,oBAAA,UAAU,EAAE;AACf,iBAAA;0IAMkC,OAAO,EAAA,CAAA;sBAAvC,KAAK;uBAAC,wBAAwB;;AA0C3B,MAAO,+BAAgC,SAAQ,uBAAuB,CAAA;AAO1E,IAAA,WAAA,CACE,QAA0B,EAC1B,OAAwB,EAChB,cAAgC,EAAA;AAExC,QAAA,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC;QAFhB,IAAc,CAAA,cAAA,GAAd,cAAc;;AAKxB,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;AAE1B,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;;;AAIpC,IAAA,aAAa,CAAC,OAAyB,EAAA;AACrC,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC;;IAGzC,iBAAiB,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE;;;AAIhD,IAAA,UAAU,CAAC,MAAc,EAAA;AACvB,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC;;;AAIxC,IAAA,UAAU,CAAC,MAAc,EAAA;AACvB,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC;;8GAtC7B,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA/B,+BAA+B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,wBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,SAAA,EAH7B,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGhF,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAL3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,0BAA0B;oBACpC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAiC,+BAAA,EAAE,CAAC;AACzF,oBAAA,UAAU,EAAE;AACf,iBAAA;0IAMkC,OAAO,EAAA,CAAA;sBAAvC,KAAK;uBAAC,wBAAwB;;AAqCjC;;;AAGG;AAMG,MAAO,0BAA2B,SAAQ,kBAAkB,CAAA;8GAArD,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,SAAA,EAHxB,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,0BAA0B,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGtE,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;oBAC/B,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAA4B,0BAAA,EAAE,CAAC;AAC/E,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAGD;;;AAGG;AAMG,MAAO,gCAAiC,SAAQ,wBAAwB,CAAA;8GAAjE,gCAAgC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAhC,gCAAgC,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,SAAA,EAH9B,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,gCAAgC,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGlF,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAL5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,2BAA2B;oBACrC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAkC,gCAAA,EAAE,CAAC;AAC3F,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAGD;;;AAGG;AAMG,MAAO,gCAAiC,SAAQ,wBAAwB,CAAA;8GAAjE,gCAAgC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAhC,gCAAgC,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,SAAA,EAH9B,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,gCAAgC,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGlF,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAL5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,2BAA2B;oBACrC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAkC,gCAAA,EAAE,CAAC;AAC3F,oBAAA,UAAU,EAAE;AACf,iBAAA;;;AC1LM,MAAM,yBAAyB,GAAW;AAEjD;;AAEG;AAaG,MAAO,sBAAuB,SAAQ,cAAc,CAAA;IAgBxD,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB;;QAGF,KAAK,CAAC,yBAAyB;AAC5B,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;AAC1C,aAAA,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;;IAI/C,uBAAuB,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB;;AAGF,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;IAG3C,WAAkC,CAAA,IAAI,EAAS,UAAmC,EAAA;AAChF,QAAA,KAAK,EAAE;QADsC,IAAU,CAAA,UAAA,GAAV,UAAU;AAnCxC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;AAGnD;;;AAGG;QACM,IAAgB,CAAA,gBAAA,GAAW,yBAAyB;AAE7D;;AAEG;QACM,IAAa,CAAA,aAAA,GAAY,IAAI;AAyBpC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAgC;;IAG9C,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;;AA1CnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,kBAoCb,YAAY,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AApCrB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAHpB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,KAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,sBAAsB,EAAE,CAAC,iDAN7D,CAA4C,0CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAS7C,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAZlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAEP,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE,CAA4C,0CAAA,CAAA;;AAEtD,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,kBAAkB;AACzB,wBAAA,IAAI,EAAE,KAAK;AACd,qBAAA;oBACD,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAwB,sBAAA,EAAE,CAAC;AACvE,oBAAA,UAAU,EAAE;AACf,iBAAA;;0BAqCc,MAAM;2BAAC,YAAY;kEA5BvB,gBAAgB,EAAA,CAAA;sBAAxB;gBAKQ,aAAa,EAAA,CAAA;sBAArB;gBAGD,mBAAmB,EAAA,CAAA;sBADlB,YAAY;uBAAC,OAAO;gBAYrB,uBAAuB,EAAA,CAAA;sBADtB,YAAY;uBAAC,UAAU;;AAgCpB,MAAO,4BAA6B,SAAQ,oBAAoB,CAAA;8GAAzD,4BAA4B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAH1B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,KAAA,EAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,EAAA,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,4BAA4B,EAAE,CAAC,iDANzE,CAA6C,2CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAS9C,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAZxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAEP,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,QAAQ,EAAE,CAA6C,2CAAA,CAAA;;AAEvD,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,yBAAyB;AAChC,wBAAA,IAAI,EAAE,KAAK;AACd,qBAAA;oBACD,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAA8B,4BAAA,EAAE,CAAC;AACnF,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAeK,MAAO,4BAA6B,SAAQ,oBAAoB,CAAA;8GAAzD,4BAA4B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAH1B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,KAAA,EAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,EAAA,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,4BAA4B,EAAE,CAAC,iDANzE,CAA6C,2CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAS9C,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAZxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAEP,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,QAAQ,EAAE,CAA6C,2CAAA,CAAA;;AAEvD,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,yBAAyB;AAChC,wBAAA,IAAI,EAAE,KAAK;AACd,qBAAA;oBACD,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAA8B,4BAAA,EAAE,CAAC;AACnF,oBAAA,UAAU,EAAE;AACf,iBAAA;;;AC5FD;;;AAGG;AASG,MAAO,4BAA6B,SAAQ,oBAAoB,CAAA;AARtE,IAAA,WAAA,GAAA;;QAoBU,IAAW,CAAA,WAAA,GAAkB,IAAI;QAejC,IAAW,CAAA,WAAA,GAAkB,IAAI;AAoC1C;AA9DC;;AAEG;AACH,IAAA,IACI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK;;IAEnB,IAAI,IAAI,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;;AAI3B;;;AAGG;AACH,IAAA,IACI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,WAAW;;IAEzB,IAAI,MAAM,CAAC,KAAoB,EAAA;QAC7B,IAAI,CAAC,WAAW,GAAG,CAAC,KAAK,IAAI,KAAK,KAAK;AACrC,cAAE;AACF,cAAE,QAAQ,CAAC,KAA0B,EAAE,EAAE,CAAC;;AAI9C;;;AAGG;AACH,IAAA,IACI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,WAAW;;IAEzB,IAAI,MAAM,CAAC,KAAoB,EAAA;QAC7B,IAAI,CAAC,WAAW,GAAG,CAAC,KAAK,IAAI,KAAK,KAAK;AACrC,cAAE;AACF,cAAE,QAAQ,CAAC,KAA0B,EAAE,EAAE,CAAC;;IAG9C,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;AAC9C,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,0EAAA,CAA4E,CAAC;;;AAIjG,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;;AAGhC,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;AAC9C,YAAA,OAAO,IAAI;;AAGb,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;AACvB,YAAA,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM;;AAG5B,QAAA,OAAO,KAAK,IAAI,IAAI,CAAC,MAAM;;8GA7DlB,4BAA4B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAN1B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,qBAAA,EAAA,MAAA,CAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,4BAA4B,EAAE;AACtE,YAAA,EAAE,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,4BAA4B,EAAE;AACpF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGQ,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBARxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,SAAS,EAAE;AACP,wBAAA,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,8BAA8B,EAAE;AACtE,wBAAA,EAAE,OAAO,EAAE,yBAAyB,EAAE,WAAW,8BAA8B,EAAE;AACpF,qBAAA;AACD,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAMK,IAAI,EAAA,CAAA;sBADP,KAAK;uBAAC,qBAAqB;gBAcxB,MAAM,EAAA,CAAA;sBADT;gBAgBG,MAAM,EAAA,CAAA;sBADT;;;AChDH;;;;AAIG;AAoCG,MAAO,uBAAwB,SAAQ,eAAe,CAAA;AAS1D,IAAA,IACI,WAAW,GAAA;QACb,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC7C,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO,IAAI,CAAC,WAAW;;AAGzB,QAAA,OAAO,IAAI;;AAGb,IAAA,IACI,WAAW,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,EAAE;AACjC,YAAA,OAAO,IAAI,CAAC,eAAe,EAAE;;AAE/B,QAAA,OAAO,IAAI;;AAGb,IAAA,IACI,YAAY,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,EAAE;AACjC,YAAA,OAAO,IAAI,CAAC,eAAe,EAAE;;AAE/B,QAAA,OAAO,IAAI;;AAGb,IAAA,WAAA,CACE,SAAuC,EACvC,UAAmC,EACb,IAAI,EACG,UAAU,EACZ,MAAM,EACzB,SAAuB,EACvB,gBAA0C,EAC1C,aAA+B,EAC/B,EAAqB,EAAA;AAE7B,QAAA,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC;QAPC,IAAU,CAAA,UAAA,GAAV,UAAU;QACZ,IAAM,CAAA,MAAA,GAAN,MAAM;QACzB,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAE,CAAA,EAAA,GAAF,EAAE;AA3CJ,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;QAG9B,IAAkB,CAAA,kBAAA,GAAW,EAAE;QAC/B,IAAmB,CAAA,mBAAA,GAAW,EAAE;AA0CtC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAgC;AAC5C,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;;IAG9B,QAAQ,GAAA;AACN,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;AACzE,YAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,WAAW;AAC3C,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC,YAAY;;AAG/C,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe;aAC/B,IAAI,CACH,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,EAC7D,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAEzB,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;;IAG7C,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;;IAG1B,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;;AAG/B,IAAA,IAAY,mBAAmB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK;cAChC,IAAI,CAAC;AACP,cAAE,IAAI,CAAC,mBAAmB;;IAGtB,eAAe,GAAA;AACrB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAClE,QAAA,IAAI,QAAQ,KAAK,oBAAoB,EAAE;AACrC,YAAA,OAAO,IAAI;;AAGb,QAAA,MAAM,YAAY,GAAG,QAAQ,GAAG,CAAC;QACjC,IAAI,OAAO,GAAW,EAAE;AACxB,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YAC1B,OAAO,GAAG,CAAQ,KAAA,EAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAA,GAAA,EAAM,YAAY,CAAA,CAAA,CAAG;;AACxD,aAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;YACnC,OAAO,GAAG,QAAQ,IAAI,CAAC,mBAAmB,CAAM,GAAA,EAAA,YAAY,GAAG;;QAGjE,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,IAAI;;QAGb,OAAO,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,OAAO,CAAC;;AApG9C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,EAsCxB,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,4BAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,YAAY,EACZ,EAAA,EAAA,KAAA,EAAA,WAAW,aACX,SAAS,EAAA,EAAA,EAAA,KAAA,EAAAxK,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAgE,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAyG,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAxCR,uBAAuB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,EAAA,SAAA,EAHrB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGhE,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBATnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,IAAI,EAAE;AACF,wBAAA,OAAO,EAAE,mBAAmB;AAC5B,wBAAA,MAAM,EAAE,UAAU;AACrB,qBAAA;oBACD,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAyB,uBAAA,EAAE,CAAC;AACzE,oBAAA,UAAU,EAAE;AACf,iBAAA;;0BAuCI,MAAM;2BAAC,YAAY;;0BACnB,MAAM;2BAAC,WAAW;;0BAClB,MAAM;2BAAC,SAAS;sKA9Bf,WAAW,EAAA,CAAA;sBADd,WAAW;uBAAC,aAAa;gBAWtB,WAAW,EAAA,CAAA;sBADd,WAAW;uBAAC,oBAAoB;gBAS7B,YAAY,EAAA,CAAA;sBADf,WAAW;uBAAC,qBAAqB;;AAsF9B,MAAO,6BAA8B,SAAQ,qBAAqB,CAAA;AAKtE,IAAA,IACI,WAAW,GAAA;QACb,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC7C,QAAA,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI;;IAGjC,WACE,CAAA,SAAuC,EACvC,UAAmC,EACb,IAAI,EAClB,aAA+B,EAC/B,EAAqB,EAAA;AAE7B,QAAA,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC;QAHpB,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAE,CAAA,EAAA,GAAF,EAAE;AAfJ,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;AAkBpC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAgC;;IAG9C,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe;aAC/B,IAAI,CACH,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,EAC7D,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAEzB,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;;IAG7C,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;;AAjCf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,qFAc9B,YAAY,EAAA,EAAA,EAAA,KAAA,EAAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAdX,6BAA6B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,cAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,EAAA,cAAA,EAAA,0BAAA,EAAA,EAAA,SAAA,EAH3B,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,6BAA6B,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAG5E,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBATzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,IAAI,EAAE;AACF,wBAAA,OAAO,EAAE,0BAA0B;AACnC,wBAAA,MAAM,EAAE,cAAc;AACzB,qBAAA;oBACD,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAA+B,6BAAA,EAAE,CAAC;AACrF,oBAAA,UAAU,EAAE;AACf,iBAAA;;0BAeI,MAAM;2BAAC,YAAY;qGARlB,WAAW,EAAA,CAAA;sBADd,WAAW;uBAAC,aAAa;;AAyCtB,MAAO,6BAA8B,SAAQ,qBAAqB,CAAA;AAKtE,IAAA,IACI,WAAW,GAAA;QACb,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC7C,QAAA,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI;;IAGjC,WACE,CAAA,SAAuC,EACvC,UAAsB,EACA,IAAI,EAClB,aAA+B,EAC/B,EAAqB,EAAA;AAE7B,QAAA,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC;QAHpB,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAE,CAAA,EAAA,GAAF,EAAE;AAfJ,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;AAkBpC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAgC;;IAG9C,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe;aAC/B,IAAI,CACH,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,EAC7D,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAEzB,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;;IAG7C,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;;AAjCf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,qFAc9B,YAAY,EAAA,EAAA,EAAA,KAAA,EAAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAdX,6BAA6B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,EAAA,cAAA,EAAA,0BAAA,EAAA,EAAA,SAAA,EAH3B,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,6BAA6B,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAG5E,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBATzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,IAAI,EAAE;AACF,wBAAA,OAAO,EAAE,0BAA0B;AACnC,wBAAA,MAAM,EAAE,UAAU;AACrB,qBAAA;oBACD,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAA+B,6BAAA,EAAE,CAAC;AACrF,oBAAA,UAAU,EAAE;AACf,iBAAA;;0BAeI,MAAM;2BAAC,YAAY;qGARlB,WAAW,EAAA,CAAA;sBADd,WAAW;uBAAC,aAAa;;;AC5M5B;;;;AAIG;MAYU,iBAAiB,CAAA;AAG5B,IAAA,MAAM,CAAC,aAAqB,EAAA;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC;;8GAJ5B,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,CAAA,UAAA,EAAA,YAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAEoB,UAAU,EAAA,CAAA;sBAA5B,KAAK;uBAAC,UAAU;;AAOnB;;AAEG;AAMG,MAAO,sBAAuB,SAAQ,iBAAiB,CAAA;AAL7D,IAAA,WAAA,GAAA;;AAMU,QAAA,IAAA,CAAA,OAAO,GAAoB,IAAI,OAAO,EAAU;AAChD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;AAItC;;;AAGG;QACM,IAAY,CAAA,YAAA,GAAW,GAAG;AAuBpC;IArBC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CACH,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,EAC/B,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEzB,aAAA,SAAS,CAAC,CAAC,KAAa,KAAI;AAC3B,YAAA,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;AACrB,SAAC,CAAC;;IAGN,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;AACxB,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;;AAIzB,IAAA,MAAM,CAAC,KAAK,EAAA;QACV,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;;8GA/B5B,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,CAAA,eAAA,EAAA,YAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EAHpB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,sBAAsB,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGvE,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iBAAiB;oBAC3B,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAwB,sBAAA,EAAE,CAAC;AAChF,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAKyB,UAAU,EAAA,CAAA;sBAAjC,KAAK;uBAAC,eAAe;gBAMb,YAAY,EAAA,CAAA;sBAApB;gBAoBD,MAAM,EAAA,CAAA;sBADL,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;AC7DnC;;;;AAIG;AAKH;;AAEG;MAKU,4BAA4B,CAAA;AAEvC,IAAA,SAAS,CAAC,MAAM,EAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;QACrB,MAAM,CAAC,eAAe,EAAE;;AAG1B,IAAA,WAAA,CAAoB,IAA6B,EAAA;QAA7B,IAAI,CAAA,IAAA,GAAJ,IAAI;;8GAPb,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA5B,4BAA4B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAJxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE;AACf,iBAAA;yFAGC,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;ACjBnC;;;;AAIG;AAKH;;AAEG;MAoBU,4BAA4B,CAAA;IAEvC,IACI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;;AAE5B,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,aAAa;;AAI3B,IAAA,SAAS,CAAC,MAAM,EAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;QACrB,MAAM,CAAC,eAAe,EAAE;;AAG1B,IAAA,WAAA,CAAoB,IAA6B,EAAA;QAA7B,IAAI,CAAA,IAAA,GAAJ,IAAI;;8GAhBb,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAjB3B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;AAOX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA/J,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAUU,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAnBxC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EACzB,QAAA,EAAA;;;;;;;AAOX,EAAA,CAAA,EAAA,UAAA,EAQa,KAAK,EAAA,MAAA,EAAA,CAAA,wDAAA,CAAA,EAAA;yFAKf,QAAQ,EAAA,CAAA;sBADX;gBASD,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;ACzCnC;;;;AAIG;AA0CH,MAAM,UAAU,GAAG;;IAEjB,mBAAmB;IAEnB,yBAAyB;IACzB,sBAAsB;IACtB,0BAA0B;IAC1B,uBAAuB;IAEvB,+BAA+B;IAC/B,4BAA4B;IAC5B,gCAAgC;IAChC,6BAA6B;IAE7B,+BAA+B;IAC/B,4BAA4B;IAC5B,gCAAgC;IAChC,6BAA6B;IAE7B,4BAA4B;;IAG5B,eAAe;IACf,qBAAqB;IACrB,mBAAmB;;IAGnB,iBAAiB;IACjB,sBAAsB;IAEtB,4BAA4B;IAC5B,4BAA4B;IAC5B,yBAAyB;CAC1B;MAcY,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAhB,gBAAgB,EAAA,YAAA,EAAA;;YA7C3B,mBAAmB;YAEnB,yBAAyB;YACzB,sBAAsB;YACtB,0BAA0B;YAC1B,uBAAuB;YAEvB,+BAA+B;YAC/B,4BAA4B;YAC5B,gCAAgC;YAChC,6BAA6B;YAE7B,+BAA+B;YAC/B,4BAA4B;YAC5B,gCAAgC;YAChC,6BAA6B;YAE7B,4BAA4B;;YAG5B,eAAe;YACf,qBAAqB;YACrB,mBAAmB;;YAGnB,iBAAiB;YACjB,sBAAsB;YAEtB,4BAA4B;YAC5B,4BAA4B;AAC5B,YAAA,yBAAyB,aAId,YAAY,EAAE,aAAa,EAAE,YAAY,aAEzC,aAAa;;YApCxB,mBAAmB;YAEnB,yBAAyB;YACzB,sBAAsB;YACtB,0BAA0B;YAC1B,uBAAuB;YAEvB,+BAA+B;YAC/B,4BAA4B;YAC5B,gCAAgC;YAChC,6BAA6B;YAE7B,+BAA+B;YAC/B,4BAA4B;YAC5B,gCAAgC;YAChC,6BAA6B;YAE7B,4BAA4B;;YAG5B,eAAe;YACf,qBAAqB;YACrB,mBAAmB;;YAGnB,iBAAiB;YACjB,sBAAsB;YAEtB,4BAA4B;YAC5B,4BAA4B;YAC5B,yBAAyB,CAAA,EAAA,CAAA,CAAA;AAed,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EARhB,SAAA,EAAA;YACT,qBAAqB;YACrB,uBAAuB;YACvB,iBAAiB;YACjB,qBAAqB;YACrB,2BAA2B;AAC5B,SAAA,EAAA,OAAA,EAAA,CATU,YAAY,EAAE,aAAa,EAAE,YAAY,EAEzC,aAAa,CAAA,EAAA,CAAA,CAAA;;2FASb,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAZ5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAE,YAAY,EAAE,aAAa,EAAE,YAAY,CAAE;AACtD,oBAAA,YAAY,EAAE,CAAE,GAAG,UAAU,CAAE;AAC/B,oBAAA,OAAO,EAAE,CAAE,aAAa,EAAE,GAAG,UAAU,CAAE;AACzC,oBAAA,SAAS,EAAE;wBACT,qBAAqB;wBACrB,uBAAuB;wBACvB,iBAAiB;wBACjB,qBAAqB;wBACrB,2BAA2B;AAC5B,qBAAA;AACF,iBAAA;;;AC5FD;;;;AAIG;AA4BH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiOG;MAyCU,iBAAiB,CAAA;AAO5B;;;AAGG;AACH,IAAA,IACI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ;;IAEtB,IAAI,OAAO,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAK9C;;AAEG;AACH,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;;IAEvB,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAuB/C,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;;AAGjC,IAAA,IACI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,MAAM;;AAG/B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,OAAO;;AAGhC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;;AAGlC,IAAA,IACI,iBAAiB,GAAA;QACnB,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAClD,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;AAEzD,QAAA,OAAO,EAAE;;AAGX,IAAA,IACI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,aAAa,KAAK,MAAM;;AAGtC,IAAA,IACI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,aAAa,KAAK,OAAO;;AAGvC,IAAA,IACI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,aAAa,KAAK,OAAO;;AAGvC,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,aAAa,KAAK,KAAK;;IAGrC,WACU,CAAA,cAAiC,EACjC,eAAyC,EACzC,QAAmB,EACnB,WAAoC,EACpC,IAAY,EACV,aAA8B,EAAA;QALhC,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAI,CAAA,IAAA,GAAJ,IAAI;QACF,IAAa,CAAA,aAAA,GAAb,aAAa;AAvHzB,QAAA,IAAA,CAAA,QAAQ,GAAQ,MAAK,GAAI;AACzB,QAAA,IAAA,CAAA,SAAS,GAAQ,MAAK,GAAI;AAElB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;QAa9B,IAAQ,CAAA,QAAA,GAAY,KAAK;QAazB,IAAS,CAAA,SAAA,GAAY,KAAK;AAGlC;;;AAGG;QACM,IAAM,CAAA,MAAA,GAA8B,OAAO;AAEpD;;;AAGG;QACM,IAAa,CAAA,aAAA,GAAuC,KAAK;AAElE;;;AAGG;AACO,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAW;;IA0ErD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB;AACnC,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC7B,SAAS,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;;IAGzD,eAAe,GAAA;;QAEb,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,UAAU,CAAC,MAAK;AAChD,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,eAAe,CAAC;SACxE,CAAC,CAAC;;IAGL,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;;IAG1B,UAAU,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,OAAO,GAAG,MAAM;;AAGxD,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,MAAM,GAAG,OAAO;;AAGxD,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGrB,IAAA,UAAU,CAAC,GAAQ,EAAA;AACjB,QAAA,IAAI,CAAC,OAAO,GAAG,GAAG;AAClB,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;;AAGpC,IAAA,gBAAgB,CAAC,GAAY,EAAA;AAC3B,QAAA,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAC,GAAG,CAAC;AAC1C,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;;AAGpC,IAAA,WAAW,CAAC,KAAY,EAAA;AACtB,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,MAA2B;AAChD,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;QAC5B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AACrC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;;AAG7B,IAAA,YAAY,CAAC,KAAY,EAAA;QACvB,KAAK,CAAC,eAAe,EAAE;;8GAhLd,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAjB,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAmG,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,6sBARf,CAAC;AACJ,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AAChD,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA,CAAC,EA1BI,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;GAoBX,EA5Ba,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,y5CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAtB,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAxD,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACR,OAAO,CAAC,UAAU,EAAE;AAChB,gBAAA,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;AAC9C,gBAAA,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC7C,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClC,UAAU,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;aACnD,CAAC;AACL,SAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FA+BQ,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAxC7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EACT,UAAA,EAAA;wBACR,OAAO,CAAC,UAAU,EAAE;AAChB,4BAAA,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;AAC9C,4BAAA,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;4BAC7C,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;4BAClC,UAAU,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;yBACnD,CAAC;qBACL,EACS,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;AAoBX,EAAA,CAAA,EAAA,SAAA,EAEY,CAAC;AACJ,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,uBAAuB,CAAC;AAChD,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA,CAAC,EACW,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,MAAA,EAAA,CAAA,y5CAAA,CAAA,EAAA;2NAcf,OAAO,EAAA,CAAA;sBADV;gBAcG,QAAQ,EAAA,CAAA;sBADX;gBAcQ,MAAM,EAAA,CAAA;sBAAd;gBAMQ,aAAa,EAAA,CAAA;sBAArB;gBAMS,aAAa,EAAA,CAAA;sBAAtB;gBAGG,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,qBAAqB;gBAM9B,IAAI,EAAA,CAAA;sBADP,WAAW;uBAAC,mBAAmB;gBAM5B,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,oBAAoB;gBAM7B,OAAO,EAAA,CAAA;sBADV,WAAW;uBAAC,sBAAsB;gBAM/B,iBAAiB,EAAA,CAAA;sBADpB,WAAW;uBAAC,OAAO;gBAShB,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,yBAAyB;gBAMlC,UAAU,EAAA,CAAA;sBADb,WAAW;uBAAC,0BAA0B;gBAMnC,UAAU,EAAA,CAAA;sBADb,WAAW;uBAAC,0BAA0B;gBAMnC,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,wBAAwB;;;ACxZvC;;;;AAIG;MAgBU,cAAc,CAAA;8GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAd,cAAc,EAAA,YAAA,EAAA,CAHV,iBAAiB,CAAA,EAAA,OAAA,EAAA,CAH9B,YAAY;AACZ,YAAA,YAAY,aAGJ,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAEhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YANvB,YAAY;YACZ,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAKH,cAAc,EAAA,UAAA,EAAA,CAAA;kBAR1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,YAAY;AACb,qBAAA;oBACD,YAAY,EAAE,CAAC,iBAAiB,CAAC;oBACjC,OAAO,EAAE,CAAC,iBAAiB,CAAC;AAC7B,iBAAA;;;ACnBD;;;;AAIG;;ACJH;;AAEG;;;;"}