@skyux/lookup 6.2.3 → 6.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skyux-lookup.mjs","sources":["../../../../../libs/components/lookup/src/lib/modules/shared/sky-lookup-resources.module.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete-input.directive.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete-search-async-disabled.pipe.ts","../../../../../libs/components/lookup/src/lib/modules/shared/sky-lookup-string-utils.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete-adapter.service.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete-default-search-function.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/types/autocomplete-message-type.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete.component.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete.component.html","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete.module.ts","../../../../../libs/components/lookup/src/lib/modules/country-field/country-field.component.ts","../../../../../libs/components/lookup/src/lib/modules/country-field/country-field.component.html","../../../../../libs/components/lookup/src/lib/modules/country-field/country-field.module.ts","../../../../../libs/components/lookup/src/lib/modules/search/search-adapter.service.ts","../../../../../libs/components/lookup/src/lib/modules/search/search.component.ts","../../../../../libs/components/lookup/src/lib/modules/search/search.component.html","../../../../../libs/components/lookup/src/lib/modules/search/search.module.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup-item-selected.pipe.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/types/lookup-show-more-native-picker-async-context.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup-show-more-async-modal.component.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup-show-more-async-modal.component.html","../../../../../libs/components/lookup/src/lib/modules/lookup/types/lookup-show-more-native-picker-context.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup-show-more-modal.component.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup-show-more-modal.component.html","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup-adapter.service.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup-autocomplete-adapter.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup.component.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup.component.html","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup.module.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/types/lookup-select-mode.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/types/lookup-show-more-custom-picker-context.ts","../../../../../libs/components/lookup/src/skyux-lookup.ts"],"sourcesContent":["/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-lookup' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n SKY_LIB_RESOURCES_PROVIDERS,\n SkyAppLocaleInfo,\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesProvider,\n getLibStringForLocale,\n} from '@skyux/i18n';\n\nconst RESOURCES: { [locale: string]: SkyLibResources } = {\n 'EN-US': {\n skyux_autocomplete_add: { message: 'New' },\n skyux_autocomplete_no_results: { message: 'No matches found' },\n skyux_autocomplete_show_all: { message: 'Show all' },\n skyux_autocomplete_show_all_count: { message: 'Show all {0}' },\n skyux_autocomplete_show_matches_count: { message: 'Show matches ({0})' },\n skyux_country_field_search_placeholder: { message: 'Search for a country' },\n skyux_lookup_search_icon: { message: 'Search' },\n skyux_lookup_search_button_show_more: {\n message: 'Show all search results',\n },\n skyux_lookup_show_more_add: { message: 'New' },\n skyux_lookup_show_more_select_all_button_title: { message: 'Select all' },\n skyux_lookup_show_more_clear_all_button_title: { message: 'Clear all' },\n skyux_lookup_show_more_show_selected_option_title: {\n message: 'Show only selected items',\n },\n skyux_lookup_show_more_cancel: { message: 'Cancel' },\n skyux_lookup_show_more_modal_title_single: { message: 'Select an option' },\n skyux_lookup_show_more_modal_title_multiple: { message: 'Select options' },\n skyux_lookup_show_more_no_results: { message: 'No matches found' },\n skyux_lookup_show_more_select: { message: 'Select' },\n skyux_lookup_tokens_summary: { message: '{0} items selected' },\n skyux_search_dismiss: { message: 'Dismiss search' },\n skyux_search_label: { message: 'Search items' },\n skyux_search_open: { message: 'Open search' },\n skyux_search_placeholder: { message: 'Find in this list' },\n },\n};\n\nexport class SkyLookupResourcesProvider implements SkyLibResourcesProvider {\n public getString(\n localeInfo: SkyAppLocaleInfo,\n name: string\n ): string | undefined {\n return getLibStringForLocale(RESOURCES, localeInfo.locale, name);\n }\n}\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n providers: [\n {\n provide: SKY_LIB_RESOURCES_PROVIDERS,\n useClass: SkyLookupResourcesProvider,\n multi: true,\n },\n ],\n})\nexport class SkyLookupResourcesModule {}\n","import {\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n forwardRef,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\n\nimport { Observable, Subject, fromEvent as observableFromEvent } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyAutocompleteInputTextChange } from './types/autocomplete-input-text-change';\n\nconst SKY_AUTOCOMPLETE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SkyAutocompleteInputDirective),\n multi: true,\n};\n\nconst SKY_AUTOCOMPLETE_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SkyAutocompleteInputDirective),\n multi: true,\n};\n\n@Directive({\n selector: 'input[skyAutocomplete], textarea[skyAutocomplete]',\n providers: [SKY_AUTOCOMPLETE_VALUE_ACCESSOR, SKY_AUTOCOMPLETE_VALIDATOR],\n})\nexport class SkyAutocompleteInputDirective\n implements OnInit, OnDestroy, ControlValueAccessor, Validator\n{\n /**\n * Specifies the value for the `autocomplete` attribute on the form input.\n * @default \"off\"\n */\n @Input()\n public set autocompleteAttribute(value: string) {\n if (!value) {\n this._autocompleteAttribute = 'off';\n } else {\n this._autocompleteAttribute = value;\n }\n\n this.renderer.setAttribute(\n this.elementRef.nativeElement,\n 'autocomplete',\n this.autocompleteAttribute\n );\n }\n\n public get autocompleteAttribute(): string {\n return this._autocompleteAttribute || 'off';\n }\n\n /**\n * Indicates whether to disable the autocomplete field.\n * @default false\n */\n @Input()\n public set disabled(value: boolean) {\n this._disabled = value;\n this.renderer.setProperty(this.elementRef.nativeElement, 'disabled', value);\n }\n\n public get disabled(): boolean {\n return this._disabled;\n }\n\n public get blur(): Observable<void> {\n return this._blur.asObservable();\n }\n\n public get displayWith(): string {\n return this._displayWith;\n }\n\n public set displayWith(value: string) {\n this._displayWith = value;\n this.inputTextValue = this.getValueByKey();\n }\n\n public get focus(): Observable<void> {\n return this._focus.asObservable();\n }\n\n public get inputTextValue(): string {\n return this.elementRef.nativeElement.value;\n }\n\n public set inputTextValue(value: string) {\n this.elementRef.nativeElement.value = value || '';\n }\n\n public get textChanges(): Observable<SkyAutocompleteInputTextChange> {\n return this._textChanges.asObservable();\n }\n\n public get value(): any {\n return this._value;\n }\n\n public set value(value: any) {\n const isNewValue = value !== this._value;\n\n /* istanbul ignore else */\n if (isNewValue) {\n this._value = value;\n this.inputTextValue = this.getValueByKey();\n this.onChange(this._value);\n\n // Do not mark the field as \"dirty\"\n // if the field has been initialized with a value.\n if (this.isFirstChange && this.control) {\n this.control.markAsPristine();\n }\n\n if (this.isFirstChange && this._value) {\n this.isFirstChange = false;\n }\n }\n }\n\n private control: AbstractControl;\n\n private isFirstChange = true;\n\n private ngUnsubscribe = new Subject<void>();\n\n private _autocompleteAttribute: string;\n\n private _blur = new Subject<void>();\n\n private _disabled = false;\n\n private _displayWith: string;\n\n private _focus = new Subject<void>();\n\n private _textChanges = new Subject<SkyAutocompleteInputTextChange>();\n\n private _value: any;\n\n constructor(private elementRef: ElementRef, private renderer: Renderer2) {}\n\n public ngOnInit() {\n const element = this.elementRef.nativeElement;\n\n this.setAttributes(element);\n\n observableFromEvent(element, 'input')\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n /** Sanity check */\n if (!this.disabled) {\n this._textChanges.next({\n value: this.elementRef.nativeElement.value,\n });\n }\n });\n\n observableFromEvent(element, 'blur')\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n /** Sanity check */\n if (!this.disabled) {\n this._blur.next();\n }\n });\n\n observableFromEvent(element, 'focus')\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n /** Sanity check */\n if (!this.disabled) {\n this._focus.next();\n }\n });\n\n observableFromEvent(element, 'change')\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n /** Sanity check */\n /* istanbul ignore else */\n if (!this.disabled) {\n this.isFirstChange = false;\n }\n });\n }\n\n public ngOnDestroy(): void {\n this._blur.complete();\n this._textChanges.complete();\n\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n\n this._blur = this._textChanges = this.ngUnsubscribe = undefined;\n }\n\n public writeValue(value: any): void {\n this.value = value;\n }\n\n public registerOnChange(fn: (value: any) => void): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n public registerOnValidatorChange(fn: () => void): void {\n this.onValidatorChange = fn;\n }\n\n public restoreInputTextValueToPreviousState(): void {\n const modelValue = this.getValueByKey();\n\n // If the search field contains text, make sure that the value\n // matches the selected descriptor key.\n if (this.inputTextValue !== modelValue) {\n this.inputTextValue = modelValue;\n }\n\n this.onTouched();\n }\n\n public setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n public validate(control: AbstractControl): ValidationErrors {\n if (!this.control) {\n this.control = control;\n }\n return;\n }\n\n // See: https://www.w3.org/TR/wai-aria-practices/#kbd_focus_activedescendant\n public setActiveDescendant(descendantId: string | null): void {\n if (descendantId) {\n this.renderer.setAttribute(\n this.elementRef.nativeElement,\n 'aria-activedescendant',\n descendantId\n );\n } else {\n this.renderer.removeAttribute(\n this.elementRef.nativeElement,\n 'aria-activedescendant'\n );\n }\n }\n\n // Angular automatically constructs these methods.\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onChange(value: any): void {}\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onTouched(): void {}\n // istanbul ignore next\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onValidatorChange = () => {};\n\n private setAttributes(element: any): void {\n this.renderer.setAttribute(\n element,\n 'autocomplete',\n this.autocompleteAttribute\n );\n this.renderer.setAttribute(element, 'autocapitalize', 'none');\n this.renderer.setAttribute(element, 'autocorrect', 'off');\n this.renderer.setAttribute(element, 'spellcheck', 'false');\n this.renderer.addClass(element, 'sky-form-control');\n }\n\n private getValueByKey(): string {\n return this.value ? this.value[this.displayWith] : undefined;\n }\n}\n","import { EventEmitter, Pipe, PipeTransform } from '@angular/core';\n\nimport { SkyAutocompleteSearchAsyncArgs } from './types/autocomplete-search-async-args';\n\n/**\n * @internal\n */\n@Pipe({\n name: 'skyAutocompleteSearchAsyncDisabled',\n})\nexport class SkyAutcompleteSearchAsyncDisabledPipe implements PipeTransform {\n public transform(\n searchAsync: EventEmitter<SkyAutocompleteSearchAsyncArgs>,\n searchAsyncDisabled: boolean\n ): boolean {\n return searchAsyncDisabled || searchAsync.observers.length === 0;\n }\n}\n","/**\n * Removes diacritical characters from strings and replaces them with their normalized equivalent.\n * For example: è becomes e, Å becomes A.\n */\nexport function normalizeDiacritics(value: string): string {\n return value.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n}\n","import {\n ElementRef,\n Injectable,\n Renderer2,\n RendererFactory2,\n} from '@angular/core';\nimport { SkyCoreAdapterService, SkyOverlayInstance } from '@skyux/core';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyAutocompleteAdapterService {\n private renderer: Renderer2;\n\n constructor(\n private coreAdapterService: SkyCoreAdapterService,\n private rendererFactory: RendererFactory2\n ) {\n this.renderer = this.rendererFactory.createRenderer(undefined, undefined);\n }\n\n /**\n * Adds the className for the provided element.\n */\n public addCSSClass(element: HTMLElement, className: string): void {\n /* Sanity check */\n /* istanbul ignore else */\n if (element) {\n this.renderer.addClass(element, className);\n }\n }\n\n public getOverlayFocusableElements(\n overlay: SkyOverlayInstance\n ): HTMLElement[] {\n return this.coreAdapterService.getFocusableChildren(\n /* Sanity check - calling function also has null check */\n /* istanbul ignore next */\n overlay?.componentRef.location.nativeElement,\n { ignoreTabIndex: true }\n );\n }\n\n /**\n * Removes the className for the provided element.\n */\n public removeCSSClass(element: HTMLElement, className: string): void {\n /* Sanity check */\n /* istanbul ignore else */\n if (element) {\n this.renderer.removeClass(element, className);\n }\n }\n\n public setDropdownWidth(\n elementRef: ElementRef,\n dropdownRef: ElementRef,\n isInputBox: boolean\n ): void {\n const parentElement = isInputBox\n ? elementRef.nativeElement.closest('.sky-input-box')\n : elementRef.nativeElement;\n if (parentElement) {\n const width = parentElement.getBoundingClientRect().width;\n this.renderer.setStyle(dropdownRef.nativeElement, 'width', `${width}px`);\n }\n }\n\n /**\n * Sets the `tabIndex` of the `element` to the provided `tabIndex`.\n */\n public setTabIndex(element: HTMLElement, tabIndex: number): void {\n element.tabIndex = tabIndex;\n }\n}\n","import { normalizeDiacritics } from '../shared/sky-lookup-string-utils';\n\nimport { SkyAutocompleteDefaultSearchFunctionOptions } from './types/autocomplete-default-search-function-options';\nimport { SkyAutocompleteSearchFunction } from './types/autocomplete-search-function';\nimport { SkyAutocompleteSearchFunctionFilter } from './types/autocomplete-search-function-filter';\nimport { SkyAutocompleteSearchFunctionResponse } from './types/autocomplete-search-function-response';\n\nexport function skyAutocompleteDefaultSearchFunction(\n options: SkyAutocompleteDefaultSearchFunctionOptions\n): SkyAutocompleteSearchFunction {\n const filterData = function (searchText: string, data: any[]): any[] {\n return data.filter((item: any) => {\n if (!options.searchFilters || !options.searchFilters.length) {\n return true;\n }\n\n // Find the first failing filter (we can skip the others if one fails).\n const failedFilter = options.searchFilters.find(\n (filter: SkyAutocompleteSearchFunctionFilter) => {\n return !filter.call({}, searchText, item);\n }\n );\n\n return failedFilter === undefined;\n });\n };\n\n const search = function (\n searchText: string,\n data: any[]\n ): SkyAutocompleteSearchFunctionResponse {\n const results = [];\n\n /* Sanity check - autocomplete will not call search with empty search text */\n /* istanbul ignore if */\n if (!searchText) {\n return results;\n }\n\n const searchTextNormalized = normalizeDiacritics(searchText).toUpperCase();\n\n const filteredData = filterData(searchText, data);\n\n for (let i = 0, n = filteredData.length; i < n; i++) {\n const result = filteredData[i];\n const isMatch = options.propertiesToSearch.find((property: string) => {\n let value = (result[property] || '').toString();\n value = normalizeDiacritics(value).toUpperCase();\n return value.indexOf(searchTextNormalized) > -1;\n });\n\n if (isMatch) {\n results.push(result);\n }\n }\n\n return results;\n };\n\n return search;\n}\n","/**\n * @internal\n */\nexport enum SkyAutocompleteMessageType {\n /**\n * Closes the dropdown.\n */\n CloseDropdown = 0,\n\n /**\n * Repositions the dropdown.\n */\n RepositionDropdown = 1,\n}\n","import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Optional,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {\n SkyAffixAutoFitContext,\n SkyAffixService,\n SkyAffixer,\n SkyOverlayInstance,\n SkyOverlayService,\n} from '@skyux/core';\nimport { SkyInputBoxHostService } from '@skyux/forms';\n\nimport {\n Observable,\n Subject,\n Subscription,\n from,\n fromEvent as observableFromEvent,\n of,\n} from 'rxjs';\nimport { debounceTime, map, switchMap, take, takeUntil } from 'rxjs/operators';\n\nimport { normalizeDiacritics } from '../shared/sky-lookup-string-utils';\n\nimport { SkyAutocompleteAdapterService } from './autocomplete-adapter.service';\nimport { skyAutocompleteDefaultSearchFunction } from './autocomplete-default-search-function';\nimport { SkyAutocompleteInputDirective } from './autocomplete-input.directive';\nimport { SkyAutocompleteMessage } from './types/autocomplete-message';\nimport { SkyAutocompleteMessageType } from './types/autocomplete-message-type';\nimport { SkyAutocompleteSearchAsyncArgs } from './types/autocomplete-search-async-args';\nimport { SkyAutocompleteSearchAsyncResult } from './types/autocomplete-search-async-result';\nimport { SkyAutocompleteSearchFunction } from './types/autocomplete-search-function';\nimport { SkyAutocompleteSearchFunctionFilter } from './types/autocomplete-search-function-filter';\nimport { SkyAutocompleteSelectionChange } from './types/autocomplete-selection-change';\nimport { SkyAutocompleteShowMoreArgs } from './types/autocomplete-show-more-args';\n\n/**\n * @internal\n */\ninterface SkyAutocompleteSearchResult {\n elementId: string;\n data: any;\n}\n\nlet uniqueId = 0;\n\n@Component({\n selector: 'sky-autocomplete',\n templateUrl: './autocomplete.component.html',\n styleUrls: ['./autocomplete.component.scss'],\n providers: [SkyAutocompleteAdapterService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyAutocompleteComponent\n implements OnDestroy, AfterContentInit, AfterViewInit\n{\n //#region public_api\n\n /**\n * Specifies the HTML element ID (without the leading `#`) of the element that labels\n * the autocomplete text input. This sets the input's `aria-labelledby` attribute\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n */\n @Input()\n public ariaLabelledBy: string;\n\n /**\n * Specifies a static data source for the autocomplete component to search\n * when users enter text. For a dynamic data source such as an array that\n * changes due to server calls, use `search` or `searchAsync` instead.\n */\n @Input()\n public set data(value: any[]) {\n this._data = value;\n }\n\n public get data(): any[] {\n return this._data || [];\n }\n\n /**\n * Specifies how many milliseconds to wait before searching while users\n * enter text in the autocomplete field.\n * @default 0\n */\n @Input()\n public set debounceTime(value: number) {\n this._debounceTime = value;\n }\n\n public get debounceTime(): number {\n return this._debounceTime || 0;\n }\n\n /**\n * Specifies an object property to display in the text input after users\n * select an item in the dropdown list.\n * @default \"name\"\n */\n @Input()\n public set descriptorProperty(value: string) {\n this._descriptorProperty = value;\n }\n\n public get descriptorProperty(): string {\n return this._descriptorProperty || 'name';\n }\n\n /**\n * @internal\n * Indicates whether to display a button in the dropdown that opens a picker where users can view all options.\n */\n @Input()\n public enableShowMore = false;\n\n /**\n * Specifies an observable of `SkyAutocompleteMessage` that can close the dropdown.\n * @internal\n */\n @Input()\n public set messageStream(value: Subject<SkyAutocompleteMessage>) {\n this._messageStream = value;\n this.initMessageStream();\n }\n\n public get messageStream(): Subject<SkyAutocompleteMessage> {\n return this._messageStream;\n }\n\n /**\n * @internal\n */\n @Input()\n public wrapperClass?: string;\n\n /**\n * Specifies the object properties to search.\n * @default [\"name\"]\n */\n @Input()\n public set propertiesToSearch(value: string[]) {\n this._propertiesToSearch = value;\n }\n\n public get propertiesToSearch(): string[] {\n return this._propertiesToSearch || ['name'];\n }\n\n /**\n * Specifies a function to dynamically manage the data source when users\n * change the text in the autocomplete field. The search function must return\n * an array or a promise of an array. The `search` property is particularly\n * useful when the data source does not live in the source code. If the\n * search requires calling a remote data source, use `searchAsync` instead of\n * `search`.\n */\n @Input()\n public set search(value: SkyAutocompleteSearchFunction) {\n this._search = value;\n }\n\n public get search(): SkyAutocompleteSearchFunction {\n return (\n this._search ||\n skyAutocompleteDefaultSearchFunction({\n propertiesToSearch: this.propertiesToSearch,\n searchFilters: this.searchFilters,\n })\n );\n }\n\n /**\n * Specifies a template to format each search result in the dropdown list.\n * The autocomplete component injects search result values into the template\n * as `item` variables that reference all of the object properties of the search results.\n */\n @Input()\n public set searchResultTemplate(value: TemplateRef<unknown>) {\n this._searchResultTemplate = value;\n }\n\n public get searchResultTemplate(): TemplateRef<unknown> {\n return this._searchResultTemplate || this.defaultSearchResultTemplate;\n }\n\n /**\n * Specifies the minimum number of characters that users must enter before\n * the autocomplete component searches the data source and displays search\n * results in the dropdown list.\n * @default 1\n */\n @Input()\n public set searchTextMinimumCharacters(value: number) {\n this._searchTextMinimumCharacters = value;\n }\n\n public get searchTextMinimumCharacters(): number {\n return this._searchTextMinimumCharacters > 0\n ? this._searchTextMinimumCharacters\n : 1;\n }\n\n /**\n * Specifies an array of functions to call against each search result in order\n * to filter the search results when using the default search function. When\n * using the `search` property to specify a custom search function, you must\n * manually apply filters inside that function. The function must return `true`\n * or `false` for each result to indicate whether to display it in the dropdown list.\n */\n @Input()\n public searchFilters: SkyAutocompleteSearchFunctionFilter[];\n\n /**\n * Specifies the maximum number of search results to display in the dropdown list.\n * By default, the component displays all matching results.\n */\n @Input()\n public set searchResultsLimit(value: number) {\n this._searchResultsLimit = value;\n }\n\n public get searchResultsLimit(): number {\n if (this._searchResultsLimit) {\n return this._searchResultsLimit;\n } else {\n return this.enableShowMore ? 5 : this._searchResultsLimit;\n }\n }\n\n /**\n * @internal\n * Indicates whether to display a button that lets users add options to the data source.\n */\n @Input()\n public showAddButton = false;\n\n /**\n * Specifies the text to display when no search results are found.\n * @default \"No matches found\"\n */\n @Input()\n public noResultsFoundText: string;\n\n /**\n * @internal\n * Allows async search to be disabled even when a listener is specified for\n * the `searchAsync` output.\n */\n @Input()\n public searchAsyncDisabled = false;\n\n /**\n * @internal\n * Fires when users select the button to add options to the data source.\n */\n @Output()\n public addClick: EventEmitter<void> = new EventEmitter();\n\n /**\n * @internal\n * Fires when users select the button to view all options.\n */\n @Output()\n public showMoreClick: EventEmitter<SkyAutocompleteShowMoreArgs> = new EventEmitter();\n\n /**\n * Fires when users select items in the dropdown list.\n */\n @Output()\n public get selectionChange(): EventEmitter<SkyAutocompleteSelectionChange> {\n return this._selectionChange;\n }\n\n /**\n * Fires when users enter new search information and allows results to be\n * returned via an observable.\n */\n @Output()\n public searchAsync = new EventEmitter<SkyAutocompleteSearchAsyncArgs>();\n\n //#endregion\n\n //#region template_properties\n\n public get searchResults(): SkyAutocompleteSearchResult[] {\n return this._searchResults || [];\n }\n\n public get highlightText(): string[] {\n return this._highlightText || [];\n }\n\n public isOpen = false;\n\n public resultsListId: string;\n\n public resultsWrapperId: string;\n\n public searchText: string;\n\n public get showActionsArea(): boolean {\n return this.showAddButton || this.enableShowMore;\n }\n\n public isSearchingAsync = false;\n\n public searchResultsCount: number | undefined;\n\n //#endregion\n\n @ViewChild('defaultSearchResultTemplate', {\n read: TemplateRef,\n static: false,\n })\n private defaultSearchResultTemplate: TemplateRef<unknown>;\n\n @ContentChild(SkyAutocompleteInputDirective)\n private set inputDirective(directive: SkyAutocompleteInputDirective) {\n if (this._inputDirective !== directive) {\n if (!directive) {\n throw Error(\n [\n 'The SkyAutocompleteComponent requires a ContentChild input or',\n 'textarea bound with the SkyAutocomplete directive. For example:',\n '`<input type=\"text\" skyAutocomplete>`.',\n ].join(' ')\n );\n }\n\n // Unsubscribe from old subscriptions on any previous input directive\n this.inputDirectiveUnsubscribe.next();\n\n this._inputDirective = directive;\n\n this._inputDirective.displayWith = this.descriptorProperty;\n\n this._inputDirective.textChanges\n .pipe(\n takeUntil(this.inputDirectiveUnsubscribe),\n debounceTime(this.debounceTime),\n switchMap((change) => {\n this.isSearchingAsync = true;\n return of(change);\n })\n )\n .subscribe((change) => {\n this.searchTextChanged(change.value);\n });\n\n this._inputDirective.blur\n .pipe(takeUntil(this.inputDirectiveUnsubscribe))\n .subscribe(() => {\n this.inputDirective.restoreInputTextValueToPreviousState();\n this.closeDropdown();\n this.inputDirective.onTouched();\n });\n\n this._inputDirective.focus\n .pipe(takeUntil(this.inputDirectiveUnsubscribe))\n .subscribe(() => {\n if (this.showActionsArea) {\n this.openDropdown();\n }\n });\n }\n }\n\n private get inputDirective(): SkyAutocompleteInputDirective {\n return this._inputDirective;\n }\n\n @ViewChild('resultsTemplateRef', {\n read: TemplateRef,\n })\n private resultsTemplateRef: TemplateRef<unknown>;\n\n @ViewChild('resultsRef', {\n read: ElementRef,\n })\n private set resultsRef(value: ElementRef) {\n if (value) {\n this._resultsRef = value;\n this.destroyAffixer();\n this.createAffixer();\n }\n }\n\n private get resultsRef(): ElementRef {\n return this._resultsRef;\n }\n\n /**\n * Index that indicates which descendant of the overlay currently has focus.\n */\n private activeElementIndex = -1;\n\n private affixer: SkyAffixer;\n\n private inputDirectiveUnsubscribe = new Subject<void>();\n\n private messageStreamSub: Subscription;\n\n private ngUnsubscribe = new Subject<void>();\n\n private overlay: SkyOverlayInstance;\n\n /**\n * Elements within the autocomplete dropdown that are focusable.\n * These are typically the search results and action buttons, but could also be\n * elements provided in the consumer's own template.\n */\n private overlayFocusableElements: HTMLElement[] = [];\n\n private currentSearchSub: Subscription;\n\n private _data: any[];\n private _debounceTime: number;\n private _descriptorProperty: string;\n private _highlightText: string[];\n private _inputDirective: SkyAutocompleteInputDirective;\n private _messageStream: Subject<SkyAutocompleteMessage>;\n private _propertiesToSearch: string[];\n private _resultsRef: ElementRef;\n private _search: SkyAutocompleteSearchFunction;\n private _searchResults: SkyAutocompleteSearchResult[];\n private _searchResultTemplate: TemplateRef<unknown>;\n private _searchResultsLimit: number;\n private _searchTextMinimumCharacters: number;\n private _selectionChange = new EventEmitter<SkyAutocompleteSelectionChange>();\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private elementRef: ElementRef,\n private affixService: SkyAffixService,\n private adapterService: SkyAutocompleteAdapterService,\n private overlayService: SkyOverlayService,\n @Optional() private inputBoxHostSvc?: SkyInputBoxHostService\n ) {\n const id = ++uniqueId;\n this.resultsListId = `sky-autocomplete-list-${id}`;\n this.resultsWrapperId = `sky-autocomplete-wrapper-${id}`;\n }\n\n public ngAfterContentInit(): void {\n if (!this.inputDirective) {\n throw Error(\n [\n 'The SkyAutocompleteComponent requires a ContentChild input or',\n 'textarea bound with the SkyAutocomplete directive. For example:',\n '`<input type=\"text\" skyAutocomplete>`.',\n ].join(' ')\n );\n }\n }\n\n public ngAfterViewInit(): void {\n this.addInputEventListeners();\n }\n\n public ngOnDestroy(): void {\n this.cancelCurrentSearch();\n this.inputDirectiveUnsubscribe.next();\n this.inputDirectiveUnsubscribe.complete();\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n this.destroyAffixer();\n this.destroyOverlay();\n }\n\n public addButtonClicked(): void {\n this.addClick.emit();\n this.inputDirective.restoreInputTextValueToPreviousState();\n this.closeDropdown();\n }\n\n public handleKeydown(event: KeyboardEvent): void {\n /* Sanity check */\n /* istanbul ignore else */\n if (event.key) {\n const key = event.key.toLowerCase();\n const activeElement = this.getActiveElement();\n const activeElementId = activeElement?.id;\n const targetIsSearchResult = this.searchResults.find(\n (r) => r.elementId === activeElementId\n );\n\n switch (key) {\n case 'enter':\n if (targetIsSearchResult) {\n this.selectSearchResultById(activeElementId);\n\n if (!this.showActionsArea) {\n this.closeDropdown();\n } else {\n this.resetSearch();\n }\n } else {\n if (activeElement) {\n activeElement.dispatchEvent(new MouseEvent('mousedown'));\n }\n }\n\n event.preventDefault();\n event.stopPropagation();\n break;\n\n case 'tab':\n if (targetIsSearchResult) {\n this.selectSearchResultById(activeElementId);\n } else {\n this.inputDirective.restoreInputTextValueToPreviousState();\n }\n\n this.closeDropdown();\n break;\n\n case 'escape':\n this.closeDropdown();\n break;\n\n case 'arrowdown':\n case 'down':\n this.removeFocusedClass();\n if (\n this.activeElementIndex ===\n this.overlayFocusableElements.length - 1 ||\n this.activeElementIndex === -1\n ) {\n this.activeElementIndex = 0;\n } else {\n this.activeElementIndex = this.activeElementIndex + 1;\n }\n this.addFocusedClass();\n this.changeDetector.markForCheck();\n event.preventDefault();\n event.stopPropagation();\n break;\n\n case 'arrowup':\n case 'up':\n this.removeFocusedClass();\n if (this.activeElementIndex <= 0) {\n this.activeElementIndex = this.overlayFocusableElements.length - 1;\n } else {\n this.activeElementIndex = this.activeElementIndex - 1;\n }\n this.addFocusedClass();\n this.changeDetector.markForCheck();\n event.preventDefault();\n event.stopPropagation();\n break;\n }\n }\n }\n\n public moreButtonClicked(): void {\n this.showMoreClick.emit({ inputValue: this.searchText });\n this.inputDirective.restoreInputTextValueToPreviousState();\n this.closeDropdown();\n }\n\n public onResultMouseDown(id: string, event: MouseEvent): void {\n this.selectSearchResultById(id);\n\n if (!this.showActionsArea) {\n this.closeDropdown();\n } else {\n this.resetSearch();\n }\n\n event.preventDefault();\n event.stopPropagation();\n }\n\n public onResultMouseMove(id: number): void {\n if (id !== this.activeElementIndex) {\n this.removeFocusedClass();\n this.activeElementIndex = id;\n this.addFocusedClass();\n this.changeDetector.markForCheck();\n }\n }\n\n public isElementFocused(ref: HTMLElement): boolean {\n return ref === this.overlayFocusableElements[this.activeElementIndex];\n }\n\n private searchTextChanged(searchText: string): void {\n const isEmpty =\n !searchText || !searchText.trim() || searchText.match(/^\\s+$/);\n\n if (isEmpty) {\n // Emit selectionChange if value has been cleared.\n if (this.inputDirective.value) {\n this.inputDirective.value = undefined;\n this.selectionChange.emit({\n selectedItem: undefined,\n });\n }\n\n if (!this.showActionsArea) {\n this.closeDropdown();\n } else {\n this.resetSearch();\n }\n\n this.isSearchingAsync = false;\n this.changeDetector.markForCheck();\n\n return;\n }\n\n const isLongEnough = searchText.length >= this.searchTextMinimumCharacters;\n const isDifferent = searchText !== this.searchText;\n\n this.searchText = searchText.trim();\n\n if (isLongEnough && isDifferent) {\n this.cancelCurrentSearch();\n\n this.currentSearchSub = this.performSearch()\n .pipe(take(1))\n .subscribe((result) => {\n const items = result.items.filter((item: never) => {\n return item && this.descriptorProperty in item;\n });\n\n this.isSearchingAsync = false;\n\n this._searchResults = items.map((r, i) => {\n const result: SkyAutocompleteSearchResult = {\n elementId: `${this.resultsListId}-item-${i}`,\n data: r,\n };\n return result;\n });\n\n this.searchResultsCount = result.totalCount;\n\n this._highlightText = this.getHighlightText(this.searchText);\n this.removeFocusedClass();\n this.removeActiveDescendant();\n if (this.searchResults.length > 0) {\n this.activeElementIndex = 0;\n } else {\n this.activeElementIndex = -1;\n }\n\n this.changeDetector.markForCheck();\n\n if (this.isOpen) {\n // Let the results populate in the DOM before recalculating placement.\n setTimeout(() => {\n this.affixer.reaffix();\n this.changeDetector.detectChanges();\n this.initOverlayFocusableElements();\n });\n } else {\n this.openDropdown();\n this.changeDetector.markForCheck();\n }\n });\n } else {\n this.isSearchingAsync = false;\n this.changeDetector.markForCheck();\n }\n }\n\n private performSearch(): Observable<SkyAutocompleteSearchAsyncResult> {\n if (!this.searchAsyncDisabled && this.searchAsync.observers.length > 0) {\n const searchAsyncArgs: SkyAutocompleteSearchAsyncArgs = {\n displayType: 'popover',\n offset: 0,\n searchText: this.searchText,\n };\n\n this.searchAsync.emit(searchAsyncArgs);\n\n return searchAsyncArgs.result;\n }\n\n const result = this.search(this.searchText, this.data);\n\n if (result instanceof Array) {\n return of({\n items: result,\n totalCount: result.length,\n });\n }\n\n return from(result).pipe(\n map((items) => {\n return {\n items,\n totalCount: items.length,\n };\n })\n );\n }\n\n private cancelCurrentSearch(): void {\n if (this.currentSearchSub) {\n this.currentSearchSub.unsubscribe();\n this.currentSearchSub = undefined;\n }\n }\n\n /**\n * Returns the text to highlight based on exact matches, case-insensitive matches, and matches for corresponding diacritical characters (a will match à).\n */\n private getHighlightText(searchText: string): string[] {\n const normalizedSearchText = normalizeDiacritics(searchText)\n .toLocaleUpperCase()\n .trim();\n if (!normalizedSearchText) {\n return [];\n }\n\n let matchesToHighlight: string[] = [];\n for (let i = 0, n = this._searchResults.length; i < n; i++) {\n const value = this._searchResults[i].data[this.descriptorProperty]\n .toString()\n .toLocaleUpperCase() as string;\n const normalizedDataValue = normalizeDiacritics(value);\n\n let offset = 0;\n let index: number;\n while (\n (index = normalizedDataValue.indexOf(normalizedSearchText, offset)) > -1\n ) {\n const matchedString = value.slice(index, index + searchText.length);\n offset = index + searchText.length;\n matchesToHighlight = matchesToHighlight.concat(matchedString);\n }\n }\n\n // Remove any duplicates from the array.\n return [...new Set(matchesToHighlight)];\n }\n\n private selectSearchResultById(id: string): void {\n const result = this.searchResults.find((r) => r.elementId === id).data;\n /* Sanity check */\n /* istanbul ignore else */\n if (result) {\n this.searchText = result[this.descriptorProperty];\n this.inputDirective.value = result;\n this.selectionChange.emit({\n selectedItem: result,\n });\n }\n }\n\n private openDropdown(): void {\n if (!this.overlay) {\n const overlay = this.overlayService.create({\n enableClose: false,\n enablePointerEvents: true,\n wrapperClass: this.wrapperClass,\n });\n\n overlay.attachTemplate(this.resultsTemplateRef);\n\n this.overlay = overlay;\n this.isOpen = true;\n this.changeDetector.markForCheck();\n this.initOverlayFocusableElements();\n }\n }\n\n private closeDropdown(): void {\n this.resetSearch();\n this.isOpen = false;\n this.destroyOverlay();\n this.removeActiveDescendant();\n this.changeDetector.markForCheck();\n }\n\n private setActiveDescendant(): void {\n const activeElement =\n this.overlayFocusableElements[this.activeElementIndex];\n /* Sanity check */\n /* istanbul ignore else */\n if (activeElement) {\n this.inputDirective.setActiveDescendant(activeElement.id);\n }\n }\n\n private removeActiveDescendant(): void {\n this.inputDirective.setActiveDescendant(null);\n }\n\n private resetSearch(): void {\n this._searchResults = [];\n this.searchText = '';\n this._highlightText = [];\n this.activeElementIndex = -1;\n this.searchResultsCount = undefined;\n this.removeActiveDescendant();\n this.initOverlayFocusableElements();\n this.changeDetector.markForCheck();\n }\n\n private addInputEventListeners(): void {\n const element = this.elementRef.nativeElement;\n\n observableFromEvent(element, 'keydown')\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((event: KeyboardEvent) => {\n this.handleKeydown(event);\n });\n\n observableFromEvent(window, 'resize')\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n /* istanbul ignore else */\n if (this.isOpen) {\n this.adapterService.setDropdownWidth(\n this.elementRef,\n this.resultsRef,\n !!this.inputBoxHostSvc\n );\n }\n });\n }\n\n private destroyOverlay(): void {\n if (this.overlay) {\n this.overlayService.close(this.overlay);\n this.overlay = undefined;\n }\n }\n\n private createAffixer(): void {\n /* Sanity check */\n /* istanbul ignore else */\n if (!this.affixer) {\n const affixer = this.affixService.createAffixer(this.resultsRef);\n\n this.adapterService.setDropdownWidth(\n this.elementRef,\n this.resultsRef,\n !!this.inputBoxHostSvc\n );\n\n affixer.affixTo(this.elementRef.nativeElement, {\n autoFitContext: SkyAffixAutoFitContext.Viewport,\n enableAutoFit: true,\n isSticky: true,\n placement: 'below',\n horizontalAlignment: 'left',\n });\n\n this.affixer = affixer;\n }\n }\n\n private destroyAffixer(): void {\n if (this.affixer) {\n this.affixer.destroy();\n this.affixer = undefined;\n }\n }\n\n private initMessageStream(): void {\n /* istanbul ignore if */\n if (this.messageStreamSub) {\n this.messageStreamSub.unsubscribe();\n }\n\n if (this.messageStream) {\n this.messageStreamSub = this.messageStream\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((message: SkyAutocompleteMessage) => {\n switch (message.type) {\n case SkyAutocompleteMessageType.CloseDropdown:\n this.closeDropdown();\n break;\n case SkyAutocompleteMessageType.RepositionDropdown:\n // Settimeout waits for changes in DOM (e.g., tokens being removed)\n setTimeout(() => {\n /* istanbul ignore else */\n if (this.affixer) {\n this.affixer.reaffix();\n }\n });\n break;\n }\n });\n }\n }\n\n private initOverlayFocusableElements(): void {\n // Wait for dropdown elements to render.\n setTimeout(() => {\n if (this.overlay) {\n this.overlayFocusableElements =\n this.adapterService.getOverlayFocusableElements(this.overlay);\n this.overlayFocusableElements.forEach((el) => {\n this.adapterService.setTabIndex(el, -1);\n });\n this.addFocusedClass();\n }\n });\n }\n\n private getActiveElement(): HTMLElement {\n return this.overlayFocusableElements[this.activeElementIndex];\n }\n\n private removeFocusedClass(): void {\n if (this.activeElementIndex > -1) {\n this.adapterService.removeCSSClass(\n this.overlayFocusableElements[this.activeElementIndex],\n 'sky-autocomplete-descendant-focus'\n );\n }\n }\n\n private addFocusedClass(): void {\n if (this.activeElementIndex > -1) {\n this.adapterService.addCSSClass(\n this.overlayFocusableElements[this.activeElementIndex],\n 'sky-autocomplete-descendant-focus'\n );\n this.setActiveDescendant();\n }\n }\n}\n","<div\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n class=\"sky-autocomplete\"\n role=\"combobox\"\n [attr.aria-expanded]=\"isOpen && searchText\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-owns]=\"isOpen ? resultsListId : null\"\n [attr.id]=\"resultsWrapperId\"\n>\n <ng-content></ng-content>\n</div>\n\n<ng-template #resultsTemplateRef>\n <div\n class=\"sky-autocomplete-results-container\"\n [skyThemeClass]=\"{\n 'sky-shadow': 'default',\n 'sky-elevation-4': 'modern'\n }\"\n (keydown)=\"handleKeydown($event)\"\n #resultsRef\n >\n <div\n *ngIf=\"isSearchingAsync; else resultControlsTemplateRef\"\n class=\"sky-autocomplete-results-waiting\"\n >\n <sky-wait [isWaiting]=\"true\"></sky-wait>\n </div>\n </div>\n</ng-template>\n\n<ng-template #resultControlsTemplateRef>\n <div\n *ngIf=\"searchText && (!showActionsArea || searchResults.length > 0)\"\n class=\"sky-autocomplete-results\"\n role=\"listbox\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.id]=\"resultsListId\"\n >\n <ng-container *ngFor=\"let result of searchResults; let i = index\">\n <div\n *ngIf=\"!searchResultsLimit || i < searchResultsLimit\"\n class=\"sky-autocomplete-result\"\n role=\"option\"\n tabindex=\"0\"\n [attr.aria-selected]=\"isElementFocused(searchResultEl)\"\n [attr.id]=\"result.elementId\"\n [skyHighlight]=\"highlightText\"\n (mousedown)=\"onResultMouseDown(result.elementId, $event)\"\n (mousemove)=\"onResultMouseMove(i)\"\n #searchResultEl\n >\n <ng-container\n *ngTemplateOutlet=\"\n searchResultTemplate;\n context: { item: result.data }\n \"\n >\n </ng-container>\n </div>\n </ng-container>\n <div\n *ngIf=\"searchResults.length === 0\"\n class=\"sky-deemphasized sky-padding-squish-default\"\n >\n {{\n noResultsFoundText ||\n ('skyux_autocomplete_no_results' | skyLibResources)\n }}\n </div>\n </div>\n <div *ngIf=\"showActionsArea\" class=\"sky-autocomplete-actions\">\n <button\n *ngIf=\"enableShowMore && (!searchText || searchResults.length > 0)\"\n class=\"sky-autocomplete-action sky-autocomplete-action-more sky-btn sky-btn-link\"\n type=\"button\"\n (mousedown)=\"moreButtonClicked()\"\n >\n <ng-container\n *ngIf=\"\n !(\n searchAsync\n | skyAutocompleteSearchAsyncDisabled: searchAsyncDisabled\n ) &&\n searchResults.length === 0 &&\n !searchText\n \"\n >\n {{ 'skyux_autocomplete_show_all' | skyLibResources }}\n </ng-container>\n <ng-container\n *ngIf=\"\n (searchAsync\n | skyAutocompleteSearchAsyncDisabled: searchAsyncDisabled) &&\n !searchText\n \"\n >\n {{\n 'skyux_autocomplete_show_all_count'\n | skyLibResources: (data.length | skyNumeric: { truncate: false })\n }}\n </ng-container>\n <ng-container *ngIf=\"searchText\">\n {{\n 'skyux_autocomplete_show_matches_count'\n | skyLibResources\n : (searchResultsCount === undefined\n ? data.length\n : (searchResultsCount | skyNumeric: { truncate: false }))\n }}\n </ng-container>\n </button>\n <div\n *ngIf=\"searchText && searchResults.length === 0\"\n class=\"sky-font-deemphasized sky-autocomplete-actions-no-results\"\n >\n {{\n noResultsFoundText ||\n ('skyux_autocomplete_no_results' | skyLibResources)\n }}\n </div>\n <button\n *ngIf=\"showAddButton\"\n class=\"sky-autocomplete-action sky-autocomplete-action-add sky-btn sky-btn-link\"\n tabindex=\"0\"\n type=\"button\"\n [class.focused]=\"isElementFocused(addButtonEl)\"\n (mousedown)=\"addButtonClicked()\"\n #addButtonEl\n >\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"add\" iconType=\"skyux\"></sky-icon>\n <sky-icon *skyThemeIf=\"'default'\" icon=\"plus-circle\"></sky-icon>\n {{ 'skyux_autocomplete_add' | skyLibResources }}\n </button>\n </div>\n</ng-template>\n\n<ng-template let-item=\"item\" #defaultSearchResultTemplate>\n {{ item[descriptorProperty] }}\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n SkyAffixModule,\n SkyIdModule,\n SkyNumericModule,\n SkyOverlayModule,\n} from '@skyux/core';\nimport {\n SkyIconModule,\n SkyTextHighlightModule,\n SkyWaitModule,\n} from '@skyux/indicators';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\n\nimport { SkyAutocompleteInputDirective } from './autocomplete-input.directive';\nimport { SkyAutcompleteSearchAsyncDisabledPipe } from './autocomplete-search-async-disabled.pipe';\nimport { SkyAutocompleteComponent } from './autocomplete.component';\n\n@NgModule({\n declarations: [\n SkyAutocompleteComponent,\n SkyAutocompleteInputDirective,\n SkyAutcompleteSearchAsyncDisabledPipe,\n ],\n imports: [\n CommonModule,\n FormsModule,\n SkyAffixModule,\n SkyTextHighlightModule,\n SkyIconModule,\n SkyIdModule,\n SkyLookupResourcesModule,\n SkyNumericModule,\n SkyOverlayModule,\n SkyThemeModule,\n SkyWaitModule,\n ],\n exports: [SkyAutocompleteComponent, SkyAutocompleteInputDirective],\n})\nexport class SkyAutocompleteModule {}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n TemplateRef,\n Type,\n ViewChild,\n forwardRef,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormControl,\n NG_VALIDATORS,\n NgControl,\n NgModel,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { SkyAppWindowRef } from '@skyux/core';\nimport { SkyInputBoxHostService } from '@skyux/forms';\nimport { SkyThemeService } from '@skyux/theme';\n\nimport 'intl-tel-input';\nimport { Subject, fromEvent } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyAutocompleteInputDirective } from '../autocomplete/autocomplete-input.directive';\nimport { SkyAutocompleteSelectionChange } from '../autocomplete/types/autocomplete-selection-change';\n\nimport { SkyCountryFieldCountry } from './types/country';\n\nconst SKY_COUNTRY_FIELD_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SkyCountryFieldComponent),\n multi: true,\n};\n\nlet uniqueId = 0;\n\n@Component({\n selector: 'sky-country-field',\n templateUrl: './country-field.component.html',\n styleUrls: ['./country-field.component.scss'],\n providers: [SKY_COUNTRY_FIELD_VALIDATOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyCountryFieldComponent\n implements AfterViewInit, ControlValueAccessor, OnDestroy, OnInit, Validator\n{\n /**\n * Specifies the value for the `autocomplete` attribute on the form input.\n * @default \"off\"\n */\n @Input()\n public autocompleteAttribute: string;\n\n /**\n * Specifies the [International Organization for Standardization Alpha 2](https://www.nationsonline.org/oneworld/country_code_list.htm)\n * country code for the default country.\n * When search results include the default country, it appears at the top of the list.\n * @default \"us\"\n */\n @Input()\n public set defaultCountry(value: string) {\n if (value !== this._defaultCountry) {\n this._defaultCountry = value.toLowerCase();\n\n this.defaultCountryData = this.countries.find(\n (country) => country.iso2 === this._defaultCountry\n );\n\n this.sortCountriesWithSelectedAndDefault(this.selectedCountry);\n }\n }\n\n public get defaultCountry(): string {\n return this._defaultCountry;\n }\n\n /**\n * Indicates whether to disable the country field.\n * @default false\n */\n @Input()\n public set disabled(isDisabled: boolean) {\n this.removeEventListeners();\n\n if (!isDisabled) {\n this.addEventListeners();\n }\n\n this._disabled = isDisabled;\n\n this.changeDetector.markForCheck();\n }\n\n public get disabled(): boolean {\n return this._disabled;\n }\n\n /**\n * Indicates whether to hide the flag in the input element.\n * @default false\n */\n @Input()\n public hideSelectedCountryFlag: boolean;\n\n /**\n * Indicates whether to include phone information in the selected country and country dropdown.\n * @default false\n */\n @Input()\n public set includePhoneInfo(includePhoneInfo: boolean) {\n this._includePhoneInfo = includePhoneInfo;\n\n this.setupCountries();\n }\n\n public get includePhoneInfo(): boolean {\n return this._includePhoneInfo;\n }\n\n /**\n * Specifies the [International Organization for Standardization Alpha 2](https://www.nationsonline.org/oneworld/country_code_list.htm)\n * country codes for the countries that users can select. By default, all countries are available.\n */\n @Input()\n public set supportedCountryISOs(value: string[]) {\n // Ensure all values are the same case.\n if (Array.isArray(value)) {\n value = value.map((v) => v.toLowerCase());\n }\n\n this._supportedCountryISOs = value;\n this.setupCountries();\n }\n\n public get supportedCountryISOs(): string[] {\n return this._supportedCountryISOs;\n }\n\n /**\n * Fires when the selected country changes.\n */\n @Output()\n public selectedCountryChange: EventEmitter<SkyCountryFieldCountry> = new EventEmitter<SkyCountryFieldCountry>();\n\n public countries: SkyCountryFieldCountry[];\n\n public countrySearchFormControl: FormControl;\n\n public isInputFocused = false;\n\n public searchTextMinimumCharacters = 2;\n\n @ViewChild(SkyAutocompleteInputDirective)\n public countrySearchAutocompleteDirective: SkyAutocompleteInputDirective;\n\n public set selectedCountry(newCountry: SkyCountryFieldCountry) {\n if (!this.countriesAreEqual(this.selectedCountry, newCountry)) {\n if (newCountry && newCountry.iso2) {\n const isoCountry = this.countries.find(\n (country) => country.iso2 === newCountry.iso2\n );\n\n if (isoCountry) {\n newCountry = isoCountry;\n }\n }\n\n this._selectedCountry = newCountry;\n\n this.sortCountriesWithSelectedAndDefault(newCountry);\n\n this.internalFormChange = true;\n this.countrySearchFormControl.setValue(this.selectedCountry);\n\n if (!this.isInitialChange) {\n this.onChange(newCountry);\n this.onTouched();\n\n this.selectedCountryChange.emit(newCountry);\n }\n\n // Do not mark the field as \"dirty\"\n // if the field has been initialized with a value.\n if (this.isInitialChange && this.ngControl && this.ngControl.control) {\n this.ngControl.control.markAsPristine();\n }\n\n this.isInitialChange = false;\n\n /**\n * The second portion of this if statement is complex. The control type check ensures that\n * we only watch for the initial time through this function on reactive forms. However,\n * template forms will send through `null` and then `undefined` on empty initialization\n * so we have to check for when the non-null pass through happens.\n */\n } else if (\n this.isInitialChange &&\n (!(this.ngControl instanceof NgModel) || newCountry !== null)\n ) {\n this.isInitialChange = false;\n }\n }\n\n public get selectedCountry(): SkyCountryFieldCountry {\n return this._selectedCountry;\n }\n\n public currentTheme = 'default';\n\n public inputId: string;\n\n @ViewChild('inputTemplateRef', {\n read: TemplateRef,\n static: true,\n })\n private inputTemplateRef: TemplateRef<unknown>;\n\n @ViewChild('searchIconTemplateRef', {\n read: TemplateRef,\n static: true,\n })\n private searchIconTemplateRef: TemplateRef<unknown>;\n\n private defaultCountryData: SkyCountryFieldCountry;\n\n private idle = new Subject<void>();\n\n private internalFormChange = false;\n\n private isInitialChange = true;\n\n private ngControl: NgControl;\n\n private ngUnsubscribe = new Subject<void>();\n\n private _defaultCountry: string;\n\n private _disabled = false;\n\n private _includePhoneInfo = false;\n\n private _selectedCountry: SkyCountryFieldCountry;\n\n private _supportedCountryISOs: string[];\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private elRef: ElementRef,\n private windowRef: SkyAppWindowRef,\n private injector: Injector,\n @Optional() public inputBoxHostSvc?: SkyInputBoxHostService,\n @Optional() private themeSvc?: SkyThemeService\n ) {\n this.setupCountries();\n\n this.countrySearchFormControl = new FormControl();\n }\n\n /**\n * Angular lifecycle hook for when the component is initialized\n * @internal\n */\n public ngOnInit(): void {\n this.updateInputBox();\n\n this.ngControl = this.injector.get<NgControl>(\n NgControl as unknown as Type<NgControl>,\n null\n );\n\n this.inputId = `sky-country-field-input-${uniqueId++}`;\n\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n } else {\n /**\n * The initial change boolean is to determine if the form is setting the value. When no form\n * is present we don't want to ignore the first change.\n */\n this.isInitialChange = false;\n }\n\n if (!this.defaultCountry) {\n this.defaultCountry = 'us';\n }\n\n this.countrySearchFormControl.valueChanges\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((newValue) => {\n if (newValue && !this.internalFormChange) {\n this.selectedCountry = newValue;\n }\n });\n\n if (!this.disabled) {\n this.addEventListeners();\n }\n }\n\n public ngAfterViewInit(): void {\n /* istanbul ignore else */\n if (this.themeSvc) {\n this.themeSvc.settingsChange.subscribe((change) => {\n this.currentTheme = change.currentSettings.theme.name;\n this.updateInputBox();\n this.changeDetector.markForCheck();\n });\n }\n }\n\n /**\n * Angular lifecycle hook for when the compoennt is destructed.\n * @internal\n */\n public ngOnDestroy(): void {\n this.selectedCountryChange.complete();\n this.removeEventListeners();\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n /**\n * Sets the component's touched value when the autocomplete is blurred\n * @internal\n */\n public onAutocompleteBlur(): void {\n this.onTouched();\n }\n\n /**\n * Sets the country to validate against based on the county's iso2 code.\n * @param newCountry The International Organization for Standardization's two-letter code\n * for the default country.\n * @internal\n */\n public onCountrySelected(newCountry: SkyAutocompleteSelectionChange): void {\n if (newCountry.selectedItem) {\n this.writeValue(\n this.countries.find(\n (countryInfo) => countryInfo.iso2 === newCountry.selectedItem.iso2\n )\n );\n } else {\n this.writeValue(undefined);\n }\n }\n\n // Angular automatically constructs these methods.\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onChange = (value: SkyCountryFieldCountry) => {};\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onTouched = () => {};\n\n public registerOnChange(fn: (value: SkyCountryFieldCountry) => void): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n // Allows Angular to disable the input.\n public setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n public validate(control: AbstractControl): ValidationErrors {\n if (control.value) {\n if (\n (this.supportedCountryISOs &&\n this.supportedCountryISOs.length > 0 &&\n this.supportedCountryISOs.indexOf(control.value.iso2) < 0) ||\n !this.countries.find((country) => country.iso2 === control.value.iso2)\n ) {\n return { unsupportedCountry: true };\n }\n }\n return;\n }\n\n public writeValue(value: SkyCountryFieldCountry): void {\n this.selectedCountry = value;\n this.changeDetector.markForCheck();\n }\n\n private addEventListeners(): void {\n this.removeEventListeners();\n\n this.idle = new Subject();\n\n const documentObj = this.windowRef.nativeWindow.document;\n\n fromEvent(documentObj, 'mousedown')\n .pipe(takeUntil(this.idle))\n .subscribe((event: MouseEvent) => {\n this.isInputFocused = this.elRef.nativeElement.contains(event.target);\n this.changeDetector.markForCheck();\n });\n\n fromEvent(documentObj, 'focusin')\n .pipe(takeUntil(this.idle))\n .subscribe((event: KeyboardEvent) => {\n this.isInputFocused = this.elRef.nativeElement.contains(event.target);\n this.changeDetector.markForCheck();\n });\n }\n\n private countriesAreEqual(\n country1: SkyCountryFieldCountry,\n country2: SkyCountryFieldCountry\n ): boolean {\n if (country1 && country2) {\n return country1.iso2 === country2.iso2;\n }\n\n // NOTE: We are doing this in this way because template forms will send through `null`\n // and then `undefined` on empty initialization. These are functionally equivalent but will\n // not pass a standard triple equals check.\n return !country1 && !country2;\n }\n\n private countriesEqual(\n a: SkyCountryFieldCountry,\n b: SkyCountryFieldCountry\n ): boolean {\n return a.iso2 === b.iso2 && a.name === b.name;\n }\n\n private removeEventListeners(): void {\n this.idle.next();\n this.idle.complete();\n }\n\n private setupCountries(): void {\n /**\n * The json functions here ensures that we get a copy of the array and not the global original.\n * This ensures that multiple instances of the component don't overwrite the original data.\n *\n * We must type the window object as any here as the intl-tel-input library adds its object\n * to the main window object.\n */\n this.countries = JSON.parse(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n JSON.stringify((window as any).intlTelInputGlobals.getCountryData())\n );\n\n // Ignoring coverage here as this will be removed in the next release.\n // istanbul ignore next\n if (!this.includePhoneInfo && !this.hideSelectedCountryFlag) {\n if (\n (\n this.elRef.nativeElement.parentElement as HTMLElement\n )?.classList?.contains('sky-phone-field-country-search')\n ) {\n this.includePhoneInfo = true;\n this.hideSelectedCountryFlag = true;\n }\n }\n\n /* istanbul ignore else */\n if (!this.includePhoneInfo) {\n /**\n * The library we get the country data from includes extra phone properties.\n * We want to remove these unless we are in a phone field\n */\n this.countries.forEach((country: any) => {\n delete country.dialCode;\n delete country.areaCodes;\n delete country.priority;\n });\n }\n\n this.sortCountriesWithSelectedAndDefault(this.selectedCountry);\n\n if (this.supportedCountryISOs && this.supportedCountryISOs.length > 0) {\n this.countries = this.countries.filter(\n (country: SkyCountryFieldCountry) => {\n return this.supportedCountryISOs.indexOf(country.iso2) >= 0;\n }\n );\n }\n }\n\n private sortCountriesWithSelectedAndDefault(\n selectedCountry: SkyCountryFieldCountry\n ): void {\n let selectedCountryIndex: number;\n let selectedCountryData: SkyCountryFieldCountry;\n\n const sortedNewCountries = this.countries.sort((a, b) => {\n if (\n ((this.defaultCountryData &&\n this.countriesEqual(a, this.defaultCountryData)) ||\n a.name < b.name) &&\n (!this.defaultCountryData ||\n !this.countriesEqual(this.defaultCountryData, b))\n ) {\n return -1;\n } else {\n return 1;\n }\n });\n\n if (selectedCountry) {\n // Note: We are looking up this data here to ensure we are using the offical data from the\n // library and not the data provided by the user on initialization of the component\n selectedCountryData = this.countries.find(\n (country) => country.iso2 === selectedCountry.iso2.toLocaleLowerCase()\n );\n selectedCountryIndex = this.countries.indexOf(selectedCountryData);\n\n if (selectedCountryIndex >= 0) {\n this.countries.splice(selectedCountryIndex, 1);\n sortedNewCountries.splice(0, 0, selectedCountryData);\n }\n }\n\n this.countries = sortedNewCountries;\n }\n\n private updateInputBox(): void {\n if (this.inputBoxHostSvc) {\n this.inputBoxHostSvc.populate({\n inputTemplate: this.inputTemplateRef,\n iconsInsetTemplate:\n this.currentTheme === 'modern'\n ? this.searchIconTemplateRef\n : undefined,\n });\n }\n }\n}\n","<ng-container *ngIf=\"!inputBoxHostSvc\">\n <ng-container *ngTemplateOutlet=\"inputTemplateRef\"></ng-container>\n</ng-container>\n\n<ng-template #inputTemplateRef>\n <span\n class=\"sky-country-field-container\"\n [ngClass]=\"{\n 'sky-country-field-disabled': disabled\n }\"\n >\n <sky-autocomplete\n [ariaLabelledBy]=\"inputId\"\n [data]=\"countries\"\n [propertiesToSearch]=\"['name', 'iso2']\"\n [searchResultTemplate]=\"countrySearchResultTemplate\"\n [searchTextMinimumCharacters]=\"searchTextMinimumCharacters\"\n (selectionChange)=\"onCountrySelected($event)\"\n >\n <div\n class=\"sky-country-field-input\"\n [ngClass]=\"{\n 'sky-country-field-input-with-flag':\n selectedCountry && selectedCountry.iso2 && !hideSelectedCountryFlag\n }\"\n >\n <div\n *ngIf=\"\n selectedCountry && selectedCountry.iso2 && !hideSelectedCountryFlag\n \"\n class=\"sky-country-field-flag\"\n >\n <div\n class=\"iti__flag\"\n [ngClass]=\"'iti__' + selectedCountry.iso2.toLowerCase()\"\n ></div>\n </div>\n <textarea\n class=\"sky-form-control\"\n name=\"selectedCountry\"\n rows=\"1\"\n skyAutocomplete\n [attr.aria-label]=\"\n 'skyux_country_field_search_placeholder' | skyLibResources\n \"\n [attr.disabled]=\"disabled ? true : undefined\"\n [attr.id]=\"inputId\"\n [autocompleteAttribute]=\"autocompleteAttribute\"\n [formControl]=\"countrySearchFormControl\"\n [placeholder]=\"\n currentTheme === 'default'\n ? ('skyux_country_field_search_placeholder' | skyLibResources)\n : ''\n \"\n (blur)=\"onAutocompleteBlur()\"\n ></textarea>\n </div>\n </sky-autocomplete>\n </span>\n</ng-template>\n\n<ng-template let-item=\"item\" #countrySearchResultTemplate>\n <div\n class=\"sky-country-field-search-result-flag\"\n [ngClass]=\"'iti__flag iti__' + item.iso2.toLowerCase()\"\n ></div>\n {{ item.name }}\n <span *ngIf=\"includePhoneInfo\" class=\"sky-deemphasized\">\n {{ item.dialCode }}\n </span>\n</ng-template>\n\n<!-- This template should only be used in modern theme input boxes. -->\n<ng-template #searchIconTemplateRef>\n <div class=\"sky-input-group-icon sky-input-box-icon-inset\">\n <sky-icon iconType=\"skyux\" icon=\"search\"></sky-icon>\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/indicators';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyAutocompleteModule } from '../autocomplete/autocomplete.module';\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\n\nimport { SkyCountryFieldComponent } from './country-field.component';\n\n@NgModule({\n declarations: [SkyCountryFieldComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SkyAutocompleteModule,\n SkyIconModule,\n SkyI18nModule,\n SkyLookupResourcesModule,\n SkyThemeModule,\n ],\n exports: [SkyCountryFieldComponent],\n})\nexport class SkyCountryFieldModule {}\n","import { ElementRef, Injectable, Renderer2 } from '@angular/core';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkySearchAdapterService {\n constructor(private renderer: Renderer2) {}\n\n public selectInput(searchEl: ElementRef) {\n this.getInputEl(searchEl).select();\n }\n\n public focusInput(searchEl: ElementRef) {\n this.getInputEl(searchEl).focus();\n }\n\n public startInputAnimation(searchEl: ElementRef) {\n const buttonWidth = this.getSearchOpenButtonEl(searchEl).clientWidth;\n const offsetWidth = this.getSearchContainerEl(searchEl).offsetLeft;\n const minWidth = buttonWidth + offsetWidth;\n\n this.getInputContainerEl(searchEl).style.minWidth =\n minWidth.toString() + 'px';\n\n this.renderer.setStyle(\n this.getInputContainerEl(searchEl),\n 'min-width',\n minWidth.toString() + 'px'\n );\n }\n\n public endInputAnimation(searchEl: ElementRef) {\n this.renderer.setStyle(this.getInputContainerEl(searchEl), 'min-width', '');\n }\n\n private getInputContainerEl(searchEl: ElementRef) {\n return searchEl.nativeElement.querySelector('.sky-search-input-container');\n }\n\n private getSearchOpenButtonEl(searchEl: ElementRef) {\n return searchEl.nativeElement.querySelector('.sky-search-btn-open');\n }\n\n private getSearchContainerEl(searchEl: ElementRef) {\n return searchEl.nativeElement.querySelector('.sky-search-container');\n }\n\n private getInputEl(searchEl: ElementRef) {\n return searchEl.nativeElement.querySelector('input');\n }\n}\n","import {\n AnimationEvent,\n animate,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SkyMediaBreakpoints, SkyMediaQueryService } from '@skyux/core';\n\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\n\nimport { SkySearchAdapterService } from './search-adapter.service';\n\nconst INPUT_SHOWN_STATE = 'inputShown';\nconst INPUT_HIDDEN_STATE = 'inputHidden';\nconst EXPAND_MODE_RESPONSIVE = 'responsive';\nconst EXPAND_MODE_FIT = 'fit';\nconst EXPAND_MODE_NONE = 'none';\n\n@Component({\n selector: 'sky-search',\n templateUrl: './search.component.html',\n styleUrls: ['./search.component.scss'],\n encapsulation: ViewEncapsulation.None,\n animations: [\n trigger('inputState', [\n state(\n INPUT_HIDDEN_STATE,\n style({\n opacity: 0,\n width: 0,\n })\n ),\n state(\n INPUT_SHOWN_STATE,\n style({\n opacity: 1,\n width: '100%',\n })\n ),\n transition('* <=> *', animate('150ms')),\n ]),\n ],\n providers: [SkySearchAdapterService],\n})\nexport class SkySearchComponent implements OnDestroy, OnInit, OnChanges {\n /**\n * Fires when the search text is applied.\n */\n @Output()\n public searchApply = new EventEmitter<string>();\n\n /**\n * Fires when the search text is changed.\n */\n @Output()\n public searchChange = new EventEmitter<string>();\n\n /**\n * Fires when the search text is cleared.\n */\n @Output()\n public searchClear = new EventEmitter<void>();\n\n /**\n * Specifies default search criteria for the input.\n */\n @Input()\n public searchText: string;\n\n /**\n * Specifies the expand mode for the search input. The valid options\n * include `\"responsive\"` to collapse the search input into a button on\n * mobile devices, `\"none\"` to *not* collapse the search input on mobile\n * devices, and `\"fit\"` to extend the search input to fit the width of its container.\n * @default \"responsive\"\n */\n @Input()\n public expandMode: string = EXPAND_MODE_RESPONSIVE;\n\n /**\n * Specifies how many milliseconds to wait before searching after users enter text in the search input.\n * @default 0\n */\n @Input()\n public debounceTime = 0;\n\n /**\n * Indicates whether to disable the filter button.\n * @default false\n */\n @Input()\n public disabled = false;\n\n public isFullWidth = false;\n\n public isCollapsible = true;\n\n /**\n * Specifies placeholder text to display in the search input until users\n * enter search criteria.\n * @default \"Find in this list\"\n */\n @Input()\n public placeholderText: string;\n\n public inputAnimate: string = INPUT_SHOWN_STATE;\n public breakpointSubscription: Subscription;\n public searchButtonShown = false;\n public mobileSearchShown = false;\n public dismissButtonShown = false;\n public clearButtonShown = false;\n\n private searchUpdated: Subject<string> = new Subject<string>();\n\n constructor(\n private mediaQueryService: SkyMediaQueryService,\n private elRef: ElementRef,\n private searchAdapter: SkySearchAdapterService,\n private changeRef: ChangeDetectorRef\n ) {}\n\n public ngOnInit() {\n if (this.searchShouldCollapse()) {\n this.breakpointSubscription = this.mediaQueryService.subscribe(\n (args: SkyMediaBreakpoints) => {\n this.mediaQueryCallback(args);\n this.changeRef.detectChanges();\n }\n );\n }\n\n this.searchUpdated\n .asObservable()\n .pipe(debounceTime(this.debounceTime), distinctUntilChanged())\n .subscribe((value) => {\n this.searchChange.emit(value);\n });\n }\n\n public ngOnChanges(changes: SimpleChanges) {\n if (this.expandModeBindingChanged(changes)) {\n switch (this.expandMode) {\n case EXPAND_MODE_NONE:\n this.isCollapsible = false;\n this.isFullWidth = false;\n break;\n case EXPAND_MODE_FIT:\n this.isCollapsible = false;\n this.isFullWidth = true;\n break;\n default:\n this.isCollapsible = true;\n this.isFullWidth = false;\n break;\n }\n }\n\n if (this.searchBindingChanged(changes)) {\n this.clearButtonShown = this.searchText && this.searchText !== '';\n if (this.shouldOpenInput()) {\n this.inputAnimate = INPUT_SHOWN_STATE;\n }\n }\n this.changeRef.detectChanges();\n }\n\n public clearSearchText() {\n this.searchText = '';\n this.clearButtonShown = false;\n\n this.searchAdapter.focusInput(this.elRef);\n this.searchChange.emit(this.searchText);\n\n this.searchApply.emit(this.searchText);\n\n this.searchClear.emit();\n }\n\n public enterPress(event: KeyboardEvent, searchText: string) {\n if (event.code === 'Enter' || event.code === 'NumpadEnter') {\n this.applySearchText(searchText);\n }\n }\n\n public applySearchText(searchText: string) {\n // Double check that search text is defined before attempting to trim off whitespace\n if (searchText) {\n searchText = searchText.trim();\n }\n\n if (searchText !== this.searchText) {\n this.searchText = searchText;\n }\n this.clearButtonShown = searchText && searchText !== '';\n if (searchText && searchText !== '') {\n this.searchAdapter.selectInput(this.elRef);\n }\n\n this.searchApply.emit(searchText);\n }\n\n public searchTextChanged(searchText: string) {\n this.searchText = searchText;\n this.searchUpdated.next(searchText);\n }\n\n public toggleSearchInput(showInput: boolean) {\n if (this.searchShouldCollapse()) {\n if (showInput) {\n this.inputAnimate = INPUT_SHOWN_STATE;\n } else {\n this.inputAnimate = INPUT_HIDDEN_STATE;\n }\n }\n }\n\n public inputAnimationStart(event: AnimationEvent) {\n if (this.searchShouldCollapse()) {\n this.searchAdapter.startInputAnimation(this.elRef);\n\n if (\n event.toState === INPUT_SHOWN_STATE &&\n this.mediaQueryService.current === SkyMediaBreakpoints.xs\n ) {\n this.mobileSearchShown = true;\n this.searchButtonShown = false;\n }\n }\n }\n\n public inputAnimationEnd(event: AnimationEvent) {\n if (this.searchShouldCollapse()) {\n this.searchAdapter.endInputAnimation(this.elRef);\n\n this.searchButtonShown =\n event.toState === INPUT_HIDDEN_STATE &&\n this.mediaQueryService.current === SkyMediaBreakpoints.xs;\n\n if (\n (event.toState === INPUT_HIDDEN_STATE &&\n this.mediaQueryService.current === SkyMediaBreakpoints.xs) ||\n this.mediaQueryService.current !== SkyMediaBreakpoints.xs\n ) {\n this.mobileSearchShown = false;\n }\n }\n }\n\n public ngOnDestroy() {\n if (this.breakpointSubscription) {\n this.breakpointSubscription.unsubscribe();\n }\n\n this.searchUpdated.complete();\n }\n private searchBindingChanged(changes: SimpleChanges) {\n return (\n changes['searchText'] &&\n changes['searchText'].previousValue !== changes['searchText'].currentValue\n );\n }\n\n private expandModeBindingChanged(changes: SimpleChanges) {\n return (\n changes['expandMode'] &&\n changes['expandMode'].previousValue !== changes['expandMode'].currentValue\n );\n }\n\n private shouldOpenInput() {\n return (\n this.searchText !== '' &&\n this.mediaQueryService.current === SkyMediaBreakpoints.xs &&\n this.searchShouldCollapse()\n );\n }\n\n private mediaQueryCallback(args: SkyMediaBreakpoints) {\n if (this.searchShouldCollapse()) {\n if (args === SkyMediaBreakpoints.xs) {\n this.inputAnimate = INPUT_HIDDEN_STATE;\n } else if (this.inputAnimate !== INPUT_SHOWN_STATE) {\n this.inputAnimate = INPUT_SHOWN_STATE;\n } else {\n this.mobileSearchShown = false;\n }\n }\n this.changeRef.markForCheck();\n }\n\n private searchShouldCollapse() {\n return (\n (this.isCollapsible || this.isCollapsible === undefined) &&\n this.isFullWidth !== true\n );\n }\n}\n","<div class=\"sky-search-container\">\n <div class=\"sky-search-button-container\">\n <button\n class=\"sky-btn sky-btn-default sky-btn-icon sky-search-btn-open\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_search_open' | skyLibResources\"\n [hidden]=\"!searchButtonShown\"\n [ngClass]=\"{ 'sky-search-btn-open-applied': clearButtonShown }\"\n (click)=\"toggleSearchInput(true)\"\n >\n <ng-container *ngTemplateOutlet=\"searchIconTemplate\"></ng-container>\n </button>\n </div>\n <div\n class=\"sky-search-dismiss-container\"\n [hidden]=\"searchButtonShown\"\n [ngClass]=\"{\n 'sky-search-dismiss-absolute': mobileSearchShown || isFullWidth\n }\"\n >\n <div class=\"sky-search-item-input\">\n <div\n class=\"sky-search-input-container\"\n [@inputState]=\"inputAnimate\"\n (@inputState.start)=\"inputAnimationStart($event)\"\n (@inputState.done)=\"inputAnimationEnd($event)\"\n [ngClass]=\"{\n 'sky-search-input-container-has-value': searchText?.trim()\n }\"\n >\n <sky-input-box>\n <input\n class=\"sky-form-control sky-search-input sky-rounded-corners\"\n type=\"text\"\n [attr.aria-label]=\"'skyux_search_label' | skyLibResources\"\n [attr.placeholder]=\"\n placeholderText || ('skyux_search_placeholder' | skyLibResources)\n \"\n [disabled]=\"disabled\"\n [ngModel]=\"searchText\"\n (keyup)=\"enterPress($event, searchText)\"\n (ngModelChange)=\"searchTextChanged($event)\"\n skyId\n #searchInput=\"skyId\"\n />\n <span\n class=\"sky-input-group-btn sky-input-group-clear sky-input-box-btn-inset\"\n [hidden]=\"!clearButtonShown\"\n >\n <button\n aria-hidden=\"true\"\n class=\"sky-btn sky-btn-default sky-search-btn sky-search-btn-clear\"\n tabindex=\"-1\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"clearSearchText()\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"times\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"close\"\n iconType=\"skyux\"\n size=\"sm\"\n ></sky-icon>\n </button>\n </span>\n <span\n *skyThemeIf=\"'default'\"\n class=\"sky-input-group-btn sky-input-box-btn-inset\"\n >\n <button\n class=\"sky-btn sky-btn-default sky-search-btn sky-search-btn-apply\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_search_label' | skyLibResources\"\n [disabled]=\"disabled\"\n (click)=\"applySearchText(searchText)\"\n >\n <ng-container\n *ngTemplateOutlet=\"searchIconTemplate\"\n ></ng-container>\n </button>\n </span>\n <div\n *skyThemeIf=\"'modern'\"\n aria-hidden=\"true\"\n class=\"sky-input-group-icon sky-input-box-icon-inset-left\"\n >\n <ng-container *ngTemplateOutlet=\"searchIconTemplate\"></ng-container>\n </div>\n </sky-input-box>\n </div>\n </div>\n <div class=\"sky-search-item-dismiss\">\n <button\n *ngIf=\"mobileSearchShown\"\n class=\"sky-btn sky-btn-secondary sky-search-btn-dismiss\"\n type=\"button\"\n [attr.title]=\"'skyux_search_dismiss' | skyLibResources\"\n (click)=\"toggleSearchInput(false)\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"chevron-circle-left\" size=\"lg\">\n </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"double-chevron-left\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n </div>\n </div>\n</div>\n\n<ng-template #searchIconTemplate>\n <sky-icon *skyThemeIf=\"'default'\" icon=\"search\" size=\"lg\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"search\"\n iconType=\"skyux\"\n size=\"lg\"\n ></sky-icon>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SkyIdModule } from '@skyux/core';\nimport { SkyInputBoxModule } from '@skyux/forms';\nimport { SkyIconModule } from '@skyux/indicators';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\n\nimport { SkySearchComponent } from './search.component';\n\n@NgModule({\n declarations: [SkySearchComponent],\n imports: [\n CommonModule,\n SkyInputBoxModule,\n SkyLookupResourcesModule,\n FormsModule,\n SkyIconModule,\n SkyThemeModule,\n SkyIdModule,\n ],\n exports: [SkySearchComponent],\n})\nexport class SkySearchModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'skyLookupItemSelected',\n})\nexport class SkyLookupItemSelectedPipe implements PipeTransform {\n public transform(id: unknown, selectedIdMap: Map<unknown, unknown>): boolean {\n return selectedIdMap.has(id);\n }\n}\n","import { SkyAutocompleteSearchAsyncFunction } from '../../autocomplete/types/autocomplete-search-async-function';\n\nimport { SkyLookupSelectModeType } from './lookup-select-mode-type';\nimport { SkyLookupShowMoreNativePickerConfig } from './lookup-show-more-native-picker-config';\n\n/**\n * @internal\n * Context for the show more native picker. These values are provided by the lookup component.\n */\nexport class SkyLookupShowMoreNativePickerAsyncContext {\n public descriptorProperty: string;\n public idProperty: string;\n public initialSearch: string;\n public initialValue: unknown[];\n public searchAsync: SkyAutocompleteSearchAsyncFunction;\n public selectMode: SkyLookupSelectModeType;\n public showAddButton: boolean;\n public userConfig: SkyLookupShowMoreNativePickerConfig;\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { SkyModalInstance } from '@skyux/modals';\n\nimport { Subject, Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nimport { SkyAutocompleteSearchAsyncResult } from '../autocomplete/types/autocomplete-search-async-result';\n\nimport { SkyLookupShowMoreNativePickerAsyncContext } from './types/lookup-show-more-native-picker-async-context';\n\n/**\n * @internal\n * Internal component to implement the native picker.\n */\n@Component({\n selector: 'sky-lookup-show-more-async-modal',\n templateUrl: './lookup-show-more-async-modal.component.html',\n styleUrls: ['./lookup-show-more-async-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyLookupShowMoreAsyncModalComponent implements OnInit, OnDestroy {\n /**\n * @internal\n * Fires when users select the button to add new options to the list.\n */\n public addClick: Subject<void> = new Subject();\n\n public items: unknown[];\n\n public displayedItems: unknown[] = [];\n public onlyShowSelected = false;\n public searchText: string;\n public isSearching = false;\n public hasMoreItems = false;\n public isLoadingMore = false;\n public selectedIdMap: Map<unknown, unknown>;\n\n private continuationData: unknown;\n private offset = 0;\n private ngUnsubscribe = new Subject<void>();\n private currentSearchSub: Subscription | undefined;\n\n constructor(\n public modalInstance: SkyModalInstance,\n public context: SkyLookupShowMoreNativePickerAsyncContext,\n private changeDetector: ChangeDetectorRef\n ) {}\n\n public ngOnInit(): void {\n this.searchText = this.context.initialSearch;\n\n this.createInitialSelectedItemsMap();\n this.loadSearchResults();\n }\n\n public ngOnDestroy(): void {\n this.cancelCurrentSearch();\n\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n public addButtonClicked(): void {\n this.addClick.next();\n }\n\n public clearAll(): void {\n this.selectedIdMap = new Map(this.selectedIdMap);\n\n // Only deselect items that have been loaded; items that would be loaded\n // after an infinite scroll event should remain selected.\n for (const item of this.items) {\n this.selectedIdMap.delete(item[this.context.idProperty]);\n }\n\n this.updateDisplayedItems();\n\n this.changeDetector.markForCheck();\n }\n\n public itemClick(selectedItem: any): void {\n if (this.context.selectMode === 'single') {\n this.onItemSelect(!selectedItem.selected, selectedItem);\n }\n }\n\n public onItemSelect(newSelectState: boolean, itemToSelect: any): void {\n const itemId = itemToSelect[this.context.idProperty];\n\n // Create a new Map so the pipe transform will execute on the next\n // change detection cycle.\n this.selectedIdMap = new Map(this.selectedIdMap);\n\n if (this.context.selectMode === 'single') {\n if (newSelectState) {\n this.selectedIdMap.clear();\n this.selectedIdMap.set(itemId, itemToSelect);\n }\n } else {\n if (newSelectState) {\n this.selectedIdMap.set(itemId, itemToSelect);\n } else {\n this.selectedIdMap.delete(itemId);\n }\n }\n\n this.updateDisplayedItems();\n }\n\n public searchApplied(searchText: string) {\n this.offset = 0;\n this.searchText = searchText;\n\n this.loadSearchResults();\n }\n\n public selectAll(): void {\n this.selectedIdMap = new Map();\n\n for (const item of this.items) {\n this.selectedIdMap.set(item[this.context.idProperty], item);\n }\n\n this.updateDisplayedItems();\n }\n\n public infiniteScrollEnd(): void {\n this.cancelCurrentSearch();\n\n /* Sanity check - else case would only happen if this was called directly */\n /* istanbul ignore else */\n if (this.hasMoreItems) {\n this.isLoadingMore = true;\n\n this.performSearch((result) => {\n this.items = this.items.concat(result.items);\n\n this.updateDisplayedItems();\n\n this.isLoadingMore = false;\n });\n }\n }\n\n public save(): void {\n const selectedItems = Array.from(\n this.selectedIdMap.values(),\n (itemData, index) => ({\n index,\n itemData,\n })\n ).sort((a, b) => {\n return this.items.indexOf(a.itemData) < this.items.indexOf(b.itemData)\n ? -1\n : 1;\n });\n\n this.modalInstance.save(selectedItems);\n }\n\n private loadSearchResults(): void {\n this.cancelCurrentSearch();\n\n this.isSearching = true;\n\n this.performSearch((result) => {\n this.isSearching = false;\n this.items = result.items;\n });\n }\n\n private createInitialSelectedItemsMap(): void {\n this.selectedIdMap = new Map(\n this.context.initialValue.map((item) => [\n item[this.context.idProperty],\n item,\n ])\n );\n }\n\n private performSearch(\n processResults: (result: SkyAutocompleteSearchAsyncResult) => void\n ): void {\n this.currentSearchSub = this.context\n .searchAsync({\n displayType: 'modal',\n offset: this.offset,\n searchText: this.searchText || '',\n continuationData: this.continuationData,\n })\n .pipe(take(1))\n .subscribe((result) => {\n processResults(result);\n\n this.continuationData = result.continuationData;\n this.hasMoreItems = result.hasMore;\n this.offset = this.items.length;\n\n this.updateDisplayedItems();\n\n this.changeDetector.markForCheck();\n });\n }\n\n private updateDisplayedItems(): void {\n if (this.onlyShowSelected) {\n this.displayedItems = this.items.filter((item) =>\n this.selectedIdMap.has(item[this.context.idProperty])\n );\n } else {\n this.displayedItems = this.items;\n }\n }\n\n private cancelCurrentSearch(): void {\n if (this.currentSearchSub) {\n this.currentSearchSub.unsubscribe();\n this.currentSearchSub = undefined;\n this.isLoadingMore = false;\n this.isSearching = false;\n }\n }\n}\n","<sky-modal>\n <sky-modal-header>\n <ng-container *ngIf=\"context.userConfig?.title; else defaultTitle\">\n {{ context.userConfig.title }}\n </ng-container>\n </sky-modal-header>\n <sky-modal-content>\n <sky-wait [isWaiting]=\"isSearching\"></sky-wait>\n <div\n [skyViewkeeper]=\"[\n '.sky-lookup-show-more-modal-toolbar',\n '.sky-lookup-show-more-modal-muiltiselect-toolbar'\n ]\"\n >\n <sky-toolbar class=\"sky-lookup-show-more-modal-toolbar\">\n <sky-toolbar-section>\n <sky-toolbar-item>\n <sky-search\n [debounceTime]=\"250\"\n [searchText]=\"searchText\"\n (searchApply)=\"searchApplied($event)\"\n >\n </sky-search>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <button\n *ngIf=\"context.showAddButton\"\n type=\"button\"\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-add\"\n (click)=\"addButtonClicked()\"\n >\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"add\"\n iconType=\"skyux\"\n ></sky-icon>\n <sky-icon *skyThemeIf=\"'default'\" icon=\"plus-circle\"></sky-icon>\n {{ 'skyux_lookup_show_more_add' | skyLibResources }}\n </button>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n <sky-toolbar\n *ngIf=\"context.selectMode === 'multiple'\"\n class=\"sky-lookup-show-more-modal-muiltiselect-toolbar\"\n >\n <sky-toolbar-section>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-select-all-btn\"\n type=\"button\"\n (click)=\"selectAll()\"\n >\n {{\n 'skyux_lookup_show_more_select_all_button_title'\n | skyLibResources\n }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-clear-all-btn\"\n type=\"button\"\n (click)=\"clearAll()\"\n >\n {{\n 'skyux_lookup_show_more_clear_all_button_title'\n | skyLibResources\n }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <sky-checkbox\n [(checked)]=\"onlyShowSelected\"\n (change)=\"updateDisplayedItems()\"\n >\n <sky-checkbox-label>\n {{\n 'skyux_lookup_show_more_show_selected_option_title'\n | skyLibResources\n }}\n </sky-checkbox-label>\n </sky-checkbox>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n </div>\n <div\n *ngIf=\"!isSearching && displayedItems.length === 0\"\n class=\"sky-font-deemphasized sky-lookup-show-more-no-results\"\n >\n {{ 'skyux_lookup_show_more_no_results' | skyLibResources }}\n </div>\n <sky-repeater class=\"sky-lookup-show-more-repeater\" expandMode=\"none\">\n <sky-repeater-item\n *ngFor=\"let item of displayedItems\"\n [isSelected]=\"\n item[context.idProperty] | skyLookupItemSelected: selectedIdMap\n \"\n [selectable]=\"context.selectMode === 'multiple'\"\n (click)=\"itemClick(item)\"\n (keyup.enter)=\"itemClick(item)\"\n (isSelectedChange)=\"onItemSelect($event, item)\"\n >\n <sky-repeater-item-content>\n <ng-container\n *ngTemplateOutlet=\"\n context.userConfig?.itemTemplate\n ? context.userConfig?.itemTemplate\n : defaultItemTemplate;\n context: { item: item }\n \"\n >\n </ng-container>\n </sky-repeater-item-content>\n </sky-repeater-item>\n </sky-repeater>\n <sky-infinite-scroll\n [enabled]=\"hasMoreItems\"\n [loading]=\"isLoadingMore\"\n (scrollEnd)=\"infiniteScrollEnd()\"\n >\n </sky-infinite-scroll>\n </sky-modal-content>\n <sky-modal-footer>\n <button\n class=\"sky-btn sky-btn-primary sky-margin-inline-compact sky-lookup-show-more-modal-save\"\n type=\"button\"\n [disabled]=\"isSearching\"\n (click)=\"save()\"\n >\n {{ 'skyux_lookup_show_more_select' | skyLibResources }}\n </button>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-close\"\n type=\"button\"\n (click)=\"modalInstance.close()\"\n >\n {{ 'skyux_lookup_show_more_cancel' | skyLibResources }}\n </button>\n </sky-modal-footer>\n</sky-modal>\n\n<ng-template let-item=\"item\" #defaultItemTemplate>\n {{ item[context.descriptorProperty] }}\n</ng-template>\n\n<ng-template #defaultTitle>\n <ng-container *ngIf=\"context.selectMode === 'single'\">\n {{ 'skyux_lookup_show_more_modal_title_single' | skyLibResources }}\n </ng-container>\n <ng-container *ngIf=\"context.selectMode === 'multiple'\">\n {{ 'skyux_lookup_show_more_modal_title_multiple' | skyLibResources }}\n </ng-container>\n</ng-template>\n","import { SkyAutocompleteSearchFunction } from '../../autocomplete/types/autocomplete-search-function';\n\nimport { SkyLookupSelectModeType } from './lookup-select-mode-type';\nimport { SkyLookupShowMoreNativePickerConfig } from './lookup-show-more-native-picker-config';\n\n/**\n * @internal\n * Context for the show more native picker. These values are provided by the lookup component.\n */\nexport class SkyLookupShowMoreNativePickerContext {\n public items: any[];\n public descriptorProperty: string;\n public initialSearch: string;\n public initialValue: any[];\n public search: SkyAutocompleteSearchFunction;\n public selectMode: SkyLookupSelectModeType;\n public showAddButton: boolean;\n public userConfig: SkyLookupShowMoreNativePickerConfig;\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n} from '@angular/core';\nimport { SkyModalInstance } from '@skyux/modals';\n\nimport { Subject } from 'rxjs';\n\nimport { SkyLookupShowMoreNativePickerContext } from './types/lookup-show-more-native-picker-context';\n\n/**\n * @internal\n * Internal component to implement the native picker.\n */\n@Component({\n // Suppress this error rather than fix the selector since consumers with unit tests\n // may be looking for an element with this selector. We can change it in the next major\n // version of SKY UX.\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'skyux-lookup-show-more-modal',\n templateUrl: './lookup-show-more-modal.component.html',\n styleUrls: ['./lookup-show-more-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyLookupShowMoreModalComponent\n implements AfterViewInit, OnDestroy\n{\n /**\n * @internal\n * Fires when users select the button to add new options to the list.\n */\n public addClick: Subject<void> = new Subject();\n\n public items: any[];\n\n public dataManagerConfig = {\n sortOptions: [\n {\n id: 'az',\n label: 'Alphabetical (A - Z)',\n descending: false,\n propertyName: 'name',\n },\n {\n id: 'za',\n label: 'Alphabetical (Z - A)',\n descending: true,\n propertyName: 'name',\n },\n ],\n };\n\n public displayedItems: any[] = [];\n public itemsHaveMore = false;\n public onlyShowSelected = false;\n public searchText: string;\n public selectedItems: { index: number; itemData: any }[] = [];\n\n private itemIndex = 0;\n private ngUnsubscribe = new Subject<void>();\n\n constructor(\n public modalInstance: SkyModalInstance,\n public context: SkyLookupShowMoreNativePickerContext,\n private changeDetector: ChangeDetectorRef\n ) {}\n\n public ngAfterViewInit(): void {\n this.searchText = this.context.initialSearch;\n this.addItems();\n }\n\n public ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n public addButtonClicked(): void {\n this.addClick.next();\n }\n\n public addItems(): void {\n if (!this.items || this.items.length === 0) {\n const selectedItems: any[] = this.selectedItems.slice();\n\n this.items = this.context.items\n ? this.context.items.map((item) => {\n return {\n value: item,\n selected: false,\n };\n })\n : [];\n\n this.items.forEach((item) => {\n const isInitialValue: boolean =\n this.context.initialValue === item.value;\n\n const initialIsArray: boolean = Array.isArray(\n this.context.initialValue\n );\n const initialValueContainsItem: boolean =\n this.context.initialValue.findIndex(\n (initialItem: any) => initialItem === item.value\n ) >= 0;\n\n if (isInitialValue || (initialIsArray && initialValueContainsItem)) {\n item.selected = true;\n const itemIndex = this.items.indexOf(item);\n if (\n selectedItems.findIndex(\n (selectedItem) => selectedItem.index === itemIndex\n ) < 0\n ) {\n selectedItems.push({ index: itemIndex, itemData: item.value });\n }\n }\n });\n\n this.selectedItems = selectedItems;\n this.updateDataState();\n this.changeDetector.markForCheck();\n }\n\n this.itemIndex = this.itemIndex + 10;\n this.searchItems(this.items).then((searchedItems) => {\n this.displayedItems = searchedItems.slice(0, this.itemIndex);\n\n if (this.itemIndex > searchedItems.length) {\n this.itemsHaveMore = false;\n } else {\n this.itemsHaveMore = true;\n }\n this.changeDetector.markForCheck();\n });\n }\n\n public clearAll(): void {\n this.displayedItems.forEach((item) => {\n if (item.selected) {\n item.selected = false;\n }\n });\n this.selectedItems = [];\n this.updateDataState();\n this.changeDetector.markForCheck();\n }\n\n public itemClick(selectedItem: any): void {\n if (this.context.selectMode === 'single') {\n this.onItemSelect(!selectedItem.selected, selectedItem);\n }\n }\n\n public onItemSelect(newSelectState: boolean, itemToSelect: any): void {\n if (this.context.selectMode === 'single') {\n /* Sanity check - single select mode should only alow for a `true` select state */\n /* istanbul ignore else */\n if (newSelectState) {\n itemToSelect.selected = true;\n this.items.forEach((item) => {\n if (item.value !== itemToSelect.value) {\n item.selected = false;\n }\n });\n this.displayedItems.forEach((item) => {\n if (item.value !== itemToSelect.value) {\n item.selected = false;\n }\n });\n const itemIndex = this.items.findIndex(\n (item) => item.value === itemToSelect.value\n );\n this.selectedItems = [\n { index: itemIndex, itemData: this.items[itemIndex].value },\n ];\n }\n } else {\n const selectedItems: { index: number; itemData: any }[] =\n this.selectedItems;\n const allItemsIndex = this.items.findIndex(\n (item) => item.value === itemToSelect.value\n );\n const selectedItemsIndex = selectedItems.findIndex(\n (selectedItem) => selectedItem.index === allItemsIndex\n );\n\n if (newSelectState && selectedItemsIndex === -1) {\n selectedItems.push({\n index: allItemsIndex,\n itemData: this.items[allItemsIndex].value,\n });\n } else if (!newSelectState && selectedItemsIndex !== -1) {\n selectedItems.splice(selectedItemsIndex, 1);\n }\n\n this.selectedItems = selectedItems;\n }\n this.updateDataState();\n this.changeDetector.markForCheck();\n }\n\n public searchApplied(searchText: string) {\n /* istanbul ignore else */\n if (this.searchText !== searchText) {\n this.itemIndex = 10;\n }\n this.searchText = searchText;\n this.updateDataState();\n }\n\n public searchItems(items: any[]): Promise<any[]> {\n const searchText = this.searchText;\n\n if (searchText) {\n const resultValues = this.context.search(\n searchText,\n items.map((item) => {\n return item.value;\n })\n );\n\n if (resultValues instanceof Array) {\n const result = items.filter(\n (item) => resultValues.indexOf(item.value) >= 0\n );\n return Promise.resolve(result);\n } else {\n return resultValues.then((values) => {\n const result = items.filter(\n (item) => values.indexOf(item.value) >= 0\n );\n return Promise.resolve(result);\n });\n }\n } else {\n return Promise.resolve(items);\n }\n }\n\n public selectAll(): void {\n const selectedItems: { index: number; itemData: any }[] =\n this.selectedItems;\n\n this.displayedItems.forEach((item: any) => {\n if (!item.selected) {\n item.selected = true;\n\n const index = this.items.indexOf(item);\n\n /* Sanity check */\n /* istanbul ignore else */\n if (\n selectedItems.findIndex(\n (selectedItem) => selectedItem.index === index\n ) < 0\n ) {\n selectedItems.push({\n index: index,\n itemData: this.items[index].value,\n });\n }\n }\n });\n\n this.selectedItems = selectedItems;\n this.updateDataState();\n this.changeDetector.markForCheck();\n }\n\n public updateDataState(): void {\n const selectedItems: { index: number; itemData: any }[] =\n this.selectedItems;\n this.items.forEach((item: any, index: number) => {\n item.selected =\n selectedItems.findIndex(\n (selectedItem) => selectedItem.index === index\n ) !== -1;\n });\n\n this.searchItems(this.items).then((searchedItems) => {\n if (this.onlyShowSelected) {\n searchedItems = searchedItems.filter((item) => item.selected);\n }\n this.displayedItems = searchedItems.slice(0, this.itemIndex);\n\n if (this.itemIndex > searchedItems.length) {\n this.itemsHaveMore = false;\n } else {\n this.itemsHaveMore = true;\n }\n\n this.changeDetector.markForCheck();\n });\n }\n\n public updateItemData(data: any[]): void {\n this.context.items = data;\n this.items = undefined;\n this.itemIndex = 10;\n this.selectedItems.forEach((selectedItem) => {\n this.context.items.forEach((item: any, index: number) => {\n if (selectedItem.itemData === item) {\n selectedItem.index = index;\n }\n });\n });\n\n this.addItems();\n\n this.changeDetector.markForCheck();\n }\n}\n","<sky-modal>\n <sky-modal-header>\n <ng-container *ngIf=\"context.userConfig?.title; else defaultTitle\">\n {{ context.userConfig.title }}\n </ng-container>\n </sky-modal-header>\n <sky-modal-content>\n <div\n [skyViewkeeper]=\"[\n '.sky-lookup-show-more-modal-toolbar',\n '.sky-lookup-show-more-modal-muiltiselect-toolbar'\n ]\"\n >\n <sky-toolbar class=\"sky-lookup-show-more-modal-toolbar\">\n <sky-toolbar-section>\n <sky-toolbar-item>\n <sky-search\n [debounceTime]=\"250\"\n [searchText]=\"searchText\"\n (searchApply)=\"searchApplied($event)\"\n >\n </sky-search>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <button\n *ngIf=\"context.showAddButton\"\n type=\"button\"\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-add\"\n (click)=\"addButtonClicked()\"\n >\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"add\"\n iconType=\"skyux\"\n ></sky-icon>\n <sky-icon *skyThemeIf=\"'default'\" icon=\"plus-circle\"></sky-icon>\n {{ 'skyux_lookup_show_more_add' | skyLibResources }}\n </button>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n <sky-toolbar\n *ngIf=\"context.selectMode === 'multiple'\"\n class=\"sky-lookup-show-more-modal-muiltiselect-toolbar\"\n >\n <sky-toolbar-section>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-select-all-btn\"\n type=\"button\"\n (click)=\"selectAll()\"\n >\n {{\n 'skyux_lookup_show_more_select_all_button_title'\n | skyLibResources\n }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-clear-all-btn\"\n type=\"button\"\n (click)=\"clearAll()\"\n >\n {{\n 'skyux_lookup_show_more_clear_all_button_title'\n | skyLibResources\n }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <sky-checkbox\n [(checked)]=\"onlyShowSelected\"\n (change)=\"updateDataState()\"\n >\n <sky-checkbox-label>\n {{\n 'skyux_lookup_show_more_show_selected_option_title'\n | skyLibResources\n }}\n </sky-checkbox-label>\n </sky-checkbox>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n </div>\n <div\n *ngIf=\"displayedItems.length === 0\"\n class=\"sky-font-deemphasized sky-lookup-show-more-no-results\"\n >\n {{ 'skyux_lookup_show_more_no_results' | skyLibResources }}\n </div>\n <sky-repeater class=\"sky-lookup-show-more-repeater\" expandMode=\"none\">\n <sky-repeater-item\n *ngFor=\"let item of displayedItems\"\n [selectable]=\"context.selectMode === 'multiple'\"\n [(isSelected)]=\"item.selected\"\n (click)=\"itemClick(item)\"\n (keyup.enter)=\"itemClick(item)\"\n (isSelectedChange)=\"onItemSelect($event, item)\"\n >\n <sky-repeater-item-content>\n <ng-container\n *ngTemplateOutlet=\"\n context.userConfig?.itemTemplate\n ? context.userConfig?.itemTemplate\n : defaultItemTemplate;\n context: { item: item.value }\n \"\n >\n </ng-container>\n </sky-repeater-item-content>\n </sky-repeater-item>\n </sky-repeater>\n <sky-infinite-scroll [enabled]=\"itemsHaveMore\" (scrollEnd)=\"addItems()\">\n </sky-infinite-scroll>\n </sky-modal-content>\n <sky-modal-footer>\n <button\n class=\"sky-btn sky-btn-primary sky-margin-inline-compact sky-lookup-show-more-modal-save\"\n type=\"button\"\n (click)=\"modalInstance.save(selectedItems)\"\n >\n {{ 'skyux_lookup_show_more_select' | skyLibResources }}\n </button>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-close\"\n type=\"button\"\n (click)=\"modalInstance.close()\"\n >\n {{ 'skyux_lookup_show_more_cancel' | skyLibResources }}\n </button>\n </sky-modal-footer>\n</sky-modal>\n\n<ng-template let-item=\"item\" #defaultItemTemplate>\n {{ item[context.descriptorProperty] }}\n</ng-template>\n\n<ng-template #defaultTitle>\n <ng-container *ngIf=\"context.selectMode === 'single'\">\n {{ 'skyux_lookup_show_more_modal_title_single' | skyLibResources }}\n </ng-container>\n <ng-container *ngIf=\"context.selectMode === 'multiple'\">\n {{ 'skyux_lookup_show_more_modal_title_multiple' | skyLibResources }}\n </ng-container>\n</ng-template>\n","import { ElementRef, Injectable } from '@angular/core';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyLookupAdapterService {\n public focusInput(elRef: ElementRef): void {\n const inputEl: HTMLElement =\n elRef.nativeElement.querySelector('.sky-lookup-input');\n\n /* Sanity check */\n /* istanbul ignore else */\n if (inputEl) {\n inputEl.focus();\n }\n }\n}\n","import {\n Directive,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n} from '@angular/core';\n\nimport { skyAutocompleteDefaultSearchFunction } from '../autocomplete/autocomplete-default-search-function';\nimport { SkyAutocompleteSearchAsyncArgs } from '../autocomplete/types/autocomplete-search-async-args';\nimport { SkyAutocompleteSearchFunction } from '../autocomplete/types/autocomplete-search-function';\nimport { SkyAutocompleteSearchFunctionFilter } from '../autocomplete/types/autocomplete-search-function-filter';\n\n/**\n * @internal\n */\n@Directive()\nexport class SkyLookupAutocompleteAdapter {\n /**\n * Specifies how many milliseconds to wait before searching while users\n * enter text in the lookup field.\n * @default 0\n */\n @Input()\n public debounceTime: number;\n\n /**\n * Specifies an object property to display in the text input after users\n * select an item in the dropdown list.\n * @default \"name\"\n */\n @Input()\n public set descriptorProperty(value: string) {\n this._descriptorProperty = value;\n }\n\n public get descriptorProperty(): string {\n return this._descriptorProperty || 'name';\n }\n\n /**\n * Specifies an array of object properties to search.\n * @default [\"name\"]\n */\n @Input()\n public set propertiesToSearch(value: string[]) {\n this._propertiesToSearch = value;\n }\n\n public get propertiesToSearch(): string[] {\n return this._propertiesToSearch || ['name'];\n }\n\n /**\n * Specifies a function to dynamically manage the data source when users\n * change the text in the lookup field. The search function must return\n * an array or a promise of an array. The `search` property is particularly\n * useful when the data source does not live in the source code. If the\n * search requires calling a remote data source, use `searchAsync` instead of\n * `search`.\n */\n @Input()\n public set search(value: SkyAutocompleteSearchFunction) {\n this._search = value;\n }\n\n public get search(): SkyAutocompleteSearchFunction {\n return (\n this._search ||\n skyAutocompleteDefaultSearchFunction({\n propertiesToSearch: this.propertiesToSearch,\n searchFilters: this.searchFilters,\n })\n );\n }\n\n /**\n * Specifies a template to format each option in the dropdown list. The lookup component\n * injects values into the template as `item` variables that reference all the object\n * properties of the options.\n */\n @Input()\n public searchResultTemplate: TemplateRef<unknown>;\n\n /**\n * Specifies the minimum number of characters that users must enter before\n * the lookup component searches the data source and displays search results\n * in the dropdown list.\n * @default 1\n */\n @Input()\n public searchTextMinimumCharacters: number;\n\n /**\n * Specifies an array of functions to call against each search result in order\n * to filter the search results when using the default search function. When\n * using a custom search function via the `search` property filters must be\n * applied manually inside that function. The function must return `true` or\n * `false` for each result to indicate whether to display it in the dropdown list.\n */\n @Input()\n public searchFilters: SkyAutocompleteSearchFunctionFilter[];\n\n /**\n * Specifies the maximum number of search results to display in the dropdown\n * list. By default, the lookup component displays all matching results.\n */\n @Input()\n public searchResultsLimit: number;\n\n /**\n * Fires when users enter new search information and allows results to be\n * returned via an observable.\n */\n @Output()\n public searchAsync = new EventEmitter<SkyAutocompleteSearchAsyncArgs>();\n\n private _descriptorProperty: string;\n private _propertiesToSearch: string[];\n private _search: SkyAutocompleteSearchFunction;\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { SkyAppWindowRef } from '@skyux/core';\nimport { SkyInputBoxHostService } from '@skyux/forms';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport {\n SkyToken,\n SkyTokensMessage,\n SkyTokensMessageType,\n} from '@skyux/indicators';\nimport { SkyModalInstance, SkyModalService } from '@skyux/modals';\nimport { SkyThemeService } from '@skyux/theme';\n\nimport { Subject, fromEvent as observableFromEvent } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\n\nimport { SkyAutocompleteInputDirective } from '../autocomplete/autocomplete-input.directive';\nimport { SkyAutocompleteMessage } from '../autocomplete/types/autocomplete-message';\nimport { SkyAutocompleteMessageType } from '../autocomplete/types/autocomplete-message-type';\nimport { SkyAutocompleteSearchAsyncArgs } from '../autocomplete/types/autocomplete-search-async-args';\nimport { SkyAutocompleteSelectionChange } from '../autocomplete/types/autocomplete-selection-change';\nimport { SkyAutocompleteShowMoreArgs } from '../autocomplete/types/autocomplete-show-more-args';\n\nimport { SkyLookupAdapterService } from './lookup-adapter.service';\nimport { SkyLookupAutocompleteAdapter } from './lookup-autocomplete-adapter';\nimport { SkyLookupShowMoreAsyncModalComponent } from './lookup-show-more-async-modal.component';\nimport { SkyLookupShowMoreModalComponent } from './lookup-show-more-modal.component';\nimport { SkyLookupAddCallbackArgs } from './types/lookup-add-click-callback-args';\nimport { SkyLookupAddClickEventArgs } from './types/lookup-add-click-event-args';\nimport { SkyLookupSelectModeType } from './types/lookup-select-mode-type';\nimport { SkyLookupShowMoreConfig } from './types/lookup-show-more-config';\nimport { SkyLookupShowMoreNativePickerAsyncContext } from './types/lookup-show-more-native-picker-async-context';\nimport { SkyLookupShowMoreNativePickerContext } from './types/lookup-show-more-native-picker-context';\n\n@Component({\n selector: 'sky-lookup',\n templateUrl: './lookup.component.html',\n styleUrls: ['./lookup.component.scss'],\n providers: [SkyLookupAdapterService],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyLookupComponent\n extends SkyLookupAutocompleteAdapter\n implements OnInit, AfterViewInit, OnDestroy, ControlValueAccessor\n{\n /**\n * Specifies an ARIA label for the typeahead search input\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the input includes a visible label, use `ariaLabelledBy` instead.\n */\n @Input()\n public ariaLabel: string;\n\n /**\n * Specifies the HTML element ID (without the leading `#`) of the element that labels\n * the typeahead search input. This sets the input's `aria-labelledby` attribute\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the input does not include a visible label, use `ariaLabel` instead.\n */\n @Input()\n public ariaLabelledBy: string;\n\n /**\n * Specifies the value for the `autocomplete` attribute on the form input.\n * @default \"off\"\n */\n @Input()\n public autocompleteAttribute: string;\n\n /**\n * Specifies a data source for the lookup component to search when users\n * enter text. You can specify static data such as an array of objects, or\n * you can pull data from a database.\n * @default []\n */\n @Input()\n public set data(value: any[]) {\n this._data = value;\n\n if (this.openNativePicker && this.searchAsync.observers.length === 0) {\n this.openNativePicker.componentInstance.updateItemData(value);\n }\n }\n\n public get data(): any[] {\n return this._data;\n }\n\n /**\n * Indicates whether to disable the lookup field.\n */\n @Input()\n public disabled = false;\n\n /**\n * Indicates whether to enable users to open a picker where they can view all options.\n */\n @Input()\n public enableShowMore = false;\n\n /**\n * Specifies placeholder text to display in the lookup field.\n */\n @Input()\n public placeholderText: string;\n\n /**\n * Specifies an object property that represents the object's unique identifier.\n * Specifying this property enables token animations and more efficient rendering.\n */\n @Input()\n public idProperty: string;\n\n /**\n * Indicates whether to display a button that lets users add options to the list.\n */\n @Input()\n public showAddButton = false;\n\n /**\n * Specifies configuration options for the picker that displays all options.\n */\n @Input()\n public showMoreConfig: SkyLookupShowMoreConfig;\n\n /**\n * Specifies whether users can select one option or multiple options.\n * @default \"multiple\"\n */\n @Input()\n public set selectMode(value: SkyLookupSelectModeType) {\n const multipleToSingle: boolean =\n value === 'single' && this.selectMode === 'multiple';\n\n this._selectMode = value;\n this.updateForSelectMode();\n\n if (multipleToSingle) {\n if (this.value && this.value.length > 1) {\n // The `setTimeout` is needed to avoid a `ExpressionChangedAfterItHasBeenCheckedError` error in template forms.\n setTimeout(() => {\n this.writeValue([this.value[0]]);\n this.changeDetector.detectChanges();\n });\n }\n }\n }\n\n public get selectMode(): SkyLookupSelectModeType {\n return this._selectMode || 'multiple';\n }\n\n /**\n * @internal\n */\n @Input()\n public wrapperClass?: string;\n\n /**\n * Fires when users select the button to add options to the list.\n */\n @Output()\n public addClick: EventEmitter<SkyLookupAddClickEventArgs> = new EventEmitter();\n\n public get tokens(): SkyToken[] {\n return this._tokens;\n }\n\n public set tokens(value: SkyToken[]) {\n // Collapse the tokens into a single token if the user has selected many options.\n if (this.enableShowMore && this.value.length > 5) {\n this.resourcesService\n .getString('skyux_lookup_tokens_summary', this.value.length.toString())\n .pipe(take(1))\n .subscribe((label) => {\n this._tokens = [\n {\n value: { [this.descriptorProperty]: label },\n },\n ];\n this.changeDetector.markForCheck();\n });\n } else {\n this._tokens = value;\n this.changeDetector.markForCheck();\n }\n }\n\n public get value(): any[] {\n return this._value ? this._value : [];\n }\n\n public set value(newValue: any[]) {\n this._value = newValue;\n\n if (!this.openNativePicker) {\n this.tokens = this.parseTokens(newValue);\n }\n\n this.onChange(this._value);\n this.onTouched();\n }\n\n public autocompleteController = new Subject<SkyAutocompleteMessage>();\n public isInputFocused = false;\n public tokensController = new Subject<SkyTokensMessage>();\n\n @ViewChild(SkyAutocompleteInputDirective, {\n read: SkyAutocompleteInputDirective,\n static: false,\n })\n private set autocompleteInputDirective(value: SkyAutocompleteInputDirective) {\n this._autocompleteInputDirective = value;\n this.updateForSelectMode();\n }\n\n private get autocompleteInputDirective(): SkyAutocompleteInputDirective {\n return this._autocompleteInputDirective;\n }\n\n @ViewChild('showMoreButtonTemplateRef', {\n read: TemplateRef,\n static: true,\n })\n private showMoreButtonTemplateRef: TemplateRef<unknown>;\n\n @ViewChild('inputTemplateRef', {\n read: TemplateRef,\n static: true,\n })\n private inputTemplateRef: TemplateRef<unknown>;\n\n @ViewChild('lookupWrapper', {\n read: ElementRef,\n })\n private lookupWrapperRef: ElementRef;\n\n @ViewChild('searchIconTemplateRef', {\n read: TemplateRef,\n static: true,\n })\n private searchIconTemplateRef: TemplateRef<unknown>;\n\n private ngUnsubscribe = new Subject<void>();\n private idle = new Subject<void>();\n private markForTokenFocusOnKeyUp = false;\n private openNativePicker: SkyModalInstance;\n\n private _autocompleteInputDirective: SkyAutocompleteInputDirective;\n private _data: any[];\n private _selectMode: SkyLookupSelectModeType;\n private _tokens: SkyToken[];\n private _value: any[];\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private elementRef: ElementRef,\n private windowRef: SkyAppWindowRef,\n @Self() @Optional() ngControl: NgControl,\n private adapter: SkyLookupAdapterService,\n private modalService: SkyModalService,\n private resourcesService: SkyLibResourcesService,\n @Optional() public inputBoxHostSvc?: SkyInputBoxHostService,\n @Optional() public themeSvc?: SkyThemeService\n ) {\n super();\n ngControl.valueAccessor = this;\n }\n\n public ngOnInit(): void {\n if (this.inputBoxHostSvc) {\n this.inputBoxHostSvc.populate({\n inputTemplate: this.inputTemplateRef,\n buttonsTemplate: this.enableShowMore\n ? this.showMoreButtonTemplateRef\n : undefined,\n iconsInsetTemplate: this.enableShowMore\n ? undefined\n : this.searchIconTemplateRef,\n });\n }\n\n /* istanbul ignore else */\n if (this.themeSvc) {\n // This is required for the autocomplete directive to be set after elements\n // are rearranged when switching themes.\n this.themeSvc.settingsChange\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n this.changeDetector.markForCheck();\n });\n }\n }\n\n public ngAfterViewInit(): void {\n if (!this.disabled) {\n this.addEventListeners();\n }\n }\n\n public ngOnDestroy(): void {\n this.removeEventListeners();\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n this.tokensController.complete();\n }\n\n public addButtonClicked(): void {\n this.addClick.emit({\n itemAdded: (args: SkyLookupAddCallbackArgs) =>\n this.onAddButtonComplete(args),\n });\n }\n\n public onAutocompleteSelectionChange(\n change: SkyAutocompleteSelectionChange\n ): void {\n /* istanbul ignore else */\n if (change.selectedItem) {\n this.addToSelected(change.selectedItem);\n } else if (this.selectMode === 'single') {\n this.writeValue([]);\n }\n }\n\n public onAutocompleteBlur(): void {\n this.onTouched();\n }\n\n public onTokensChange(change: SkyToken[]): void {\n if (!change) {\n return;\n }\n\n if (this.tokens !== change) {\n if (change.length === 0) {\n this.focusInput();\n }\n\n // NOTE: We do this here instead of just using the `value` setter because we need to use the\n // set of tokens returned here for the purposes of setting focus (see `onTokensKeyUp`).\n this._value = change.map((token) => {\n return token.value;\n });\n this.tokens = change;\n\n this.sendAutocompleteMessage(\n SkyAutocompleteMessageType.RepositionDropdown\n );\n this.onChange(this._value);\n this.onTouched();\n }\n }\n\n public onTokensFocusIndexOverRange(): void {\n this.windowRef.nativeWindow.setTimeout(() => {\n this.focusInput();\n });\n }\n\n public onTokensKeyUp(event: KeyboardEvent): void {\n /* istanbul ignore else */\n if (this.selectMode !== 'single') {\n switch (event.key) {\n case 'Backspace':\n this.sendTokensMessage(SkyTokensMessageType.RemoveActiveToken);\n this.sendTokensMessage(SkyTokensMessageType.FocusPreviousToken);\n event.preventDefault();\n break;\n\n case 'Del':\n case 'Delete':\n this.sendTokensMessage(SkyTokensMessageType.RemoveActiveToken);\n this.windowRef.nativeWindow.setTimeout(() => {\n this.sendTokensMessage(SkyTokensMessageType.FocusActiveToken);\n });\n event.preventDefault();\n break;\n }\n }\n }\n\n public writeValue(value: any[]): void {\n this.value = value ? value : [];\n this.updateForSelectMode();\n }\n\n // Angular automatically constructs these methods.\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onChange = (value: any[]) => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onTouched = () => {};\n\n public registerOnChange(fn: (value: any) => void) {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n // Allows Angular to disable the input.\n public setDisabledState(disabled: boolean): void {\n this.removeEventListeners();\n\n if (!disabled) {\n this.addEventListeners();\n }\n\n this.disabled = disabled;\n this.changeDetector.markForCheck();\n }\n\n public clearSearchText(): void {\n this.autocompleteInputDirective.value = undefined;\n this.autocompleteInputDirective.inputTextValue = undefined;\n }\n\n // Handles when to focus on the tokens.\n // Check for empty search text on keydown, before the escape key is fully pressed.\n // (Otherwise, a single character being escaped would register as empty on keyup.)\n // If empty on keydown, set a flag so that the appropriate action can be taken on keyup.\n public inputKeydown(event: KeyboardEvent, value: string): void {\n /* Sanity check as this should only be called when in multiple select mode */\n /* istanbul ignore else */\n if (this.selectMode !== 'single') {\n switch (event.key) {\n case 'Enter':\n event.preventDefault();\n break;\n case 'ArrowLeft':\n case 'Backspace':\n case 'Left':\n if (value) {\n this.markForTokenFocusOnKeyUp = false;\n } else {\n this.markForTokenFocusOnKeyUp = true;\n }\n break;\n default:\n }\n }\n }\n\n public inputKeyup(event: KeyboardEvent): void {\n /* Sanity check as this should only be called when in multiple select mode */\n /* istanbul ignore else */\n if (this.selectMode !== 'single') {\n switch (event.key) {\n case 'Esc':\n case 'Escape':\n this.clearSearchText();\n event.preventDefault();\n break;\n case 'ArrowLeft':\n case 'Backspace':\n case 'Left':\n /* istanbul ignore else */\n if (this.markForTokenFocusOnKeyUp) {\n this.sendTokensMessage(SkyTokensMessageType.FocusLastToken);\n event.preventDefault();\n }\n break;\n default:\n }\n\n event.stopPropagation();\n }\n }\n\n public onSearchButtonClick(): void {\n /*istanbul ignore next*/\n if (this.disabled) {\n return;\n }\n this.sendAutocompleteMessage(SkyAutocompleteMessageType.CloseDropdown);\n let isValueInTextBox = false;\n if (this.selectMode === 'single') {\n isValueInTextBox =\n this.autocompleteInputDirective.value &&\n this.autocompleteInputDirective.inputTextValue ===\n this.autocompleteInputDirective.value[this.descriptorProperty];\n }\n\n this.openPicker(\n isValueInTextBox ? '' : this.autocompleteInputDirective.inputTextValue\n );\n this.autocompleteInputDirective.restoreInputTextValueToPreviousState();\n }\n\n public onShowMoreClick(event: SkyAutocompleteShowMoreArgs): void {\n /* Sanity check */\n /* istanbul ignore else*/\n if (event) {\n this.openPicker(event.inputValue);\n }\n }\n\n private createNativePickerInstance(initialSearch: string): SkyModalInstance {\n const initialValue = this.value;\n const modalConfig = this.showMoreConfig?.nativePickerConfig || {};\n\n if (!modalConfig.itemTemplate) {\n modalConfig.itemTemplate = this.searchResultTemplate;\n }\n\n let contextProviderType:\n | typeof SkyLookupShowMoreNativePickerContext\n | typeof SkyLookupShowMoreNativePickerAsyncContext;\n\n let contextProviderValue:\n | SkyLookupShowMoreNativePickerContext\n | SkyLookupShowMoreNativePickerAsyncContext;\n\n let modalComponentType:\n | typeof SkyLookupShowMoreModalComponent\n | typeof SkyLookupShowMoreAsyncModalComponent;\n\n if (this.searchAsync.observers.length > 0) {\n contextProviderType = SkyLookupShowMoreNativePickerAsyncContext;\n modalComponentType = SkyLookupShowMoreAsyncModalComponent;\n\n contextProviderValue = new SkyLookupShowMoreNativePickerAsyncContext();\n contextProviderValue.idProperty = this.idProperty;\n contextProviderValue.searchAsync = (args) => {\n this.searchAsync.emit(args);\n return args.result;\n };\n } else {\n contextProviderType = SkyLookupShowMoreNativePickerContext;\n modalComponentType = SkyLookupShowMoreModalComponent;\n\n contextProviderValue = new SkyLookupShowMoreNativePickerContext();\n contextProviderValue.items = this.data;\n contextProviderValue.search = this.search;\n }\n\n contextProviderValue.descriptorProperty = this.descriptorProperty;\n contextProviderValue.initialSearch = initialSearch;\n contextProviderValue.initialValue = initialValue;\n contextProviderValue.selectMode = this.selectMode;\n contextProviderValue.showAddButton = this.showAddButton;\n contextProviderValue.userConfig = modalConfig;\n\n return this.modalService.open(modalComponentType, {\n providers: [\n {\n provide: contextProviderType,\n useValue: contextProviderValue,\n },\n ],\n wrapperClass: this.wrapperClass,\n });\n }\n\n public openPicker(initialSearch: string): void {\n if (this.showMoreConfig?.customPicker) {\n this.showMoreConfig.customPicker.open({\n items: this.data,\n initialSearch: initialSearch,\n initialValue: this.value,\n });\n } else {\n const initialValue = this.value;\n\n this.openNativePicker = this.createNativePickerInstance(initialSearch);\n\n this.openNativePicker.componentInstance.addClick.subscribe(() => {\n this.addButtonClicked();\n });\n\n this.openNativePicker.closed.subscribe((closeArgs) => {\n this.openNativePicker = undefined;\n if (closeArgs.reason === 'save') {\n let selectedItems: any[] = [];\n\n if (this.searchAsync.observers.length > 0) {\n selectedItems = closeArgs.data.map((item) => item.itemData);\n } else {\n this.data.forEach((item: any, dataIndex: number) => {\n if (\n closeArgs.data.some((savedItem: any) => {\n return savedItem.index === dataIndex;\n })\n ) {\n selectedItems.push(item);\n }\n });\n }\n\n this.writeValue(selectedItems);\n } else {\n this.writeValue(initialValue);\n }\n\n this.focusInput();\n this.changeDetector.markForCheck();\n });\n }\n }\n\n public onSearchAsync(args: SkyAutocompleteSearchAsyncArgs): void {\n this.searchAsync.emit(args);\n }\n\n private addToSelected(item: any): void {\n let selectedItems: any[];\n\n if (this.selectMode === 'single') {\n selectedItems = [item];\n } else {\n selectedItems = this.value;\n\n // If items have a unique identifier, don't allow the same item to be added twice.\n if (\n !this.idProperty ||\n !this.value.some(\n (existingItem) =>\n existingItem[this.idProperty] === item[this.idProperty]\n )\n ) {\n selectedItems.push(item);\n }\n\n this.clearSearchText();\n }\n\n this.writeValue(selectedItems);\n }\n\n private addEventListeners(): void {\n this.idle = new Subject();\n this.focusInputOnHostClick();\n }\n\n private removeEventListeners(): void {\n this.idle.next();\n this.idle.complete();\n }\n\n private focusInputOnHostClick(): void {\n let hostElement = !this.inputBoxHostSvc\n ? this.elementRef.nativeElement\n : this.lookupWrapperRef.nativeElement;\n const documentObj = this.windowRef.nativeWindow.document;\n\n // Handles focusing the input when the host is clicked.\n // The input should NOT be focused if other elements (tokens, etc.)\n // are currently focused or being tabbed through.\n\n observableFromEvent(documentObj, 'mousedown')\n .pipe(takeUntil(this.idle))\n .subscribe((event: MouseEvent) => {\n hostElement = !this.inputBoxHostSvc\n ? this.elementRef.nativeElement\n : this.lookupWrapperRef.nativeElement;\n this.isInputFocused = hostElement.contains(event.target);\n\n this.changeDetector.markForCheck();\n });\n\n observableFromEvent(documentObj, 'focusin')\n .pipe(takeUntil(this.idle))\n .subscribe((event: KeyboardEvent) => {\n hostElement = !this.inputBoxHostSvc\n ? this.elementRef.nativeElement\n : this.lookupWrapperRef.nativeElement;\n this.isInputFocused = hostElement.contains(event.target);\n\n this.changeDetector.markForCheck();\n });\n\n observableFromEvent(hostElement, 'mouseup')\n .pipe(takeUntil(this.idle))\n .subscribe(() => {\n const classList = documentObj.activeElement.classList;\n if (!classList || !classList.contains('sky-token')) {\n this.focusInput();\n }\n });\n }\n\n private focusInput(): void {\n this.adapter.focusInput(this.lookupWrapperRef);\n }\n\n private onAddButtonComplete(args: SkyLookupAddCallbackArgs) {\n if (args.data) {\n this.data = args.data;\n }\n\n if (this.data.indexOf(args.item) >= 0) {\n if (this.openNativePicker) {\n (\n this.openNativePicker\n .componentInstance as SkyLookupShowMoreModalComponent\n ).onItemSelect(true, { value: args.item, selected: false });\n } else {\n let newValue = this.value;\n if (this.selectMode === 'multiple') {\n newValue = this.value.concat(args.item);\n } else {\n newValue = [args.item];\n }\n this.writeValue(newValue);\n }\n }\n }\n\n private parseTokens(data: any[]): SkyToken[] {\n return data.map((item: any) => {\n return {\n value: item,\n };\n });\n }\n\n private sendAutocompleteMessage(type: SkyAutocompleteMessageType): void {\n this.autocompleteController.next({ type });\n }\n\n private sendTokensMessage(type: SkyTokensMessageType): void {\n this.tokensController.next({ type });\n }\n\n private updateForSelectMode(): void {\n if (this.autocompleteInputDirective) {\n if (this.selectMode === 'single') {\n this.autocompleteInputDirective.value = this.value && this.value[0];\n } else {\n this.clearSearchText();\n }\n }\n }\n}\n","<ng-container *ngIf=\"!inputBoxHostSvc\">\n <ng-container *ngTemplateOutlet=\"inputTemplateRef\"></ng-container>\n</ng-container>\n\n<ng-template #inputTemplateRef>\n <div\n class=\"sky-lookup\"\n [ngClass]=\"{\n 'sky-lookup-focused': isInputFocused,\n 'sky-lookup-disabled': disabled,\n 'sky-lookup-single': selectMode === 'single'\n }\"\n #lookupWrapper\n >\n <sky-autocomplete\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [data]=\"data\"\n [debounceTime]=\"debounceTime\"\n [descriptorProperty]=\"descriptorProperty\"\n [enableShowMore]=\"enableShowMore\"\n [messageStream]=\"autocompleteController\"\n [propertiesToSearch]=\"propertiesToSearch\"\n [search]=\"search\"\n [searchAsyncDisabled]=\"searchAsync.observers.length === 0\"\n [searchFilters]=\"searchFilters\"\n [searchResultsLimit]=\"searchResultsLimit\"\n [searchResultTemplate]=\"searchResultTemplate\"\n [searchTextMinimumCharacters]=\"searchTextMinimumCharacters\"\n [showAddButton]=\"showAddButton\"\n [wrapperClass]=\"wrapperClass\"\n (addClick)=\"addButtonClicked()\"\n (searchAsync)=\"onSearchAsync($event)\"\n (selectionChange)=\"onAutocompleteSelectionChange($event)\"\n (showMoreClick)=\"onShowMoreClick($event)\"\n >\n <div class=\"sky-lookup-search-flex-wrapper\">\n <div\n class=\"sky-lookup-search\"\n [ngClass]=\"{\n 'sky-field-status-active': isInputFocused && !disabled\n }\"\n >\n <sky-tokens\n *ngIf=\"selectMode === 'multiple'\"\n class=\"sky-lookup-tokens\"\n [disabled]=\"disabled\"\n [displayWith]=\"descriptorProperty\"\n [focusable]=\"false\"\n [messageStream]=\"tokensController\"\n [trackWith]=\"idProperty\"\n [tokens]=\"tokens\"\n (keyup)=\"onTokensKeyUp($event)\"\n (tokensChange)=\"onTokensChange($event)\"\n (tokenSelected)=\"enableShowMore ? openPicker(undefined) : undefined\"\n (focusIndexOverRange)=\"onTokensFocusIndexOverRange()\"\n >\n <textarea\n class=\"sky-form-control sky-lookup-input\"\n rows=\"1\"\n skyAutocomplete\n wrap=\"off\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.placeholder]=\"placeholderText\"\n [autocompleteAttribute]=\"autocompleteAttribute\"\n [disabled]=\"disabled\"\n (blur)=\"onAutocompleteBlur()\"\n (keydown)=\"inputKeydown($event, $event.target.value)\"\n (keyup)=\"inputKeyup($event)\"\n ></textarea>\n </sky-tokens>\n <div\n *ngIf=\"selectMode === 'single'\"\n class=\"sky-lookup-single-control\"\n >\n <textarea\n class=\"sky-form-control sky-lookup-input\"\n rows=\"1\"\n skyAutocomplete\n wrap=\"off\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.placeholder]=\"placeholderText\"\n [autocompleteAttribute]=\"autocompleteAttribute\"\n [disabled]=\"disabled\"\n (blur)=\"onAutocompleteBlur()\"\n ></textarea>\n </div>\n </div>\n <ng-container *ngIf=\"!inputBoxHostSvc && enableShowMore\">\n <ng-container\n *ngTemplateOutlet=\"showMoreButtonTemplateRef\"\n ></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!inputBoxHostSvc && !enableShowMore\">\n <ng-container\n *ngTemplateOutlet=\"searchIconTemplateRef\"\n ></ng-container>\n </ng-container>\n </div>\n </sky-autocomplete>\n </div>\n</ng-template>\n\n<ng-template #showMoreButtonTemplateRef>\n <div class=\"sky-input-group-btn\">\n <button\n class=\"sky-btn sky-btn-default\"\n [disabled]=\"disabled\"\n [ngClass]=\"{ 'sky-btn-disabled': disabled }\"\n type=\"button\"\n [attr.aria-label]=\"\n 'skyux_lookup_search_button_show_more' | skyLibResources\n \"\n (click)=\"onSearchButtonClick()\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"search\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n iconType=\"skyux\"\n icon=\"search\"\n ></sky-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #searchIconTemplateRef>\n <div\n class=\"sky-input-group-icon sky-input-box-icon-inset\"\n [ngClass]=\"{ 'sky-lookup-disabled': disabled }\"\n >\n <sky-icon\n *skyThemeIf=\"'default'\"\n icon=\"search\"\n [attr.aria-label]=\"'skyux_lookup_search_icon' | skyLibResources\"\n ></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n iconType=\"skyux\"\n icon=\"search\"\n [attr.aria-label]=\"'skyux_lookup_search_icon' | skyLibResources\"\n ></sky-icon>\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SkyViewkeeperModule } from '@skyux/core';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport {\n SkyIconModule,\n SkyTokensModule,\n SkyWaitModule,\n} from '@skyux/indicators';\nimport { SkyToolbarModule } from '@skyux/layout';\nimport { SkyInfiniteScrollModule, SkyRepeaterModule } from '@skyux/lists';\nimport { SkyModalModule } from '@skyux/modals';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyAutocompleteModule } from '../autocomplete/autocomplete.module';\nimport { SkySearchModule } from '../search/search.module';\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\n\nimport { SkyLookupItemSelectedPipe } from './lookup-item-selected.pipe';\nimport { SkyLookupShowMoreAsyncModalComponent } from './lookup-show-more-async-modal.component';\nimport { SkyLookupShowMoreModalComponent } from './lookup-show-more-modal.component';\nimport { SkyLookupComponent } from './lookup.component';\n\n@NgModule({\n declarations: [\n SkyLookupComponent,\n SkyLookupItemSelectedPipe,\n SkyLookupShowMoreAsyncModalComponent,\n SkyLookupShowMoreModalComponent,\n ],\n imports: [\n CommonModule,\n FormsModule,\n SkyAutocompleteModule,\n SkyCheckboxModule,\n SkyIconModule,\n SkyInfiniteScrollModule,\n SkyI18nModule,\n SkyLookupResourcesModule,\n SkyModalModule,\n SkyRepeaterModule,\n SkySearchModule,\n SkyThemeModule,\n SkyTokensModule,\n SkyToolbarModule,\n SkyViewkeeperModule,\n SkyWaitModule,\n ],\n exports: [SkyLookupComponent],\n})\nexport class SkyLookupModule {}\n","/**\n * @deprecated Use `SkyLookupSelectModeType` instead.\n * @internal\n */\nexport enum SkyLookupSelectMode {\n /**\n * Restricts users to a single selection.\n */\n single = 'single',\n\n /**\n * Allows users to select multiple items.\n */\n multiple = 'multiple',\n}\n","/**\n * Specifies configuration options to launch a custom picker when users select\n * the button to view all options.\n */\nexport class SkyLookupShowMoreCustomPickerContext {\n /**\n * Specifies the options that users can select in the custom picker.\n */\n public items: any[];\n /**\n * Specifies search text to filter the contents of the custom picker.\n */\n public initialSearch: string;\n /**\n * Specifies the current selections in the lookup field.\n */\n public initialValue: any;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["observableFromEvent","uniqueId","i2.SkyAutocompleteAdapterService","i3","i5","i6","i7","i8.SkyAutcompleteSearchAsyncDisabledPipe","i2","i4.SkyAutocompleteComponent","i7.SkyAutocompleteInputDirective","i9","i2.SkySearchAdapterService","i8","i1","i2.SkyLookupShowMoreNativePickerAsyncContext","i4","i5.SkySearchComponent","i10","i11","i12.SkyLookupItemSelectedPipe","i2.SkyLookupShowMoreNativePickerContext","i4.SkySearchComponent","i3.SkyLookupAdapterService","i8.SkyAutocompleteComponent","i11.SkyAutocompleteInputDirective"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skyux-lookup.mjs","sources":["../../../../../libs/components/lookup/src/lib/modules/shared/sky-lookup-resources.module.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete-input.directive.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete-search-async-disabled.pipe.ts","../../../../../libs/components/lookup/src/lib/modules/shared/sky-lookup-string-utils.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete-adapter.service.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete-default-search-function.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/types/autocomplete-message-type.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete.component.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete.component.html","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete.module.ts","../../../../../libs/components/lookup/src/lib/modules/country-field/country-field.component.ts","../../../../../libs/components/lookup/src/lib/modules/country-field/country-field.component.html","../../../../../libs/components/lookup/src/lib/modules/country-field/country-field.module.ts","../../../../../libs/components/lookup/src/lib/modules/search/search-adapter.service.ts","../../../../../libs/components/lookup/src/lib/modules/search/search.component.ts","../../../../../libs/components/lookup/src/lib/modules/search/search.component.html","../../../../../libs/components/lookup/src/lib/modules/search/search.module.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup-item-selected.pipe.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/types/lookup-show-more-native-picker-async-context.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup-show-more-async-modal.component.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup-show-more-async-modal.component.html","../../../../../libs/components/lookup/src/lib/modules/lookup/types/lookup-show-more-native-picker-context.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup-show-more-modal.component.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup-show-more-modal.component.html","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup-adapter.service.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup-autocomplete-adapter.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup.component.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup.component.html","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup.module.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/types/lookup-select-mode.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/types/lookup-show-more-custom-picker-context.ts","../../../../../libs/components/lookup/src/skyux-lookup.ts"],"sourcesContent":["/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-lookup' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n SKY_LIB_RESOURCES_PROVIDERS,\n SkyAppLocaleInfo,\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesProvider,\n getLibStringForLocale,\n} from '@skyux/i18n';\n\nconst RESOURCES: { [locale: string]: SkyLibResources } = {\n 'EN-US': {\n skyux_autocomplete_add: { message: 'New' },\n skyux_autocomplete_no_results: { message: 'No matches found' },\n skyux_autocomplete_show_all: { message: 'Show all' },\n skyux_autocomplete_show_all_count: { message: 'Show all {0}' },\n skyux_autocomplete_show_matches_count: { message: 'Show matches ({0})' },\n skyux_country_field_search_placeholder: { message: 'Search for a country' },\n skyux_lookup_search_icon: { message: 'Search' },\n skyux_lookup_search_button_show_more: {\n message: 'Show all search results',\n },\n skyux_lookup_show_more_add: { message: 'New' },\n skyux_lookup_show_more_select_all_button_title: { message: 'Select all' },\n skyux_lookup_show_more_clear_all_button_title: { message: 'Clear all' },\n skyux_lookup_show_more_show_selected_option_title: {\n message: 'Show only selected items',\n },\n skyux_lookup_show_more_cancel: { message: 'Cancel' },\n skyux_lookup_show_more_modal_title_single: { message: 'Select an option' },\n skyux_lookup_show_more_modal_title_multiple: { message: 'Select options' },\n skyux_lookup_show_more_no_results: { message: 'No matches found' },\n skyux_lookup_show_more_select: { message: 'Select' },\n skyux_lookup_tokens_summary: { message: '{0} items selected' },\n skyux_search_dismiss: { message: 'Dismiss search' },\n skyux_search_label: { message: 'Search items' },\n skyux_search_open: { message: 'Open search' },\n skyux_search_placeholder: { message: 'Find in this list' },\n },\n};\n\nexport class SkyLookupResourcesProvider implements SkyLibResourcesProvider {\n public getString(\n localeInfo: SkyAppLocaleInfo,\n name: string\n ): string | undefined {\n return getLibStringForLocale(RESOURCES, localeInfo.locale, name);\n }\n}\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n providers: [\n {\n provide: SKY_LIB_RESOURCES_PROVIDERS,\n useClass: SkyLookupResourcesProvider,\n multi: true,\n },\n ],\n})\nexport class SkyLookupResourcesModule {}\n","import {\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n forwardRef,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\n\nimport { Observable, Subject, fromEvent as observableFromEvent } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyAutocompleteInputTextChange } from './types/autocomplete-input-text-change';\n\nconst SKY_AUTOCOMPLETE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SkyAutocompleteInputDirective),\n multi: true,\n};\n\nconst SKY_AUTOCOMPLETE_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SkyAutocompleteInputDirective),\n multi: true,\n};\n\n@Directive({\n selector: 'input[skyAutocomplete], textarea[skyAutocomplete]',\n providers: [SKY_AUTOCOMPLETE_VALUE_ACCESSOR, SKY_AUTOCOMPLETE_VALIDATOR],\n})\nexport class SkyAutocompleteInputDirective\n implements OnInit, OnDestroy, ControlValueAccessor, Validator\n{\n /**\n * Specifies the value for the `autocomplete` attribute on the form input.\n * @default \"off\"\n */\n @Input()\n public set autocompleteAttribute(value: string) {\n if (!value) {\n this._autocompleteAttribute = 'off';\n } else {\n this._autocompleteAttribute = value;\n }\n\n this.renderer.setAttribute(\n this.elementRef.nativeElement,\n 'autocomplete',\n this.autocompleteAttribute\n );\n }\n\n public get autocompleteAttribute(): string {\n return this._autocompleteAttribute || 'off';\n }\n\n /**\n * Indicates whether to disable the autocomplete field.\n * @default false\n */\n @Input()\n public set disabled(value: boolean) {\n this._disabled = value;\n this.renderer.setProperty(this.elementRef.nativeElement, 'disabled', value);\n }\n\n public get disabled(): boolean {\n return this._disabled;\n }\n\n public get blur(): Observable<void> {\n return this._blur.asObservable();\n }\n\n public get displayWith(): string {\n return this._displayWith;\n }\n\n public set displayWith(value: string) {\n this._displayWith = value;\n this.inputTextValue = this.getValueByKey();\n }\n\n public get focus(): Observable<void> {\n return this._focus.asObservable();\n }\n\n public get inputTextValue(): string {\n return this.elementRef.nativeElement.value;\n }\n\n public set inputTextValue(value: string) {\n this.elementRef.nativeElement.value = value || '';\n }\n\n public get textChanges(): Observable<SkyAutocompleteInputTextChange> {\n return this._textChanges.asObservable();\n }\n\n public get value(): any {\n return this._value;\n }\n\n public set value(value: any) {\n const isNewValue = value !== this._value;\n\n /* istanbul ignore else */\n if (isNewValue) {\n this._value = value;\n this.inputTextValue = this.getValueByKey();\n this.onChange(this._value);\n\n // Do not mark the field as \"dirty\"\n // if the field has been initialized with a value.\n if (this.isFirstChange && this.control) {\n this.control.markAsPristine();\n }\n\n if (this.isFirstChange && this._value) {\n this.isFirstChange = false;\n }\n }\n }\n\n private control: AbstractControl;\n\n private isFirstChange = true;\n\n private ngUnsubscribe = new Subject<void>();\n\n private _autocompleteAttribute: string;\n\n private _blur = new Subject<void>();\n\n private _disabled = false;\n\n private _displayWith: string;\n\n private _focus = new Subject<void>();\n\n private _textChanges = new Subject<SkyAutocompleteInputTextChange>();\n\n private _value: any;\n\n constructor(private elementRef: ElementRef, private renderer: Renderer2) {}\n\n public ngOnInit() {\n const element = this.elementRef.nativeElement;\n\n this.setAttributes(element);\n\n observableFromEvent(element, 'input')\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n /** Sanity check */\n if (!this.disabled) {\n this._textChanges.next({\n value: this.elementRef.nativeElement.value,\n });\n }\n });\n\n observableFromEvent(element, 'blur')\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n /** Sanity check */\n if (!this.disabled) {\n this._blur.next();\n }\n });\n\n observableFromEvent(element, 'focus')\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n /** Sanity check */\n if (!this.disabled) {\n this._focus.next();\n }\n });\n\n observableFromEvent(element, 'change')\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n /** Sanity check */\n /* istanbul ignore else */\n if (!this.disabled) {\n this.isFirstChange = false;\n }\n });\n }\n\n public ngOnDestroy(): void {\n this._blur.complete();\n this._textChanges.complete();\n\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n\n this._blur = this._textChanges = this.ngUnsubscribe = undefined;\n }\n\n public writeValue(value: any): void {\n this.value = value;\n }\n\n public registerOnChange(fn: (value: any) => void): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n public registerOnValidatorChange(fn: () => void): void {\n this.onValidatorChange = fn;\n }\n\n public restoreInputTextValueToPreviousState(): void {\n const modelValue = this.getValueByKey();\n\n // If the search field contains text, make sure that the value\n // matches the selected descriptor key.\n if (this.inputTextValue !== modelValue) {\n this.inputTextValue = modelValue;\n }\n\n this.onTouched();\n }\n\n public setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n public validate(control: AbstractControl): ValidationErrors {\n if (!this.control) {\n this.control = control;\n }\n return;\n }\n\n // See: https://www.w3.org/TR/wai-aria-practices/#kbd_focus_activedescendant\n public setActiveDescendant(descendantId: string | null): void {\n if (descendantId) {\n this.renderer.setAttribute(\n this.elementRef.nativeElement,\n 'aria-activedescendant',\n descendantId\n );\n } else {\n this.renderer.removeAttribute(\n this.elementRef.nativeElement,\n 'aria-activedescendant'\n );\n }\n }\n\n // Angular automatically constructs these methods.\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onChange(value: any): void {}\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onTouched(): void {}\n // istanbul ignore next\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onValidatorChange = () => {};\n\n private setAttributes(element: any): void {\n this.renderer.setAttribute(\n element,\n 'autocomplete',\n this.autocompleteAttribute\n );\n this.renderer.setAttribute(element, 'autocapitalize', 'none');\n this.renderer.setAttribute(element, 'autocorrect', 'off');\n this.renderer.setAttribute(element, 'spellcheck', 'false');\n this.renderer.addClass(element, 'sky-form-control');\n }\n\n private getValueByKey(): string {\n return this.value ? this.value[this.displayWith] : undefined;\n }\n}\n","import { EventEmitter, Pipe, PipeTransform } from '@angular/core';\n\nimport { SkyAutocompleteSearchAsyncArgs } from './types/autocomplete-search-async-args';\n\n/**\n * @internal\n */\n@Pipe({\n name: 'skyAutocompleteSearchAsyncDisabled',\n})\nexport class SkyAutcompleteSearchAsyncDisabledPipe implements PipeTransform {\n public transform(\n searchAsync: EventEmitter<SkyAutocompleteSearchAsyncArgs>,\n searchAsyncDisabled: boolean\n ): boolean {\n return searchAsyncDisabled || searchAsync.observers.length === 0;\n }\n}\n","/**\n * Removes diacritical characters from strings and replaces them with their normalized equivalent.\n * For example: è becomes e, Å becomes A.\n */\nexport function normalizeDiacritics(value: string): string {\n return value.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n}\n","import {\n ElementRef,\n Injectable,\n Renderer2,\n RendererFactory2,\n} from '@angular/core';\nimport { SkyCoreAdapterService, SkyOverlayInstance } from '@skyux/core';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyAutocompleteAdapterService {\n private renderer: Renderer2;\n\n constructor(\n private coreAdapterService: SkyCoreAdapterService,\n private rendererFactory: RendererFactory2\n ) {\n this.renderer = this.rendererFactory.createRenderer(undefined, undefined);\n }\n\n /**\n * Adds the className for the provided element.\n */\n public addCSSClass(element: HTMLElement, className: string): void {\n /* Sanity check */\n /* istanbul ignore else */\n if (element) {\n this.renderer.addClass(element, className);\n }\n }\n\n public getOverlayFocusableElements(\n overlay: SkyOverlayInstance\n ): HTMLElement[] {\n return this.coreAdapterService.getFocusableChildren(\n /* Sanity check - calling function also has null check */\n /* istanbul ignore next */\n overlay?.componentRef.location.nativeElement,\n { ignoreTabIndex: true }\n );\n }\n\n /**\n * Removes the className for the provided element.\n */\n public removeCSSClass(element: HTMLElement, className: string): void {\n /* Sanity check */\n /* istanbul ignore else */\n if (element) {\n this.renderer.removeClass(element, className);\n }\n }\n\n public setDropdownWidth(\n elementRef: ElementRef,\n dropdownRef: ElementRef,\n isInputBox: boolean\n ): void {\n const parentElement = isInputBox\n ? elementRef.nativeElement.closest('.sky-input-box')\n : elementRef.nativeElement;\n if (parentElement) {\n const width = parentElement.getBoundingClientRect().width;\n this.renderer.setStyle(dropdownRef.nativeElement, 'width', `${width}px`);\n }\n }\n\n /**\n * Sets the `tabIndex` of the `element` to the provided `tabIndex`.\n */\n public setTabIndex(element: HTMLElement, tabIndex: number): void {\n element.tabIndex = tabIndex;\n }\n}\n","import { normalizeDiacritics } from '../shared/sky-lookup-string-utils';\n\nimport { SkyAutocompleteDefaultSearchFunctionOptions } from './types/autocomplete-default-search-function-options';\nimport { SkyAutocompleteSearchFunction } from './types/autocomplete-search-function';\nimport { SkyAutocompleteSearchFunctionFilter } from './types/autocomplete-search-function-filter';\nimport { SkyAutocompleteSearchFunctionResponse } from './types/autocomplete-search-function-response';\n\nexport function skyAutocompleteDefaultSearchFunction(\n options: SkyAutocompleteDefaultSearchFunctionOptions\n): SkyAutocompleteSearchFunction {\n const filterData = function (searchText: string, data: any[]): any[] {\n return data.filter((item: any) => {\n if (!options.searchFilters || !options.searchFilters.length) {\n return true;\n }\n\n // Find the first failing filter (we can skip the others if one fails).\n const failedFilter = options.searchFilters.find(\n (filter: SkyAutocompleteSearchFunctionFilter) => {\n return !filter.call({}, searchText, item);\n }\n );\n\n return failedFilter === undefined;\n });\n };\n\n const search = function (\n searchText: string,\n data: any[]\n ): SkyAutocompleteSearchFunctionResponse {\n const results = [];\n\n /* Sanity check - autocomplete will not call search with empty search text */\n /* istanbul ignore if */\n if (!searchText) {\n return results;\n }\n\n const searchTextNormalized = normalizeDiacritics(searchText).toUpperCase();\n\n const filteredData = filterData(searchText, data);\n\n for (let i = 0, n = filteredData.length; i < n; i++) {\n const result = filteredData[i];\n const isMatch = options.propertiesToSearch.find((property: string) => {\n let value = (result[property] || '').toString();\n value = normalizeDiacritics(value).toUpperCase();\n return value.indexOf(searchTextNormalized) > -1;\n });\n\n if (isMatch) {\n results.push(result);\n }\n }\n\n return results;\n };\n\n return search;\n}\n","/**\n * @internal\n */\nexport enum SkyAutocompleteMessageType {\n /**\n * Closes the dropdown.\n */\n CloseDropdown = 0,\n\n /**\n * Repositions the dropdown.\n */\n RepositionDropdown = 1,\n}\n","import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Optional,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {\n SkyAffixAutoFitContext,\n SkyAffixService,\n SkyAffixer,\n SkyOverlayInstance,\n SkyOverlayService,\n} from '@skyux/core';\nimport { SkyInputBoxHostService } from '@skyux/forms';\n\nimport {\n Observable,\n Subject,\n Subscription,\n from,\n fromEvent as observableFromEvent,\n of,\n} from 'rxjs';\nimport { debounceTime, map, switchMap, take, takeUntil } from 'rxjs/operators';\n\nimport { normalizeDiacritics } from '../shared/sky-lookup-string-utils';\n\nimport { SkyAutocompleteAdapterService } from './autocomplete-adapter.service';\nimport { skyAutocompleteDefaultSearchFunction } from './autocomplete-default-search-function';\nimport { SkyAutocompleteInputDirective } from './autocomplete-input.directive';\nimport { SkyAutocompleteMessage } from './types/autocomplete-message';\nimport { SkyAutocompleteMessageType } from './types/autocomplete-message-type';\nimport { SkyAutocompleteSearchAsyncArgs } from './types/autocomplete-search-async-args';\nimport { SkyAutocompleteSearchAsyncResult } from './types/autocomplete-search-async-result';\nimport { SkyAutocompleteSearchFunction } from './types/autocomplete-search-function';\nimport { SkyAutocompleteSearchFunctionFilter } from './types/autocomplete-search-function-filter';\nimport { SkyAutocompleteSelectionChange } from './types/autocomplete-selection-change';\nimport { SkyAutocompleteShowMoreArgs } from './types/autocomplete-show-more-args';\n\n/**\n * @internal\n */\ninterface SkyAutocompleteSearchResult {\n elementId: string;\n data: any;\n}\n\nlet uniqueId = 0;\n\n@Component({\n selector: 'sky-autocomplete',\n templateUrl: './autocomplete.component.html',\n styleUrls: ['./autocomplete.component.scss'],\n providers: [SkyAutocompleteAdapterService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyAutocompleteComponent\n implements OnDestroy, AfterContentInit, AfterViewInit\n{\n //#region public_api\n\n /**\n * Specifies the HTML element ID (without the leading `#`) of the element that labels\n * the autocomplete text input. This sets the input's `aria-labelledby` attribute\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n */\n @Input()\n public ariaLabelledBy: string;\n\n /**\n * Specifies a static data source for the autocomplete component to search\n * when users enter text. For a dynamic data source such as an array that\n * changes due to server calls, use `search` or `searchAsync` instead.\n */\n @Input()\n public set data(value: any[]) {\n this._data = value;\n }\n\n public get data(): any[] {\n return this._data || [];\n }\n\n /**\n * Specifies how many milliseconds to wait before searching while users\n * enter text in the autocomplete field.\n * @default 0\n */\n @Input()\n public set debounceTime(value: number) {\n this._debounceTime = value;\n }\n\n public get debounceTime(): number {\n return this._debounceTime || 0;\n }\n\n /**\n * Specifies an object property to display in the text input after users\n * select an item in the dropdown list.\n * @default \"name\"\n */\n @Input()\n public set descriptorProperty(value: string) {\n this._descriptorProperty = value;\n }\n\n public get descriptorProperty(): string {\n return this._descriptorProperty || 'name';\n }\n\n /**\n * @internal\n * Indicates whether to display a button in the dropdown that opens a picker where users can view all options.\n */\n @Input()\n public enableShowMore = false;\n\n /**\n * Specifies an observable of `SkyAutocompleteMessage` that can close the dropdown.\n * @internal\n */\n @Input()\n public set messageStream(value: Subject<SkyAutocompleteMessage>) {\n this._messageStream = value;\n this.initMessageStream();\n }\n\n public get messageStream(): Subject<SkyAutocompleteMessage> {\n return this._messageStream;\n }\n\n /**\n * @internal\n */\n @Input()\n public wrapperClass?: string;\n\n /**\n * Specifies the object properties to search.\n * @default [\"name\"]\n */\n @Input()\n public set propertiesToSearch(value: string[]) {\n this._propertiesToSearch = value;\n }\n\n public get propertiesToSearch(): string[] {\n return this._propertiesToSearch || ['name'];\n }\n\n /**\n * Specifies a function to dynamically manage the data source when users\n * change the text in the autocomplete field. The search function must return\n * an array or a promise of an array. The `search` property is particularly\n * useful when the data source does not live in the source code. If the\n * search requires calling a remote data source, use `searchAsync` instead of\n * `search`.\n */\n @Input()\n public set search(value: SkyAutocompleteSearchFunction) {\n this._search = value;\n }\n\n public get search(): SkyAutocompleteSearchFunction {\n return (\n this._search ||\n skyAutocompleteDefaultSearchFunction({\n propertiesToSearch: this.propertiesToSearch,\n searchFilters: this.searchFilters,\n })\n );\n }\n\n /**\n * Specifies a template to format each search result in the dropdown list.\n * The autocomplete component injects search result values into the template\n * as `item` variables that reference all of the object properties of the search results.\n */\n @Input()\n public set searchResultTemplate(value: TemplateRef<unknown>) {\n this._searchResultTemplate = value;\n }\n\n public get searchResultTemplate(): TemplateRef<unknown> {\n return this._searchResultTemplate || this.defaultSearchResultTemplate;\n }\n\n /**\n * Specifies the minimum number of characters that users must enter before\n * the autocomplete component searches the data source and displays search\n * results in the dropdown list.\n * @default 1\n */\n @Input()\n public set searchTextMinimumCharacters(value: number) {\n this._searchTextMinimumCharacters = value;\n }\n\n public get searchTextMinimumCharacters(): number {\n return this._searchTextMinimumCharacters > 0\n ? this._searchTextMinimumCharacters\n : 1;\n }\n\n /**\n * Specifies an array of functions to call against each search result in order\n * to filter the search results when using the default search function. When\n * using the `search` property to specify a custom search function, you must\n * manually apply filters inside that function. The function must return `true`\n * or `false` for each result to indicate whether to display it in the dropdown list.\n */\n @Input()\n public searchFilters: SkyAutocompleteSearchFunctionFilter[];\n\n /**\n * Specifies the maximum number of search results to display in the dropdown list.\n * By default, the component displays all matching results.\n */\n @Input()\n public set searchResultsLimit(value: number) {\n this._searchResultsLimit = value;\n }\n\n public get searchResultsLimit(): number {\n if (this._searchResultsLimit) {\n return this._searchResultsLimit;\n } else {\n return this.enableShowMore ? 5 : this._searchResultsLimit;\n }\n }\n\n /**\n * @internal\n * Indicates whether to display a button that lets users add options to the data source.\n */\n @Input()\n public showAddButton = false;\n\n /**\n * Specifies the text to display when no search results are found.\n * @default \"No matches found\"\n */\n @Input()\n public noResultsFoundText: string;\n\n /**\n * @internal\n * Allows async search to be disabled even when a listener is specified for\n * the `searchAsync` output.\n */\n @Input()\n public searchAsyncDisabled = false;\n\n /**\n * @internal\n * Fires when users select the button to add options to the data source.\n */\n @Output()\n public addClick: EventEmitter<void> = new EventEmitter();\n\n /**\n * @internal\n * Fires when users select the button to view all options.\n */\n @Output()\n public showMoreClick: EventEmitter<SkyAutocompleteShowMoreArgs> = new EventEmitter();\n\n /**\n * Fires when users select items in the dropdown list.\n */\n @Output()\n public get selectionChange(): EventEmitter<SkyAutocompleteSelectionChange> {\n return this._selectionChange;\n }\n\n /**\n * Fires when users enter new search information and allows results to be\n * returned via an observable.\n */\n @Output()\n public searchAsync = new EventEmitter<SkyAutocompleteSearchAsyncArgs>();\n\n //#endregion\n\n //#region template_properties\n\n public get searchResults(): SkyAutocompleteSearchResult[] {\n return this._searchResults || [];\n }\n\n public get highlightText(): string[] {\n return this._highlightText || [];\n }\n\n public isOpen = false;\n\n public resultsListId: string;\n\n public resultsWrapperId: string;\n\n public searchText: string;\n\n public get showActionsArea(): boolean {\n return this.showAddButton || this.enableShowMore;\n }\n\n public isSearchingAsync = false;\n\n public searchResultsCount: number | undefined;\n\n //#endregion\n\n @ViewChild('defaultSearchResultTemplate', {\n read: TemplateRef,\n static: false,\n })\n private defaultSearchResultTemplate: TemplateRef<unknown>;\n\n @ContentChild(SkyAutocompleteInputDirective)\n private set inputDirective(directive: SkyAutocompleteInputDirective) {\n if (this._inputDirective !== directive) {\n if (!directive) {\n throw Error(\n [\n 'The SkyAutocompleteComponent requires a ContentChild input or',\n 'textarea bound with the SkyAutocomplete directive. For example:',\n '`<input type=\"text\" skyAutocomplete>`.',\n ].join(' ')\n );\n }\n\n // Unsubscribe from old subscriptions on any previous input directive\n this.inputDirectiveUnsubscribe.next();\n\n this._inputDirective = directive;\n\n this._inputDirective.displayWith = this.descriptorProperty;\n\n this._inputDirective.textChanges\n .pipe(\n takeUntil(this.inputDirectiveUnsubscribe),\n debounceTime(this.debounceTime),\n switchMap((change) => {\n this.isSearchingAsync = true;\n return of(change);\n })\n )\n .subscribe((change) => {\n this.searchTextChanged(change.value);\n });\n\n this._inputDirective.blur\n .pipe(takeUntil(this.inputDirectiveUnsubscribe))\n .subscribe(() => {\n this.inputDirective.restoreInputTextValueToPreviousState();\n this.closeDropdown();\n this.inputDirective.onTouched();\n });\n\n this._inputDirective.focus\n .pipe(takeUntil(this.inputDirectiveUnsubscribe))\n .subscribe(() => {\n if (this.showActionsArea) {\n this.openDropdown();\n }\n });\n }\n }\n\n private get inputDirective(): SkyAutocompleteInputDirective {\n return this._inputDirective;\n }\n\n @ViewChild('resultsTemplateRef', {\n read: TemplateRef,\n })\n private resultsTemplateRef: TemplateRef<unknown>;\n\n @ViewChild('resultsRef', {\n read: ElementRef,\n })\n private set resultsRef(value: ElementRef) {\n if (value) {\n this._resultsRef = value;\n this.destroyAffixer();\n this.createAffixer();\n }\n }\n\n private get resultsRef(): ElementRef {\n return this._resultsRef;\n }\n\n /**\n * Index that indicates which descendant of the overlay currently has focus.\n */\n private activeElementIndex = -1;\n\n private affixer: SkyAffixer;\n\n private inputDirectiveUnsubscribe = new Subject<void>();\n\n private messageStreamSub: Subscription;\n\n private ngUnsubscribe = new Subject<void>();\n\n private overlay: SkyOverlayInstance;\n\n /**\n * Elements within the autocomplete dropdown that are focusable.\n * These are typically the search results and action buttons, but could also be\n * elements provided in the consumer's own template.\n */\n private overlayFocusableElements: HTMLElement[] = [];\n\n private currentSearchSub: Subscription;\n\n private _data: any[];\n private _debounceTime: number;\n private _descriptorProperty: string;\n private _highlightText: string[];\n private _inputDirective: SkyAutocompleteInputDirective;\n private _messageStream: Subject<SkyAutocompleteMessage>;\n private _propertiesToSearch: string[];\n private _resultsRef: ElementRef;\n private _search: SkyAutocompleteSearchFunction;\n private _searchResults: SkyAutocompleteSearchResult[];\n private _searchResultTemplate: TemplateRef<unknown>;\n private _searchResultsLimit: number;\n private _searchTextMinimumCharacters: number;\n private _selectionChange = new EventEmitter<SkyAutocompleteSelectionChange>();\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private elementRef: ElementRef,\n private affixService: SkyAffixService,\n private adapterService: SkyAutocompleteAdapterService,\n private overlayService: SkyOverlayService,\n @Optional() private inputBoxHostSvc?: SkyInputBoxHostService\n ) {\n const id = ++uniqueId;\n this.resultsListId = `sky-autocomplete-list-${id}`;\n this.resultsWrapperId = `sky-autocomplete-wrapper-${id}`;\n }\n\n public ngAfterContentInit(): void {\n if (!this.inputDirective) {\n throw Error(\n [\n 'The SkyAutocompleteComponent requires a ContentChild input or',\n 'textarea bound with the SkyAutocomplete directive. For example:',\n '`<input type=\"text\" skyAutocomplete>`.',\n ].join(' ')\n );\n }\n }\n\n public ngAfterViewInit(): void {\n this.addInputEventListeners();\n }\n\n public ngOnDestroy(): void {\n this.cancelCurrentSearch();\n this.inputDirectiveUnsubscribe.next();\n this.inputDirectiveUnsubscribe.complete();\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n this.destroyAffixer();\n this.destroyOverlay();\n }\n\n public addButtonClicked(): void {\n this.addClick.emit();\n this.inputDirective.restoreInputTextValueToPreviousState();\n this.closeDropdown();\n }\n\n public handleKeydown(event: KeyboardEvent): void {\n /* Sanity check */\n /* istanbul ignore else */\n if (event.key) {\n const key = event.key.toLowerCase();\n const activeElement = this.getActiveElement();\n const activeElementId = activeElement?.id;\n const targetIsSearchResult = this.searchResults.find(\n (r) => r.elementId === activeElementId\n );\n\n switch (key) {\n case 'enter':\n if (targetIsSearchResult) {\n this.selectSearchResultById(activeElementId);\n\n if (!this.showActionsArea) {\n this.closeDropdown();\n } else {\n this.resetSearch();\n }\n } else {\n if (activeElement) {\n activeElement.dispatchEvent(new MouseEvent('mousedown'));\n }\n }\n\n event.preventDefault();\n event.stopPropagation();\n break;\n\n case 'tab':\n if (targetIsSearchResult) {\n this.selectSearchResultById(activeElementId);\n } else {\n this.inputDirective.restoreInputTextValueToPreviousState();\n }\n\n this.closeDropdown();\n break;\n\n case 'escape':\n this.closeDropdown();\n break;\n\n case 'arrowdown':\n case 'down':\n this.removeFocusedClass();\n if (\n this.activeElementIndex ===\n this.overlayFocusableElements.length - 1 ||\n this.activeElementIndex === -1\n ) {\n this.activeElementIndex = 0;\n } else {\n this.activeElementIndex = this.activeElementIndex + 1;\n }\n this.addFocusedClass();\n this.changeDetector.markForCheck();\n event.preventDefault();\n event.stopPropagation();\n break;\n\n case 'arrowup':\n case 'up':\n this.removeFocusedClass();\n if (this.activeElementIndex <= 0) {\n this.activeElementIndex = this.overlayFocusableElements.length - 1;\n } else {\n this.activeElementIndex = this.activeElementIndex - 1;\n }\n this.addFocusedClass();\n this.changeDetector.markForCheck();\n event.preventDefault();\n event.stopPropagation();\n break;\n }\n }\n }\n\n public moreButtonClicked(): void {\n this.showMoreClick.emit({ inputValue: this.searchText });\n this.inputDirective.restoreInputTextValueToPreviousState();\n this.closeDropdown();\n }\n\n public onResultMouseDown(id: string, event: MouseEvent): void {\n this.selectSearchResultById(id);\n\n if (!this.showActionsArea) {\n this.closeDropdown();\n } else {\n this.resetSearch();\n }\n\n event.preventDefault();\n event.stopPropagation();\n }\n\n public onResultMouseMove(id: number): void {\n if (id !== this.activeElementIndex) {\n this.removeFocusedClass();\n this.activeElementIndex = id;\n this.addFocusedClass();\n this.changeDetector.markForCheck();\n }\n }\n\n public isElementFocused(ref: HTMLElement): boolean {\n return ref === this.overlayFocusableElements[this.activeElementIndex];\n }\n\n private searchTextChanged(searchText: string): void {\n const isEmpty =\n !searchText || !searchText.trim() || searchText.match(/^\\s+$/);\n\n if (isEmpty) {\n // Emit selectionChange if value has been cleared.\n if (this.inputDirective.value) {\n this.inputDirective.value = undefined;\n this.selectionChange.emit({\n selectedItem: undefined,\n });\n }\n\n if (!this.showActionsArea) {\n this.closeDropdown();\n } else {\n this.resetSearch();\n }\n\n this.isSearchingAsync = false;\n this.changeDetector.markForCheck();\n\n return;\n }\n\n const isLongEnough = searchText.length >= this.searchTextMinimumCharacters;\n const isDifferent = searchText !== this.searchText;\n\n this.searchText = searchText.trim();\n\n if (isLongEnough && isDifferent) {\n this.cancelCurrentSearch();\n\n this.currentSearchSub = this.performSearch()\n .pipe(take(1))\n .subscribe((result) => {\n const items = result.items.filter((item: never) => {\n return item && this.descriptorProperty in item;\n });\n\n this.isSearchingAsync = false;\n\n this._searchResults = items.map((r, i) => {\n const result: SkyAutocompleteSearchResult = {\n elementId: `${this.resultsListId}-item-${i}`,\n data: r,\n };\n return result;\n });\n\n this.searchResultsCount = result.totalCount;\n\n this._highlightText = this.getHighlightText(this.searchText);\n this.removeFocusedClass();\n this.removeActiveDescendant();\n if (this.searchResults.length > 0) {\n this.activeElementIndex = 0;\n } else {\n this.activeElementIndex = -1;\n }\n\n this.changeDetector.markForCheck();\n\n if (this.isOpen) {\n // Let the results populate in the DOM before recalculating placement.\n setTimeout(() => {\n this.affixer.reaffix();\n this.changeDetector.detectChanges();\n this.initOverlayFocusableElements();\n });\n } else {\n this.openDropdown();\n this.changeDetector.markForCheck();\n }\n });\n } else {\n this.isSearchingAsync = false;\n this.changeDetector.markForCheck();\n }\n }\n\n private performSearch(): Observable<SkyAutocompleteSearchAsyncResult> {\n if (!this.searchAsyncDisabled && this.searchAsync.observers.length > 0) {\n const searchAsyncArgs: SkyAutocompleteSearchAsyncArgs = {\n displayType: 'popover',\n offset: 0,\n searchText: this.searchText,\n };\n\n this.searchAsync.emit(searchAsyncArgs);\n\n return searchAsyncArgs.result;\n }\n\n const result = this.search(this.searchText, this.data);\n\n if (result instanceof Array) {\n return of({\n items: result,\n totalCount: result.length,\n });\n }\n\n return from(result).pipe(\n map((items) => {\n return {\n items,\n totalCount: items.length,\n };\n })\n );\n }\n\n private cancelCurrentSearch(): void {\n if (this.currentSearchSub) {\n this.currentSearchSub.unsubscribe();\n this.currentSearchSub = undefined;\n }\n }\n\n /**\n * Returns the text to highlight based on exact matches, case-insensitive matches, and matches for corresponding diacritical characters (a will match à).\n */\n private getHighlightText(searchText: string): string[] {\n const normalizedSearchText = normalizeDiacritics(searchText)\n .toLocaleUpperCase()\n .trim();\n if (!normalizedSearchText) {\n return [];\n }\n\n let matchesToHighlight: string[] = [];\n for (let i = 0, n = this._searchResults.length; i < n; i++) {\n const value = this._searchResults[i].data[this.descriptorProperty]\n .toString()\n .toLocaleUpperCase() as string;\n const normalizedDataValue = normalizeDiacritics(value);\n\n let offset = 0;\n let index: number;\n while (\n (index = normalizedDataValue.indexOf(normalizedSearchText, offset)) > -1\n ) {\n const matchedString = value.slice(index, index + searchText.length);\n offset = index + searchText.length;\n matchesToHighlight = matchesToHighlight.concat(matchedString);\n }\n }\n\n // Remove any duplicates from the array.\n return [...new Set(matchesToHighlight)];\n }\n\n private selectSearchResultById(id: string): void {\n const result = this.searchResults.find((r) => r.elementId === id).data;\n /* Sanity check */\n /* istanbul ignore else */\n if (result) {\n this.searchText = result[this.descriptorProperty];\n this.inputDirective.value = result;\n this.selectionChange.emit({\n selectedItem: result,\n });\n }\n }\n\n private openDropdown(): void {\n if (!this.overlay) {\n const overlay = this.overlayService.create({\n enableClose: false,\n enablePointerEvents: true,\n wrapperClass: this.wrapperClass,\n });\n\n overlay.attachTemplate(this.resultsTemplateRef);\n\n this.overlay = overlay;\n this.isOpen = true;\n this.changeDetector.markForCheck();\n this.initOverlayFocusableElements();\n }\n }\n\n private closeDropdown(): void {\n this.resetSearch();\n this.isOpen = false;\n this.destroyOverlay();\n this.removeActiveDescendant();\n this.changeDetector.markForCheck();\n }\n\n private setActiveDescendant(): void {\n const activeElement =\n this.overlayFocusableElements[this.activeElementIndex];\n /* Sanity check */\n /* istanbul ignore else */\n if (activeElement) {\n this.inputDirective.setActiveDescendant(activeElement.id);\n }\n }\n\n private removeActiveDescendant(): void {\n this.inputDirective.setActiveDescendant(null);\n }\n\n private resetSearch(): void {\n this._searchResults = [];\n this.searchText = '';\n this._highlightText = [];\n this.activeElementIndex = -1;\n this.searchResultsCount = undefined;\n this.removeActiveDescendant();\n this.initOverlayFocusableElements();\n this.changeDetector.markForCheck();\n }\n\n private addInputEventListeners(): void {\n const element = this.elementRef.nativeElement;\n\n observableFromEvent(element, 'keydown')\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((event: KeyboardEvent) => {\n this.handleKeydown(event);\n });\n\n observableFromEvent(window, 'resize')\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n /* istanbul ignore else */\n if (this.isOpen) {\n this.adapterService.setDropdownWidth(\n this.elementRef,\n this.resultsRef,\n !!this.inputBoxHostSvc\n );\n }\n });\n }\n\n private destroyOverlay(): void {\n if (this.overlay) {\n this.overlayService.close(this.overlay);\n this.overlay = undefined;\n }\n }\n\n private createAffixer(): void {\n /* Sanity check */\n /* istanbul ignore else */\n if (!this.affixer) {\n const affixer = this.affixService.createAffixer(this.resultsRef);\n\n this.adapterService.setDropdownWidth(\n this.elementRef,\n this.resultsRef,\n !!this.inputBoxHostSvc\n );\n\n affixer.affixTo(this.elementRef.nativeElement, {\n autoFitContext: SkyAffixAutoFitContext.Viewport,\n enableAutoFit: true,\n isSticky: true,\n placement: 'below',\n horizontalAlignment: 'left',\n });\n\n this.affixer = affixer;\n }\n }\n\n private destroyAffixer(): void {\n if (this.affixer) {\n this.affixer.destroy();\n this.affixer = undefined;\n }\n }\n\n private initMessageStream(): void {\n /* istanbul ignore if */\n if (this.messageStreamSub) {\n this.messageStreamSub.unsubscribe();\n }\n\n if (this.messageStream) {\n this.messageStreamSub = this.messageStream\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((message: SkyAutocompleteMessage) => {\n switch (message.type) {\n case SkyAutocompleteMessageType.CloseDropdown:\n this.closeDropdown();\n break;\n case SkyAutocompleteMessageType.RepositionDropdown:\n // Settimeout waits for changes in DOM (e.g., tokens being removed)\n setTimeout(() => {\n /* istanbul ignore else */\n if (this.affixer) {\n this.affixer.reaffix();\n }\n });\n break;\n }\n });\n }\n }\n\n private initOverlayFocusableElements(): void {\n // Wait for dropdown elements to render.\n setTimeout(() => {\n if (this.overlay) {\n this.overlayFocusableElements =\n this.adapterService.getOverlayFocusableElements(this.overlay);\n this.overlayFocusableElements.forEach((el) => {\n this.adapterService.setTabIndex(el, -1);\n });\n this.addFocusedClass();\n }\n });\n }\n\n private getActiveElement(): HTMLElement {\n return this.overlayFocusableElements[this.activeElementIndex];\n }\n\n private removeFocusedClass(): void {\n if (this.activeElementIndex > -1) {\n this.adapterService.removeCSSClass(\n this.overlayFocusableElements[this.activeElementIndex],\n 'sky-autocomplete-descendant-focus'\n );\n }\n }\n\n private addFocusedClass(): void {\n if (this.activeElementIndex > -1) {\n this.adapterService.addCSSClass(\n this.overlayFocusableElements[this.activeElementIndex],\n 'sky-autocomplete-descendant-focus'\n );\n this.setActiveDescendant();\n }\n }\n}\n","<div\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n class=\"sky-autocomplete\"\n role=\"combobox\"\n [attr.aria-expanded]=\"isOpen && searchText\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-owns]=\"isOpen ? resultsListId : null\"\n [attr.id]=\"resultsWrapperId\"\n>\n <ng-content></ng-content>\n</div>\n\n<ng-template #resultsTemplateRef>\n <div\n class=\"sky-autocomplete-results-container\"\n [skyThemeClass]=\"{\n 'sky-shadow': 'default',\n 'sky-elevation-4': 'modern'\n }\"\n (keydown)=\"handleKeydown($event)\"\n #resultsRef\n >\n <div\n *ngIf=\"isSearchingAsync; else resultControlsTemplateRef\"\n class=\"sky-autocomplete-results-waiting\"\n >\n <sky-wait [isWaiting]=\"true\"></sky-wait>\n </div>\n </div>\n</ng-template>\n\n<ng-template #resultControlsTemplateRef>\n <div\n *ngIf=\"searchText && (!showActionsArea || searchResults.length > 0)\"\n class=\"sky-autocomplete-results\"\n role=\"listbox\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.id]=\"resultsListId\"\n >\n <ng-container *ngFor=\"let result of searchResults; let i = index\">\n <div\n *ngIf=\"!searchResultsLimit || i < searchResultsLimit\"\n class=\"sky-autocomplete-result\"\n role=\"option\"\n tabindex=\"0\"\n [attr.aria-selected]=\"isElementFocused(searchResultEl)\"\n [attr.id]=\"result.elementId\"\n [skyHighlight]=\"highlightText\"\n (mousedown)=\"onResultMouseDown(result.elementId, $event)\"\n (mousemove)=\"onResultMouseMove(i)\"\n #searchResultEl\n >\n <ng-container\n *ngTemplateOutlet=\"\n searchResultTemplate;\n context: { item: result.data }\n \"\n >\n </ng-container>\n </div>\n </ng-container>\n <div\n *ngIf=\"searchResults.length === 0\"\n class=\"sky-deemphasized sky-padding-squish-default\"\n >\n {{\n noResultsFoundText ||\n ('skyux_autocomplete_no_results' | skyLibResources)\n }}\n </div>\n </div>\n <div *ngIf=\"showActionsArea\" class=\"sky-autocomplete-actions\">\n <button\n *ngIf=\"enableShowMore && (!searchText || searchResults.length > 0)\"\n class=\"sky-autocomplete-action sky-autocomplete-action-more sky-btn sky-btn-link\"\n type=\"button\"\n (mousedown)=\"moreButtonClicked()\"\n >\n <ng-container\n *ngIf=\"\n !(\n searchAsync\n | skyAutocompleteSearchAsyncDisabled: searchAsyncDisabled\n ) &&\n searchResults.length === 0 &&\n !searchText\n \"\n >\n {{ 'skyux_autocomplete_show_all' | skyLibResources }}\n </ng-container>\n <ng-container\n *ngIf=\"\n (searchAsync\n | skyAutocompleteSearchAsyncDisabled: searchAsyncDisabled) &&\n !searchText\n \"\n >\n {{\n 'skyux_autocomplete_show_all_count'\n | skyLibResources: (data.length | skyNumeric: { truncate: false })\n }}\n </ng-container>\n <ng-container *ngIf=\"searchText\">\n {{\n 'skyux_autocomplete_show_matches_count'\n | skyLibResources\n : (searchResultsCount === undefined\n ? data.length\n : (searchResultsCount | skyNumeric: { truncate: false }))\n }}\n </ng-container>\n </button>\n <div\n *ngIf=\"searchText && searchResults.length === 0\"\n class=\"sky-font-deemphasized sky-autocomplete-actions-no-results\"\n >\n {{\n noResultsFoundText ||\n ('skyux_autocomplete_no_results' | skyLibResources)\n }}\n </div>\n <button\n *ngIf=\"showAddButton\"\n class=\"sky-autocomplete-action sky-autocomplete-action-add sky-btn sky-btn-link\"\n tabindex=\"0\"\n type=\"button\"\n [class.focused]=\"isElementFocused(addButtonEl)\"\n (mousedown)=\"addButtonClicked()\"\n #addButtonEl\n >\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"add\" iconType=\"skyux\"></sky-icon>\n <sky-icon *skyThemeIf=\"'default'\" icon=\"plus-circle\"></sky-icon>\n {{ 'skyux_autocomplete_add' | skyLibResources }}\n </button>\n </div>\n</ng-template>\n\n<ng-template let-item=\"item\" #defaultSearchResultTemplate>\n {{ item[descriptorProperty] }}\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n SkyAffixModule,\n SkyIdModule,\n SkyNumericModule,\n SkyOverlayModule,\n} from '@skyux/core';\nimport {\n SkyIconModule,\n SkyTextHighlightModule,\n SkyWaitModule,\n} from '@skyux/indicators';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\n\nimport { SkyAutocompleteInputDirective } from './autocomplete-input.directive';\nimport { SkyAutcompleteSearchAsyncDisabledPipe } from './autocomplete-search-async-disabled.pipe';\nimport { SkyAutocompleteComponent } from './autocomplete.component';\n\n@NgModule({\n declarations: [\n SkyAutocompleteComponent,\n SkyAutocompleteInputDirective,\n SkyAutcompleteSearchAsyncDisabledPipe,\n ],\n imports: [\n CommonModule,\n FormsModule,\n SkyAffixModule,\n SkyTextHighlightModule,\n SkyIconModule,\n SkyIdModule,\n SkyLookupResourcesModule,\n SkyNumericModule,\n SkyOverlayModule,\n SkyThemeModule,\n SkyWaitModule,\n ],\n exports: [SkyAutocompleteComponent, SkyAutocompleteInputDirective],\n})\nexport class SkyAutocompleteModule {}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n TemplateRef,\n Type,\n ViewChild,\n forwardRef,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormControl,\n NG_VALIDATORS,\n NgControl,\n NgModel,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { SkyAppWindowRef } from '@skyux/core';\nimport { SkyInputBoxHostService } from '@skyux/forms';\nimport { SkyThemeService } from '@skyux/theme';\n\nimport 'intl-tel-input';\nimport { Subject, fromEvent } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyAutocompleteInputDirective } from '../autocomplete/autocomplete-input.directive';\nimport { SkyAutocompleteSelectionChange } from '../autocomplete/types/autocomplete-selection-change';\n\nimport { SkyCountryFieldCountry } from './types/country';\n\nconst SKY_COUNTRY_FIELD_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SkyCountryFieldComponent),\n multi: true,\n};\n\nlet uniqueId = 0;\n\n@Component({\n selector: 'sky-country-field',\n templateUrl: './country-field.component.html',\n styleUrls: ['./country-field.component.scss'],\n providers: [SKY_COUNTRY_FIELD_VALIDATOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyCountryFieldComponent\n implements AfterViewInit, ControlValueAccessor, OnDestroy, OnInit, Validator\n{\n /**\n * Specifies the value for the `autocomplete` attribute on the form input.\n * @default \"off\"\n */\n @Input()\n public autocompleteAttribute: string;\n\n /**\n * Specifies the [International Organization for Standardization Alpha 2](https://www.nationsonline.org/oneworld/country_code_list.htm)\n * country code for the default country.\n * When search results include the default country, it appears at the top of the list.\n * @default \"us\"\n */\n @Input()\n public set defaultCountry(value: string) {\n if (value !== this._defaultCountry) {\n this._defaultCountry = value.toLowerCase();\n\n this.defaultCountryData = this.countries.find(\n (country) => country.iso2 === this._defaultCountry\n );\n\n this.sortCountriesWithSelectedAndDefault(this.selectedCountry);\n }\n }\n\n public get defaultCountry(): string {\n return this._defaultCountry;\n }\n\n /**\n * Indicates whether to disable the country field.\n * @default false\n */\n @Input()\n public set disabled(isDisabled: boolean) {\n this.removeEventListeners();\n\n if (!isDisabled) {\n this.addEventListeners();\n }\n\n this._disabled = isDisabled;\n\n this.changeDetector.markForCheck();\n }\n\n public get disabled(): boolean {\n return this._disabled;\n }\n\n /**\n * Indicates whether to hide the flag in the input element.\n * @default false\n */\n @Input()\n public hideSelectedCountryFlag: boolean;\n\n /**\n * Indicates whether to include phone information in the selected country and country dropdown.\n * @default false\n */\n @Input()\n public set includePhoneInfo(includePhoneInfo: boolean) {\n this._includePhoneInfo = includePhoneInfo;\n\n this.setupCountries();\n }\n\n public get includePhoneInfo(): boolean {\n return this._includePhoneInfo;\n }\n\n /**\n * Specifies the [International Organization for Standardization Alpha 2](https://www.nationsonline.org/oneworld/country_code_list.htm)\n * country codes for the countries that users can select. By default, all countries are available.\n */\n @Input()\n public set supportedCountryISOs(value: string[]) {\n // Ensure all values are the same case.\n if (Array.isArray(value)) {\n value = value.map((v) => v.toLowerCase());\n }\n\n this._supportedCountryISOs = value;\n this.setupCountries();\n }\n\n public get supportedCountryISOs(): string[] {\n return this._supportedCountryISOs;\n }\n\n /**\n * Fires when the selected country changes.\n */\n @Output()\n public selectedCountryChange: EventEmitter<SkyCountryFieldCountry> = new EventEmitter<SkyCountryFieldCountry>();\n\n public countries: SkyCountryFieldCountry[];\n\n public countrySearchFormControl: FormControl;\n\n public isInputFocused = false;\n\n public searchTextMinimumCharacters = 2;\n\n @ViewChild(SkyAutocompleteInputDirective)\n public countrySearchAutocompleteDirective: SkyAutocompleteInputDirective;\n\n public set selectedCountry(newCountry: SkyCountryFieldCountry) {\n if (!this.countriesAreEqual(this.selectedCountry, newCountry)) {\n if (newCountry && newCountry.iso2) {\n const isoCountry = this.countries.find(\n (country) => country.iso2 === newCountry.iso2\n );\n\n if (isoCountry) {\n newCountry = isoCountry;\n }\n }\n\n this._selectedCountry = newCountry;\n\n this.sortCountriesWithSelectedAndDefault(newCountry);\n\n this.internalFormChange = true;\n this.countrySearchFormControl.setValue(this.selectedCountry);\n\n if (!this.isInitialChange) {\n this.onChange(newCountry);\n this.onTouched();\n\n this.selectedCountryChange.emit(newCountry);\n }\n\n // Do not mark the field as \"dirty\"\n // if the field has been initialized with a value.\n if (this.isInitialChange && this.ngControl && this.ngControl.control) {\n this.ngControl.control.markAsPristine();\n }\n\n this.isInitialChange = false;\n\n /**\n * The second portion of this if statement is complex. The control type check ensures that\n * we only watch for the initial time through this function on reactive forms. However,\n * template forms will send through `null` and then `undefined` on empty initialization\n * so we have to check for when the non-null pass through happens.\n */\n } else if (\n this.isInitialChange &&\n (!(this.ngControl instanceof NgModel) || newCountry !== null)\n ) {\n this.isInitialChange = false;\n }\n }\n\n public get selectedCountry(): SkyCountryFieldCountry {\n return this._selectedCountry;\n }\n\n public currentTheme = 'default';\n\n public inputId: string;\n\n @ViewChild('inputTemplateRef', {\n read: TemplateRef,\n static: true,\n })\n private inputTemplateRef: TemplateRef<unknown>;\n\n @ViewChild('searchIconTemplateRef', {\n read: TemplateRef,\n static: true,\n })\n private searchIconTemplateRef: TemplateRef<unknown>;\n\n private defaultCountryData: SkyCountryFieldCountry;\n\n private idle = new Subject<void>();\n\n private internalFormChange = false;\n\n private isInitialChange = true;\n\n private ngControl: NgControl;\n\n private ngUnsubscribe = new Subject<void>();\n\n private _defaultCountry: string;\n\n private _disabled = false;\n\n private _includePhoneInfo = false;\n\n private _selectedCountry: SkyCountryFieldCountry;\n\n private _supportedCountryISOs: string[];\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private elRef: ElementRef,\n private windowRef: SkyAppWindowRef,\n private injector: Injector,\n @Optional() public inputBoxHostSvc?: SkyInputBoxHostService,\n @Optional() private themeSvc?: SkyThemeService\n ) {\n this.setupCountries();\n\n this.countrySearchFormControl = new FormControl();\n }\n\n /**\n * Angular lifecycle hook for when the component is initialized\n * @internal\n */\n public ngOnInit(): void {\n this.updateInputBox();\n\n this.ngControl = this.injector.get<NgControl>(\n NgControl as unknown as Type<NgControl>,\n null\n );\n\n this.inputId = `sky-country-field-input-${uniqueId++}`;\n\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n } else {\n /**\n * The initial change boolean is to determine if the form is setting the value. When no form\n * is present we don't want to ignore the first change.\n */\n this.isInitialChange = false;\n }\n\n if (!this.defaultCountry) {\n this.defaultCountry = 'us';\n }\n\n this.countrySearchFormControl.valueChanges\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((newValue) => {\n if (newValue && !this.internalFormChange) {\n this.selectedCountry = newValue;\n }\n });\n\n if (!this.disabled) {\n this.addEventListeners();\n }\n }\n\n public ngAfterViewInit(): void {\n /* istanbul ignore else */\n if (this.themeSvc) {\n this.themeSvc.settingsChange.subscribe((change) => {\n this.currentTheme = change.currentSettings.theme.name;\n this.updateInputBox();\n this.changeDetector.markForCheck();\n });\n }\n }\n\n /**\n * Angular lifecycle hook for when the compoennt is destructed.\n * @internal\n */\n public ngOnDestroy(): void {\n this.selectedCountryChange.complete();\n this.removeEventListeners();\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n /**\n * Sets the component's touched value when the autocomplete is blurred\n * @internal\n */\n public onAutocompleteBlur(): void {\n this.onTouched();\n }\n\n /**\n * Sets the country to validate against based on the county's iso2 code.\n * @param newCountry The International Organization for Standardization's two-letter code\n * for the default country.\n * @internal\n */\n public onCountrySelected(newCountry: SkyAutocompleteSelectionChange): void {\n if (newCountry.selectedItem) {\n this.writeValue(\n this.countries.find(\n (countryInfo) => countryInfo.iso2 === newCountry.selectedItem.iso2\n )\n );\n } else {\n this.writeValue(undefined);\n }\n }\n\n // Angular automatically constructs these methods.\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onChange = (value: SkyCountryFieldCountry) => {};\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onTouched = () => {};\n\n public registerOnChange(fn: (value: SkyCountryFieldCountry) => void): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n // Allows Angular to disable the input.\n public setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n public validate(control: AbstractControl): ValidationErrors {\n if (control.value) {\n if (\n (this.supportedCountryISOs &&\n this.supportedCountryISOs.length > 0 &&\n this.supportedCountryISOs.indexOf(control.value.iso2) < 0) ||\n !this.countries.find((country) => country.iso2 === control.value.iso2)\n ) {\n return { unsupportedCountry: true };\n }\n }\n return;\n }\n\n public writeValue(value: SkyCountryFieldCountry): void {\n this.selectedCountry = value;\n this.changeDetector.markForCheck();\n }\n\n private addEventListeners(): void {\n this.removeEventListeners();\n\n this.idle = new Subject();\n\n const documentObj = this.windowRef.nativeWindow.document;\n\n fromEvent(documentObj, 'mousedown')\n .pipe(takeUntil(this.idle))\n .subscribe((event: MouseEvent) => {\n this.isInputFocused = this.elRef.nativeElement.contains(event.target);\n this.changeDetector.markForCheck();\n });\n\n fromEvent(documentObj, 'focusin')\n .pipe(takeUntil(this.idle))\n .subscribe((event: KeyboardEvent) => {\n this.isInputFocused = this.elRef.nativeElement.contains(event.target);\n this.changeDetector.markForCheck();\n });\n }\n\n private countriesAreEqual(\n country1: SkyCountryFieldCountry,\n country2: SkyCountryFieldCountry\n ): boolean {\n if (country1 && country2) {\n return country1.iso2 === country2.iso2;\n }\n\n // NOTE: We are doing this in this way because template forms will send through `null`\n // and then `undefined` on empty initialization. These are functionally equivalent but will\n // not pass a standard triple equals check.\n return !country1 && !country2;\n }\n\n private countriesEqual(\n a: SkyCountryFieldCountry,\n b: SkyCountryFieldCountry\n ): boolean {\n return a.iso2 === b.iso2 && a.name === b.name;\n }\n\n private removeEventListeners(): void {\n this.idle.next();\n this.idle.complete();\n }\n\n private setupCountries(): void {\n /**\n * The json functions here ensures that we get a copy of the array and not the global original.\n * This ensures that multiple instances of the component don't overwrite the original data.\n *\n * We must type the window object as any here as the intl-tel-input library adds its object\n * to the main window object.\n */\n this.countries = JSON.parse(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n JSON.stringify((window as any).intlTelInputGlobals.getCountryData())\n );\n\n // Ignoring coverage here as this will be removed in the next release.\n // istanbul ignore next\n if (!this.includePhoneInfo && !this.hideSelectedCountryFlag) {\n if (\n (\n this.elRef.nativeElement.parentElement as HTMLElement\n )?.classList?.contains('sky-phone-field-country-search')\n ) {\n this.includePhoneInfo = true;\n this.hideSelectedCountryFlag = true;\n }\n }\n\n /* istanbul ignore else */\n if (!this.includePhoneInfo) {\n /**\n * The library we get the country data from includes extra phone properties.\n * We want to remove these unless we are in a phone field\n */\n this.countries.forEach((country: any) => {\n delete country.dialCode;\n delete country.areaCodes;\n delete country.priority;\n });\n }\n\n this.sortCountriesWithSelectedAndDefault(this.selectedCountry);\n\n if (this.supportedCountryISOs && this.supportedCountryISOs.length > 0) {\n this.countries = this.countries.filter(\n (country: SkyCountryFieldCountry) => {\n return this.supportedCountryISOs.indexOf(country.iso2) >= 0;\n }\n );\n }\n }\n\n private sortCountriesWithSelectedAndDefault(\n selectedCountry: SkyCountryFieldCountry\n ): void {\n let selectedCountryIndex: number;\n let selectedCountryData: SkyCountryFieldCountry;\n\n const sortedNewCountries = this.countries.sort((a, b) => {\n if (\n ((this.defaultCountryData &&\n this.countriesEqual(a, this.defaultCountryData)) ||\n a.name < b.name) &&\n (!this.defaultCountryData ||\n !this.countriesEqual(this.defaultCountryData, b))\n ) {\n return -1;\n } else {\n return 1;\n }\n });\n\n if (selectedCountry) {\n // Note: We are looking up this data here to ensure we are using the offical data from the\n // library and not the data provided by the user on initialization of the component\n selectedCountryData = this.countries.find(\n (country) => country.iso2 === selectedCountry.iso2.toLocaleLowerCase()\n );\n selectedCountryIndex = this.countries.indexOf(selectedCountryData);\n\n if (selectedCountryIndex >= 0) {\n this.countries.splice(selectedCountryIndex, 1);\n sortedNewCountries.splice(0, 0, selectedCountryData);\n }\n }\n\n this.countries = sortedNewCountries;\n }\n\n private updateInputBox(): void {\n if (this.inputBoxHostSvc) {\n this.inputBoxHostSvc.populate({\n inputTemplate: this.inputTemplateRef,\n iconsInsetTemplate:\n this.currentTheme === 'modern'\n ? this.searchIconTemplateRef\n : undefined,\n });\n }\n }\n}\n","<ng-container *ngIf=\"!inputBoxHostSvc\">\n <ng-container *ngTemplateOutlet=\"inputTemplateRef\"></ng-container>\n</ng-container>\n\n<ng-template #inputTemplateRef>\n <span\n class=\"sky-country-field-container\"\n [ngClass]=\"{\n 'sky-country-field-disabled': disabled\n }\"\n >\n <sky-autocomplete\n [ariaLabelledBy]=\"inputId\"\n [data]=\"countries\"\n [propertiesToSearch]=\"['name', 'iso2']\"\n [searchResultTemplate]=\"countrySearchResultTemplate\"\n [searchTextMinimumCharacters]=\"searchTextMinimumCharacters\"\n (selectionChange)=\"onCountrySelected($event)\"\n >\n <div\n class=\"sky-country-field-input\"\n [ngClass]=\"{\n 'sky-country-field-input-with-flag':\n selectedCountry && selectedCountry.iso2 && !hideSelectedCountryFlag\n }\"\n >\n <div\n *ngIf=\"\n selectedCountry && selectedCountry.iso2 && !hideSelectedCountryFlag\n \"\n class=\"sky-country-field-flag\"\n >\n <div\n class=\"iti__flag\"\n [ngClass]=\"'iti__' + selectedCountry.iso2.toLowerCase()\"\n ></div>\n </div>\n <textarea\n class=\"sky-form-control\"\n name=\"selectedCountry\"\n rows=\"1\"\n skyAutocomplete\n [attr.aria-label]=\"\n 'skyux_country_field_search_placeholder' | skyLibResources\n \"\n [attr.disabled]=\"disabled ? true : undefined\"\n [attr.id]=\"inputId\"\n [autocompleteAttribute]=\"autocompleteAttribute\"\n [formControl]=\"countrySearchFormControl\"\n [placeholder]=\"\n currentTheme === 'default'\n ? ('skyux_country_field_search_placeholder' | skyLibResources)\n : ''\n \"\n (blur)=\"onAutocompleteBlur()\"\n ></textarea>\n </div>\n </sky-autocomplete>\n </span>\n</ng-template>\n\n<ng-template let-item=\"item\" #countrySearchResultTemplate>\n <div\n class=\"sky-country-field-search-result-flag\"\n [ngClass]=\"'iti__flag iti__' + item.iso2.toLowerCase()\"\n ></div>\n {{ item.name }}\n <span *ngIf=\"includePhoneInfo\" class=\"sky-deemphasized\">\n {{ item.dialCode }}\n </span>\n</ng-template>\n\n<!-- This template should only be used in modern theme input boxes. -->\n<ng-template #searchIconTemplateRef>\n <div class=\"sky-input-group-icon sky-input-box-icon-inset\">\n <sky-icon iconType=\"skyux\" icon=\"search\"></sky-icon>\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/indicators';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyAutocompleteModule } from '../autocomplete/autocomplete.module';\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\n\nimport { SkyCountryFieldComponent } from './country-field.component';\n\n@NgModule({\n declarations: [SkyCountryFieldComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SkyAutocompleteModule,\n SkyIconModule,\n SkyI18nModule,\n SkyLookupResourcesModule,\n SkyThemeModule,\n ],\n exports: [SkyCountryFieldComponent],\n})\nexport class SkyCountryFieldModule {}\n","import { ElementRef, Injectable, Renderer2 } from '@angular/core';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkySearchAdapterService {\n constructor(private renderer: Renderer2) {}\n\n public selectInput(searchEl: ElementRef) {\n this.getInputEl(searchEl).select();\n }\n\n public focusInput(searchEl: ElementRef) {\n this.getInputEl(searchEl).focus();\n }\n\n public startInputAnimation(searchEl: ElementRef) {\n const buttonWidth = this.getSearchOpenButtonEl(searchEl).clientWidth;\n const offsetWidth = this.getSearchContainerEl(searchEl).offsetLeft;\n const minWidth = buttonWidth + offsetWidth;\n\n this.getInputContainerEl(searchEl).style.minWidth =\n minWidth.toString() + 'px';\n\n this.renderer.setStyle(\n this.getInputContainerEl(searchEl),\n 'min-width',\n minWidth.toString() + 'px'\n );\n }\n\n public endInputAnimation(searchEl: ElementRef) {\n this.renderer.setStyle(this.getInputContainerEl(searchEl), 'min-width', '');\n }\n\n private getInputContainerEl(searchEl: ElementRef) {\n return searchEl.nativeElement.querySelector('.sky-search-input-container');\n }\n\n private getSearchOpenButtonEl(searchEl: ElementRef) {\n return searchEl.nativeElement.querySelector('.sky-search-btn-open');\n }\n\n private getSearchContainerEl(searchEl: ElementRef) {\n return searchEl.nativeElement.querySelector('.sky-search-container');\n }\n\n private getInputEl(searchEl: ElementRef) {\n return searchEl.nativeElement.querySelector('input');\n }\n}\n","import {\n AnimationEvent,\n animate,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SkyMediaBreakpoints, SkyMediaQueryService } from '@skyux/core';\n\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\n\nimport { SkySearchAdapterService } from './search-adapter.service';\n\nconst INPUT_SHOWN_STATE = 'inputShown';\nconst INPUT_HIDDEN_STATE = 'inputHidden';\nconst EXPAND_MODE_RESPONSIVE = 'responsive';\nconst EXPAND_MODE_FIT = 'fit';\nconst EXPAND_MODE_NONE = 'none';\n\n@Component({\n selector: 'sky-search',\n templateUrl: './search.component.html',\n styleUrls: ['./search.component.scss'],\n encapsulation: ViewEncapsulation.None,\n animations: [\n trigger('inputState', [\n state(\n INPUT_HIDDEN_STATE,\n style({\n opacity: 0,\n width: 0,\n })\n ),\n state(\n INPUT_SHOWN_STATE,\n style({\n opacity: 1,\n width: '100%',\n })\n ),\n transition('* <=> *', animate('150ms')),\n ]),\n ],\n providers: [SkySearchAdapterService],\n})\nexport class SkySearchComponent implements OnDestroy, OnInit, OnChanges {\n /**\n * Fires when the search text is applied.\n */\n @Output()\n public searchApply = new EventEmitter<string>();\n\n /**\n * Fires when the search text is changed.\n */\n @Output()\n public searchChange = new EventEmitter<string>();\n\n /**\n * Fires when the search text is cleared.\n */\n @Output()\n public searchClear = new EventEmitter<void>();\n\n /**\n * Specifies default search criteria for the input.\n */\n @Input()\n public searchText: string;\n\n /**\n * Specifies the expand mode for the search input. The valid options\n * include `\"responsive\"` to collapse the search input into a button on\n * mobile devices, `\"none\"` to *not* collapse the search input on mobile\n * devices, and `\"fit\"` to extend the search input to fit the width of its container.\n * @default \"responsive\"\n */\n @Input()\n public expandMode: string = EXPAND_MODE_RESPONSIVE;\n\n /**\n * Specifies how many milliseconds to wait before searching after users enter text in the search input.\n * @default 0\n */\n @Input()\n public debounceTime = 0;\n\n /**\n * Indicates whether to disable the filter button.\n * @default false\n */\n @Input()\n public disabled = false;\n\n public isFullWidth = false;\n\n public isCollapsible = true;\n\n /**\n * Specifies placeholder text to display in the search input until users\n * enter search criteria.\n * @default \"Find in this list\"\n */\n @Input()\n public placeholderText: string;\n\n public inputAnimate: string = INPUT_SHOWN_STATE;\n public breakpointSubscription: Subscription;\n public searchButtonShown = false;\n public mobileSearchShown = false;\n public dismissButtonShown = false;\n public clearButtonShown = false;\n\n private searchUpdated: Subject<string> = new Subject<string>();\n\n constructor(\n private mediaQueryService: SkyMediaQueryService,\n private elRef: ElementRef,\n private searchAdapter: SkySearchAdapterService,\n private changeRef: ChangeDetectorRef\n ) {}\n\n public ngOnInit() {\n if (this.searchShouldCollapse()) {\n this.breakpointSubscription = this.mediaQueryService.subscribe(\n (args: SkyMediaBreakpoints) => {\n this.mediaQueryCallback(args);\n this.changeRef.detectChanges();\n }\n );\n }\n\n this.searchUpdated\n .asObservable()\n .pipe(debounceTime(this.debounceTime), distinctUntilChanged())\n .subscribe((value) => {\n this.searchChange.emit(value);\n });\n }\n\n public ngOnChanges(changes: SimpleChanges) {\n if (this.expandModeBindingChanged(changes)) {\n switch (this.expandMode) {\n case EXPAND_MODE_NONE:\n this.isCollapsible = false;\n this.isFullWidth = false;\n break;\n case EXPAND_MODE_FIT:\n this.isCollapsible = false;\n this.isFullWidth = true;\n break;\n default:\n this.isCollapsible = true;\n this.isFullWidth = false;\n break;\n }\n }\n\n if (this.searchBindingChanged(changes)) {\n this.clearButtonShown = this.searchText && this.searchText !== '';\n if (this.shouldOpenInput()) {\n this.inputAnimate = INPUT_SHOWN_STATE;\n }\n }\n this.changeRef.detectChanges();\n }\n\n public clearSearchText() {\n this.searchText = '';\n this.clearButtonShown = false;\n\n this.searchAdapter.focusInput(this.elRef);\n this.searchChange.emit(this.searchText);\n\n this.searchApply.emit(this.searchText);\n\n this.searchClear.emit();\n }\n\n public enterPress(event: KeyboardEvent, searchText: string) {\n if (event.code === 'Enter' || event.code === 'NumpadEnter') {\n this.applySearchText(searchText);\n }\n }\n\n public applySearchText(searchText: string) {\n // Double check that search text is defined before attempting to trim off whitespace\n if (searchText) {\n searchText = searchText.trim();\n }\n\n if (searchText !== this.searchText) {\n this.searchText = searchText;\n }\n this.clearButtonShown = searchText && searchText !== '';\n if (searchText && searchText !== '') {\n this.searchAdapter.selectInput(this.elRef);\n }\n\n this.searchApply.emit(searchText);\n }\n\n public searchTextChanged(searchText: string) {\n this.searchText = searchText;\n this.searchUpdated.next(searchText);\n }\n\n public toggleSearchInput(showInput: boolean) {\n if (this.searchShouldCollapse()) {\n if (showInput) {\n this.inputAnimate = INPUT_SHOWN_STATE;\n } else {\n this.inputAnimate = INPUT_HIDDEN_STATE;\n }\n }\n }\n\n public inputAnimationStart(event: AnimationEvent) {\n if (this.searchShouldCollapse()) {\n this.searchAdapter.startInputAnimation(this.elRef);\n\n if (\n event.toState === INPUT_SHOWN_STATE &&\n this.mediaQueryService.current === SkyMediaBreakpoints.xs\n ) {\n this.mobileSearchShown = true;\n this.searchButtonShown = false;\n }\n }\n }\n\n public inputAnimationEnd(event: AnimationEvent) {\n if (this.searchShouldCollapse()) {\n this.searchAdapter.endInputAnimation(this.elRef);\n\n this.searchButtonShown =\n event.toState === INPUT_HIDDEN_STATE &&\n this.mediaQueryService.current === SkyMediaBreakpoints.xs;\n\n if (\n (event.toState === INPUT_HIDDEN_STATE &&\n this.mediaQueryService.current === SkyMediaBreakpoints.xs) ||\n this.mediaQueryService.current !== SkyMediaBreakpoints.xs\n ) {\n this.mobileSearchShown = false;\n }\n }\n }\n\n public ngOnDestroy() {\n if (this.breakpointSubscription) {\n this.breakpointSubscription.unsubscribe();\n }\n\n this.searchUpdated.complete();\n }\n private searchBindingChanged(changes: SimpleChanges) {\n return (\n changes['searchText'] &&\n changes['searchText'].previousValue !== changes['searchText'].currentValue\n );\n }\n\n private expandModeBindingChanged(changes: SimpleChanges) {\n return (\n changes['expandMode'] &&\n changes['expandMode'].previousValue !== changes['expandMode'].currentValue\n );\n }\n\n private shouldOpenInput() {\n return (\n this.searchText !== '' &&\n this.mediaQueryService.current === SkyMediaBreakpoints.xs &&\n this.searchShouldCollapse()\n );\n }\n\n private mediaQueryCallback(args: SkyMediaBreakpoints) {\n if (this.searchShouldCollapse()) {\n if (args === SkyMediaBreakpoints.xs) {\n this.inputAnimate = INPUT_HIDDEN_STATE;\n } else if (this.inputAnimate !== INPUT_SHOWN_STATE) {\n this.inputAnimate = INPUT_SHOWN_STATE;\n } else {\n this.mobileSearchShown = false;\n }\n }\n this.changeRef.markForCheck();\n }\n\n private searchShouldCollapse() {\n return (\n (this.isCollapsible || this.isCollapsible === undefined) &&\n this.isFullWidth !== true\n );\n }\n}\n","<div class=\"sky-search-container\">\n <div class=\"sky-search-button-container\">\n <button\n class=\"sky-btn sky-btn-default sky-btn-icon sky-search-btn-open\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_search_open' | skyLibResources\"\n [hidden]=\"!searchButtonShown\"\n [ngClass]=\"{ 'sky-search-btn-open-applied': clearButtonShown }\"\n (click)=\"toggleSearchInput(true)\"\n >\n <ng-container *ngTemplateOutlet=\"searchIconTemplate\"></ng-container>\n </button>\n </div>\n <div\n class=\"sky-search-dismiss-container\"\n [hidden]=\"searchButtonShown\"\n [ngClass]=\"{\n 'sky-search-dismiss-absolute': mobileSearchShown || isFullWidth\n }\"\n >\n <div class=\"sky-search-item-input\">\n <div\n class=\"sky-search-input-container\"\n [@inputState]=\"inputAnimate\"\n (@inputState.start)=\"inputAnimationStart($event)\"\n (@inputState.done)=\"inputAnimationEnd($event)\"\n [ngClass]=\"{\n 'sky-search-input-container-has-value': searchText?.trim()\n }\"\n >\n <sky-input-box>\n <input\n class=\"sky-form-control sky-search-input sky-rounded-corners\"\n type=\"text\"\n [attr.aria-label]=\"'skyux_search_label' | skyLibResources\"\n [attr.placeholder]=\"\n placeholderText || ('skyux_search_placeholder' | skyLibResources)\n \"\n [disabled]=\"disabled\"\n [ngModel]=\"searchText\"\n (keyup)=\"enterPress($event, searchText)\"\n (ngModelChange)=\"searchTextChanged($event)\"\n skyId\n #searchInput=\"skyId\"\n />\n <span\n class=\"sky-input-group-btn sky-input-group-clear sky-input-box-btn-inset\"\n [hidden]=\"!clearButtonShown\"\n >\n <button\n aria-hidden=\"true\"\n class=\"sky-btn sky-btn-default sky-search-btn sky-search-btn-clear\"\n tabindex=\"-1\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"clearSearchText()\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"times\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"close\"\n iconType=\"skyux\"\n size=\"sm\"\n ></sky-icon>\n </button>\n </span>\n <span\n *skyThemeIf=\"'default'\"\n class=\"sky-input-group-btn sky-input-box-btn-inset\"\n >\n <button\n class=\"sky-btn sky-btn-default sky-search-btn sky-search-btn-apply\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_search_label' | skyLibResources\"\n [disabled]=\"disabled\"\n (click)=\"applySearchText(searchText)\"\n >\n <ng-container\n *ngTemplateOutlet=\"searchIconTemplate\"\n ></ng-container>\n </button>\n </span>\n <div\n *skyThemeIf=\"'modern'\"\n aria-hidden=\"true\"\n class=\"sky-input-group-icon sky-input-box-icon-inset-left\"\n >\n <ng-container *ngTemplateOutlet=\"searchIconTemplate\"></ng-container>\n </div>\n </sky-input-box>\n </div>\n </div>\n <div class=\"sky-search-item-dismiss\">\n <button\n *ngIf=\"mobileSearchShown\"\n class=\"sky-btn sky-btn-secondary sky-search-btn-dismiss\"\n type=\"button\"\n [attr.title]=\"'skyux_search_dismiss' | skyLibResources\"\n (click)=\"toggleSearchInput(false)\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"chevron-circle-left\" size=\"lg\">\n </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"double-chevron-left\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n </div>\n </div>\n</div>\n\n<ng-template #searchIconTemplate>\n <sky-icon *skyThemeIf=\"'default'\" icon=\"search\" size=\"lg\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"search\"\n iconType=\"skyux\"\n size=\"lg\"\n ></sky-icon>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SkyIdModule } from '@skyux/core';\nimport { SkyInputBoxModule } from '@skyux/forms';\nimport { SkyIconModule } from '@skyux/indicators';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\n\nimport { SkySearchComponent } from './search.component';\n\n@NgModule({\n declarations: [SkySearchComponent],\n imports: [\n CommonModule,\n SkyInputBoxModule,\n SkyLookupResourcesModule,\n FormsModule,\n SkyIconModule,\n SkyThemeModule,\n SkyIdModule,\n ],\n exports: [SkySearchComponent],\n})\nexport class SkySearchModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'skyLookupItemSelected',\n})\nexport class SkyLookupItemSelectedPipe implements PipeTransform {\n public transform(id: unknown, selectedIdMap: Map<unknown, unknown>): boolean {\n return selectedIdMap.has(id);\n }\n}\n","import { SkyAutocompleteSearchAsyncFunction } from '../../autocomplete/types/autocomplete-search-async-function';\n\nimport { SkyLookupSelectModeType } from './lookup-select-mode-type';\nimport { SkyLookupShowMoreNativePickerConfig } from './lookup-show-more-native-picker-config';\n\n/**\n * @internal\n * Context for the show more native picker. These values are provided by the lookup component.\n */\nexport class SkyLookupShowMoreNativePickerAsyncContext {\n public descriptorProperty: string;\n public idProperty: string;\n public initialSearch: string;\n public initialValue: unknown[];\n public searchAsync: SkyAutocompleteSearchAsyncFunction;\n public selectMode: SkyLookupSelectModeType;\n public showAddButton: boolean;\n public userConfig: SkyLookupShowMoreNativePickerConfig;\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { SkyModalInstance } from '@skyux/modals';\n\nimport { Subject, Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nimport { SkyAutocompleteSearchAsyncResult } from '../autocomplete/types/autocomplete-search-async-result';\n\nimport { SkyLookupShowMoreNativePickerAsyncContext } from './types/lookup-show-more-native-picker-async-context';\n\n/**\n * @internal\n * Internal component to implement the native picker.\n */\n@Component({\n selector: 'sky-lookup-show-more-async-modal',\n templateUrl: './lookup-show-more-async-modal.component.html',\n styleUrls: ['./lookup-show-more-async-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyLookupShowMoreAsyncModalComponent implements OnInit, OnDestroy {\n /**\n * @internal\n * Fires when users select the button to add new options to the list.\n */\n public addClick: Subject<void> = new Subject();\n\n public items: unknown[];\n\n public displayedItems: unknown[] = [];\n public onlyShowSelected = false;\n public searchText: string;\n public isSearching = false;\n public hasMoreItems = false;\n public isLoadingMore = false;\n public selectedIdMap: Map<unknown, unknown>;\n\n private continuationData: unknown;\n private offset = 0;\n private ngUnsubscribe = new Subject<void>();\n private currentSearchSub: Subscription | undefined;\n\n constructor(\n public modalInstance: SkyModalInstance,\n public context: SkyLookupShowMoreNativePickerAsyncContext,\n private changeDetector: ChangeDetectorRef\n ) {}\n\n public ngOnInit(): void {\n this.searchText = this.context.initialSearch;\n\n this.createInitialSelectedItemsMap();\n this.loadSearchResults();\n }\n\n public ngOnDestroy(): void {\n this.cancelCurrentSearch();\n\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n public addButtonClicked(): void {\n this.addClick.next();\n }\n\n public clearAll(): void {\n this.selectedIdMap = new Map(this.selectedIdMap);\n\n // Only deselect items that have been loaded; items that would be loaded\n // after an infinite scroll event should remain selected.\n for (const item of this.items) {\n this.selectedIdMap.delete(item[this.context.idProperty]);\n }\n\n this.updateDisplayedItems();\n\n this.changeDetector.markForCheck();\n }\n\n public itemClick(selectedItem: any): void {\n if (this.context.selectMode === 'single') {\n this.onItemSelect(!selectedItem.selected, selectedItem);\n }\n }\n\n public onItemSelect(newSelectState: boolean, itemToSelect: any): void {\n const itemId = itemToSelect[this.context.idProperty];\n\n // Create a new Map so the pipe transform will execute on the next\n // change detection cycle.\n this.selectedIdMap = new Map(this.selectedIdMap);\n\n if (this.context.selectMode === 'single') {\n if (newSelectState) {\n this.selectedIdMap.clear();\n this.selectedIdMap.set(itemId, itemToSelect);\n }\n } else {\n if (newSelectState) {\n this.selectedIdMap.set(itemId, itemToSelect);\n } else {\n this.selectedIdMap.delete(itemId);\n }\n }\n\n this.updateDisplayedItems();\n }\n\n public searchApplied(searchText: string) {\n this.offset = 0;\n this.searchText = searchText;\n\n this.loadSearchResults();\n }\n\n public selectAll(): void {\n this.selectedIdMap = new Map();\n\n for (const item of this.items) {\n this.selectedIdMap.set(item[this.context.idProperty], item);\n }\n\n this.updateDisplayedItems();\n }\n\n public infiniteScrollEnd(): void {\n this.cancelCurrentSearch();\n\n /* Sanity check - else case would only happen if this was called directly */\n /* istanbul ignore else */\n if (this.hasMoreItems) {\n this.isLoadingMore = true;\n\n this.performSearch((result) => {\n this.items = this.items.concat(result.items);\n\n this.updateDisplayedItems();\n\n this.isLoadingMore = false;\n });\n }\n }\n\n public save(): void {\n const selectedItems = Array.from(\n this.selectedIdMap.values(),\n (itemData, index) => ({\n index,\n itemData,\n })\n ).sort((a, b) => {\n return this.items.indexOf(a.itemData) < this.items.indexOf(b.itemData)\n ? -1\n : 1;\n });\n\n this.modalInstance.save(selectedItems);\n }\n\n private loadSearchResults(): void {\n this.cancelCurrentSearch();\n\n this.isSearching = true;\n\n this.performSearch((result) => {\n this.isSearching = false;\n this.items = result.items;\n });\n }\n\n private createInitialSelectedItemsMap(): void {\n this.selectedIdMap = new Map(\n this.context.initialValue.map((item) => [\n item[this.context.idProperty],\n item,\n ])\n );\n }\n\n private performSearch(\n processResults: (result: SkyAutocompleteSearchAsyncResult) => void\n ): void {\n this.currentSearchSub = this.context\n .searchAsync({\n displayType: 'modal',\n offset: this.offset,\n searchText: this.searchText || '',\n continuationData: this.continuationData,\n })\n .pipe(take(1))\n .subscribe((result) => {\n processResults(result);\n\n this.continuationData = result.continuationData;\n this.hasMoreItems = result.hasMore;\n this.offset = this.items.length;\n\n this.updateDisplayedItems();\n\n this.changeDetector.markForCheck();\n });\n }\n\n private updateDisplayedItems(): void {\n if (this.onlyShowSelected) {\n this.displayedItems = this.items.filter((item) =>\n this.selectedIdMap.has(item[this.context.idProperty])\n );\n } else {\n this.displayedItems = this.items;\n }\n }\n\n private cancelCurrentSearch(): void {\n if (this.currentSearchSub) {\n this.currentSearchSub.unsubscribe();\n this.currentSearchSub = undefined;\n this.isLoadingMore = false;\n this.isSearching = false;\n }\n }\n}\n","<sky-modal>\n <sky-modal-header>\n <ng-container *ngIf=\"context.userConfig?.title; else defaultTitle\">\n {{ context.userConfig.title }}\n </ng-container>\n </sky-modal-header>\n <sky-modal-content>\n <sky-wait [isWaiting]=\"isSearching\"></sky-wait>\n <div\n [skyViewkeeper]=\"[\n '.sky-lookup-show-more-modal-toolbar',\n '.sky-lookup-show-more-modal-muiltiselect-toolbar'\n ]\"\n >\n <sky-toolbar class=\"sky-lookup-show-more-modal-toolbar\">\n <sky-toolbar-section>\n <sky-toolbar-item>\n <sky-search\n [debounceTime]=\"250\"\n [searchText]=\"searchText\"\n (searchApply)=\"searchApplied($event)\"\n >\n </sky-search>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <button\n *ngIf=\"context.showAddButton\"\n type=\"button\"\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-add\"\n (click)=\"addButtonClicked()\"\n >\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"add\"\n iconType=\"skyux\"\n ></sky-icon>\n <sky-icon *skyThemeIf=\"'default'\" icon=\"plus-circle\"></sky-icon>\n {{ 'skyux_lookup_show_more_add' | skyLibResources }}\n </button>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n <sky-toolbar\n *ngIf=\"context.selectMode === 'multiple'\"\n class=\"sky-lookup-show-more-modal-muiltiselect-toolbar\"\n >\n <sky-toolbar-section>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-select-all-btn\"\n type=\"button\"\n (click)=\"selectAll()\"\n >\n {{\n 'skyux_lookup_show_more_select_all_button_title'\n | skyLibResources\n }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-clear-all-btn\"\n type=\"button\"\n (click)=\"clearAll()\"\n >\n {{\n 'skyux_lookup_show_more_clear_all_button_title'\n | skyLibResources\n }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <sky-checkbox\n [(checked)]=\"onlyShowSelected\"\n (change)=\"updateDisplayedItems()\"\n >\n <sky-checkbox-label>\n {{\n 'skyux_lookup_show_more_show_selected_option_title'\n | skyLibResources\n }}\n </sky-checkbox-label>\n </sky-checkbox>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n </div>\n <div\n *ngIf=\"!isSearching && displayedItems.length === 0\"\n class=\"sky-font-deemphasized sky-lookup-show-more-no-results\"\n >\n {{ 'skyux_lookup_show_more_no_results' | skyLibResources }}\n </div>\n <sky-repeater class=\"sky-lookup-show-more-repeater\" expandMode=\"none\">\n <sky-repeater-item\n *ngFor=\"let item of displayedItems\"\n [isSelected]=\"\n item[context.idProperty] | skyLookupItemSelected: selectedIdMap\n \"\n [selectable]=\"context.selectMode === 'multiple'\"\n (click)=\"itemClick(item)\"\n (keyup.enter)=\"itemClick(item)\"\n (isSelectedChange)=\"onItemSelect($event, item)\"\n >\n <sky-repeater-item-content>\n <ng-container\n *ngTemplateOutlet=\"\n context.userConfig?.itemTemplate\n ? context.userConfig?.itemTemplate\n : defaultItemTemplate;\n context: { item: item }\n \"\n >\n </ng-container>\n </sky-repeater-item-content>\n </sky-repeater-item>\n </sky-repeater>\n <sky-infinite-scroll\n [enabled]=\"hasMoreItems\"\n [loading]=\"isLoadingMore\"\n (scrollEnd)=\"infiniteScrollEnd()\"\n >\n </sky-infinite-scroll>\n </sky-modal-content>\n <sky-modal-footer>\n <button\n class=\"sky-btn sky-btn-primary sky-margin-inline-compact sky-lookup-show-more-modal-save\"\n type=\"button\"\n [disabled]=\"isSearching\"\n (click)=\"save()\"\n >\n {{ 'skyux_lookup_show_more_select' | skyLibResources }}\n </button>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-close\"\n type=\"button\"\n (click)=\"modalInstance.close()\"\n >\n {{ 'skyux_lookup_show_more_cancel' | skyLibResources }}\n </button>\n </sky-modal-footer>\n</sky-modal>\n\n<ng-template let-item=\"item\" #defaultItemTemplate>\n {{ item[context.descriptorProperty] }}\n</ng-template>\n\n<ng-template #defaultTitle>\n <ng-container *ngIf=\"context.selectMode === 'single'\">\n {{ 'skyux_lookup_show_more_modal_title_single' | skyLibResources }}\n </ng-container>\n <ng-container *ngIf=\"context.selectMode === 'multiple'\">\n {{ 'skyux_lookup_show_more_modal_title_multiple' | skyLibResources }}\n </ng-container>\n</ng-template>\n","import { SkyAutocompleteSearchFunction } from '../../autocomplete/types/autocomplete-search-function';\n\nimport { SkyLookupSelectModeType } from './lookup-select-mode-type';\nimport { SkyLookupShowMoreNativePickerConfig } from './lookup-show-more-native-picker-config';\n\n/**\n * @internal\n * Context for the show more native picker. These values are provided by the lookup component.\n */\nexport class SkyLookupShowMoreNativePickerContext {\n public items: any[];\n public descriptorProperty: string;\n public initialSearch: string;\n public initialValue: any[];\n public search: SkyAutocompleteSearchFunction;\n public selectMode: SkyLookupSelectModeType;\n public showAddButton: boolean;\n public userConfig: SkyLookupShowMoreNativePickerConfig;\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n} from '@angular/core';\nimport { SkyModalInstance } from '@skyux/modals';\n\nimport { Subject } from 'rxjs';\n\nimport { SkyLookupShowMoreNativePickerContext } from './types/lookup-show-more-native-picker-context';\n\n/**\n * @internal\n * Internal component to implement the native picker.\n */\n@Component({\n // Suppress this error rather than fix the selector since consumers with unit tests\n // may be looking for an element with this selector. We can change it in the next major\n // version of SKY UX.\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'skyux-lookup-show-more-modal',\n templateUrl: './lookup-show-more-modal.component.html',\n styleUrls: ['./lookup-show-more-modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyLookupShowMoreModalComponent\n implements AfterViewInit, OnDestroy\n{\n /**\n * @internal\n * Fires when users select the button to add new options to the list.\n */\n public addClick: Subject<void> = new Subject();\n\n public items: any[];\n\n public dataManagerConfig = {\n sortOptions: [\n {\n id: 'az',\n label: 'Alphabetical (A - Z)',\n descending: false,\n propertyName: 'name',\n },\n {\n id: 'za',\n label: 'Alphabetical (Z - A)',\n descending: true,\n propertyName: 'name',\n },\n ],\n };\n\n public displayedItems: any[] = [];\n public itemsHaveMore = false;\n public onlyShowSelected = false;\n public searchText: string;\n public selectedItems: { index: number; itemData: any }[] = [];\n\n private itemIndex = 0;\n private ngUnsubscribe = new Subject<void>();\n\n constructor(\n public modalInstance: SkyModalInstance,\n public context: SkyLookupShowMoreNativePickerContext,\n private changeDetector: ChangeDetectorRef\n ) {}\n\n public ngAfterViewInit(): void {\n this.searchText = this.context.initialSearch;\n this.addItems();\n }\n\n public ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n public addButtonClicked(): void {\n this.addClick.next();\n }\n\n public addItems(): void {\n if (!this.items || this.items.length === 0) {\n const selectedItems: any[] = this.selectedItems.slice();\n\n this.items = this.context.items\n ? this.context.items.map((item) => {\n return {\n value: item,\n selected: false,\n };\n })\n : [];\n\n this.items.forEach((item) => {\n const isInitialValue: boolean =\n this.context.initialValue === item.value;\n\n const initialIsArray: boolean = Array.isArray(\n this.context.initialValue\n );\n const initialValueContainsItem: boolean =\n this.context.initialValue.findIndex(\n (initialItem: any) => initialItem === item.value\n ) >= 0;\n\n if (isInitialValue || (initialIsArray && initialValueContainsItem)) {\n item.selected = true;\n const itemIndex = this.items.indexOf(item);\n if (\n selectedItems.findIndex(\n (selectedItem) => selectedItem.index === itemIndex\n ) < 0\n ) {\n selectedItems.push({ index: itemIndex, itemData: item.value });\n }\n }\n });\n\n this.selectedItems = selectedItems;\n this.updateDataState();\n this.changeDetector.markForCheck();\n }\n\n this.itemIndex = this.itemIndex + 10;\n this.searchItems(this.items).then((searchedItems) => {\n this.displayedItems = searchedItems.slice(0, this.itemIndex);\n\n if (this.itemIndex > searchedItems.length) {\n this.itemsHaveMore = false;\n } else {\n this.itemsHaveMore = true;\n }\n this.changeDetector.markForCheck();\n });\n }\n\n public clearAll(): void {\n this.displayedItems.forEach((item) => {\n if (item.selected) {\n item.selected = false;\n }\n });\n this.selectedItems = [];\n this.updateDataState();\n this.changeDetector.markForCheck();\n }\n\n public itemClick(selectedItem: any): void {\n if (this.context.selectMode === 'single') {\n this.onItemSelect(!selectedItem.selected, selectedItem);\n }\n }\n\n public onItemSelect(newSelectState: boolean, itemToSelect: any): void {\n if (this.context.selectMode === 'single') {\n /* Sanity check - single select mode should only alow for a `true` select state */\n /* istanbul ignore else */\n if (newSelectState) {\n itemToSelect.selected = true;\n this.items.forEach((item) => {\n if (item.value !== itemToSelect.value) {\n item.selected = false;\n }\n });\n this.displayedItems.forEach((item) => {\n if (item.value !== itemToSelect.value) {\n item.selected = false;\n }\n });\n const itemIndex = this.items.findIndex(\n (item) => item.value === itemToSelect.value\n );\n this.selectedItems = [\n { index: itemIndex, itemData: this.items[itemIndex].value },\n ];\n }\n } else {\n const selectedItems: { index: number; itemData: any }[] =\n this.selectedItems;\n const allItemsIndex = this.items.findIndex(\n (item) => item.value === itemToSelect.value\n );\n const selectedItemsIndex = selectedItems.findIndex(\n (selectedItem) => selectedItem.index === allItemsIndex\n );\n\n if (newSelectState && selectedItemsIndex === -1) {\n selectedItems.push({\n index: allItemsIndex,\n itemData: this.items[allItemsIndex].value,\n });\n } else if (!newSelectState && selectedItemsIndex !== -1) {\n selectedItems.splice(selectedItemsIndex, 1);\n }\n\n this.selectedItems = selectedItems;\n }\n this.updateDataState();\n this.changeDetector.markForCheck();\n }\n\n public searchApplied(searchText: string) {\n /* istanbul ignore else */\n if (this.searchText !== searchText) {\n this.itemIndex = 10;\n }\n this.searchText = searchText;\n this.updateDataState();\n }\n\n public searchItems(items: any[]): Promise<any[]> {\n const searchText = this.searchText;\n\n if (searchText) {\n const resultValues = this.context.search(\n searchText,\n items.map((item) => {\n return item.value;\n })\n );\n\n if (resultValues instanceof Array) {\n const result = items.filter(\n (item) => resultValues.indexOf(item.value) >= 0\n );\n return Promise.resolve(result);\n } else {\n return resultValues.then((values) => {\n const result = items.filter(\n (item) => values.indexOf(item.value) >= 0\n );\n return Promise.resolve(result);\n });\n }\n } else {\n return Promise.resolve(items);\n }\n }\n\n public selectAll(): void {\n const selectedItems: { index: number; itemData: any }[] =\n this.selectedItems;\n\n this.displayedItems.forEach((item: any) => {\n if (!item.selected) {\n item.selected = true;\n\n const index = this.items.indexOf(item);\n\n /* Sanity check */\n /* istanbul ignore else */\n if (\n selectedItems.findIndex(\n (selectedItem) => selectedItem.index === index\n ) < 0\n ) {\n selectedItems.push({\n index: index,\n itemData: this.items[index].value,\n });\n }\n }\n });\n\n this.selectedItems = selectedItems;\n this.updateDataState();\n this.changeDetector.markForCheck();\n }\n\n public updateDataState(): void {\n const selectedItems: { index: number; itemData: any }[] =\n this.selectedItems;\n this.items.forEach((item: any, index: number) => {\n item.selected =\n selectedItems.findIndex(\n (selectedItem) => selectedItem.index === index\n ) !== -1;\n });\n\n this.searchItems(this.items).then((searchedItems) => {\n if (this.onlyShowSelected) {\n searchedItems = searchedItems.filter((item) => item.selected);\n }\n this.displayedItems = searchedItems.slice(0, this.itemIndex);\n\n if (this.itemIndex > searchedItems.length) {\n this.itemsHaveMore = false;\n } else {\n this.itemsHaveMore = true;\n }\n\n this.changeDetector.markForCheck();\n });\n }\n\n public updateItemData(data: any[]): void {\n this.context.items = data;\n this.items = undefined;\n this.itemIndex = 10;\n this.selectedItems.forEach((selectedItem) => {\n this.context.items.forEach((item: any, index: number) => {\n if (selectedItem.itemData === item) {\n selectedItem.index = index;\n }\n });\n });\n\n this.addItems();\n\n this.changeDetector.markForCheck();\n }\n}\n","<sky-modal>\n <sky-modal-header>\n <ng-container *ngIf=\"context.userConfig?.title; else defaultTitle\">\n {{ context.userConfig.title }}\n </ng-container>\n </sky-modal-header>\n <sky-modal-content>\n <div\n [skyViewkeeper]=\"[\n '.sky-lookup-show-more-modal-toolbar',\n '.sky-lookup-show-more-modal-muiltiselect-toolbar'\n ]\"\n >\n <sky-toolbar class=\"sky-lookup-show-more-modal-toolbar\">\n <sky-toolbar-section>\n <sky-toolbar-item>\n <sky-search\n [debounceTime]=\"250\"\n [searchText]=\"searchText\"\n (searchApply)=\"searchApplied($event)\"\n >\n </sky-search>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <button\n *ngIf=\"context.showAddButton\"\n type=\"button\"\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-add\"\n (click)=\"addButtonClicked()\"\n >\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"add\"\n iconType=\"skyux\"\n ></sky-icon>\n <sky-icon *skyThemeIf=\"'default'\" icon=\"plus-circle\"></sky-icon>\n {{ 'skyux_lookup_show_more_add' | skyLibResources }}\n </button>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n <sky-toolbar\n *ngIf=\"context.selectMode === 'multiple'\"\n class=\"sky-lookup-show-more-modal-muiltiselect-toolbar\"\n >\n <sky-toolbar-section>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-select-all-btn\"\n type=\"button\"\n (click)=\"selectAll()\"\n >\n {{\n 'skyux_lookup_show_more_select_all_button_title'\n | skyLibResources\n }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-item>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-clear-all-btn\"\n type=\"button\"\n (click)=\"clearAll()\"\n >\n {{\n 'skyux_lookup_show_more_clear_all_button_title'\n | skyLibResources\n }}\n </button>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <sky-checkbox\n [(checked)]=\"onlyShowSelected\"\n (change)=\"updateDataState()\"\n >\n <sky-checkbox-label>\n {{\n 'skyux_lookup_show_more_show_selected_option_title'\n | skyLibResources\n }}\n </sky-checkbox-label>\n </sky-checkbox>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n </div>\n <div\n *ngIf=\"displayedItems.length === 0\"\n class=\"sky-font-deemphasized sky-lookup-show-more-no-results\"\n >\n {{ 'skyux_lookup_show_more_no_results' | skyLibResources }}\n </div>\n <sky-repeater class=\"sky-lookup-show-more-repeater\" expandMode=\"none\">\n <sky-repeater-item\n *ngFor=\"let item of displayedItems\"\n [selectable]=\"context.selectMode === 'multiple'\"\n [(isSelected)]=\"item.selected\"\n (click)=\"itemClick(item)\"\n (keyup.enter)=\"itemClick(item)\"\n (isSelectedChange)=\"onItemSelect($event, item)\"\n >\n <sky-repeater-item-content>\n <ng-container\n *ngTemplateOutlet=\"\n context.userConfig?.itemTemplate\n ? context.userConfig?.itemTemplate\n : defaultItemTemplate;\n context: { item: item.value }\n \"\n >\n </ng-container>\n </sky-repeater-item-content>\n </sky-repeater-item>\n </sky-repeater>\n <sky-infinite-scroll [enabled]=\"itemsHaveMore\" (scrollEnd)=\"addItems()\">\n </sky-infinite-scroll>\n </sky-modal-content>\n <sky-modal-footer>\n <button\n class=\"sky-btn sky-btn-primary sky-margin-inline-compact sky-lookup-show-more-modal-save\"\n type=\"button\"\n (click)=\"modalInstance.save(selectedItems)\"\n >\n {{ 'skyux_lookup_show_more_select' | skyLibResources }}\n </button>\n <button\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-close\"\n type=\"button\"\n (click)=\"modalInstance.close()\"\n >\n {{ 'skyux_lookup_show_more_cancel' | skyLibResources }}\n </button>\n </sky-modal-footer>\n</sky-modal>\n\n<ng-template let-item=\"item\" #defaultItemTemplate>\n {{ item[context.descriptorProperty] }}\n</ng-template>\n\n<ng-template #defaultTitle>\n <ng-container *ngIf=\"context.selectMode === 'single'\">\n {{ 'skyux_lookup_show_more_modal_title_single' | skyLibResources }}\n </ng-container>\n <ng-container *ngIf=\"context.selectMode === 'multiple'\">\n {{ 'skyux_lookup_show_more_modal_title_multiple' | skyLibResources }}\n </ng-container>\n</ng-template>\n","import { ElementRef, Injectable } from '@angular/core';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyLookupAdapterService {\n public focusInput(elRef: ElementRef): void {\n const inputEl: HTMLElement =\n elRef.nativeElement.querySelector('.sky-lookup-input');\n\n /* Sanity check */\n /* istanbul ignore else */\n if (inputEl) {\n inputEl.focus();\n }\n }\n}\n","import {\n Directive,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n} from '@angular/core';\n\nimport { skyAutocompleteDefaultSearchFunction } from '../autocomplete/autocomplete-default-search-function';\nimport { SkyAutocompleteSearchAsyncArgs } from '../autocomplete/types/autocomplete-search-async-args';\nimport { SkyAutocompleteSearchFunction } from '../autocomplete/types/autocomplete-search-function';\nimport { SkyAutocompleteSearchFunctionFilter } from '../autocomplete/types/autocomplete-search-function-filter';\n\n/**\n * @internal\n */\n@Directive()\nexport class SkyLookupAutocompleteAdapter {\n /**\n * Specifies how many milliseconds to wait before searching while users\n * enter text in the lookup field.\n * @default 0\n */\n @Input()\n public debounceTime: number;\n\n /**\n * Specifies an object property to display in the text input after users\n * select an item in the dropdown list.\n * @default \"name\"\n */\n @Input()\n public set descriptorProperty(value: string) {\n this._descriptorProperty = value;\n }\n\n public get descriptorProperty(): string {\n return this._descriptorProperty || 'name';\n }\n\n /**\n * Specifies an array of object properties to search.\n * @default [\"name\"]\n */\n @Input()\n public set propertiesToSearch(value: string[]) {\n this._propertiesToSearch = value;\n }\n\n public get propertiesToSearch(): string[] {\n return this._propertiesToSearch || ['name'];\n }\n\n /**\n * Specifies a function to dynamically manage the data source when users\n * change the text in the lookup field. The search function must return\n * an array or a promise of an array. The `search` property is particularly\n * useful when the data source does not live in the source code. If the\n * search requires calling a remote data source, use `searchAsync` instead of\n * `search`.\n */\n @Input()\n public set search(value: SkyAutocompleteSearchFunction) {\n this._search = value;\n }\n\n public get search(): SkyAutocompleteSearchFunction {\n return (\n this._search ||\n skyAutocompleteDefaultSearchFunction({\n propertiesToSearch: this.propertiesToSearch,\n searchFilters: this.searchFilters,\n })\n );\n }\n\n /**\n * Specifies a template to format each option in the dropdown list. The lookup component\n * injects values into the template as `item` variables that reference all the object\n * properties of the options.\n */\n @Input()\n public searchResultTemplate: TemplateRef<unknown>;\n\n /**\n * Specifies the minimum number of characters that users must enter before\n * the lookup component searches the data source and displays search results\n * in the dropdown list.\n * @default 1\n */\n @Input()\n public searchTextMinimumCharacters: number;\n\n /**\n * Specifies an array of functions to call against each search result in order\n * to filter the search results when using the default search function. When\n * using a custom search function via the `search` property filters must be\n * applied manually inside that function. The function must return `true` or\n * `false` for each result to indicate whether to display it in the dropdown list.\n */\n @Input()\n public searchFilters: SkyAutocompleteSearchFunctionFilter[];\n\n /**\n * Specifies the maximum number of search results to display in the dropdown\n * list. By default, the lookup component displays all matching results.\n */\n @Input()\n public searchResultsLimit: number;\n\n /**\n * Fires when users enter new search information and allows results to be\n * returned via an observable.\n */\n @Output()\n public searchAsync = new EventEmitter<SkyAutocompleteSearchAsyncArgs>();\n\n private _descriptorProperty: string;\n private _propertiesToSearch: string[];\n private _search: SkyAutocompleteSearchFunction;\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { SkyAppWindowRef } from '@skyux/core';\nimport { SkyInputBoxHostService } from '@skyux/forms';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport {\n SkyToken,\n SkyTokensMessage,\n SkyTokensMessageType,\n} from '@skyux/indicators';\nimport { SkyModalInstance, SkyModalService } from '@skyux/modals';\nimport { SkyThemeService } from '@skyux/theme';\n\nimport { Subject, fromEvent as observableFromEvent } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\n\nimport { SkyAutocompleteInputDirective } from '../autocomplete/autocomplete-input.directive';\nimport { SkyAutocompleteMessage } from '../autocomplete/types/autocomplete-message';\nimport { SkyAutocompleteMessageType } from '../autocomplete/types/autocomplete-message-type';\nimport { SkyAutocompleteSearchAsyncArgs } from '../autocomplete/types/autocomplete-search-async-args';\nimport { SkyAutocompleteSelectionChange } from '../autocomplete/types/autocomplete-selection-change';\nimport { SkyAutocompleteShowMoreArgs } from '../autocomplete/types/autocomplete-show-more-args';\n\nimport { SkyLookupAdapterService } from './lookup-adapter.service';\nimport { SkyLookupAutocompleteAdapter } from './lookup-autocomplete-adapter';\nimport { SkyLookupShowMoreAsyncModalComponent } from './lookup-show-more-async-modal.component';\nimport { SkyLookupShowMoreModalComponent } from './lookup-show-more-modal.component';\nimport { SkyLookupAddCallbackArgs } from './types/lookup-add-click-callback-args';\nimport { SkyLookupAddClickEventArgs } from './types/lookup-add-click-event-args';\nimport { SkyLookupSelectModeType } from './types/lookup-select-mode-type';\nimport { SkyLookupShowMoreConfig } from './types/lookup-show-more-config';\nimport { SkyLookupShowMoreNativePickerAsyncContext } from './types/lookup-show-more-native-picker-async-context';\nimport { SkyLookupShowMoreNativePickerContext } from './types/lookup-show-more-native-picker-context';\n\n@Component({\n selector: 'sky-lookup',\n templateUrl: './lookup.component.html',\n styleUrls: ['./lookup.component.scss'],\n providers: [SkyLookupAdapterService],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyLookupComponent\n extends SkyLookupAutocompleteAdapter\n implements OnInit, AfterViewInit, OnDestroy, ControlValueAccessor\n{\n /**\n * Specifies an ARIA label for the typeahead search input\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the input includes a visible label, use `ariaLabelledBy` instead.\n */\n @Input()\n public ariaLabel: string;\n\n /**\n * Specifies the HTML element ID (without the leading `#`) of the element that labels\n * the typeahead search input. This sets the input's `aria-labelledby` attribute\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the input does not include a visible label, use `ariaLabel` instead.\n */\n @Input()\n public ariaLabelledBy: string;\n\n /**\n * Specifies the value for the `autocomplete` attribute on the form input.\n * @default \"off\"\n */\n @Input()\n public autocompleteAttribute: string;\n\n /**\n * Specifies a data source for the lookup component to search when users\n * enter text. You can specify static data such as an array of objects, or\n * you can pull data from a database.\n * @default []\n */\n @Input()\n public set data(value: any[]) {\n this._data = value;\n\n if (this.openNativePicker && this.searchAsync.observers.length === 0) {\n this.openNativePicker.componentInstance.updateItemData(value);\n }\n }\n\n public get data(): any[] {\n return this._data;\n }\n\n /**\n * Indicates whether to disable the lookup field.\n */\n @Input()\n public disabled = false;\n\n /**\n * Indicates whether to enable users to open a picker where they can view all options.\n */\n @Input()\n public enableShowMore = false;\n\n /**\n * Specifies placeholder text to display in the lookup field.\n */\n @Input()\n public placeholderText: string;\n\n /**\n * Specifies an object property that represents the object's unique identifier.\n * Specifying this property enables token animations and more efficient rendering.\n */\n @Input()\n public idProperty: string;\n\n /**\n * Indicates whether to display a button that lets users add options to the list.\n */\n @Input()\n public showAddButton = false;\n\n /**\n * Specifies configuration options for the picker that displays all options.\n */\n @Input()\n public showMoreConfig: SkyLookupShowMoreConfig;\n\n /**\n * Specifies whether users can select one option or multiple options.\n * @default \"multiple\"\n */\n @Input()\n public set selectMode(value: SkyLookupSelectModeType) {\n const multipleToSingle: boolean =\n value === 'single' && this.selectMode === 'multiple';\n\n this._selectMode = value;\n this.updateForSelectMode();\n\n if (multipleToSingle) {\n if (this.value && this.value.length > 1) {\n // The `setTimeout` is needed to avoid a `ExpressionChangedAfterItHasBeenCheckedError` error in template forms.\n setTimeout(() => {\n this.writeValue([this.value[0]]);\n this.changeDetector.detectChanges();\n });\n }\n }\n }\n\n public get selectMode(): SkyLookupSelectModeType {\n return this._selectMode || 'multiple';\n }\n\n /**\n * @internal\n */\n @Input()\n public wrapperClass?: string;\n\n /**\n * Fires when users select the button to add options to the list.\n */\n @Output()\n public addClick: EventEmitter<SkyLookupAddClickEventArgs> = new EventEmitter();\n\n public get tokens(): SkyToken[] {\n return this._tokens;\n }\n\n public set tokens(value: SkyToken[]) {\n // Collapse the tokens into a single token if the user has selected many options.\n if (this.enableShowMore && this.value.length > 5) {\n this.resourcesService\n .getString('skyux_lookup_tokens_summary', this.value.length.toString())\n .pipe(take(1))\n .subscribe((label) => {\n this._tokens = [\n {\n value: { [this.descriptorProperty]: label },\n },\n ];\n this.changeDetector.markForCheck();\n });\n } else {\n this._tokens = value;\n this.changeDetector.markForCheck();\n }\n }\n\n public get value(): any[] {\n return this._value ? this._value : [];\n }\n\n public set value(newValue: any[]) {\n this._value = newValue;\n\n if (!this.openNativePicker) {\n this.tokens = this.parseTokens(newValue);\n }\n\n this.onChange(this._value);\n this.onTouched();\n }\n\n public autocompleteController = new Subject<SkyAutocompleteMessage>();\n public isInputFocused = false;\n public tokensController = new Subject<SkyTokensMessage>();\n\n @ViewChild(SkyAutocompleteInputDirective, {\n read: SkyAutocompleteInputDirective,\n static: false,\n })\n private set autocompleteInputDirective(value: SkyAutocompleteInputDirective) {\n this._autocompleteInputDirective = value;\n this.updateForSelectMode();\n }\n\n private get autocompleteInputDirective(): SkyAutocompleteInputDirective {\n return this._autocompleteInputDirective;\n }\n\n @ViewChild('showMoreButtonTemplateRef', {\n read: TemplateRef,\n static: true,\n })\n private showMoreButtonTemplateRef: TemplateRef<unknown>;\n\n @ViewChild('inputTemplateRef', {\n read: TemplateRef,\n static: true,\n })\n private inputTemplateRef: TemplateRef<unknown>;\n\n @ViewChild('lookupWrapper', {\n read: ElementRef,\n })\n private lookupWrapperRef: ElementRef;\n\n @ViewChild('searchIconTemplateRef', {\n read: TemplateRef,\n static: true,\n })\n private searchIconTemplateRef: TemplateRef<unknown>;\n\n private ngUnsubscribe = new Subject<void>();\n private idle = new Subject<void>();\n private markForTokenFocusOnKeyUp = false;\n private openNativePicker: SkyModalInstance;\n\n private _autocompleteInputDirective: SkyAutocompleteInputDirective;\n private _data: any[];\n private _selectMode: SkyLookupSelectModeType;\n private _tokens: SkyToken[];\n private _value: any[];\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private elementRef: ElementRef,\n private windowRef: SkyAppWindowRef,\n @Self() @Optional() ngControl: NgControl,\n private adapter: SkyLookupAdapterService,\n private modalService: SkyModalService,\n private resourcesService: SkyLibResourcesService,\n @Optional() public inputBoxHostSvc?: SkyInputBoxHostService,\n @Optional() public themeSvc?: SkyThemeService\n ) {\n super();\n ngControl.valueAccessor = this;\n }\n\n public ngOnInit(): void {\n if (this.inputBoxHostSvc) {\n this.inputBoxHostSvc.populate({\n inputTemplate: this.inputTemplateRef,\n buttonsTemplate: this.enableShowMore\n ? this.showMoreButtonTemplateRef\n : undefined,\n iconsInsetTemplate: this.enableShowMore\n ? undefined\n : this.searchIconTemplateRef,\n });\n }\n\n /* istanbul ignore else */\n if (this.themeSvc) {\n // This is required for the autocomplete directive to be set after elements\n // are rearranged when switching themes.\n this.themeSvc.settingsChange\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n this.changeDetector.markForCheck();\n });\n }\n }\n\n public ngAfterViewInit(): void {\n if (!this.disabled) {\n this.addEventListeners();\n }\n }\n\n public ngOnDestroy(): void {\n this.removeEventListeners();\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n this.tokensController.complete();\n }\n\n public addButtonClicked(): void {\n this.addClick.emit({\n itemAdded: (args: SkyLookupAddCallbackArgs) =>\n this.onAddButtonComplete(args),\n });\n }\n\n public onAutocompleteSelectionChange(\n change: SkyAutocompleteSelectionChange\n ): void {\n /* istanbul ignore else */\n if (change.selectedItem) {\n this.addToSelected(change.selectedItem);\n } else if (this.selectMode === 'single') {\n this.writeValue([]);\n }\n }\n\n public onAutocompleteBlur(): void {\n this.onTouched();\n }\n\n public onTokensChange(change: SkyToken[]): void {\n if (!change) {\n return;\n }\n\n if (this.tokens !== change) {\n if (change.length === 0) {\n this.focusInput();\n }\n\n // NOTE: We do this here instead of just using the `value` setter because we need to use the\n // set of tokens returned here for the purposes of setting focus (see `onTokensKeyUp`).\n this._value = change.map((token) => {\n return token.value;\n });\n this.tokens = change;\n\n this.sendAutocompleteMessage(\n SkyAutocompleteMessageType.RepositionDropdown\n );\n this.onChange(this._value);\n this.onTouched();\n }\n }\n\n public onTokensFocusIndexOverRange(): void {\n this.windowRef.nativeWindow.setTimeout(() => {\n this.focusInput();\n });\n }\n\n public onTokensKeyUp(event: KeyboardEvent): void {\n /* istanbul ignore else */\n if (this.selectMode !== 'single') {\n switch (event.key) {\n case 'Backspace':\n this.sendTokensMessage(SkyTokensMessageType.RemoveActiveToken);\n this.sendTokensMessage(SkyTokensMessageType.FocusPreviousToken);\n event.preventDefault();\n break;\n\n case 'Del':\n case 'Delete':\n this.sendTokensMessage(SkyTokensMessageType.RemoveActiveToken);\n this.windowRef.nativeWindow.setTimeout(() => {\n this.sendTokensMessage(SkyTokensMessageType.FocusActiveToken);\n });\n event.preventDefault();\n break;\n }\n }\n }\n\n public writeValue(value: any[]): void {\n this.value = value ? value : [];\n this.updateForSelectMode();\n }\n\n // Angular automatically constructs these methods.\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onChange = (value: any[]) => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onTouched = () => {};\n\n public registerOnChange(fn: (value: any) => void) {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n // Allows Angular to disable the input.\n public setDisabledState(disabled: boolean): void {\n this.removeEventListeners();\n\n if (!disabled) {\n this.addEventListeners();\n }\n\n this.disabled = disabled;\n this.changeDetector.markForCheck();\n }\n\n public clearSearchText(): void {\n this.autocompleteInputDirective.value = undefined;\n this.autocompleteInputDirective.inputTextValue = undefined;\n }\n\n // Handles when to focus on the tokens.\n // Check for empty search text on keydown, before the escape key is fully pressed.\n // (Otherwise, a single character being escaped would register as empty on keyup.)\n // If empty on keydown, set a flag so that the appropriate action can be taken on keyup.\n public inputKeydown(event: KeyboardEvent, value: string): void {\n /* Sanity check as this should only be called when in multiple select mode */\n /* istanbul ignore else */\n if (this.selectMode !== 'single') {\n switch (event.key) {\n case 'Enter':\n event.preventDefault();\n break;\n case 'ArrowLeft':\n case 'Backspace':\n case 'Left':\n if (value) {\n this.markForTokenFocusOnKeyUp = false;\n } else {\n this.markForTokenFocusOnKeyUp = true;\n }\n break;\n default:\n }\n }\n }\n\n public inputKeyup(event: KeyboardEvent): void {\n /* Sanity check as this should only be called when in multiple select mode */\n /* istanbul ignore else */\n if (this.selectMode !== 'single') {\n switch (event.key) {\n case 'Esc':\n case 'Escape':\n this.clearSearchText();\n event.preventDefault();\n break;\n case 'ArrowLeft':\n case 'Backspace':\n case 'Left':\n /* istanbul ignore else */\n if (this.markForTokenFocusOnKeyUp) {\n this.sendTokensMessage(SkyTokensMessageType.FocusLastToken);\n event.preventDefault();\n }\n break;\n default:\n }\n\n event.stopPropagation();\n }\n }\n\n public onSearchButtonClick(): void {\n /*istanbul ignore next*/\n if (this.disabled) {\n return;\n }\n this.sendAutocompleteMessage(SkyAutocompleteMessageType.CloseDropdown);\n let isValueInTextBox = false;\n if (this.selectMode === 'single') {\n isValueInTextBox =\n this.autocompleteInputDirective.value &&\n this.autocompleteInputDirective.inputTextValue ===\n this.autocompleteInputDirective.value[this.descriptorProperty];\n }\n\n this.openPicker(\n isValueInTextBox ? '' : this.autocompleteInputDirective.inputTextValue\n );\n this.autocompleteInputDirective.restoreInputTextValueToPreviousState();\n }\n\n public onShowMoreClick(event: SkyAutocompleteShowMoreArgs): void {\n /* Sanity check */\n /* istanbul ignore else*/\n if (event) {\n this.openPicker(event.inputValue);\n }\n }\n\n private createNativePickerInstance(initialSearch: string): SkyModalInstance {\n const initialValue = this.value;\n const modalConfig = this.showMoreConfig?.nativePickerConfig || {};\n\n if (!modalConfig.itemTemplate) {\n modalConfig.itemTemplate = this.searchResultTemplate;\n }\n\n let contextProviderType:\n | typeof SkyLookupShowMoreNativePickerContext\n | typeof SkyLookupShowMoreNativePickerAsyncContext;\n\n let contextProviderValue:\n | SkyLookupShowMoreNativePickerContext\n | SkyLookupShowMoreNativePickerAsyncContext;\n\n let modalComponentType:\n | typeof SkyLookupShowMoreModalComponent\n | typeof SkyLookupShowMoreAsyncModalComponent;\n\n if (this.searchAsync.observers.length > 0) {\n contextProviderType = SkyLookupShowMoreNativePickerAsyncContext;\n modalComponentType = SkyLookupShowMoreAsyncModalComponent;\n\n contextProviderValue = new SkyLookupShowMoreNativePickerAsyncContext();\n contextProviderValue.idProperty = this.idProperty;\n contextProviderValue.searchAsync = (args) => {\n this.searchAsync.emit(args);\n return args.result;\n };\n } else {\n contextProviderType = SkyLookupShowMoreNativePickerContext;\n modalComponentType = SkyLookupShowMoreModalComponent;\n\n contextProviderValue = new SkyLookupShowMoreNativePickerContext();\n contextProviderValue.items = this.data;\n contextProviderValue.search = this.search;\n }\n\n contextProviderValue.descriptorProperty = this.descriptorProperty;\n contextProviderValue.initialSearch = initialSearch;\n contextProviderValue.initialValue = initialValue;\n contextProviderValue.selectMode = this.selectMode;\n contextProviderValue.showAddButton = this.showAddButton;\n contextProviderValue.userConfig = modalConfig;\n\n return this.modalService.open(modalComponentType, {\n providers: [\n {\n provide: contextProviderType,\n useValue: contextProviderValue,\n },\n ],\n size: 'large',\n wrapperClass: this.wrapperClass,\n });\n }\n\n public openPicker(initialSearch: string): void {\n if (this.showMoreConfig?.customPicker) {\n this.showMoreConfig.customPicker.open({\n items: this.data,\n initialSearch: initialSearch,\n initialValue: this.value,\n });\n } else {\n const initialValue = this.value;\n\n this.openNativePicker = this.createNativePickerInstance(initialSearch);\n\n this.openNativePicker.componentInstance.addClick.subscribe(() => {\n this.addButtonClicked();\n });\n\n this.openNativePicker.closed.subscribe((closeArgs) => {\n this.openNativePicker = undefined;\n if (closeArgs.reason === 'save') {\n let selectedItems: any[] = [];\n\n if (this.searchAsync.observers.length > 0) {\n selectedItems = closeArgs.data.map((item) => item.itemData);\n } else {\n this.data.forEach((item: any, dataIndex: number) => {\n if (\n closeArgs.data.some((savedItem: any) => {\n return savedItem.index === dataIndex;\n })\n ) {\n selectedItems.push(item);\n }\n });\n }\n\n this.writeValue(selectedItems);\n } else {\n this.writeValue(initialValue);\n }\n\n this.focusInput();\n this.changeDetector.markForCheck();\n });\n }\n }\n\n public onSearchAsync(args: SkyAutocompleteSearchAsyncArgs): void {\n this.searchAsync.emit(args);\n }\n\n private addToSelected(item: any): void {\n let selectedItems: any[];\n\n if (this.selectMode === 'single') {\n selectedItems = [item];\n } else {\n selectedItems = this.value;\n\n // If items have a unique identifier, don't allow the same item to be added twice.\n if (\n !this.idProperty ||\n !this.value.some(\n (existingItem) =>\n existingItem[this.idProperty] === item[this.idProperty]\n )\n ) {\n selectedItems.push(item);\n }\n\n this.clearSearchText();\n }\n\n this.writeValue(selectedItems);\n }\n\n private addEventListeners(): void {\n this.idle = new Subject();\n this.focusInputOnHostClick();\n }\n\n private removeEventListeners(): void {\n this.idle.next();\n this.idle.complete();\n }\n\n private focusInputOnHostClick(): void {\n let hostElement = !this.inputBoxHostSvc\n ? this.elementRef.nativeElement\n : this.lookupWrapperRef.nativeElement;\n const documentObj = this.windowRef.nativeWindow.document;\n\n // Handles focusing the input when the host is clicked.\n // The input should NOT be focused if other elements (tokens, etc.)\n // are currently focused or being tabbed through.\n\n observableFromEvent(documentObj, 'mousedown')\n .pipe(takeUntil(this.idle))\n .subscribe((event: MouseEvent) => {\n hostElement = !this.inputBoxHostSvc\n ? this.elementRef.nativeElement\n : this.lookupWrapperRef.nativeElement;\n this.isInputFocused = hostElement.contains(event.target);\n\n this.changeDetector.markForCheck();\n });\n\n observableFromEvent(documentObj, 'focusin')\n .pipe(takeUntil(this.idle))\n .subscribe((event: KeyboardEvent) => {\n hostElement = !this.inputBoxHostSvc\n ? this.elementRef.nativeElement\n : this.lookupWrapperRef.nativeElement;\n this.isInputFocused = hostElement.contains(event.target);\n\n this.changeDetector.markForCheck();\n });\n\n observableFromEvent(hostElement, 'mouseup')\n .pipe(takeUntil(this.idle))\n .subscribe(() => {\n const classList = documentObj.activeElement.classList;\n if (!classList || !classList.contains('sky-token')) {\n this.focusInput();\n }\n });\n }\n\n private focusInput(): void {\n this.adapter.focusInput(this.lookupWrapperRef);\n }\n\n private onAddButtonComplete(args: SkyLookupAddCallbackArgs) {\n if (args.data) {\n this.data = args.data;\n }\n\n if (this.data.indexOf(args.item) >= 0) {\n if (this.openNativePicker) {\n (\n this.openNativePicker\n .componentInstance as SkyLookupShowMoreModalComponent\n ).onItemSelect(true, { value: args.item, selected: false });\n } else {\n let newValue = this.value;\n if (this.selectMode === 'multiple') {\n newValue = this.value.concat(args.item);\n } else {\n newValue = [args.item];\n }\n this.writeValue(newValue);\n }\n }\n }\n\n private parseTokens(data: any[]): SkyToken[] {\n return data.map((item: any) => {\n return {\n value: item,\n };\n });\n }\n\n private sendAutocompleteMessage(type: SkyAutocompleteMessageType): void {\n this.autocompleteController.next({ type });\n }\n\n private sendTokensMessage(type: SkyTokensMessageType): void {\n this.tokensController.next({ type });\n }\n\n private updateForSelectMode(): void {\n if (this.autocompleteInputDirective) {\n if (this.selectMode === 'single') {\n this.autocompleteInputDirective.value = this.value && this.value[0];\n } else {\n this.clearSearchText();\n }\n }\n }\n}\n","<ng-container *ngIf=\"!inputBoxHostSvc\">\n <ng-container *ngTemplateOutlet=\"inputTemplateRef\"></ng-container>\n</ng-container>\n\n<ng-template #inputTemplateRef>\n <div\n class=\"sky-lookup\"\n [ngClass]=\"{\n 'sky-lookup-focused': isInputFocused,\n 'sky-lookup-disabled': disabled,\n 'sky-lookup-single': selectMode === 'single'\n }\"\n #lookupWrapper\n >\n <sky-autocomplete\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [data]=\"data\"\n [debounceTime]=\"debounceTime\"\n [descriptorProperty]=\"descriptorProperty\"\n [enableShowMore]=\"enableShowMore\"\n [messageStream]=\"autocompleteController\"\n [propertiesToSearch]=\"propertiesToSearch\"\n [search]=\"search\"\n [searchAsyncDisabled]=\"searchAsync.observers.length === 0\"\n [searchFilters]=\"searchFilters\"\n [searchResultsLimit]=\"searchResultsLimit\"\n [searchResultTemplate]=\"searchResultTemplate\"\n [searchTextMinimumCharacters]=\"searchTextMinimumCharacters\"\n [showAddButton]=\"showAddButton\"\n [wrapperClass]=\"wrapperClass\"\n (addClick)=\"addButtonClicked()\"\n (searchAsync)=\"onSearchAsync($event)\"\n (selectionChange)=\"onAutocompleteSelectionChange($event)\"\n (showMoreClick)=\"onShowMoreClick($event)\"\n >\n <div class=\"sky-lookup-search-flex-wrapper\">\n <div\n class=\"sky-lookup-search\"\n [ngClass]=\"{\n 'sky-field-status-active': isInputFocused && !disabled\n }\"\n >\n <sky-tokens\n *ngIf=\"selectMode === 'multiple'\"\n class=\"sky-lookup-tokens\"\n [disabled]=\"disabled\"\n [displayWith]=\"descriptorProperty\"\n [focusable]=\"false\"\n [messageStream]=\"tokensController\"\n [trackWith]=\"idProperty\"\n [tokens]=\"tokens\"\n (keyup)=\"onTokensKeyUp($event)\"\n (tokensChange)=\"onTokensChange($event)\"\n (tokenSelected)=\"enableShowMore ? openPicker(undefined) : undefined\"\n (focusIndexOverRange)=\"onTokensFocusIndexOverRange()\"\n >\n <textarea\n class=\"sky-form-control sky-lookup-input\"\n rows=\"1\"\n skyAutocomplete\n wrap=\"off\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.placeholder]=\"placeholderText\"\n [autocompleteAttribute]=\"autocompleteAttribute\"\n [disabled]=\"disabled\"\n (blur)=\"onAutocompleteBlur()\"\n (keydown)=\"inputKeydown($event, $event.target.value)\"\n (keyup)=\"inputKeyup($event)\"\n ></textarea>\n </sky-tokens>\n <div\n *ngIf=\"selectMode === 'single'\"\n class=\"sky-lookup-single-control\"\n >\n <textarea\n class=\"sky-form-control sky-lookup-input\"\n rows=\"1\"\n skyAutocomplete\n wrap=\"off\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.placeholder]=\"placeholderText\"\n [autocompleteAttribute]=\"autocompleteAttribute\"\n [disabled]=\"disabled\"\n (blur)=\"onAutocompleteBlur()\"\n ></textarea>\n </div>\n </div>\n <ng-container *ngIf=\"!inputBoxHostSvc && enableShowMore\">\n <ng-container\n *ngTemplateOutlet=\"showMoreButtonTemplateRef\"\n ></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!inputBoxHostSvc && !enableShowMore\">\n <ng-container\n *ngTemplateOutlet=\"searchIconTemplateRef\"\n ></ng-container>\n </ng-container>\n </div>\n </sky-autocomplete>\n </div>\n</ng-template>\n\n<ng-template #showMoreButtonTemplateRef>\n <div class=\"sky-input-group-btn\">\n <button\n class=\"sky-btn sky-btn-default\"\n [disabled]=\"disabled\"\n [ngClass]=\"{ 'sky-btn-disabled': disabled }\"\n type=\"button\"\n [attr.aria-label]=\"\n 'skyux_lookup_search_button_show_more' | skyLibResources\n \"\n (click)=\"onSearchButtonClick()\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"search\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n iconType=\"skyux\"\n icon=\"search\"\n ></sky-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #searchIconTemplateRef>\n <div\n class=\"sky-input-group-icon sky-input-box-icon-inset\"\n [ngClass]=\"{ 'sky-lookup-disabled': disabled }\"\n >\n <sky-icon\n *skyThemeIf=\"'default'\"\n icon=\"search\"\n [attr.aria-label]=\"'skyux_lookup_search_icon' | skyLibResources\"\n ></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n iconType=\"skyux\"\n icon=\"search\"\n [attr.aria-label]=\"'skyux_lookup_search_icon' | skyLibResources\"\n ></sky-icon>\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SkyViewkeeperModule } from '@skyux/core';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport {\n SkyIconModule,\n SkyTokensModule,\n SkyWaitModule,\n} from '@skyux/indicators';\nimport { SkyToolbarModule } from '@skyux/layout';\nimport { SkyInfiniteScrollModule, SkyRepeaterModule } from '@skyux/lists';\nimport { SkyModalModule } from '@skyux/modals';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyAutocompleteModule } from '../autocomplete/autocomplete.module';\nimport { SkySearchModule } from '../search/search.module';\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\n\nimport { SkyLookupItemSelectedPipe } from './lookup-item-selected.pipe';\nimport { SkyLookupShowMoreAsyncModalComponent } from './lookup-show-more-async-modal.component';\nimport { SkyLookupShowMoreModalComponent } from './lookup-show-more-modal.component';\nimport { SkyLookupComponent } from './lookup.component';\n\n@NgModule({\n declarations: [\n SkyLookupComponent,\n SkyLookupItemSelectedPipe,\n SkyLookupShowMoreAsyncModalComponent,\n SkyLookupShowMoreModalComponent,\n ],\n imports: [\n CommonModule,\n FormsModule,\n SkyAutocompleteModule,\n SkyCheckboxModule,\n SkyIconModule,\n SkyInfiniteScrollModule,\n SkyI18nModule,\n SkyLookupResourcesModule,\n SkyModalModule,\n SkyRepeaterModule,\n SkySearchModule,\n SkyThemeModule,\n SkyTokensModule,\n SkyToolbarModule,\n SkyViewkeeperModule,\n SkyWaitModule,\n ],\n exports: [SkyLookupComponent],\n})\nexport class SkyLookupModule {}\n","/**\n * @deprecated Use `SkyLookupSelectModeType` instead.\n * @internal\n */\nexport enum SkyLookupSelectMode {\n /**\n * Restricts users to a single selection.\n */\n single = 'single',\n\n /**\n * Allows users to select multiple items.\n */\n multiple = 'multiple',\n}\n","/**\n * Specifies configuration options to launch a custom picker when users select\n * the button to view all options.\n */\nexport class SkyLookupShowMoreCustomPickerContext {\n /**\n * Specifies the options that users can select in the custom picker.\n */\n public items: any[];\n /**\n * Specifies search text to filter the contents of the custom picker.\n */\n public initialSearch: string;\n /**\n * Specifies the current selections in the lookup field.\n */\n public initialValue: any;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["observableFromEvent","uniqueId","i2.SkyAutocompleteAdapterService","i3","i5","i6","i7","i8.SkyAutcompleteSearchAsyncDisabledPipe","i2","i4.SkyAutocompleteComponent","i7.SkyAutocompleteInputDirective","i9","i2.SkySearchAdapterService","i8","i1","i2.SkyLookupShowMoreNativePickerAsyncContext","i4","i5.SkySearchComponent","i10","i11","i12.SkyLookupItemSelectedPipe","i2.SkyLookupShowMoreNativePickerContext","i4.SkySearchComponent","i3.SkyLookupAdapterService","i8.SkyAutocompleteComponent","i11.SkyAutocompleteInputDirective"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;AAKG;AAWH,MAAM,SAAS,GAA0C;AACvD,IAAA,OAAO,EAAE;AACP,QAAA,sBAAsB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;AAC1C,QAAA,6BAA6B,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE;AAC9D,QAAA,2BAA2B,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;AACpD,QAAA,iCAAiC,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;AAC9D,QAAA,qCAAqC,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE;AACxE,QAAA,sCAAsC,EAAE,EAAE,OAAO,EAAE,sBAAsB,EAAE;AAC3E,QAAA,wBAAwB,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;AAC/C,QAAA,oCAAoC,EAAE;AACpC,YAAA,OAAO,EAAE,yBAAyB;AACnC,SAAA;AACD,QAAA,0BAA0B,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;AAC9C,QAAA,8CAA8C,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE;AACzE,QAAA,6CAA6C,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE;AACvE,QAAA,iDAAiD,EAAE;AACjD,YAAA,OAAO,EAAE,0BAA0B;AACpC,SAAA;AACD,QAAA,6BAA6B,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;AACpD,QAAA,yCAAyC,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE;AAC1E,QAAA,2CAA2C,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE;AAC1E,QAAA,iCAAiC,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE;AAClE,QAAA,6BAA6B,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;AACpD,QAAA,2BAA2B,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE;AAC9D,QAAA,oBAAoB,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE;AACnD,QAAA,kBAAkB,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;AAC/C,QAAA,iBAAiB,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE;AAC7C,QAAA,wBAAwB,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE;AAC3D,KAAA;CACF,CAAC;MAEW,0BAA0B,CAAA;IAC9B,SAAS,CACd,UAA4B,EAC5B,IAAY,EAAA;QAEZ,OAAO,qBAAqB,CAAC,SAAS,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;KAClE;AACF,CAAA;AAED;;AAEG;MAWU,wBAAwB,CAAA;;qHAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,YATzB,aAAa,CAAA,EAAA,CAAA,CAAA;AASZ,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,EARxB,SAAA,EAAA;AACT,QAAA;AACE,YAAA,OAAO,EAAE,2BAA2B;AACpC,YAAA,QAAQ,EAAE,0BAA0B;AACpC,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA;AACF,KAAA,EAAA,OAAA,EAAA,CAPS,aAAa,CAAA,EAAA,CAAA,CAAA;2FASZ,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAVpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,aAAa,CAAC;AACxB,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,2BAA2B;AACpC,4BAAA,QAAQ,EAAE,0BAA0B;AACpC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;iBACF,CAAA;;;AC7CD,MAAM,+BAA+B,GAAG;AACtC,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,6BAA6B,CAAC;AAC5D,IAAA,KAAK,EAAE,IAAI;CACZ,CAAC;AAEF,MAAM,0BAA0B,GAAG;AACjC,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,6BAA6B,CAAC;AAC5D,IAAA,KAAK,EAAE,IAAI;CACZ,CAAC;MAMW,6BAA6B,CAAA;IAkHxC,WAAoB,CAAA,UAAsB,EAAU,QAAmB,EAAA;AAAnD,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AAAU,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;AAlB/D,QAAA,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC;AAErB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAQ,CAAC;AAIpC,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,OAAO,EAAQ,CAAC;AAE5B,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAIlB,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,OAAO,EAAQ,CAAC;AAE7B,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAkC,CAAC;;;AA2H9D,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAK,GAAG,CAAC;KAvHuC;AA/G3E;;;AAGG;IACH,IACW,qBAAqB,CAAC,KAAa,EAAA;QAC5C,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;AACrC,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;AACrC,SAAA;AAED,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CACxB,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,cAAc,EACd,IAAI,CAAC,qBAAqB,CAC3B,CAAC;KACH;AAED,IAAA,IAAW,qBAAqB,GAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,sBAAsB,IAAI,KAAK,CAAC;KAC7C;AAED;;;AAGG;IACH,IACW,QAAQ,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;KAC7E;AAED,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;AAED,IAAA,IAAW,IAAI,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;KAClC;AAED,IAAA,IAAW,WAAW,GAAA;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;IAED,IAAW,WAAW,CAAC,KAAa,EAAA;AAClC,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;KAC5C;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;KACnC;AAED,IAAA,IAAW,cAAc,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC;KAC5C;IAED,IAAW,cAAc,CAAC,KAAa,EAAA;QACrC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC;KACnD;AAED,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;KACzC;AAED,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IAED,IAAW,KAAK,CAAC,KAAU,EAAA;AACzB,QAAA,MAAM,UAAU,GAAG,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC;;AAGzC,QAAA,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AAC3C,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;;AAI3B,YAAA,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,EAAE;AACtC,gBAAA,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;AAC/B,aAAA;AAED,YAAA,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM,EAAE;AACrC,gBAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC5B,aAAA;AACF,SAAA;KACF;IAwBM,QAAQ,GAAA;AACb,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;AAE9C,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAE5B,QAAAA,SAAmB,CAAC,OAAO,EAAE,OAAO,CAAC;AAClC,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,MAAK;;AAEd,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACrB,oBAAA,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK;AAC3C,iBAAA,CAAC,CAAC;AACJ,aAAA;AACH,SAAC,CAAC,CAAC;AAEL,QAAAA,SAAmB,CAAC,OAAO,EAAE,MAAM,CAAC;AACjC,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,MAAK;;AAEd,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AACnB,aAAA;AACH,SAAC,CAAC,CAAC;AAEL,QAAAA,SAAmB,CAAC,OAAO,EAAE,OAAO,CAAC;AAClC,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,MAAK;;AAEd,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACpB,aAAA;AACH,SAAC,CAAC,CAAC;AAEL,QAAAA,SAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC;AACnC,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,MAAK;;;AAGd,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,gBAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC5B,aAAA;AACH,SAAC,CAAC,CAAC;KACN;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;AAE7B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;AAE9B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;KACjE;AAEM,IAAA,UAAU,CAAC,KAAU,EAAA;AAC1B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;AAEM,IAAA,gBAAgB,CAAC,EAAwB,EAAA;AAC9C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAEM,IAAA,iBAAiB,CAAC,EAAc,EAAA;AACrC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AAEM,IAAA,yBAAyB,CAAC,EAAc,EAAA;AAC7C,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;KAC7B;IAEM,oCAAoC,GAAA;AACzC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;;;AAIxC,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,UAAU,EAAE;AACtC,YAAA,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC;AAClC,SAAA;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;AAEM,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AACvC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC1B;AAEM,IAAA,QAAQ,CAAC,OAAwB,EAAA;AACtC,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACxB,SAAA;QACD,OAAO;KACR;;AAGM,IAAA,mBAAmB,CAAC,YAA2B,EAAA;AACpD,QAAA,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CACxB,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,uBAAuB,EACvB,YAAY,CACb,CAAC;AACH,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAC3B,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,uBAAuB,CACxB,CAAC;AACH,SAAA;KACF;;;IAIM,QAAQ,CAAC,KAAU,EAAA,GAAU;;AAE7B,IAAA,SAAS,MAAW;AAKnB,IAAA,aAAa,CAAC,OAAY,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CACxB,OAAO,EACP,cAAc,EACd,IAAI,CAAC,qBAAqB,CAC3B,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;KACrD;IAEO,aAAa,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;KAC9D;;0HAzPU,6BAA6B,EAAA,IAAA,EAAA,CAAA,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;AAA7B,6BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,EAF7B,QAAA,EAAA,mDAAA,EAAA,MAAA,EAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,CAAC,+BAA+B,EAAE,0BAA0B,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAE7D,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAJzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mDAAmD;AAC7D,oBAAA,SAAS,EAAE,CAAC,+BAA+B,EAAE,0BAA0B,CAAC;iBACzE,CAAA;yHASY,qBAAqB,EAAA,CAAA;sBAD/B,KAAK;gBAwBK,QAAQ,EAAA,CAAA;sBADlB,KAAK;;;ACjER;;AAEG;MAIU,qCAAqC,CAAA;IACzC,SAAS,CACd,WAAyD,EACzD,mBAA4B,EAAA;QAE5B,OAAO,mBAAmB,IAAI,WAAW,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC;KAClE;;kIANU,qCAAqC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;gIAArC,qCAAqC,EAAA,IAAA,EAAA,oCAAA,EAAA,CAAA,CAAA;2FAArC,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBAHjD,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,oCAAoC;iBAC3C,CAAA;;;ACTD;;;AAGG;AACG,SAAU,mBAAmB,CAAC,KAAa,EAAA;AAC/C,IAAA,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;AAChE;;ACEA;;AAEG;MAEU,6BAA6B,CAAA;IAGxC,WACU,CAAA,kBAAyC,EACzC,eAAiC,EAAA;AADjC,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAuB;AACzC,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAkB;AAEzC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;KAC3E;AAED;;AAEG;IACI,WAAW,CAAC,OAAoB,EAAE,SAAiB,EAAA;;;AAGxD,QAAA,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAC5C,SAAA;KACF;AAEM,IAAA,2BAA2B,CAChC,OAA2B,EAAA;AAE3B,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,oBAAoB;;;AAGjD,QAAA,OAAO,aAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,YAAY,CAAC,QAAQ,CAAC,aAAa,EAC5C,EAAE,cAAc,EAAE,IAAI,EAAE,CACzB,CAAC;KACH;AAED;;AAEG;IACI,cAAc,CAAC,OAAoB,EAAE,SAAiB,EAAA;;;AAG3D,QAAA,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAC/C,SAAA;KACF;AAEM,IAAA,gBAAgB,CACrB,UAAsB,EACtB,WAAuB,EACvB,UAAmB,EAAA;QAEnB,MAAM,aAAa,GAAG,UAAU;cAC5B,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,gBAAgB,CAAC;AACpD,cAAE,UAAU,CAAC,aAAa,CAAC;AAC7B,QAAA,IAAI,aAAa,EAAE;YACjB,MAAM,KAAK,GAAG,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;AAC1D,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,EAAE,OAAO,EAAE,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI,CAAC,CAAC;AAC1E,SAAA;KACF;AAED;;AAEG;IACI,WAAW,CAAC,OAAoB,EAAE,QAAgB,EAAA;AACvD,QAAA,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC7B;;0HA9DU,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;8HAA7B,6BAA6B,EAAA,CAAA,CAAA;2FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBADzC,UAAU;;;ACJL,SAAU,oCAAoC,CAClD,OAAoD,EAAA;AAEpD,IAAA,MAAM,UAAU,GAAG,UAAU,UAAkB,EAAE,IAAW,EAAA;AAC1D,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,IAAS,KAAI;YAC/B,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE;AAC3D,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;;YAGD,MAAM,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAC7C,CAAC,MAA2C,KAAI;gBAC9C,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;AAC5C,aAAC,CACF,CAAC;YAEF,OAAO,YAAY,KAAK,SAAS,CAAC;AACpC,SAAC,CAAC,CAAC;AACL,KAAC,CAAC;AAEF,IAAA,MAAM,MAAM,GAAG,UACb,UAAkB,EAClB,IAAW,EAAA;QAEX,MAAM,OAAO,GAAG,EAAE,CAAC;;;QAInB,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,OAAO,OAAO,CAAC;AAChB,SAAA;QAED,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;QAE3E,MAAM,YAAY,GAAG,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAElD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACnD,YAAA,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,QAAgB,KAAI;AACnE,gBAAA,IAAI,KAAK,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC;gBAChD,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;gBACjD,OAAO,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;AAClD,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,OAAO,EAAE;AACX,gBAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACtB,aAAA;AACF,SAAA;AAED,QAAA,OAAO,OAAO,CAAC;AACjB,KAAC,CAAC;AAEF,IAAA,OAAO,MAAM,CAAC;AAChB;;AC5DA;;AAEG;AACH,IAAY,0BAUX,CAAA;AAVD,CAAA,UAAY,0BAA0B,EAAA;AACpC;;AAEG;IACH,0BAAA,CAAA,0BAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAiB,CAAA;AAEjB;;AAEG;IACH,0BAAA,CAAA,0BAAA,CAAA,oBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,oBAAsB,CAAA;AACxB,CAAC,EAVW,0BAA0B,KAA1B,0BAA0B,GAUrC,EAAA,CAAA,CAAA;;AC4CD,IAAIC,UAAQ,GAAG,CAAC,CAAC;MASJ,wBAAwB,CAAA;IAyXnC,WACU,CAAA,cAAiC,EACjC,UAAsB,EACtB,YAA6B,EAC7B,cAA6C,EAC7C,cAAiC,EACrB,eAAwC,EAAA;AALpD,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAmB;AACjC,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AACtB,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAiB;AAC7B,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAA+B;AAC7C,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAmB;AACrB,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAyB;AAxU9D;;;AAGG;AAEI,QAAA,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;AAoH9B;;;AAGG;AAEI,QAAA,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AAS7B;;;;AAIG;AAEI,QAAA,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;AAEnC;;;AAGG;AAEI,QAAA,IAAA,CAAA,QAAQ,GAAuB,IAAI,YAAY,EAAE,CAAC;AAEzD;;;AAGG;AAEI,QAAA,IAAA,CAAA,aAAa,GAA8C,IAAI,YAAY,EAAE,CAAC;AAUrF;;;AAGG;AAEI,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAkC,CAAC;AAcjE,QAAA,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;AAYf,QAAA,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;AAuFhC;;AAEG;AACK,QAAA,IAAkB,CAAA,kBAAA,GAAG,CAAC,CAAC,CAAC;AAIxB,QAAA,IAAA,CAAA,yBAAyB,GAAG,IAAI,OAAO,EAAQ,CAAC;AAIhD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAQ,CAAC;AAI5C;;;;AAIG;AACK,QAAA,IAAwB,CAAA,wBAAA,GAAkB,EAAE,CAAC;AAiB7C,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAkC,CAAC;AAU5E,QAAA,MAAM,EAAE,GAAG,EAAEA,UAAQ,CAAC;AACtB,QAAA,IAAI,CAAC,aAAa,GAAG,CAAyB,sBAAA,EAAA,EAAE,EAAE,CAAC;AACnD,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAA4B,yBAAA,EAAA,EAAE,EAAE,CAAC;KAC1D;AAvXD;;;;AAIG;IACH,IACW,IAAI,CAAC,KAAY,EAAA;AAC1B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;AAED,IAAA,IAAW,IAAI,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;KACzB;AAED;;;;AAIG;IACH,IACW,YAAY,CAAC,KAAa,EAAA;AACnC,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC5B;AAED,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC;KAChC;AAED;;;;AAIG;IACH,IACW,kBAAkB,CAAC,KAAa,EAAA;AACzC,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;KAClC;AAED,IAAA,IAAW,kBAAkB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,mBAAmB,IAAI,MAAM,CAAC;KAC3C;AASD;;;AAGG;IACH,IACW,aAAa,CAAC,KAAsC,EAAA;AAC7D,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;AAED,IAAA,IAAW,aAAa,GAAA;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC;KAC5B;AAQD;;;AAGG;IACH,IACW,kBAAkB,CAAC,KAAe,EAAA;AAC3C,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;KAClC;AAED,IAAA,IAAW,kBAAkB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,mBAAmB,IAAI,CAAC,MAAM,CAAC,CAAC;KAC7C;AAED;;;;;;;AAOG;IACH,IACW,MAAM,CAAC,KAAoC,EAAA;AACpD,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACtB;AAED,IAAA,IAAW,MAAM,GAAA;QACf,QACE,IAAI,CAAC,OAAO;AACZ,YAAA,oCAAoC,CAAC;gBACnC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;gBAC3C,aAAa,EAAE,IAAI,CAAC,aAAa;AAClC,aAAA,CAAC,EACF;KACH;AAED;;;;AAIG;IACH,IACW,oBAAoB,CAAC,KAA2B,EAAA;AACzD,QAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;KACpC;AAED,IAAA,IAAW,oBAAoB,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,2BAA2B,CAAC;KACvE;AAED;;;;;AAKG;IACH,IACW,2BAA2B,CAAC,KAAa,EAAA;AAClD,QAAA,IAAI,CAAC,4BAA4B,GAAG,KAAK,CAAC;KAC3C;AAED,IAAA,IAAW,2BAA2B,GAAA;AACpC,QAAA,OAAO,IAAI,CAAC,4BAA4B,GAAG,CAAC;cACxC,IAAI,CAAC,4BAA4B;cACjC,CAAC,CAAC;KACP;AAYD;;;AAGG;IACH,IACW,kBAAkB,CAAC,KAAa,EAAA;AACzC,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;KAClC;AAED,IAAA,IAAW,kBAAkB,GAAA;QAC3B,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,OAAO,IAAI,CAAC,mBAAmB,CAAC;AACjC,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC;AAC3D,SAAA;KACF;AAsCD;;AAEG;AACH,IAAA,IACW,eAAe,GAAA;QACxB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAC9B;;;AAaD,IAAA,IAAW,aAAa,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC;KAClC;AAED,IAAA,IAAW,aAAa,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC;KAClC;AAUD,IAAA,IAAW,eAAe,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,cAAc,CAAC;KAClD;IAcD,IACY,cAAc,CAAC,SAAwC,EAAA;AACjE,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE;YACtC,IAAI,CAAC,SAAS,EAAE;AACd,gBAAA,MAAM,KAAK,CACT;oBACE,+DAA+D;oBAC/D,iEAAiE;oBACjE,wCAAwC;AACzC,iBAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CACZ,CAAC;AACH,aAAA;;AAGD,YAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC;AAEtC,YAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;YAEjC,IAAI,CAAC,eAAe,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC;YAE3D,IAAI,CAAC,eAAe,CAAC,WAAW;iBAC7B,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,yBAAyB,CAAC,EACzC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,EAC/B,SAAS,CAAC,CAAC,MAAM,KAAI;AACnB,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,gBAAA,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;AACpB,aAAC,CAAC,CACH;AACA,iBAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AACpB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACvC,aAAC,CAAC,CAAC;YAEL,IAAI,CAAC,eAAe,CAAC,IAAI;AACtB,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;iBAC/C,SAAS,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,cAAc,CAAC,oCAAoC,EAAE,CAAC;gBAC3D,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,gBAAA,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;AAClC,aAAC,CAAC,CAAC;YAEL,IAAI,CAAC,eAAe,CAAC,KAAK;AACvB,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;iBAC/C,SAAS,CAAC,MAAK;gBACd,IAAI,IAAI,CAAC,eAAe,EAAE;oBACxB,IAAI,CAAC,YAAY,EAAE,CAAC;AACrB,iBAAA;AACH,aAAC,CAAC,CAAC;AACN,SAAA;KACF;AAED,IAAA,IAAY,cAAc,GAAA;QACxB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;IAOD,IAGY,UAAU,CAAC,KAAiB,EAAA;AACtC,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,aAAa,EAAE,CAAC;AACtB,SAAA;KACF;AAED,IAAA,IAAY,UAAU,GAAA;QACpB,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;IAsDM,kBAAkB,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,MAAM,KAAK,CACT;gBACE,+DAA+D;gBAC/D,iEAAiE;gBACjE,wCAAwC;AACzC,aAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CACZ,CAAC;AACH,SAAA;KACF;IAEM,eAAe,GAAA;QACpB,IAAI,CAAC,sBAAsB,EAAE,CAAC;KAC/B;IAEM,WAAW,GAAA;QAChB,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC;AACtC,QAAA,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,CAAC;AAC1C,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IAEM,gBAAgB,GAAA;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,cAAc,CAAC,oCAAoC,EAAE,CAAC;QAC3D,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;AAEM,IAAA,aAAa,CAAC,KAAoB,EAAA;;;QAGvC,IAAI,KAAK,CAAC,GAAG,EAAE;YACb,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;AACpC,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC9C,MAAM,eAAe,GAAG,aAAa,KAAA,IAAA,IAAb,aAAa,KAAb,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,aAAa,CAAE,EAAE,CAAC;AAC1C,YAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAClD,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,eAAe,CACvC,CAAC;AAEF,YAAA,QAAQ,GAAG;AACT,gBAAA,KAAK,OAAO;AACV,oBAAA,IAAI,oBAAoB,EAAE;AACxB,wBAAA,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAC;AAE7C,wBAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;4BACzB,IAAI,CAAC,aAAa,EAAE,CAAC;AACtB,yBAAA;AAAM,6BAAA;4BACL,IAAI,CAAC,WAAW,EAAE,CAAC;AACpB,yBAAA;AACF,qBAAA;AAAM,yBAAA;AACL,wBAAA,IAAI,aAAa,EAAE;4BACjB,aAAa,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;AAC1D,yBAAA;AACF,qBAAA;oBAED,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,KAAK,CAAC,eAAe,EAAE,CAAC;oBACxB,MAAM;AAER,gBAAA,KAAK,KAAK;AACR,oBAAA,IAAI,oBAAoB,EAAE;AACxB,wBAAA,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAC;AAC9C,qBAAA;AAAM,yBAAA;AACL,wBAAA,IAAI,CAAC,cAAc,CAAC,oCAAoC,EAAE,CAAC;AAC5D,qBAAA;oBAED,IAAI,CAAC,aAAa,EAAE,CAAC;oBACrB,MAAM;AAER,gBAAA,KAAK,QAAQ;oBACX,IAAI,CAAC,aAAa,EAAE,CAAC;oBACrB,MAAM;AAER,gBAAA,KAAK,WAAW,CAAC;AACjB,gBAAA,KAAK,MAAM;oBACT,IAAI,CAAC,kBAAkB,EAAE,CAAC;oBAC1B,IACE,IAAI,CAAC,kBAAkB;AACrB,wBAAA,IAAI,CAAC,wBAAwB,CAAC,MAAM,GAAG,CAAC;AAC1C,wBAAA,IAAI,CAAC,kBAAkB,KAAK,CAAC,CAAC,EAC9B;AACA,wBAAA,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;AAC7B,qBAAA;AAAM,yBAAA;wBACL,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;AACvD,qBAAA;oBACD,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,oBAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;oBACnC,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,KAAK,CAAC,eAAe,EAAE,CAAC;oBACxB,MAAM;AAER,gBAAA,KAAK,SAAS,CAAC;AACf,gBAAA,KAAK,IAAI;oBACP,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC1B,oBAAA,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC,EAAE;wBAChC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,GAAG,CAAC,CAAC;AACpE,qBAAA;AAAM,yBAAA;wBACL,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;AACvD,qBAAA;oBACD,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,oBAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;oBACnC,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,KAAK,CAAC,eAAe,EAAE,CAAC;oBACxB,MAAM;AACT,aAAA;AACF,SAAA;KACF;IAEM,iBAAiB,GAAA;AACtB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,cAAc,CAAC,oCAAoC,EAAE,CAAC;QAC3D,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;IAEM,iBAAiB,CAAC,EAAU,EAAE,KAAiB,EAAA;AACpD,QAAA,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;AAEhC,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,IAAI,CAAC,aAAa,EAAE,CAAC;AACtB,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,WAAW,EAAE,CAAC;AACpB,SAAA;QAED,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;KACzB;AAEM,IAAA,iBAAiB,CAAC,EAAU,EAAA;AACjC,QAAA,IAAI,EAAE,KAAK,IAAI,CAAC,kBAAkB,EAAE;YAClC,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC1B,YAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;YAC7B,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;AACpC,SAAA;KACF;AAEM,IAAA,gBAAgB,CAAC,GAAgB,EAAA;QACtC,OAAO,GAAG,KAAK,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;KACvE;AAEO,IAAA,iBAAiB,CAAC,UAAkB,EAAA;AAC1C,QAAA,MAAM,OAAO,GACX,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAEjE,QAAA,IAAI,OAAO,EAAE;;AAEX,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;AAC7B,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,SAAS,CAAC;AACtC,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACxB,oBAAA,YAAY,EAAE,SAAS;AACxB,iBAAA,CAAC,CAAC;AACJ,aAAA;AAED,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACzB,IAAI,CAAC,aAAa,EAAE,CAAC;AACtB,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,WAAW,EAAE,CAAC;AACpB,aAAA;AAED,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAC9B,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;YAEnC,OAAO;AACR,SAAA;QAED,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC,2BAA2B,CAAC;AAC3E,QAAA,MAAM,WAAW,GAAG,UAAU,KAAK,IAAI,CAAC,UAAU,CAAC;AAEnD,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;QAEpC,IAAI,YAAY,IAAI,WAAW,EAAE;YAC/B,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAE3B,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,EAAE;AACzC,iBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,iBAAA,SAAS,CAAC,CAAC,MAAM,KAAI;gBACpB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAW,KAAI;AAChD,oBAAA,OAAO,IAAI,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC;AACjD,iBAAC,CAAC,CAAC;AAEH,gBAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAE9B,gBAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACvC,oBAAA,MAAM,MAAM,GAAgC;AAC1C,wBAAA,SAAS,EAAE,CAAG,EAAA,IAAI,CAAC,aAAa,CAAA,MAAA,EAAS,CAAC,CAAE,CAAA;AAC5C,wBAAA,IAAI,EAAE,CAAC;qBACR,CAAC;AACF,oBAAA,OAAO,MAAM,CAAC;AAChB,iBAAC,CAAC,CAAC;AAEH,gBAAA,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,UAAU,CAAC;gBAE5C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC7D,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC1B,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAC9B,gBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,oBAAA,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;AAC7B,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;AAC9B,iBAAA;AAED,gBAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;gBAEnC,IAAI,IAAI,CAAC,MAAM,EAAE;;oBAEf,UAAU,CAAC,MAAK;AACd,wBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AACvB,wBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;wBACpC,IAAI,CAAC,4BAA4B,EAAE,CAAC;AACtC,qBAAC,CAAC,CAAC;AACJ,iBAAA;AAAM,qBAAA;oBACL,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,oBAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;AACpC,iBAAA;AACH,aAAC,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAC9B,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;AACpC,SAAA;KACF;IAEO,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACtE,YAAA,MAAM,eAAe,GAAmC;AACtD,gBAAA,WAAW,EAAE,SAAS;AACtB,gBAAA,MAAM,EAAE,CAAC;gBACT,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B,CAAC;AAEF,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAEvC,OAAO,eAAe,CAAC,MAAM,CAAC;AAC/B,SAAA;AAED,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAEvD,IAAI,MAAM,YAAY,KAAK,EAAE;AAC3B,YAAA,OAAO,EAAE,CAAC;AACR,gBAAA,KAAK,EAAE,MAAM;gBACb,UAAU,EAAE,MAAM,CAAC,MAAM;AAC1B,aAAA,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CACtB,GAAG,CAAC,CAAC,KAAK,KAAI;YACZ,OAAO;gBACL,KAAK;gBACL,UAAU,EAAE,KAAK,CAAC,MAAM;aACzB,CAAC;SACH,CAAC,CACH,CAAC;KACH;IAEO,mBAAmB,GAAA;QACzB,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;AACpC,YAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;AACnC,SAAA;KACF;AAED;;AAEG;AACK,IAAA,gBAAgB,CAAC,UAAkB,EAAA;AACzC,QAAA,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,UAAU,CAAC;AACzD,aAAA,iBAAiB,EAAE;AACnB,aAAA,IAAI,EAAE,CAAC;QACV,IAAI,CAAC,oBAAoB,EAAE;AACzB,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;QAED,IAAI,kBAAkB,GAAa,EAAE,CAAC;AACtC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC1D,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;AAC/D,iBAAA,QAAQ,EAAE;AACV,iBAAA,iBAAiB,EAAY,CAAC;AACjC,YAAA,MAAM,mBAAmB,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAEvD,IAAI,MAAM,GAAG,CAAC,CAAC;AACf,YAAA,IAAI,KAAa,CAAC;AAClB,YAAA,OACE,CAAC,KAAK,GAAG,mBAAmB,CAAC,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,EACxE;AACA,gBAAA,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;AACpE,gBAAA,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC;AACnC,gBAAA,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAC/D,aAAA;AACF,SAAA;;QAGD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC;KACzC;AAEO,IAAA,sBAAsB,CAAC,EAAU,EAAA;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC;;;AAGvE,QAAA,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAClD,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,MAAM,CAAC;AACnC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACxB,gBAAA,YAAY,EAAE,MAAM;AACrB,aAAA,CAAC,CAAC;AACJ,SAAA;KACF;IAEO,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;AACzC,gBAAA,WAAW,EAAE,KAAK;AAClB,gBAAA,mBAAmB,EAAE,IAAI;gBACzB,YAAY,EAAE,IAAI,CAAC,YAAY;AAChC,aAAA,CAAC,CAAC;AAEH,YAAA,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAEhD,YAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACnB,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;YACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;AACrC,SAAA;KACF;IAEO,aAAa,GAAA;QACnB,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KACpC;IAEO,mBAAmB,GAAA;QACzB,MAAM,aAAa,GACjB,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;;;AAGzD,QAAA,IAAI,aAAa,EAAE;YACjB,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AAC3D,SAAA;KACF;IAEO,sBAAsB,GAAA;AAC5B,QAAA,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;KAC/C;IAEO,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;QACpC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,4BAA4B,EAAE,CAAC;AACpC,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KACpC;IAEO,sBAAsB,GAAA;AAC5B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;AAE9C,QAAAD,SAAmB,CAAC,OAAO,EAAE,SAAS,CAAC;AACpC,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACnC,aAAA,SAAS,CAAC,CAAC,KAAoB,KAAI;AAClC,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC5B,SAAC,CAAC,CAAC;AAEL,QAAAA,SAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC;AAClC,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,MAAK;;YAEd,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,gBAAA,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAClC,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,UAAU,EACf,CAAC,CAAC,IAAI,CAAC,eAAe,CACvB,CAAC;AACH,aAAA;AACH,SAAC,CAAC,CAAC;KACN;IAEO,cAAc,GAAA;QACpB,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxC,YAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;AAC1B,SAAA;KACF;IAEO,aAAa,GAAA;;;AAGnB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAEjE,YAAA,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAClC,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,UAAU,EACf,CAAC,CAAC,IAAI,CAAC,eAAe,CACvB,CAAC;YAEF,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;gBAC7C,cAAc,EAAE,sBAAsB,CAAC,QAAQ;AAC/C,gBAAA,aAAa,EAAE,IAAI;AACnB,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,SAAS,EAAE,OAAO;AAClB,gBAAA,mBAAmB,EAAE,MAAM;AAC5B,aAAA,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACxB,SAAA;KACF;IAEO,cAAc,GAAA;QACpB,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;AAC1B,SAAA;KACF;IAEO,iBAAiB,GAAA;;QAEvB,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;AACrC,SAAA;QAED,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa;AACvC,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACnC,iBAAA,SAAS,CAAC,CAAC,OAA+B,KAAI;gBAC7C,QAAQ,OAAO,CAAC,IAAI;oBAClB,KAAK,0BAA0B,CAAC,aAAa;wBAC3C,IAAI,CAAC,aAAa,EAAE,CAAC;wBACrB,MAAM;oBACR,KAAK,0BAA0B,CAAC,kBAAkB;;wBAEhD,UAAU,CAAC,MAAK;;4BAEd,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,gCAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AACxB,6BAAA;AACH,yBAAC,CAAC,CAAC;wBACH,MAAM;AACT,iBAAA;AACH,aAAC,CAAC,CAAC;AACN,SAAA;KACF;IAEO,4BAA4B,GAAA;;QAElC,UAAU,CAAC,MAAK;YACd,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,gBAAA,IAAI,CAAC,wBAAwB;oBAC3B,IAAI,CAAC,cAAc,CAAC,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAChE,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,EAAE,KAAI;oBAC3C,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1C,iBAAC,CAAC,CAAC;gBACH,IAAI,CAAC,eAAe,EAAE,CAAC;AACxB,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAEO,gBAAgB,GAAA;QACtB,OAAO,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;KAC/D;IAEO,kBAAkB,GAAA;AACxB,QAAA,IAAI,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,cAAc,CAAC,cAAc,CAChC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,kBAAkB,CAAC,EACtD,mCAAmC,CACpC,CAAC;AACH,SAAA;KACF;IAEO,eAAe,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,cAAc,CAAC,WAAW,CAC7B,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,kBAAkB,CAAC,EACtD,mCAAmC,CACpC,CAAC;YACF,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC5B,SAAA;KACF;;qHA12BU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,6BAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAHxB,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,YAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,aAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,aAAA,EAAA,eAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAAA,CAAC,6BAA6B,CAAC,EA0Q5B,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,6BAA6B,EALnC,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,6BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,6BAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,EA6DX,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,EAKX,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAU,6BCtYpB,+0IA6IA,EAAA,MAAA,EAAA,CAAA,45CAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,YAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,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,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAAE,EAAA,CAAA,mBAAA,EAAA,oCAAA,EAAAC,qCAAA,EAAA,YAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FD3Ea,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,aAGjB,CAAC,6BAA6B,CAAC,EACzB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+0IAAA,EAAA,MAAA,EAAA,CAAA,45CAAA,CAAA,EAAA,CAAA;;;8BAiY5C,QAAQ;;yBApXJ,cAAc,EAAA,CAAA;sBADpB,KAAK;gBASK,IAAI,EAAA,CAAA;sBADd,KAAK;gBAeK,YAAY,EAAA,CAAA;sBADtB,KAAK;gBAeK,kBAAkB,EAAA,CAAA;sBAD5B,KAAK;gBAcC,cAAc,EAAA,CAAA;sBADpB,KAAK;gBAQK,aAAa,EAAA,CAAA;sBADvB,KAAK;gBAcC,YAAY,EAAA,CAAA;sBADlB,KAAK;gBAQK,kBAAkB,EAAA,CAAA;sBAD5B,KAAK;gBAkBK,MAAM,EAAA,CAAA;sBADhB,KAAK;gBAqBK,oBAAoB,EAAA,CAAA;sBAD9B,KAAK;gBAgBK,2BAA2B,EAAA,CAAA;sBADrC,KAAK;gBAmBC,aAAa,EAAA,CAAA;sBADnB,KAAK;gBAQK,kBAAkB,EAAA,CAAA;sBAD5B,KAAK;gBAkBC,aAAa,EAAA,CAAA;sBADnB,KAAK;gBAQC,kBAAkB,EAAA,CAAA;sBADxB,KAAK;gBASC,mBAAmB,EAAA,CAAA;sBADzB,KAAK;gBAQC,QAAQ,EAAA,CAAA;sBADd,MAAM;gBAQA,aAAa,EAAA,CAAA;sBADnB,MAAM;gBAOI,eAAe,EAAA,CAAA;sBADzB,MAAM;gBAUA,WAAW,EAAA,CAAA;sBADjB,MAAM;gBAqCC,2BAA2B,EAAA,CAAA;sBAJlC,SAAS;gBAAC,IAAA,EAAA,CAAA,6BAA6B,EAAE;AACxC,wBAAA,IAAI,EAAE,WAAW;AACjB,wBAAA,MAAM,EAAE,KAAK;qBACd,CAAA;gBAIW,cAAc,EAAA,CAAA;sBADzB,YAAY;uBAAC,6BAA6B,CAAA;gBA0DnC,kBAAkB,EAAA,CAAA;sBAHzB,SAAS;gBAAC,IAAA,EAAA,CAAA,oBAAoB,EAAE;AAC/B,wBAAA,IAAI,EAAE,WAAW;qBAClB,CAAA;gBAMW,UAAU,EAAA,CAAA;sBAHrB,SAAS;gBAAC,IAAA,EAAA,CAAA,YAAY,EAAE;AACvB,wBAAA,IAAI,EAAE,UAAU;qBACjB,CAAA;;;ME5VU,qBAAqB,CAAA;;kHAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,iBAnB9B,wBAAwB;QACxB,6BAA6B;AAC7B,QAAA,qCAAqC,aAGrC,YAAY;QACZ,WAAW;QACX,cAAc;QACd,sBAAsB;QACtB,aAAa;QACb,WAAW;QACX,wBAAwB;QACxB,gBAAgB;QAChB,gBAAgB;QAChB,cAAc;QACd,aAAa,CAAA,EAAA,OAAA,EAAA,CAEL,wBAAwB,EAAE,6BAA6B,CAAA,EAAA,CAAA,CAAA;AAEtD,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,EAfvB,OAAA,EAAA,CAAA;YACP,YAAY;YACZ,WAAW;YACX,cAAc;YACd,sBAAsB;YACtB,aAAa;YACb,WAAW;YACX,wBAAwB;YACxB,gBAAgB;YAChB,gBAAgB;YAChB,cAAc;YACd,aAAa;SACd,CAAA,EAAA,CAAA,CAAA;2FAGU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBArBjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,wBAAwB;wBACxB,6BAA6B;wBAC7B,qCAAqC;AACtC,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,cAAc;wBACd,sBAAsB;wBACtB,aAAa;wBACb,WAAW;wBACX,wBAAwB;wBACxB,gBAAgB;wBAChB,gBAAgB;wBAChB,cAAc;wBACd,aAAa;AACd,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,wBAAwB,EAAE,6BAA6B,CAAC;iBACnE,CAAA;;;ACDD,MAAM,2BAA2B,GAAG;AAClC,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,wBAAwB,CAAC;AACvD,IAAA,KAAK,EAAE,IAAI;CACZ,CAAC;AAEF,IAAI,QAAQ,GAAG,CAAC,CAAC;MASJ,wBAAwB,CAAA;IA0MnC,WACU,CAAA,cAAiC,EACjC,KAAiB,EACjB,SAA0B,EAC1B,QAAkB,EACP,eAAwC,EACvC,QAA0B,EAAA;AALtC,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAmB;AACjC,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;AACjB,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAiB;AAC1B,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AACP,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAyB;AACvC,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAkB;AAjHhD;;AAEG;AAEI,QAAA,IAAA,CAAA,qBAAqB,GAAyC,IAAI,YAAY,EAA0B,CAAC;AAMzG,QAAA,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;AAEvB,QAAA,IAA2B,CAAA,2BAAA,GAAG,CAAC,CAAC;AAyDhC,QAAA,IAAY,CAAA,YAAA,GAAG,SAAS,CAAC;AAkBxB,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,OAAO,EAAQ,CAAC;AAE3B,QAAA,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;AAE3B,QAAA,IAAe,CAAA,eAAA,GAAG,IAAI,CAAC;AAIvB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAQ,CAAC;AAIpC,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAElB,QAAA,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;;;QA8G3B,IAAA,CAAA,QAAQ,GAAG,CAAC,KAA6B,KAAM,GAAC,CAAC;;AAGjD,QAAA,IAAA,CAAA,SAAS,GAAG,MAAK,GAAG,CAAC;QAnG1B,IAAI,CAAC,cAAc,EAAE,CAAC;AAEtB,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,WAAW,EAAE,CAAC;KACnD;AA3MD;;;;;AAKG;IACH,IACW,cAAc,CAAC,KAAa,EAAA;AACrC,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,eAAe,EAAE;AAClC,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YAE3C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAC3C,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,eAAe,CACnD,CAAC;AAEF,YAAA,IAAI,CAAC,mCAAmC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAChE,SAAA;KACF;AAED,IAAA,IAAW,cAAc,GAAA;QACvB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;AAED;;;AAGG;IACH,IACW,QAAQ,CAAC,UAAmB,EAAA;QACrC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5B,IAAI,CAAC,UAAU,EAAE;YACf,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC1B,SAAA;AAED,QAAA,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC;AAE5B,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KACpC;AAED,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;AASD;;;AAGG;IACH,IACW,gBAAgB,CAAC,gBAAyB,EAAA;AACnD,QAAA,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;QAE1C,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;AAED,IAAA,IAAW,gBAAgB,GAAA;QACzB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KAC/B;AAED;;;AAGG;IACH,IACW,oBAAoB,CAAC,KAAe,EAAA;;AAE7C,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,YAAA,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC3C,SAAA;AAED,QAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;QACnC,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;AAED,IAAA,IAAW,oBAAoB,GAAA;QAC7B,OAAO,IAAI,CAAC,qBAAqB,CAAC;KACnC;IAmBD,IAAW,eAAe,CAAC,UAAkC,EAAA;QAC3D,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,EAAE;AAC7D,YAAA,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE;gBACjC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CACpC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,CAC9C,CAAC;AAEF,gBAAA,IAAI,UAAU,EAAE;oBACd,UAAU,GAAG,UAAU,CAAC;AACzB,iBAAA;AACF,aAAA;AAED,YAAA,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC;AAEnC,YAAA,IAAI,CAAC,mCAAmC,CAAC,UAAU,CAAC,CAAC;AAErD,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAE7D,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACzB,gBAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBAC1B,IAAI,CAAC,SAAS,EAAE,CAAC;AAEjB,gBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC7C,aAAA;;;AAID,YAAA,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AACpE,gBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;AACzC,aAAA;AAED,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAE7B;;;;;AAKG;AACJ,SAAA;aAAM,IACL,IAAI,CAAC,eAAe;AACpB,aAAC,EAAE,IAAI,CAAC,SAAS,YAAY,OAAO,CAAC,IAAI,UAAU,KAAK,IAAI,CAAC,EAC7D;AACA,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC9B,SAAA;KACF;AAED,IAAA,IAAW,eAAe,GAAA;QACxB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAC9B;AAqDD;;;AAGG;IACI,QAAQ,GAAA;QACb,IAAI,CAAC,cAAc,EAAE,CAAC;AAEtB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAChC,SAAuC,EACvC,IAAI,CACL,CAAC;AAEF,QAAA,IAAI,CAAC,OAAO,GAAG,2BAA2B,QAAQ,EAAE,EAAE,CAAC;QAEvD,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;AACrC,SAAA;AAAM,aAAA;AACL;;;AAGG;AACH,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC9B,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC5B,SAAA;QAED,IAAI,CAAC,wBAAwB,CAAC,YAAY;AACvC,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACnC,aAAA,SAAS,CAAC,CAAC,QAAQ,KAAI;AACtB,YAAA,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AACxC,gBAAA,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;AACjC,aAAA;AACH,SAAC,CAAC,CAAC;AAEL,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC1B,SAAA;KACF;IAEM,eAAe,GAAA;;QAEpB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;gBAChD,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC;gBACtD,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,gBAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;AACrC,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;AAED;;;AAGG;IACI,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;KAC/B;AAED;;;AAGG;IACI,kBAAkB,GAAA;QACvB,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;AAED;;;;;AAKG;AACI,IAAA,iBAAiB,CAAC,UAA0C,EAAA;QACjE,IAAI,UAAU,CAAC,YAAY,EAAE;YAC3B,IAAI,CAAC,UAAU,CACb,IAAI,CAAC,SAAS,CAAC,IAAI,CACjB,CAAC,WAAW,KAAK,WAAW,CAAC,IAAI,KAAK,UAAU,CAAC,YAAY,CAAC,IAAI,CACnE,CACF,CAAC;AACH,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC5B,SAAA;KACF;AASM,IAAA,gBAAgB,CAAC,EAA2C,EAAA;AACjE,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAEM,IAAA,iBAAiB,CAAC,EAAc,EAAA;AACrC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;;AAGM,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AACvC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC1B;AAEM,IAAA,QAAQ,CAAC,OAAwB,EAAA;QACtC,IAAI,OAAO,CAAC,KAAK,EAAE;YACjB,IACE,CAAC,IAAI,CAAC,oBAAoB;AACxB,gBAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC;AACpC,gBAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC3D,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EACtE;AACA,gBAAA,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;AACrC,aAAA;AACF,SAAA;QACD,OAAO;KACR;AAEM,IAAA,UAAU,CAAC,KAA6B,EAAA;AAC7C,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KACpC;IAEO,iBAAiB,GAAA;QACvB,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAE5B,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;QAE1B,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC;AAEzD,QAAA,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC;AAChC,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,aAAA,SAAS,CAAC,CAAC,KAAiB,KAAI;AAC/B,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACtE,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;AACrC,SAAC,CAAC,CAAC;AAEL,QAAA,SAAS,CAAC,WAAW,EAAE,SAAS,CAAC;AAC9B,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,aAAA,SAAS,CAAC,CAAC,KAAoB,KAAI;AAClC,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACtE,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;AACrC,SAAC,CAAC,CAAC;KACN;IAEO,iBAAiB,CACvB,QAAgC,EAChC,QAAgC,EAAA;QAEhC,IAAI,QAAQ,IAAI,QAAQ,EAAE;AACxB,YAAA,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC;AACxC,SAAA;;;;AAKD,QAAA,OAAO,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC;KAC/B;IAEO,cAAc,CACpB,CAAyB,EACzB,CAAyB,EAAA;AAEzB,QAAA,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC;KAC/C;IAEO,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;KACtB;IAEO,cAAc,GAAA;;AACpB;;;;;;AAMG;AACH,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK;;QAEzB,IAAI,CAAC,SAAS,CAAE,MAAc,CAAC,mBAAmB,CAAC,cAAc,EAAE,CAAC,CACrE,CAAC;;;QAIF,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;AAC3D,YAAA,IAEI,MAAA,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAC1B,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,CAAC,gCAAgC,CAAC,EACxD;AACA,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,gBAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;AACrC,aAAA;AACF,SAAA;;AAGD,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC1B;;;AAGG;YACH,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,OAAY,KAAI;gBACtC,OAAO,OAAO,CAAC,QAAQ,CAAC;gBACxB,OAAO,OAAO,CAAC,SAAS,CAAC;gBACzB,OAAO,OAAO,CAAC,QAAQ,CAAC;AAC1B,aAAC,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,IAAI,CAAC,mCAAmC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAE/D,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE;AACrE,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CACpC,CAAC,OAA+B,KAAI;AAClC,gBAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9D,aAAC,CACF,CAAC;AACH,SAAA;KACF;AAEO,IAAA,mCAAmC,CACzC,eAAuC,EAAA;AAEvC,QAAA,IAAI,oBAA4B,CAAC;AACjC,QAAA,IAAI,mBAA2C,CAAC;AAEhD,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACtD,YAAA,IACE,CAAC,CAAC,IAAI,CAAC,kBAAkB;gBACvB,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC;AAC/C,gBAAA,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI;iBAChB,CAAC,IAAI,CAAC,kBAAkB;oBACvB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EACnD;gBACA,OAAO,CAAC,CAAC,CAAC;AACX,aAAA;AAAM,iBAAA;AACL,gBAAA,OAAO,CAAC,CAAC;AACV,aAAA;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,eAAe,EAAE;;;YAGnB,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CACvC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,KAAK,eAAe,CAAC,IAAI,CAAC,iBAAiB,EAAE,CACvE,CAAC;YACF,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;YAEnE,IAAI,oBAAoB,IAAI,CAAC,EAAE;gBAC7B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC;gBAC/C,kBAAkB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,mBAAmB,CAAC,CAAC;AACtD,aAAA;AACF,SAAA;AAED,QAAA,IAAI,CAAC,SAAS,GAAG,kBAAkB,CAAC;KACrC;IAEO,cAAc,GAAA;QACpB,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;gBAC5B,aAAa,EAAE,IAAI,CAAC,gBAAgB;AACpC,gBAAA,kBAAkB,EAChB,IAAI,CAAC,YAAY,KAAK,QAAQ;sBAC1B,IAAI,CAAC,qBAAqB;AAC5B,sBAAE,SAAS;AAChB,aAAA,CAAC,CAAC;AACJ,SAAA;KACF;;qHAxeU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAL,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;yGAAxB,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,EAAA,SAAA,EAHxB,CAAC,2BAA2B,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,oCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAgH7B,6BAA6B,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EA4DhC,WAAW,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAMX,WAAW,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvOrB,+gFA8EA,EAAA,MAAA,EAAA,CAAA,8yqBAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAM,wBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,6BAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,YAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAK,6BAAA,EAAA,QAAA,EAAA,mDAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAAC,EAAA,CAAA,mBAAA,EAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDtBa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,aAGlB,CAAC,2BAA2B,CAAC,EACvB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+gFAAA,EAAA,MAAA,EAAA,CAAA,8yqBAAA,CAAA,EAAA,CAAA;;;8BAiN5C,QAAQ;;8BACR,QAAQ;;yBAxMJ,qBAAqB,EAAA,CAAA;sBAD3B,KAAK;gBAUK,cAAc,EAAA,CAAA;sBADxB,KAAK;gBAsBK,QAAQ,EAAA,CAAA;sBADlB,KAAK;gBAsBC,uBAAuB,EAAA,CAAA;sBAD7B,KAAK;gBAQK,gBAAgB,EAAA,CAAA;sBAD1B,KAAK;gBAgBK,oBAAoB,EAAA,CAAA;sBAD9B,KAAK;gBAmBC,qBAAqB,EAAA,CAAA;sBAD3B,MAAM;gBAYA,kCAAkC,EAAA,CAAA;sBADxC,SAAS;uBAAC,6BAA6B,CAAA;gBA+DhC,gBAAgB,EAAA,CAAA;sBAJvB,SAAS;gBAAC,IAAA,EAAA,CAAA,kBAAkB,EAAE;AAC7B,wBAAA,IAAI,EAAE,WAAW;AACjB,wBAAA,MAAM,EAAE,IAAI;qBACb,CAAA;gBAOO,qBAAqB,EAAA,CAAA;sBAJ5B,SAAS;gBAAC,IAAA,EAAA,CAAA,uBAAuB,EAAE;AAClC,wBAAA,IAAI,EAAE,WAAW;AACjB,wBAAA,MAAM,EAAE,IAAI;qBACb,CAAA;;;ME/MU,qBAAqB,CAAA;;kHAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;mHAArB,qBAAqB,EAAA,YAAA,EAAA,CAbjB,wBAAwB,CAAA,EAAA,OAAA,EAAA,CAErC,YAAY;QACZ,WAAW;QACX,mBAAmB;QACnB,qBAAqB;QACrB,aAAa;QACb,aAAa;QACb,wBAAwB;QACxB,cAAc,aAEN,wBAAwB,CAAA,EAAA,CAAA,CAAA;AAEvB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,EAZvB,OAAA,EAAA,CAAA;YACP,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,qBAAqB;YACrB,aAAa;YACb,aAAa;YACb,wBAAwB;YACxB,cAAc;SACf,CAAA,EAAA,CAAA,CAAA;2FAGU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAdjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,wBAAwB,CAAC;AACxC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,qBAAqB;wBACrB,aAAa;wBACb,aAAa;wBACb,wBAAwB;wBACxB,cAAc;AACf,qBAAA;oBACD,OAAO,EAAE,CAAC,wBAAwB,CAAC;iBACpC,CAAA;;;ACvBD;;AAEG;MAEU,uBAAuB,CAAA;AAClC,IAAA,WAAA,CAAoB,QAAmB,EAAA;AAAnB,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;KAAI;AAEpC,IAAA,WAAW,CAAC,QAAoB,EAAA;QACrC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;KACpC;AAEM,IAAA,UAAU,CAAC,QAAoB,EAAA;QACpC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;KACnC;AAEM,IAAA,mBAAmB,CAAC,QAAoB,EAAA;QAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC;QACrE,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC;AACnE,QAAA,MAAM,QAAQ,GAAG,WAAW,GAAG,WAAW,CAAC;QAE3C,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,QAAQ;AAC/C,YAAA,QAAQ,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;QAE7B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAClC,WAAW,EACX,QAAQ,CAAC,QAAQ,EAAE,GAAG,IAAI,CAC3B,CAAC;KACH;AAEM,IAAA,iBAAiB,CAAC,QAAoB,EAAA;AAC3C,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;KAC7E;AAEO,IAAA,mBAAmB,CAAC,QAAoB,EAAA;QAC9C,OAAO,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,6BAA6B,CAAC,CAAC;KAC5E;AAEO,IAAA,qBAAqB,CAAC,QAAoB,EAAA;QAChD,OAAO,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;KACrE;AAEO,IAAA,oBAAoB,CAAC,QAAoB,EAAA;QAC/C,OAAO,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC;KACtE;AAEO,IAAA,UAAU,CAAC,QAAoB,EAAA;QACrC,OAAO,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;KACtD;;oHA5CU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;wHAAvB,uBAAuB,EAAA,CAAA,CAAA;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;;;ACuBX,MAAM,iBAAiB,GAAG,YAAY,CAAC;AACvC,MAAM,kBAAkB,GAAG,aAAa,CAAC;AACzC,MAAM,sBAAsB,GAAG,YAAY,CAAC;AAC5C,MAAM,eAAe,GAAG,KAAK,CAAC;AAC9B,MAAM,gBAAgB,GAAG,MAAM,CAAC;MA4BnB,kBAAkB,CAAA;AAsE7B,IAAA,WAAA,CACU,iBAAuC,EACvC,KAAiB,EACjB,aAAsC,EACtC,SAA4B,EAAA;AAH5B,QAAA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAsB;AACvC,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;AACjB,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;AACtC,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAmB;AAzEtC;;AAEG;AAEI,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAU,CAAC;AAEhD;;AAEG;AAEI,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAU,CAAC;AAEjD;;AAEG;AAEI,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAQ,CAAC;AAQ9C;;;;;;AAMG;AAEI,QAAA,IAAU,CAAA,UAAA,GAAW,sBAAsB,CAAC;AAEnD;;;AAGG;AAEI,QAAA,IAAY,CAAA,YAAA,GAAG,CAAC,CAAC;AAExB;;;AAGG;AAEI,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAEjB,QAAA,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AAEpB,QAAA,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC;AAUrB,QAAA,IAAY,CAAA,YAAA,GAAW,iBAAiB,CAAC;AAEzC,QAAA,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;AAC1B,QAAA,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;AAC1B,QAAA,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;AAExB,QAAA,IAAA,CAAA,aAAa,GAAoB,IAAI,OAAO,EAAU,CAAC;KAO3D;IAEG,QAAQ,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;AAC/B,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAC5D,CAAC,IAAyB,KAAI;AAC5B,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC9B,gBAAA,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;AACjC,aAAC,CACF,CAAC;AACH,SAAA;AAED,QAAA,IAAI,CAAC,aAAa;AACf,aAAA,YAAY,EAAE;aACd,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,oBAAoB,EAAE,CAAC;AAC7D,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,WAAW,CAAC,OAAsB,EAAA;AACvC,QAAA,IAAI,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE;YAC1C,QAAQ,IAAI,CAAC,UAAU;AACrB,gBAAA,KAAK,gBAAgB;AACnB,oBAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,oBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;oBACzB,MAAM;AACR,gBAAA,KAAK,eAAe;AAClB,oBAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,oBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;oBACxB,MAAM;AACR,gBAAA;AACE,oBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC1B,oBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;oBACzB,MAAM;AACT,aAAA;AACF,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,KAAK,EAAE,CAAC;AAClE,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;AAC1B,gBAAA,IAAI,CAAC,YAAY,GAAG,iBAAiB,CAAC;AACvC,aAAA;AACF,SAAA;AACD,QAAA,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;KAChC;IAEM,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAE9B,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAExC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAEvC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;KACzB;IAEM,UAAU,CAAC,KAAoB,EAAE,UAAkB,EAAA;QACxD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE;AAC1D,YAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;AAClC,SAAA;KACF;AAEM,IAAA,eAAe,CAAC,UAAkB,EAAA;;AAEvC,QAAA,IAAI,UAAU,EAAE;AACd,YAAA,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;AAChC,SAAA;AAED,QAAA,IAAI,UAAU,KAAK,IAAI,CAAC,UAAU,EAAE;AAClC,YAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC9B,SAAA;QACD,IAAI,CAAC,gBAAgB,GAAG,UAAU,IAAI,UAAU,KAAK,EAAE,CAAC;AACxD,QAAA,IAAI,UAAU,IAAI,UAAU,KAAK,EAAE,EAAE;YACnC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5C,SAAA;AAED,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACnC;AAEM,IAAA,iBAAiB,CAAC,UAAkB,EAAA;AACzC,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACrC;AAEM,IAAA,iBAAiB,CAAC,SAAkB,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;AAC/B,YAAA,IAAI,SAAS,EAAE;AACb,gBAAA,IAAI,CAAC,YAAY,GAAG,iBAAiB,CAAC;AACvC,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,YAAY,GAAG,kBAAkB,CAAC;AACxC,aAAA;AACF,SAAA;KACF;AAEM,IAAA,mBAAmB,CAAC,KAAqB,EAAA;AAC9C,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;YAC/B,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAEnD,YAAA,IACE,KAAK,CAAC,OAAO,KAAK,iBAAiB;gBACnC,IAAI,CAAC,iBAAiB,CAAC,OAAO,KAAK,mBAAmB,CAAC,EAAE,EACzD;AACA,gBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC9B,gBAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AAChC,aAAA;AACF,SAAA;KACF;AAEM,IAAA,iBAAiB,CAAC,KAAqB,EAAA;AAC5C,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;YAC/B,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAEjD,YAAA,IAAI,CAAC,iBAAiB;gBACpB,KAAK,CAAC,OAAO,KAAK,kBAAkB;oBACpC,IAAI,CAAC,iBAAiB,CAAC,OAAO,KAAK,mBAAmB,CAAC,EAAE,CAAC;AAE5D,YAAA,IACE,CAAC,KAAK,CAAC,OAAO,KAAK,kBAAkB;gBACnC,IAAI,CAAC,iBAAiB,CAAC,OAAO,KAAK,mBAAmB,CAAC,EAAE;gBAC3D,IAAI,CAAC,iBAAiB,CAAC,OAAO,KAAK,mBAAmB,CAAC,EAAE,EACzD;AACA,gBAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AAChC,aAAA;AACF,SAAA;KACF;IAEM,WAAW,GAAA;QAChB,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC/B,YAAA,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;AAC3C,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;KAC/B;AACO,IAAA,oBAAoB,CAAC,OAAsB,EAAA;AACjD,QAAA,QACE,OAAO,CAAC,YAAY,CAAC;AACrB,YAAA,OAAO,CAAC,YAAY,CAAC,CAAC,aAAa,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC,YAAY,EAC1E;KACH;AAEO,IAAA,wBAAwB,CAAC,OAAsB,EAAA;AACrD,QAAA,QACE,OAAO,CAAC,YAAY,CAAC;AACrB,YAAA,OAAO,CAAC,YAAY,CAAC,CAAC,aAAa,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC,YAAY,EAC1E;KACH;IAEO,eAAe,GAAA;AACrB,QAAA,QACE,IAAI,CAAC,UAAU,KAAK,EAAE;AACtB,YAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,KAAK,mBAAmB,CAAC,EAAE;AACzD,YAAA,IAAI,CAAC,oBAAoB,EAAE,EAC3B;KACH;AAEO,IAAA,kBAAkB,CAAC,IAAyB,EAAA;AAClD,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;AAC/B,YAAA,IAAI,IAAI,KAAK,mBAAmB,CAAC,EAAE,EAAE;AACnC,gBAAA,IAAI,CAAC,YAAY,GAAG,kBAAkB,CAAC;AACxC,aAAA;AAAM,iBAAA,IAAI,IAAI,CAAC,YAAY,KAAK,iBAAiB,EAAE;AAClD,gBAAA,IAAI,CAAC,YAAY,GAAG,iBAAiB,CAAC;AACvC,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AAChC,aAAA;AACF,SAAA;AACD,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;KAC/B;IAEO,oBAAoB,GAAA;QAC1B,QACE,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;AACvD,YAAA,IAAI,CAAC,WAAW,KAAK,IAAI,EACzB;KACH;;+GA3PU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,gSAFlB,CAAC,uBAAuB,CAAC,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1DtC,utIA0HA,EDnFc,MAAA,EAAA,CAAA,0lJAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAT,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,YAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,EAAA,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,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAAS,EAAA,CAAA,mBAAA,EAAA,EAAA,UAAA,EAAA;QACV,OAAO,CAAC,YAAY,EAAE;AACpB,YAAA,KAAK,CACH,kBAAkB,EAClB,KAAK,CAAC;AACJ,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,KAAK,EAAE,CAAC;AACT,aAAA,CAAC,CACH;AACD,YAAA,KAAK,CACH,iBAAiB,EACjB,KAAK,CAAC;AACJ,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,KAAK,EAAE,MAAM;AACd,aAAA,CAAC,CACH;AACD,YAAA,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;SACxC,CAAC;KACH,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FAGU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBA1B9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAGP,aAAA,EAAA,iBAAiB,CAAC,IAAI,EACzB,UAAA,EAAA;wBACV,OAAO,CAAC,YAAY,EAAE;AACpB,4BAAA,KAAK,CACH,kBAAkB,EAClB,KAAK,CAAC;AACJ,gCAAA,OAAO,EAAE,CAAC;AACV,gCAAA,KAAK,EAAE,CAAC;AACT,6BAAA,CAAC,CACH;AACD,4BAAA,KAAK,CACH,iBAAiB,EACjB,KAAK,CAAC;AACJ,gCAAA,OAAO,EAAE,CAAC;AACV,gCAAA,KAAK,EAAE,MAAM;AACd,6BAAA,CAAC,CACH;AACD,4BAAA,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;yBACxC,CAAC;AACH,qBAAA,EACU,SAAA,EAAA,CAAC,uBAAuB,CAAC,EAAA,QAAA,EAAA,utIAAA,EAAA,MAAA,EAAA,CAAA,0lJAAA,CAAA,EAAA,CAAA;uMAO7B,WAAW,EAAA,CAAA;sBADjB,MAAM;gBAOA,YAAY,EAAA,CAAA;sBADlB,MAAM;gBAOA,WAAW,EAAA,CAAA;sBADjB,MAAM;gBAOA,UAAU,EAAA,CAAA;sBADhB,KAAK;gBAWC,UAAU,EAAA,CAAA;sBADhB,KAAK;gBAQC,YAAY,EAAA,CAAA;sBADlB,KAAK;gBAQC,QAAQ,EAAA,CAAA;sBADd,KAAK;gBAaC,eAAe,EAAA,CAAA;sBADrB,KAAK;;;ME7FK,eAAe,CAAA;;4GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;6GAAf,eAAe,EAAA,YAAA,EAAA,CAZX,kBAAkB,CAAA,EAAA,OAAA,EAAA,CAE/B,YAAY;QACZ,iBAAiB;QACjB,wBAAwB;QACxB,WAAW;QACX,aAAa;QACb,cAAc;QACd,WAAW,aAEH,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAEjB,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,EAXjB,OAAA,EAAA,CAAA;YACP,YAAY;YACZ,iBAAiB;YACjB,wBAAwB;YACxB,WAAW;YACX,aAAa;YACb,cAAc;YACd,WAAW;SACZ,CAAA,EAAA,CAAA,CAAA;2FAGU,eAAe,EAAA,UAAA,EAAA,CAAA;kBAb3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,kBAAkB,CAAC;AAClC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,iBAAiB;wBACjB,wBAAwB;wBACxB,WAAW;wBACX,aAAa;wBACb,cAAc;wBACd,WAAW;AACZ,qBAAA;oBACD,OAAO,EAAE,CAAC,kBAAkB,CAAC;iBAC9B,CAAA;;;MCnBY,yBAAyB,CAAA;IAC7B,SAAS,CAAC,EAAW,EAAE,aAAoC,EAAA;AAChE,QAAA,OAAO,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;KAC9B;;sHAHU,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;oHAAzB,yBAAyB,EAAA,IAAA,EAAA,uBAAA,EAAA,CAAA,CAAA;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,uBAAuB;iBAC9B,CAAA;;;ACCD;;;AAGG;MACU,yCAAyC,CAAA;AASrD;;ACFD;;;AAGG;MAOU,oCAAoC,CAAA;AAsB/C,IAAA,WAAA,CACS,aAA+B,EAC/B,OAAkD,EACjD,cAAiC,EAAA;AAFlC,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;AAC/B,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAA2C;AACjD,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAmB;AAxB3C;;;AAGG;AACI,QAAA,IAAA,CAAA,QAAQ,GAAkB,IAAI,OAAO,EAAE,CAAC;AAIxC,QAAA,IAAc,CAAA,cAAA,GAAc,EAAE,CAAC;AAC/B,QAAA,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;AAEzB,QAAA,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AACpB,QAAA,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AACrB,QAAA,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AAIrB,QAAA,IAAM,CAAA,MAAA,GAAG,CAAC,CAAC;AACX,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAQ,CAAC;KAOxC;IAEG,QAAQ,GAAA;QACb,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QAE7C,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACrC,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;IAEM,WAAW,GAAA;QAChB,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAE3B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;KAC/B;IAEM,gBAAgB,GAAA;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACtB;IAEM,QAAQ,GAAA;QACb,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;;;AAIjD,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AAC7B,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AAC1D,SAAA;QAED,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAE5B,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KACpC;AAEM,IAAA,SAAS,CAAC,YAAiB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,QAAQ,EAAE;YACxC,IAAI,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;AACzD,SAAA;KACF;IAEM,YAAY,CAAC,cAAuB,EAAE,YAAiB,EAAA;QAC5D,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;;;QAIrD,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAEjD,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,QAAQ,EAAE;AACxC,YAAA,IAAI,cAAc,EAAE;AAClB,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;gBAC3B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAC9C,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,cAAc,EAAE;gBAClB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAC9C,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACnC,aAAA;AACF,SAAA;QAED,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;AAEM,IAAA,aAAa,CAAC,UAAkB,EAAA;AACrC,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;IAEM,SAAS,GAAA;AACd,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;AAE/B,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AAC7B,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC;AAC7D,SAAA;QAED,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;IAEM,iBAAiB,GAAA;QACtB,IAAI,CAAC,mBAAmB,EAAE,CAAC;;;QAI3B,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAE1B,YAAA,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,KAAI;AAC5B,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAE7C,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAE5B,gBAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC7B,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;IAEM,IAAI,GAAA;QACT,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAC9B,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAC3B,CAAC,QAAQ,EAAE,KAAK,MAAM;YACpB,KAAK;YACL,QAAQ;SACT,CAAC,CACH,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;YACd,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;kBAClE,CAAC,CAAC;kBACF,CAAC,CAAC;AACR,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KACxC;IAEO,iBAAiB,GAAA;QACvB,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAE3B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAExB,QAAA,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,KAAI;AAC5B,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,YAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC5B,SAAC,CAAC,CAAC;KACJ;IAEO,6BAA6B,GAAA;AACnC,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,CAC1B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK;AACtC,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YAC7B,IAAI;AACL,SAAA,CAAC,CACH,CAAC;KACH;AAEO,IAAA,aAAa,CACnB,cAAkE,EAAA;AAElE,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO;AACjC,aAAA,WAAW,CAAC;AACX,YAAA,WAAW,EAAE,OAAO;YACpB,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,EAAE;YACjC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;SACxC,CAAC;AACD,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,aAAA,SAAS,CAAC,CAAC,MAAM,KAAI;YACpB,cAAc,CAAC,MAAM,CAAC,CAAC;AAEvB,YAAA,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAChD,YAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC;YACnC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAEhC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAE5B,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;AACrC,SAAC,CAAC,CAAC;KACN;IAEO,oBAAoB,GAAA;QAC1B,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAC3C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CACtD,CAAC;AACH,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC;AAClC,SAAA;KACF;IAEO,mBAAmB,GAAA;QACzB,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;AACpC,YAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;AAClC,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC1B,SAAA;KACF;;iIAzMU,oCAAoC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,yCAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApC,oCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oCAAoC,wEC1BjD,4xKA2JA,EAAA,MAAA,EAAA,CAAA,uMAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAAX,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAa,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,cAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,IAAA,EAAAb,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,YAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,cAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,eAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAO,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAAM,EAAA,CAAA,mBAAA,EAAA,uBAAA,EAAAC,yBAAA,EAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDjIa,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBANhD,SAAS;+BACE,kCAAkC,EAAA,eAAA,EAG3B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4xKAAA,EAAA,MAAA,EAAA,CAAA,uMAAA,CAAA,EAAA,CAAA;;;AEnBjD;;;AAGG;MACU,oCAAoC,CAAA;AAShD;;ACLD;;;AAGG;MAWU,+BAA+B,CAAA;AAqC1C,IAAA,WAAA,CACS,aAA+B,EAC/B,OAA6C,EAC5C,cAAiC,EAAA;AAFlC,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;AAC/B,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAsC;AAC5C,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAmB;AArC3C;;;AAGG;AACI,QAAA,IAAA,CAAA,QAAQ,GAAkB,IAAI,OAAO,EAAE,CAAC;QAIxC,IAAA,CAAA,iBAAiB,GAAG;AACzB,YAAA,WAAW,EAAE;AACX,gBAAA;AACE,oBAAA,EAAE,EAAE,IAAI;AACR,oBAAA,KAAK,EAAE,sBAAsB;AAC7B,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,YAAY,EAAE,MAAM;AACrB,iBAAA;AACD,gBAAA;AACE,oBAAA,EAAE,EAAE,IAAI;AACR,oBAAA,KAAK,EAAE,sBAAsB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,YAAY,EAAE,MAAM;AACrB,iBAAA;AACF,aAAA;SACF,CAAC;AAEK,QAAA,IAAc,CAAA,cAAA,GAAU,EAAE,CAAC;AAC3B,QAAA,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AACtB,QAAA,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;AAEzB,QAAA,IAAa,CAAA,aAAA,GAAuC,EAAE,CAAC;AAEtD,QAAA,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;AACd,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAQ,CAAC;KAMxC;IAEG,eAAe,GAAA;QACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QAC7C,IAAI,CAAC,QAAQ,EAAE,CAAC;KACjB;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;KAC/B;IAEM,gBAAgB,GAAA;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACtB;IAEM,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1C,MAAM,aAAa,GAAU,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAExD,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK;AAC7B,kBAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;oBAC9B,OAAO;AACL,wBAAA,KAAK,EAAE,IAAI;AACX,wBAAA,QAAQ,EAAE,KAAK;qBAChB,CAAC;AACJ,iBAAC,CAAC;kBACF,EAAE,CAAC;YAEP,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;gBAC1B,MAAM,cAAc,GAClB,IAAI,CAAC,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC,KAAK,CAAC;AAE3C,gBAAA,MAAM,cAAc,GAAY,KAAK,CAAC,OAAO,CAC3C,IAAI,CAAC,OAAO,CAAC,YAAY,CAC1B,CAAC;gBACF,MAAM,wBAAwB,GAC5B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CACjC,CAAC,WAAgB,KAAK,WAAW,KAAK,IAAI,CAAC,KAAK,CACjD,IAAI,CAAC,CAAC;AAET,gBAAA,IAAI,cAAc,KAAK,cAAc,IAAI,wBAAwB,CAAC,EAAE;AAClE,oBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACrB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC3C,oBAAA,IACE,aAAa,CAAC,SAAS,CACrB,CAAC,YAAY,KAAK,YAAY,CAAC,KAAK,KAAK,SAAS,CACnD,GAAG,CAAC,EACL;AACA,wBAAA,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAChE,qBAAA;AACF,iBAAA;AACH,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;YACnC,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;AACpC,SAAA;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACrC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,KAAI;AAClD,YAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAE7D,YAAA,IAAI,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC,MAAM,EAAE;AACzC,gBAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC5B,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC3B,aAAA;AACD,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;AACrC,SAAC,CAAC,CAAC;KACJ;IAEM,QAAQ,GAAA;QACb,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YACnC,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,gBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACvB,aAAA;AACH,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KACpC;AAEM,IAAA,SAAS,CAAC,YAAiB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,QAAQ,EAAE;YACxC,IAAI,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;AACzD,SAAA;KACF;IAEM,YAAY,CAAC,cAAuB,EAAE,YAAiB,EAAA;AAC5D,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,QAAQ,EAAE;;;AAGxC,YAAA,IAAI,cAAc,EAAE;AAClB,gBAAA,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC;gBAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC1B,oBAAA,IAAI,IAAI,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK,EAAE;AACrC,wBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACvB,qBAAA;AACH,iBAAC,CAAC,CAAC;gBACH,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACnC,oBAAA,IAAI,IAAI,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK,EAAE;AACrC,wBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACvB,qBAAA;AACH,iBAAC,CAAC,CAAC;gBACH,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CACpC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK,CAC5C,CAAC;gBACF,IAAI,CAAC,aAAa,GAAG;AACnB,oBAAA,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE;iBAC5D,CAAC;AACH,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,aAAa,GACjB,IAAI,CAAC,aAAa,CAAC;YACrB,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CACxC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK,CAC5C,CAAC;AACF,YAAA,MAAM,kBAAkB,GAAG,aAAa,CAAC,SAAS,CAChD,CAAC,YAAY,KAAK,YAAY,CAAC,KAAK,KAAK,aAAa,CACvD,CAAC;AAEF,YAAA,IAAI,cAAc,IAAI,kBAAkB,KAAK,CAAC,CAAC,EAAE;gBAC/C,aAAa,CAAC,IAAI,CAAC;AACjB,oBAAA,KAAK,EAAE,aAAa;oBACpB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,KAAK;AAC1C,iBAAA,CAAC,CAAC;AACJ,aAAA;AAAM,iBAAA,IAAI,CAAC,cAAc,IAAI,kBAAkB,KAAK,CAAC,CAAC,EAAE;AACvD,gBAAA,aAAa,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;AAC7C,aAAA;AAED,YAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;AACpC,SAAA;QACD,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KACpC;AAEM,IAAA,aAAa,CAAC,UAAkB,EAAA;;AAErC,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,EAAE;AAClC,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACrB,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;AAEM,IAAA,WAAW,CAAC,KAAY,EAAA;AAC7B,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AAEnC,QAAA,IAAI,UAAU,EAAE;AACd,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CACtC,UAAU,EACV,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;gBACjB,OAAO,IAAI,CAAC,KAAK,CAAC;aACnB,CAAC,CACH,CAAC;YAEF,IAAI,YAAY,YAAY,KAAK,EAAE;gBACjC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CACzB,CAAC,IAAI,KAAK,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAChD,CAAC;AACF,gBAAA,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAChC,aAAA;AAAM,iBAAA;AACL,gBAAA,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;oBAClC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CACzB,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAC1C,CAAC;AACF,oBAAA,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACjC,iBAAC,CAAC,CAAC;AACJ,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC/B,SAAA;KACF;IAEM,SAAS,GAAA;AACd,QAAA,MAAM,aAAa,GACjB,IAAI,CAAC,aAAa,CAAC;QAErB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAS,KAAI;AACxC,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBAErB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;;;AAIvC,gBAAA,IACE,aAAa,CAAC,SAAS,CACrB,CAAC,YAAY,KAAK,YAAY,CAAC,KAAK,KAAK,KAAK,CAC/C,GAAG,CAAC,EACL;oBACA,aAAa,CAAC,IAAI,CAAC;AACjB,wBAAA,KAAK,EAAE,KAAK;wBACZ,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK;AAClC,qBAAA,CAAC,CAAC;AACJ,iBAAA;AACF,aAAA;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KACpC;IAEM,eAAe,GAAA;AACpB,QAAA,MAAM,aAAa,GACjB,IAAI,CAAC,aAAa,CAAC;QACrB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,KAAa,KAAI;AAC9C,YAAA,IAAI,CAAC,QAAQ;AACX,gBAAA,aAAa,CAAC,SAAS,CACrB,CAAC,YAAY,KAAK,YAAY,CAAC,KAAK,KAAK,KAAK,CAC/C,KAAK,CAAC,CAAC,CAAC;AACb,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,KAAI;YAClD,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,gBAAA,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/D,aAAA;AACD,YAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAE7D,YAAA,IAAI,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC,MAAM,EAAE;AACzC,gBAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC5B,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC3B,aAAA;AAED,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;AACrC,SAAC,CAAC,CAAC;KACJ;AAEM,IAAA,cAAc,CAAC,IAAW,EAAA;AAC/B,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,YAAY,KAAI;AAC1C,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,KAAa,KAAI;AACtD,gBAAA,IAAI,YAAY,CAAC,QAAQ,KAAK,IAAI,EAAE;AAClC,oBAAA,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC;AAC5B,iBAAA;AACH,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;AAEhB,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KACpC;;4HA/RU,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAN,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAO,oCAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,+BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,oEC3B5C,0kKAmJA,EAAA,MAAA,EAAA,CAAA,uMAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAP,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAAmB,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,cAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAnB,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,YAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,cAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,eAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,GAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAO,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAAM,EAAA,CAAA,mBAAA,EAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDxHa,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAV3C,SAAS;+BAKE,8BAA8B,EAAA,eAAA,EAGvB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,0kKAAA,EAAA,MAAA,EAAA,CAAA,uMAAA,CAAA,EAAA,CAAA;;;AEvBjD;;AAEG;MAEU,uBAAuB,CAAA;AAC3B,IAAA,UAAU,CAAC,KAAiB,EAAA;QACjC,MAAM,OAAO,GACX,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;;;AAIzD,QAAA,IAAI,OAAO,EAAE;YACX,OAAO,CAAC,KAAK,EAAE,CAAC;AACjB,SAAA;KACF;;oHAVU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;wHAAvB,uBAAuB,EAAA,CAAA,CAAA;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;;;ACQX;;AAEG;MAEU,4BAA4B,CAAA;AADzC,IAAA,WAAA,GAAA;AA8FE;;;AAGG;AAEI,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAkC,CAAC;KAKzE;AA9FC;;;;AAIG;IACH,IACW,kBAAkB,CAAC,KAAa,EAAA;AACzC,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;KAClC;AAED,IAAA,IAAW,kBAAkB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,mBAAmB,IAAI,MAAM,CAAC;KAC3C;AAED;;;AAGG;IACH,IACW,kBAAkB,CAAC,KAAe,EAAA;AAC3C,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;KAClC;AAED,IAAA,IAAW,kBAAkB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,mBAAmB,IAAI,CAAC,MAAM,CAAC,CAAC;KAC7C;AAED;;;;;;;AAOG;IACH,IACW,MAAM,CAAC,KAAoC,EAAA;AACpD,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACtB;AAED,IAAA,IAAW,MAAM,GAAA;QACf,QACE,IAAI,CAAC,OAAO;AACZ,YAAA,oCAAoC,CAAC;gBACnC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;gBAC3C,aAAa,EAAE,IAAI,CAAC,aAAa;AAClC,aAAA,CAAC,EACF;KACH;;yHAzDU,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;6GAA5B,4BAA4B,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,aAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC,SAAS;8BAQD,YAAY,EAAA,CAAA;sBADlB,KAAK;gBASK,kBAAkB,EAAA,CAAA;sBAD5B,KAAK;gBAcK,kBAAkB,EAAA,CAAA;sBAD5B,KAAK;gBAkBK,MAAM,EAAA,CAAA;sBADhB,KAAK;gBAqBC,oBAAoB,EAAA,CAAA;sBAD1B,KAAK;gBAUC,2BAA2B,EAAA,CAAA;sBADjC,KAAK;gBAWC,aAAa,EAAA,CAAA;sBADnB,KAAK;gBAQC,kBAAkB,EAAA,CAAA;sBADxB,KAAK;gBAQC,WAAW,EAAA,CAAA;sBADjB,MAAM;;;ACxDH,MAAO,kBACX,SAAQ,4BAA4B,CAAA;AAoNpC,IAAA,WAAA,CACU,cAAiC,EACjC,UAAsB,EACtB,SAA0B,EACd,SAAoB,EAChC,OAAgC,EAChC,YAA6B,EAC7B,gBAAwC,EAC7B,eAAwC,EACxC,QAA0B,EAAA;AAE7C,QAAA,KAAK,EAAE,CAAC;AAVA,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAmB;AACjC,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AACtB,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAiB;AAE1B,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAyB;AAChC,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAiB;AAC7B,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAwB;AAC7B,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAyB;AACxC,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAkB;AA/K/C;;AAEG;AAEI,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAExB;;AAEG;AAEI,QAAA,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;AAe9B;;AAEG;AAEI,QAAA,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AAyC7B;;AAEG;AAEI,QAAA,IAAA,CAAA,QAAQ,GAA6C,IAAI,YAAY,EAAE,CAAC;AAyCxE,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,OAAO,EAA0B,CAAC;AAC/D,QAAA,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;AACvB,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,OAAO,EAAoB,CAAC;AAsClD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAQ,CAAC;AACpC,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,OAAO,EAAQ,CAAC;AAC3B,QAAA,IAAwB,CAAA,wBAAA,GAAG,KAAK,CAAC;;;QAgJlC,IAAA,CAAA,QAAQ,GAAG,CAAC,KAAY,KAAM,GAAC,CAAC;;AAEhC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAK,GAAG,CAAC;AA7H1B,QAAA,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;KAChC;AAtMD;;;;;AAKG;IACH,IACW,IAAI,CAAC,KAAY,EAAA;AAC1B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAEnB,QAAA,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YACpE,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC/D,SAAA;KACF;AAED,IAAA,IAAW,IAAI,GAAA;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;AAuCD;;;AAGG;IACH,IACW,UAAU,CAAC,KAA8B,EAAA;QAClD,MAAM,gBAAgB,GACpB,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC;AAEvD,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAE3B,QAAA,IAAI,gBAAgB,EAAE;YACpB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;;gBAEvC,UAAU,CAAC,MAAK;AACd,oBAAA,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,oBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;AACtC,iBAAC,CAAC,CAAC;AACJ,aAAA;AACF,SAAA;KACF;AAED,IAAA,IAAW,UAAU,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,WAAW,IAAI,UAAU,CAAC;KACvC;AAcD,IAAA,IAAW,MAAM,GAAA;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;IAED,IAAW,MAAM,CAAC,KAAiB,EAAA;;QAEjC,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAChD,YAAA,IAAI,CAAC,gBAAgB;iBAClB,SAAS,CAAC,6BAA6B,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;AACtE,iBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,iBAAA,SAAS,CAAC,CAAC,KAAK,KAAI;gBACnB,IAAI,CAAC,OAAO,GAAG;AACb,oBAAA;wBACE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,GAAG,KAAK,EAAE;AAC5C,qBAAA;iBACF,CAAC;AACF,gBAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;AACrC,aAAC,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;AACpC,SAAA;KACF;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;KACvC;IAED,IAAW,KAAK,CAAC,QAAe,EAAA;AAC9B,QAAA,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;AAEvB,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC1C,SAAA;AAED,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;IAMD,IAIY,0BAA0B,CAAC,KAAoC,EAAA;AACzE,QAAA,IAAI,CAAC,2BAA2B,GAAG,KAAK,CAAC;QACzC,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;AAED,IAAA,IAAY,0BAA0B,GAAA;QACpC,OAAO,IAAI,CAAC,2BAA2B,CAAC;KACzC;IAmDM,QAAQ,GAAA;QACb,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;gBAC5B,aAAa,EAAE,IAAI,CAAC,gBAAgB;gBACpC,eAAe,EAAE,IAAI,CAAC,cAAc;sBAChC,IAAI,CAAC,yBAAyB;AAChC,sBAAE,SAAS;gBACb,kBAAkB,EAAE,IAAI,CAAC,cAAc;AACrC,sBAAE,SAAS;sBACT,IAAI,CAAC,qBAAqB;AAC/B,aAAA,CAAC,CAAC;AACJ,SAAA;;QAGD,IAAI,IAAI,CAAC,QAAQ,EAAE;;;YAGjB,IAAI,CAAC,QAAQ,CAAC,cAAc;AACzB,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;iBACnC,SAAS,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;AACrC,aAAC,CAAC,CAAC;AACN,SAAA;KACF;IAEM,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC1B,SAAA;KACF;IAEM,WAAW,GAAA;QAChB,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;KAClC;IAEM,gBAAgB,GAAA;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACjB,SAAS,EAAE,CAAC,IAA8B,KACxC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;AACjC,SAAA,CAAC,CAAC;KACJ;AAEM,IAAA,6BAA6B,CAClC,MAAsC,EAAA;;QAGtC,IAAI,MAAM,CAAC,YAAY,EAAE;AACvB,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AACzC,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE;AACvC,YAAA,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACrB,SAAA;KACF;IAEM,kBAAkB,GAAA;QACvB,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;AAEM,IAAA,cAAc,CAAC,MAAkB,EAAA;QACtC,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;AACR,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;AAC1B,YAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;gBACvB,IAAI,CAAC,UAAU,EAAE,CAAC;AACnB,aAAA;;;YAID,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAI;gBACjC,OAAO,KAAK,CAAC,KAAK,CAAC;AACrB,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAErB,YAAA,IAAI,CAAC,uBAAuB,CAC1B,0BAA0B,CAAC,kBAAkB,CAC9C,CAAC;AACF,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3B,IAAI,CAAC,SAAS,EAAE,CAAC;AAClB,SAAA;KACF;IAEM,2BAA2B,GAAA;QAChC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC,MAAK;YAC1C,IAAI,CAAC,UAAU,EAAE,CAAC;AACpB,SAAC,CAAC,CAAC;KACJ;AAEM,IAAA,aAAa,CAAC,KAAoB,EAAA;;AAEvC,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE;YAChC,QAAQ,KAAK,CAAC,GAAG;AACf,gBAAA,KAAK,WAAW;AACd,oBAAA,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AAC/D,oBAAA,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;oBAChE,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,MAAM;AAER,gBAAA,KAAK,KAAK,CAAC;AACX,gBAAA,KAAK,QAAQ;AACX,oBAAA,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;oBAC/D,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC,MAAK;AAC1C,wBAAA,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;AAChE,qBAAC,CAAC,CAAC;oBACH,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,MAAM;AACT,aAAA;AACF,SAAA;KACF;AAEM,IAAA,UAAU,CAAC,KAAY,EAAA;AAC5B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,EAAE,CAAC;QAChC,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;AAQM,IAAA,gBAAgB,CAAC,EAAwB,EAAA;AAC9C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAEM,IAAA,iBAAiB,CAAC,EAAc,EAAA;AACrC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;;AAGM,IAAA,gBAAgB,CAAC,QAAiB,EAAA;QACvC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5B,IAAI,CAAC,QAAQ,EAAE;YACb,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC1B,SAAA;AAED,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KACpC;IAEM,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,0BAA0B,CAAC,KAAK,GAAG,SAAS,CAAC;AAClD,QAAA,IAAI,CAAC,0BAA0B,CAAC,cAAc,GAAG,SAAS,CAAC;KAC5D;;;;;IAMM,YAAY,CAAC,KAAoB,EAAE,KAAa,EAAA;;;AAGrD,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE;YAChC,QAAQ,KAAK,CAAC,GAAG;AACf,gBAAA,KAAK,OAAO;oBACV,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,MAAM;AACR,gBAAA,KAAK,WAAW,CAAC;AACjB,gBAAA,KAAK,WAAW,CAAC;AACjB,gBAAA,KAAK,MAAM;AACT,oBAAA,IAAI,KAAK,EAAE;AACT,wBAAA,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;AACvC,qBAAA;AAAM,yBAAA;AACL,wBAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;AACtC,qBAAA;oBACD,MAAM;gBACR,QAAQ;AACT,aAAA;AACF,SAAA;KACF;AAEM,IAAA,UAAU,CAAC,KAAoB,EAAA;;;AAGpC,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE;YAChC,QAAQ,KAAK,CAAC,GAAG;AACf,gBAAA,KAAK,KAAK,CAAC;AACX,gBAAA,KAAK,QAAQ;oBACX,IAAI,CAAC,eAAe,EAAE,CAAC;oBACvB,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,MAAM;AACR,gBAAA,KAAK,WAAW,CAAC;AACjB,gBAAA,KAAK,WAAW,CAAC;AACjB,gBAAA,KAAK,MAAM;;oBAET,IAAI,IAAI,CAAC,wBAAwB,EAAE;AACjC,wBAAA,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;wBAC5D,KAAK,CAAC,cAAc,EAAE,CAAC;AACxB,qBAAA;oBACD,MAAM;gBACR,QAAQ;AACT,aAAA;YAED,KAAK,CAAC,eAAe,EAAE,CAAC;AACzB,SAAA;KACF;IAEM,mBAAmB,GAAA;;QAExB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,uBAAuB,CAAC,0BAA0B,CAAC,aAAa,CAAC,CAAC;QACvE,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAC7B,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE;YAChC,gBAAgB;gBACd,IAAI,CAAC,0BAA0B,CAAC,KAAK;oBACrC,IAAI,CAAC,0BAA0B,CAAC,cAAc;wBAC5C,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACpE,SAAA;AAED,QAAA,IAAI,CAAC,UAAU,CACb,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAC,0BAA0B,CAAC,cAAc,CACvE,CAAC;AACF,QAAA,IAAI,CAAC,0BAA0B,CAAC,oCAAoC,EAAE,CAAC;KACxE;AAEM,IAAA,eAAe,CAAC,KAAkC,EAAA;;;AAGvD,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AACnC,SAAA;KACF;AAEO,IAAA,0BAA0B,CAAC,aAAqB,EAAA;;AACtD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;QAChC,MAAM,WAAW,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,cAAc,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,kBAAkB,KAAI,EAAE,CAAC;AAElE,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;AAC7B,YAAA,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC;AACtD,SAAA;AAED,QAAA,IAAI,mBAEgD,CAAC;AAErD,QAAA,IAAI,oBAEyC,CAAC;AAE9C,QAAA,IAAI,kBAE2C,CAAC;QAEhD,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACzC,mBAAmB,GAAG,yCAAyC,CAAC;YAChE,kBAAkB,GAAG,oCAAoC,CAAC;AAE1D,YAAA,oBAAoB,GAAG,IAAI,yCAAyC,EAAE,CAAC;AACvE,YAAA,oBAAoB,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AAClD,YAAA,oBAAoB,CAAC,WAAW,GAAG,CAAC,IAAI,KAAI;AAC1C,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC5B,OAAO,IAAI,CAAC,MAAM,CAAC;AACrB,aAAC,CAAC;AACH,SAAA;AAAM,aAAA;YACL,mBAAmB,GAAG,oCAAoC,CAAC;YAC3D,kBAAkB,GAAG,+BAA+B,CAAC;AAErD,YAAA,oBAAoB,GAAG,IAAI,oCAAoC,EAAE,CAAC;AAClE,YAAA,oBAAoB,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;AACvC,YAAA,oBAAoB,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC3C,SAAA;AAED,QAAA,oBAAoB,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;AAClE,QAAA,oBAAoB,CAAC,aAAa,GAAG,aAAa,CAAC;AACnD,QAAA,oBAAoB,CAAC,YAAY,GAAG,YAAY,CAAC;AACjD,QAAA,oBAAoB,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AAClD,QAAA,oBAAoB,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;AACxD,QAAA,oBAAoB,CAAC,UAAU,GAAG,WAAW,CAAC;AAE9C,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAChD,YAAA,SAAS,EAAE;AACT,gBAAA;AACE,oBAAA,OAAO,EAAE,mBAAmB;AAC5B,oBAAA,QAAQ,EAAE,oBAAoB;AAC/B,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,EAAE,OAAO;YACb,YAAY,EAAE,IAAI,CAAC,YAAY;AAChC,SAAA,CAAC,CAAC;KACJ;AAEM,IAAA,UAAU,CAAC,aAAqB,EAAA;;AACrC,QAAA,IAAI,MAAA,IAAI,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,EAAE;AACrC,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC;gBACpC,KAAK,EAAE,IAAI,CAAC,IAAI;AAChB,gBAAA,aAAa,EAAE,aAAa;gBAC5B,YAAY,EAAE,IAAI,CAAC,KAAK;AACzB,aAAA,CAAC,CAAC;AACJ,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;YAEhC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,0BAA0B,CAAC,aAAa,CAAC,CAAC;YAEvE,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAK;gBAC9D,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC1B,aAAC,CAAC,CAAC;YAEH,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,KAAI;AACnD,gBAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;AAClC,gBAAA,IAAI,SAAS,CAAC,MAAM,KAAK,MAAM,EAAE;oBAC/B,IAAI,aAAa,GAAU,EAAE,CAAC;oBAE9B,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACzC,wBAAA,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7D,qBAAA;AAAM,yBAAA;wBACL,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,SAAiB,KAAI;4BACjD,IACE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAc,KAAI;AACrC,gCAAA,OAAO,SAAS,CAAC,KAAK,KAAK,SAAS,CAAC;AACvC,6BAAC,CAAC,EACF;AACA,gCAAA,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,6BAAA;AACH,yBAAC,CAAC,CAAC;AACJ,qBAAA;AAED,oBAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAChC,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AAC/B,iBAAA;gBAED,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,gBAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;AACrC,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;AAEM,IAAA,aAAa,CAAC,IAAoC,EAAA;AACvD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC7B;AAEO,IAAA,aAAa,CAAC,IAAS,EAAA;AAC7B,QAAA,IAAI,aAAoB,CAAC;AAEzB,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE;AAChC,YAAA,aAAa,GAAG,CAAC,IAAI,CAAC,CAAC;AACxB,SAAA;AAAM,aAAA;AACL,YAAA,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC;;YAG3B,IACE,CAAC,IAAI,CAAC,UAAU;gBAChB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CACd,CAAC,YAAY,KACX,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAC1D,EACD;AACA,gBAAA,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,aAAA;YAED,IAAI,CAAC,eAAe,EAAE,CAAC;AACxB,SAAA;AAED,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;KAChC;IAEO,iBAAiB,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;IAEO,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;KACtB;IAEO,qBAAqB,GAAA;AAC3B,QAAA,IAAI,WAAW,GAAG,CAAC,IAAI,CAAC,eAAe;AACrC,cAAE,IAAI,CAAC,UAAU,CAAC,aAAa;AAC/B,cAAE,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;QACxC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC;;;;AAMzD,QAAAnB,SAAmB,CAAC,WAAW,EAAE,WAAW,CAAC;AAC1C,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,aAAA,SAAS,CAAC,CAAC,KAAiB,KAAI;AAC/B,YAAA,WAAW,GAAG,CAAC,IAAI,CAAC,eAAe;AACjC,kBAAE,IAAI,CAAC,UAAU,CAAC,aAAa;AAC/B,kBAAE,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;YACxC,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAEzD,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;AACrC,SAAC,CAAC,CAAC;AAEL,QAAAA,SAAmB,CAAC,WAAW,EAAE,SAAS,CAAC;AACxC,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,aAAA,SAAS,CAAC,CAAC,KAAoB,KAAI;AAClC,YAAA,WAAW,GAAG,CAAC,IAAI,CAAC,eAAe;AACjC,kBAAE,IAAI,CAAC,UAAU,CAAC,aAAa;AAC/B,kBAAE,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;YACxC,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAEzD,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;AACrC,SAAC,CAAC,CAAC;AAEL,QAAAA,SAAmB,CAAC,WAAW,EAAE,SAAS,CAAC;AACxC,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC1B,SAAS,CAAC,MAAK;AACd,YAAA,MAAM,SAAS,GAAG,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC;YACtD,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;gBAClD,IAAI,CAAC,UAAU,EAAE,CAAC;AACnB,aAAA;AACH,SAAC,CAAC,CAAC;KACN;IAEO,UAAU,GAAA;QAChB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;KAChD;AAEO,IAAA,mBAAmB,CAAC,IAA8B,EAAA;QACxD,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACvB,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACrC,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAEvB,gBAAA,IAAI,CAAC,gBAAgB;AAClB,qBAAA,iBACJ,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AAC7D,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;AAC1B,gBAAA,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,EAAE;oBAClC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzC,iBAAA;AAAM,qBAAA;AACL,oBAAA,QAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,iBAAA;AACD,gBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC3B,aAAA;AACF,SAAA;KACF;AAEO,IAAA,WAAW,CAAC,IAAW,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAS,KAAI;YAC5B,OAAO;AACL,gBAAA,KAAK,EAAE,IAAI;aACZ,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,uBAAuB,CAAC,IAAgC,EAAA;QAC9D,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KAC5C;AAEO,IAAA,iBAAiB,CAAC,IAA0B,EAAA;QAClD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KACtC;IAEO,mBAAmB,GAAA;QACzB,IAAI,IAAI,CAAC,0BAA0B,EAAE;AACnC,YAAA,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE;AAChC,gBAAA,IAAI,CAAC,0BAA0B,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrE,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,eAAe,EAAE,CAAC;AACxB,aAAA;AACF,SAAA;KACF;;+GArrBU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAQ,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAe,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAP,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,4bAJlB,CAAC,uBAAuB,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,4BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA0KzB,6BAA6B,EAChC,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,6BAA6B,EAa7B,EAAA,EAAA,YAAA,EAAA,2BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,6HAMX,WAAW,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAMX,UAAU,EAKV,EAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,kEC/PrB,8gKAgJA,EAAA,MAAA,EAAA,CAAA,iyHAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAQ,wBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,6BAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAb,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,YAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAAO,6BAAA,EAAA,QAAA,EAAA,mDAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FDtFa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAR9B,SAAS;+BACE,YAAY,EAAA,SAAA,EAGX,CAAC,uBAAuB,CAAC,EAAA,aAAA,EACrB,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,8gKAAA,EAAA,MAAA,EAAA,CAAA,iyHAAA,CAAA,EAAA,CAAA;;;8BA2N5C,IAAI;;8BAAI,QAAQ;;8BAIhB,QAAQ;;8BACR,QAAQ;;yBApNJ,SAAS,EAAA,CAAA;sBADf,KAAK;gBAUC,cAAc,EAAA,CAAA;sBADpB,KAAK;gBAQC,qBAAqB,EAAA,CAAA;sBAD3B,KAAK;gBAUK,IAAI,EAAA,CAAA;sBADd,KAAK;gBAiBC,QAAQ,EAAA,CAAA;sBADd,KAAK;gBAOC,cAAc,EAAA,CAAA;sBADpB,KAAK;gBAOC,eAAe,EAAA,CAAA;sBADrB,KAAK;gBAQC,UAAU,EAAA,CAAA;sBADhB,KAAK;gBAOC,aAAa,EAAA,CAAA;sBADnB,KAAK;gBAOC,cAAc,EAAA,CAAA;sBADpB,KAAK;gBAQK,UAAU,EAAA,CAAA;sBADpB,KAAK;gBA2BC,YAAY,EAAA,CAAA;sBADlB,KAAK;gBAOC,QAAQ,EAAA,CAAA;sBADd,MAAM;gBAkDK,0BAA0B,EAAA,CAAA;sBAJrC,SAAS;gBAAC,IAAA,EAAA,CAAA,6BAA6B,EAAE;AACxC,wBAAA,IAAI,EAAE,6BAA6B;AACnC,wBAAA,MAAM,EAAE,KAAK;qBACd,CAAA;gBAcO,yBAAyB,EAAA,CAAA;sBAJhC,SAAS;gBAAC,IAAA,EAAA,CAAA,2BAA2B,EAAE;AACtC,wBAAA,IAAI,EAAE,WAAW;AACjB,wBAAA,MAAM,EAAE,IAAI;qBACb,CAAA;gBAOO,gBAAgB,EAAA,CAAA;sBAJvB,SAAS;gBAAC,IAAA,EAAA,CAAA,kBAAkB,EAAE;AAC7B,wBAAA,IAAI,EAAE,WAAW;AACjB,wBAAA,MAAM,EAAE,IAAI;qBACb,CAAA;gBAMO,gBAAgB,EAAA,CAAA;sBAHvB,SAAS;gBAAC,IAAA,EAAA,CAAA,eAAe,EAAE;AAC1B,wBAAA,IAAI,EAAE,UAAU;qBACjB,CAAA;gBAOO,qBAAqB,EAAA,CAAA;sBAJ5B,SAAS;gBAAC,IAAA,EAAA,CAAA,uBAAuB,EAAE;AAClC,wBAAA,IAAI,EAAE,WAAW;AACjB,wBAAA,MAAM,EAAE,IAAI;qBACb,CAAA;;;ME7MU,eAAe,CAAA;;4GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,iBAzBxB,kBAAkB;QAClB,yBAAyB;QACzB,oCAAoC;AACpC,QAAA,+BAA+B,aAG/B,YAAY;QACZ,WAAW;QACX,qBAAqB;QACrB,iBAAiB;QACjB,aAAa;QACb,uBAAuB;QACvB,aAAa;QACb,wBAAwB;QACxB,cAAc;QACd,iBAAiB;QACjB,eAAe;QACf,cAAc;QACd,eAAe;QACf,gBAAgB;QAChB,mBAAmB;QACnB,aAAa,aAEL,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAEjB,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,EApBjB,OAAA,EAAA,CAAA;YACP,YAAY;YACZ,WAAW;YACX,qBAAqB;YACrB,iBAAiB;YACjB,aAAa;YACb,uBAAuB;YACvB,aAAa;YACb,wBAAwB;YACxB,cAAc;YACd,iBAAiB;YACjB,eAAe;YACf,cAAc;YACd,eAAe;YACf,gBAAgB;YAChB,mBAAmB;YACnB,aAAa;SACd,CAAA,EAAA,CAAA,CAAA;2FAGU,eAAe,EAAA,UAAA,EAAA,CAAA;kBA3B3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,kBAAkB;wBAClB,yBAAyB;wBACzB,oCAAoC;wBACpC,+BAA+B;AAChC,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,qBAAqB;wBACrB,iBAAiB;wBACjB,aAAa;wBACb,uBAAuB;wBACvB,aAAa;wBACb,wBAAwB;wBACxB,cAAc;wBACd,iBAAiB;wBACjB,eAAe;wBACf,cAAc;wBACd,eAAe;wBACf,gBAAgB;wBAChB,mBAAmB;wBACnB,aAAa;AACd,qBAAA;oBACD,OAAO,EAAE,CAAC,kBAAkB,CAAC;iBAC9B,CAAA;;;ACnDD;;;AAGG;AACS,IAAA,oBAUX;AAVD,CAAA,UAAY,mBAAmB,EAAA;AAC7B;;AAEG;AACH,IAAA,mBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AAEjB;;AAEG;AACH,IAAA,mBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACvB,CAAC,EAVW,mBAAmB,KAAnB,mBAAmB,GAU9B,EAAA,CAAA,CAAA;;ACdD;;;AAGG;MACU,oCAAoC,CAAA;AAahD;;ACjBD;;AAEG;;;;"}
|