{"version":3,"file":"ng-devui-category-search.mjs","sources":["../../devui/category-search/category-search.type.ts","../../devui/category-search/content-template.directive.ts","../../devui/category-search/default-template.directive.ts","../../devui/category-search/category-search.component.ts","../../devui/category-search/category-search.component.html","../../devui/category-search/category-search.module.ts","../../devui/category-search/ng-devui-category-search.ts"],"sourcesContent":["import { TemplateRef } from '@angular/core';\r\nimport { OperableTreeComponent } from 'ng-devui/tree';\r\n\r\nexport type CategorySearchTagType = 'radio' | 'checkbox' | 'dateRange' | 'label' | 'textInput' | 'numberRange' | 'treeSelect' | 'keyword';\r\n\r\nexport interface ITagOption {\r\n  /**\r\n   * 选项，label和color默认都会取对应的 filterKey 和 colorKey，如未设置取默认值\r\n   */\r\n  label?: string; // 通用默认属性，用于设置分类名称\r\n  color?: string; // label 专用，用于设置标签颜色\r\n  [propName: string]: any;\r\n}\r\n\r\n/**\r\n * 候选tag数据配置项\r\n */\r\nexport interface ICategorySearchTagItem {\r\n  /**\r\n   * 搜索字段，tag的键，用于区分不同的分类，需要唯一\r\n   */\r\n  field: string;\r\n  /**\r\n   * tag 键的显示值\r\n   */\r\n  label: string;\r\n  /**\r\n   * 配置项可生产的tag类型\r\n   */\r\n  type?: CategorySearchTagType;\r\n  /**\r\n   * 配置项所属的分组\r\n   */\r\n  group?: string;\r\n  /**\r\n   * tag 值的选择项数据\r\n   */\r\n  options?: Array<ITagOption>;\r\n  /**\r\n   * 用于显示的 tag 值的键值，如未设置默认取label\r\n   */\r\n  filterKey?: string | 'label';\r\n  /**\r\n   * 用于显示的label类型中色值的键值，如未设置默认取color\r\n   */\r\n  colorKey?: string | 'color';\r\n  /**\r\n   * 自定义下拉模板\r\n   */\r\n  customTemplate?: TemplateRef<any>;\r\n  /**\r\n   * 自定义已选标签内容模板\r\n   */\r\n  tagCustomTemplate?: TemplateRef<any>;\r\n  /**\r\n   * 当前分类选中后是否可以删除\r\n   */\r\n  deletable?: boolean;\r\n  /**\r\n   * 已选中值\r\n   */\r\n  value?: {\r\n    label?: string;\r\n    value?: string | ITagOption | Array<ITagOption | number | string | Date>;\r\n    cache?: string | ITagOption | Array<ITagOption | number | string | Date>;\r\n    [propName: string]: any;\r\n  };\r\n  /**\r\n   * checkbox | label 类型是否显示全选\r\n   */\r\n  showSelectAll?: boolean;\r\n  /**\r\n   * dateRange 类型是否显示时分秒\r\n   */\r\n  showTime?: boolean;\r\n  /**\r\n   * dateRange 类型默认激活开始或者结束日期\r\n   */\r\n  activeRangeType?: 'start' | 'end';\r\n  /**\r\n   * textInput | numberRange 类型设置最大长度，numberRange 需传入对象分别设置左右\r\n   */\r\n  maxLength?: number | { left?: number; right?: number };\r\n  /**\r\n   * textInput | numberRange 类型设置占位符，numberRange 需传入对象分别设置左右\r\n   */\r\n  placeholder?: string | { left?: string; right?: string };\r\n  /**\r\n   * numberRange 步进值，需传入对象分别设置左右\r\n   */\r\n  step?: { left?: number; right?: number };\r\n  /**\r\n   * numberRange 最大值，需传入对象分别设置左右\r\n   */\r\n  max?: { left?: number; right?: number };\r\n  /**\r\n   * numberRange 最小值，需传入对象分别设置左右\r\n   */\r\n  min?: { left?: number; right?: number };\r\n  /**\r\n   * numberRange 限制输入的正则或正则字符串，需传入对象分别设置左右\r\n   */\r\n  reg?: { left?: RegExp | string; right?: RegExp | string };\r\n  /**\r\n   * numberRange 限制小数点后的位数，需传入对象分别设置左右\r\n   */\r\n  decimalLimit?: { left?: number; right?: number };\r\n  /**\r\n   * numberRange 校验方法，点击确定时执行，返回 true 通过\r\n   */\r\n  validateFunc?: (start: number, end: number, tag: ICategorySearchTagItem) => boolean;\r\n  /**\r\n   * treeSelect 类型是否为多选，并显示已选择列表\r\n   */\r\n  multiple?: boolean;\r\n  /**\r\n   * treeSelect 类型是否显示搜索框\r\n   */\r\n  searchable?: boolean;\r\n  /**\r\n   * treeSelect 类型设置搜索框占位符\r\n   */\r\n  searchPlaceholder?: string;\r\n  /**\r\n   * treeSelect 类型自定义搜索方法，参数为搜索关键字和 d-operable-tree 组件实例\r\n   */\r\n  searchFn?: (value: string, treeInstance: OperableTreeComponent) => boolean | Array<any>;\r\n  /**\r\n   * treeSelect 类型相关配置，请参考treeSelect组件API中同名配置\r\n   */\r\n  checkableRelation?: 'upward' | 'downward' | 'both' | 'none';\r\n  treeNodeIdKey?: string;\r\n  treeNodeChildrenKey?: string;\r\n  treeNodeTitleKey?: string;\r\n  disabledKey?: string;\r\n  leafOnly?: boolean;\r\n  iconParentOpen?: string;\r\n  iconParentClose?: string;\r\n  iconLeaf?: string;\r\n  [propName: string]: any;\r\n}\r\n\r\nexport interface SelectedTagsEvent {\r\n  selectedTags: Array<ICategorySearchTagItem>;\r\n  currentChangeTag: ICategorySearchTagItem;\r\n  operation: 'add' | 'delete' | 'clear';\r\n}\r\n\r\nexport interface CreateFilterEvent {\r\n  name: string;\r\n  selectedTags: Array<ICategorySearchTagItem>;\r\n  keyword: string;\r\n}\r\n\r\nexport interface SearchEvent {\r\n  selectedTags: Array<ICategorySearchTagItem>;\r\n  searchKey: string;\r\n}\r\n\r\nexport interface SearchConfig {\r\n  keyword?: boolean;\r\n  keywordDescription?: (searchKey: string) => string;\r\n  field?: boolean;\r\n  fieldDescription?: (label: string) => string;\r\n  category?: boolean;\r\n  categoryDescription?: string;\r\n  noCategoriesAvailableTip?: boolean;\r\n  searchInputMaxLength?: number;\r\n}\r\n\r\nexport interface TextConfig {\r\n  keywordName?: string;\r\n  createFilter?: string;\r\n  filterTitle?: string;\r\n  labelConnector?: string;\r\n  noCategoriesAvailable?: string;\r\n}\r\n\r\nexport interface ExtendedConfig {\r\n  show?: boolean;\r\n  clear?: {\r\n    show?: boolean;\r\n    disabled?: boolean;\r\n    template?: TemplateRef<any>;\r\n  };\r\n  save?: {\r\n    show?: boolean;\r\n    disabled?: boolean;\r\n    template?: TemplateRef<any>;\r\n  };\r\n  more?: {\r\n    show?: boolean;\r\n    disabled?: boolean;\r\n    template?: TemplateRef<any>;\r\n  };\r\n  customTemplate?: TemplateRef<any>;\r\n}\r\n\r\nexport const COLORS = [\r\n  '#f2f5fc',\r\n  '#e9edfa',\r\n  '#beccfa',\r\n  '#96adfa',\r\n  '#7693f5',\r\n  '#5e7ce0',\r\n  '#526ecc',\r\n  '#465eb8',\r\n  '#3c51a6',\r\n  '#344899',\r\n  '#2a3c85',\r\n  '#ebf6ff',\r\n  '#d1ebff',\r\n  '#b8e0ff',\r\n  '#9ed5ff',\r\n  '#85caff',\r\n  '#6cbfff',\r\n  '#4ea6e6',\r\n  '#3590cc',\r\n  '#207ab3',\r\n  '#0f6999',\r\n  '#035880',\r\n  '#edfff9',\r\n  '#cffcee',\r\n  '#acf2dc',\r\n  '#8be8cb',\r\n  '#6ddebb',\r\n  '#50d4ab',\r\n  '#3ac295',\r\n  '#27b080',\r\n  '#169e6c',\r\n  '#088c58',\r\n  '#007a45',\r\n  '#f0ffe6',\r\n  '#e5ffd4',\r\n  '#d8fcc0',\r\n  '#c5f2a7',\r\n  '#b3e890',\r\n  '#a6dd82',\r\n  '#92cc68',\r\n  '#7eba50',\r\n  '#6ca83b',\r\n  '#5e9629',\r\n  '#518519',\r\n  '#fffbf0',\r\n  '#fff1c2',\r\n  '#ffe794',\r\n  '#ffdc66',\r\n  '#ffd138',\r\n  '#fac20a',\r\n  '#e3aa00',\r\n  '#cc9600',\r\n  '#b58200',\r\n  '#9e6f00',\r\n  '#875c00',\r\n  '#fff3e8',\r\n  '#ffe1c7',\r\n  '#ffd0a6',\r\n  '#ffbf85',\r\n  '#ffad63',\r\n  '#fa9841',\r\n  '#e37d29',\r\n  '#cc6414',\r\n  '#b54e04',\r\n  '#9e3f00',\r\n  '#873400',\r\n  '#ffeeed',\r\n  '#ffd5d4',\r\n  '#ffbcba',\r\n  '#ffa4a1',\r\n  '#ff8b87',\r\n  '#f66f6a',\r\n  '#de504e',\r\n  '#c73636',\r\n  '#b02121',\r\n  '#991111',\r\n  '#820404',\r\n  '#ffedf3',\r\n  '#ffd4e3',\r\n  '#ffbad2',\r\n  '#ffa1c2',\r\n  '#fc86b0',\r\n  '#f3689a',\r\n  '#db4d83',\r\n  '#c4356e',\r\n  '#ad215b',\r\n  '#96114d',\r\n  '#800440',\r\n  '#f5f0ff',\r\n  '#e7d9ff',\r\n  '#d8c2ff',\r\n  '#caabff',\r\n  '#bc94ff',\r\n  '#a97af8',\r\n  '#8a5ce0',\r\n  '#6f42c9',\r\n  '#572db3',\r\n  '#3f1a9c',\r\n  '#2a0c85',\r\n];\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n  /* eslint-disable */\n  selector: 'ng-template[field], ng-template[dField]',\n})\nexport class ContentTemplateDirective {\n  @Input() field: string;\n  @Input() dField: string;\n\n  constructor(public template: TemplateRef<any>) {}\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n  /* eslint-disable */\n  selector: 'ng-template[type], ng-template[dType]',\n})\nexport class DefaultTemplateDirective {\n  @Input() type: string;\n  @Input() dType: string;\n\n  constructor(public template: TemplateRef<any>) {}\n}\n","import { DOCUMENT } from '@angular/common';\r\nimport {\r\n  AfterContentInit,\r\n  AfterViewInit,\r\n  Component,\r\n  ContentChildren,\r\n  ElementRef,\r\n  EventEmitter,\r\n  HostBinding,\r\n  Inject,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  Output,\r\n  QueryList,\r\n  SimpleChanges,\r\n  TemplateRef,\r\n  ViewChild,\r\n  ViewChildren,\r\n} from '@angular/core';\r\nimport { NgForm } from '@angular/forms';\r\nimport { DatepickerProCalendarComponent } from 'ng-devui/datepicker-pro';\r\nimport { DropDownAppendToBodyComponent, DropDownDirective } from 'ng-devui/dropdown';\r\nimport { DValidateRules } from 'ng-devui/form';\r\nimport { I18nInterface, I18nService } from 'ng-devui/i18n';\r\nimport { ITreeItem, OperableTreeComponent } from 'ng-devui/tree';\r\nimport { DefaultIcons } from 'ng-devui/tree-select';\r\nimport { DateConverter, DefaultDateConverter, DevConfigService, WithConfig } from 'ng-devui/utils';\r\nimport { cloneDeep, intersectionBy, isEqual, merge, mergeWith } from 'lodash-es';\r\nimport { Observable, Subject, fromEvent } from 'rxjs';\r\nimport { debounceTime, takeUntil, tap } from 'rxjs/operators';\r\nimport {\r\n  COLORS,\r\n  CreateFilterEvent,\r\n  ExtendedConfig,\r\n  ICategorySearchTagItem,\r\n  ITagOption,\r\n  SearchConfig,\r\n  SearchEvent,\r\n  SelectedTagsEvent,\r\n  TextConfig,\r\n} from './category-search.type';\r\nimport { ContentTemplateDirective } from './content-template.directive';\r\nimport { DefaultTemplateDirective } from './default-template.directive';\r\n\r\n@Component({\r\n  selector: 'd-category-search',\r\n  templateUrl: './category-search.component.html',\r\n  styleUrls: ['./category-search.component.scss'],\r\n})\r\nexport class CategorySearchComponent implements OnChanges, OnDestroy, AfterViewInit, AfterContentInit {\r\n  static ID_SEED = 0;\r\n  @Input() category: ICategorySearchTagItem[] = [];\r\n  @Input() defaultSearchField = [];\r\n  @Input() selectedTags: ICategorySearchTagItem[] = [];\r\n  /**\r\n   * @deprecated\r\n   */\r\n  @Input() allowClear = true;\r\n  /**\r\n   * @deprecated\r\n   */\r\n  @Input() allowSave = true;\r\n  /**\r\n   * @deprecated\r\n   */\r\n  @Input() allowShowMore = false;\r\n  @Input() disabled = false;\r\n  @Input() extendedConfig: ExtendedConfig;\r\n  @Input() toggleScrollToTail = false;\r\n  @Input() searchKey = '';\r\n  @Input() placeholderText: string;\r\n  @Input() inputReadOnly = false;\r\n  @Input() inputAutofocus = true;\r\n  @Input() dropdownBoundary = false;\r\n  @Input() showSearchCategory: SearchConfig | boolean = true; // 配置是否显示搜索相关下拉选项\r\n  @Input() categoryInGroup = false; // 是否按组别显示分类下拉列表\r\n  @Input() groupOrderConfig: string[]; // 用户配置组顺序\r\n  @Input() customGroupNameTemplate: TemplateRef<any>; // 用户自定义组名称显示模板\r\n  @Input() customCategoryNameTemplate: TemplateRef<any>; // 用户自定义分类名称显示模板\r\n  @Input() tagMaxWidth: number;\r\n  @Input() textConfig: TextConfig = {\r\n    keywordName: '',\r\n    createFilter: '',\r\n    filterTitle: '',\r\n    labelConnector: '|',\r\n    noCategoriesAvailable: '',\r\n  };\r\n  @Input() filterNameRules: DValidateRules = [];\r\n  @Input() beforeTagChange: (tag, searchKey, operation) => boolean | Promise<boolean> | Observable<boolean>;\r\n  @Input() toggleEvent: (dropdown, tag?, currentSelectTag?) => void;\r\n  @Input() @WithConfig() styleType = 'default';\r\n  @Input() @WithConfig() showGlowStyle = true;\r\n  @HostBinding('class.devui-glow-style') get hasGlowStyle() {\r\n    return this.showGlowStyle;\r\n  }\r\n  @Output() searchEvent = new EventEmitter<SearchEvent>();\r\n  @Output() selectedTagsChange = new EventEmitter<SelectedTagsEvent>();\r\n  @Output() createFilterEvent = new EventEmitter<CreateFilterEvent>();\r\n  @Output() clearAllEvent = new EventEmitter<MouseEvent>();\r\n  @Output() searchKeyChange = new EventEmitter<String>();\r\n  @ViewChild('InputEle', { static: true }) inputEle: ElementRef;\r\n  @ViewChild('ScrollBarContainer', { static: true }) scrollBarContainer: ElementRef;\r\n  @ViewChild('PrimeContainer', { static: true }) primeContainer: ElementRef;\r\n  @ViewChild('OperableTree') treeInstance: OperableTreeComponent;\r\n  @ViewChildren('selectedDropdown') selectedDropdownList: QueryList<DropDownDirective>;\r\n  @ViewChildren(DefaultTemplateDirective) defaultTemplates: QueryList<DefaultTemplateDirective>;\r\n  @ContentChildren(ContentTemplateDirective) contentTemplates: QueryList<ContentTemplateDirective>;\r\n\r\n  id: number;\r\n  searchField: ICategorySearchTagItem[];\r\n  categoryDisplay: ICategorySearchTagItem[];\r\n  currentSearchCategory: ICategorySearchTagItem[];\r\n  currentSelectTag: ICategorySearchTagItem;\r\n  dateConverter: DateConverter;\r\n  treeSearchKey = '';\r\n  filterName = '';\r\n  searchKeyCache = '';\r\n  enterSearch = false;\r\n  isShowSavePanel = false;\r\n  isSearchCategory = false;\r\n  isHover = false;\r\n  isFocus = false;\r\n  treeNoRecord = false;\r\n  showNoDataTips = false;\r\n  icons = DefaultIcons;\r\n  destroy$ = new Subject<void>();\r\n  i18nCommonText: I18nInterface['common'];\r\n  i18nCategorySearchText: I18nInterface['categorySearch'];\r\n  showSearchConfig: SearchConfig;\r\n  currentOpenDropdown: DropDownDirective;\r\n  currentScrollTagIndex: number; // 当前要滚动至的标签索引\r\n  blurTimer: any; // 失焦关闭下拉延时器，失焦后立刻展开下拉需清除该延时\r\n  scrollTimeout: any; // 如果标签在可视范围内则延时展开下拉的定时器\r\n  scrollToTailFlag = true; // 是否在更新标签内容后滚动至输入框的开关\r\n  DROPDOWN_ANIMATION_TIMEOUT = 200; // 下拉动画延迟\r\n  DELAY = 300; // 防抖延迟\r\n  templates = {}; // 所有类型默认模板\r\n  customTemplates = {}; // 按field标记的自定义模板集合\r\n  treeFactories = {}; // 按field存储treeSelect类型的treefactory数据\r\n  joinLabelTypes = ['checkbox', 'label'];\r\n  valueIsArrayTypes = ['dateRange', 'numberRange', 'treeSelect'];\r\n  document: Document;\r\n  operationConfig: ExtendedConfig = {\r\n    clear: { show: true },\r\n    save: { show: true },\r\n    more: { show: false },\r\n  };\r\n\r\n  get showFilterNameClear() {\r\n    return typeof this.filterName === 'string' && this.filterName.length > 0;\r\n  }\r\n\r\n  get showExtendedConfig() {\r\n    return this.operationConfig.show ?? Boolean(this.selectedTags.length || this.searchKey);\r\n  }\r\n\r\n  private categoryOrder = [];\r\n  private categoryDictionary = {};\r\n\r\n  constructor(\r\n    @Inject(DOCUMENT) private doc: any,\r\n    private devConfigService: DevConfigService,\r\n    private i18n: I18nService,\r\n    private el: ElementRef\r\n  ) {\r\n    this.document = this.doc;\r\n    this.dateConverter = new DefaultDateConverter();\r\n    this.id = CategorySearchComponent.ID_SEED++;\r\n    this.showSearchConfig = { keyword: true, field: true, category: true, noCategoriesAvailableTip: true };\r\n    this.i18n\r\n      .langChange()\r\n      .pipe(takeUntil(this.destroy$))\r\n      .subscribe((data) => this.setI18nAndFilterText(data));\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    const {\r\n      allowClear,\r\n      allowSave,\r\n      allowShowMore,\r\n      defaultSearchField,\r\n      disabled,\r\n      category,\r\n      extendedConfig,\r\n      selectedTags,\r\n      searchKey,\r\n      showSearchCategory,\r\n      textConfig,\r\n    } = changes;\r\n    const hasExtendChanged = [allowClear, allowSave, allowShowMore, extendedConfig].some((change) => change);\r\n    if (searchKey) {\r\n      // searchKey输入变化更新缓存，优先处理searchKey避免初始化时再添加关键字\r\n      this.searchKeyCache = this.searchKey;\r\n      this.setSearchKeyTag(false);\r\n    }\r\n    if (selectedTags?.previousValue?.length) {\r\n      const result = intersectionBy([selectedTags.previousValue], selectedTags.currentValue, 'field');\r\n      result.forEach((selectedTag: any) => {\r\n        const item = this.category.find((categoryItem) => categoryItem.field === selectedTag.field);\r\n        if (item?.value.value) {\r\n          this.resetValue(item);\r\n        }\r\n      });\r\n    }\r\n    if (defaultSearchField || category || selectedTags) {\r\n      this.init();\r\n    }\r\n    if (disabled) {\r\n      this.setDisabled();\r\n    }\r\n    if (showSearchCategory) {\r\n      this.setSearchShow();\r\n    }\r\n    if (textConfig) {\r\n      this.setI18nAndFilterText(this.i18n.getI18nText());\r\n    }\r\n    if (hasExtendChanged) {\r\n      this.setExtendedConfig();\r\n    }\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    // 获取所有默认模板，规避脏检查添加延时\r\n    setTimeout(() =>\r\n      this.defaultTemplates.forEach((item) => {\r\n        this.templates[item.type || item.dType] = item.template;\r\n      })\r\n    );\r\n\r\n    if (this.scrollBarContainer && this.inputEle) {\r\n      // 初始化如果有滚动条直接位移至输入框\r\n      this.scrollToTail(true);\r\n      // 监听滚动事件，在跳转至指定标签后触发其下拉列表\r\n      fromEvent(this.scrollBarContainer.nativeElement, 'scroll')\r\n        .pipe(\r\n          takeUntil(this.destroy$),\r\n          tap(() => {\r\n            // 指定标签在可视范围则展开下拉，不在可视范围，即触发滚动后清除定时的展开下拉动作\r\n            if (this.scrollTimeout) {\r\n              clearTimeout(this.scrollTimeout);\r\n              this.scrollTimeout = undefined;\r\n            }\r\n            // TODO: 无法区分手动和自动滚动，待处理滚动时关闭已打开的下拉\r\n          }),\r\n          // 300毫秒内不再触发滚动事件则展开下拉列表\r\n          debounceTime(this.DELAY)\r\n        )\r\n        .subscribe((event: Event) => this.openCurrentScrollTagMenu(event));\r\n    }\r\n  }\r\n\r\n  ngAfterContentInit() {\r\n    this.setCustomTemplate(this.contentTemplates);\r\n    this.contentTemplates.changes.subscribe((data) => this.setCustomTemplate(data));\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.destroy$.next();\r\n    this.destroy$.complete();\r\n  }\r\n\r\n  setCustomTemplate(data) {\r\n    if (data?.length && this.category) {\r\n      this.customTemplates = {};\r\n      data.forEach((item) => {\r\n        this.customTemplates[item.field || item.dField] = item.template;\r\n      });\r\n      this.category.forEach((tag) => {\r\n        tag.customTemplate = this.customTemplates[tag.field];\r\n      });\r\n      this.selectedTags.forEach((tag) => {\r\n        tag.customTemplate = this.customTemplates[tag.field];\r\n      });\r\n    }\r\n  }\r\n\r\n  setDisabled() {\r\n    if (this.disabled) {\r\n      this.searchKey = '';\r\n      this.operationConfig.show = false;\r\n    } else {\r\n      this.operationConfig.show = undefined;\r\n      this.setExtendedConfig();\r\n    }\r\n  }\r\n\r\n  setI18nAndFilterText(data) {\r\n    this.i18nCommonText = data.common;\r\n    this.i18nCategorySearchText = data.categorySearch;\r\n    this.textConfig.createFilter = this.textConfig.createFilter || this.i18nCategorySearchText?.saveFilter;\r\n    this.textConfig.filterTitle = this.textConfig.filterTitle || this.i18nCategorySearchText?.filterTitle;\r\n    this.showSearchConfig.keywordDescription =\r\n      (this.showSearchCategory as SearchConfig).keywordDescription || this.i18nCategorySearchText.getSearchMessage;\r\n    this.showSearchConfig.fieldDescription =\r\n      (this.showSearchCategory as SearchConfig).fieldDescription || this.i18nCategorySearchText.getFindingMessage;\r\n    this.showSearchConfig.categoryDescription =\r\n      (this.showSearchCategory as SearchConfig).categoryDescription || this.i18nCategorySearchText.selectFilterCondition;\r\n    // 关键字分类内文本不能随语言对象变化，需重新赋值\r\n    const keyword = this.selectedTags.find((item) => item.field === 'devuiCategorySearchKeyword');\r\n    if (keyword) {\r\n      keyword.label = this.textConfig.keywordName || this.i18nCategorySearchText.keyword;\r\n      keyword.title = `${keyword.label}:${keyword.value?.label}`;\r\n    }\r\n  }\r\n\r\n  setSearchShow() {\r\n    const customConfig =\r\n      typeof this.showSearchCategory === 'boolean'\r\n        ? {\r\n          keyword: this.showSearchCategory,\r\n          field: this.showSearchCategory,\r\n          category: this.showSearchCategory,\r\n          noCategoriesAvailableTip: this.showSearchCategory,\r\n        }\r\n        : this.showSearchCategory;\r\n    this.showSearchConfig = { ...this.showSearchConfig, ...customConfig };\r\n  }\r\n\r\n  setSearchKeyTag(isSearch = true) {\r\n    const result = this.searchKey || this.searchKeyCache;\r\n    if (this.showSearchConfig.keyword) {\r\n      const existingSearchKeyTag = this.selectedTags.find((tag) => tag.field === 'devuiCategorySearchKeyword');\r\n      if (existingSearchKeyTag && !isSearch && this.searchKey === '') {\r\n        this.removeTag(existingSearchKeyTag);\r\n      } else if (this.searchKey && this.searchKey !== existingSearchKeyTag?.value.value) {\r\n        this.createSearchKeyTag(isSearch);\r\n      }\r\n    }\r\n    this.searchKey = '';\r\n    if (isSearch) {\r\n      setTimeout(() => {\r\n        this.enterSearch = false;\r\n      }, this.DELAY);\r\n    }\r\n    return result;\r\n  }\r\n\r\n  createSearchKeyTag(isSearch: boolean) {\r\n    const label = this.textConfig.keywordName || this.i18nCategorySearchText.keyword;\r\n    const searchKeyTag: ICategorySearchTagItem = {\r\n      options: [],\r\n      field: 'devuiCategorySearchKeyword',\r\n      label: label,\r\n      type: 'keyword',\r\n      title: `${label}:${this.searchKey}`,\r\n      value: {\r\n        label: this.searchKey,\r\n        value: this.searchKey,\r\n        cache: this.searchKey,\r\n      },\r\n    };\r\n    this.updateSelectedTags(searchKeyTag, isSearch);\r\n    this.searchKeyCache = this.searchKey;\r\n    this.searchKey = '';\r\n  }\r\n\r\n  setExtendedConfig() {\r\n    const oldConfig: ExtendedConfig = {\r\n      clear: { show: this.allowClear },\r\n      save: { show: this.allowSave },\r\n      more: { show: this.allowShowMore },\r\n    };\r\n    merge(oldConfig, this.extendedConfig);\r\n    merge(this.operationConfig, oldConfig);\r\n  }\r\n\r\n  init() {\r\n    this.setValue(this.category);\r\n    this.setValue(this.selectedTags, true);\r\n    this.initCategoryDisplay(true);\r\n    if (this.defaultSearchField?.length && this.category?.length) {\r\n      this.searchField = this.category.filter(\r\n        (item) => this.defaultSearchField.includes(item.field) && !this.valueIsArrayTypes.includes(item.type)\r\n      );\r\n    }\r\n    // 初始化时判断已选中分类中最后一项是否赋值，未赋值则识别为正在处理的分类，优先显示赋值下拉列表\r\n    if (this.selectedTags.length) {\r\n      const [lastItem] = this.selectedTags.slice(-1);\r\n      const isNull = lastItem.value[lastItem.filterKey || 'label'] === undefined;\r\n      this.currentSelectTag =\r\n        isNull && (lastItem.value.value === undefined || (Array.isArray(lastItem.value.value) && lastItem.value.value.length === 0))\r\n          ? lastItem\r\n          : undefined;\r\n    }\r\n    if (this.searchKeyCache) {\r\n      this.searchKey = this.searchKeyCache;\r\n      this.setSearchKeyTag(false);\r\n    }\r\n  }\r\n\r\n  // 初始化tag的value属性：{filterKey | label, value, data}\r\n  initCategoryItem(item) {\r\n    const preValue = this.valueIsArrayTypes.includes(item.type) ? { value: [] } : { value: undefined };\r\n    preValue[item.filterKey || 'label'] = undefined;\r\n    if (item.value) {\r\n      for (const prop in preValue) {\r\n        if (item.value[prop] === undefined) {\r\n          item.value[prop] = preValue[prop];\r\n        }\r\n      }\r\n    } else {\r\n      item.value = preValue;\r\n    }\r\n    item.value.cache = (item.value.value && typeof item.value.value === 'object' && cloneDeep(item.value.value)) || item.value.value;\r\n    item.customTemplate = this.customTemplates[item.field || item.dField] || item.customTemplate;\r\n    return item;\r\n  }\r\n\r\n  mergeCheck(objValue, srcValue, key) {\r\n    if (key === 'options' && objValue !== srcValue) {\r\n      return srcValue;\r\n    }\r\n  }\r\n\r\n  setValue(data: any, isSelectedTags = false) {\r\n    if (Array.isArray(data) && data.length) {\r\n      data.forEach((item) => {\r\n        if (!isSelectedTags || !this.category) {\r\n          item = this.initCategoryItem(item);\r\n          return;\r\n        }\r\n        let result = '';\r\n        const originItem = this.category.find((categoryItem) => categoryItem.field === item.field);\r\n        mergeWith(item, originItem, this.mergeCheck);\r\n        if (item.value.value) {\r\n          if (item.type === 'treeSelect') {\r\n            this.getTreeValue(item, false);\r\n            return;\r\n          }\r\n          item.value.cache = cloneDeep(item.value.value);\r\n          if (this.joinLabelTypes.includes(item.type)) {\r\n            result = this.getItemValue(item.value.value, item.filterKey || 'label');\r\n            this.isSelectAll(item);\r\n          }\r\n        }\r\n        item.title = this.setTitle(item, item.type, result);\r\n        if (item.type === 'label' && item.options[0] && !item.options[0].$label) {\r\n          this.mergeToLabel(item);\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  setTitle(tag: ICategorySearchTagItem, type: string, result?: string) {\r\n    return this.joinLabelTypes.includes(type)\r\n      ? `${tag.label}: ${result || ''}`\r\n      : `${tag.label}: ${result || (tag.value && tag.value[tag.filterKey || 'label']) || ''}`;\r\n  }\r\n\r\n  initCategoryDisplay(isInit = false) {\r\n    const selectedTagsField = this.selectedTags.map((item) => item.field);\r\n    if (isInit) {\r\n      this.category = this.category || [];\r\n      this.categoryOrder = [];\r\n      this.categoryDictionary = {};\r\n      this.initGroupAndDictionary();\r\n      this.initCategoryOrder();\r\n    }\r\n    this.categoryDisplay = this.categoryOrder.map((item) => {\r\n      item.isSelected = selectedTagsField.includes(item.field);\r\n      this.handleGroupLength(item, item.isSelected, isInit);\r\n      return item;\r\n    });\r\n    this.showNoDataTips = this.showSearchConfig.noCategoriesAvailableTip ? this.categoryDisplay.every((item) => item.isSelected) : false;\r\n  }\r\n\r\n  initGroupAndDictionary() {\r\n    this.category.forEach((item) => {\r\n      if (this.categoryInGroup && item.group) {\r\n        if (this.categoryDictionary[item.group]) {\r\n          this.categoryDictionary[item.group].groupLength++;\r\n        } else {\r\n          this.categoryDictionary[item.group] = { groupName: item.group, groupLength: 1, children: [] };\r\n        }\r\n        this.categoryDictionary[item.group].children.push(item);\r\n      }\r\n      this.categoryDictionary[item.field] = item;\r\n    });\r\n  }\r\n\r\n  initCategoryOrder() {\r\n    const keys = this.groupOrderConfig || Object.keys(this.categoryDictionary);\r\n    keys.forEach((key) => {\r\n      const item = this.categoryDictionary[key];\r\n      if (item) {\r\n        if (this.categoryInGroup) {\r\n          if (item.groupName) {\r\n            this.categoryOrder.push(item, ...item.children);\r\n          } else if (!item.group) {\r\n            this.categoryOrder.push(item);\r\n          }\r\n        } else {\r\n          this.categoryOrder.push(item);\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  handleGroupLength(tag: ICategorySearchTagItem, isSelected: boolean, isInit = false) {\r\n    if (this.categoryInGroup && tag.group) {\r\n      const group = this.categoryDictionary[tag.group];\r\n      const len = group.groupLength;\r\n      const resInit = isInit ? len : len + 1;\r\n      group.groupLength = isSelected ? len - 1 : resInit;\r\n      group.isSelected = group.groupLength === 0;\r\n    }\r\n  }\r\n\r\n  insertCategoryToGroup(groupName: string, groupObj: object, item: ICategorySearchTagItem, isInsert: boolean) {\r\n    if (!groupName) {\r\n      return;\r\n    }\r\n    groupObj[groupName] = groupObj[groupName] || [];\r\n    if (isInsert) {\r\n      groupObj[groupName].push(item);\r\n    }\r\n  }\r\n\r\n  searchCategory(item: ICategorySearchTagItem, value?: string) {\r\n    if (this.valueIsArrayTypes.includes(item.type)) {\r\n      return;\r\n    }\r\n    this.updateFieldValue(item, value || this.searchKey);\r\n    this.updateSelectedTags(item);\r\n    this.searchKey = '';\r\n    this.enterSearch = false;\r\n    this.finishChoose();\r\n  }\r\n\r\n  searchInputValue(event?: Event) {\r\n    if (event) {\r\n      event.preventDefault();\r\n      event.stopPropagation();\r\n    }\r\n    // 当有分类正在选择时输入关键字不处理\r\n    if (!this.currentSelectTag) {\r\n      this.searchEvent.emit({\r\n        selectedTags: this.getSelectedTagsExceptKeyword(),\r\n        searchKey: this.setSearchKeyTag(),\r\n      });\r\n    }\r\n    this.isFocus = true;\r\n  }\r\n\r\n  chooseCategory(item: ICategorySearchTagItem, inputDropdown: DropDownDirective) {\r\n    // 点选分组名称不处理\r\n    if (item.groupLength !== undefined) {\r\n      return;\r\n    }\r\n    setTimeout(() => {\r\n      this.currentSelectTag = item;\r\n      if (this.currentSelectTag.type === 'label') {\r\n        this.currentSelectTag = this.mergeToLabel(this.currentSelectTag);\r\n      }\r\n      this.currentSelectTag.title = this.setTitle(this.currentSelectTag, this.currentSelectTag.type, '');\r\n      inputDropdown.isOpen = true;\r\n    }, this.DROPDOWN_ANIMATION_TIMEOUT);\r\n    this.updateSelectedTags(item, false);\r\n  }\r\n\r\n  getSelectedTagsExceptKeyword(): ICategorySearchTagItem[] {\r\n    return this.showSearchConfig.keyword\r\n      ? this.selectedTags.filter((item) => item.field !== 'devuiCategorySearchKeyword')\r\n      : this.selectedTags;\r\n  }\r\n\r\n  updateSelectedTags(tag: ICategorySearchTagItem, valueChanged = true) {\r\n    this.canChange(tag, 'add').then((val) => {\r\n      if (!val) {\r\n        return;\r\n      }\r\n      const index = this.selectedTags.map((item) => item.field).indexOf(tag.field);\r\n      if (index > -1) {\r\n        if (!tag.value.value) {\r\n          // 通过输入选择分类时避免空值覆盖已选值\r\n          merge(tag, this.selectedTags[index]);\r\n        }\r\n        this.selectedTags[index] = tag;\r\n      } else {\r\n        this.selectedTags.push(tag);\r\n      }\r\n      if (valueChanged) {\r\n        // 只在新增标签时位移滚动条\r\n        if (this.scrollToTailFlag) {\r\n          setTimeout(() => this.scrollToTail());\r\n        }\r\n        this.selectedTagsChange.emit({\r\n          selectedTags: this.getSelectedTagsExceptKeyword(),\r\n          currentChangeTag: tag,\r\n          operation: 'add',\r\n        });\r\n        this.isSearchCategory = false;\r\n      } else {\r\n        this.resolveCategoryDisplay(tag, 'delete');\r\n      }\r\n    });\r\n  }\r\n\r\n  // 判断滚动条是否存在，如果存在自动滚动到末尾的输入框\r\n  scrollToTail(isInit?: boolean) {\r\n    const dom = this.scrollBarContainer.nativeElement;\r\n    if (this.toggleScrollToTail && dom.scrollWidth > dom.clientWidth) {\r\n      if (isInit) {\r\n        dom.scrollLeft = dom.scrollWidth - dom.clientWidth;\r\n      } else {\r\n        this.inputEle.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'nearest' });\r\n      }\r\n    } else if (!isInit && this.inputAutofocus) {\r\n      // 初始化不聚焦，避免展开下拉\r\n      this.inputEle.nativeElement.focus();\r\n    }\r\n  }\r\n\r\n  // 滚动至指定的tag\r\n  scrollToTag(index: number, event: Event) {\r\n    const tags = this.scrollBarContainer?.nativeElement.querySelectorAll('ul.devui-category-search-line>li');\r\n    if (tags[index]) {\r\n      this.currentScrollTagIndex = index;\r\n      tags[index].scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'nearest' });\r\n      this.scrollTimeout = setTimeout(() => this.openCurrentScrollTagMenu(event), this.DELAY);\r\n    }\r\n  }\r\n\r\n  openCurrentScrollTagMenu(event: Event) {\r\n    if (this.currentScrollTagIndex !== undefined) {\r\n      const dropdownArr = this.selectedDropdownList.toArray();\r\n      this.openMenu(dropdownArr[this.currentScrollTagIndex], event);\r\n      this.currentScrollTagIndex = undefined;\r\n    }\r\n  }\r\n\r\n  updateFieldValue(field: ICategorySearchTagItem, value: any) {\r\n    const result: any = {};\r\n    const filterKey = field.filterKey || 'label';\r\n    const colorKey = field.colorKey || 'color';\r\n    result[filterKey] = value;\r\n    if (field.type === 'radio') {\r\n      field.value.value = { [filterKey]: value };\r\n    }\r\n    if (field.type === 'textInput') {\r\n      field.value.value = value;\r\n    }\r\n    if (field.type === 'label') {\r\n      if (field.options[0] && !field.options[0].$label) {\r\n        this.mergeToLabel(field);\r\n      }\r\n      result[colorKey] = COLORS[Math.floor(COLORS.length * Math.random())];\r\n      result.$label = `${value}_${result[colorKey]}`;\r\n    }\r\n    if (this.joinLabelTypes.includes(field.type)) {\r\n      field.value.value = [result];\r\n    }\r\n    field.value[filterKey] = value;\r\n    field.value.cache = cloneDeep(field.value.value);\r\n    field.title = this.setTitle(field, field.type, value);\r\n  }\r\n\r\n  removeTag(tag: ICategorySearchTagItem, event?: Event) {\r\n    this.canChange(tag, 'delete').then((val) => {\r\n      if (!val) {\r\n        if (this.beforeTagChange && event) {\r\n          event.stopPropagation();\r\n        }\r\n        return;\r\n      }\r\n      tag = this.resetValue(tag);\r\n      this.selectedTags = this.selectedTags.filter((item) => item.field !== tag.field);\r\n      const result = this.getSelectedTagsExceptKeyword();\r\n      if (tag.type === 'keyword') {\r\n        this.searchKey = this.searchKey === this.searchKeyCache ? '' : this.searchKey;\r\n        this.searchKeyCache = '';\r\n        this.enterSearch = this.searchKey !== '';\r\n        this.searchEvent.emit({ selectedTags: result, searchKey: this.searchKey });\r\n      } else {\r\n        if(tag.type === 'treeSelect'){\r\n          this.treeFactories[tag.field] = undefined;\r\n        }\r\n        this.resolveCategoryDisplay(tag, 'add');\r\n        this.selectedTagsChange.emit({ selectedTags: result, currentChangeTag: tag, operation: 'delete' });\r\n      }\r\n      this.currentSelectTag = undefined;\r\n    });\r\n  }\r\n\r\n  checkInputSearching() {\r\n    this.isFocus = true;\r\n    if (this.searchKey === '') {\r\n      this.enterSearch = false;\r\n    } else {\r\n      this.enterSearch = true;\r\n    }\r\n  }\r\n\r\n  // 解决dropdownMenu展开时焦点会自动到toggle上的问题\r\n  focusInput() {\r\n    setTimeout(() => {\r\n      if (this.inputAutofocus) {\r\n        this.inputEle.nativeElement.focus();\r\n      }\r\n    });\r\n  }\r\n\r\n  // 失焦时关闭当前下拉列表，延时用以防止关闭掉点击分类展开的内容列表\r\n  blurInput(event: FocusEvent) {\r\n    this.blurTimer = setTimeout(() => {\r\n      const className = event.relatedTarget && (event.relatedTarget as any).className;\r\n      const outsideHost =\r\n        !className || (typeof className === 'string' && className.indexOf(`devui-category-dropdown-menu-${this.id}`) === -1);\r\n      if (!this.currentSelectTag && this.currentOpenDropdown && outsideHost) {\r\n        this.currentOpenDropdown.isOpen = false;\r\n      }\r\n    }, this.DELAY);\r\n  }\r\n\r\n  openMenu(inputDropdown: DropDownDirective, event: Event) {\r\n    const code = (event as any).code;\r\n    if (inputDropdown.isOpen || (event.type === 'keyup' && ['Enter', 'Backspace', 'Escape'].includes(code))) {\r\n      return;\r\n    }\r\n    setTimeout(() => {\r\n      if (!inputDropdown.isOpen) {\r\n        inputDropdown.toggle();\r\n      }\r\n    });\r\n  }\r\n\r\n  closeMenu(inputDropdown: DropDownDirective) {\r\n    if (inputDropdown.isOpen) {\r\n      inputDropdown.toggle();\r\n    }\r\n  }\r\n\r\n  backspaceEvent(inputDropdown: DropDownDirective) {\r\n    if (this.searchKey) {\r\n      return;\r\n    }\r\n    if (this.currentSelectTag) {\r\n      this.currentSelectTag = undefined;\r\n      this.closeMenu(inputDropdown);\r\n      return;\r\n    }\r\n    if (this.selectedTags.length) {\r\n      const tag = this.selectedTags[this.selectedTags.length - 1];\r\n      this.removeTag(tag);\r\n    }\r\n    this.closeMenu(inputDropdown);\r\n  }\r\n\r\n  canChange(tag: ICategorySearchTagItem, operation: 'delete' | 'add') {\r\n    let changeResult = Promise.resolve(true);\r\n    if (this.beforeTagChange) {\r\n      const result: any = this.beforeTagChange(tag, this.searchKey, operation);\r\n      if (typeof result !== 'undefined') {\r\n        if (result.then) {\r\n          changeResult = result;\r\n        } else if (result.subscribe) {\r\n          changeResult = (result as Observable<boolean>).toPromise();\r\n        } else {\r\n          changeResult = Promise.resolve(result);\r\n        }\r\n      }\r\n    }\r\n    return changeResult;\r\n  }\r\n\r\n  finishChoose() {\r\n    this.currentSelectTag = undefined;\r\n    if (this.inputAutofocus) {\r\n      this.inputEle.nativeElement.focus();\r\n    }\r\n  }\r\n\r\n  clearFilter(event: MouseEvent) {\r\n    if (this.selectedTags.length) {\r\n      this.selectedTags = this.selectedTags.filter((item) => {\r\n        if (item.deletable === false) {\r\n          return item;\r\n        }\r\n        this.resetValue(item);\r\n        return undefined;\r\n      });\r\n    }\r\n    if (this.searchKey || this.searchKeyCache) {\r\n      this.searchKey = '';\r\n      this.searchKeyCache = '';\r\n      setTimeout(() => {\r\n        this.enterSearch = false;\r\n      }, this.DELAY);\r\n    }\r\n    if (this.currentSelectTag) {\r\n      this.currentSelectTag = undefined;\r\n    }\r\n    this.selectedTagsChange.emit({ selectedTags: this.selectedTags, currentChangeTag: undefined, operation: 'clear' });\r\n    this.clearAllEvent.emit(event);\r\n    this.initCategoryDisplay();\r\n  }\r\n\r\n  resolveCategoryDisplay(tag: ICategorySearchTagItem, type: string) {\r\n    if (tag.field === 'devuiCategorySearchKeyword' || !this.categoryDictionary[tag.field]) {\r\n      return;\r\n    }\r\n    this.handleGroupLength(tag, type === 'delete');\r\n    this.categoryDictionary[tag.field].isSelected = type === 'delete';\r\n  }\r\n\r\n  createFilterFn() {\r\n    this.createFilterEvent.emit({ name: this.filterName, selectedTags: this.getSelectedTagsExceptKeyword(), keyword: this.searchKey });\r\n    setTimeout(() => {\r\n      this.filterName = '';\r\n    }, this.DELAY);\r\n  }\r\n\r\n  createFilterInputAutoFocus(dropdown: DropDownDirective, inputElm: HTMLElement, filterNameForm: NgForm) {\r\n    if (dropdown.isOpen) {\r\n      filterNameForm.form.reset();\r\n      setTimeout(() => inputElm.focus());\r\n    }\r\n  }\r\n\r\n  searchKeyChangeEvent(event: string) {\r\n    this.searchKey = event;\r\n    this.enterSearch = !!event;\r\n    this.currentSearchCategory = event ? this.category.filter((item) => item.label.toLowerCase().includes(event.toLowerCase())) : [];\r\n    this.searchKeyChange.emit(event);\r\n  }\r\n\r\n  checkType(tag: ICategorySearchTagItem) {\r\n    return tag && tag.type === 'radio' ? 'all' : 'blank';\r\n  }\r\n\r\n  resetValue(tag: ICategorySearchTagItem) {\r\n    tag.value = this.valueIsArrayTypes.includes(tag.type) ? { value: [] } : { value: undefined };\r\n    tag.value[tag.filterKey || 'label'] = undefined;\r\n    return tag;\r\n  }\r\n\r\n  afterDropdownClosed() {\r\n    setTimeout(() => {\r\n      this.currentSelectTag = undefined;\r\n    }, this.DROPDOWN_ANIMATION_TIMEOUT + 100);\r\n  }\r\n\r\n  /* 各类型模板调用方法 */\r\n  // radio 单选 处理选中项方法\r\n  chooseItem(tag: ICategorySearchTagItem, chooseItem: ITagOption) {\r\n    this.afterDropdownClosed();\r\n    const key = tag.filterKey || 'label';\r\n    tag.value = { value: chooseItem, cache: cloneDeep(chooseItem) };\r\n    tag.value[key] = chooseItem[key];\r\n    tag.title = this.setTitle(tag, 'radio');\r\n    this.updateSelectedTags(tag);\r\n  }\r\n\r\n  // date 改变输入值相应变化\r\n  dateChange(datepicker: DatepickerProCalendarComponent, tag: ICategorySearchTagItem) {\r\n    const index = datepicker.currentActiveInput === 'start' ? 0 : 1;\r\n    const dateFormat = tag.showTime ? 'y/MM/dd HH:mm:ss' : 'y/MM/dd';\r\n    const targetDate = datepicker.dateValue[index];\r\n    const inputDate = datepicker.datepickerConvert.parse(targetDate);\r\n    const valueFormat = inputDate && !isNaN(inputDate.getTime()) && datepicker.datepickerConvert.format(inputDate, dateFormat);\r\n    if (targetDate === valueFormat) {\r\n      tag.value.value[index] = inputDate;\r\n      if (tag.showTime) {\r\n        datepicker.pickerSrv.updateTimeChange.next({\r\n          activeInput: datepicker.currentActiveInput,\r\n          hour: inputDate.getHours(),\r\n          min: inputDate.getMinutes(),\r\n          seconds: inputDate.getSeconds(),\r\n        });\r\n      }\r\n    }\r\n  }\r\n\r\n  confirmDate(datepicker: DatepickerProCalendarComponent, tag: ICategorySearchTagItem, dropdown: DropDownDirective) {\r\n    if (!tag.value.value) {\r\n      return;\r\n    }\r\n    if (datepicker.currentActiveInput === 'start') {\r\n      datepicker.focusChange('end');\r\n    } else if (!tag.value.value[0]) {\r\n      datepicker.focusChange('start');\r\n    } else if (tag.value.value.length > 1) {\r\n      this.closeMenu(dropdown);\r\n      this.afterDropdownClosed();\r\n      const start = tag.value.value[0] as Date;\r\n      const end = tag.value.value[1] as Date;\r\n      tag.value.cache = cloneDeep(tag.value.value);\r\n      tag.value[tag.filterKey || 'label'] = tag.showTime\r\n        ? `${this.dateConverter.formatDateTime(start)} - ${this.dateConverter.formatDateTime(end)}`\r\n        : `${this.dateConverter.format(start)} - ${this.dateConverter.format(end)}`;\r\n      tag.title = this.setTitle(tag, 'dateRange');\r\n      this.updateSelectedTags(tag);\r\n    }\r\n  }\r\n\r\n  // checkbox | label 多选 处理选中项方法\r\n  chooseItems(tag: ICategorySearchTagItem) {\r\n    this.afterDropdownClosed();\r\n    const key = tag.filterKey || 'label';\r\n    const result = this.getItemValue(tag.value.value, key);\r\n    if (result) {\r\n      tag.title = this.setTitle(tag, 'checkbox', result);\r\n      tag.value[key] = result;\r\n      tag.value.cache = cloneDeep(tag.value.value);\r\n      this.updateSelectedTags(tag);\r\n    } else {\r\n      this.removeTag(tag);\r\n    }\r\n  }\r\n\r\n  // checkbox | label 将选中项对应filterKey的值合并的方法\r\n  getItemValue(value: any, key: string) {\r\n    if (value && Array.isArray(value)) {\r\n      const result = value.map((item) => item[key]);\r\n      return result.join(' | ');\r\n    }\r\n  }\r\n\r\n  checkDropdownBoundary(dropdown: DropDownDirective, dropdownMenu: DropDownAppendToBodyComponent) {\r\n    if (this.dropdownBoundary && dropdownMenu) {\r\n      const tagRect = dropdown.el.nativeElement.getBoundingClientRect();\r\n      const hostRect = this.el.nativeElement.getBoundingClientRect();\r\n      if (tagRect.left < hostRect.left) {\r\n        dropdownMenu.overlay.offsetX = hostRect.left - tagRect.left;\r\n        dropdownMenu.overlay.overlayRef.updatePosition();\r\n      } else if (tagRect.left + tagRect.width > hostRect.left + hostRect.width) {\r\n        dropdownMenu.overlay.offsetX = 0;\r\n        dropdownMenu.overlay.overlayRef.updatePosition();\r\n      }\r\n    }\r\n  }\r\n\r\n  // checkbox | label 当下拉菜单展开重置多选的选中状态\r\n  resetContent(dropdown: DropDownDirective, tag?: ICategorySearchTagItem, dropdownMenu?: DropDownAppendToBodyComponent) {\r\n    const tagItem = tag || this.currentSelectTag || { type: '', options: [] };\r\n    if (this.blurTimer) {\r\n      clearTimeout(this.blurTimer);\r\n    }\r\n    if (this.toggleEvent) {\r\n      this.toggleEvent(dropdown, tag, this.currentSelectTag);\r\n    }\r\n    if (dropdown.isOpen) {\r\n      this.checkDropdownBoundary(dropdown, dropdownMenu);\r\n      this.currentOpenDropdown = dropdown;\r\n    } else {\r\n      const item = tagItem as ICategorySearchTagItem;\r\n      this.clearCurrentSelectTagFromSearch();\r\n      this.currentOpenDropdown = undefined;\r\n      this.showNoDataTips = false;\r\n      delete item.allChecked;\r\n      delete item.halfChecked;\r\n      return;\r\n    }\r\n    if (tag && tag !== this.currentSelectTag) {\r\n      this.scrollToTailFlag = false;\r\n      if (!isEqual(tag.value.value, tag.value.cache)) {\r\n        tag.value.value = cloneDeep(tag.value.cache);\r\n      }\r\n      this.handleAccordingType(tag, dropdown, false);\r\n    } else if (this.currentSelectTag) {\r\n      this.scrollToTailFlag = true;\r\n      // checkbox 值不是必须数组，但重置时需空数组才能触发，undefined 不行\r\n      this.currentSelectTag.value.value = ['checkbox', ...this.valueIsArrayTypes].includes(this.currentSelectTag.type) ? [] : undefined;\r\n      this.handleAccordingType(this.currentSelectTag, dropdown, true);\r\n    }\r\n    this.showNoDataTips = this.showSearchConfig.noCategoriesAvailableTip ? this.categoryDisplay.every((item) => item.isSelected) : false;\r\n  }\r\n\r\n  cacheTreeData(tag: ICategorySearchTagItem) {\r\n    if (tag.type === 'treeSelect') {\r\n      // 下拉关闭时存储当前分类树的treeFactory\r\n      this.treeFactories[tag.field] = this.treeInstance.treeFactory;\r\n    }\r\n  }\r\n\r\n  showCurrentSearchCategory(tag: ICategorySearchTagItem, inputDropdown: DropDownDirective) {\r\n    this.isSearchCategory = true;\r\n    this.searchKey = '';\r\n    this.closeMenu(inputDropdown);\r\n    this.chooseCategory(tag, inputDropdown);\r\n    setTimeout(() => this.checkInputSearching(), this.DELAY);\r\n  }\r\n\r\n  clearCurrentSelectTagFromSearch() {\r\n    if (this.currentSelectTag && this.isSearchCategory) {\r\n      this.isSearchCategory = false;\r\n      setTimeout(() => this.finishChoose(), this.DELAY);\r\n    }\r\n  }\r\n\r\n  handleAccordingType(tag: ICategorySearchTagItem, dropdown: DropDownDirective, isCurrentSelectTag: boolean) {\r\n    switch (tag.type) {\r\n    case 'keyword':\r\n      this.searchKey = this.searchKeyCache;\r\n      this.searchKeyChangeEvent(this.searchKey);\r\n      this.inputEle.nativeElement.focus();\r\n      dropdown.isOpen = false;\r\n      break;\r\n    case 'treeSelect':\r\n      // 新选分类时使用原始tree数据，已选分类时使用空数据，待渲染后用存储数据覆盖\r\n      if (!isCurrentSelectTag) {\r\n        setTimeout(() => {\r\n          // 下拉展开将存储的数据合并覆盖当前树实例，刷新当前树显示。\r\n          merge(this.treeInstance.treeFactory, this.treeFactories[tag.field]);\r\n          this.treeSearch('');\r\n        });\r\n      }\r\n      setTimeout(() => {\r\n        const dom = tag.searchable && dropdown.menuEl.nativeElement.querySelector('.devui-search-container .devui-search>input');\r\n        if (dom) {\r\n          dom.focus();\r\n        }\r\n      }, this.DROPDOWN_ANIMATION_TIMEOUT);\r\n      break;\r\n    case 'textInput':\r\n      setTimeout(() => {\r\n        const inputDom: HTMLElement = this.document.querySelector('.devui-category-search-type-text-input');\r\n        if (inputDom) {\r\n          inputDom.focus();\r\n        }\r\n      }, this.DROPDOWN_ANIMATION_TIMEOUT);\r\n      break;\r\n    case 'checkbox':\r\n    case 'label':\r\n      if (tag.showSelectAll) {\r\n        this.isSelectAll(tag, false);\r\n      }\r\n      break;\r\n    default:\r\n    }\r\n  }\r\n\r\n  // label 合并名称和颜色字段赋给tag，待[tag]支持传入对象后可移除\r\n  mergeToLabel(obj: any) {\r\n    if (obj?.options && Array.isArray(obj.options)) {\r\n      obj.options.forEach((item) => {\r\n        item.$label = `${item[obj.filterKey || 'label']}_${item[obj.colorKey || 'color']}`;\r\n      });\r\n    }\r\n    return obj;\r\n  }\r\n\r\n  // label 拆分名称和颜色用于下拉选项显示\r\n  splitLabel(key: string, value: any) {\r\n    // 初始化选中类别生成标签时，value为label的对象，不需要对值进行操作\r\n    if (typeof value !== 'string') {\r\n      return;\r\n    }\r\n    const res = value && value.split('_');\r\n    const obj = res && { label: res[0], color: res[1] };\r\n    return obj && obj[key];\r\n  }\r\n\r\n  selectAll(tag: ICategorySearchTagItem) {\r\n    tag.halfChecked = false;\r\n    if (tag.allChecked) {\r\n      tag.value.value = cloneDeep(tag.options);\r\n    } else {\r\n      tag.value.value = [];\r\n    }\r\n  }\r\n\r\n  isSelectAll(tag: ICategorySearchTagItem, isValue = true) {\r\n    const value = isValue ? tag.value.value : tag.value.cache;\r\n    tag.allChecked = isEqual(value, tag.options);\r\n    tag.halfChecked = !tag.allChecked && !!value.length;\r\n  }\r\n\r\n  // textInput 文本输入框 处理选中项方法\r\n  getTextInputValue(tag: ICategorySearchTagItem) {\r\n    this.afterDropdownClosed();\r\n    tag.value[tag.filterKey || 'label'] = tag.value.cache = tag.value.value;\r\n    tag.title = this.setTitle(tag, 'textInput');\r\n    this.updateSelectedTags(tag);\r\n  }\r\n\r\n  // numberRange 数字范围 处理选中项方法\r\n  getNumberRangeValue(tag: ICategorySearchTagItem, dropdown?: DropDownDirective) {\r\n    const startNum = tag.value.value[0] || 0;\r\n    const endNum = tag.value.value[1] || 0;\r\n    if (tag.validateFunc) {\r\n      if (!tag.validateFunc(startNum, endNum, tag)) {\r\n        return;\r\n      }\r\n      if (dropdown) {\r\n        this.closeMenu(dropdown);\r\n      }\r\n    }\r\n    this.afterDropdownClosed();\r\n    tag.value.value = [startNum, endNum];\r\n    tag.value.cache = [startNum, endNum];\r\n    tag.value[tag.filterKey || 'label'] = `${startNum} - ${endNum}`;\r\n    tag.title = this.setTitle(tag, 'numberRange');\r\n    this.updateSelectedTags(tag);\r\n  }\r\n\r\n  // treeSelect 树 处理选中项方法\r\n  getTreeValue(tag: ICategorySearchTagItem, isConfirm = true) {\r\n    if (isConfirm) {\r\n      this.afterDropdownClosed();\r\n    }\r\n    const result = [];\r\n    const selectedIds = [];\r\n    const data = tag.value.value as ITagOption[];\r\n    data.forEach((item) => {\r\n      result.push(item[tag.filterKey || tag.treeNodeTitleKey || 'title']);\r\n      selectedIds.push(item[tag.treeNodeIdKey || 'id']);\r\n    });\r\n    if (result.length) {\r\n      tag.value.cache = cloneDeep(tag.value.value);\r\n      tag.value[tag.filterKey || 'label'] = result.join(',');\r\n      tag.title = this.setTitle(tag, 'treeSelect');\r\n      if (isConfirm) {\r\n        this.cacheTreeData(tag);\r\n        this.updateSelectedTags(tag);\r\n      } else {\r\n        tag.options = this.initTreeChecked(tag, tag.options, selectedIds);\r\n      }\r\n    } else {\r\n      this.removeTag(tag);\r\n    }\r\n  }\r\n\r\n  initTreeChecked(tag: ICategorySearchTagItem, tree: any, selectedIds: string[]) {\r\n    if (Array.isArray(tree)) {\r\n      return tree.map((item) => this.initTreeChecked(tag, item, selectedIds));\r\n    } else if (tree) {\r\n      const idKey = tag.treeNodeIdKey || 'id';\r\n      const childKey = tag.treeNodeChildrenKey || 'children';\r\n      if (Array.isArray(tree[childKey]) && ['upward', 'both', undefined].includes(tag.checkableRelation)) {\r\n        let checkedChild = 0;\r\n        tree[childKey] = this.initTreeChecked(tag, tree[childKey], selectedIds);\r\n        tree[childKey].forEach((child) => child.isChecked && checkedChild++);\r\n        tree.halfChecked = checkedChild > 0 && checkedChild < tree[childKey].length;\r\n        tree.isChecked = checkedChild > 0 && !tree.halfChecked;\r\n        return tree;\r\n      }\r\n      delete tree.halfChecked;\r\n      tree.isChecked = selectedIds.includes(tree[idKey]);\r\n      return tree;\r\n    }\r\n  }\r\n\r\n  onOperableNodeChecked(selectedNodes: ITreeItem[], tag: ICategorySearchTagItem) {\r\n    const selectedValueExtractor = (nodes) => {\r\n      return tag.leafOnly\r\n        ? nodes.filter((node) => !node.data.isParent).map((node) => node.data.originItem)\r\n        : nodes.map((node) => node.data.originItem);\r\n    };\r\n    if (tag.multiple) {\r\n      tag.value.value = selectedValueExtractor(selectedNodes);\r\n    }\r\n  }\r\n\r\n  onOperableNodeSelected(selectedNode: ITreeItem, tag: ICategorySearchTagItem) {\r\n    if (tag.multiple || (tag.leafOnly && selectedNode.data.isParent)) {\r\n      return;\r\n    }\r\n    if (selectedNode.data.isActive) {\r\n      tag.value.value = [selectedNode.data.originItem];\r\n      this.getTreeValue(tag);\r\n    } else {\r\n      selectedNode.data.isActive = true;\r\n    }\r\n  }\r\n\r\n  treeSearch(value: string, searchFn?: Function) {\r\n    this.treeSearchKey = value;\r\n    if (this.treeInstance) {\r\n      const searchRes = searchFn\r\n        ? searchFn(this.treeSearchKey, this.treeInstance)\r\n        : this.treeInstance.treeFactory.searchTree(this.treeSearchKey, true);\r\n      if (typeof searchRes === 'boolean') {\r\n        this.treeNoRecord = searchRes;\r\n      } else if (Array.isArray(searchRes)) {\r\n        this.treeNoRecord = searchRes.every((res) => !res);\r\n      }\r\n      this.treeInstance.treeFactory.getFlattenNodes();\r\n    }\r\n  }\r\n}\r\n","<div\r\n  #PrimeContainer\r\n  class=\"devui-category-search-container devui-category-search-id-{{ id }}\"\r\n  [ngClass]=\"{\r\n    'container-hover': isHover && !isFocus,\r\n    'container-active': inputDropdown.isOpen,\r\n    'devui-gray-style': styleType === 'gray',\r\n    disabled: disabled\r\n  }\"\r\n  (mouseenter)=\"isHover = true\"\r\n  (mouseleave)=\"isHover = false\"\r\n>\r\n  <div class=\"devui-category-search-icon\" (click)=\"searchInputValue()\">\r\n    <svg\r\n      class=\"svg-icon-search\"\r\n      width=\"16px\"\r\n      height=\"16px\"\r\n      viewBox=\"0 0 16 16\"\r\n      version=\"1.1\"\r\n      xmlns=\"http://www.w3.org/2000/svg\"\r\n      xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n    >\r\n      <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n        <path\r\n          d=\"M7.71295742,1.53283795 C11.0266659,1.53283795 13.7129574,4.21912945 13.7129574,7.53283795 C13.7129574,9.0690006 13.1356609,10.4703284 12.1861834,11.5317059 L14.5333041,13.8784875 C14.7285663,14.0737497 14.7285663,14.3903321 14.5333041,14.5855943 C14.3597378,14.7591606 14.0903134,14.7784458 13.8954453,14.6434497 L13.8261974,14.5855943 L11.4604434,12.2188804 C10.4336319,13.0411023 9.13072017,13.5328379 7.71295742,13.5328379 C4.39924893,13.5328379 1.71295742,10.8465464 1.71295742,7.53283795 C1.71295742,4.21912945 4.39924893,1.53283795 7.71295742,1.53283795 Z M7.71295742,2.53283795 C4.95153368,2.53283795 2.71295742,4.7714142 2.71295742,7.53283795 C2.71295742,10.2942617 4.95153368,12.5328379 7.71295742,12.5328379 C10.4743812,12.5328379 12.7129574,10.2942617 12.7129574,7.53283795 C12.7129574,4.7714142 10.4743812,2.53283795 7.71295742,2.53283795 Z\"\r\n          fill-rule=\"nonzero\"\r\n        ></path>\r\n      </g>\r\n    </svg>\r\n  </div>\r\n  <div #ScrollBarContainer class=\"devui-category-search-line-container\">\r\n    <ul class=\"devui-category-search-line\">\r\n      <li\r\n        class=\"devui-tag-item\"\r\n        *ngFor=\"let item of selectedTags\"\r\n        #selectedDropdown=\"d-dropdown\"\r\n        #selectedDropdownMenu=\"d-dropdown-append-to-body\"\r\n        dDropDown\r\n        appendToBody\r\n        dDropDownToggle\r\n        [appendToBodyDirections]=\"['rightDown', 'rightUp', 'leftDown', 'leftUp']\"\r\n        [closeScope]=\"checkType(item)\"\r\n        (toggleEvent)=\"resetContent(selectedDropdown, item, selectedDropdownMenu)\"\r\n      >\r\n        <ng-template\r\n          [ngTemplateOutlet]=\"joinLabelTypesTemplate\"\r\n          [ngTemplateOutletContext]=\"{ item: item, isJoinLabelType: joinLabelTypes.includes(item.type) }\"\r\n        ></ng-template>\r\n        <div dDropDownMenu class=\"devui-dropdown-menu devui-dropdown-menu-fix\" [ngClass]=\"{ 'max-height': item.type !== 'treeSelect' }\">\r\n          <ng-template\r\n            [ngTemplateOutlet]=\"item.customTemplate || templates[item.type]\"\r\n            [ngTemplateOutletContext]=\"{ tagOption: item, dropdown: selectedDropdown, isSelected: true }\"\r\n          ></ng-template>\r\n        </div>\r\n      </li>\r\n      <div class=\"devui-category-search-input\">\r\n        <div\r\n          class=\"devui-input-container\"\r\n          #inputDropdown=\"d-dropdown\"\r\n          dDropDown\r\n          appendToBody\r\n          [appendToBodyDirections]=\"['rightDown', 'rightUp', 'leftDown', 'leftUp']\"\r\n          [autofocusToggleElement]=\"inputAutofocus\"\r\n          [closeScope]=\"checkType(currentSelectTag)\"\r\n          [trigger]=\"'manually'\"\r\n          (toggleEvent)=\"resetContent(inputDropdown)\"\r\n        >\r\n          <div class=\"devui-input-box\">\r\n            <input\r\n              class=\"devui-category-search-toggle\"\r\n              autocomplete=\"off\"\r\n              #InputEle\r\n              dDropDownToggle\r\n              [readOnly]=\"inputReadOnly\"\r\n              [placeholder]=\"disabled ? '' : placeholderText || i18nCategorySearchText?.searchPlaceholder || ''\"\r\n              [maxlength]=\"showSearchConfig.searchInputMaxLength\"\r\n              [disabled]=\"disabled\"\r\n              [ngModel]=\"searchKey\"\r\n              (ngModelChange)=\"searchKeyChangeEvent($event)\"\r\n              (click)=\"openMenu(inputDropdown, $event)\"\r\n              (keyup)=\"checkInputSearching(); openMenu(inputDropdown, $event)\"\r\n              (keydown.backspace)=\"backspaceEvent(inputDropdown)\"\r\n              (keydown.enter)=\"searchInputValue($event); closeMenu(inputDropdown)\"\r\n              (focus)=\"isHover = false; isFocus = true\"\r\n              (blur)=\"isFocus = false; blurInput($event)\"\r\n            />\r\n          </div>\r\n          <div\r\n            *ngIf=\"!enterSearch || (enterSearch && showSearchCategory)\"\r\n            dDropDownMenu\r\n            class=\"devui-dropdown-menu devui-dropdown-menu-fix devui-scrollbar devui-category-dropdown-menu-{{ id }}\"\r\n            [ngClass]=\"{ 'max-height': currentSelectTag?.type !== 'treeSelect' }\"\r\n          >\r\n            <ul *ngIf=\"!currentSelectTag\" class=\"devui-dropdown-menu-template devui-scrollbar\">\r\n              <ng-container *ngIf=\"!enterSearch && !currentSelectTag\">\r\n                <ng-container *ngFor=\"let item of categoryDisplay\">\r\n                  <li *ngIf=\"item.groupLength\" class=\"devui-dropdown-item devui-category-search-group\">\r\n                    <ng-template\r\n                      [ngTemplateOutlet]=\"customGroupNameTemplate || defaultGroupNameTemplate\"\r\n                      [ngTemplateOutletContext]=\"{ tag: item }\"\r\n                    ></ng-template>\r\n                  </li>\r\n                  <li\r\n                    *ngIf=\"item.groupLength === undefined && !item.isSelected\"\r\n                    class=\"devui-dropdown-item\"\r\n                    (click)=\"chooseCategory(item, inputDropdown); closeMenu(inputDropdown)\"\r\n                  >\r\n                    <ng-template\r\n                      [ngTemplateOutlet]=\"customCategoryNameTemplate || defaultCategoryNameTemplate\"\r\n                      [ngTemplateOutletContext]=\"{ tag: item }\"\r\n                    ></ng-template>\r\n                  </li>\r\n                </ng-container>\r\n                <div class=\"devui-no-data-text\" *ngIf=\"showNoDataTips\">\r\n                  {{ textConfig.noCategoriesAvailable || i18nCategorySearchText?.noFilterConditions }}\r\n                </div>\r\n              </ng-container>\r\n              <ng-container *ngIf=\"enterSearch\">\r\n                <li\r\n                  *ngIf=\"showSearchConfig.keyword\"\r\n                  class=\"devui-dropdown-item devui-search-description\"\r\n                  (click)=\"searchInputValue($event); closeMenu(inputDropdown)\"\r\n                >\r\n                  <span class=\"icon-search\"></span>{{ showSearchConfig.keywordDescription(searchKey) }}\r\n                </li>\r\n                <ng-container *ngIf=\"showSearchConfig.field\">\r\n                  <li *ngFor=\"let item of searchField\" (click)=\"searchCategory(item); closeMenu(inputDropdown)\" class=\"devui-dropdown-item\">\r\n                    <span class=\"icon-search\"></span>{{ showSearchConfig.fieldDescription(item?.label) }}\r\n                  </li>\r\n                </ng-container>\r\n                <div\r\n                  *ngIf=\"(showSearchConfig.keyword || showSearchConfig.field) && showSearchConfig.category && currentSearchCategory?.length\"\r\n                  class=\"devui-dividing-line\"\r\n                ></div>\r\n                <ng-container *ngIf=\"showSearchConfig.category && currentSearchCategory?.length\">\r\n                  <div class=\"devui-dropdown-menu-tip\" [style.paddingBottom]=\"currentSearchCategory.length ? '0' : '12px'\">\r\n                    {{ showSearchConfig.categoryDescription }}\r\n                  </div>\r\n                  <ul class=\"devui-category-search-keyword-in-category devui-dropdown-menu-template devui-scrollbar\">\r\n                    <li\r\n                      *ngFor=\"let item of currentSearchCategory\"\r\n                      (click)=\"showCurrentSearchCategory(item, inputDropdown)\"\r\n                      class=\"devui-dropdown-item\"\r\n                    >\r\n                      <span>{{ item?.label }}</span>\r\n                    </li>\r\n                  </ul>\r\n                </ng-container>\r\n              </ng-container>\r\n            </ul>\r\n            <ng-container *ngIf=\"!enterSearch && currentSelectTag\">\r\n              <ng-template\r\n                [ngTemplateOutlet]=\"currentSelectTag.customTemplate || templates[currentSelectTag.type]\"\r\n                [ngTemplateOutletContext]=\"{ tagOption: currentSelectTag, dropdown: inputDropdown }\"\r\n              ></ng-template>\r\n            </ng-container>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </ul>\r\n  </div>\r\n  <div class=\"devui-category-search-extended-container\" *ngIf=\"showExtendedConfig\">\r\n    <ng-template *ngIf=\"operationConfig.clear.show\" [ngTemplateOutlet]=\"operationConfig.clear.template || clearTpl\"></ng-template>\r\n    <ng-template *ngIf=\"operationConfig.save.show\" [ngTemplateOutlet]=\"operationConfig.save.template || saveTpl\"></ng-template>\r\n    <ng-template *ngIf=\"operationConfig.more.show\" [ngTemplateOutlet]=\"operationConfig.more.template || moreTpl\"></ng-template>\r\n    <ng-template *ngIf=\"operationConfig.customTemplate\" [ngTemplateOutlet]=\"operationConfig.customTemplate\"></ng-template>\r\n  </div>\r\n</div>\r\n\r\n<ng-template #defaultGroupNameTemplate let-item=\"tag\">\r\n  <strong>{{ item?.groupName }}</strong>\r\n</ng-template>\r\n\r\n<ng-template #defaultCategoryNameTemplate let-item=\"tag\">\r\n  <span title=\"{{ item?.label }}\">{{ item?.label }}</span>\r\n</ng-template>\r\n\r\n<ng-template #noData>\r\n  <div class=\"devui-no-data-tip\">{{ i18nCommonText?.noData }}</div>\r\n</ng-template>\r\n\r\n<ng-template #clearTpl>\r\n  <div\r\n    class=\"devui-category-search-icon\"\r\n    [class.disabled]=\"operationConfig.clear.disabled\"\r\n    (click)=\"!operationConfig.clear.disabled && clearFilter($event)\"\r\n  >\r\n    <svg\r\n      width=\"16px\"\r\n      height=\"16px\"\r\n      viewBox=\"0 0 16 16\"\r\n      version=\"1.1\"\r\n      xmlns=\"http://www.w3.org/2000/svg\"\r\n      xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n    >\r\n      <title>{{ i18nCategorySearchText?.clearFilterCondition }}</title>\r\n      <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n        <g transform=\"translate(3.000000, 3.000000)\" fill-rule=\"nonzero\">\r\n          <path\r\n            d=\"M-0.353553391,-0.353553391 C-0.179987039,-0.527119742 0.0894373624,-0.546404893 0.284305503,-0.411408841 L0.353553391,-0.353553391 L10.3535534,9.64644661 C10.5488155,9.84170876 10.5488155,10.1582912 10.3535534,10.3535534 C10.179987,10.5271197 9.91056264,10.5464049 9.7156945,10.4114088 L9.64644661,10.3535534 L-0.353553391,0.353553391 C-0.548815536,0.158291245 -0.548815536,-0.158291245 -0.353553391,-0.353553391 Z\"\r\n          ></path>\r\n          <path\r\n            d=\"M9.64644661,-0.353553391 C9.84170876,-0.548815536 10.1582912,-0.548815536 10.3535534,-0.353553391 C10.5271197,-0.179987039 10.5464049,0.0894373624 10.4114088,0.284305503 L10.3535534,0.353553391 L0.353553391,10.3535534 C0.158291245,10.5488155 -0.158291245,10.5488155 -0.353553391,10.3535534 C-0.527119742,10.179987 -0.546404893,9.91056264 -0.411408841,9.7156945 L-0.353553391,9.64644661 L9.64644661,-0.353553391 Z\"\r\n          ></path>\r\n        </g>\r\n      </g>\r\n    </svg>\r\n  </div>\r\n</ng-template>\r\n\r\n<ng-template #saveTpl>\r\n  <div\r\n    class=\"devui-category-search-icon\"\r\n    #saveDropdown=\"d-dropdown\"\r\n    dDropDown\r\n    appendToBody\r\n    [appendToBodyDirections]=\"['rightDown', 'rightUp', 'leftDown', 'leftUp']\"\r\n    [class.disabled]=\"operationConfig.save.disabled\"\r\n    [closeScope]=\"'blank'\"\r\n    [disabled]=\"operationConfig.save.disabled\"\r\n    (toggleEvent)=\"createFilterInputAutoFocus(saveDropdown, createFilterInput, filterNameForm)\"\r\n  >\r\n    <svg\r\n      dDropDownToggle\r\n      width=\"16px\"\r\n      height=\"16px\"\r\n      viewBox=\"0 0 16 16\"\r\n      version=\"1.1\"\r\n      xmlns=\"http://www.w3.org/2000/svg\"\r\n      xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n    >\r\n      <title>{{ textConfig.createFilter }}</title>\r\n      <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n        <path\r\n          d=\"M13,1.5 C13.8284379,1.5 14.5,2.17156982 14.5,3 L14.5,3 L14.5,13 C14.5,13.8284424 13.8284424,14.5 13,14.5 L13,14.5 L3,14.5 C2.17156982,14.5 1.5,13.8284379 1.5,13 L1.5,13 L1.5,3 C1.5,2.17157429 2.17157429,1.5 3,1.5 L3,1.5 Z M4.833,2.5 L3,2.5 C2.72385904,2.5 2.5,2.72385904 2.5,3 L2.5,3 L2.5,13 C2.5,13.2761506 2.723852,13.5 3,13.5 L3,13.5 L13,13.5 C13.2761576,13.5 13.5,13.2761576 13.5,13 L13.5,13 L13.5,3 C13.5,2.723852 13.2761506,2.5 13,2.5 L13,2.5 L11.166,2.5 L11.1666667,5.33333333 C11.1666667,5.57879322 10.9897915,5.7829417 10.7565423,5.82527766 L10.6666667,5.83333333 L5.33333333,5.83333333 C5.05719096,5.83333333 4.83333333,5.60947571 4.83333333,5.33333333 L4.83333333,5.33333333 L4.833,2.5 Z M10.3333333,11.5 C10.6094757,11.5 10.8333333,11.7238576 10.8333333,12 C10.8333333,12.2454599 10.6564582,12.4496084 10.423209,12.4919443 L10.3333333,12.5 L5.66666667,12.5 C5.39052429,12.5 5.16666667,12.2761424 5.16666667,12 C5.16666667,11.7545401 5.34354183,11.5503916 5.57679103,11.5080557 L5.66666667,11.5 L10.3333333,11.5 Z M10.166,2.5 L5.833,2.5 L5.833,4.833 L10.166,4.833 L10.166,2.5 Z\"\r\n          fill-rule=\"nonzero\"\r\n        ></path>\r\n      </g>\r\n    </svg>\r\n    <div dDropDownMenu class=\"devui-save-panel\">\r\n      <div class=\"devui-save-panel-title\">\r\n        <span>{{ textConfig.createFilter }}</span>\r\n      </div>\r\n      <div class=\"devui-save-filter-name\">\r\n        <span>{{ textConfig.filterTitle }}</span>\r\n        <form #filterNameForm=\"ngForm\">\r\n          <input\r\n            name=\"filter-name\"\r\n            class=\"devui-category-search-toggle\"\r\n            autocomplete=\"off\"\r\n            #createFilterInput\r\n            dTextInput\r\n            [(ngModel)]=\"filterName\"\r\n            [placeholder]=\"i18nCategorySearchText?.placeholder || ''\"\r\n            [dValidateRules]=\"filterNameRules\"\r\n          />\r\n          <svg\r\n            *ngIf=\"showFilterNameClear\"\r\n            (click)=\"$event.preventDefault(); $event.stopPropagation(); filterNameForm.form.reset()\"\r\n            width=\"16px\"\r\n            height=\"16px\"\r\n            viewBox=\"0 0 16 16\"\r\n          >\r\n            <title>{{ i18nCategorySearchText?.clearFilterCondition }}</title>\r\n            <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n              <path\r\n                d=\"M8,1 C11.8659932,1 15,4.13400675 15,8 C15,11.8659932 11.8659932,15 8,15 C4.13400675,15 1,11.8659932 1,8 C1,4.13400675 4.13400675,1 8,1 Z M5.87867966,5.17157288 C5.68341751,4.97631073 5.36683502,4.97631073 5.17157288,5.17157288 C4.99800652,5.34513923 4.97872137,5.61456363 5.11371742,5.80943177 L5.17157288,5.87867966 L7.29218611,7.99929289 L5.17157288,10.1213203 C4.97631073,10.3165825 4.97631073,10.633165 5.17157288,10.8284271 C5.34513923,11.0019935 5.61456363,11.0212786 5.80943177,10.8862826 L5.87867966,10.8284271 L7.99929289,8.70639967 L10.1213203,10.8284271 C10.3165825,11.0236893 10.633165,11.0236893 10.8284271,10.8284271 C11.0019935,10.6548608 11.0212786,10.3854364 10.8862826,10.1905682 L10.8284271,10.1213203 L8.70710678,8 L10.8284271,5.87867966 C11.0236893,5.68341751 11.0236893,5.36683502 10.8284271,5.17157288 C10.6548608,4.99800652 10.3854364,4.97872137 10.1905682,5.11371742 L10.1213203,5.17157288 L8,7.29289322 L5.87867966,5.17157288 Z\"\r\n                fill-rule=\"nonzero\"\r\n              ></path>\r\n            </g>\r\n          </svg>\r\n        </form>\r\n      </div>\r\n      <div class=\"devui-save-panel-operation-area\">\r\n        <d-button [disabled]=\"filterNameForm.invalid\" (btnClick)=\"createFilterFn(); saveDropdown.toggle()\">{{\r\n          i18nCategorySearchText?.confirm\r\n        }}</d-button>\r\n        <d-button bsStyle=\"common\" (btnClick)=\"saveDropdown.toggle()\">{{ i18nCategorySearchText?.cancel }}</d-button>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</ng-template>\r\n\r\n<ng-template #moreTpl>\r\n  <div\r\n    class=\"devui-category-search-icon\"\r\n    #seeMoreDropdown=\"d-dropdown\"\r\n    dDropDown\r\n    appendToBody\r\n    [alignOrigin]=\"primeContainer\"\r\n    [appendToBodyDirections]=\"['rightDown', 'rightUp', 'leftDown', 'leftUp']\"\r\n    [class.disabled]=\"operationConfig.more.disabled\"\r\n  >\r\n    <svg\r\n      dDropDownToggle\r\n      width=\"14px\"\r\n      height=\"14px\"\r\n      viewBox=\"0 0 16 16\"\r\n      version=\"1.1\"\r\n      xmlns=\"http://www.w3.org/2000/svg\"\r\n      xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n    >\r\n      <title>{{ i18nCategorySearchText?.seeMore }}</title>\r\n      <g id=\"edit-icon/unordered-list\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n        <path\r\n          d=\"M5,1 L16,1 L16,2.5 L5,2.5 L5,1 Z M2,4 C0.8954305,4 0,3.1045695 0,2 C0,0.8954305 0.8954305,0 2,0 C3.1045695,0 4,0.8954305 4,2 C4,3.1045695 3.1045695,4 2,4 Z M2,3 C2.55228475,3 3,2.55228475 3,2 C3,1.44771525 2.55228475,1 2,1 C1.44771525,1 1,1.44771525 1,2 C1,2.55228475 1.44771525,3 2,3 Z M2,10 C0.8954305,10 0,9.1045695 0,8 C0,6.8954305 0.8954305,6 2,6 C3.1045695,6 4,6.8954305 4,8 C4,9.1045695 3.1045695,10 2,10 Z M2,9 C2.55228475,9 3,8.55228475 3,8 C3,7.44771525 2.55228475,7 2,7 C1.44771525,7 1,7.44771525 1,8 C1,8.55228475 1.44771525,9 2,9 Z M2,16 C0.8954305,16 0,15.1045695 0,14 C0,12.8954305 0.8954305,12 2,12 C3.1045695,12 4,12.8954305 4,14 C4,15.1045695 3.1045695,16 2,16 Z M2,15 C2.55228475,15 3,14.5522847 3,14 C3,13.4477153 2.55228475,13 2,13 C1.44771525,13 1,13.4477153 1,14 C1,14.5522847 1.44771525,15 2,15 Z M5,7 L16,7 L16,8.5 L5,8.5 L5,7 Z M5,13 L16,13 L16,14.5 L5,14.5 L5,13 Z\"\r\n        ></path>\r\n      </g>\r\n    </svg>\r\n    <div dDropDownMenu class=\"devui-selected-tags-list\">\r\n      <ul [ngStyle]=\"{ width: PrimeContainer?.clientWidth + 'px' }\">\r\n        <li class=\"devui-tag-item\" *ngFor=\"let item of selectedTags; let i = index\" (click)=\"scrollToTag(i, $event)\">\r\n          <ng-template\r\n            [ngTemplateOutlet]=\"joinLabelTypesTemplate\"\r\n            [ngTemplateOutletContext]=\"{ item: item, isJoinLabelType: joinLabelTypes.includes(item.type) }\"\r\n          ></ng-template>\r\n        </li>\r\n      </ul>\r\n    </div>\r\n  </div>\r\n</ng-template>\r\n\r\n<ng-template #joinLabelTypesTemplate let-item=\"item\" let-isJoinLabelType=\"isJoinLabelType\">\r\n  <div class=\"devui-tag-container\">\r\n    <d-tag\r\n      [tag]=\"item\"\r\n      [mode]=\"disabled || item.deletable === false ? 'default' : 'closeable'\"\r\n      [titleContent]=\"item.title\"\r\n      [customViewTemplate]=\"item.tagCustomTemplate || (isJoinLabelType ? defaultJoinLabelTypeTemplate : defaultTagTemplate)\"\r\n      (tagDelete)=\"removeTag(item, $event.event)\"\r\n    ></d-tag>\r\n  </div>\r\n</ng-template>\r\n\r\n<ng-template #defaultTagTemplate let-tag=\"tag\">\r\n  <span [style.maxWidth]=\"tagMaxWidth + 'px'\">{{ tag.label + ': ' + (tag.value[tag.filterKey || 'label'] || '') }}</span>\r\n</ng-template>\r\n\r\n<ng-template #defaultJoinLabelTypeTemplate let-tag=\"tag\" let-colorKey=\"tag.colorKey || 'color'\">\r\n  <span>{{ tag.label }}: </span>\r\n  <span class=\"devui-category-search-multi-tag\" [style.max-width]=\"tagMaxWidth + 'px'\">\r\n    <ng-container *ngFor=\"let val of tag.value.cache; let i = index\">\r\n      <span *ngIf=\"i > 0\" class=\"devui-color-block-split-line\">{{ textConfig.labelConnector || '|' }}</span>\r\n      <span *ngIf=\"tag.type === 'label'\" class=\"devui-color-block-sm\" [style.background]=\"val[colorKey]\"></span>\r\n      <span [style.color]=\"val[colorKey]\" [style.max-width]=\"tagMaxWidth + 'px'\">{{ val[tag.filterKey || 'label'] || '' }}</span>\r\n    </ng-container>\r\n  </span>\r\n</ng-template>\r\n\r\n<ng-template [dType]=\"'radio'\" let-tagOption=\"tagOption\" let-key=\"tagOption.filterKey || 'label'\">\r\n  <div *ngIf=\"!tagOption.options?.length\">\r\n    <ng-container *ngTemplateOutlet=\"noData\"></ng-container>\r\n  </div>\r\n  <ul *ngIf=\"tagOption.options?.length\" class=\"devui-dropdown-menu-template devui-scrollbar\">\r\n    <li\r\n      *ngFor=\"let item of tagOption.options\"\r\n      title=\"{{ item[key] }}\"\r\n      class=\"devui-dropdown-item\"\r\n      [class.active]=\"tagOption?.value[key] === item[key]\"\r\n      (click)=\"chooseItem(tagOption, item)\"\r\n    >\r\n      <span>{{ item[key] }}</span>\r\n    </li>\r\n  </ul>\r\n</ng-template>\r\n\r\n<ng-template [dType]=\"'dateRange'\" let-tagOption=\"tagOption\" let-dropdown=\"dropdown\">\r\n  <d-datepicker-calendar\r\n    #datepickerCalendarItem\r\n    *ngIf=\"dropdown.isOpen\"\r\n    id=\"{{ tagOption.field }}\"\r\n    style=\"overflow-x: hidden\"\r\n    #dDatepickerPro\r\n    [isRangeType]=\"true\"\r\n    [showTime]=\"tagOption.showTime\"\r\n    [activeRangeType]=\"tagOption.activeRangeType || 'start'\"\r\n    [(ngModel)]=\"tagOption.value.value\"\r\n    (input)=\"dateChange(datepickerCalendarItem, tagOption)\"\r\n  >\r\n    <ng-template #footerTemplate>\r\n      <div class=\"devui-datepicker-footer\">\r\n        <d-button\r\n          style=\"margin-right: 8px\"\r\n          bsStyle=\"primary\"\r\n          (btnClick)=\"confirmDate(datepickerCalendarItem, tagOption, dropdown)\"\r\n          [disabled]=\"\r\n            tagOption.showTime ? false : !tagOption.value.value || tagOption.value.value.length < 2 || tagOption.value.value.includes(null)\r\n          \"\r\n        >\r\n          {{ i18nCategorySearchText?.confirm }}\r\n        </d-button>\r\n        <d-button bsStyle=\"common\" (btnClick)=\"closeMenu(dropdown)\">{{ i18nCategorySearchText?.cancel }}</d-button>\r\n      </div>\r\n    </ng-template>\r\n  </d-datepicker-calendar>\r\n</ng-template>\r\n\r\n<ng-template #selectAllTemplate let-tagOption=\"tagOption\">\r\n  <div class=\"devui-category-search-select-all\" (click)=\"selectAll(tagOption)\">\r\n    <d-checkbox\r\n      [label]=\"i18nCommonText.checkAll\"\r\n      [isShowTitle]=\"false\"\r\n      [halfchecked]=\"tagOption.halfChecked\"\r\n      [(ngModel)]=\"tagOption.allChecked\"\r\n    ></d-checkbox>\r\n  </div>\r\n</ng-template>\r\n\r\n<ng-template [dType]=\"'checkbox'\" let-tagOption=\"tagOption\" let-dropdown=\"dropdown\">\r\n  <ng-container *ngIf=\"tagOption.options?.length; else noData\">\r\n    <ng-template\r\n      *ngIf=\"tagOption.showSelectAll\"\r\n      [ngTemplateOutlet]=\"selectAllTemplate\"\r\n      [ngTemplateOutletContext]=\"{ tagOption: tagOption }\"\r\n    ></ng-template>\r\n    <div *ngIf=\"tagOption.options?.length\" class=\"devui-dropdown-menu-template devui-scrollbar\">\r\n      <d-checkbox-group\r\n        [options]=\"tagOption.options\"\r\n        [filterKey]=\"tagOption.filterKey || 'label'\"\r\n        [isShowTitle]=\"true\"\r\n        [(ngModel)]=\"tagOption.value.value\"\r\n        (ngModelChange)=\"isSelectAll(tagOption)\"\r\n      >\r\n      </d-checkbox-group>\r\n    </div>\r\n  </ng-container>\r\n  <div class=\"devui-dropdown-operation-area\">\r\n    <d-button (btnClick)=\"chooseItems(tagOption); closeMenu(dropdown)\">{{ i18nCategorySearchText?.confirm }}</d-button>\r\n    <d-button bsStyle=\"common\" (btnClick)=\"closeMenu(dropdown)\">{{ i18nCategorySearchText?.cancel }}</d-button>\r\n  </div>\r\n</ng-template>\r\n\r\n<ng-template [dType]=\"'label'\" let-tagOption=\"tagOption\" let-dropdown=\"dropdown\">\r\n  <ng-container *ngIf=\"tagOption.options?.length; else noData\">\r\n    <ng-template\r\n      *ngIf=\"tagOption.showSelectAll\"\r\n      [ngTemplateOutlet]=\"selectAllTemplate\"\r\n      [ngTemplateOutletContext]=\"{ tagOption: tagOption }\"\r\n    ></ng-template>\r\n    <div class=\"devui-dropdown-menu-template devui-scrollbar\">\r\n      <d-checkbox-group\r\n        [(ngModel)]=\"tagOption.value.value\"\r\n        [options]=\"tagOption.options\"\r\n        [filterKey]=\"'$label'\"\r\n        [labelTemplate]=\"labelContent\"\r\n        [isShowTitle]=\"true\"\r\n      >\r\n        <ng-template #labelContent let-label=\"label\">\r\n          <span class=\"devui-color-block\" [style.background]=\"splitLabel('color', label)\" title=\"{{ splitLabel('label', label) }}\"></span>\r\n          <span title=\"{{ splitLabel('label', label) }}\">{{ splitLabel('label', label) }}</span>\r\n        </ng-template>\r\n      </d-checkbox-group>\r\n    </div>\r\n  </ng-container>\r\n  <div class=\"devui-dropdown-operation-area\">\r\n    <d-button (btnClick)=\"chooseItems(tagOption); closeMenu(dropdown)\">{{ i18nCategorySearchText?.confirm }}</d-button>\r\n    <d-button bsStyle=\"common\" (btnClick)=\"closeMenu(dropdown)\">{{ i18nCategorySearchText?.cancel }}</d-button>\r\n  </div>\r\n</ng-template>\r\n\r\n<ng-template [dType]=\"'textInput'\" let-tagOption=\"tagOption\" let-dropdown=\"dropdown\">\r\n  <form #textInputForm=\"ngForm\">\r\n    <input\r\n      name=\"text-input\"\r\n      class=\"devui-category-search-type-text-input\"\r\n      autocomplete=\"off\"\r\n      dTextInput\r\n      [(ngModel)]=\"tagOption.value.value\"\r\n      [maxlength]=\"tagOption.maxLength\"\r\n      [placeholder]=\"tagOption.placeholder || ''\"\r\n      [dValidateRules]=\"tagOption.validateRules\"\r\n    />\r\n  </form>\r\n  <div class=\"devui-dropdown-operation-area\">\r\n    <d-button [disabled]=\"textInputForm.invalid\" (btnClick)=\"getTextInputValue(tagOption); closeMenu(dropdown)\">{{\r\n      i18nCategorySearchText?.confirm\r\n    }}</d-button>\r\n    <d-button bsStyle=\"common\" (btnClick)=\"closeMenu(dropdown)\">{{ i18nCategorySearchText?.cancel }}</d-button>\r\n  </div>\r\n</ng-template>\r\n\r\n<ng-template [dType]=\"'numberRange'\" let-tagOption=\"tagOption\" let-dropdown=\"dropdown\">\r\n  <div class=\"devui-input-number-operation-area\">\r\n    <d-input-number\r\n      size=\"sm\"\r\n      [min]=\"tagOption.min?.left\"\r\n      [max]=\"tagOption.max?.left\"\r\n      [maxLength]=\"tagOption.maxLength?.left\"\r\n      [decimalLimit]=\"tagOption.decimalLimit?.left\"\r\n      [step]=\"tagOption.step?.left || 1\"\r\n      [reg]=\"tagOption.reg?.left\"\r\n      [placeholder]=\"tagOption.placeholder?.left || ''\"\r\n      [(ngModel)]=\"tagOption.value.value[0]\"\r\n    >\r\n    </d-input-number>\r\n    <span> - </span>\r\n    <d-input-number\r\n      size=\"sm\"\r\n      [min]=\"tagOption.min?.right\"\r\n      [max]=\"tagOption.max?.right\"\r\n      [maxLength]=\"tagOption.maxLength?.right\"\r\n      [decimalLimit]=\"tagOption.decimalLimit?.right\"\r\n      [step]=\"tagOption.step?.right || 1\"\r\n      [reg]=\"tagOption.reg?.right\"\r\n      [placeholder]=\"tagOption.placeholder?.right || ''\"\r\n      [(ngModel)]=\"tagOption.value.value[1]\"\r\n    >\r\n    </d-input-number>\r\n  </div>\r\n  <div class=\"devui-dropdown-operation-area\">\r\n    <d-button (btnClick)=\"getNumberRangeValue(tagOption, dropdown); !tagOption.validateFunc && closeMenu(dropdown)\">{{\r\n      i18nCategorySearchText?.confirm\r\n    }}</d-button>\r\n    <d-button bsStyle=\"common\" (btnClick)=\"closeMenu(dropdown)\">{{ i18nCategorySearchText?.cancel }}</d-button>\r\n  </div>\r\n</ng-template>\r\n\r\n<ng-template [dType]=\"'treeSelect'\" let-tagOption=\"tagOption\" let-dropdown=\"dropdown\" let-isSelected=\"isSelected\">\r\n  <div *ngIf=\"tagOption.multiple && tagOption.options?.length && tagOption.value.value?.length\">\r\n    <ul class=\"devui-select-list\">\r\n      <span>{{ i18nCategorySearchText?.selected }}</span>\r\n      <li class=\"devui-select-item devui-no-label-item\" *ngFor=\"let item of tagOption.value.value; last as isLast\">\r\n        {{ item[tagOption.filterKey || tagOption.treeNodeTitleKey || 'title'] }}\r\n        <span *ngIf=\"!isLast\">, </span>\r\n      </li>\r\n    </ul>\r\n  </div>\r\n  <div *ngIf=\"tagOption.searchable\" class=\"devui-search-container\">\r\n    <d-search\r\n      [placeholder]=\"tagOption.searchPlaceholder\"\r\n      [ngModel]=\"treeSearchKey\"\r\n      (ngModelChange)=\"treeSearch($event, tagOption.searchFn)\"\r\n    ></d-search>\r\n  </div>\r\n  <div\r\n    #treeSelectBox\r\n    class=\"devui-category-search-tree-container\"\r\n    [style.display]=\"tagOption.options?.length && !treeNoRecord ? 'block' : 'none'\"\r\n  >\r\n    <d-operable-tree\r\n      #OperableTree\r\n      *ngIf=\"dropdown.isOpen\"\r\n      class=\"devui-tree\"\r\n      [tree]=\"isSelected && treeFactories[tagOption.field] ? [] : tagOption.options\"\r\n      [treeNodeIdKey]=\"tagOption.treeNodeIdKey || 'id'\"\r\n      [treeNodeChildrenKey]=\"tagOption.treeNodeChildrenKey || 'children'\"\r\n      [treeNodeTitleKey]=\"tagOption.filterKey || tagOption.treeNodeTitleKey || 'title'\"\r\n      [checkboxDisabledKey]=\"tagOption.disabledKey || 'disabled'\"\r\n      [checkable]=\"tagOption.multiple\"\r\n      [checkableRelation]=\"tagOption.checkableRelation\"\r\n      [canActivateNode]=\"!tagOption.multiple\"\r\n      [canActivateParentNode]=\"!tagOption.leafOnly\"\r\n      [iconParentOpen]=\"tagOption.iconParentOpen || icons.iconParentOpen\"\r\n      [iconParentClose]=\"tagOption.iconParentClose || icons.iconParentClose\"\r\n      [iconLeaf]=\"tagOption.iconLeaf || icons.iconLeaf\"\r\n      (nodeChecked)=\"onOperableNodeChecked($event, tagOption)\"\r\n      (nodeSelected)=\"onOperableNodeSelected($event, tagOption); closeMenu(dropdown)\"\r\n    >\r\n    </d-operable-tree>\r\n  </div>\r\n  <div *ngIf=\"!tagOption.options?.length\">\r\n    <ng-container *ngTemplateOutlet=\"noData\"></ng-container>\r\n  </div>\r\n  <div *ngIf=\"treeNoRecord\" class=\"devui-no-data-tip\">{{ i18nCommonText?.noRecordsFound }}</div>\r\n  <div *ngIf=\"tagOption.multiple\" class=\"devui-dropdown-operation-area\">\r\n    <d-button [disabled]=\"!tagOption.value.value?.length\" (btnClick)=\"getTreeValue(tagOption); closeMenu(dropdown)\">{{\r\n      i18nCategorySearchText?.confirm\r\n    }}</d-button>\r\n    <d-button bsStyle=\"common\" (btnClick)=\"closeMenu(dropdown)\">{{ i18nCategorySearchText?.cancel }}</d-button>\r\n  </div>\r\n</ng-template>\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ButtonModule } from 'ng-devui/button';\nimport { CheckBoxModule } from 'ng-devui/checkbox';\nimport { DatepickerProModule } from 'ng-devui/datepicker-pro';\nimport { DropDownModule } from 'ng-devui/dropdown';\nimport { FormModule } from 'ng-devui/form';\nimport { InputNumberModule } from 'ng-devui/input-number';\nimport { LoadingModule } from 'ng-devui/loading';\nimport { SearchModule } from 'ng-devui/search';\nimport { TagsModule } from 'ng-devui/tags';\nimport { TextInputModule } from 'ng-devui/text-input';\nimport { TreeModule } from 'ng-devui/tree';\nimport { PopperModule } from 'ng-devui/utils';\nimport { CategorySearchComponent } from './category-search.component';\nimport { ContentTemplateDirective } from './content-template.directive';\nimport { DefaultTemplateDirective } from './default-template.directive';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormModule,\n    FormsModule,\n    DropDownModule,\n    TextInputModule,\n    SearchModule,\n    TagsModule,\n    ButtonModule,\n    CheckBoxModule,\n    InputNumberModule,\n    LoadingModule,\n    TreeModule,\n    PopperModule,\n    DatepickerProModule,\n  ],\n  declarations: [CategorySearchComponent, ContentTemplateDirective, DefaultTemplateDirective],\n  exports: [CategorySearchComponent, ContentTemplateDirective, DefaultTemplateDirective],\n})\nexport class CategorySearchModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i15.DefaultTemplateDirective"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsMa,MAAA,MAAM,GAAG;IACpB,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;;;MCnSE,wBAAwB,CAAA;AAInC,IAAA,WAAA,CAAmB,QAA0B,EAAA;QAA1B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAkB;KAAI;+GAJtC,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAxB,wBAAwB,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAET,oBAAA,QAAQ,EAAE,yCAAyC;AACpD,iBAAA,CAAA;gFAEU,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;;;MCFK,wBAAwB,CAAA;AAInC,IAAA,WAAA,CAAmB,QAA0B,EAAA;QAA1B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAkB;KAAI;+GAJtC,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAxB,wBAAwB,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAET,oBAAA,QAAQ,EAAE,uCAAuC;AAClD,iBAAA,CAAA;gFAEU,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;;;MC0CK,uBAAuB,CAAA;aAC3B,IAAO,CAAA,OAAA,GAAG,CAAH,CAAK,EAAA;AA0CnB,IAAA,IAA2C,YAAY,GAAA;QACrD,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;AAsDD,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,OAAO,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;KAC1E;AAED,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;KACzF;AAKD,IAAA,WAAA,CAC4B,GAAQ,EAC1B,gBAAkC,EAClC,IAAiB,EACjB,EAAc,EAAA;QAHI,IAAG,CAAA,GAAA,GAAH,GAAG,CAAK;QAC1B,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAa;QACjB,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QAhHf,IAAQ,CAAA,QAAA,GAA6B,EAAE,CAAC;QACxC,IAAkB,CAAA,kBAAA,GAAG,EAAE,CAAC;QACxB,IAAY,CAAA,YAAA,GAA6B,EAAE,CAAC;AACrD;;AAEG;QACM,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;AAC3B;;AAEG;QACM,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;AAC1B;;AAEG;QACM,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;QACtB,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QAEjB,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;QAC3B,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;QAEf,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;QACtB,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC;QACtB,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;AACzB,QAAA,IAAA,CAAA,kBAAkB,GAA2B,IAAI,CAAC;AAClD,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAC;AAKxB,QAAA,IAAA,CAAA,UAAU,GAAe;AAChC,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,YAAY,EAAE,EAAE;AAChB,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,cAAc,EAAE,GAAG;AACnB,YAAA,qBAAqB,EAAE,EAAE;SAC1B,CAAC;QACO,IAAe,CAAA,eAAA,GAAmB,EAAE,CAAC;QAGvB,IAAS,CAAA,SAAA,GAAG,SAAS,CAAC;QACtB,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC;AAIlC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAe,CAAC;AAC9C,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,EAAqB,CAAC;AAC3D,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAqB,CAAC;AAC1D,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAc,CAAC;AAC/C,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAU,CAAC;QAevD,IAAa,CAAA,aAAA,GAAG,EAAE,CAAC;QACnB,IAAU,CAAA,UAAA,GAAG,EAAE,CAAC;QAChB,IAAc,CAAA,cAAA,GAAG,EAAE,CAAC;QACpB,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QACpB,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;QACxB,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;QACzB,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;QAChB,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;QAChB,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;QACrB,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;QACvB,IAAK,CAAA,KAAA,GAAG,YAAY,CAAC;AACrB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;AAQ/B,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC;AACxB,QAAA,IAAA,CAAA,0BAA0B,GAAG,GAAG,CAAC;AACjC,QAAA,IAAA,CAAA,KAAK,GAAG,GAAG,CAAC;AACZ,QAAA,IAAA,CAAA,SAAS,GAAG,EAAE,CAAC;AACf,QAAA,IAAA,CAAA,eAAe,GAAG,EAAE,CAAC;AACrB,QAAA,IAAA,CAAA,aAAa,GAAG,EAAE,CAAC;AACnB,QAAA,IAAA,CAAA,cAAc,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACvC,IAAiB,CAAA,iBAAA,GAAG,CAAC,WAAW,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;AAE/D,QAAA,IAAA,CAAA,eAAe,GAAmB;AAChC,YAAA,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;AACrB,YAAA,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;AACpB,YAAA,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;SACtB,CAAC;QAUM,IAAa,CAAA,aAAA,GAAG,EAAE,CAAC;QACnB,IAAkB,CAAA,kBAAA,GAAG,EAAE,CAAC;AAQ9B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC;AACzB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAChD,QAAA,IAAI,CAAC,EAAE,GAAG,uBAAuB,CAAC,OAAO,EAAE,CAAC;QAC5C,IAAI,CAAC,gBAAgB,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,CAAC;AACvG,QAAA,IAAI,CAAC,IAAI;AACN,aAAA,UAAU,EAAE;AACZ,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,aAAA,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;KACzD;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,MAAM,EACJ,UAAU,EACV,SAAS,EACT,aAAa,EACb,kBAAkB,EAClB,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,SAAS,EACT,kBAAkB,EAClB,UAAU,GACX,GAAG,OAAO,CAAC;QACZ,MAAM,gBAAgB,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QACzG,IAAI,SAAS,EAAE;;AAEb,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC;AACrC,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;SAC7B;AACD,QAAA,IAAI,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE;AACvC,YAAA,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AAChG,YAAA,MAAM,CAAC,OAAO,CAAC,CAAC,WAAgB,KAAI;gBAClC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,KAAK,KAAK,WAAW,CAAC,KAAK,CAAC,CAAC;AAC5F,gBAAA,IAAI,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE;AACrB,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;iBACvB;AACH,aAAC,CAAC,CAAC;SACJ;AACD,QAAA,IAAI,kBAAkB,IAAI,QAAQ,IAAI,YAAY,EAAE;YAClD,IAAI,CAAC,IAAI,EAAE,CAAC;SACb;QACD,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;QACD,IAAI,kBAAkB,EAAE;YACtB,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;QACD,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;SACpD;QACD,IAAI,gBAAgB,EAAE;YACpB,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B;KACF;IAED,eAAe,GAAA;;AAEb,QAAA,UAAU,CAAC,MACT,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACrC,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;SACzD,CAAC,CACH,CAAC;QAEF,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,QAAQ,EAAE;;AAE5C,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;;YAExB,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,QAAQ,CAAC;iBACvD,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EACxB,GAAG,CAAC,MAAK;;AAEP,gBAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,oBAAA,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACjC,oBAAA,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;iBAChC;;AAEH,aAAC,CAAC;;AAEF,YAAA,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CACzB;AACA,iBAAA,SAAS,CAAC,CAAC,KAAY,KAAK,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC;SACtE;KACF;IAED,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;KACjF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KAC1B;AAED,IAAA,iBAAiB,CAAC,IAAI,EAAA;QACpB,IAAI,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjC,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;AAC1B,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACpB,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;AAClE,aAAC,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;gBAC5B,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvD,aAAC,CAAC,CAAC;YACH,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;gBAChC,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvD,aAAC,CAAC,CAAC;SACJ;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACpB,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,KAAK,CAAC;SACnC;aAAM;AACL,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,SAAS,CAAC;YACtC,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B;KACF;AAED,IAAA,oBAAoB,CAAC,IAAI,EAAA;AACvB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC;AAClC,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,cAAc,CAAC;AAClD,QAAA,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,IAAI,IAAI,CAAC,sBAAsB,EAAE,UAAU,CAAC;AACvG,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,IAAI,IAAI,CAAC,sBAAsB,EAAE,WAAW,CAAC;QACtG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB;YACrC,IAAI,CAAC,kBAAmC,CAAC,kBAAkB,IAAI,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC;QAC/G,IAAI,CAAC,gBAAgB,CAAC,gBAAgB;YACnC,IAAI,CAAC,kBAAmC,CAAC,gBAAgB,IAAI,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC;QAC9G,IAAI,CAAC,gBAAgB,CAAC,mBAAmB;YACtC,IAAI,CAAC,kBAAmC,CAAC,mBAAmB,IAAI,IAAI,CAAC,sBAAsB,CAAC,qBAAqB,CAAC;;AAErH,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,KAAK,4BAA4B,CAAC,CAAC;QAC9F,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,IAAI,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC;AACnF,YAAA,OAAO,CAAC,KAAK,GAAG,CAAA,EAAG,OAAO,CAAC,KAAK,CAAI,CAAA,EAAA,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC;SAC5D;KACF;IAED,aAAa,GAAA;AACX,QAAA,MAAM,YAAY,GAChB,OAAO,IAAI,CAAC,kBAAkB,KAAK,SAAS;AAC1C,cAAE;gBACA,OAAO,EAAE,IAAI,CAAC,kBAAkB;gBAChC,KAAK,EAAE,IAAI,CAAC,kBAAkB;gBAC9B,QAAQ,EAAE,IAAI,CAAC,kBAAkB;gBACjC,wBAAwB,EAAE,IAAI,CAAC,kBAAkB;AAClD,aAAA;AACD,cAAE,IAAI,CAAC,kBAAkB,CAAC;AAC9B,QAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,GAAG,YAAY,EAAE,CAAC;KACvE;IAED,eAAe,CAAC,QAAQ,GAAG,IAAI,EAAA;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,cAAc,CAAC;AACrD,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;AACjC,YAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,KAAK,4BAA4B,CAAC,CAAC;YACzG,IAAI,oBAAoB,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,KAAK,EAAE,EAAE;AAC9D,gBAAA,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;aACtC;AAAM,iBAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,oBAAoB,EAAE,KAAK,CAAC,KAAK,EAAE;AACjF,gBAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;aACnC;SACF;AACD,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,QAAQ,EAAE;YACZ,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B,aAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SAChB;AACD,QAAA,OAAO,MAAM,CAAC;KACf;AAED,IAAA,kBAAkB,CAAC,QAAiB,EAAA;AAClC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,IAAI,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC;AACjF,QAAA,MAAM,YAAY,GAA2B;AAC3C,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,KAAK,EAAE,4BAA4B;AACnC,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,KAAK,EAAE,CAAG,EAAA,KAAK,IAAI,IAAI,CAAC,SAAS,CAAE,CAAA;AACnC,YAAA,KAAK,EAAE;gBACL,KAAK,EAAE,IAAI,CAAC,SAAS;gBACrB,KAAK,EAAE,IAAI,CAAC,SAAS;gBACrB,KAAK,EAAE,IAAI,CAAC,SAAS;AACtB,aAAA;SACF,CAAC;AACF,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AAChD,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC;AACrC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;IAED,iBAAiB,GAAA;AACf,QAAA,MAAM,SAAS,GAAmB;AAChC,YAAA,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE;AAChC,YAAA,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE;AAC9B,YAAA,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE;SACnC,CAAC;AACF,QAAA,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACtC,QAAA,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;KACxC;IAED,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAC/B,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;AAC5D,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CACrC,CAAC,IAAI,KAAK,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CACtG,CAAC;SACH;;AAED,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AAC5B,YAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,YAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,KAAK,SAAS,CAAC;AAC3E,YAAA,IAAI,CAAC,gBAAgB;AACnB,gBAAA,MAAM,KAAK,QAAQ,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,KAAK,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;AAC1H,sBAAE,QAAQ;sBACR,SAAS,CAAC;SACjB;AACD,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC;AACrC,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;SAC7B;KACF;;AAGD,IAAA,gBAAgB,CAAC,IAAI,EAAA;AACnB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QACnG,QAAQ,CAAC,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,SAAS,CAAC;AAChD,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE;gBAC3B,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE;oBAClC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;iBACnC;aACF;SACF;aAAM;AACL,YAAA,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;SACvB;AACD,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACjI,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC;AAC7F,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAA;QAChC,IAAI,GAAG,KAAK,SAAS,IAAI,QAAQ,KAAK,QAAQ,EAAE;AAC9C,YAAA,OAAO,QAAQ,CAAC;SACjB;KACF;AAED,IAAA,QAAQ,CAAC,IAAS,EAAE,cAAc,GAAG,KAAK,EAAA;QACxC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;AACtC,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;gBACpB,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACrC,oBAAA,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;oBACnC,OAAO;iBACR;gBACD,IAAI,MAAM,GAAG,EAAE,CAAC;gBAChB,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC3F,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC7C,gBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;AACpB,oBAAA,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE;AAC9B,wBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;wBAC/B,OAAO;qBACR;AACD,oBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC/C,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC3C,wBAAA,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,CAAC;AACxE,wBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;qBACxB;iBACF;AACD,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBACpD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AACvE,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;iBACzB;AACH,aAAC,CAAC,CAAC;SACJ;KACF;AAED,IAAA,QAAQ,CAAC,GAA2B,EAAE,IAAY,EAAE,MAAe,EAAA;AACjE,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC;cACrC,GAAG,GAAG,CAAC,KAAK,CAAK,EAAA,EAAA,MAAM,IAAI,EAAE,CAAE,CAAA;cAC/B,CAAG,EAAA,GAAG,CAAC,KAAK,CAAK,EAAA,EAAA,MAAM,KAAK,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,CAAC,IAAI,EAAE,CAAA,CAAE,CAAC;KAC3F;IAED,mBAAmB,CAAC,MAAM,GAAG,KAAK,EAAA;AAChC,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;QACtE,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;AACpC,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AACxB,YAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;YAC7B,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B;AACD,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;YACrD,IAAI,CAAC,UAAU,GAAG,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzD,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AACtD,YAAA,OAAO,IAAI,CAAC;AACd,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;KACtI;IAED,sBAAsB,GAAA;QACpB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YAC7B,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,KAAK,EAAE;gBACtC,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;oBACvC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;iBACnD;qBAAM;oBACL,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;iBAC/F;AACD,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACzD;YACD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AAC7C,SAAC,CAAC,CAAC;KACJ;IAED,iBAAiB,GAAA;AACf,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAC3E,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;YACnB,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;YAC1C,IAAI,IAAI,EAAE;AACR,gBAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,oBAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,wBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;qBACjD;AAAM,yBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACtB,wBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBAC/B;iBACF;qBAAM;AACL,oBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC/B;aACF;AACH,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,iBAAiB,CAAC,GAA2B,EAAE,UAAmB,EAAE,MAAM,GAAG,KAAK,EAAA;QAChF,IAAI,IAAI,CAAC,eAAe,IAAI,GAAG,CAAC,KAAK,EAAE;YACrC,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACjD,YAAA,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC;AAC9B,YAAA,MAAM,OAAO,GAAG,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACvC,YAAA,KAAK,CAAC,WAAW,GAAG,UAAU,GAAG,GAAG,GAAG,CAAC,GAAG,OAAO,CAAC;YACnD,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,WAAW,KAAK,CAAC,CAAC;SAC5C;KACF;AAED,IAAA,qBAAqB,CAAC,SAAiB,EAAE,QAAgB,EAAE,IAA4B,EAAE,QAAiB,EAAA;QACxG,IAAI,CAAC,SAAS,EAAE;YACd,OAAO;SACR;QACD,QAAQ,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAChD,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAChC;KACF;IAED,cAAc,CAAC,IAA4B,EAAE,KAAc,EAAA;QACzD,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC9C,OAAO;SACR;QACD,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;AAED,IAAA,gBAAgB,CAAC,KAAa,EAAA;QAC5B,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;SACzB;;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC1B,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACpB,gBAAA,YAAY,EAAE,IAAI,CAAC,4BAA4B,EAAE;AACjD,gBAAA,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE;AAClC,aAAA,CAAC,CAAC;SACJ;AACD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KACrB;IAED,cAAc,CAAC,IAA4B,EAAE,aAAgC,EAAA;;AAE3E,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE;YAClC,OAAO;SACR;QACD,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,KAAK,OAAO,EAAE;gBAC1C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;aAClE;YACD,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACnG,YAAA,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC;AAC9B,SAAC,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KACtC;IAED,4BAA4B,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO;AAClC,cAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,KAAK,4BAA4B,CAAC;AACjF,cAAE,IAAI,CAAC,YAAY,CAAC;KACvB;AAED,IAAA,kBAAkB,CAAC,GAA2B,EAAE,YAAY,GAAG,IAAI,EAAA;AACjE,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAI;YACtC,IAAI,CAAC,GAAG,EAAE;gBACR,OAAO;aACR;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC7E,YAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACd,gBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE;;oBAEpB,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;iBACtC;AACD,gBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;aAChC;iBAAM;AACL,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAC7B;YACD,IAAI,YAAY,EAAE;;AAEhB,gBAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;oBACzB,UAAU,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;iBACvC;AACD,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;AAC3B,oBAAA,YAAY,EAAE,IAAI,CAAC,4BAA4B,EAAE;AACjD,oBAAA,gBAAgB,EAAE,GAAG;AACrB,oBAAA,SAAS,EAAE,KAAK;AACjB,iBAAA,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;aAC/B;iBAAM;AACL,gBAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;aAC5C;AACH,SAAC,CAAC,CAAC;KACJ;;AAGD,IAAA,YAAY,CAAC,MAAgB,EAAA;AAC3B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC;AAClD,QAAA,IAAI,IAAI,CAAC,kBAAkB,IAAI,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,EAAE;YAChE,IAAI,MAAM,EAAE;gBACV,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;aACpD;iBAAM;gBACL,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;aACzG;SACF;AAAM,aAAA,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE;;AAEzC,YAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;SACrC;KACF;;IAGD,WAAW,CAAC,KAAa,EAAE,KAAY,EAAA;AACrC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,EAAE,aAAa,CAAC,gBAAgB,CAAC,kCAAkC,CAAC,CAAC;AACzG,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;AACf,YAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;YACnC,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;AACxF,YAAA,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SACzF;KACF;AAED,IAAA,wBAAwB,CAAC,KAAY,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC,qBAAqB,KAAK,SAAS,EAAE;YAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;AACxD,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE,KAAK,CAAC,CAAC;AAC9D,YAAA,IAAI,CAAC,qBAAqB,GAAG,SAAS,CAAC;SACxC;KACF;IAED,gBAAgB,CAAC,KAA6B,EAAE,KAAU,EAAA;QACxD,MAAM,MAAM,GAAQ,EAAE,CAAC;AACvB,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,OAAO,CAAC;AAC7C,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,OAAO,CAAC;AAC3C,QAAA,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;AAC1B,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;AAC1B,YAAA,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,GAAG,KAAK,EAAE,CAAC;SAC5C;AACD,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE;AAC9B,YAAA,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;SAC3B;AACD,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;AAC1B,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AAChD,gBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aAC1B;YACD,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACrE,MAAM,CAAC,MAAM,GAAG,CAAG,EAAA,KAAK,CAAI,CAAA,EAAA,MAAM,CAAC,QAAQ,CAAC,CAAA,CAAE,CAAC;SAChD;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YAC5C,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC;SAC9B;AACD,QAAA,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;AAC/B,QAAA,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACjD,QAAA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KACvD;IAED,SAAS,CAAC,GAA2B,EAAE,KAAa,EAAA;AAClD,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAI;YACzC,IAAI,CAAC,GAAG,EAAE;AACR,gBAAA,IAAI,IAAI,CAAC,eAAe,IAAI,KAAK,EAAE;oBACjC,KAAK,CAAC,eAAe,EAAE,CAAC;iBACzB;gBACD,OAAO;aACR;AACD,YAAA,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;AACjF,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,4BAA4B,EAAE,CAAC;AACnD,YAAA,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE;gBAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,cAAc,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;AAC9E,gBAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;gBACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,KAAK,EAAE,CAAC;AACzC,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;aAC5E;iBAAM;AACL,gBAAA,IAAG,GAAG,CAAC,IAAI,KAAK,YAAY,EAAC;oBAC3B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;iBAC3C;AACD,gBAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACxC,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;aACpG;AACD,YAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;AACpC,SAAC,CAAC,CAAC;KACJ;IAED,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,EAAE,EAAE;AACzB,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;SAC1B;aAAM;AACL,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SACzB;KACF;;IAGD,UAAU,GAAA;QACR,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,gBAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;aACrC;AACH,SAAC,CAAC,CAAC;KACJ;;AAGD,IAAA,SAAS,CAAC,KAAiB,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,MAAK;YAC/B,MAAM,SAAS,GAAG,KAAK,CAAC,aAAa,IAAK,KAAK,CAAC,aAAqB,CAAC,SAAS,CAAC;YAChF,MAAM,WAAW,GACf,CAAC,SAAS,KAAK,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,OAAO,CAAC,CAAgC,6BAAA,EAAA,IAAI,CAAC,EAAE,CAAE,CAAA,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACvH,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,mBAAmB,IAAI,WAAW,EAAE;AACrE,gBAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,KAAK,CAAC;aACzC;AACH,SAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;KAChB;IAED,QAAQ,CAAC,aAAgC,EAAE,KAAY,EAAA;AACrD,QAAA,MAAM,IAAI,GAAI,KAAa,CAAC,IAAI,CAAC;QACjC,IAAI,aAAa,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE;YACvG,OAAO;SACR;QACD,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;gBACzB,aAAa,CAAC,MAAM,EAAE,CAAC;aACxB;AACH,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,SAAS,CAAC,aAAgC,EAAA;AACxC,QAAA,IAAI,aAAa,CAAC,MAAM,EAAE;YACxB,aAAa,CAAC,MAAM,EAAE,CAAC;SACxB;KACF;AAED,IAAA,cAAc,CAAC,aAAgC,EAAA;AAC7C,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,OAAO;SACR;AACD,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;AAClC,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YAC9B,OAAO;SACR;AACD,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AAC5B,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC5D,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;SACrB;AACD,QAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;KAC/B;IAED,SAAS,CAAC,GAA2B,EAAE,SAA2B,EAAA;QAChE,IAAI,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,MAAM,MAAM,GAAQ,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AACzE,YAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AACjC,gBAAA,IAAI,MAAM,CAAC,IAAI,EAAE;oBACf,YAAY,GAAG,MAAM,CAAC;iBACvB;AAAM,qBAAA,IAAI,MAAM,CAAC,SAAS,EAAE;AAC3B,oBAAA,YAAY,GAAI,MAA8B,CAAC,SAAS,EAAE,CAAC;iBAC5D;qBAAM;AACL,oBAAA,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;iBACxC;aACF;SACF;AACD,QAAA,OAAO,YAAY,CAAC;KACrB;IAED,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;AAClC,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;SACrC;KACF;AAED,IAAA,WAAW,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AAC5B,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,KAAI;AACpD,gBAAA,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;AAC5B,oBAAA,OAAO,IAAI,CAAC;iBACb;AACD,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACtB,gBAAA,OAAO,SAAS,CAAC;AACnB,aAAC,CAAC,CAAC;SACJ;QACD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,cAAc,EAAE;AACzC,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACpB,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;YACzB,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B,aAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SAChB;AACD,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;SACnC;QACD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;AACnH,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;IAED,sBAAsB,CAAC,GAA2B,EAAE,IAAY,EAAA;AAC9D,QAAA,IAAI,GAAG,CAAC,KAAK,KAAK,4BAA4B,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACrF,OAAO;SACR;QACD,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,IAAI,KAAK,QAAQ,CAAC;KACnE;IAED,cAAc,GAAA;QACZ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,IAAI,CAAC,4BAA4B,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACnI,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACvB,SAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;KAChB;AAED,IAAA,0BAA0B,CAAC,QAA2B,EAAE,QAAqB,EAAE,cAAsB,EAAA;AACnG,QAAA,IAAI,QAAQ,CAAC,MAAM,EAAE;AACnB,YAAA,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAC5B,UAAU,CAAC,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;SACpC;KACF;AAED,IAAA,oBAAoB,CAAC,KAAa,EAAA;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;AACjI,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAClC;AAED,IAAA,SAAS,CAAC,GAA2B,EAAA;AACnC,QAAA,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC;KACtD;AAED,IAAA,UAAU,CAAC,GAA2B,EAAA;AACpC,QAAA,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAC7F,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,SAAS,CAAC;AAChD,QAAA,OAAO,GAAG,CAAC;KACZ;IAED,mBAAmB,GAAA;QACjB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;AACpC,SAAC,EAAE,IAAI,CAAC,0BAA0B,GAAG,GAAG,CAAC,CAAC;KAC3C;;;IAID,UAAU,CAAC,GAA2B,EAAE,UAAsB,EAAA;QAC5D,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC3B,QAAA,MAAM,GAAG,GAAG,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC;AACrC,QAAA,GAAG,CAAC,KAAK,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;QAChE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QACjC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;KAC9B;;IAGD,UAAU,CAAC,UAA0C,EAAE,GAA2B,EAAA;AAChF,QAAA,MAAM,KAAK,GAAG,UAAU,CAAC,kBAAkB,KAAK,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;AAChE,QAAA,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,GAAG,kBAAkB,GAAG,SAAS,CAAC;QACjE,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,UAAU,CAAC,iBAAiB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,SAAS,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,IAAI,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAC3H,QAAA,IAAI,UAAU,KAAK,WAAW,EAAE;YAC9B,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;AACnC,YAAA,IAAI,GAAG,CAAC,QAAQ,EAAE;AAChB,gBAAA,UAAU,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC;oBACzC,WAAW,EAAE,UAAU,CAAC,kBAAkB;AAC1C,oBAAA,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAE;AAC1B,oBAAA,GAAG,EAAE,SAAS,CAAC,UAAU,EAAE;AAC3B,oBAAA,OAAO,EAAE,SAAS,CAAC,UAAU,EAAE;AAChC,iBAAA,CAAC,CAAC;aACJ;SACF;KACF;AAED,IAAA,WAAW,CAAC,UAA0C,EAAE,GAA2B,EAAE,QAA2B,EAAA;AAC9G,QAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE;YACpB,OAAO;SACR;AACD,QAAA,IAAI,UAAU,CAAC,kBAAkB,KAAK,OAAO,EAAE;AAC7C,YAAA,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SAC/B;aAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC9B,YAAA,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;SACjC;aAAM,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACrC,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACzB,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAS,CAAC;YACzC,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAS,CAAC;AACvC,YAAA,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC7C,YAAA,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,GAAG,CAAC,QAAQ;AAChD,kBAAE,CAAG,EAAA,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,KAAK,CAAC,CAAM,GAAA,EAAA,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,GAAG,CAAC,CAAE,CAAA;kBACzF,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9E,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;AAC5C,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;SAC9B;KACF;;AAGD,IAAA,WAAW,CAAC,GAA2B,EAAA;QACrC,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC3B,QAAA,MAAM,GAAG,GAAG,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC;AACrC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACvD,IAAI,MAAM,EAAE;AACV,YAAA,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;AACnD,YAAA,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;AACxB,YAAA,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC7C,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;SAC9B;aAAM;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;SACrB;KACF;;IAGD,YAAY,CAAC,KAAU,EAAE,GAAW,EAAA;QAClC,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACjC,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9C,YAAA,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC3B;KACF;IAED,qBAAqB,CAAC,QAA2B,EAAE,YAA2C,EAAA;AAC5F,QAAA,IAAI,IAAI,CAAC,gBAAgB,IAAI,YAAY,EAAE;YACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;YAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;YAC/D,IAAI,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE;AAChC,gBAAA,YAAY,CAAC,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AAC5D,gBAAA,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;aAClD;AAAM,iBAAA,IAAI,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE;AACxE,gBAAA,YAAY,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;AACjC,gBAAA,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;aAClD;SACF;KACF;;AAGD,IAAA,YAAY,CAAC,QAA2B,EAAE,GAA4B,EAAE,YAA4C,EAAA;AAClH,QAAA,MAAM,OAAO,GAAG,GAAG,IAAI,IAAI,CAAC,gBAAgB,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AAC1E,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC9B;AACD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;SACxD;AACD,QAAA,IAAI,QAAQ,CAAC,MAAM,EAAE;AACnB,YAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;AACnD,YAAA,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC;SACrC;aAAM;YACL,MAAM,IAAI,GAAG,OAAiC,CAAC;YAC/C,IAAI,CAAC,+BAA+B,EAAE,CAAC;AACvC,YAAA,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;AACrC,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,OAAO,IAAI,CAAC,UAAU,CAAC;YACvB,OAAO,IAAI,CAAC,WAAW,CAAC;YACxB,OAAO;SACR;QACD,IAAI,GAAG,IAAI,GAAG,KAAK,IAAI,CAAC,gBAAgB,EAAE;AACxC,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAC9B,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AAC9C,gBAAA,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aAC9C;YACD,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;SAChD;AAAM,aAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAChC,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;;AAE7B,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAClI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;SACjE;AACD,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;KACtI;AAED,IAAA,aAAa,CAAC,GAA2B,EAAA;AACvC,QAAA,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE;;AAE7B,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;SAC/D;KACF;IAED,yBAAyB,CAAC,GAA2B,EAAE,aAAgC,EAAA;AACrF,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;AACxC,QAAA,UAAU,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1D;IAED,+BAA+B,GAAA;QAC7B,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAClD,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAC9B,YAAA,UAAU,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SACnD;KACF;AAED,IAAA,mBAAmB,CAAC,GAA2B,EAAE,QAA2B,EAAE,kBAA2B,EAAA;AACvG,QAAA,QAAQ,GAAG,CAAC,IAAI;AAChB,YAAA,KAAK,SAAS;AACZ,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC;AACrC,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC1C,gBAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AACpC,gBAAA,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC;gBACxB,MAAM;AACR,YAAA,KAAK,YAAY;;gBAEf,IAAI,CAAC,kBAAkB,EAAE;oBACvB,UAAU,CAAC,MAAK;;AAEd,wBAAA,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACpE,wBAAA,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACtB,qBAAC,CAAC,CAAC;iBACJ;gBACD,UAAU,CAAC,MAAK;AACd,oBAAA,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,IAAI,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,6CAA6C,CAAC,CAAC;oBACzH,IAAI,GAAG,EAAE;wBACP,GAAG,CAAC,KAAK,EAAE,CAAC;qBACb;AACH,iBAAC,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBACpC,MAAM;AACR,YAAA,KAAK,WAAW;gBACd,UAAU,CAAC,MAAK;oBACd,MAAM,QAAQ,GAAgB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,wCAAwC,CAAC,CAAC;oBACpG,IAAI,QAAQ,EAAE;wBACZ,QAAQ,CAAC,KAAK,EAAE,CAAC;qBAClB;AACH,iBAAC,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBACpC,MAAM;AACR,YAAA,KAAK,UAAU,CAAC;AAChB,YAAA,KAAK,OAAO;AACV,gBAAA,IAAI,GAAG,CAAC,aAAa,EAAE;AACrB,oBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;iBAC9B;gBACD,MAAM;YACR,QAAQ;SACP;KACF;;AAGD,IAAA,YAAY,CAAC,GAAQ,EAAA;AACnB,QAAA,IAAI,GAAG,EAAE,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YAC9C,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;gBAC3B,IAAI,CAAC,MAAM,GAAG,CAAA,EAAG,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,CAAI,CAAA,EAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,CAAA,CAAE,CAAC;AACrF,aAAC,CAAC,CAAC;SACJ;AACD,QAAA,OAAO,GAAG,CAAC;KACZ;;IAGD,UAAU,CAAC,GAAW,EAAE,KAAU,EAAA;;AAEhC,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,OAAO;SACR;QACD,MAAM,GAAG,GAAG,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACtC,QAAA,MAAM,GAAG,GAAG,GAAG,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AACpD,QAAA,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;KACxB;AAED,IAAA,SAAS,CAAC,GAA2B,EAAA;AACnC,QAAA,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC;AACxB,QAAA,IAAI,GAAG,CAAC,UAAU,EAAE;YAClB,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;SAC1C;aAAM;AACL,YAAA,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;SACtB;KACF;AAED,IAAA,WAAW,CAAC,GAA2B,EAAE,OAAO,GAAG,IAAI,EAAA;AACrD,QAAA,MAAM,KAAK,GAAG,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;QAC1D,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;AAC7C,QAAA,GAAG,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;KACrD;;AAGD,IAAA,iBAAiB,CAAC,GAA2B,EAAA;QAC3C,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;QACxE,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;KAC9B;;IAGD,mBAAmB,CAAC,GAA2B,EAAE,QAA4B,EAAA;AAC3E,QAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACzC,QAAA,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACvC,QAAA,IAAI,GAAG,CAAC,YAAY,EAAE;AACpB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE;gBAC5C,OAAO;aACR;YACD,IAAI,QAAQ,EAAE;AACZ,gBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;aAC1B;SACF;QACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACrC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACrC,QAAA,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAG,EAAA,QAAQ,CAAM,GAAA,EAAA,MAAM,EAAE,CAAC;QAChE,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;KAC9B;;AAGD,IAAA,YAAY,CAAC,GAA2B,EAAE,SAAS,GAAG,IAAI,EAAA;QACxD,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC5B;QACD,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,MAAM,WAAW,GAAG,EAAE,CAAC;AACvB,QAAA,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,KAAqB,CAAC;AAC7C,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACpB,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,gBAAgB,IAAI,OAAO,CAAC,CAAC,CAAC;AACpE,YAAA,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC;AACpD,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,YAAA,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC7C,YAAA,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvD,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YAC7C,IAAI,SAAS,EAAE;AACb,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACxB,gBAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;aAC9B;iBAAM;AACL,gBAAA,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;aACnE;SACF;aAAM;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;SACrB;KACF;AAED,IAAA,eAAe,CAAC,GAA2B,EAAE,IAAS,EAAE,WAAqB,EAAA;AAC3E,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACvB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;SACzE;aAAM,IAAI,IAAI,EAAE;AACf,YAAA,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC;AACxC,YAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,mBAAmB,IAAI,UAAU,CAAC;YACvD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;gBAClG,IAAI,YAAY,GAAG,CAAC,CAAC;AACrB,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,CAAC;AACxE,gBAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,IAAI,YAAY,EAAE,CAAC,CAAC;AACrE,gBAAA,IAAI,CAAC,WAAW,GAAG,YAAY,GAAG,CAAC,IAAI,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;gBAC5E,IAAI,CAAC,SAAS,GAAG,YAAY,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;AACvD,gBAAA,OAAO,IAAI,CAAC;aACb;YACD,OAAO,IAAI,CAAC,WAAW,CAAC;AACxB,YAAA,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,YAAA,OAAO,IAAI,CAAC;SACb;KACF;IAED,qBAAqB,CAAC,aAA0B,EAAE,GAA2B,EAAA;AAC3E,QAAA,MAAM,sBAAsB,GAAG,CAAC,KAAK,KAAI;YACvC,OAAO,GAAG,CAAC,QAAQ;AACjB,kBAAE,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACjF,kBAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAChD,SAAC,CAAC;AACF,QAAA,IAAI,GAAG,CAAC,QAAQ,EAAE;YAChB,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC;SACzD;KACF;IAED,sBAAsB,CAAC,YAAuB,EAAE,GAA2B,EAAA;AACzE,QAAA,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAChE,OAAO;SACR;AACD,QAAA,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC9B,YAAA,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACjD,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;SACxB;aAAM;AACL,YAAA,YAAY,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACnC;KACF;IAED,UAAU,CAAC,KAAa,EAAE,QAAmB,EAAA;AAC3C,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,MAAM,SAAS,GAAG,QAAQ;kBACtB,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC;AACjD,kBAAE,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AACvE,YAAA,IAAI,OAAO,SAAS,KAAK,SAAS,EAAE;AAClC,gBAAA,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;aAC/B;AAAM,iBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AACnC,gBAAA,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;aACpD;AACD,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;SACjD;KACF;AA1mCU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,kBA+GxB,QAAQ,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AA/GP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAyDjB,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,wBAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,wBAAwB,EAD3B,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,wBAAwB,qEC1GxC,wz7BA2jBA,EAAA,MAAA,EAAA,CAAA,kybAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,2FAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,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,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,SAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,wBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,wBAAA,EAAA,4BAAA,CAAA,EAAA,QAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,WAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,YAAA,EAAA,aAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,eAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,eAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,eAAA,EAAA,KAAA,EAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,8BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,wBAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;ADheyB,UAAA,CAAA;AAAb,IAAA,UAAU,EAAE;;AAAuB,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AACtB,UAAA,CAAA;AAAb,IAAA,UAAU,EAAE;;AAAsB,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;4FA1CjC,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;+BACE,mBAAmB,EAAA,QAAA,EAAA,wz7BAAA,EAAA,MAAA,EAAA,CAAA,kybAAA,CAAA,EAAA,CAAA;;0BAmH1B,MAAM;2BAAC,QAAQ,CAAA;2HA7GT,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAIG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAIG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAIG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,uBAAuB,EAAA,CAAA;sBAA/B,KAAK;gBACG,0BAA0B,EAAA,CAAA;sBAAlC,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAOG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACiB,SAAS,EAAA,CAAA;sBAA/B,KAAK;gBACiB,aAAa,EAAA,CAAA;sBAAnC,KAAK;gBACqC,YAAY,EAAA,CAAA;sBAAtD,WAAW;uBAAC,wBAAwB,CAAA;gBAG3B,WAAW,EAAA,CAAA;sBAApB,MAAM;gBACG,kBAAkB,EAAA,CAAA;sBAA3B,MAAM;gBACG,iBAAiB,EAAA,CAAA;sBAA1B,MAAM;gBACG,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBACG,eAAe,EAAA,CAAA;sBAAxB,MAAM;gBACkC,QAAQ,EAAA,CAAA;sBAAhD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBACY,kBAAkB,EAAA,CAAA;sBAApE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,oBAAoB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBACF,cAAc,EAAA,CAAA;sBAA5D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAClB,YAAY,EAAA,CAAA;sBAAtC,SAAS;uBAAC,cAAc,CAAA;gBACS,oBAAoB,EAAA,CAAA;sBAArD,YAAY;uBAAC,kBAAkB,CAAA;gBACQ,gBAAgB,EAAA,CAAA;sBAAvD,YAAY;uBAAC,wBAAwB,CAAA;gBACK,gBAAgB,EAAA,CAAA;sBAA1D,eAAe;uBAAC,wBAAwB,CAAA;;;MEpE9B,oBAAoB,CAAA;+GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,iBAHhB,uBAAuB,EAAE,wBAAwB,EAAE,wBAAwB,aAfxF,YAAY;YACZ,UAAU;YACV,WAAW;YACX,cAAc;YACd,eAAe;YACf,YAAY;YACZ,UAAU;YACV,YAAY;YACZ,cAAc;YACd,iBAAiB;YACjB,aAAa;YACb,UAAU;YACV,YAAY;AACZ,YAAA,mBAAmB,CAGX,EAAA,OAAA,EAAA,CAAA,uBAAuB,EAAE,wBAAwB,EAAE,wBAAwB,CAAA,EAAA,CAAA,CAAA,EAAA;AAE1E,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAlB7B,YAAY;YACZ,UAAU;YACV,WAAW;YACX,cAAc;YACd,eAAe;YACf,YAAY;YACZ,UAAU;YACV,YAAY;YACZ,cAAc;YACd,iBAAiB;YACjB,aAAa;YACb,UAAU;YACV,YAAY;YACZ,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAKV,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBApBhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,UAAU;wBACV,WAAW;wBACX,cAAc;wBACd,eAAe;wBACf,YAAY;wBACZ,UAAU;wBACV,YAAY;wBACZ,cAAc;wBACd,iBAAiB;wBACjB,aAAa;wBACb,UAAU;wBACV,YAAY;wBACZ,mBAAmB;AACpB,qBAAA;AACD,oBAAA,YAAY,EAAE,CAAC,uBAAuB,EAAE,wBAAwB,EAAE,wBAAwB,CAAC;AAC3F,oBAAA,OAAO,EAAE,CAAC,uBAAuB,EAAE,wBAAwB,EAAE,wBAAwB,CAAC;AACvF,iBAAA,CAAA;;;ACtCD;;AAEG;;;;"}