{"version":3,"file":"ng-prime-tools.mjs","sources":["../../../projects/ng-prime-tools/src/lib/utils/text.util.ts","../../../projects/ng-prime-tools/src/lib/pipes/custom-currency.ts","../../../projects/ng-prime-tools/src/lib/pipes/custom-date.pipe.ts","../../../projects/ng-prime-tools/src/lib/pt-advanced-prime-table/pt-advanced-prime-table.component.ts","../../../projects/ng-prime-tools/src/lib/pt-advanced-prime-table/pt-advanced-prime-table.component.html","../../../projects/ng-prime-tools/src/lib/pt-multi-select/pt-multi-select.component.ts","../../../projects/ng-prime-tools/src/lib/pt-multi-select/pt-multi-select.component.html","../../../projects/ng-prime-tools/src/lib/pt-multi-select/pt-multi-select.module.ts","../../../projects/ng-prime-tools/src/lib/pt-advanced-prime-table/pt-advanced-prime-table.module.ts","../../../projects/ng-prime-tools/src/lib/pt-advanced-prime-table/date-utility.service.ts","../../../projects/ng-prime-tools/src/lib/enums/table-type.enum.ts","../../../projects/ng-prime-tools/src/lib/enums/search-criteria-type.enum.ts","../../../projects/ng-prime-tools/src/lib/enums/form-input-type.enum.ts","../../../projects/ng-prime-tools/src/lib/enums/button-color.enum.ts","../../../projects/ng-prime-tools/src/lib/enums/input-validation.enum.ts","../../../projects/ng-prime-tools/src/lib/enums/badge-type.enum.ts","../../../projects/ng-prime-tools/src/lib/enums/severity.enum.ts","../../../projects/ng-prime-tools/src/lib/enums/public-api.ts","../../../projects/ng-prime-tools/src/lib/multi-search-criteria/multi-search-criteria.component.ts","../../../projects/ng-prime-tools/src/lib/multi-search-criteria/multi-search-criteria.component.html","../../../projects/ng-prime-tools/src/lib/multi-search-criteria/multi-search-criteria.module.ts","../../../projects/ng-prime-tools/src/lib/pt-check-box-input/pt-check-box-input.component.ts","../../../projects/ng-prime-tools/src/lib/pt-check-box-input/pt-check-box-input.component.html","../../../projects/ng-prime-tools/src/lib/utils/date.util.ts","../../../projects/ng-prime-tools/src/lib/pt-date-input/pt-date.service.ts","../../../projects/ng-prime-tools/src/lib/pt-date-input/pt-date-input.component.ts","../../../projects/ng-prime-tools/src/lib/pt-date-input/pt-date-input.component.html","../../../projects/ng-prime-tools/src/lib/pt-number-input/pt-number-input.component.ts","../../../projects/ng-prime-tools/src/lib/pt-number-input/pt-number-input.component.html","../../../projects/ng-prime-tools/src/lib/pt-switch-input/pt-switch-input.component.ts","../../../projects/ng-prime-tools/src/lib/pt-switch-input/pt-switch-input.component.html","../../../projects/ng-prime-tools/src/lib/pt-text-area-input/pt-text-area-input.component.ts","../../../projects/ng-prime-tools/src/lib/pt-text-area-input/pt-text-area-input.component.html","../../../projects/ng-prime-tools/src/lib/pt-text-input/pt-text-input.component.ts","../../../projects/ng-prime-tools/src/lib/pt-text-input/pt-text-input.component.html","../../../projects/ng-prime-tools/src/lib/pt-dropdown/pt-dropdown.component.ts","../../../projects/ng-prime-tools/src/lib/pt-dropdown/pt-dropdown.component.html","../../../projects/ng-prime-tools/src/lib/pt-form-builder/pt-dynamic-form-field/pt-dynamic-form-field.component.ts","../../../projects/ng-prime-tools/src/lib/pt-form-builder/pt-dynamic-form-field/pt-dynamic-form-field.component.html","../../../projects/ng-prime-tools/src/lib/pt-form-builder/pt-form-builder.component.ts","../../../projects/ng-prime-tools/src/lib/pt-form-builder/pt-form-builder.component.html","../../../projects/ng-prime-tools/src/lib/pt-check-box-input/pt-check-box-input.module.ts","../../../projects/ng-prime-tools/src/lib/pt-number-input/pt-number-input.module.ts","../../../projects/ng-prime-tools/src/lib/pt-switch-input/pt-switch-input.module.ts","../../../projects/ng-prime-tools/src/lib/pt-text-input/pt-text-input.module.ts","../../../projects/ng-prime-tools/src/lib/pt-text-area-input/pt-text-area-input.module.ts","../../../projects/ng-prime-tools/src/lib/pt-date-input/pt-date-input.module.ts","../../../projects/ng-prime-tools/src/lib/pt-dropdown/pt-dropdown.module.ts","../../../projects/ng-prime-tools/src/lib/pt-form-builder/pt-dynamic-form-field/pt-dynamic-form-field-module.ts","../../../projects/ng-prime-tools/src/lib/pt-form-builder/pt-form-builder.module.ts","../../../projects/ng-prime-tools/src/lib/pt-metric-card/pt-metric-card.component.ts","../../../projects/ng-prime-tools/src/lib/pt-metric-card/pt-metric-card.component.html","../../../projects/ng-prime-tools/src/lib/pt-metric-card/pt-metric-card.module.ts","../../../projects/ng-prime-tools/src/lib/pt-metric-card-group/pt-metric-card-group.component.ts","../../../projects/ng-prime-tools/src/lib/pt-metric-card-group/pt-metric-card-group.component.html","../../../projects/ng-prime-tools/src/lib/pt-metric-card-group/pt-metric-card-group.module.ts","../../../projects/ng-prime-tools/src/lib/pt-chart/pt-chart.component.ts","../../../projects/ng-prime-tools/src/lib/pt-chart/pt-chart.component.html","../../../projects/ng-prime-tools/src/lib/pt-chart/pt-chart.module.ts","../../../projects/ng-prime-tools/src/lib/pt-menu/pt-menu.component.ts","../../../projects/ng-prime-tools/src/lib/pt-menu/pt-menu.component.html","../../../projects/ng-prime-tools/src/lib/pt-card/pt-card.component.ts","../../../projects/ng-prime-tools/src/lib/pt-card/pt-card.component.html","../../../projects/ng-prime-tools/src/lib/pt-menu/pt-menu.module.ts","../../../projects/ng-prime-tools/src/lib/pt-card/pt-card.module.ts","../../../projects/ng-prime-tools/src/lib/pt-menu-fancy/pt-menu-fancy.component.ts","../../../projects/ng-prime-tools/src/lib/pt-menu-fancy/pt-menu-fancy.component.html","../../../projects/ng-prime-tools/src/lib/pt-nav-bar-menu/pt-nav-bar-menu.component.ts","../../../projects/ng-prime-tools/src/lib/pt-nav-bar-menu/pt-nav-bar-menu.component.html","../../../projects/ng-prime-tools/src/lib/pt-menu-fancy/pt-menu-fancy.module.ts","../../../projects/ng-prime-tools/src/lib/pt-nav-bar-menu/pt-nav-bar-menu.module.ts","../../../projects/ng-prime-tools/src/lib/pt-side-bar-menu/pt-side-bar-menu.component.ts","../../../projects/ng-prime-tools/src/lib/pt-side-bar-menu/pt-side-bar-menu.component.html","../../../projects/ng-prime-tools/src/lib/pt-side-bar-menu/pt-side-bar-menu.module.ts","../../../projects/ng-prime-tools/src/lib/pt-footer/pt-footer.component.ts","../../../projects/ng-prime-tools/src/lib/pt-footer/pt-footer.component.html","../../../projects/ng-prime-tools/src/lib/pt-bread-crumb/pt-bread-crumb.service.ts","../../../projects/ng-prime-tools/src/lib/pt-bread-crumb/pt-bread-crumb.component.ts","../../../projects/ng-prime-tools/src/lib/pt-bread-crumb/pt-bread-crumb.component.html","../../../projects/ng-prime-tools/src/lib/pt-page-skeleton/pt-page-skeleton.component.ts","../../../projects/ng-prime-tools/src/lib/pt-page-skeleton/pt-page-skeleton.component.html","../../../projects/ng-prime-tools/src/lib/pt-footer/pt-footer.module.ts","../../../projects/ng-prime-tools/src/lib/pt-bread-crumb/pt-bread-crumb.module.ts","../../../projects/ng-prime-tools/src/lib/pt-page-skeleton/pt-page-skeleton.module.ts","../../../projects/ng-prime-tools/src/lib/pt-button/pt-button.component.ts","../../../projects/ng-prime-tools/src/lib/pt-button/pt-button.component.html","../../../projects/ng-prime-tools/src/lib/pt-button/pt-button.module.ts","../../../projects/ng-prime-tools/src/lib/pt-login-page/pt-login-card/pt-login-card.component.ts","../../../projects/ng-prime-tools/src/lib/pt-login-page/pt-login-card/pt-login-card.component.html","../../../projects/ng-prime-tools/src/lib/pt-login-page/pt-login-page.component.ts","../../../projects/ng-prime-tools/src/lib/pt-login-page/pt-login-page.component.html","../../../projects/ng-prime-tools/src/lib/pt-login-page/pt-login-page.module.ts","../../../projects/ng-prime-tools/src/lib/pt-dialog/pt-dialog.component.ts","../../../projects/ng-prime-tools/src/lib/pt-dialog/pt-dialog.component.html","../../../projects/ng-prime-tools/src/lib/pt-dialog/pt-dialog.module.ts","../../../projects/ng-prime-tools/src/lib/pt-toast-notifier/pt-toast-notifier.component.ts","../../../projects/ng-prime-tools/src/lib/pt-toast-notifier/pt-toast-notifier.component.html","../../../projects/ng-prime-tools/src/lib/pt-toast-notifier/pt-toast-notifier.module.ts","../../../projects/ng-prime-tools/src/lib/ng-prime-tools.module.ts","../../../projects/ng-prime-tools/src/lib/pt-metric-panel/pt-metric-panel.component.ts","../../../projects/ng-prime-tools/src/lib/pt-metric-panel/pt-metric-panel.component.html","../../../projects/ng-prime-tools/src/lib/pt-metric-panel/pt-metric-panel.module.ts","../../../projects/ng-prime-tools/src/lib/pt-chart-comparison/pt-chart-comparison.component.ts","../../../projects/ng-prime-tools/src/lib/pt-chart-comparison/pt-chart-comparison.component.html","../../../projects/ng-prime-tools/src/lib/pt-chart-comparison/pt-chart-comparison.module.ts","../../../projects/ng-prime-tools/src/lib/pt-line-chart/pt-line-chart.component.ts","../../../projects/ng-prime-tools/src/lib/pt-line-chart/pt-line-chart.component.html","../../../projects/ng-prime-tools/src/lib/pt-line-chart/pt-line-chart.module.ts","../../../projects/ng-prime-tools/src/lib/models/public-api.ts","../../../projects/ng-prime-tools/src/lib/pt-group/pt-group.component.ts","../../../projects/ng-prime-tools/src/lib/pt-group/pt-group.component.html","../../../projects/ng-prime-tools/src/lib/pt-group/pt-group.module.ts","../../../projects/ng-prime-tools/src/ng-prime-tools.ts"],"sourcesContent":["import { TableColumn } from '../models';\n\n/**\n * Calculates the width required for a column based on the header text (column title).\n * It uses the Canvas API to measure text width dynamically.\n *\n * @param {TableColumn} col - The column metadata containing the header title and code.\n * @param {string} [font='16px Arial'] - The font to use for measurement (defaults to '16px Arial').\n * @returns {number} - The calculated width of the column in pixels.\n */\nexport function calculateTextWidth(\n  col: TableColumn,\n  font: string = '16px Arial'\n): number {\n  // Create a canvas context for measuring text\n  const canvas = document.createElement('canvas');\n  const context = canvas.getContext('2d');\n\n  if (!context) {\n    return 100; // Fallback width if canvas context is not available\n  }\n\n  // Set the font to match the provided font or the document body font\n  context.font = font || getComputedStyle(document.body).font;\n\n  // Measure the header text width\n  const headerWidth = context.measureText(col.title).width;\n\n  // Return the width with some padding\n  return Math.ceil(headerWidth + 20); // Add padding for extra space\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'customCurrency',\n  standalone: true,\n})\nexport class CustomCurrencyPipe implements PipeTransform {\n  transform(\n    value: number,\n    currency?: string,\n    decimalPlaces?: number,\n    thousandSeparator: 'comma' | 'space' = 'comma',\n    decimalSeparator: 'comma' | 'dot' = 'dot'\n  ): string {\n    let formattedValue: string;\n\n    if (decimalPlaces !== undefined) {\n      formattedValue = value.toFixed(decimalPlaces);\n    } else {\n      formattedValue = value.toString();\n    }\n\n    const thousandSeparatorChar = thousandSeparator === 'space' ? ' ' : ',';\n    const decimalSeparatorChar = decimalSeparator === 'comma' ? ',' : '.';\n\n    formattedValue = formattedValue.replace(\n      /\\B(?=(\\d{3})+(?!\\d))/g,\n      thousandSeparatorChar\n    );\n\n    if (decimalSeparatorChar === ',') {\n      formattedValue = formattedValue.replace('.', ',');\n    }\n\n    if (currency) {\n      let formattedCurrency: string;\n\n      switch (currency) {\n        case 'MAD':\n          formattedCurrency = `${formattedValue} DH`;\n          break;\n        case 'USD':\n          formattedCurrency = `$${formattedValue}`;\n          break;\n        default:\n          formattedCurrency = `${formattedValue} ${currency}`;\n      }\n\n      return formattedCurrency;\n    }\n\n    return formattedValue;\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'customDate',\n})\nexport class CustomDatePipe implements PipeTransform {\n  transform(value: any, format: string = 'dd/MM/yyyy'): string | null {\n    if (!value) return null;\n\n    if (typeof value === 'string') {\n      const parts = value.split('/');\n      if (parts.length === 3) {\n        const day = parseInt(parts[0], 10);\n        const month = parseInt(parts[1], 10) - 1;\n        const year = parseInt(parts[2], 10);\n        const date = new Date(year, month, day);\n\n        if (isNaN(date.getTime())) return null;\n\n        const options: Intl.DateTimeFormatOptions = {\n          year: 'numeric',\n          month: '2-digit',\n          day: '2-digit',\n        };\n        return new Intl.DateTimeFormat('en-GB', options).format(date);\n      }\n    } else if (value instanceof Date) {\n      // If the value is already a Date object\n      const options: Intl.DateTimeFormatOptions = {\n        year: 'numeric',\n        month: '2-digit',\n        day: '2-digit',\n      };\n      return new Intl.DateTimeFormat('en-GB', options).format(value);\n    }\n\n    return null;\n  }\n}\n","import { Component, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { EventEmitter } from '@angular/core';\nimport { Table } from 'primeng/table';\nimport {\n  ImageStyle,\n  TableColumn,\n  TableTypeEnum,\n  TitleStyle,\n} from '../../public-api';\nimport { calculateTextWidth } from '../utils/text.util';\n\n@Component({\n  selector: 'pt-advanced-prime-table',\n  templateUrl: './pt-advanced-prime-table.component.html',\n  styleUrl: './pt-advanced-prime-table.component.css',\n})\nexport class PTAdvancedPrimeTableComponent implements OnInit {\n  // Inputs\n  @Input() data: any[] = [];\n  @Input() columns: TableColumn[] = [];\n  @Input() totalRecords: number = 0;\n  @Input() rowsPerPage: number[] = [];\n  @Input() hasSearchFilter: boolean = false;\n  @Input() hasExportExcel: boolean = false;\n  @Input() hasExportPDF: boolean = false;\n  @Input() hasColumnFilter: boolean = false;\n  @Input() isPaginated: boolean = false;\n  @Input() actions: any[] = [];\n  @Input() isSortable: boolean = false;\n  @Input() loading: boolean = false;\n  @Input() maxHeight: string | null = null;\n\n  // Outputs: Events emitted to the parent component\n  @Output() filter = new EventEmitter();\n  @Output() search = new EventEmitter<any>();\n  @Output() exportExcelEvent = new EventEmitter<void>();\n  @Output() exportPdfEvent = new EventEmitter<void>();\n\n  @ViewChild('dt', { static: false }) dt!: Table;\n\n  public TableTypeEnum = TableTypeEnum;\n  searchValue: string = '';\n\n  public filters: { [key: string]: any } = {};\n\n  private validCurrencyCodes = ['USD', 'EUR', 'MAD'];\n  iconWidth = 77;\n\n  // Component state properties\n  isDelete: boolean = false;\n  isEdit: boolean = false;\n  rows: number = 0;\n\n  // Data management properties\n  dataMap = new Map();\n  map = new Map();\n  optionEntries = new Map<string, any[]>();\n  optionValues: any[] = [];\n  globalFilterFields: string[] = [];\n\n  // CRUD operation handlers\n  Delete: (value: any) => void = () => {};\n  initEditableRow: (data: any) => void = () => {};\n  saveEditableRow: (data: any) => void = () => {};\n  cancelEditableRow: (item: any) => void = () => {};\n  hasGroupedColumns: boolean = false;\n  constructor() {}\n\n  ngOnInit(): void {\n    this.hasGroupedColumns = this.columns.some(\n      (col) => col.children && col.children.length > 0\n    );\n\n    this.globalFilterFields = this.columns\n      .filter((col) => col.code !== undefined && col.isFilter !== false)\n      .map((col) => col.code as string);\n    this.initializePagination();\n    this.initializeActions();\n\n    // Set default value for isSortable\n    this.columns.forEach((col) => {\n      if (col.type === TableTypeEnum.ACTION) {\n        col.isEditable = false;\n        col.isFilter = false;\n        col.isSortable = false;\n      }\n\n      if (col.type === TableTypeEnum.COMPOSED) {\n        this.initializeComposedFilters(col);\n      }\n\n      if (col.isSortable === undefined) {\n        col.isSortable = true;\n      }\n\n      if (col.isEditable === undefined) {\n        col.isEditable = true;\n      }\n\n      if (col.isFilter !== false && col.code !== undefined) {\n        this.globalFilterFields.push(col.code);\n      }\n\n      if (!col.width) {\n        col.width = this.calculateColumnWidth(col);\n      }\n    });\n  }\n\n  // Initialize filters for composed columns\n  private initializeComposedFilters(col: TableColumn): void {\n    col.composedNames?.forEach((composedName) => {\n      this.globalFilterFields.push(col.code + '.' + composedName);\n      this.filters[composedName] = {\n        options: col.filterOptions,\n        value: [],\n        label: 'Filter by ' + composedName,\n        placeholder: 'Select options for ' + composedName,\n      };\n    });\n  }\n\n  // Get the column type for composed fields (STRING, IMAGE, etc.)\n  getComposedFieldType(\n    col: TableColumn,\n    composedName: string\n  ): TableTypeEnum | undefined {\n    // Ensure that col.composedNames and col.composedTypes are valid arrays\n    if (col.composedNames && col.composedTypes) {\n      const index = col.composedNames.indexOf(composedName);\n\n      // Check if index is a valid number (not -1) and within bounds of composedTypes array\n      if (index >= 0 && index < col.composedTypes.length) {\n        return col.composedTypes[index]; // Safe access of composedTypes array\n      }\n    }\n\n    return undefined; // Return undefined if no valid index is found or composedNames/composedTypes are not valid\n  }\n\n  onComposedFilterChange(composedName: string, selectedValues: any): void {\n    console.log('Selected Values:', selectedValues);\n    console.log('Data Before Filtering:', this.data);\n\n    // Update the filter value with the selected values\n    this.filters[composedName].value = selectedValues;\n\n    // Emit the filter event to notify the parent component (if needed)\n    this.filter.emit(this.filters);\n\n    // Get the filter value (joining array into a string)\n    const filterValue = selectedValues.join(',');\n    console.log('Filter Values to be Applied:', filterValue);\n\n    // Apply global filter using PrimeNG's filterGlobal method\n    this.dt.filterGlobal(filterValue, 'contains');\n  }\n\n  onFilter(event: any): void {\n    this.totalRecords = event.filteredValue?.length || 0;\n  }\n\n  onCalendarFilterChange(\n    event: any,\n    columnCode: string,\n    filterCallback: any\n  ): void {\n    // Log the data's date format for debugging\n    console.log(\n      'Data Before Filtering:',\n      this.data.map((item) => item[columnCode])\n    );\n\n    console.log('event : ' + event);\n\n    // Convert the event value to a string (in the desired date format)\n\n    const filterValue = event ? new Date(event) : null;\n\n    console.log('filterValue : ' + filterValue);\n    // If the filterValue is empty, do not trigger filterCallback\n    if (!filterValue) {\n      return;\n    }\n\n    // Manually trigger the filterCallback after updating the value (passing the string value)\n    filterCallback(filterValue);\n\n    const filterValueString = event ? this.formatDate(event) : '';\n    // Call the onFilter event to update totalRecords\n    this.onFilter({\n      filteredValue: this.data.filter((item) => {\n        const columnValue = item[columnCode];\n\n        // If the column value is a string, use it as is for comparison\n        if (columnValue) {\n          // Convert the item value to a string (in the same format)\n          const itemDateString = this.formatDate(new Date(columnValue));\n          return itemDateString === filterValueString; // Compare the string dates\n        }\n        return false;\n      }),\n    });\n  }\n\n  // Filter logic for composed columns (to check against multi-select values)\n  filterComposedData(item: any, composedName: string, value: any): boolean {\n    if (Array.isArray(value) && value.length > 0) {\n      return value.some((filterValue: string) =>\n        item[composedName]?.toLowerCase().includes(filterValue.toLowerCase())\n      );\n    }\n    return true;\n  }\n\n  // Function to calculate column width based on text in header and data\n  private calculateColumnWidth(col: TableColumn): string {\n    const calculatedWidth = calculateTextWidth(col, col.title);\n    const totalWidth = calculatedWidth + this.iconWidth + 20;\n    return `${totalWidth}px`;\n  }\n\n  getHeaderWidth(col: TableColumn): string {\n    // Remove 'px' from col.width and convert it to a number\n    const widthWithoutPx = parseInt(col.width?.replace('px', '') || '0', 10);\n\n    // Add 20 to the calculated width\n    const headerWidth = widthWithoutPx + 20;\n\n    // Return the new width in 'px'\n    return `${headerWidth}px`;\n  }\n\n  clear(table: Table) {\n    table.clear();\n    this.searchValue = '';\n  }\n\n  private parseDate(dateString: string): Date | null {\n    const parts = dateString.split('/');\n    if (parts.length === 3) {\n      // Assuming date format is DD/MM/YYYY\n      const day = parseInt(parts[0], 10);\n      const month = parseInt(parts[1], 10) - 1;\n      const year = parseInt(parts[2], 10);\n      const date = new Date(year, month, day);\n      return isNaN(date.getTime()) ? null : date;\n    }\n    return null;\n  }\n\n  private initializePagination(): void {\n    if (this.isPaginated) {\n      // Check if rowsPerPage is undefined or an empty array\n      if (!this.rowsPerPage || this.rowsPerPage.length === 0) {\n        this.rowsPerPage = [20, 30, 40];\n      }\n      this.rows = this.rowsPerPage[0];\n    }\n  }\n\n  private initializeActions(): void {\n    if (this.actions) {\n      this.actions.forEach((action) => {\n        switch (action.code) {\n          case 'delete':\n            this.isDelete = true;\n            this.Delete = (value: any) => action.action(value);\n            break;\n          case 'edit':\n            this.initializeEditActions(action);\n            break;\n          default:\n            this.isDelete = false;\n            this.isEdit = false;\n        }\n      });\n    }\n  }\n\n  private initializeEditActions(action: any): void {\n    this.isEdit = true;\n    this.initEditableRow = (data: any) => action.action.init(data);\n    this.saveEditableRow = (data: any) => {\n      const record = this.map.get(data.id);\n      action.action.save(data, record);\n      this.dataMap.clear();\n    };\n    this.cancelEditableRow = (item: any) => console.log(item);\n  }\n\n  onChange(event: Event, id: number, key: any) {\n    const target = event.target as HTMLInputElement;\n    this.changeHandler(id, key, target.value);\n  }\n\n  changeHandler(id: number, key: any, value: any) {\n    let column = this.columns.find((item) => item.code === key);\n    if (!this.map.get(id)) {\n      if (column?.type === TableTypeEnum.DATE) {\n        let date = this.parseDate(value);\n        this.dataMap.set(key, date);\n      } else {\n        this.dataMap.set(key, value);\n      }\n      this.map.set(id, new Map(this.dataMap));\n    } else {\n      let mapItem = this.map.get(id);\n      if (column?.type === TableTypeEnum.DATE) {\n        let date = this.parseDate(value);\n        mapItem.set(key, date);\n      } else {\n        mapItem.set(key, value);\n      }\n    }\n  }\n\n  getColumnFilterType(column: TableColumn): string {\n    switch (column.type) {\n      case TableTypeEnum.STRING:\n        return 'text';\n      case TableTypeEnum.AMOUNT:\n      case TableTypeEnum.NUMBER:\n        return 'numeric';\n      case TableTypeEnum.DATE:\n        return 'date';\n      case TableTypeEnum.MULTISELECT:\n        return 'multiSelect';\n      case TableTypeEnum.BOOLEAN:\n        return 'boolean';\n      case TableTypeEnum.COMPOSED:\n        return 'composed';\n      default:\n        return 'text';\n    }\n  }\n\n  // State Check Methods\n  isEditable(key: string): boolean {\n    let column = this.columns.find((item) => item.code === key);\n    return column?.isEditable !== false;\n  }\n\n  isMultiSelect(key: any): boolean {\n    let column = this.columns.find((item) => item.code === key);\n    if (\n      column?.type === TableTypeEnum.MULTISELECT &&\n      column.options &&\n      column.code !== undefined\n    ) {\n      this.optionEntries = new Map([\n        [column.code, Object.values(column.options)],\n      ]);\n      this.optionValues = this.optionEntries.get(key) || [];\n      return true;\n    }\n    return false;\n  }\n\n  isDatePicker(key: any): boolean {\n    return (\n      this.columns.find((item) => item.code === key)?.type ===\n      TableTypeEnum.DATE\n    );\n  }\n\n  // Utility Methods\n  dateConverter(value: any): string {\n    return new Date(value).toLocaleDateString('en-US');\n  }\n\n  getCurrencySymbol(column: TableColumn): string | undefined {\n    return column.type === TableTypeEnum.AMOUNT &&\n      column.currency &&\n      this.isValidCurrencyCode(column.currency)\n      ? column.currency\n      : undefined;\n  }\n\n  private isValidCurrencyCode(currencyCode: string): boolean {\n    return this.validCurrencyCodes.includes(currencyCode);\n  }\n\n  filterGlobal(event: Event): void {\n    const target = event.target as HTMLInputElement;\n    const value = target.value.toLowerCase();\n\n    // Create a new filtered dataset\n    const filteredData = this.data.filter((item) => {\n      return this.globalFilterFields.some((field) => {\n        const column = this.columns.find((col) => col.code === field);\n        if (!column) {\n          return false;\n        }\n\n        // Handle different column types\n        if (column.type === TableTypeEnum.DATE) {\n          const itemDate = this.formatDate(item[field]);\n          return itemDate && itemDate.includes(value);\n        } else if (\n          column.type === TableTypeEnum.AMOUNT ||\n          column.type === TableTypeEnum.NUMBER\n        ) {\n          return (\n            item[field] && item[field].toString().toLowerCase().includes(value)\n          );\n        } else if (column.type === TableTypeEnum.COMPOSED) {\n          // Handle composed type by searching for text in the composed cells\n          return this.filterComposedColumn(item[field], value);\n        } else {\n          return (\n            item[field] && item[field].toString().toLowerCase().includes(value)\n          );\n        }\n      });\n    });\n\n    // Update the table's value\n    this.dt.value = filteredData;\n\n    // After filtering, update the totalRecords\n    this.totalRecords = filteredData.length ?? 0;\n  }\n\n  private filterComposedColumn(composedData: any, value: string): boolean {\n    if (composedData) {\n      // Iterate over composed keys and check if any key's value contains the search text\n      return Object.keys(composedData).some((key) => {\n        const cellValue = composedData[key];\n        if (typeof cellValue === 'string') {\n          return cellValue.toLowerCase().includes(value);\n        }\n        return false;\n      });\n    }\n    return false;\n  }\n\n  formatDate(date: any): string {\n    if (!date) return '';\n    if (date instanceof Date) {\n      // Handle Date object\n      const day = date.getDate().toString().padStart(2, '0');\n      const month = (date.getMonth() + 1).toString().padStart(2, '0');\n      const year = date.getFullYear().toString();\n      return `${day}/${month}/${year}`;\n    } else if (typeof date === 'string') {\n      // Handle string date\n      const parts = date.split('/');\n      if (parts.length === 3) {\n        return `${parts[0]}/${parts[1]}/${parts[2]}`;\n      } else {\n        // Handle partial dates\n        return date;\n      }\n    }\n    return '';\n  }\n\n  exportExcel() {\n    this.exportExcelEvent.emit();\n  }\n\n  exportPdf() {\n    this.exportPdfEvent.emit();\n  }\n\n  getImageStyle(style: TitleStyle | ImageStyle | undefined): {\n    [key: string]: string;\n  } {\n    if (style) {\n      const imageStyle: { [key: string]: string } = {\n        width: (style as ImageStyle).width || 'auto',\n        height: (style as ImageStyle).height || 'auto',\n      };\n\n      // Fallback to empty string if margin, marginLeft, or marginRight are undefined\n      if ((style as ImageStyle).margin) {\n        imageStyle.margin = (style as ImageStyle).margin!;\n      }\n\n      if ((style as ImageStyle).marginLeft) {\n        imageStyle.marginLeft = (style as ImageStyle).marginLeft!;\n      }\n\n      if ((style as ImageStyle).marginRight) {\n        imageStyle.marginRight = (style as ImageStyle).marginRight!;\n      }\n\n      if ((style as ImageStyle).marginTop) {\n        imageStyle.marginTop = (style as ImageStyle).marginTop!;\n      }\n\n      if ((style as ImageStyle).marginBottom) {\n        imageStyle.marginBottom = (style as ImageStyle).marginBottom!;\n      }\n\n      return imageStyle;\n    }\n\n    return {};\n  }\n\n  getTitleStyle(style: TitleStyle | ImageStyle | undefined): {\n    [key: string]: string;\n  } {\n    if (style) {\n      return {\n        color: style.color || 'inherit',\n        fontSize: (style as TitleStyle).fontSize || 'inherit',\n        textAlign: (style as TitleStyle).position || 'left',\n      };\n    }\n    return {};\n  }\n\n  formatNumber(\n    value: number,\n    decimalPlaces?: number,\n    thousandSeparator: 'comma' | 'space' = 'comma',\n    decimalSeparator: 'comma' | 'dot' = 'dot'\n  ): string {\n    if (value === null || value === undefined || isNaN(value)) return '';\n\n    // Convert the number to a string with full precision if decimalPlaces is undefined\n    let formattedNumber =\n      decimalPlaces !== undefined\n        ? value.toFixed(decimalPlaces)\n        : value.toString();\n\n    // Replace decimal separator (default is \"dot\")\n    if (decimalSeparator === 'comma') {\n      formattedNumber = formattedNumber.replace('.', ',');\n    }\n\n    // Apply thousand separator only if the number is >= 1000\n    if (thousandSeparator && Math.abs(value) >= 1000) {\n      const parts = formattedNumber.split(\n        decimalSeparator === 'comma' ? ',' : '.'\n      );\n      parts[0] = parts[0].replace(\n        /\\B(?=(\\d{3})+(?!\\d))/g,\n        thousandSeparator === 'comma' ? ',' : ' '\n      );\n      formattedNumber = parts.join(decimalSeparator === 'comma' ? ',' : '.');\n    }\n\n    return formattedNumber;\n  }\n}\n","<div class=\"pt-advanced-prime-table table-container\">\n  <p-table\n    #dt\n    [value]=\"data\"\n    [loading]=\"loading\"\n    [rows]=\"rows\"\n    [paginator]=\"isPaginated\"\n    [globalFilterFields]=\"globalFilterFields\"\n    [rowsPerPageOptions]=\"rowsPerPage\"\n    dataKey=\"id\"\n    styleClass=\"p-datatable-gridlines\"\n    styleClass=\"p-datatable-striped\"\n    editMode=\"row\"\n    [scrollable]=\"true\"\n    [scrollHeight]=\"maxHeight !== null ? maxHeight : undefined\"\n    (onFilter)=\"onFilter($event)\"\n  >\n    <ng-template pTemplate=\"caption\">\n      <div class=\"flex\">\n        <div>\n          <h3>Total: {{ totalRecords }}</h3>\n        </div>\n\n        <div>\n          <!-- Clear filters -->\n          <button\n            *ngIf=\"hasSearchFilter\"\n            pButton\n            icon=\"pi pi-filter-slash\"\n            class=\"p-button-rounded p-button-text\"\n            (click)=\"clear(dt)\"\n            title=\"Clear filters\"\n          ></button>\n\n          <!-- Export to Excel Button -->\n          <button\n            *ngIf=\"hasExportExcel\"\n            pButton\n            icon=\"pi pi-file-excel\"\n            class=\"p-button-rounded p-button-text\"\n            (click)=\"exportExcel()\"\n            title=\"Export to Excel\"\n          ></button>\n\n          <!-- Export to PDF Button -->\n          <button\n            *ngIf=\"hasExportPDF\"\n            pButton\n            icon=\"pi pi-file-pdf\"\n            class=\"p-button-rounded p-button-text\"\n            (click)=\"exportPdf()\"\n            title=\"Export to PDF\"\n          ></button>\n        </div>\n        <div class=\"ml-auto\" *ngIf=\"hasSearchFilter\">\n          <!-- Add this wrapper div with ml-auto class -->\n          <p-iconField iconPosition=\"left\" class=\"ml-auto\">\n            <p-inputIcon>\n              <i class=\"pi pi-search\"></i>\n            </p-inputIcon>\n            <input\n              pInputText\n              type=\"text\"\n              [(ngModel)]=\"searchValue\"\n              (input)=\"filterGlobal($event)\"\n              placeholder=\"Search keyword\"\n            />\n          </p-iconField>\n        </div>\n      </div>\n    </ng-template>\n\n    <ng-template pTemplate=\"header\">\n      <tr class=\"sticky-header\">\n        <ng-container *ngFor=\"let col of columns\">\n          <th\n            *ngIf=\"!col.children; else groupHeader\"\n            [style.width]=\"getHeaderWidth(col)\"\n            [style.padding]=\"'0px'\"\n            colspan=\"1\"\n          >\n            <ng-container\n              *ngIf=\"isSortable && col.isSortable !== false; else noSortHeader\"\n            >\n              <th\n                pSortableColumn=\"{{ col.code }}\"\n                [style.width]=\"getHeaderWidth(col)\"\n              >\n                <div\n                  class=\"header-container d-flex align-items-center justify-content-between\"\n                  [style.width]=\"col.width\"\n                  [style.padding]=\"'0px'\"\n                  [style.margin]=\"'10px'\"\n                >\n                  <span>{{ col.title }}</span>\n                  <div\n                    class=\"icons d-flex align-items-center\"\n                    [style.width]=\"'77px'\"\n                  >\n                    <p-sortIcon field=\"{{ col.code }}\" />\n                    <ng-container *ngIf=\"col.isFilter !== false\">\n                      <p-columnFilter\n                        display=\"menu\"\n                        [field]=\"col.code\"\n                        display=\"menu\"\n                        [type]=\"getColumnFilterType(col)\"\n                        *ngIf=\"col.type === TableTypeEnum.COMPOSED\"\n                        showClearButton=\"false\"\n                        showApplyButton=\"false\"\n                      >\n                        <!-- TableTypeEnum.COMPOSED -->\n                        <ng-template\n                          pTemplate=\"filter\"\n                          let-value\n                          let-filterCallback=\"filterCallback\"\n                          (onFilter)=\"onFilter($event)\"\n                        >\n                          <div *ngFor=\"let composedName of col.composedNames\">\n                            <ng-container\n                              *ngIf=\"\n                                getComposedFieldType(col, composedName) ===\n                                TableTypeEnum.STRING\n                              \"\n                            >\n                              <p-multiSelect\n                                [ngModel]=\"filters[composedName]?.value\"\n                                [options]=\"filters[composedName]?.options\"\n                                (onChange)=\"\n                                  onComposedFilterChange(\n                                    composedName,\n                                    $event.value\n                                  )\n                                \"\n                                [placeholder]=\"\n                                  filters[composedName]?.placeholder\n                                \"\n                                [display]=\"'chip'\"\n                              >\n                                <ng-template let-item pTemplate=\"item\">\n                                  <div class=\"custom-multiselect-item\">\n                                    <img\n                                      *ngIf=\"item.image\"\n                                      [src]=\"item.image\"\n                                      alt=\"icon\"\n                                      class=\"filter-image\"\n                                    />\n                                    <span>{{ item.label }}</span>\n                                  </div>\n                                </ng-template>\n                              </p-multiSelect>\n                            </ng-container>\n                          </div>\n\n                          <!-- Define itemTemplate here -->\n                          <ng-template let-item pTemplate=\"item\">\n                            <div class=\"custom-multiselect-item\">\n                              <img\n                                *ngIf=\"item.image\"\n                                [src]=\"item.image\"\n                                alt=\"icon\"\n                                class=\"filter-image\"\n                              />\n                              <span>{{ item.label }}</span>\n                            </div>\n                          </ng-template>\n                        </ng-template>\n                      </p-columnFilter>\n\n                      <!-- other TableTypeEnum.XXX -->\n                      <p-columnFilter\n                        display=\"menu\"\n                        [field]=\"col.code\"\n                        display=\"menu\"\n                        [type]=\"getColumnFilterType(col)\"\n                        *ngIf=\"col.type !== TableTypeEnum.COMPOSED\"\n                        hideOnClear=\"true\"\n                      >\n                        <!-- TableTypeEnum.NUMBER -->\n                        <ng-template\n                          pTemplate=\"filter\"\n                          let-value\n                          let-filterCallback=\"filterCallback\"\n                          *ngIf=\"col.type === TableTypeEnum.NUMBER\"\n                          (onFilter)=\"onFilter($event)\"\n                        >\n                          <input\n                            pInputText\n                            type=\"number\"\n                            [step]=\"\n                              col.decimalPlaces\n                                ? '0.' + '1'.padEnd(col.decimalPlaces, '0')\n                                : 'any'\n                            \"\n                            [ngModel]=\"value\"\n                            (ngModelChange)=\"filterCallback($event)\"\n                            [placeholder]=\"'Enter a number'\"\n                          />\n                        </ng-template>\n\n                        <!-- TableTypeEnum.DATE -->\n                        <ng-template\n                          pTemplate=\"filter\"\n                          let-value\n                          let-filterCallback=\"filterCallback\"\n                          *ngIf=\"col.type === TableTypeEnum.DATE\"\n                          (onFilter)=\"onFilter($event)\"\n                        >\n                          <p-calendar\n                            [ngModel]=\"value\"\n                            (ngModelChange)=\"\n                              onCalendarFilterChange(\n                                $event,\n                                col.code!,\n                                filterCallback\n                              )\n                            \"\n                            [dateFormat]=\"'dd/mm/yy'\"\n                            [placeholder]=\"'Choose a date'\"\n                          ></p-calendar>\n                        </ng-template>\n\n                        <!-- TableTypeEnum.MULTISELECT -->\n                        <ng-template\n                          pTemplate=\"filter\"\n                          let-value\n                          let-filterCallback=\"filterCallback\"\n                          *ngIf=\"col.type === TableTypeEnum.MULTISELECT\"\n                          (onFilter)=\"onFilter($event)\"\n                        >\n                          <p-multiSelect\n                            [options]=\"col.filterOptions\"\n                            [ngModel]=\"value\"\n                            (ngModelChange)=\"filterCallback($event)\"\n                            [display]=\"'chip'\"\n                            [placeholder]=\"'Choose option'\"\n                            class=\"custom-multiselect\"\n                          ></p-multiSelect>\n                        </ng-template>\n                      </p-columnFilter>\n                    </ng-container>\n                  </div>\n                </div>\n              </th>\n            </ng-container>\n            <ng-template #noSortHeader>\n              <th>\n                <div class=\"header-container\">\n                  <span>{{ col.title }}</span>\n                  <ng-container *ngIf=\"col.isFilter !== false\">\n                    <p-columnFilter\n                      *ngIf=\"col.type === 'AMOUNT'\"\n                      display=\"menu\"\n                      [field]=\"col.code\"\n                      [type]=\"getColumnFilterType(col)\"\n                      [currency]=\"getCurrencySymbol(col)\"\n                    ></p-columnFilter>\n\n                    <p-columnFilter\n                      *ngIf=\"col.type !== 'AMOUNT'\"\n                      display=\"menu\"\n                      [field]=\"col.code\"\n                      [type]=\"getColumnFilterType(col)\"\n                    >\n                      <ng-template\n                        pTemplate=\"filter\"\n                        let-value\n                        let-filterCallback=\"filterCallback\"\n                        *ngIf=\"getColumnFilterType(col) === 'date'\"\n                      >\n                        <p-calendar\n                          [ngModel]=\"value\"\n                          (ngModelChange)=\"filterCallback($event)\"\n                          [dateFormat]=\"'dd/mm/yy'\"\n                        ></p-calendar>\n                      </ng-template>\n\n                      <ng-template\n                        pTemplate=\"filter\"\n                        let-value\n                        let-filterCallback=\"filterCallback\"\n                        *ngIf=\"getColumnFilterType(col) === 'multiSelect'\"\n                      >\n                        <p-multiSelect\n                          [options]=\"col.filterOptions\"\n                          [ngModel]=\"value\"\n                          (ngModelChange)=\"filterCallback($event)\"\n                          [display]=\"'chip'\"\n                          placeholder=\"Select\"\n                          class=\"custom-multiselect\"\n                        ></p-multiSelect>\n                      </ng-template>\n                    </p-columnFilter>\n                  </ng-container>\n                </div>\n              </th>\n            </ng-template>\n          </th>\n          <!-- Grouped headers -->\n          <ng-template #groupHeader>\n            <th\n              [attr.colspan]=\"col.children?.length\"\n              [style.width]=\"getHeaderWidth(col)\"\n              [style.text-align]=\"'center'\"\n            >\n              <span>{{ col.title }}</span>\n            </th>\n          </ng-template>\n        </ng-container>\n      </tr>\n      <!-- Child headers (Second Row) -->\n      <tr *ngIf=\"hasGroupedColumns\">\n        <ng-container *ngFor=\"let col of columns\">\n          <ng-container *ngIf=\"col.children\">\n            <th\n              *ngFor=\"let child of col.children\"\n              [style.width]=\"getHeaderWidth(child)\"\n              [style.padding]=\"'0px'\"\n            >\n              <!-- Sortable/Filterable header logic for child columns -->\n            </th>\n          </ng-container>\n        </ng-container>\n      </tr>\n    </ng-template>\n\n    <!-- Empty message template -->\n    <ng-template pTemplate=\"emptymessage\">\n      <div class=\"empty-message\">\n        <i class=\"pi pi-info-circle\"></i>\n        <p>No records available to display.</p>\n      </div>\n    </ng-template>\n\n    <!-- Body -->\n    <ng-template\n      pTemplate=\"body\"\n      let-data\n      let-editing=\"editing\"\n      let-ri=\"rowIndex\"\n    >\n      <!-- Render a table row and make it editable if `isEdit` is true -->\n      <tr *ngIf=\"!loading\" [pEditableRow]=\"isEdit ? data : null\">\n        <!-- Loop through each column -->\n        <ng-container *ngFor=\"let col of columns\">\n          <!-- Check if the column has children -->\n          <ng-container *ngIf=\"!col.children; else childColumns\">\n            <!-- Render a single cell for columns without children -->\n            <ng-container\n              *ngIf=\"col.code !== undefined && data[col.code] !== undefined\"\n            >\n              <td\n                *ngIf=\"isEditable(col.code); else normalTD\"\n                [style.width]=\"getHeaderWidth(col)\"\n              >\n                <!-- Editable input for the column -->\n                <ng-container *ngIf=\"isMultiSelect(col.code); else datePicker\">\n                  <p-cellEditor>\n                    <ng-template pTemplate=\"input\">\n                      <p-multiSelect\n                        appendTo=\"body\"\n                        [ngModel]=\"data[col.code]\"\n                        [style]=\"{ width: '100%' }\"\n                        (ngModelChange)=\"\n                          changeHandler(data.id, col.code, $event)\n                        \"\n                        [options]=\"optionValues\"\n                      ></p-multiSelect>\n                    </ng-template>\n                    <ng-template pTemplate=\"output\">\n                      <div class=\"multi-select-container\">\n                        <ng-container *ngFor=\"let rec of data[col.code]\">\n                          <p-tag [value]=\"rec\"></p-tag>\n                        </ng-container>\n                      </div>\n                    </ng-template>\n                  </p-cellEditor>\n                </ng-container>\n\n                <ng-template #datePicker>\n                  <ng-container\n                    *ngIf=\"isDatePicker(col.code); else normalInput\"\n                  >\n                    <p-cellEditor>\n                      <ng-template pTemplate=\"input\">\n                        <p-calendar\n                          [inputId]=\"data[col.code]\"\n                          [ngModel]=\"data[col.code]\"\n                          (ngModelChange)=\"\n                            changeHandler(data.id, col.code, $event)\n                          \"\n                          [dateFormat]=\"'dd/mm/yy'\"\n                        ></p-calendar>\n                      </ng-template>\n                      <ng-template pTemplate=\"output\">\n                        {{ data[col.code] | customDate }}\n                      </ng-template>\n                    </p-cellEditor>\n                  </ng-container>\n                </ng-template>\n\n                <ng-template #normalInput>\n                  <p-cellEditor>\n                    <ng-template pTemplate=\"input\">\n                      <input\n                        pInputText\n                        type=\"text\"\n                        [ngModel]=\"data[col.code]\"\n                        (change)=\"onChange($event, data.id, col.code)\"\n                      />\n                    </ng-template>\n                    <ng-template pTemplate=\"output\">\n                      <ng-container\n                        *ngIf=\"\n                          col.type === TableTypeEnum.AMOUNT;\n                          else normalOutput\n                        \"\n                      >\n                        {{\n                          data[col.code]\n                            | customCurrency\n                              : getCurrencySymbol(col)\n                              : col.decimalPlaces\n                              : col.thousandSeparator\n                              : col.decimalSeparator\n                        }}\n                      </ng-container>\n                      <ng-template #normalOutput>\n                        {{ data[col.code] }}\n                      </ng-template>\n                    </ng-template>\n                  </p-cellEditor>\n                </ng-template>\n              </td>\n\n              <ng-template #normalTD>\n                <td [style.width]=\"getHeaderWidth(col)\">\n                  <!-- COMPOSED -->\n                  <ng-container *ngIf=\"col.type === TableTypeEnum.COMPOSED\">\n                    <div class=\"composed-cell\">\n                      <ng-container\n                        *ngFor=\"\n                          let composedName of col.composedNames;\n                          let i = index\n                        \"\n                      >\n                        <!-- Check if the composedType is IMAGE -->\n                        <ng-container\n                          *ngIf=\"\n                            col.composedTypes &&\n                            col.composedTypes[i] === TableTypeEnum.IMAGE\n                          \"\n                        >\n                          <img\n                            [src]=\"data[col.code][composedName]\"\n                            alt=\"composed-img\"\n                            class=\"composed-image\"\n                            [ngStyle]=\"getImageStyle(col.composedStyles?.[composedName])\"\n                          />\n                        </ng-container>\n\n                        <!-- Check if the composedType is STRING -->\n                        <ng-container\n                          *ngIf=\"\n                            col.composedTypes &&\n                            col.composedTypes[i] === TableTypeEnum.STRING\n                          \"\n                        >\n                          <span\n                            class=\"composed-text\"\n                            [ngStyle]=\"getTitleStyle(col.composedStyles?.[composedName])\"\n                          >\n                            {{ data[col.code][composedName] }}\n                          </span>\n                        </ng-container>\n                      </ng-container>\n                    </div>\n                  </ng-container>\n\n                  <!-- AMOUNT-->\n                  <ng-container *ngIf=\"col.type === TableTypeEnum.AMOUNT\">\n                    {{\n                      data[col.code]\n                        | customCurrency\n                          : getCurrencySymbol(col)\n                          : col.decimalPlaces\n                          : col.thousandSeparator\n                          : col.decimalSeparator\n                    }}\n                  </ng-container>\n\n                  <!-- NUMBER-->\n                  <ng-container *ngIf=\"col.type === TableTypeEnum.NUMBER\">\n                    {{\n                      formatNumber(\n                        data[col.code],\n                        col.decimalPlaces,\n                        col.thousandSeparator,\n                        col.decimalSeparator\n                      )\n                    }}\n                  </ng-container>\n\n                  <!-- DATE -->\n                  <ng-container *ngIf=\"col.type === TableTypeEnum.DATE\">\n                    <!-- Format the date using your formatDate method -->\n                    {{ formatDate(data[col.code]) }}\n                  </ng-container>\n\n                  <!-- STRING, MULTISELECT-->\n                  <ng-container\n                    *ngIf=\"\n                      [\n                        TableTypeEnum.STRING,\n                        TableTypeEnum.MULTISELECT\n                      ].includes(col.type!)\n                    \"\n                  >\n                    {{ data[col.code] }}\n                  </ng-container>\n                </td>\n              </ng-template>\n            </ng-container>\n          </ng-container>\n\n          <!-- Render child columns if the column has children -->\n          <ng-template #childColumns>\n            <ng-container *ngFor=\"let child of col.children\">\n              <ng-container\n                *ngIf=\"\n                  child.code !== undefined && data[child.code] !== undefined\n                \"\n              >\n                <td [style.width]=\"getHeaderWidth(child)\">\n                  <!-- Render editable or normal cells for child columns -->\n                  <ng-container\n                    *ngIf=\"isEditable(child.code); else childNormalTD\"\n                  >\n                    <p-cellEditor>\n                      <ng-template pTemplate=\"input\">\n                        <input\n                          pInputText\n                          type=\"text\"\n                          [ngModel]=\"data[child.code]\"\n                          (change)=\"onChange($event, data.id, child.code)\"\n                        />\n                      </ng-template>\n                      <ng-template pTemplate=\"output\">\n                        {{ data[child.code] }}\n                      </ng-template>\n                    </p-cellEditor>\n                  </ng-container>\n\n                  <ng-template #childNormalTD>\n                    {{ data[child.code] }}\n                  </ng-template>\n                </td>\n              </ng-container>\n            </ng-container>\n          </ng-template>\n        </ng-container>\n\n        <!-- Render action buttons if there are any actions defined -->\n        <td *ngIf=\"actions?.length\">\n          <div class=\"action-buttons-container\">\n            <div *ngIf=\"isDelete\">\n              <button\n                pButton\n                pRipple\n                type=\"button\"\n                icon=\"pi pi-trash\"\n                (click)=\"Delete(data.id)\"\n                class=\"p-button-rounded p-button-text\"\n              ></button>\n            </div>\n            <div>\n              <button\n                pInitEditableRow\n                *ngIf=\"!editing\"\n                pButton\n                pRipple\n                type=\"button\"\n                icon=\"pi pi-pencil\"\n                (click)=\"initEditableRow(data)\"\n                class=\"p-button-rounded p-button-text\"\n              ></button>\n              <button\n                *ngIf=\"editing\"\n                pSaveEditableRow\n                pButton\n                pRipple\n                type=\"button\"\n                icon=\"pi pi-check\"\n                (click)=\"saveEditableRow(data)\"\n                class=\"p-button-rounded p-button-text\"\n              ></button>\n              <button\n                *ngIf=\"editing\"\n                pCancelEditableRow\n                pButton\n                pRipple\n                type=\"button\"\n                icon=\"pi pi-times\"\n                (click)=\"cancelEditableRow(data)\"\n                class=\"p-button-rounded p-button-text\"\n              ></button>\n            </div>\n          </div>\n        </td>\n      </tr>\n    </ng-template>\n  </p-table>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\nimport { FormMultiSelectField } from '../models/form-multi-select.model';\n\n@Component({\n  selector: 'pt-multi-select',\n  templateUrl: './pt-multi-select.component.html',\n  styleUrls: ['./pt-multi-select.component.css'],\n})\nexport class PTMultiSelectComponent implements OnInit {\n  @Input() formGroup!: FormGroup;\n  @Input() formField!: FormMultiSelectField;\n\n  ngOnInit() {\n    this.setupControl();\n  }\n\n  setupControl() {\n    let control = this.formGroup.get(this.formField.name) as FormControl;\n\n    if (!control) {\n      control = new FormControl(this.formField.value || []);\n      this.formGroup.addControl(this.formField.name, control);\n    }\n\n    const validators = this.getValidators();\n    control.setValidators(validators);\n\n    // Manage the disabled state using form control\n    setTimeout(() => {\n      if (this.formField.disabled !== undefined) {\n        if (this.formField.disabled) {\n          control.disable({ emitEvent: false });\n        } else {\n          control.enable({ emitEvent: false });\n        }\n      }\n      control.updateValueAndValidity({ emitEvent: false });\n    });\n  }\n\n  private getValidators() {\n    const validators = [];\n    if (this.formField.required) {\n      validators.push(Validators.required);\n    }\n    return validators;\n  }\n\n  getErrorMessage(): string {\n    const control = this.formGroup.get(this.formField.name);\n    if (control?.hasError('required')) {\n      return this.formField.errorText || `${this.formField.label} is required`;\n    }\n    return '';\n  }\n}\n","<div\n  [formGroup]=\"formGroup\"\n  class=\"form-field\"\n  [ngStyle]=\"{ width: formField.width || '100%' }\"\n  *ngIf=\"!formField.hidden\"\n>\n  <label *ngIf=\"formField.label\">{{ formField.label }}</label>\n  <p-multiSelect\n    [formControlName]=\"formField.name\"\n    [options]=\"formField.options\"\n    [placeholder]=\"formField.placeholder || 'Select options'\"\n    optionLabel=\"label\"\n  ></p-multiSelect>\n  <div\n    *ngIf=\"\n      formGroup.get(formField.name)?.invalid &&\n      formGroup.get(formField.name)?.touched\n    \"\n  >\n    <small class=\"p-error\">{{ getErrorMessage() }}</small>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MultiSelectModule } from 'primeng/multiselect'; // PrimeNG module\nimport { PTMultiSelectComponent } from './pt-multi-select.component';\n\n@NgModule({\n  declarations: [PTMultiSelectComponent],\n  imports: [CommonModule, ReactiveFormsModule, MultiSelectModule],\n  exports: [PTMultiSelectComponent],\n})\nexport class PTMultiSelectModule {}\n","import { NgModule } from '@angular/core';\nimport { PTAdvancedPrimeTableComponent } from './pt-advanced-prime-table.component';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ButtonModule } from 'primeng/button';\nimport { CalendarModule } from 'primeng/calendar';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { TableModule } from 'primeng/table';\nimport { TagModule } from 'primeng/tag';\nimport { CustomCurrencyPipe } from '../pipes/custom-currency';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { CustomDatePipe } from '../pipes/custom-date.pipe';\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\nimport { PTMultiSelectModule } from '../pt-multi-select';\n\n@NgModule({\n  declarations: [PTAdvancedPrimeTableComponent, CustomDatePipe],\n  imports: [\n    CommonModule,\n    TableModule,\n    InputTextModule,\n    ButtonModule,\n    CalendarModule,\n    FormsModule,\n    MultiSelectModule,\n    TagModule,\n    CustomCurrencyPipe,\n    IconFieldModule,\n    InputIconModule,\n    ProgressSpinnerModule,\n    PTMultiSelectModule,\n  ],\n  exports: [PTAdvancedPrimeTableComponent],\n})\nexport class PTAdvancedPrimeTableModule {}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class DateUtilityService {\n  // Converts a date string (dd/mm/yyyy) to a Date object\n  convertToDate(dateString: string): Date | null {\n    if (dateString) {\n      const parts = dateString.split('/');\n      if (parts.length === 3) {\n        const day = parseInt(parts[0], 10);\n        const month = parseInt(parts[1], 10) - 1; // Month is 0-based\n        const year = parseInt(parts[2], 10);\n        const date = new Date(year, month, day);\n        return isNaN(date.getTime()) ? null : date;\n      }\n    }\n    return null;\n  }\n\n  // Method to transform the data based on column type\n  transformDateFields(data: any[], columns: any[]): any[] {\n    return data.map((item) => {\n      const transformedItem = { ...item };\n\n      columns.forEach((col) => {\n        if (\n          col.code &&\n          col.type === 'DATE' && // Make sure it's a date column\n          transformedItem[col.code]\n        ) {\n          transformedItem[col.code] =\n            this.convertToDate(transformedItem[col.code] as string) ||\n            transformedItem[col.code];\n        }\n      });\n\n      return transformedItem;\n    });\n  }\n}\n","export enum TableTypeEnum {\n  DATE = 'DATE',\n  STRING = 'STRING',\n  AMOUNT = 'AMOUNT',\n  NUMBER = 'NUMBER',\n  MULTISELECT = 'MULTISELECT',\n  CURRENCY = 'CURRENCY',\n  BOOLEAN = 'BOOLEAN',\n  ACTION = 'ACTION',\n  COMPOSED = 'COMPOSED',\n  IMAGE = 'IMAGE',\n}\n","export enum SearchCriteriaTypeEnum {\n  DATE = 'DATE',\n  DATERANGE = 'DATERANGE',\n  STRING = 'STRING',\n  AMOUNT = 'AMOUNT',\n  NUMBER = 'NUMBER',\n  MULTISELECT = 'MULTISELECT',\n}\n","export enum FormInputTypeEnum {\n  DATE = 'DATE',\n  TEXT = 'TEXT',\n  TEXTAREA = 'TEXTAREA',\n  AMOUNT = 'AMOUNT',\n  NUMBER = 'NUMBER',\n  MULTISELECT = 'MULTISELECT',\n  SELECT = 'SELECT',\n  CURRENCY = 'CURRENCY',\n  CHECKBOX = 'CHECKBOX',\n  SWITCH = 'SWITCH',\n  PASSWORD = 'PASSWORD',\n}\n","export enum ButtonColorEnum {\n  PRIMARY = 'p-button-primary',\n  SECONDARY = 'p-button-secondary',\n  SUCCESS = 'p-button-success',\n  INFO = 'p-button-info',\n  WARNING = 'p-button-warning',\n  DANGER = 'p-button-danger',\n}\n","export enum InputValidationEnum {\n  ONLY_LETTERS = '^[A-Za-z ]+$',\n  ONLY_NUMBERS = '^[0-9]+$',\n  LETTERS_AND_NUMBERS = '^[A-Za-z0-9 ]+$',\n  PHONE_NUMBER = '^[0-9 ]+$',\n}\n","export enum BadgeType {\n  Info = 'info',\n  Danger = 'danger',\n  Warning = 'warning',\n}\n\nexport const BadgeTypeStyles = {\n  [BadgeType.Info]: {\n    color: 'white',\n    backgroundColor: '#17a2b8', // Info blue\n  },\n  [BadgeType.Danger]: {\n    color: 'white',\n    backgroundColor: '#dc3545', // Danger red\n  },\n  [BadgeType.Warning]: {\n    color: 'white',\n    backgroundColor: '#ffc107', // Warning yellow\n  },\n};\n","export enum SeverityEnum {\n  WARNING = 'warning',\n  SUCCESS = 'success',\n  DANGER = 'danger',\n  INFO = 'info',\n}\n","// projects/ng-prime-tools/src/lib/enums/public_api.ts\nexport * from './table-type.enum';\nexport * from './search-criteria-type.enum';\nexport * from './form-input-type.enum';\nexport * from './button-color.enum';\nexport * from './input-validation.enum';\nexport * from './badge-type.enum';\nexport * from './severity.enum';\n","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { SearchCriteriaTypeEnum } from '../enums';\nimport { SearchCriteria } from '../models/search-criteria.model';\nimport { FilterOption } from '../models/filter-option.model';\n\n@Component({\n  selector: 'multi-search-criteria',\n  templateUrl: './multi-search-criteria.component.html',\n  styleUrls: ['./multi-search-criteria.component.css'],\n})\nexport class MultiSearchCriteriaComponent implements OnInit {\n  SearchCriteriaTypeEnum = SearchCriteriaTypeEnum;\n\n  @Input() title: String = '';\n  @Input() criteria: SearchCriteria[] = [];\n  @Input() inputsPerRow: number = 3;\n  @Input() data: any[] = [];\n  @Input() mode: 'static' | 'dynamic' = 'static'; // Add mode input\n  @Output() filteredData = new EventEmitter<any[]>();\n  @Output() searchCriteria = new EventEmitter<{ [key: string]: any }>();\n\n  selectAll: boolean = false;\n  selected: FilterOption[] = [];\n\n  ngOnInit() {\n    this.criteria.forEach((item) => {\n      if (\n        item.type === SearchCriteriaTypeEnum.MULTISELECT &&\n        item.filterOptions\n      ) {\n        this.selected = [...item.filterOptions];\n        item.value = this.selected;\n      }\n    });\n  }\n\n  getCurrencySymbol(input: SearchCriteria): string {\n    return input.currency || 'EUR';\n  }\n\n  getMinFractionDigits(input: SearchCriteria): number {\n    return input.minFractionDigits ?? 0;\n  }\n\n  getMaxFractionDigits(input: SearchCriteria): number | undefined {\n    return input.maxFractionDigits ?? undefined;\n  }\n\n  getStepValue(input: SearchCriteria): number {\n    return input.maxFractionDigits\n      ? parseFloat(`0.${'1'.padEnd(input.maxFractionDigits, '0')}`)\n      : 0.0000000001;\n  }\n\n  search(): void {\n    if (this.mode === 'dynamic') {\n      const criteriaValues: { [key: string]: any } = {};\n      this.criteria.forEach((criterion) => {\n        if (criterion.value !== null && criterion.value !== undefined) {\n          criteriaValues[criterion.code] = criterion.value;\n        }\n      });\n      this.searchCriteria.emit(criteriaValues);\n    } else {\n      const filtered = this.data.filter((item) => {\n        return this.criteria.every((criterion) => {\n          if (criterion.type === SearchCriteriaTypeEnum.DATERANGE) {\n            const [startDate, endDate] = criterion.value || [\n              undefined,\n              undefined,\n            ];\n            const itemDate = this.parseDate(\n              item[criterion.code] || item['date']\n            );\n            if (!startDate && !endDate) {\n              return true;\n            }\n            if (itemDate === null) {\n              return false;\n            }\n            const parsedStartDate = startDate\n              ? this.parseDate(startDate)\n              : null;\n            const parsedEndDate = endDate ? this.parseDate(endDate) : null;\n            return (\n              (!parsedStartDate || itemDate >= parsedStartDate) &&\n              (!parsedEndDate || itemDate <= parsedEndDate)\n            );\n          } else if (\n            criterion.type === SearchCriteriaTypeEnum.AMOUNT ||\n            criterion.type === SearchCriteriaTypeEnum.NUMBER\n          ) {\n            return (\n              !criterion.value ||\n              Number(item[criterion.code]) === Number(criterion.value)\n            );\n          } else if (criterion.type === SearchCriteriaTypeEnum.MULTISELECT) {\n            return (\n              !criterion.value ||\n              criterion.value.some(\n                (option: FilterOption) => option.label === item[criterion.code]\n              )\n            );\n          } else if (criterion.type === SearchCriteriaTypeEnum.STRING) {\n            return (\n              !criterion.value ||\n              item[criterion.code]\n                .toString()\n                .toLowerCase()\n                .includes(criterion.value.toString().toLowerCase())\n            );\n          }\n          return true;\n        });\n      });\n      this.filteredData.emit(filtered);\n    }\n  }\n\n  clear(): void {\n    this.criteria.forEach((input) => {\n      input.value = null;\n    });\n    this.filteredData.emit(this.data);\n  }\n\n  onSelectAllChange(event: any, criterion: SearchCriteria) {\n    this.selectAll = event.checked;\n    criterion.value = event.checked ? [...(criterion.filterOptions ?? [])] : [];\n  }\n\n  private parseDate(dateString: string | Date | null | undefined): Date | null {\n    if (!dateString) {\n      return null;\n    }\n\n    if (Object.prototype.toString.call(dateString) === '[object Date]') {\n      return dateString as Date;\n    }\n\n    const parts = (dateString as string).split('/');\n    if (parts.length === 3) {\n      const day = parseInt(parts[0], 10);\n      const month = parseInt(parts[1], 10) - 1;\n      const year = parseInt(parts[2], 10);\n      const date = new Date(year, month, day);\n      return isNaN(date.getTime()) ? null : date;\n    }\n    return null;\n  }\n  getDecimalSeparator(input: SearchCriteria): string {\n    return input.decimalSeparator === 'comma' ? 'fr-FR' : 'en-US';\n  }\n}\n","<p-panel\n  header=\"{{ title }}\"\n  [toggleable]=\"true\"\n  [collapsed]=\"true\"\n  class=\"multi-search-criteria\"\n>\n  <div\n    class=\"criteria-container\"\n    [ngStyle]=\"{ 'grid-template-columns': 'repeat(' + inputsPerRow + ', 1fr)' }\"\n  >\n    <div *ngFor=\"let input of criteria\" class=\"criteria-item\">\n      <label class=\"bsc-label\">{{ input.title }}</label>\n\n      <ng-container [ngSwitch]=\"input.type\">\n        <!-- Date Range -->\n        <p-calendar\n          *ngSwitchCase=\"SearchCriteriaTypeEnum.DATERANGE\"\n          [(ngModel)]=\"input.value\"\n          selectionMode=\"range\"\n          [dateFormat]=\"'dd/mm/yy'\"\n          class=\"full-width-input\"\n          [showIcon]=\"true\"\n          (ngModelChange)=\"input.value = $event\"\n        ></p-calendar>\n\n        <!-- Date -->\n        <p-calendar\n          *ngSwitchCase=\"SearchCriteriaTypeEnum.DATE\"\n          [ngModel]=\"input.value\"\n          (ngModelChange)=\"input.value = $event\"\n          [dateFormat]=\"'dd/mm/yy'\"\n          [showIcon]=\"true\"\n          class=\"full-width-input\"\n        ></p-calendar>\n\n        <!-- String Input -->\n        <input\n          *ngSwitchCase=\"SearchCriteriaTypeEnum.STRING\"\n          type=\"text\"\n          pInputText\n          [(ngModel)]=\"input.value\"\n          class=\"full-width-input\"\n        />\n\n        <!-- AMOUNT (Ensures Decimal Handling) -->\n        <p-inputNumber\n          *ngSwitchCase=\"SearchCriteriaTypeEnum.AMOUNT\"\n          type=\"number\"\n          [(ngModel)]=\"input.value\"\n          mode=\"decimal\"\n          [minFractionDigits]=\"getMinFractionDigits(input)\"\n          [maxFractionDigits]=\"getMaxFractionDigits(input)\"\n          [step]=\"getStepValue(input)\"\n          [placeholder]=\"getCurrencySymbol(input)\"\n          [locale]=\"getDecimalSeparator(input)\"\n          class=\"full-width-input\"\n        ></p-inputNumber>\n\n        <!-- NUMBER (Ensures Decimal Handling) -->\n        <p-inputNumber\n          *ngSwitchCase=\"SearchCriteriaTypeEnum.NUMBER\"\n          [(ngModel)]=\"input.value\"\n          mode=\"decimal\"\n          [minFractionDigits]=\"getMinFractionDigits(input)\"\n          [maxFractionDigits]=\"getMaxFractionDigits(input)\"\n          [step]=\"getStepValue(input)\"\n          [useGrouping]=\"false\"\n          [locale]=\"getDecimalSeparator(input)\"\n          class=\"full-width-input\"\n        ></p-inputNumber>\n\n        <!-- Multi-Select -->\n        <p-multiSelect\n          *ngSwitchCase=\"SearchCriteriaTypeEnum.MULTISELECT\"\n          [options]=\"input.filterOptions\"\n          [display]=\"'chip'\"\n          placeholder=\"Select\"\n          [selectAll]=\"selectAll\"\n          [(ngModel)]=\"input.value\"\n          optionLabel=\"label\"\n          (onSelectAllChange)=\"onSelectAllChange($event, input)\"\n          class=\"custom-multiselect full-width-input\"\n        ></p-multiSelect>\n      </ng-container>\n    </div>\n  </div>\n\n  <ng-template pTemplate=\"footer\">\n    <div class=\"footer-buttons\">\n      <p-button\n        label=\"Effacer\"\n        icon=\"pi pi-times\"\n        (click)=\"clear()\"\n        class=\"footer-button\"\n      ></p-button>\n      <p-button\n        label=\"Rechercher\"\n        icon=\"pi pi-search\"\n        (click)=\"search()\"\n        class=\"footer-button\"\n      ></p-button>\n    </div>\n  </ng-template>\n</p-panel>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ButtonModule } from 'primeng/button';\nimport { CalendarModule } from 'primeng/calendar';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { InputNumberModule } from 'primeng/inputnumber';\nimport { PanelModule } from 'primeng/panel';\nimport { MultiSearchCriteriaComponent } from './multi-search-criteria.component';\n\n@NgModule({\n  declarations: [MultiSearchCriteriaComponent],\n  imports: [\n    CommonModule,\n    CalendarModule,\n    InputTextModule,\n    MultiSelectModule,\n    ButtonModule,\n    FormsModule,\n    InputNumberModule,\n    PanelModule,\n  ],\n  exports: [MultiSearchCriteriaComponent],\n})\nexport class MultiSearchCriteriaModule {}\n","import { Component, Input, OnInit } from '@angular/core';\nimport {\n  FormGroup,\n  FormControl,\n  ValidatorFn,\n  AbstractControl,\n} from '@angular/forms';\nimport { FormCheckBoxField } from '../models/form-check-field.model';\n\n@Component({\n  selector: 'pt-check-box-input',\n  templateUrl: './pt-check-box-input.component.html',\n  styleUrls: ['./pt-check-box-input.component.css'],\n})\nexport class PTCheckBoxInputComponent implements OnInit {\n  @Input() formGroup!: FormGroup;\n  @Input() formField!: FormCheckBoxField;\n\n  ngOnInit() {\n    this.setupControl();\n  }\n\n  setupControl() {\n    let control = this.formGroup.get(this.formField.name) as FormControl;\n    if (!control) {\n      control = new FormControl(null);\n      this.formGroup.addControl(this.formField.name, control);\n    }\n\n    setTimeout(() => {\n      if (this.formField.disabled) {\n        control.disable({ emitEvent: false });\n      } else {\n        control.enable({ emitEvent: false });\n      }\n    });\n\n    const validators = this.getValidators();\n    control.setValidators(validators);\n    control.updateValueAndValidity({ emitEvent: false });\n  }\n\n  private getValidators(): ValidatorFn[] {\n    const validators: ValidatorFn[] = [];\n    if (this.formField.required) {\n      validators.push(this.requireChoiceValidator());\n    }\n    return validators;\n  }\n\n  private requireChoiceValidator(): ValidatorFn {\n    return (control: AbstractControl): { [key: string]: any } | null => {\n      return control.value !== null && control.value !== undefined\n        ? null\n        : { requiredChoice: true };\n    };\n  }\n\n  getErrorMessage(): string {\n    const control = this.formGroup.get(this.formField.name);\n    if (control?.errors?.['requiredChoice'] && !control?.dirty) {\n      return this.formField.errorText || `${this.formField.label} is required`;\n    }\n    return '';\n  }\n}\n","<div\n  [formGroup]=\"formGroup\"\n  class=\"form-field\"\n  [ngStyle]=\"{ width: formField.width || '100%' }\"\n  *ngIf=\"!formField.hidden\"\n>\n  <div class=\"checkbox-container\">\n    <p-checkbox\n      [formControlName]=\"formField.name\"\n      [binary]=\"true\"\n      [label]=\"formField.label || ''\"\n    ></p-checkbox>\n  </div>\n  <div\n    *ngIf=\"\n      formGroup.get(formField.name)?.errors &&\n      (formGroup.get(formField.name)?.touched ||\n        formGroup.get(formField.name)?.dirty)\n    \"\n    class=\"error-container\"\n  >\n    <small class=\"p-error\">{{ getErrorMessage() }}</small>\n  </div>\n</div>\n","// date.util.ts\n\nimport { DateFormatType } from '../types/date-format.type';\nimport { DateInputType } from '../types/date-input.type';\n\nexport function getDefaultDateFormat(\n  dateInputType: DateInputType\n): DateFormatType {\n  switch (dateInputType) {\n    case 'time':\n      return 'HH:mm';\n    case 'datetime':\n      return 'dd/mm/yy';\n    case 'date':\n    default:\n      return 'dd/mm/yy';\n  }\n}\n\nexport function getDefaultPlaceholder(dateInputType: DateInputType): string {\n  switch (dateInputType) {\n    case 'time':\n      return 'Select time';\n    case 'datetime':\n      return 'Select date and time';\n    case 'date':\n    default:\n      return 'Select date';\n  }\n}\n\nexport function parseDate(dateString: string, format: DateFormatType): Date {\n  const parts = dateString.match(/\\d+/g);\n  if (!parts || parts.length < 2)\n    throw new Error(`Invalid date string: ${dateString}`);\n\n  let day, month, year, hour, minute, second;\n  switch (format) {\n    case 'dd/mm/yy':\n    case 'dd-mm-yy':\n    case 'dd.mm.yy':\n      [day, month, year] = parts;\n      break;\n    case 'mm/dd/yy':\n      [month, day, year] = parts;\n      break;\n    case 'yy/mm/dd':\n      [year, month, day] = parts;\n      break;\n    case 'HH:mm':\n      [hour, minute] = parts;\n      return new Date(0, 0, 0, Number(hour), Number(minute));\n    case 'HH:mm:ss':\n      [hour, minute, second] = parts;\n      return new Date(0, 0, 0, Number(hour), Number(minute), Number(second));\n    default:\n      throw new Error(`Unsupported date format: ${format}`);\n  }\n\n  year = year.length === 2 ? `20${year}` : year;\n  return new Date(\n    Number(year),\n    Number(month) - 1,\n    Number(day),\n    Number(hour || 0),\n    Number(minute || 0),\n    Number(second || 0)\n  );\n}\n\nexport function validateTimeValue(\n  value: string,\n  dateFormat: DateFormatType,\n  valueType: 'minValue' | 'maxValue',\n  hourFormat: '12' | '24'\n): void {\n  const timeFormat = dateFormat.includes('ss') ? 'HH:mm:ss' : 'HH:mm';\n  const timeParts = value.match(/\\d+/g);\n\n  if (!timeParts || timeParts.length !== (timeFormat === 'HH:mm:ss' ? 3 : 2)) {\n    throw new Error(\n      `Invalid ${valueType} \"${value}\" for time format \"${timeFormat}\".`\n    );\n  }\n\n  const [hour, minute, second] = timeParts.map(Number);\n  const maxHour = hourFormat === '12' ? 12 : 23;\n  if (\n    hour < 0 ||\n    hour > maxHour ||\n    minute < 0 ||\n    minute > 59 ||\n    (second !== undefined && (second < 0 || second > 59))\n  ) {\n    throw new Error(\n      `Invalid ${valueType} \"${value}\". Time must be between 00:00 and ${maxHour}:59.`\n    );\n  }\n}\n","// pt-date.service.ts\nimport { Injectable } from '@angular/core';\nimport { DateFormatType } from '../types/date-format.type';\nimport { DateInputType } from '../types/date-input.type';\nimport { getDefaultDateFormat, validateTimeValue } from '../utils/date.util';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class PTDateService {\n  constructor() {}\n\n  // Assign default date format based on input type\n  assignDefaultDateFormat(\n    dateInputType: DateInputType,\n    currentFormat?: DateFormatType\n  ): DateFormatType {\n    return currentFormat || getDefaultDateFormat(dateInputType);\n  }\n\n  // Validate date format and input type compatibility\n  validateDateFormatAndType(\n    dateFormat: DateFormatType,\n    dateInputType: DateInputType,\n    minValue?: string,\n    maxValue?: string,\n    hourFormat: '12' | '24' = '24'\n  ): void {\n    const dateOnlyFormats: DateFormatType[] = [\n      'dd/mm/yy',\n      'dd-mm-yy',\n      'dd.mm.yy',\n      'mm/dd/yy',\n      'yy/mm/dd',\n    ];\n\n    const timeOnlyFormats: DateFormatType[] = ['HH:mm', 'HH:mm:ss'];\n\n    const dateTimeFormats: DateFormatType[] = dateOnlyFormats;\n\n    switch (dateInputType) {\n      case 'date':\n        if (!dateOnlyFormats.includes(dateFormat)) {\n          throw new Error(\n            `Invalid dateFormat \"${dateFormat}\" for dateInputType \"date\".`\n          );\n        }\n        break;\n      case 'time':\n        if (!timeOnlyFormats.includes(dateFormat)) {\n          throw new Error(\n            `Invalid dateFormat \"${dateFormat}\" for dateInputType \"time\".`\n          );\n        }\n        if (minValue) {\n          validateTimeValue(minValue, dateFormat, 'minValue', hourFormat);\n        }\n        if (maxValue) {\n          validateTimeValue(maxValue, dateFormat, 'maxValue', hourFormat);\n        }\n        break;\n      case 'datetime':\n        if (!dateTimeFormats.includes(dateFormat)) {\n          throw new Error(\n            `Invalid dateFormat \"${dateFormat}\" for dateInputType \"datetime\".`\n          );\n        }\n        break;\n      case 'range':\n        if (!dateOnlyFormats.includes(dateFormat)) {\n          throw new Error(\n            `Invalid dateFormat \"${dateFormat}\" for dateInputType \"range\".`\n          );\n        }\n        break;\n      default:\n        throw new Error(`Unsupported dateInputType: ${dateInputType}`);\n    }\n  }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\nimport { getDefaultPlaceholder, parseDate } from '../utils/date.util';\nimport { DateFormatType } from '../types/date-format.type';\nimport { DateInputType } from '../types/date-input.type';\nimport { PTDateService } from './pt-date.service';\nimport { FormDateField } from '../models/form-date-field.model';\n\n@Component({\n  selector: 'pt-date-input',\n  templateUrl: './pt-date-input.component.html',\n  styleUrls: ['./pt-date-input.component.css'],\n})\nexport class PTDateInputComponent implements OnInit {\n  @Input() formGroup!: FormGroup;\n  @Input() formField!: FormDateField;\n\n  minDate: Date | null = null;\n  maxDate: Date | null = null;\n  defaultPlaceholder: string = 'Select date';\n  defaultDateFormat: DateFormatType = 'dd/mm/yy';\n\n  constructor(private dateService: PTDateService) {}\n\n  ngOnInit() {\n    this.defaultDateFormat = this.dateService.assignDefaultDateFormat(\n      (this.formField.dateInputType as DateInputType) || 'date',\n      this.formField.dateFormat\n    );\n\n    this.setupControl();\n    this.initializeDateLimits();\n\n    try {\n      this.dateService.validateDateFormatAndType(\n        this.defaultDateFormat,\n        (this.formField.dateInputType as DateInputType) || 'date',\n        this.formField.minValue,\n        this.formField.maxValue,\n        this.formField.hourFormat || '24'\n      );\n    } catch (error) {\n      if (error instanceof Error) {\n        console.error(error.message);\n      } else {\n        console.error('An unknown error occurred.');\n      }\n    }\n\n    this.defaultPlaceholder = getDefaultPlaceholder(\n      (this.formField.dateInputType as DateInputType) || 'date'\n    );\n  }\n\n  setupControl() {\n    let control = this.formGroup.get(this.formField.name) as FormControl;\n    if (!control) {\n      control = new FormControl(null);\n      this.formGroup.addControl(this.formField.name, control);\n    }\n\n    setTimeout(() => {\n      if (this.formField.disabled) {\n        control.disable({ emitEvent: false });\n      } else {\n        control.enable({ emitEvent: false });\n      }\n    });\n    control.setValidators(this.getValidators());\n    control.updateValueAndValidity({ emitEvent: false });\n  }\n\n  initializeDateLimits() {\n    const dateFormat = this.formField.dateFormat as DateFormatType;\n\n    if (this.formField.minValue) {\n      this.minDate = parseDate(this.formField.minValue, dateFormat);\n    }\n    if (this.formField.maxValue) {\n      this.maxDate = parseDate(this.formField.maxValue, dateFormat);\n    }\n  }\n\n  private getValidators() {\n    const validators = [];\n    if (this.formField.required) {\n      validators.push(Validators.required);\n    }\n    return validators;\n  }\n\n  getErrorMessage(): string {\n    const control = this.formGroup.get(this.formField.name);\n    if (control?.hasError('required')) {\n      return this.formField.errorText || `${this.formField.label} is required`;\n    }\n    return '';\n  }\n}\n","<div\n  [formGroup]=\"formGroup\"\n  class=\"form-field\"\n  [ngStyle]=\"{ width: formField.width || '100%' }\"\n  *ngIf=\"!formField.hidden\"\n>\n  <label *ngIf=\"formField.label\">{{ formField.label }}</label>\n  <p-calendar\n    [formControlName]=\"formField.name\"\n    [placeholder]=\"formField.placeholder || defaultPlaceholder\"\n    [dateFormat]=\"formField.dateFormat || defaultDateFormat\"\n    [showIcon]=\"true\"\n    [minDate]=\"minDate\"\n    [maxDate]=\"maxDate\"\n    [showTime]=\"\n      formField.dateInputType === 'datetime' ||\n      formField.dateInputType === 'time'\n    \"\n    [timeOnly]=\"formField.dateInputType === 'time'\"\n    [hourFormat]=\"formField.hourFormat || '24'\"\n    [selectionMode]=\"formField.dateInputType === 'range' ? 'range' : 'single'\"\n  ></p-calendar>\n  <div\n    *ngIf=\"\n      formGroup.get(formField.name)?.invalid &&\n      formGroup.get(formField.name)?.touched\n    \"\n  >\n    <small class=\"p-error\">{{ getErrorMessage() }}</small>\n  </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport {\n  FormGroup,\n  Validators,\n  ValidatorFn,\n  FormControl,\n} from '@angular/forms';\nimport { InputValidationEnum } from '../enums/input-validation.enum';\nimport { FormNumberField } from '../models/form-number-field.model';\n\n@Component({\n  selector: 'pt-number-input',\n  templateUrl: './pt-number-input.component.html',\n  styleUrls: ['./pt-number-input.component.css'],\n})\nexport class PTNumberInputComponent implements OnInit {\n  @Input() formGroup!: FormGroup;\n  @Input() formField!: FormNumberField;\n\n  ngOnInit() {\n    this.setupControl();\n  }\n\n  setupControl() {\n    const control = this.formGroup.get(this.formField.name) as FormControl;\n    if (control) {\n      const validators = this.getValidators();\n      control.setValidators(validators);\n\n      // Manage the disabled state directly\n      setTimeout(() => {\n        if (this.formField.disabled) {\n          control.disable({ emitEvent: false });\n        } else {\n          control.enable({ emitEvent: false });\n        }\n\n        control.updateValueAndValidity({ emitEvent: false });\n      });\n    }\n  }\n\n  private getValidators(): ValidatorFn[] {\n    const validators: ValidatorFn[] = [];\n    if (this.formField.required) {\n      validators.push(Validators.required);\n    }\n    if (this.formField.minValue !== undefined) {\n      const minValue = Number(this.formField.minValue);\n      if (!isNaN(minValue)) {\n        validators.push(Validators.min(minValue));\n      } else {\n        console.error(\n          `Invalid minValue: ${this.formField.minValue} is not a number.`\n        );\n      }\n    }\n    if (this.formField.maxValue !== undefined) {\n      const maxValue = Number(this.formField.maxValue);\n      if (!isNaN(maxValue)) {\n        validators.push(Validators.max(maxValue));\n      } else {\n        console.error(\n          `Invalid maxValue: ${this.formField.maxValue} is not a number.`\n        );\n      }\n    }\n    if (this.formField.inputValidation) {\n      validators.push(\n        this.validateWithInputValidation(this.formField.inputValidation)\n      );\n    }\n    return validators;\n  }\n\n  private validateWithInputValidation(\n    inputValidation: InputValidationEnum\n  ): ValidatorFn {\n    return Validators.pattern(new RegExp(inputValidation));\n  }\n\n  getErrorMessage(): string {\n    const control = this.formGroup.get(this.formField.name);\n    if (control?.hasError('required')) {\n      return this.formField.errorText || `${this.formField.label} is required`;\n    } else if (control?.hasError('min')) {\n      return `${this.formField.label} must be at least ${this.formField.minValue}`;\n    } else if (control?.hasError('max')) {\n      return `${this.formField.label} must be at most ${this.formField.maxValue}`;\n    } else if (control?.hasError('pattern')) {\n      return `${this.formField.label} is invalid`;\n    }\n    return '';\n  }\n}\n","<div\n  [formGroup]=\"formGroup\"\n  class=\"form-field\"\n  [ngStyle]=\"{ width: formField.width || '100%' }\"\n  *ngIf=\"!formField.hidden\"\n>\n  <label *ngIf=\"formField.label\">{{ formField.label }}</label>\n  <p-inputGroup>\n    <ng-container\n      *ngIf=\"!formField.iconPosition || formField.iconPosition === 'left'\"\n    >\n      <p-inputGroupAddon *ngIf=\"formField.iconClass || formField.currency\">\n        <i *ngIf=\"formField.iconClass\" [ngClass]=\"formField.iconClass\"></i>\n        <span *ngIf=\"!formField.iconClass && formField.currency\">\n          {{ formField.currency }}\n        </span>\n      </p-inputGroupAddon>\n      <p-inputNumber\n        [formControlName]=\"formField.name\"\n        mode=\"decimal\"\n        [locale]=\"formField.numberFormat || undefined\"\n        [useGrouping]=\"formField.numberFormat ? true : false\"\n        [minFractionDigits]=\"formField.decimalDigits || 0\"\n        [maxFractionDigits]=\"formField.decimalDigits || 0\"\n        [placeholder]=\"formField.placeholder || ''\"\n      ></p-inputNumber>\n    </ng-container>\n    <ng-container *ngIf=\"formField.iconPosition === 'right'\">\n      <p-inputNumber\n        [formControlName]=\"formField.name\"\n        mode=\"decimal\"\n        [locale]=\"formField.numberFormat || undefined\"\n        [useGrouping]=\"formField.numberFormat ? true : false\"\n        [minFractionDigits]=\"formField.decimalDigits || 0\"\n        [maxFractionDigits]=\"formField.decimalDigits || 0\"\n        [placeholder]=\"formField.placeholder || ''\"\n      ></p-inputNumber>\n      <p-inputGroupAddon *ngIf=\"formField.iconClass || formField.currency\">\n        <i *ngIf=\"formField.iconClass\" [ngClass]=\"formField.iconClass\"></i>\n        <span *ngIf=\"!formField.iconClass && formField.currency\">\n          {{ formField.currency }}\n        </span>\n      </p-inputGroupAddon>\n    </ng-container>\n  </p-inputGroup>\n  <div\n    *ngIf=\"\n      formGroup.get(formField.name)?.invalid &&\n      formGroup.get(formField.name)?.touched\n    \"\n  >\n    <small class=\"p-error\">{{ getErrorMessage() }}</small>\n  </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport {\n  FormGroup,\n  FormControl,\n  ValidatorFn,\n  AbstractControl,\n} from '@angular/forms';\nimport { FormSwitchField } from '../models/form-switch-field.model';\n\n@Component({\n  selector: 'pt-switch-input',\n  templateUrl: './pt-switch-input.component.html',\n  styleUrls: ['./pt-switch-input.component.css'],\n})\nexport class PTSwitchInputComponent implements OnInit {\n  @Input() formGroup!: FormGroup;\n  @Input() formField!: FormSwitchField;\n\n  ngOnInit() {\n    this.setupControl();\n  }\n\n  setupControl() {\n    let control = this.formGroup.get(this.formField.name) as FormControl;\n    if (!control) {\n      // Initialize control with false indicating not activated\n      control = new FormControl(this.formField.required ? null : false);\n      this.formGroup.addControl(this.formField.name, control);\n    }\n\n    // Apply validators and manage disabled state\n    control.setValidators(this.getValidators());\n    setTimeout(() => {\n      if (this.formField.disabled) {\n        control.disable({ emitEvent: false });\n      } else {\n        control.enable({ emitEvent: false });\n      }\n      control.updateValueAndValidity({ emitEvent: false });\n    });\n  }\n\n  private getValidators(): ValidatorFn[] {\n    const validators: ValidatorFn[] = [];\n    if (this.formField.required) {\n      validators.push(this.requireChoiceValidator());\n    }\n    return validators;\n  }\n\n  private requireChoiceValidator(): ValidatorFn {\n    return (control: AbstractControl): { [key: string]: any } | null => {\n      return control.value !== null && control.value !== undefined\n        ? null\n        : { requiredChoice: true };\n    };\n  }\n\n  getErrorMessage(): string {\n    const control = this.formGroup.get(this.formField.name);\n    if (control?.errors?.['requiredChoice'] && !control?.dirty) {\n      return this.formField.errorText || `${this.formField.label} is required`;\n    }\n    return '';\n  }\n}\n","<div\n  [formGroup]=\"formGroup\"\n  class=\"form-field\"\n  [ngStyle]=\"{ width: formField.width || '100%' }\"\n  *ngIf=\"!formField.hidden\"\n>\n  <div class=\"switch-container\" style=\"display: flex; align-items: center\">\n    <p-inputSwitch [formControlName]=\"formField.name\"></p-inputSwitch>\n    <label *ngIf=\"formField.label\" style=\"margin-left: 8px\">{{\n      formField.label\n    }}</label>\n  </div>\n  <div\n    *ngIf=\"\n      formGroup.get(formField.name)?.errors &&\n      (formGroup.get(formField.name)?.touched ||\n        formGroup.get(formField.name)?.dirty)\n    \"\n    class=\"error-container\"\n  >\n    <small class=\"p-error\">{{ getErrorMessage() }}</small>\n  </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport {\n  FormGroup,\n  Validators,\n  FormControl,\n  ValidatorFn,\n} from '@angular/forms';\nimport { InputValidationEnum } from '../enums/input-validation.enum';\nimport { FormTextAreaField } from '../models/form-text-area-field.model';\n\n@Component({\n  selector: 'pt-text-area-input',\n  templateUrl: './pt-text-area-input.component.html',\n  styleUrls: ['./pt-text-area-input.component.css'],\n})\nexport class PTTextAreaInputComponent implements OnInit {\n  @Input() formGroup!: FormGroup;\n  @Input() formField!: FormTextAreaField;\n  characterCount: number = 0;\n\n  ngOnInit() {\n    this.setupControl();\n  }\n\n  setupControl() {\n    const control = this.formGroup.get(this.formField.name) as FormControl;\n    if (control) {\n      const validators = this.getValidators();\n      control.setValidators(validators);\n\n      // Manage the disabled state here\n      setTimeout(() => {\n        if (this.formField.disabled) {\n          control.disable();\n        } else {\n          control.enable();\n        }\n\n        control.updateValueAndValidity();\n      });\n      // Subscribe to value changes to update character count\n      control.valueChanges.subscribe((value) => {\n        this.characterCount = value ? value.length : 0;\n      });\n    }\n  }\n\n  private getValidators(): ValidatorFn[] {\n    const validators: ValidatorFn[] = [];\n    if (this.formField.required) {\n      validators.push(Validators.required);\n    }\n    if (this.formField.minLength !== undefined) {\n      validators.push(Validators.minLength(this.formField.minLength));\n    }\n    if (this.formField.maxLength !== undefined) {\n      validators.push(Validators.maxLength(this.formField.maxLength));\n    }\n    if (this.formField.inputValidation) {\n      validators.push(\n        this.validateWithInputValidation(this.formField.inputValidation)\n      );\n    }\n    return validators;\n  }\n\n  private validateWithInputValidation(\n    inputValidation: InputValidationEnum\n  ): ValidatorFn {\n    return Validators.pattern(new RegExp(inputValidation));\n  }\n\n  getErrorMessage(): string {\n    const control = this.formGroup.get(this.formField.name);\n    if (control?.hasError('required')) {\n      return this.formField.errorText || `${this.formField.label} is required`;\n    } else if (control?.hasError('minlength')) {\n      return `${this.formField.label} must be at least ${this.formField.minLength} characters long`;\n    } else if (control?.hasError('maxlength')) {\n      return `${this.formField.label} must be at most ${this.formField.maxLength} characters long`;\n    } else if (control?.hasError('pattern')) {\n      return `${this.formField.label} is invalid`;\n    }\n    return '';\n  }\n}\n","<div\n  [formGroup]=\"formGroup\"\n  *ngIf=\"!formField.hidden\"\n  class=\"form-field\"\n  [ngStyle]=\"{ width: formField.width || '100%' }\"\n>\n  <label *ngIf=\"formField.label\">{{ formField.label }}</label>\n  <p-inputGroup>\n    <ng-container\n      *ngIf=\"!formField.iconPosition || formField.iconPosition === 'left'\"\n    >\n      <p-inputGroupAddon *ngIf=\"formField.iconClass\">\n        <i *ngIf=\"formField.iconClass\" [ngClass]=\"formField.iconClass\"></i>\n      </p-inputGroupAddon>\n      <textarea\n        pInputTextarea\n        [formControlName]=\"formField.name\"\n        [rows]=\"formField.rows || 5\"\n        [cols]=\"formField.cols || 30\"\n        [autoResize]=\"formField.autoResize || false\"\n        [attr.minlength]=\"formField.minLength\"\n        [attr.maxlength]=\"formField.maxLength\"\n        [placeholder]=\"formField.placeholder || ''\"\n      ></textarea>\n    </ng-container>\n    <ng-container *ngIf=\"formField.iconPosition === 'right'\">\n      <textarea\n        pInputTextarea\n        [formControlName]=\"formField.name\"\n        [rows]=\"formField.rows || 5\"\n        [cols]=\"formField.cols || 30\"\n        [autoResize]=\"formField.autoResize || false\"\n        [attr.minlength]=\"formField.minLength\"\n        [attr.maxlength]=\"formField.maxLength\"\n        [placeholder]=\"formField.placeholder || ''\"\n      ></textarea>\n      <p-inputGroupAddon *ngIf=\"formField.iconClass\">\n        <i *ngIf=\"formField.iconClass\" [ngClass]=\"formField.iconClass\"></i>\n      </p-inputGroupAddon>\n    </ng-container>\n  </p-inputGroup>\n  <div class=\"form-info-row\">\n    <small\n      *ngIf=\"\n        formGroup.get(formField.name)?.invalid &&\n        formGroup.get(formField.name)?.touched\n      \"\n      class=\"p-error\"\n    >\n      {{ getErrorMessage() }}\n    </small>\n    <div class=\"spacer\"></div>\n    <!-- Spacer to ensure alignment -->\n    <div\n      *ngIf=\"!formField.disabled && formField.maxLength !== undefined\"\n      class=\"character-counter\"\n    >\n      {{ characterCount }}/{{ formField.maxLength }} characters\n    </div>\n  </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport {\n  FormGroup,\n  Validators,\n  ValidatorFn,\n  FormControl,\n} from '@angular/forms';\nimport { InputValidationEnum } from '../enums/input-validation.enum';\nimport { FormTextField } from '../models/form-text-field.model';\nimport { FormInputTypeEnum } from '../enums/form-input-type.enum';\nimport { CardConfig } from '../models';\n\n@Component({\n  selector: 'pt-text-input',\n  templateUrl: './pt-text-input.component.html',\n  styleUrls: ['./pt-text-input.component.css'],\n})\nexport class PTTextInputComponent implements OnInit {\n  @Input() formGroup!: FormGroup;\n  @Input() formField!: FormTextField;\n\n  characterCount: number = 0;\n\n  ngOnInit() {\n    this.setupControl();\n    this.updateCharacterCount();\n  }\n\n  setupControl() {\n    const control = this.formGroup.get(this.formField.name) as FormControl;\n    if (control) {\n      const validators = this.getValidators();\n      control.setValidators(validators);\n\n      setTimeout(() => {\n        if (this.formField.disabled) {\n          control.disable({ emitEvent: false });\n        } else {\n          control.enable({ emitEvent: false });\n          control.valueChanges.subscribe(() => {\n            this.updateCharacterCount();\n          });\n        }\n        control.updateValueAndValidity({ emitEvent: false });\n      });\n    }\n  }\n\n  updateCharacterCount() {\n    const control = this.formGroup.get(this.formField.name) as FormControl;\n    if (control && control.value !== null) {\n      this.characterCount = control.value ? control.value.length : 0;\n    } else {\n      this.characterCount = 0;\n    }\n  }\n\n  getInputType(): string {\n    switch (this.formField.type) {\n      case FormInputTypeEnum.PASSWORD:\n        return 'password';\n      case FormInputTypeEnum.NUMBER:\n        return 'number';\n      default:\n        return 'text';\n    }\n  }\n\n  private getValidators(): ValidatorFn[] {\n    const validators: ValidatorFn[] = [];\n    if (this.formField.required) {\n      validators.push(Validators.required);\n    }\n    if (this.formField.minLength !== undefined) {\n      validators.push(Validators.minLength(this.formField.minLength));\n    }\n    if (this.formField.maxLength !== undefined) {\n      validators.push(Validators.maxLength(this.formField.maxLength));\n    }\n    if (this.formField.inputValidation) {\n      validators.push(\n        this.validateWithInputValidation(this.formField.inputValidation)\n      );\n    }\n    return validators;\n  }\n\n  private validateWithInputValidation(\n    inputValidation: InputValidationEnum\n  ): ValidatorFn {\n    return Validators.pattern(new RegExp(inputValidation));\n  }\n\n  getErrorMessage(): string {\n    const control = this.formGroup.get(this.formField.name);\n    if (control?.hasError('required')) {\n      return `${this.formField.label} is required`;\n    } else if (control?.hasError('minlength')) {\n      return `${this.formField.label} must be at least ${this.formField.minLength} characters`;\n    } else if (control?.hasError('maxlength')) {\n      return `${this.formField.label} must be at most ${this.formField.maxLength} characters`;\n    } else if (control?.hasError('pattern')) {\n      return `${this.formField.label} is invalid`;\n    }\n    return '';\n  }\n}\n","<div\n  [formGroup]=\"formGroup\"\n  class=\"form-field\"\n  [ngStyle]=\"{\n    width: formField.width || '100%',\n    height: formField.height || 'auto'\n  }\"\n  *ngIf=\"!formField.hidden\"\n>\n  <label *ngIf=\"formField.label\">{{ formField.label }}</label>\n\n  <ng-container *ngIf=\"formField.iconClass; else noIcon\">\n    <p-iconField [iconPosition]=\"formField.iconPosition || 'left'\">\n      <p-inputIcon\n        *ngIf=\"formField.iconClass\"\n        [styleClass]=\"formField.iconClass\"\n      ></p-inputIcon>\n      <input\n        [type]=\"getInputType()\"\n        pInputText\n        [formControlName]=\"formField.name\"\n        [placeholder]=\"formField.placeholder ?? ''\"\n        [attr.minlength]=\"formField.minLength\"\n        [attr.maxlength]=\"formField.maxLength\"\n        [ngStyle]=\"{\n          width: formField.width || '100%',\n          height: formField.height || 'auto'\n        }\"\n      />\n    </p-iconField>\n  </ng-container>\n\n  <ng-template #noIcon>\n    <input\n      [type]=\"getInputType()\"\n      pInputText\n      [formControlName]=\"formField.name\"\n      [placeholder]=\"formField.placeholder ?? ''\"\n      [attr.minlength]=\"formField.minLength\"\n      [attr.maxlength]=\"formField.maxLength\"\n      [ngStyle]=\"{\n        width: formField.width || '100%',\n        height: formField.height || 'auto'\n      }\"\n    />\n  </ng-template>\n\n  <div class=\"form-info-row\">\n    <small\n      *ngIf=\"\n        formGroup.get(formField.name)?.invalid &&\n        formGroup.get(formField.name)?.touched\n      \"\n      class=\"p-error\"\n    >\n      {{ getErrorMessage() }}\n    </small>\n    <div class=\"spacer\"></div>\n    <div\n      *ngIf=\"!formField.disabled && formField.maxLength !== undefined\"\n      class=\"character-counter\"\n    >\n      {{ characterCount }}/{{ formField.maxLength }} characters\n    </div>\n  </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\nimport { FormDropdownField } from '../models/form-drop-down-field.model';\n\n@Component({\n  selector: 'pt-dropdown',\n  templateUrl: './pt-dropdown.component.html',\n  styleUrls: ['./pt-dropdown.component.css'],\n})\nexport class PTDropdownComponent implements OnInit {\n  @Input() formGroup!: FormGroup;\n  @Input() formField!: FormDropdownField;\n\n  ngOnInit() {\n    this.setupControl();\n  }\n\n  setupControl() {\n    let control = this.formGroup.get(this.formField.name) as FormControl;\n\n    if (!control) {\n      control = new FormControl(this.formField.value || null);\n      this.formGroup.addControl(this.formField.name, control);\n    }\n\n    const validators = this.getValidators();\n    control.setValidators(validators);\n\n    // Manage the disabled state using form control\n    setTimeout(() => {\n      if (this.formField.disabled !== undefined) {\n        if (this.formField.disabled) {\n          control.disable({ emitEvent: false });\n        } else {\n          control.enable({ emitEvent: false });\n        }\n      }\n\n      control.updateValueAndValidity({ emitEvent: false });\n    });\n  }\n\n  private getValidators() {\n    const validators = [];\n    if (this.formField.required) {\n      validators.push(Validators.required);\n    }\n    return validators;\n  }\n\n  getErrorMessage(): string {\n    const control = this.formGroup.get(this.formField.name);\n    if (control?.hasError('required')) {\n      return this.formField.errorText || `${this.formField.label} is required`;\n    }\n    return '';\n  }\n}\n","<div\n  [formGroup]=\"formGroup\"\n  class=\"form-field\"\n  [ngStyle]=\"{ width: formField.width || '100%' }\"\n  *ngIf=\"!formField.hidden\"\n>\n  <label *ngIf=\"formField.label\">{{ formField.label }}</label>\n  <p-dropdown\n    [formControlName]=\"formField.name\"\n    [options]=\"formField.options\"\n    [placeholder]=\"formField.placeholder || 'Select an option'\"\n    optionLabel=\"label\"\n  ></p-dropdown>\n  <div\n    *ngIf=\"\n      formGroup.get(formField.name)?.invalid &&\n      formGroup.get(formField.name)?.touched\n    \"\n  >\n    <small class=\"p-error\">{{ getErrorMessage() }}</small>\n  </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { FormField } from '../../models';\nimport { FormInputTypeEnum } from '../../enums';\nimport { FormTextField } from '../../models/form-text-field.model';\nimport { FormTextAreaField } from '../../models/form-text-area-field.model';\nimport { FormMultiSelectField } from '../../models/form-multi-select.model';\nimport { FormDropdownField } from '../../models/form-drop-down-field.model';\nimport { FormSwitchField } from '../../models/form-switch-field.model';\nimport { FormNumberField } from '../../models/form-number-field.model';\nimport { FormDateField } from '../../models/form-date-field.model';\nimport { FormCheckBoxField } from '../../models/form-check-field.model';\n\n@Component({\n  selector: 'pt-dynamic-form-field',\n  templateUrl: './pt-dynamic-form-field.component.html',\n  styleUrls: ['./pt-dynamic-form-field.component.css'],\n})\nexport class PTDynamicFormFieldComponent {\n  @Input() field!: FormField;\n  @Input() form!: FormGroup;\n  @Input() inputWidth!: string;\n\n  FormInputTypeEnum = FormInputTypeEnum;\n\n  asTextField(field: FormField): FormTextField {\n    return field as FormTextField;\n  }\n\n  asNumberField(field: FormField): FormNumberField {\n    return field as FormNumberField;\n  }\n\n  asTextAreaField(field: FormField): FormTextAreaField {\n    return field as FormTextAreaField;\n  }\n\n  asDateField(field: FormField): FormDateField {\n    return field as FormDateField;\n  }\n\n  asSelectField(field: FormField): FormDropdownField {\n    return field as FormDropdownField;\n  }\n\n  asMultiSelectField(field: FormField): FormMultiSelectField {\n    return field as FormMultiSelectField;\n  }\n\n  asCheckboxField(field: FormField): FormCheckBoxField {\n    return field as FormCheckBoxField;\n  }\n\n  asSwitchField(field: FormField): FormSwitchField {\n    return field as FormSwitchField;\n  }\n}\n","<div\n  [formGroup]=\"form\"\n  class=\"form-field\"\n  [ngStyle]=\"{\n    width:\n      field.type !== FormInputTypeEnum.CHECKBOX &&\n      field.type !== FormInputTypeEnum.SWITCH\n        ? field.width || inputWidth\n        : 'auto'\n  }\"\n>\n  <ng-container [ngSwitch]=\"field.type\">\n    <pt-text-input\n      *ngSwitchCase=\"FormInputTypeEnum.TEXT\"\n      [formGroup]=\"form\"\n      [formField]=\"asTextField(field)\"\n    ></pt-text-input>\n    <pt-number-input\n      *ngSwitchCase=\"FormInputTypeEnum.NUMBER\"\n      [formGroup]=\"form\"\n      [formField]=\"asNumberField(field)\"\n    ></pt-number-input>\n    <pt-number-input\n      *ngSwitchCase=\"FormInputTypeEnum.AMOUNT\"\n      [formGroup]=\"form\"\n      [formField]=\"asNumberField(field)\"\n    ></pt-number-input>\n    <pt-text-area-input\n      *ngSwitchCase=\"FormInputTypeEnum.TEXTAREA\"\n      [formGroup]=\"form\"\n      [formField]=\"asTextAreaField(field)\"\n    ></pt-text-area-input>\n    <pt-date-input\n      *ngSwitchCase=\"FormInputTypeEnum.DATE\"\n      [formGroup]=\"form\"\n      [formField]=\"asDateField(field)\"\n    ></pt-date-input>\n    <pt-multi-select\n      *ngSwitchCase=\"FormInputTypeEnum.MULTISELECT\"\n      [formGroup]=\"form\"\n      [formField]=\"asMultiSelectField(field)\"\n    ></pt-multi-select>\n    <pt-dropdown\n      *ngSwitchCase=\"FormInputTypeEnum.SELECT\"\n      [formGroup]=\"form\"\n      [formField]=\"asSelectField(field)\"\n    ></pt-dropdown>\n    <pt-check-box-input\n      *ngSwitchCase=\"FormInputTypeEnum.CHECKBOX\"\n      [formGroup]=\"form\"\n      [formField]=\"asCheckboxField(field)\"\n    ></pt-check-box-input>\n    <pt-switch-input\n      *ngSwitchCase=\"FormInputTypeEnum.SWITCH\"\n      [formGroup]=\"form\"\n      [formField]=\"asSwitchField(field)\"\n    ></pt-switch-input>\n  </ng-container>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\nimport { FormField } from '../models/form-field.model';\nimport { FormFieldGroup } from '../models/form-field-group.model';\nimport { FormButton } from '../models/form-button.model';\nimport { FormInputTypeEnum } from '../enums/form-input-type.enum';\n\n@Component({\n  selector: 'pt-form-builder',\n  templateUrl: './pt-form-builder.component.html',\n  styleUrls: ['./pt-form-builder.component.css'],\n})\nexport class PTFormBuilderComponent implements OnInit {\n  @Input() mainGroup: FormFieldGroup = { fields: [], groups: [] };\n  @Input() buttons: FormButton[] = [];\n  @Input() title?: string;\n  @Input() titleStyle?: { [key: string]: string };\n  @Input() inputWidth: string = '100%';\n  @Input() language: 'en' | 'fr' = 'en';\n  @Output() formSubmit = new EventEmitter<{ [key: string]: any }>();\n  form: FormGroup;\n\n  FormInputTypeEnum = FormInputTypeEnum;\n\n  private errorMessages = {\n    en: {\n      required: 'is required',\n    },\n    fr: {\n      required: 'est requis',\n    },\n  };\n\n  constructor(private fb: FormBuilder) {\n    this.form = this.fb.group({});\n  }\n\n  ngOnInit() {\n    this.buildFormGroup(this.mainGroup);\n  }\n\n  buildFormGroup(group: FormFieldGroup) {\n    group.fields?.forEach((field) => {\n      const validators = field.required ? [Validators.required] : [];\n      this.form.addControl(\n        field.name,\n        this.fb.control(field.value, validators)\n      );\n    });\n\n    group.groups?.forEach((subGroup) => {\n      this.buildFormGroup(subGroup);\n    });\n  }\n\n  getErrorMessage(field: FormField): string {\n    if (this.form.get(field.name)?.hasError('required')) {\n      return (\n        field.errorText ||\n        `${field.label} ${this.errorMessages[this.language].required}`\n      );\n    }\n    return '';\n  }\n\n  onSubmit() {\n    this.form.markAllAsTouched();\n    if (this.form.valid) {\n      this.formSubmit.emit(this.form.value);\n    }\n  }\n\n  onClear() {\n    this.form.reset();\n  }\n}\n","<div *ngIf=\"title\" [ngStyle]=\"titleStyle\" class=\"form-title\">{{ title }}</div>\n<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n  <ng-container *ngFor=\"let field of mainGroup.fields\">\n    <pt-dynamic-form-field\n      [field]=\"field\"\n      [form]=\"form\"\n      [inputWidth]=\"inputWidth\"\n    ></pt-dynamic-form-field>\n  </ng-container>\n\n  <ng-container *ngFor=\"let group of mainGroup.groups\">\n    <div class=\"form-field-group\" [ngStyle]=\"{ width: group.width || '100%' }\">\n      <ng-container *ngFor=\"let field of group.fields\">\n        <pt-dynamic-form-field\n          [field]=\"field\"\n          [form]=\"form\"\n          class=\"flex-item\"\n        ></pt-dynamic-form-field>\n      </ng-container>\n    </div>\n  </ng-container>\n\n  <div class=\"button-group\">\n    <button\n      *ngFor=\"let button of buttons\"\n      type=\"button\"\n      pButton\n      [label]=\"button.text\"\n      [icon]=\"button.icon || ''\"\n      [class]=\"button.color\"\n      (click)=\"\n        button.isSubmit\n          ? onSubmit()\n          : button.isClear\n          ? onClear()\n          : button.action\n          ? button.action()\n          : null\n      \"\n    ></button>\n  </div>\n</form>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { PTCheckBoxInputComponent } from './pt-check-box-input.component';\n\n@NgModule({\n  declarations: [PTCheckBoxInputComponent],\n  imports: [CommonModule, ReactiveFormsModule, CheckboxModule],\n  exports: [PTCheckBoxInputComponent],\n})\nexport class PTCheckBoxInputModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { InputGroupModule } from 'primeng/inputgroup';\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\nimport { PTNumberInputComponent } from './pt-number-input.component';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { InputNumberModule } from 'primeng/inputnumber';\n\n@NgModule({\n  declarations: [PTNumberInputComponent],\n  imports: [\n    CommonModule,\n    ReactiveFormsModule,\n    FormsModule,\n    InputGroupModule,\n    InputGroupAddonModule,\n    InputTextModule,\n    InputNumberModule,\n  ],\n  exports: [PTNumberInputComponent],\n})\nexport class PTNumberInputModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { InputSwitchModule } from 'primeng/inputswitch';\nimport { PTSwitchInputComponent } from './pt-switch-input.component';\n\n@NgModule({\n  declarations: [PTSwitchInputComponent],\n  imports: [CommonModule, ReactiveFormsModule, InputSwitchModule],\n  exports: [PTSwitchInputComponent],\n})\nexport class PTSwitchInputModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { PTTextInputComponent } from './pt-text-input.component';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\n\n@NgModule({\n  declarations: [PTTextInputComponent],\n  imports: [\n    CommonModule,\n    ReactiveFormsModule,\n    InputTextModule,\n    IconFieldModule,\n    InputIconModule,\n  ],\n  exports: [PTTextInputComponent],\n})\nexport class PTTextInputModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { InputTextareaModule } from 'primeng/inputtextarea';\nimport { PTTextAreaInputComponent } from './pt-text-area-input.component';\nimport { InputGroupModule } from 'primeng/inputgroup';\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\n\n@NgModule({\n  declarations: [PTTextAreaInputComponent],\n  imports: [\n    CommonModule,\n    ReactiveFormsModule,\n    InputTextareaModule,\n    InputGroupModule,\n    InputGroupAddonModule,\n  ],\n  exports: [PTTextAreaInputComponent],\n})\nexport class PTTextAreaInputModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CalendarModule } from 'primeng/calendar';\nimport { PTDateInputComponent } from './pt-date-input.component';\n\n@NgModule({\n  declarations: [PTDateInputComponent],\n  imports: [CommonModule, ReactiveFormsModule, CalendarModule],\n  exports: [PTDateInputComponent],\n})\nexport class PTDateInputModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { PTDropdownComponent } from './pt-dropdown.component';\n\n@NgModule({\n  declarations: [PTDropdownComponent],\n  imports: [CommonModule, ReactiveFormsModule, DropdownModule],\n  exports: [PTDropdownComponent],\n})\nexport class PTDropdownModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { PTDynamicFormFieldComponent as PTDynamicFormFieldComponent } from './pt-dynamic-form-field.component';\nimport { PTCheckBoxInputModule } from '../../pt-check-box-input';\nimport { PTNumberInputModule } from '../../pt-number-input/pt-number-input.module';\nimport { PTSwitchInputModule } from '../../pt-switch-input/pt-switch-input.module';\nimport { PTTextInputModule } from '../../pt-text-input/pt-text-input.module';\nimport { PTTextAreaInputModule } from '../../pt-text-area-input/pt-text-area-input.module';\nimport { PTDateInputModule } from '../../pt-date-input';\nimport { PTDropdownModule } from '../../pt-dropdown';\nimport { PTMultiSelectModule } from '../../pt-multi-select';\n\n@NgModule({\n  declarations: [PTDynamicFormFieldComponent],\n  imports: [\n    CommonModule,\n    ReactiveFormsModule,\n\n    // Inputs\n    PTCheckBoxInputModule,\n    PTDateInputModule,\n    PTNumberInputModule,\n    PTSwitchInputModule,\n    PTTextAreaInputModule,\n    PTTextInputModule,\n    PTDropdownModule,\n    PTMultiSelectModule,\n  ],\n  exports: [PTDynamicFormFieldComponent],\n})\nexport class PTDynamicFormFieldModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { PTFormBuilderComponent } from './pt-form-builder.component';\nimport { ButtonModule } from 'primeng/button';\nimport { PTDynamicFormFieldModule } from './pt-dynamic-form-field/pt-dynamic-form-field-module';\n\n@NgModule({\n  declarations: [PTFormBuilderComponent],\n  imports: [\n    CommonModule,\n    ReactiveFormsModule,\n    ButtonModule,\n    PTDynamicFormFieldModule,\n  ],\n  exports: [PTFormBuilderComponent],\n})\nexport class PTFormBuilderModule {}\n","import { Component, Input } from '@angular/core';\nimport {\n  LabelSetting,\n  MetricCardData,\n  ValueSetting,\n  IconStyle,\n  TextStyle,\n} from '../models';\n\n@Component({\n  selector: 'pt-metric-card',\n  templateUrl: './pt-metric-card.component.html',\n  styleUrls: ['./pt-metric-card.component.css'],\n})\nexport class PTMetricCardComponent {\n  private static readonly DEFAULT_ICON_COLOR = '#5a67d8';\n  private static readonly DEFAULT_ICON_SIZE = '24px';\n  private static readonly DEFAULT_TITLE_COLOR = '#5a67d8';\n  private static readonly DEFAULT_TITLE_SIZE = '16px';\n  private static readonly DEFAULT_VALUE_COLOR = '#2d3748';\n  private static readonly DEFAULT_VALUE_SIZE = '32px';\n  private static readonly DEFAULT_LABEL_COLOR = '#718096';\n  private static readonly DEFAULT_LABEL_SIZE = '14px';\n  private static readonly DEFAULT_ADDITIONAL_INFO_COLOR = 'gray';\n  private static readonly DEFAULT_ADDITIONAL_INFO_SIZE = '14px';\n  private static readonly DEFAULT_BACKGROUND_COLOR = '#fff';\n\n  @Input() cardData!: MetricCardData;\n\n  isIconObject(): boolean {\n    return typeof this.cardData.icon === 'object';\n  }\n\n  isTitleObject(): boolean {\n    return typeof this.cardData.title === 'object';\n  }\n\n  isValueObject(): boolean {\n    return typeof this.cardData.value === 'object';\n  }\n\n  isLabelObject(label: LabelSetting | string | undefined): boolean {\n    return typeof label === 'object';\n  }\n\n  isAdditionalInfoObject(): boolean {\n    return typeof this.cardData.additionalInfo === 'object';\n  }\n\n  getIconText(): string {\n    return this.isIconObject()\n      ? (this.cardData.icon as IconStyle).code\n      : (this.cardData.icon as string);\n  }\n\n  getTitleText(): string {\n    return this.isTitleObject()\n      ? (this.cardData.title as TextStyle).text\n      : (this.cardData.title as string);\n  }\n\n  getValueText(): string {\n    return this.isValueObject()\n      ? (this.cardData.value as ValueSetting).text\n      : (this.cardData.value as string);\n  }\n\n  getLabelText(): string {\n    const label = (this.cardData.value as ValueSetting)?.label;\n    return this.isLabelObject(label)\n      ? (label as LabelSetting).text\n      : (label as string);\n  }\n\n  getAdditionalInfoText(): string {\n    return this.isAdditionalInfoObject()\n      ? (this.cardData.additionalInfo as TextStyle).text\n      : (this.cardData.additionalInfo as string);\n  }\n\n  getIconStyles() {\n    if (this.isIconObject()) {\n      const icon = this.cardData.icon as IconStyle;\n      const shape = icon.shape || 'circular'; // Default to 'circular' if not specified\n\n      // Determine border radius based on shape\n      const borderRadius = shape === 'circular' ? '50%' : '8px';\n\n      return {\n        color: icon.color || PTMetricCardComponent.DEFAULT_ICON_COLOR,\n        fontSize: icon.fontSize || PTMetricCardComponent.DEFAULT_ICON_SIZE,\n        'background-color': icon.backgroundColor || 'transparent',\n        'border-radius': borderRadius,\n        padding: '6px',\n        display: 'inline-block',\n      };\n    }\n    return {};\n  }\n\n  getTitleStyles() {\n    if (this.isTitleObject()) {\n      const title = this.cardData.title as TextStyle;\n      return {\n        color: title.color || PTMetricCardComponent.DEFAULT_TITLE_COLOR,\n        fontSize: title.fontSize || PTMetricCardComponent.DEFAULT_TITLE_SIZE,\n        fontWeight: title.fontWeight || 'normal',\n      };\n    }\n    return {};\n  }\n\n  getValueStyles() {\n    if (this.isValueObject()) {\n      const value = this.cardData.value as ValueSetting;\n      return {\n        color: value.color || PTMetricCardComponent.DEFAULT_VALUE_COLOR,\n        fontSize: value.fontSize || PTMetricCardComponent.DEFAULT_VALUE_SIZE,\n        fontWeight: value.fontWeight || 'bold',\n      };\n    } else {\n      return {\n        color: PTMetricCardComponent.DEFAULT_VALUE_COLOR,\n        fontSize: PTMetricCardComponent.DEFAULT_VALUE_SIZE,\n        fontWeight: 'bold',\n      };\n    }\n  }\n\n  getLabelStyles(position: 'left' | 'right') {\n    const label = (this.cardData.value as ValueSetting)?.label;\n    if (\n      this.isLabelObject(label) &&\n      (label as LabelSetting).position === position\n    ) {\n      return {\n        color:\n          (label as LabelSetting).color ||\n          PTMetricCardComponent.DEFAULT_LABEL_COLOR,\n        fontSize:\n          (label as LabelSetting).fontSize ||\n          PTMetricCardComponent.DEFAULT_LABEL_SIZE,\n        fontWeight: (label as LabelSetting).fontWeight || 'normal',\n      };\n    } else {\n      return {\n        color: PTMetricCardComponent.DEFAULT_LABEL_COLOR,\n        fontSize: PTMetricCardComponent.DEFAULT_LABEL_SIZE,\n        fontWeight: 'normal',\n      };\n    }\n  }\n\n  getAdditionalInfoStyles() {\n    if (this.isAdditionalInfoObject()) {\n      const additionalInfo = this.cardData.additionalInfo as TextStyle;\n      return {\n        color:\n          additionalInfo.color ||\n          PTMetricCardComponent.DEFAULT_ADDITIONAL_INFO_COLOR,\n        fontSize:\n          additionalInfo.fontSize ||\n          PTMetricCardComponent.DEFAULT_ADDITIONAL_INFO_SIZE,\n        fontWeight: additionalInfo.fontWeight || 'normal',\n      };\n    } else {\n      return {\n        color: PTMetricCardComponent.DEFAULT_ADDITIONAL_INFO_COLOR,\n        fontSize: PTMetricCardComponent.DEFAULT_ADDITIONAL_INFO_SIZE,\n        fontWeight: 'normal',\n      };\n    }\n  }\n\n  isLabelOnLeft(): boolean {\n    const label = (this.cardData.value as ValueSetting)?.label;\n    return (\n      this.isLabelObject(label) && (label as LabelSetting).position === 'left'\n    );\n  }\n\n  isLabelOnRight(): boolean {\n    const label = (this.cardData.value as ValueSetting)?.label;\n    return (\n      this.isLabelObject(label) && (label as LabelSetting).position === 'right'\n    );\n  }\n\n  getMetricCardContainerStyle() {\n    return {\n      'min-width': this.cardData.size?.minWidth || '100%',\n      'max-width': this.cardData.size?.maxWidth || 'calc(25% - 16px)',\n      width: this.cardData.size?.fixedWidth || 'auto',\n    };\n  }\n\n  getMetricCardStyle() {\n    return {\n      'background-color':\n        this.cardData.appearance?.backgroundColor ||\n        PTMetricCardComponent.DEFAULT_BACKGROUND_COLOR,\n      'min-width': this.cardData.size?.minWidth || '100%',\n      'max-width': this.cardData.size?.maxWidth || 'calc(25% - 16px)',\n      width: this.cardData.size?.fixedWidth || 'auto',\n    };\n  }\n}\n","<div class=\"metric-card-container\" [ngStyle]=\"getMetricCardContainerStyle()\">\n  <div\n    *ngIf=\"cardData.verticalLine?.show\"\n    class=\"vertical-line\"\n    [ngStyle]=\"{\n      'background-color': cardData.verticalLine?.color || '#5a67d8'\n    }\"\n  ></div>\n\n  <div class=\"metric-card\" [ngStyle]=\"getMetricCardStyle()\">\n    <div class=\"metric-card-header\">\n      <i\n        *ngIf=\"isIconObject()\"\n        [ngClass]=\"getIconText()\"\n        [ngStyle]=\"getIconStyles()\"\n      ></i>\n      <i *ngIf=\"!isIconObject()\" [ngClass]=\"cardData.icon\"></i>\n\n      <span\n        *ngIf=\"isTitleObject()\"\n        class=\"metric-card-header-text\"\n        [ngStyle]=\"getTitleStyles()\"\n      >\n        {{ getTitleText() }}\n      </span>\n      <span *ngIf=\"!isTitleObject()\" class=\"metric-card-header-text\">\n        {{ cardData.title }}\n      </span>\n    </div>\n\n    <div class=\"metric-card-content\">\n      <div class=\"metric-value\" [ngStyle]=\"getValueStyles()\">\n        <span\n          *ngIf=\"isLabelOnLeft()\"\n          class=\"value-label\"\n          [ngStyle]=\"getLabelStyles('left')\"\n        >\n          {{ getLabelText() }}\n        </span>\n\n        <span [ngStyle]=\"getValueStyles()\">{{ getValueText() }}</span>\n\n        <span\n          *ngIf=\"isLabelOnRight()\"\n          class=\"value-label\"\n          [ngStyle]=\"getLabelStyles('right')\"\n        >\n          {{ getLabelText() }}\n        </span>\n      </div>\n\n      <div\n        *ngIf=\"cardData.divider?.show\"\n        class=\"metric-divider\"\n        [ngStyle]=\"{ backgroundColor: cardData.divider?.color || '#e2e8f0' }\"\n      ></div>\n\n      <div\n        *ngIf=\"isAdditionalInfoObject()\"\n        class=\"metric-additional-info\"\n        [ngStyle]=\"getAdditionalInfoStyles()\"\n      >\n        {{ getAdditionalInfoText() }}\n      </div>\n      <div\n        *ngIf=\"!isAdditionalInfoObject()\"\n        class=\"metric-additional-info\"\n        [ngStyle]=\"getAdditionalInfoStyles()\"\n      >\n        {{ cardData.additionalInfo }}\n      </div>\n    </div>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTMetricCardComponent } from './pt-metric-card.component';\n\n@NgModule({\n  declarations: [PTMetricCardComponent],\n  imports: [CommonModule],\n  exports: [PTMetricCardComponent],\n})\nexport class PTMetricCardModule {}\n","import { Component, Input } from '@angular/core';\nimport { MetricCardData } from '../models/metric-card-data.model';\n\n@Component({\n  selector: 'pt-metric-card-group',\n  templateUrl: './pt-metric-card-group.component.html',\n  styleUrls: ['./pt-metric-card-group.component.css'],\n})\nexport class PTMetricCardGroupComponent {\n  @Input() cardsData: MetricCardData[] = [];\n}\n","<div class=\"metric-card-group\">\n  <pt-metric-card\n    *ngFor=\"let card of cardsData\"\n    [cardData]=\"card\"\n  ></pt-metric-card>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTMetricCardGroupComponent } from './pt-metric-card-group.component';\nimport { PTMetricCardModule } from '../pt-metric-card/pt-metric-card.module';\n\n@NgModule({\n  declarations: [PTMetricCardGroupComponent],\n  imports: [CommonModule, PTMetricCardModule],\n  exports: [PTMetricCardGroupComponent],\n})\nexport class PTMetricCardGroupModule {}\n","import {\n  Component,\n  Input,\n  OnInit,\n  OnDestroy,\n  ViewChild,\n  ElementRef,\n} from '@angular/core';\nimport {\n  Chart,\n  ChartConfiguration,\n  registerables,\n  ChartType,\n  ChartData,\n} from 'chart.js';\nimport { ChartConfig } from '../models/chart-config.model';\nimport ChartDataLabels from 'chartjs-plugin-datalabels';\n\n@Component({\n  selector: 'pt-chart',\n  templateUrl: './pt-chart.component.html',\n  styleUrls: ['./pt-chart.component.css'],\n})\nexport class PTChartComponent implements OnInit, OnDestroy {\n  @Input() chartConfig!: ChartConfig;\n  @ViewChild('chartCanvas', { static: true })\n  canvasRef!: ElementRef<HTMLCanvasElement>;\n\n  private chart!: Chart;\n\n  constructor() {\n    Chart.register(...registerables, ChartDataLabels);\n  }\n\n  ngOnInit() {\n    this.initializeChart();\n  }\n\n  ngOnDestroy() {\n    this.destroyChart();\n  }\n\n  initializeChart() {\n    const canvas = this.canvasRef.nativeElement;\n\n    // Destroy the existing chart instance if it already exists\n    this.destroyChart();\n\n    const config: ChartConfiguration = {\n      type: this.chartConfig.type as ChartType,\n      data: this.chartConfig.data as ChartData,\n      options: {\n        ...this.chartConfig.options,\n        plugins: {\n          datalabels: {\n            formatter: (value, context) => {\n              const data = context.chart.data.datasets[0].data as number[];\n              const total = data.reduce((sum, val) => sum + val, 0);\n              const percentage = ((value / total) * 100).toFixed(1) + '%';\n              return percentage;\n            },\n            color: '#000',\n            font: {\n              weight: 'bold',\n            },\n          },\n          ...this.chartConfig.options?.plugins,\n        },\n      },\n    };\n\n    // Create a new Chart instance\n    this.chart = new Chart(canvas, config);\n  }\n\n  updateChart() {\n    if (this.chart) {\n      this.chart.data = this.chartConfig.data;\n\n      if (this.chartConfig.options) {\n        this.chart.options = this.chartConfig.options;\n      }\n\n      this.chart.update();\n    }\n  }\n\n  private destroyChart() {\n    if (this.chart) {\n      this.chart.destroy();\n      this.chart = undefined as any;\n    }\n  }\n}\n","<div style=\"position: relative; height: 100%; width: 100%\">\n  <canvas #chartCanvas></canvas>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTChartComponent } from './pt-chart.component';\n\n@NgModule({\n  declarations: [PTChartComponent],\n  imports: [CommonModule],\n  exports: [PTChartComponent],\n})\nexport class PTChartModule {}\n","import { Component, Input, HostListener } from '@angular/core';\nimport { MenuItem, MenuConfig } from '../models';\n\n@Component({\n  selector: 'pt-menu',\n  templateUrl: './pt-menu.component.html',\n  styleUrls: ['./pt-menu.component.css'],\n})\nexport class PTMenuComponent {\n  @Input() config: MenuConfig = {\n    icon: { code: 'pi pi-ellipsis-v', color: '#000', fontSize: '15px' },\n    menuDirection: 'right',\n  };\n\n  private static readonly DEFAULT_TEXT_COLOR = '#000';\n  private static readonly DEFAULT_TEXT_FONT_SIZE = '15px';\n  private static readonly DEFAULT_ICON_COLOR = '#000';\n  private static readonly DEFAULT_ICON_FONT_SIZE = '15px';\n  private static readonly DEFAULT_ICON_CODE = 'pi pi-ellipsis-v';\n\n  private static openMenuInstance: PTMenuComponent | null = null;\n\n  isOpen = false;\n\n  toggleMenu() {\n    if (\n      PTMenuComponent.openMenuInstance &&\n      PTMenuComponent.openMenuInstance !== this\n    ) {\n      PTMenuComponent.openMenuInstance.closeMenu();\n    }\n\n    this.isOpen = !this.isOpen;\n\n    if (this.isOpen) {\n      PTMenuComponent.openMenuInstance = this;\n    } else {\n      PTMenuComponent.openMenuInstance = null;\n    }\n  }\n\n  closeMenu() {\n    this.isOpen = false;\n    if (PTMenuComponent.openMenuInstance === this) {\n      PTMenuComponent.openMenuInstance = null;\n    }\n  }\n\n  getMenuItemIconClass(item: MenuItem): string {\n    // Assuming that icons starting with \"fa\" are FontAwesome icons\n    return typeof item.icon === 'string' ? item.icon : item.icon?.code || '';\n  }\n\n  getMenuItemIconStyles(item: MenuItem) {\n    if (typeof item.icon !== 'string') {\n      return {\n        color: item.icon?.color || PTMenuComponent.DEFAULT_ICON_COLOR,\n        fontSize: item.icon?.fontSize || PTMenuComponent.DEFAULT_ICON_FONT_SIZE,\n      };\n    }\n    return {\n      color: PTMenuComponent.DEFAULT_ICON_COLOR,\n      fontSize: PTMenuComponent.DEFAULT_ICON_FONT_SIZE,\n    };\n  }\n\n  getIconClass(): string {\n    return this.config.icon?.code || PTMenuComponent.DEFAULT_ICON_CODE;\n  }\n\n  getIconStyles() {\n    return {\n      color:\n        this.config.color ||\n        this.config.icon?.color ||\n        PTMenuComponent.DEFAULT_ICON_COLOR,\n      fontSize:\n        this.config.fontSize ||\n        this.config.icon?.fontSize ||\n        PTMenuComponent.DEFAULT_ICON_FONT_SIZE,\n    };\n  }\n\n  getTextStyles(item: MenuItem) {\n    return {\n      color: item.color || PTMenuComponent.DEFAULT_TEXT_COLOR,\n      fontSize: item.fontSize || PTMenuComponent.DEFAULT_TEXT_FONT_SIZE,\n    };\n  }\n\n  @HostListener('document:click', ['$event'])\n  onDocumentClick(event: MouseEvent) {\n    const clickedInside = (event.target as HTMLElement).closest('.pt-menu');\n    if (!clickedInside) {\n      this.closeMenu();\n    }\n  }\n}\n","<div\n  [ngClass]=\"{\n    open: isOpen,\n    'menu-left': config.menuDirection === 'left',\n    'menu-right': config.menuDirection === 'right'\n  }\"\n  class=\"pt-menu\"\n>\n  <i\n    class=\"menu-icon\"\n    (click)=\"toggleMenu()\"\n    [ngClass]=\"getIconClass()\"\n    [ngStyle]=\"getIconStyles()\"\n  ></i>\n  <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n    <div\n      class=\"menu-item\"\n      *ngFor=\"let item of config.menuItems\"\n      (click)=\"item.action()\"\n    >\n      <i\n        [ngClass]=\"getMenuItemIconClass(item)\"\n        [ngStyle]=\"getMenuItemIconStyles(item)\"\n      ></i>\n      <span [ngStyle]=\"getTextStyles(item)\">{{ item.text }}</span>\n    </div>\n  </div>\n</div>\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  Input,\n  OnChanges,\n  OnInit,\n} from '@angular/core';\nimport { CardConfig, IconStyle, TitleStyle } from '../models';\n\n@Component({\n  selector: 'pt-card',\n  templateUrl: './pt-card.component.html',\n  styleUrls: ['./pt-card.component.css'],\n})\nexport class PTCardComponent implements AfterViewInit {\n  @Input() config: CardConfig = {};\n\n  // Default values as readonly variables\n  private static readonly DEFAULT_TITLE_COLOR = '#333';\n  private static readonly DEFAULT_TITLE_FONT_SIZE = '1.5em';\n  private static readonly DEFAULT_ICON_COLOR = '#333';\n  private static readonly DEFAULT_ICON_FONT_SIZE = '1em';\n  private static readonly DEFAULT_ICON_POSITION = 'left';\n  private static readonly DEFAULT_BACKGROUND_COLOR = '#fff';\n  private static readonly DEFAULT_WIDTH = '100%';\n  private static readonly DEFAULT_HEIGHT = 'auto';\n  private static readonly DEFAULT_TITLE_POSITION = 'left';\n  private static readonly DEFAULT_MENU_POSITION = 'right';\n  private static readonly DEFAULT_BORDER_COLOR = '#ddd';\n  private static readonly DEFAULT_BORDER_WIDTH = '1px';\n  private static readonly DEFAULT_TRANSPARENCY = '100';\n  private static readonly DEFAULT_PADDING = '16px';\n  private static readonly DEFAULT_MARGIN = '16px 0';\n\n  ngAfterViewInit() {\n    this.logPatternUrl();\n  }\n\n  private logPatternUrl() {\n    if (this.config.pattern?.imageUrl) {\n      console.log(\n        `[PTCardComponent] Identifier: ${this.config.identifier}, Pattern URL: ${this.config.pattern.imageUrl}`\n      );\n    }\n  }\n\n  isTitleObject(): boolean {\n    return typeof this.config.title === 'object';\n  }\n\n  hasTitle(): boolean {\n    return this.config.title !== undefined && this.config.title !== null;\n  }\n\n  getTitleText(): string {\n    return this.isTitleObject()\n      ? (this.config.title as TitleStyle).text\n      : (this.config.title as string);\n  }\n\n  getTitleStyles() {\n    const title = this.config.title as TitleStyle | undefined;\n    const alignMap: { [key: string]: string } = {\n      left: 'flex-start',\n      center: 'center',\n      right: 'flex-end',\n    };\n    return {\n      color: title?.color || PTCardComponent.DEFAULT_TITLE_COLOR,\n      fontSize: title?.fontSize || PTCardComponent.DEFAULT_TITLE_FONT_SIZE,\n      '--text-align':\n        alignMap[title?.position || PTCardComponent.DEFAULT_TITLE_POSITION],\n    };\n  }\n\n  constructor(private cd: ChangeDetectorRef) {}\n\n  updateStyles() {\n    // After data is fetched or updated\n    this.getCardStyles();\n    this.cd.detectChanges(); // Force Angular to detect the changes\n  }\n\n  getIconClass(): string | null {\n    const icon = (this.config.title as TitleStyle)?.icon;\n    return typeof icon === 'string' ? icon : (icon as IconStyle)?.code || null;\n  }\n\n  getIconStyles() {\n    const icon = (this.config.title as TitleStyle)?.icon;\n    if (typeof icon !== 'string') {\n      return {\n        color: icon?.color || PTCardComponent.DEFAULT_ICON_COLOR,\n        fontSize: icon?.fontSize || PTCardComponent.DEFAULT_ICON_FONT_SIZE,\n      };\n    }\n    return {\n      color: PTCardComponent.DEFAULT_ICON_COLOR,\n      fontSize: PTCardComponent.DEFAULT_ICON_FONT_SIZE,\n    };\n  }\n\n  getIconPosition(): 'left' | 'right' | null {\n    const icon = (this.config.title as TitleStyle)?.icon;\n    if (typeof icon !== 'string' && icon?.position) {\n      return icon.position;\n    }\n    return PTCardComponent.DEFAULT_ICON_POSITION;\n  }\n\n  getMenuPosition(): 'left' | 'right' {\n    return this.config.menuPosition || PTCardComponent.DEFAULT_MENU_POSITION;\n  }\n\n  getCardStyles() {\n    // Transparency for the background color\n    const backgroundTransparency = this.config.transparencyPercentage\n      ? parseFloat(this.config.transparencyPercentage) / 100\n      : 1;\n\n    // Transparency for the pattern image\n    const patternTransparency = this.config.pattern?.transparencyPercentage\n      ? parseFloat(this.config.pattern.transparencyPercentage) / 100\n      : 1;\n\n    // Background color with transparency\n    const backgroundColor =\n      this.config.backgroundColor && this.config.transparencyPercentage !== '0'\n        ? this.hexToRgba(this.config.backgroundColor, backgroundTransparency)\n        : 'transparent';\n\n    // Pattern image with transparency applied via linear-gradient\n    const backgroundImage =\n      this.config.pattern?.imageUrl &&\n      this.config.pattern.transparencyPercentage !== '0'\n        ? `linear-gradient(rgba(255, 255, 255, ${\n            1 - patternTransparency\n          }), rgba(255, 255, 255, ${1 - patternTransparency})), url('${\n            this.config.pattern.imageUrl\n          }')`\n        : '';\n\n    const patternWidth = this.config.pattern?.width || '100%';\n    const patternHeight = this.config.pattern?.height || 'auto';\n\n    // Determine background-repeat value\n    const repeatX = this.config.pattern?.repeatX ? 'repeat' : 'no-repeat';\n    const repeatY = this.config.pattern?.repeatY ? 'repeat' : 'no-repeat';\n    const backgroundRepeat = `${repeatX} ${repeatY}`;\n\n    // Adjust background-size based on repeatCount if provided\n    const repeatCount = this.config.pattern?.repeatCount || 1;\n    const backgroundSize =\n      repeatCount > 1\n        ? `${patternWidth} ${patternHeight}`\n        : `${patternWidth} ${patternHeight}`;\n\n    // Determine background-position based on the position parameter\n    const backgroundPosition = this.config.pattern?.position || 'center';\n\n    const justifyContent =\n      this.config.alignContent === 'center' ? 'center' : 'flex-start';\n\n    const alignItems =\n      this.config.alignContent === 'center' ? 'center' : 'stretch';\n\n    return {\n      display: 'flex',\n      flexDirection: 'column',\n      justifyContent, // Apply conditional vertical alignment\n      alignItems, // Apply conditional horizontal alignment\n      backgroundColor, // Background color with transparency\n      backgroundImage, // Pattern image with transparency\n      backgroundSize,\n      backgroundPosition,\n      backgroundRepeat,\n      width: this.config.width || PTCardComponent.DEFAULT_WIDTH,\n      height: this.config.height || PTCardComponent.DEFAULT_HEIGHT,\n      border: this.config.noBorder\n        ? 'none'\n        : `solid ${\n            this.config.borderWidth || PTCardComponent.DEFAULT_BORDER_WIDTH\n          } ${this.config.borderColor || PTCardComponent.DEFAULT_BORDER_COLOR}`,\n      padding: this.config.padding || PTCardComponent.DEFAULT_PADDING,\n      margin: this.config.margin || PTCardComponent.DEFAULT_MARGIN,\n      borderRadius: this.config.borderRadius || '8px',\n      boxShadow: this.config.boxShadow || '0 2px 4px rgba(0, 0, 0, 0.1)',\n      position: 'relative',\n      zIndex: this.config.zIndex !== undefined ? this.config.zIndex : 'auto',\n    };\n  }\n\n  // Utility function to convert hex color to rgba\n  private hexToRgba(hex: string, alpha: number): string {\n    const shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n    hex = hex.replace(shorthandRegex, (_, r, g, b) => r + r + g + g + b + b);\n    const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n    return result\n      ? `rgba(${parseInt(result[1], 16)}, ${parseInt(\n          result[2],\n          16\n        )}, ${parseInt(result[3], 16)}, ${alpha})`\n      : hex;\n  }\n\n  getBodyStyles() {\n    const justifyContent =\n      this.config.alignBodyContent === 'center' ? 'center' : 'flex-start';\n    const alignItems =\n      this.config.alignBodyContent === 'center' ? 'center' : 'stretch';\n\n    return {\n      display: 'flex',\n      flexDirection: 'column',\n      justifyContent,\n      alignItems,\n      flexGrow: 1,\n      maxWidth: '100%',\n      padding: '16px', // Default padding for body\n      boxSizing: 'border-box',\n      overflowX: this.isScrollableHorizontal() ? 'auto' : 'hidden',\n      overflowY: this.isScrollableVertical() ? 'auto' : 'hidden',\n    };\n  }\n\n  getHeaderStyles() {\n    const justifyContent =\n      this.config.alignHeaderContent === 'center' ? 'center' : 'flex-start';\n    const alignItems =\n      this.config.alignHeaderContent === 'center' ? 'center' : 'stretch';\n\n    return {\n      display: 'flex',\n      justifyContent,\n      alignItems,\n      marginBottom: '16px', // Default margin for header\n      position: 'relative',\n    };\n  }\n\n  isScrollableHorizontal(): boolean {\n    return !!this.config.scrollableHorizontal;\n  }\n\n  isScrollableVertical(): boolean {\n    return !!this.config.scrollableVertical;\n  }\n\n  getCardClass() {\n    return this.config.alignContent === 'center' ? 'center-align' : '';\n  }\n\n  getBodyClass() {\n    return this.config.alignBodyContent === 'center' ? 'center-align' : '';\n  }\n\n  getHeaderClass() {\n    return this.config.alignHeaderContent === 'center' ? 'center-align' : '';\n  }\n}\n","<div\n  class=\"pt-card card\"\n  [ngClass]=\"getCardClass()\"\n  [attr.id]=\"config.identifier\"\n  [ngStyle]=\"getCardStyles()\"\n>\n  <!-- Card Header -->\n  <div\n    *ngIf=\"hasTitle()\"\n    class=\"card-header\"\n    [ngClass]=\"getHeaderClass()\"\n    [ngStyle]=\"getHeaderStyles()\"\n  >\n    <i\n      *ngIf=\"getIconClass() && getIconPosition() === 'left'\"\n      [ngClass]=\"getIconClass()\"\n      [ngStyle]=\"getIconStyles()\"\n      class=\"card-header-icon-left\"\n    ></i>\n    <span>{{ getTitleText() }}</span>\n    <i\n      *ngIf=\"getIconClass() && getIconPosition() === 'right'\"\n      [ngClass]=\"getIconClass()\"\n      [ngStyle]=\"getIconStyles()\"\n      class=\"card-header-icon-right\"\n    ></i>\n    <pt-menu\n      *ngIf=\"config.menu\"\n      [config]=\"config.menu\"\n      [ngClass]=\"{\n        'menu-left': getMenuPosition() === 'left',\n        'menu-right': getMenuPosition() === 'right'\n      }\"\n    ></pt-menu>\n  </div>\n\n  <!-- Card Body -->\n  <div class=\"card-body\" [ngClass]=\"getBodyClass()\" [ngStyle]=\"getBodyStyles()\">\n    <ng-content></ng-content>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTMenuComponent } from './pt-menu.component';\n\n@NgModule({\n  declarations: [PTMenuComponent],\n  imports: [CommonModule],\n  exports: [PTMenuComponent],\n})\nexport class PTMenuModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTCardComponent } from './pt-card.component';\nimport { PTMenuModule } from '../pt-menu';\n\n@NgModule({\n  declarations: [PTCardComponent],\n  imports: [CommonModule, PTMenuModule],\n  exports: [PTCardComponent],\n})\nexport class PTCardModule {}\n","import { Component, Input, HostListener } from '@angular/core';\nimport { MenuItem, MenuConfig, CardConfig } from '../models';\n\n@Component({\n  selector: 'pt-menu-fancy',\n  templateUrl: './pt-menu-fancy.component.html',\n  styleUrls: ['./pt-menu-fancy.component.css'],\n})\nexport class PTMenuFancyComponent {\n  @Input() config: MenuConfig = {\n    icon: { code: 'pi pi-ellipsis-v', color: '#000', fontSize: '15px' },\n    menuDirection: 'right',\n  };\n\n  cardMenuConfig: CardConfig = {\n    noBorder: true,\n    margin: '0',\n    padding: '5px',\n  };\n\n  private static readonly DEFAULT_TEXT_COLOR = '#000';\n  private static readonly DEFAULT_TEXT_FONT_SIZE = '15px';\n  private static readonly DEFAULT_ICON_COLOR = '#000';\n  private static readonly DEFAULT_ICON_FONT_SIZE = '15px';\n  private static readonly DEFAULT_ICON_CODE = 'pi pi-ellipsis-v';\n\n  private static openMenuInstance: PTMenuFancyComponent | null = null;\n\n  isOpen = false;\n\n  toggleMenu() {\n    if (\n      PTMenuFancyComponent.openMenuInstance &&\n      PTMenuFancyComponent.openMenuInstance !== this\n    ) {\n      PTMenuFancyComponent.openMenuInstance.closeMenu();\n    }\n\n    this.isOpen = !this.isOpen;\n\n    if (this.isOpen) {\n      PTMenuFancyComponent.openMenuInstance = this;\n    } else {\n      PTMenuFancyComponent.openMenuInstance = null;\n    }\n  }\n\n  closeMenu() {\n    this.isOpen = false;\n    if (PTMenuFancyComponent.openMenuInstance === this) {\n      PTMenuFancyComponent.openMenuInstance = null;\n    }\n  }\n\n  getMenuItemIconClass(item: MenuItem): string {\n    // Assuming that icons starting with \"fa\" are FontAwesome icons\n    return typeof item.icon === 'string' ? item.icon : item.icon?.code || '';\n  }\n\n  getMenuItemIconStyles(item: MenuItem) {\n    if (typeof item.icon !== 'string') {\n      return {\n        color: item.icon?.color || PTMenuFancyComponent.DEFAULT_ICON_COLOR,\n        fontSize:\n          item.icon?.fontSize || PTMenuFancyComponent.DEFAULT_ICON_FONT_SIZE,\n      };\n    }\n    return {\n      color: PTMenuFancyComponent.DEFAULT_ICON_COLOR,\n      fontSize: PTMenuFancyComponent.DEFAULT_ICON_FONT_SIZE,\n    };\n  }\n\n  getIconClass(): string {\n    return this.config.icon?.code || PTMenuFancyComponent.DEFAULT_ICON_CODE;\n  }\n\n  getIconStyles() {\n    return {\n      color:\n        this.config.color ||\n        this.config.icon?.color ||\n        PTMenuFancyComponent.DEFAULT_ICON_COLOR,\n      fontSize:\n        this.config.fontSize ||\n        this.config.icon?.fontSize ||\n        PTMenuFancyComponent.DEFAULT_ICON_FONT_SIZE,\n    };\n  }\n\n  getTextStyles(item: MenuItem) {\n    return {\n      color: item.color || PTMenuFancyComponent.DEFAULT_TEXT_COLOR,\n      fontSize: item.fontSize || PTMenuFancyComponent.DEFAULT_TEXT_FONT_SIZE,\n    };\n  }\n\n  @HostListener('document:click', ['$event'])\n  onDocumentClick(event: MouseEvent) {\n    const clickedInside = (event.target as HTMLElement).closest(\n      '.pt-menu-fancy'\n    );\n    if (!clickedInside) {\n      this.closeMenu();\n    }\n  }\n}\n","<div\n  [ngClass]=\"{\n    open: isOpen,\n    'menu-left': config.menuDirection === 'left',\n    'menu-right': config.menuDirection === 'right'\n  }\"\n  class=\"pt-menu-fancy\"\n>\n  <i\n    class=\"menu-icon\"\n    (click)=\"toggleMenu()\"\n    [ngClass]=\"getIconClass()\"\n    [ngStyle]=\"getIconStyles()\"\n  ></i>\n  <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n    <pt-card [config]=\"cardMenuConfig\">\n      <div\n        class=\"menu-item\"\n        *ngFor=\"let item of config.menuItems\"\n        (click)=\"item.action()\"\n      >\n        <i\n          [ngClass]=\"getMenuItemIconClass(item)\"\n          [ngStyle]=\"getMenuItemIconStyles(item)\"\n        ></i>\n        <span [ngStyle]=\"getTextStyles(item)\">{{ item.text }}</span>\n      </div>\n    </pt-card>\n  </div>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ImageStyle, NavBarMenuConfig, TextStyle } from '../models';\n\n@Component({\n  selector: 'pt-nav-bar-menu',\n  templateUrl: './pt-nav-bar-menu.component.html',\n  styleUrls: ['./pt-nav-bar-menu.component.css'],\n})\nexport class PTNavbarMenuComponent {\n  @Input() navBarMenuConfig: NavBarMenuConfig = {};\n\n  @Output() toggleSidebar: EventEmitter<void> = new EventEmitter<void>();\n\n  // Default values as readonly variables\n  private static readonly DEFAULT_LOGO_URL: string = '';\n  private static readonly DEFAULT_LOGO_ALT_TEXT: string = 'Logo';\n  private static readonly DEFAULT_LOGO_WIDTH: string = '40px';\n  private static readonly DEFAULT_LOGO_HEIGHT: string = 'auto';\n  private static readonly DEFAULT_APP_NAME: string = 'Application';\n  private static readonly DEFAULT_APP_NAME_COLOR: string = '#000';\n  private static readonly DEFAULT_APP_NAME_FONT_SIZE: string = '24px';\n  private static readonly DEFAULT_TRANSPARENCY: string = '100';\n  private static readonly DEFAULT_ICON_COLOR: string = '#333';\n  private static readonly DEFAULT_TOGGLE_BUTTON_ICON: string = 'pi pi-bars';\n  private static readonly DEFAULT_TOGGLE_BUTTON_COLOR: string = '#333';\n\n  isImageStyle(object: any): object is ImageStyle {\n    return typeof object === 'object' && 'imageUrl' in object;\n  }\n\n  isTextStyle(object: any): object is TextStyle {\n    return typeof object === 'object' && 'text' in object;\n  }\n\n  getLogoUrl(): string {\n    return this.isImageStyle(this.navBarMenuConfig.logo)\n      ? this.navBarMenuConfig.logo.imageUrl\n      : PTNavbarMenuComponent.DEFAULT_LOGO_URL;\n  }\n\n  getLogoAltText(): string {\n    return this.isImageStyle(this.navBarMenuConfig.logo)\n      ? this.navBarMenuConfig.logo.altText ||\n          PTNavbarMenuComponent.DEFAULT_LOGO_ALT_TEXT\n      : PTNavbarMenuComponent.DEFAULT_LOGO_ALT_TEXT;\n  }\n\n  getLogoStyles() {\n    if (this.isImageStyle(this.navBarMenuConfig.logo)) {\n      return {\n        color:\n          this.navBarMenuConfig.logo.color ||\n          PTNavbarMenuComponent.DEFAULT_ICON_COLOR,\n        width:\n          this.navBarMenuConfig.logo.width ||\n          PTNavbarMenuComponent.DEFAULT_LOGO_WIDTH,\n        height:\n          this.navBarMenuConfig.logo.height ||\n          PTNavbarMenuComponent.DEFAULT_LOGO_HEIGHT,\n      };\n    }\n    return {};\n  }\n\n  getAppName(): string {\n    return this.isTextStyle(this.navBarMenuConfig.appName)\n      ? this.navBarMenuConfig.appName.text\n      : PTNavbarMenuComponent.DEFAULT_APP_NAME;\n  }\n\n  getAppNameStyles() {\n    if (this.isTextStyle(this.navBarMenuConfig.appName)) {\n      return {\n        color:\n          this.navBarMenuConfig.appName.color ||\n          PTNavbarMenuComponent.DEFAULT_APP_NAME_COLOR,\n        fontSize:\n          this.navBarMenuConfig.appName.fontSize ||\n          PTNavbarMenuComponent.DEFAULT_APP_NAME_FONT_SIZE,\n      };\n    }\n    return {\n      color: PTNavbarMenuComponent.DEFAULT_APP_NAME_COLOR,\n      fontSize: PTNavbarMenuComponent.DEFAULT_APP_NAME_FONT_SIZE,\n    };\n  }\n\n  getNavbarStyles() {\n    const transparency =\n      this.navBarMenuConfig.pattern?.transparencyPercentage ||\n      PTNavbarMenuComponent.DEFAULT_TRANSPARENCY;\n    const imageUrl = this.navBarMenuConfig.pattern?.imageUrl || '';\n    const patternWidth = this.navBarMenuConfig.pattern?.width || '100%';\n    const patternHeight = this.navBarMenuConfig.pattern?.height || 'auto';\n\n    // Determine background-repeat value\n    const repeatX = this.navBarMenuConfig.pattern?.repeatX\n      ? 'repeat'\n      : 'no-repeat';\n    const repeatY = this.navBarMenuConfig.pattern?.repeatY\n      ? 'repeat'\n      : 'no-repeat';\n    const backgroundRepeat = `${repeatX} ${repeatY}`;\n\n    // Use the position directly from the pattern configuration\n    const backgroundPosition =\n      this.navBarMenuConfig.pattern?.position || 'center';\n\n    // Construct the background image style with transparency\n    const backgroundImage = imageUrl\n      ? `linear-gradient(rgba(255, 255, 255, ${\n          1 - parseFloat(transparency) / 100\n        }), rgba(255, 255, 255, ${\n          1 - parseFloat(transparency) / 100\n        })), url(${imageUrl})`\n      : '';\n\n    return {\n      backgroundColor: this.navBarMenuConfig.pattern ? 'transparent' : '#fff',\n      backgroundImage: backgroundImage,\n      backgroundSize: `${patternWidth} ${patternHeight}`,\n      backgroundPosition: backgroundPosition,\n      backgroundRepeat: backgroundRepeat,\n    };\n  }\n\n  toggleMenu() {\n    this.toggleSidebar.emit();\n  }\n\n  getToggleButtonIcon(): string {\n    return (\n      this.navBarMenuConfig.toggleButtonIcon ||\n      PTNavbarMenuComponent.DEFAULT_TOGGLE_BUTTON_ICON\n    );\n  }\n\n  getToggleButtonStyles() {\n    return {\n      color:\n        this.navBarMenuConfig.toggleButtonColor ||\n        PTNavbarMenuComponent.DEFAULT_TOGGLE_BUTTON_COLOR,\n    };\n  }\n}\n","<div class=\"pt-nav-bar-menu\" [ngStyle]=\"getNavbarStyles()\">\n  <div class=\"navbar-left\">\n    <a\n      [routerLink]=\"\n        isImageStyle(navBarMenuConfig.logo)\n          ? navBarMenuConfig.logo.routerLink\n          : '/'\n      \"\n      class=\"logo-link\"\n    >\n      <img\n        [src]=\"getLogoUrl()\"\n        [alt]=\"getLogoAltText()\"\n        [ngStyle]=\"getLogoStyles()\"\n        class=\"navbar-logo\"\n      />\n      <span class=\"navbar-title\" [ngStyle]=\"getAppNameStyles()\">\n        {{ getAppName() }}\n      </span>\n    </a>\n    <!-- Toggle Button -->\n    <a (click)=\"toggleMenu()\" class=\"toggle-btn\">\n      <i\n        [class]=\"getToggleButtonIcon()\"\n        [ngStyle]=\"getToggleButtonStyles()\"\n      ></i>\n    </a>\n  </div>\n  <div class=\"navbar-right\">\n    <pt-menu-fancy\n      *ngFor=\"let menuConfig of navBarMenuConfig.menus\"\n      [config]=\"menuConfig\"\n    ></pt-menu-fancy>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTMenuFancyComponent } from './pt-menu-fancy.component';\nimport { PTCardModule } from '../pt-card/pt-card.module';\n\n@NgModule({\n  declarations: [PTMenuFancyComponent],\n  imports: [CommonModule, PTCardModule],\n  exports: [PTMenuFancyComponent],\n})\nexport class PTMenuFancyModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTNavbarMenuComponent } from './pt-nav-bar-menu.component';\nimport { RouterModule } from '@angular/router';\nimport { PTMenuFancyModule } from '../pt-menu-fancy';\n\n@NgModule({\n  declarations: [PTNavbarMenuComponent],\n  imports: [CommonModule, RouterModule, PTMenuFancyModule],\n  exports: [PTNavbarMenuComponent],\n})\nexport class PTNavbarMenuModule {}\n","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  Input,\n  OnInit,\n  Renderer2,\n} from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\nimport {\n  Menu,\n  FormTextField,\n  SideMenuBarConfig,\n  CardConfig,\n  Badge,\n} from '../models';\nimport { BadgeType } from '../enums';\n\n@Component({\n  selector: 'pt-side-bar-menu',\n  templateUrl: './pt-side-bar-menu.component.html',\n  styleUrls: ['./pt-side-bar-menu.component.css'],\n})\nexport class PTSideBarMenuComponent implements OnInit, AfterViewInit {\n  @Input() menuConfig: SideMenuBarConfig = {\n    menus: [],\n    isVisible: true,\n    searchable: true,\n    width: '250px',\n    height: '100vh',\n    scrollable: true,\n    backgroundColor: 'white',\n    fontColor: '#333',\n    fontColorSubMenu: '#666',\n    hoverColor: '#f1f1f1',\n    hoverColorSubMenu: '#e0e0e0',\n  };\n\n  constructor(private renderer: Renderer2, private el: ElementRef) {}\n\n  searchCardConfig: CardConfig = {\n    alignContent: 'center',\n    alignBodyContent: 'center',\n    identifier: 'pt-side-bar-menu/search',\n    backgroundColor: 'white',\n    height: '72px',\n    padding: '0',\n  };\n\n  cardConfig: CardConfig = {\n    identifier: 'pt-side-bar-menu',\n    backgroundColor: '',\n    width: '',\n    height: '',\n    scrollableVertical: false,\n  };\n\n  formGroup: FormGroup = new FormGroup({\n    search: new FormControl(''),\n  });\n\n  searchField: FormTextField = {\n    name: 'search',\n    placeholder: 'Search...',\n    iconClass: 'pi pi-search',\n  };\n\n  filteredMenus: Menu[] = [];\n\n  ngOnInit(): void {\n    this.cardConfig = {\n      identifier: 'pt-side-bar-menu',\n      backgroundColor: this.menuConfig.backgroundColor,\n      width: this.menuConfig.width,\n      height: this.menuConfig.height,\n      scrollableVertical: this.menuConfig.scrollable,\n      pattern: this.menuConfig.pattern,\n    };\n\n    this.filteredMenus = this.menuConfig.menus;\n\n    const cardWidth = this.menuConfig.width\n      ? parseInt(this.menuConfig.width)\n      : 250;\n    this.searchField.width = `${cardWidth - 60}px`;\n    this.searchCardConfig.width = this.menuConfig.width;\n    this.searchCardConfig.pattern = this.menuConfig.pattern;\n\n    if (this.menuConfig.searchable) {\n      this.formGroup\n        .get('search')\n        ?.valueChanges.subscribe((searchTerm: string) => {\n          this.onSearch(searchTerm);\n        });\n    }\n  }\n\n  toggleMenu(item: Menu, event: Event): void {\n    item.isExpanded = !item.isExpanded;\n    event.preventDefault();\n  }\n\n  getChevronClass(item: Menu): string {\n    return item.isExpanded ? 'fa fa-chevron-down' : 'fa fa-chevron-right';\n  }\n\n  getBadgeStyles(badge: Badge) {\n    const defaultColors = this.getDefaultBadgeColors(\n      badge.type || BadgeType.Info\n    );\n\n    return {\n      color: badge.color || defaultColors.color,\n      backgroundColor: badge.backgroundColor || defaultColors.backgroundColor,\n      padding: '2px 8px',\n      borderRadius: '5px',\n      fontSize: '12px',\n    };\n  }\n\n  getDefaultBadgeColors(type: BadgeType) {\n    switch (type) {\n      case BadgeType.Info:\n        return { color: 'white', backgroundColor: '#17a2b8' };\n      case BadgeType.Danger:\n        return { color: 'white', backgroundColor: '#dc3545' };\n      case BadgeType.Warning:\n        return { color: 'white', backgroundColor: '#ffc107' };\n      default:\n        return { color: 'white', backgroundColor: '#6c757d' };\n    }\n  }\n\n  onSearch(searchTerm: string): void {\n    if (searchTerm.trim() === '') {\n      this.filteredMenus = this.menuConfig.menus;\n      this.collapseAllMenus();\n    } else {\n      const lowerCaseSearch = searchTerm.toLowerCase();\n      this.filteredMenus = this.menuConfig.menus\n        .map((menu) => this.searchInMenu({ ...menu }, lowerCaseSearch))\n        .filter(Boolean) as Menu[];\n    }\n  }\n\n  searchInMenu(menu: Menu, searchTerm: string): Menu | null {\n    const isMatch = menu.label.toLowerCase().includes(searchTerm);\n\n    if (menu.children) {\n      const matchingChildren = menu.children\n        .map((child) => this.searchInMenu(child, searchTerm))\n        .filter(Boolean) as Menu[];\n\n      if (matchingChildren.length > 0) {\n        menu.children = matchingChildren;\n        menu.isExpanded = true;\n        return menu;\n      }\n    }\n\n    return isMatch ? menu : null;\n  }\n\n  collapseAllMenus(): void {\n    this.menuConfig.menus.forEach((menu) => {\n      menu.isExpanded = false;\n    });\n  }\n\n  getMenuItemStyles(): any {\n    return {\n      color: this.menuConfig.fontColor || '#333', // Set default font color if not specified in config\n    };\n  }\n\n  getMenuLinkStyles(): any {\n    return {\n      color: this.menuConfig.fontColor || '#333',\n      'text-decoration': 'none',\n      'border-radius': '8px',\n      padding: '10px 15px',\n      'font-size': '16px',\n      transition: 'background-color 0.2s, color 0.2s',\n      display: 'flex',\n      'align-items': 'center',\n      ':hover': {\n        backgroundColor: this.menuConfig.hoverColor || '#f1f1f1',\n        color: '#111',\n      },\n    };\n  }\n\n  getSubMenuLinkStyles(): any {\n    return {\n      color:\n        this.menuConfig.fontColorSubMenu || this.menuConfig.fontColor || '#666',\n      'text-decoration': 'none',\n      'border-radius': '5px',\n      padding: '5px 10px',\n      transition: 'background-color 0.2s, color 0.2s',\n      ':hover': {\n        backgroundColor: this.menuConfig.hoverColorSubMenu || '#e0e0e0',\n      },\n    };\n  }\n  ngAfterViewInit(): void {\n    this.applyHoverEffects();\n  }\n\n  applyHoverEffects(): void {\n    const menuLinks = this.el.nativeElement.querySelectorAll('a.menu-link');\n    const subMenuLinks =\n      this.el.nativeElement.querySelectorAll('a.submenu-link');\n\n    // Apply hover effects for main menu links\n    menuLinks.forEach((link: HTMLElement) => {\n      this.renderer.listen(link, 'mouseenter', () => {\n        this.renderer.setStyle(\n          link,\n          'background-color',\n          this.menuConfig.hoverColor || '#f1f1f1'\n        );\n        this.renderer.setStyle(\n          link,\n          'color',\n          this.menuConfig.hoverFontColor || 'white'\n        );\n      });\n\n      this.renderer.listen(link, 'mouseleave', () => {\n        this.renderer.removeStyle(link, 'background-color');\n        this.renderer.setStyle(\n          link,\n          'color',\n          this.menuConfig.fontColor || '#333'\n        );\n      });\n    });\n\n    // Apply hover effects for submenu links\n    subMenuLinks.forEach((link: HTMLElement) => {\n      this.renderer.listen(link, 'mouseenter', () => {\n        this.renderer.setStyle(\n          link,\n          'background-color',\n          this.menuConfig.hoverColorSubMenu ||\n            this.menuConfig.hoverColor ||\n            '#f1f1f1'\n        );\n        this.renderer.setStyle(\n          link,\n          'color',\n          this.menuConfig.hoverFontColorSubMenu ||\n            this.menuConfig.hoverFontColor ||\n            '#fff'\n        );\n      });\n\n      this.renderer.listen(link, 'mouseleave', () => {\n        this.renderer.removeStyle(link, 'background-color');\n        this.renderer.setStyle(\n          link,\n          'color',\n          this.menuConfig.fontColorSubMenu ||\n            this.menuConfig.fontColor ||\n            '#666'\n        );\n      });\n    });\n  }\n}\n","<div class=\"pt-side-bar-menu\">\n  <pt-card\n    *ngIf=\"menuConfig.searchable\"\n    [config]=\"searchCardConfig\"\n    [ngClass]=\"{ 'sidebar-hidden': !menuConfig.isVisible }\"\n  >\n    <div class=\"search-input\">\n      <pt-text-input [formGroup]=\"formGroup\" [formField]=\"searchField\">\n      </pt-text-input>\n    </div>\n  </pt-card>\n\n  <pt-card\n    [config]=\"cardConfig\"\n    [ngClass]=\"{ 'sidebar-hidden': !menuConfig.isVisible }\"\n  >\n    <ul class=\"menu-list\">\n      <li\n        *ngFor=\"let item of filteredMenus\"\n        class=\"menu-item\"\n        [ngClass]=\"{ 'menu-item-expanded': item.isExpanded }\"\n        [ngStyle]=\"getMenuItemStyles()\"\n      >\n        <!-- Main menu items without children -->\n        <a\n          *ngIf=\"!item.children?.length\"\n          [routerLink]=\"item.url\"\n          class=\"menu-link\"\n          [ngStyle]=\"getMenuLinkStyles()\"\n        >\n          <i [ngClass]=\"item.icon\"></i>\n          <span>{{ item.label }}</span>\n          <span\n            *ngIf=\"item.badge\"\n            [ngStyle]=\"getBadgeStyles(item.badge)\"\n            class=\"badge\"\n          >\n            {{ item.badge.count }}\n          </span>\n        </a>\n\n        <!-- Menu items with children -->\n        <a\n          *ngIf=\"item.children?.length\"\n          class=\"menu-link\"\n          (click)=\"toggleMenu(item, $event)\"\n          [ngStyle]=\"getMenuLinkStyles()\"\n        >\n          <i [ngClass]=\"item.icon\"></i>\n          <span>{{ item.label }}</span>\n          <span\n            *ngIf=\"item.badge\"\n            [ngStyle]=\"getBadgeStyles(item.badge)\"\n            class=\"badge\"\n          >\n            {{ item.badge.count }}\n          </span>\n          <i [ngClass]=\"getChevronClass(item)\" class=\"chevron\"></i>\n        </a>\n\n        <!-- Submenu -->\n        <ul class=\"submenu-list\">\n          <li *ngFor=\"let child of item.children\" class=\"submenu-item\">\n            <a\n              [routerLink]=\"child.url\"\n              class=\"submenu-link\"\n              [ngStyle]=\"getSubMenuLinkStyles()\"\n            >\n              <i [ngClass]=\"child.icon\"></i>\n              <span class=\"submenu-title\">{{ child.label }}</span>\n              <span\n                *ngIf=\"child.badge\"\n                [ngStyle]=\"getBadgeStyles(child.badge)\"\n                class=\"badge\"\n              >\n                {{ child.badge.count }}\n              </span>\n            </a>\n          </li>\n        </ul>\n      </li>\n    </ul>\n  </pt-card>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTSideBarMenuComponent } from './pt-side-bar-menu.component';\nimport { RouterModule } from '@angular/router';\nimport { PTCardModule } from '../pt-card';\nimport { PTTextInputModule } from '../pt-text-input';\n\n@NgModule({\n  declarations: [PTSideBarMenuComponent],\n  imports: [CommonModule, RouterModule, PTCardModule, PTTextInputModule],\n  exports: [PTSideBarMenuComponent],\n})\nexport class PTSideBarMenuModule {}\n","import { Component, Input } from '@angular/core';\nimport { FooterConfig, CardConfig } from '../models';\n\n@Component({\n  selector: 'pt-footer',\n  templateUrl: './pt-footer.component.html',\n  styleUrls: ['./pt-footer.component.css'],\n})\nexport class PTFooterComponent {\n  @Input() footerConfig: FooterConfig = {\n    appName: 'Default App',\n    version: '1.0.0',\n    productionYear: new Date().getFullYear(),\n  };\n\n  getCurrentYear(): number {\n    return new Date().getFullYear();\n  }\n\n  getCardConfig(): CardConfig {\n    return (\n      this.footerConfig.cardConfig ?? {\n        backgroundColor: '#f8f8f8',\n        width: '100%',\n        height: 'auto',\n        scrollableVertical: false,\n        padding: '0',\n        margin: '0',\n      }\n    );\n  }\n\n  displayYears(): string {\n    const currentYear = this.getCurrentYear();\n    const productionYear = this.footerConfig.productionYear;\n\n    return productionYear === currentYear\n      ? `${currentYear}`\n      : `${productionYear} - ${currentYear}`;\n  }\n}\n","<pt-card [config]=\"getCardConfig()\" class=\"footer-card\">\n  <footer class=\"footer\">\n    <p>\n      {{ footerConfig.appName }} V {{ footerConfig.version }}\n      <br />\n      &copy; {{ displayYears() }} All rights reserved.\n    </p>\n  </footer>\n</pt-card>\n","import { Injectable } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter } from 'rxjs/operators';\nimport { MenuItem } from 'primeng/api';\nimport { BehaviorSubject } from 'rxjs';\nimport { Menu } from '../models';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class PTBreadCrumbService {\n  private _breadcrumb = new BehaviorSubject<MenuItem[]>([]);\n  breadcrumb$ = this._breadcrumb.asObservable();\n  private menuData: any[] = [];\n\n  constructor(private router: Router) {\n    this.router.events\n      .pipe(\n        filter(\n          (event): event is NavigationEnd => event instanceof NavigationEnd\n        )\n      )\n      .subscribe((event: NavigationEnd) => {\n        let urlParts = event.urlAfterRedirects.split('/');\n        urlParts.splice(0, 1);\n        let urlWithoutContext = urlParts.join('/');\n        let newBreadcrumb = this.createBreadcrumb(urlWithoutContext);\n        this._breadcrumb.next(newBreadcrumb);\n      });\n  }\n\n  // Method to set menuData\n  setMenuData(menuData: any[]) {\n    this.menuData = menuData;\n  }\n\n  createBreadcrumb(url: string = '', breadcrumbs: MenuItem[] = []): MenuItem[] {\n    if (!url) {\n      return breadcrumbs;\n    }\n\n    const pathSegments = url.split('/').filter((segment) => segment);\n\n    return this.buildParentBreadcrumbs(\n      this.menuData,\n      pathSegments,\n      breadcrumbs\n    );\n  }\n\n  private buildParentBreadcrumbs(\n    menuData: any[],\n    pathSegments: string[],\n    breadcrumbs: MenuItem[]\n  ): MenuItem[] {\n    if (pathSegments.length === 0) {\n      return breadcrumbs;\n    }\n\n    const currentSegment = pathSegments.shift();\n\n    const currentMenu = menuData.find(\n      (menu) => menu.url === currentSegment || menu.url.endsWith(currentSegment)\n    );\n\n    if (currentMenu) {\n      breadcrumbs.push({ label: currentMenu.label, url: currentMenu.url });\n\n      if (\n        currentMenu.children &&\n        currentMenu.children.length > 0 &&\n        pathSegments.length > 0\n      ) {\n        return this.buildChildBreadcrumbs(\n          currentMenu.children,\n          pathSegments,\n          breadcrumbs,\n          currentSegment || ''\n        );\n      }\n    }\n\n    return breadcrumbs;\n  }\n\n  private buildChildBreadcrumbs(\n    menuData: Menu[],\n    pathSegments: string[],\n    breadcrumbs: MenuItem[],\n    currentUrl: string\n  ): MenuItem[] {\n    if (pathSegments.length === 0) {\n      return breadcrumbs;\n    }\n\n    const currentSegment = pathSegments.shift();\n    currentUrl = `/${currentUrl}/${currentSegment}`;\n\n    const currentMenu = menuData.find((menu) => menu.url === currentUrl);\n\n    if (currentMenu) {\n      breadcrumbs.push({ label: currentMenu.label, url: currentMenu.url });\n\n      if (\n        currentMenu.children &&\n        currentMenu.children.length > 0 &&\n        pathSegments.length > 0\n      ) {\n        return this.buildChildBreadcrumbs(\n          currentMenu.children,\n          pathSegments,\n          breadcrumbs,\n          currentUrl\n        );\n      }\n    } else {\n      const parentMenu = menuData.find(\n        (menu) =>\n          menu.children &&\n          menu.children.some((child) => child.url === currentUrl)\n      );\n      if (parentMenu && parentMenu.children) {\n        const childMenu = parentMenu.children.find(\n          (child: Menu) => child.url === currentUrl\n        );\n        if (childMenu) {\n          breadcrumbs.push({ label: parentMenu.label, url: parentMenu.url });\n          breadcrumbs.push({ label: childMenu.label, url: childMenu.url });\n\n          if (\n            childMenu.children &&\n            childMenu.children.length > 0 &&\n            pathSegments.length > 0\n          ) {\n            return this.buildChildBreadcrumbs(\n              childMenu.children,\n              pathSegments,\n              breadcrumbs,\n              currentUrl\n            );\n          }\n        }\n      }\n    }\n\n    return breadcrumbs;\n  }\n}\n","import {\n  Component,\n  Input,\n  OnInit,\n  OnDestroy,\n  Renderer2,\n  ElementRef,\n  AfterViewInit,\n} from '@angular/core';\nimport { MenuItem } from 'primeng/api';\nimport { Subscription } from 'rxjs';\nimport { PTBreadCrumbService } from './pt-bread-crumb.service';\nimport { BreadCrumbConfig } from '../models/bread-crumb-config.model';\n\n@Component({\n  selector: 'pt-bread-crumb',\n  templateUrl: './pt-bread-crumb.component.html',\n  styleUrls: ['./pt-bread-crumb.component.css'],\n})\nexport class PTBreadCrumbComponent implements OnInit, OnDestroy, AfterViewInit {\n  @Input() breadCrumbConfig!: BreadCrumbConfig;\n  items: MenuItem[] | undefined;\n  home: MenuItem | undefined;\n  breadCrumbSubscription!: Subscription;\n\n  constructor(\n    private breadcrumbService: PTBreadCrumbService,\n    private renderer: Renderer2,\n    private el: ElementRef\n  ) {}\n\n  ngOnInit(): void {\n    this.home = { icon: 'pi pi-home', routerLink: 'dashboard' };\n\n    // Pass the input menuData to the service\n    this.breadcrumbService.setMenuData(this.breadCrumbConfig.menuData);\n\n    this.breadCrumbSubscription = this.breadcrumbService.breadcrumb$.subscribe(\n      (breadcrumb) => {\n        this.items = breadcrumb;\n      }\n    );\n  }\n\n  ngAfterViewInit(): void {\n    this.applyBackgroundStyles();\n  }\n\n  ngOnDestroy(): void {\n    if (this.breadCrumbSubscription) {\n      this.breadCrumbSubscription.unsubscribe();\n    }\n  }\n\n  applyBackgroundStyles() {\n    const transparency =\n      this.breadCrumbConfig.pattern?.transparencyPercentage || '100';\n    const backgroundImage = this.breadCrumbConfig.pattern?.imageUrl\n      ? `linear-gradient(rgba(255, 255, 255, ${\n          1 - parseFloat(transparency) / 100\n        }), rgba(255, 255, 255, ${1 - parseFloat(transparency) / 100})), url('${\n          this.breadCrumbConfig.pattern.imageUrl\n        }')`\n      : '';\n\n    // Delay to ensure that the element is fully rendered before applying styles\n    setTimeout(() => {\n      const breadcrumbNav = this.el.nativeElement.querySelector(\n        'nav.p-breadcrumb.p-component'\n      );\n\n      if (breadcrumbNav) {\n        this.renderer.setStyle(\n          breadcrumbNav,\n          'background-image',\n          backgroundImage\n        );\n      }\n    });\n  }\n}\n","<div\n  *ngIf=\"items && items.length > 0\"\n  class=\"pt-bread-crumb breadcrumb-container\"\n>\n  <p-breadcrumb class=\"max-w-full\" [model]=\"items\" [home]=\"home\"></p-breadcrumb>\n</div>\n","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { PageSkeletonConfig, CardConfig } from '../models';\n\n@Component({\n  selector: 'pt-page-skeleton',\n  templateUrl: './pt-page-skeleton.component.html',\n  styleUrls: ['./pt-page-skeleton.component.css'],\n})\nexport class PTPageSkeletonComponent implements OnInit {\n  @Input() pageSkeletonConfig!: PageSkeletonConfig;\n  @Output() toggleSidebar: EventEmitter<void> = new EventEmitter<void>();\n\n  isSidebarVisible: boolean = true;\n\n  ngOnInit() {\n    this.initializeBackgroundCardConfig();\n    this.initializeContentCardConfig();\n  }\n\n  onToggleSidebar(): void {\n    this.isSidebarVisible = !this.isSidebarVisible;\n    this.toggleSidebar.emit();\n  }\n\n  // Initialize backgroundCardConfig with default values\n  initializeBackgroundCardConfig() {\n    this.pageSkeletonConfig.backgroundCardConfig = {\n      identifier: 'pt-page-skeleton/background',\n      noBorder: this.pageSkeletonConfig.backgroundCardConfig?.noBorder ?? true,\n      backgroundColor:\n        this.pageSkeletonConfig.backgroundCardConfig?.backgroundColor || '#fff',\n      padding: this.pageSkeletonConfig.backgroundCardConfig?.padding || '20px',\n      margin: this.pageSkeletonConfig.backgroundCardConfig?.margin || '10px',\n      ...this.pageSkeletonConfig.backgroundCardConfig,\n    };\n  }\n\n  // Initialize contentCardConfig with default values (if necessary)\n  initializeContentCardConfig() {\n    this.pageSkeletonConfig.contentCardConfig = {\n      identifier: 'pt-page-skeleton/content',\n      noBorder: this.pageSkeletonConfig.contentCardConfig?.noBorder ?? false,\n      backgroundColor:\n        this.pageSkeletonConfig.contentCardConfig?.backgroundColor || '#f0f0f0',\n      padding: this.pageSkeletonConfig.contentCardConfig?.padding || '15px',\n      scrollableVertical: true,\n      scrollableHorizontal: true,\n      ...this.pageSkeletonConfig.contentCardConfig,\n    };\n  }\n}\n","<pt-card [config]=\"pageSkeletonConfig.backgroundCardConfig!\">\n  <!-- Navbar -->\n  <pt-nav-bar-menu\n    [navBarMenuConfig]=\"pageSkeletonConfig.navBarMenuConfig\"\n    (toggleSidebar)=\"onToggleSidebar()\"\n  ></pt-nav-bar-menu>\n\n  <div class=\"main-content\">\n    <!-- Sidebar (use *ngIf to toggle visibility) -->\n    <pt-side-bar-menu\n      *ngIf=\"isSidebarVisible\"\n      [menuConfig]=\"pageSkeletonConfig.sideMenuBarConfig\"\n      class=\"sidebar\"\n    ></pt-side-bar-menu>\n\n    <!-- Main View Area -->\n    <div class=\"content-area\" [ngClass]=\"{ 'full-width': !isSidebarVisible }\">\n      <!-- Content Card Wrapper -->\n      <pt-card [config]=\"pageSkeletonConfig.contentCardConfig\">\n        <!-- Breadcrumb -->\n        <pt-bread-crumb\n          *ngIf=\"pageSkeletonConfig.breadCrumbConfig\"\n          [breadCrumbConfig]=\"pageSkeletonConfig.breadCrumbConfig\"\n          class=\"bread-crumb\"\n        ></pt-bread-crumb>\n\n        <!-- Background Card -->\n\n        <router-outlet></router-outlet>\n      </pt-card>\n    </div>\n  </div>\n\n  <!-- Footer -->\n  <pt-footer\n    *ngIf=\"pageSkeletonConfig.footerConfig\"\n    [footerConfig]=\"pageSkeletonConfig.footerConfig\"\n    class=\"pt-footer\"\n  ></pt-footer>\n</pt-card>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTFooterComponent } from './pt-footer.component';\nimport { PTCardModule } from '../pt-card';\n\n@NgModule({\n  declarations: [PTFooterComponent],\n  imports: [CommonModule, PTCardModule],\n  exports: [PTFooterComponent],\n})\nexport class PTFooterModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTBreadCrumbComponent } from './pt-bread-crumb.component';\nimport { BreadcrumbModule } from 'primeng/breadcrumb';\n\n@NgModule({\n  declarations: [PTBreadCrumbComponent],\n  imports: [CommonModule, BreadcrumbModule],\n  exports: [PTBreadCrumbComponent],\n})\nexport class PTBreadCrumbModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTPageSkeletonComponent } from './pt-page-skeleton.component';\nimport { PTNavbarMenuModule } from '../pt-nav-bar-menu';\nimport { PTCardModule } from '../pt-card';\nimport { PTSideBarMenuModule } from '../pt-side-bar-menu';\nimport { RouterModule } from '@angular/router';\nimport { PTFooterModule } from '../pt-footer';\nimport { PTBreadCrumbModule } from '../pt-bread-crumb';\n\n@NgModule({\n  declarations: [PTPageSkeletonComponent],\n  imports: [\n    CommonModule,\n    PTNavbarMenuModule,\n    PTCardModule,\n    PTSideBarMenuModule,\n    RouterModule,\n    PTFooterModule,\n    PTBreadCrumbModule,\n  ],\n  exports: [PTPageSkeletonComponent],\n})\nexport class PTPageSkeletonModule {}\n","import {\n  Component,\n  Input,\n  OnInit,\n  AfterViewInit,\n  Renderer2,\n  ElementRef,\n  SimpleChanges,\n  OnChanges,\n} from '@angular/core';\nimport { ButtonModel } from '../models';\n\n@Component({\n  selector: 'pt-button',\n  templateUrl: './pt-button.component.html',\n  styleUrls: ['./pt-button.component.css'],\n})\nexport class PTButtonComponent implements OnInit, AfterViewInit, OnChanges {\n  @Input() buttonConfig!: ButtonModel;\n\n  constructor(private renderer: Renderer2, private el: ElementRef) {}\n\n  ngOnInit(): void {\n    // Fallback to default config if undefined\n    if (!this.buttonConfig) {\n      this.buttonConfig = {\n        label: 'Click Me',\n        icon: '',\n        iconPos: 'left',\n        disabled: false,\n        styleClass: '',\n        loading: false,\n        type: 'button',\n        width: '100%',\n        height: 'auto',\n        fontColor: '#000',\n        backgroundColor: '#fff',\n        borderColor: '#000',\n      };\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const configChange = changes['buttonConfig'];\n\n    if (configChange) {\n      const prev = configChange.previousValue;\n      const curr = configChange.currentValue;\n\n      if (prev && curr) {\n        const onlyDisabledChanged =\n          prev.disabled !== curr.disabled &&\n          JSON.stringify({ ...prev, disabled: undefined }) ===\n            JSON.stringify({ ...curr, disabled: undefined });\n\n        if (onlyDisabledChanged) {\n          this.updateDisabledStyles(curr.disabled);\n        } else {\n          this.applyButtonStyles();\n        }\n      } else {\n        // If no previous value (first load), apply full styles\n        this.applyButtonStyles();\n      }\n    }\n  }\n  updateDisabledStyles(isDisabled: boolean): void {\n    const buttonElement =\n      this.el.nativeElement.querySelector('button.p-element');\n\n    if (buttonElement) {\n      this.renderer.setStyle(\n        buttonElement,\n        'color',\n        isDisabled ? '#999' : this.buttonConfig.fontColor\n      );\n      this.renderer.setStyle(\n        buttonElement,\n        'background-color',\n        isDisabled ? '#e0e0e0' : this.buttonConfig.backgroundColor\n      );\n      this.renderer.setStyle(\n        buttonElement,\n        'border-color',\n        isDisabled ? '#bdbdbd' : this.buttonConfig.borderColor\n      );\n    }\n  }\n\n  ngAfterViewInit(): void {\n    this.applyButtonStyles();\n  }\n\n  getIconPos(): 'left' | 'right' {\n    return this.buttonConfig.iconPos === 'right' ? 'right' : 'left';\n  }\n\n  getType(): string {\n    return this.buttonConfig.type || 'button';\n  }\n\n  applyButtonStyles(): void {\n    const buttonElement =\n      this.el.nativeElement.querySelector('button.p-element');\n\n    if (buttonElement && this.buttonConfig) {\n      const isDisabled = this.buttonConfig.disabled;\n\n      this.renderer.setStyle(\n        buttonElement,\n        'color',\n        isDisabled ? '#999' : this.buttonConfig.fontColor\n      );\n\n      this.renderer.setStyle(\n        buttonElement,\n        'background-color',\n        isDisabled ? '#e0e0e0' : this.buttonConfig.backgroundColor\n      );\n\n      this.renderer.setStyle(\n        buttonElement,\n        'border-color',\n        isDisabled ? '#bdbdbd' : this.buttonConfig.borderColor\n      );\n\n      this.renderer.setStyle(\n        buttonElement,\n        'width',\n        this.buttonConfig.width || 'auto'\n      );\n\n      this.renderer.setStyle(\n        buttonElement,\n        'height',\n        this.buttonConfig.height || 'auto'\n      );\n    }\n  }\n}\n","<p-button\n  [label]=\"buttonConfig.label\"\n  [icon]=\"buttonConfig.icon || ''\"\n  [iconPos]=\"getIconPos()\"\n  [disabled]=\"buttonConfig.disabled\"\n  [loading]=\"buttonConfig.loading\"\n  [class]=\"buttonConfig.styleClass || ''\"\n  [type]=\"getType()\"\n></p-button>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTButtonComponent } from './pt-button.component';\nimport { ButtonModule } from 'primeng/button';\n\n@NgModule({\n  declarations: [PTButtonComponent],\n  imports: [CommonModule, ButtonModule],\n  exports: [PTButtonComponent],\n})\nexport class PTButtonModule {}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport {\n  FormBuilder,\n  FormGroup,\n  Validators,\n  FormsModule,\n  ReactiveFormsModule,\n} from '@angular/forms';\nimport { LoginModel, LoginPageConfig } from '../../models';\nimport { FormInputTypeEnum } from '../../enums';\nimport { CommonModule } from '@angular/common';\nimport { PTCardModule } from '../../pt-card';\nimport { PTButtonModule } from '../../pt-button';\nimport { PTTextInputModule } from '../../pt-text-input';\n\n@Component({\n  selector: 'pt-login-card',\n  standalone: true,\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    PTCardModule,\n    PTButtonModule,\n    PTTextInputModule,\n  ],\n  templateUrl: './pt-login-card.component.html',\n  styleUrls: ['./pt-login-card.component.css'],\n})\nexport class PTLoginCardComponent implements OnInit {\n  @Input() loginPageConfig!: LoginPageConfig;\n  @Input() loginErrorMessage: string | null = null;\n  @Output() loginSubmit: EventEmitter<LoginModel> =\n    new EventEmitter<LoginModel>();\n\n  formGroup: FormGroup;\n\n  constructor(private fb: FormBuilder) {\n    this.formGroup = this.fb.group({});\n  }\n\n  ngOnInit(): void {\n    this.initializeDefaults();\n    this.setupFormFields();\n\n    this.formGroup.patchValue({\n      username: this.loginPageConfig?.login?.username || '',\n      password: this.loginPageConfig?.login?.password || '',\n    });\n    // Enable/Disable the button based on form validity\n    this.formGroup.statusChanges.subscribe((status) => {\n      this.loginPageConfig.buttonConfig = {\n        ...this.loginPageConfig.buttonConfig!,\n        disabled: status !== 'VALID',\n      };\n    });\n  }\n\n  // Initialize default values for all fields in loginPageConfig if not set\n  initializeDefaults() {\n    // Initialize backgroundImage\n    this.loginPageConfig.backgroundImage = {\n      imageUrl: this.loginPageConfig.backgroundImage?.imageUrl || '',\n      transparencyPercentage:\n        this.loginPageConfig.backgroundImage?.transparencyPercentage || '100',\n      ...this.loginPageConfig.backgroundImage,\n    };\n\n    // Initialize title\n    this.loginPageConfig.title = {\n      text: this.loginPageConfig.title?.text || 'Login',\n      position: this.loginPageConfig.title?.position || 'center',\n      color: this.loginPageConfig.title?.color || '#333',\n      fontSize: this.loginPageConfig.title?.fontSize || '24px',\n      ...this.loginPageConfig.title,\n    };\n\n    // Initialize logoUrl\n    this.loginPageConfig.logoUrl = {\n      altText: this.loginPageConfig.logoUrl?.altText || 'Logo',\n      imageUrl: this.loginPageConfig.logoUrl?.imageUrl || '',\n      width: this.loginPageConfig.logoUrl?.width || '100px',\n      height: this.loginPageConfig.logoUrl?.height || 'auto',\n      ...this.loginPageConfig.logoUrl,\n    };\n\n    // Initialize footer\n    this.loginPageConfig.footer = {\n      version: this.loginPageConfig.footer?.version || 'V1.0',\n      copyright:\n        this.loginPageConfig.footer?.copyright || 'Your Company © 2024',\n      ...this.loginPageConfig.footer,\n    };\n\n    // Initialize login\n    this.loginPageConfig.login = {\n      username: this.loginPageConfig.login?.username || '',\n      password: this.loginPageConfig.login?.password || '',\n      errorMessage: this.loginPageConfig.login?.errorMessage || '',\n      emptyFieldsErrorMessage:\n        this.loginPageConfig.login?.emptyFieldsErrorMessage ||\n        \"Veuillez saisir votre nom d'utilisateur et votre mot de passe !\",\n      ...this.loginPageConfig.login,\n    };\n\n    // Initialize cardConfig\n    this.loginPageConfig.loginCardConfig = {\n      noBorder: this.loginPageConfig.loginCardConfig?.noBorder ?? true,\n      width: this.loginPageConfig.loginCardConfig?.width ?? '400px',\n      padding: this.loginPageConfig.loginCardConfig?.padding ?? '40px',\n      ...this.loginPageConfig.loginCardConfig,\n    };\n\n    // Initialize usernameField\n    this.loginPageConfig.usernameField = {\n      name: this.loginPageConfig.usernameField?.name || 'username',\n      label: this.loginPageConfig.usernameField?.label || \"Nom d'utilisateur\",\n      required: this.loginPageConfig.usernameField?.required ?? true,\n      placeholder:\n        this.loginPageConfig.usernameField?.placeholder ||\n        \"Entrer votre nom d'utilisateur\",\n      ...this.loginPageConfig.usernameField,\n    };\n\n    // Initialize passwordField\n    this.loginPageConfig.passwordField = {\n      name: this.loginPageConfig.passwordField?.name || 'password',\n      label: this.loginPageConfig.passwordField?.label || 'Mot de passe',\n      required: this.loginPageConfig.passwordField?.required ?? true,\n      placeholder:\n        this.loginPageConfig.passwordField?.placeholder ||\n        'Entrer votre mot de passe',\n      type:\n        this.loginPageConfig.passwordField?.type || FormInputTypeEnum.PASSWORD,\n      ...this.loginPageConfig.passwordField,\n    };\n\n    // Initialize buttonConfig\n    this.loginPageConfig.buttonConfig = {\n      label: this.loginPageConfig.buttonConfig?.label || 'Login',\n      type: this.loginPageConfig.buttonConfig?.type || 'submit',\n      icon: this.loginPageConfig.buttonConfig?.icon || 'pi pi-sign-in',\n      iconPos: this.loginPageConfig.buttonConfig?.iconPos || 'left',\n      styleClass:\n        this.loginPageConfig.buttonConfig?.styleClass || 'p-button-success',\n      disabled: this.loginPageConfig.buttonConfig?.disabled ?? true,\n      width: this.loginPageConfig.buttonConfig?.width ?? '100%',\n      ...this.loginPageConfig.buttonConfig,\n    };\n  }\n\n  onSubmit(): void {\n    if (this.formGroup.valid) {\n      this.loginSubmit.emit(this.formGroup.value);\n    } else {\n      this.loginPageConfig.login!.errorMessage =\n        this.loginPageConfig.login?.emptyFieldsErrorMessage;\n    }\n  }\n\n  // Setup form fields using the usernameField and passwordField from LoginPageConfig\n  setupFormFields() {\n    const usernameValidators = this.loginPageConfig.usernameField?.required\n      ? [Validators.required]\n      : [];\n    const passwordValidators = this.loginPageConfig.passwordField?.required\n      ? [Validators.required]\n      : [];\n\n    this.formGroup.addControl(\n      this.loginPageConfig.usernameField!.name,\n      this.fb.control(this.loginPageConfig.login?.username, usernameValidators)\n    );\n    this.formGroup.addControl(\n      this.loginPageConfig.passwordField!.name,\n      this.fb.control(this.loginPageConfig.login?.password, passwordValidators)\n    );\n  }\n}\n","<pt-card [config]=\"loginPageConfig.loginCardConfig!\">\n  <!-- Logo -->\n  <div class=\"logo-container\" *ngIf=\"loginPageConfig.logoUrl?.imageUrl\">\n    <img\n      [src]=\"loginPageConfig.logoUrl?.imageUrl\"\n      [alt]=\"loginPageConfig.logoUrl?.altText || 'Logo'\"\n      [style.width]=\"loginPageConfig.logoUrl?.width || '100px'\"\n      [style.height]=\"loginPageConfig.logoUrl?.height || 'auto'\"\n    />\n  </div>\n\n  <!-- Title -->\n  <div class=\"title-container\">\n    <h1\n      [ngStyle]=\"{\n        color: loginPageConfig.title?.color || '#333',\n        'font-size': loginPageConfig.title?.fontSize || '24px'\n      }\"\n    >\n      {{ loginPageConfig.title?.text || \"Default Title\" }}\n    </h1>\n  </div>\n  <!-- Error Message -->\n  <div *ngIf=\"loginErrorMessage\" class=\"error-message\">\n    {{ loginErrorMessage }}\n  </div>\n  <!-- Form -->\n  <form class=\"form-container\" [formGroup]=\"formGroup\" (ngSubmit)=\"onSubmit()\">\n    <div *ngIf=\"loginPageConfig.login?.errorMessage\" class=\"error-message\">\n      {{ loginPageConfig.login?.errorMessage }}\n    </div>\n\n    <div class=\"field\">\n      <pt-text-input\n        [formGroup]=\"formGroup\"\n        [formField]=\"loginPageConfig.usernameField!\"\n      ></pt-text-input>\n    </div>\n    <div class=\"field\">\n      <pt-text-input\n        [formGroup]=\"formGroup\"\n        [formField]=\"loginPageConfig.passwordField!\"\n      ></pt-text-input>\n    </div>\n\n    <div class=\"submit-btn\">\n      <pt-button [buttonConfig]=\"loginPageConfig.buttonConfig!\"></pt-button>\n    </div>\n  </form>\n  <div class=\"login-footer\">\n    {{ loginPageConfig.footer?.version }}\n    <span>{{ loginPageConfig.footer?.copyright }}</span>\n  </div>\n</pt-card>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { LoginModel, LoginPageConfig, CardConfig } from '../models';\n\n@Component({\n  selector: 'pt-login-page',\n  templateUrl: './pt-login-page.component.html',\n  styleUrls: ['./pt-login-page.component.css'],\n})\nexport class PTLoginPageComponent implements OnInit {\n  @Input() loginPageConfig!: LoginPageConfig;\n  @Input() loginErrorMessage: string | null = null;\n  @Output() loginSubmit: EventEmitter<LoginModel> =\n    new EventEmitter<LoginModel>();\n\n  private defaultCardConfig: CardConfig = {\n    borderRadius: '0',\n    margin: '0',\n    width: '100%',\n    height: '100%',\n    noBorder: true,\n    alignContent: 'center',\n    alignBodyContent: 'center',\n  };\n\n  ngOnInit(): void {\n    this.applyDefaultConfigs();\n  }\n\n  private applyDefaultConfigs(): void {\n    // Apply defaults to centerCardConfig\n    this.loginPageConfig.centerCardConfig = this.applyDefaults(\n      this.loginPageConfig.centerCardConfig\n    );\n\n    // Apply defaults to leftCardConfig\n    this.loginPageConfig.leftCardConfig = this.applyDefaults(\n      this.loginPageConfig.leftCardConfig\n    );\n\n    // Apply defaults to rightCardConfig\n    this.loginPageConfig.rightCardConfig = this.applyDefaults(\n      this.loginPageConfig.rightCardConfig\n    );\n  }\n\n  private applyDefaults(config?: CardConfig): CardConfig {\n    return {\n      ...this.defaultCardConfig,\n      ...(config || {}),\n    };\n  }\n\n  onLoginSubmit(loginModel: LoginModel): void {\n    console.log('Login Submitted:', loginModel);\n    this.loginSubmit.emit(loginModel);\n  }\n}\n","<!-- Center Position -->\n<ng-container>\n  <div *ngIf=\"loginPageConfig.position === 'center'\" class=\"center-container\">\n    <pt-card\n      *ngIf=\"loginPageConfig.centerCardConfig\"\n      [config]=\"loginPageConfig.centerCardConfig\"\n    >\n      <pt-login-card\n        [loginErrorMessage]=\"loginErrorMessage\"\n        [loginPageConfig]=\"loginPageConfig\"\n        (loginSubmit)=\"onLoginSubmit($event)\"\n      ></pt-login-card>\n    </pt-card>\n  </div>\n  <!-- Left and Right Positions -->\n  <div\n    *ngIf=\"\n      loginPageConfig.position === 'left' ||\n      loginPageConfig.position === 'right'\n    \"\n    class=\"left-right-container\"\n  >\n    <!-- Left Card -->\n    <pt-card\n      *ngIf=\"loginPageConfig.leftCardConfig\"\n      [config]=\"loginPageConfig.leftCardConfig\"\n    >\n      <pt-login-card\n        *ngIf=\"loginPageConfig.position === 'left'\"\n        [loginErrorMessage]=\"loginErrorMessage\"\n        [loginPageConfig]=\"loginPageConfig\"\n        (loginSubmit)=\"onLoginSubmit($event)\"\n      ></pt-login-card>\n    </pt-card>\n\n    <!-- Right Card -->\n    <pt-card\n      *ngIf=\"loginPageConfig.rightCardConfig\"\n      [config]=\"loginPageConfig.rightCardConfig\"\n    >\n      <pt-login-card\n        *ngIf=\"loginPageConfig.position === 'right'\"\n        [loginErrorMessage]=\"loginErrorMessage\"\n        [loginPageConfig]=\"loginPageConfig\"\n        (loginSubmit)=\"onLoginSubmit($event)\"\n      ></pt-login-card>\n    </pt-card>\n  </div>\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTLoginPageComponent } from './pt-login-page.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { PTTextInputModule } from '../pt-text-input/pt-text-input.module';\nimport { PTCardModule } from '../pt-card/pt-card.module';\nimport { PTButtonModule } from '../pt-button';\nimport { PTLoginCardComponent } from './pt-login-card/pt-login-card.component';\n\n@NgModule({\n  declarations: [PTLoginPageComponent],\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    PTTextInputModule,\n    PTCardModule,\n    PTButtonModule,\n    PTLoginCardComponent,\n  ],\n  exports: [PTLoginPageComponent],\n})\nexport class PTLoginPageModule {}\n","import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  Renderer2,\n  ElementRef,\n  SimpleChanges,\n  OnChanges,\n} from '@angular/core';\nimport {\n  ConfirmationService,\n  ConfirmEventType,\n  MessageService,\n} from 'primeng/api';\nimport { DialogConfig } from '../models/dialog-config.model';\nimport { ButtonModel } from '../models/button.model';\nimport { IconStyle } from '../models';\nimport { SeverityEnum } from '../enums';\n\n// Default Styles for Different Dialog Types\nconst DIALOG_STYLES: Record<SeverityEnum, Partial<DialogConfig>> = {\n  [SeverityEnum.WARNING]: {\n    header: { text: 'Warning', color: '#d98300' },\n    content: { text: 'This is a warning message!', color: '#d98300' },\n    confirmButtonConfig: { backgroundColor: '#d98300', fontColor: '#fff' },\n    cancelButtonConfig: { backgroundColor: '#6c757d', fontColor: '#fff' },\n  },\n  [SeverityEnum.SUCCESS]: {\n    header: { text: 'Success', color: '#28a745' },\n    content: { text: 'Operation was successful!', color: '#28a745' },\n    confirmButtonConfig: { backgroundColor: '#28a745', fontColor: '#fff' },\n    cancelButtonConfig: { backgroundColor: '#6c757d', fontColor: '#fff' },\n  },\n  [SeverityEnum.DANGER]: {\n    header: { text: 'Error', color: '#dc3545' },\n    content: { text: 'An error occurred!', color: '#dc3545' },\n    confirmButtonConfig: { backgroundColor: '#dc3545', fontColor: '#fff' },\n    cancelButtonConfig: { backgroundColor: '#6c757d', fontColor: '#fff' },\n  },\n  [SeverityEnum.INFO]: {\n    header: { text: 'Information', color: '#007bff' },\n    content: { text: 'Here is some important information.', color: '#007bff' },\n    confirmButtonConfig: { backgroundColor: '#007bff', fontColor: '#fff' },\n    cancelButtonConfig: { backgroundColor: '#6c757d', fontColor: '#fff' },\n  },\n};\n\n// Centralized Default Values\nconst DEFAULT_DIALOG_CONFIG: DialogConfig = {\n  header: { text: 'Confirmation' },\n  visible: false,\n  width: '400px',\n  height: 'auto',\n  content: 'Do you want to proceed?',\n  confirmButtonConfig: {\n    label: 'Confirm',\n    fontColor: '#fff',\n    backgroundColor: '#007bff',\n  },\n  cancelButtonConfig: {\n    label: 'Cancel',\n    fontColor: '#fff',\n    backgroundColor: '#6c757d',\n  },\n  dialogStyle: SeverityEnum.INFO,\n};\n\n@Component({\n  selector: 'pt-dialog',\n  templateUrl: './pt-dialog.component.html',\n  styleUrls: ['./pt-dialog.component.css'],\n  providers: [ConfirmationService, MessageService],\n})\nexport class PTDialogComponent implements OnChanges {\n  @Input() dialogConfig: DialogConfig = { ...DEFAULT_DIALOG_CONFIG };\n  @Output() confirm: EventEmitter<void> = new EventEmitter();\n  @Output() cancel: EventEmitter<void> = new EventEmitter();\n\n  constructor(\n    private confirmationService: ConfirmationService,\n    private messageService: MessageService,\n    private renderer: Renderer2,\n    private el: ElementRef\n  ) {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['dialogConfig']) {\n      if (\n        changes['dialogConfig'].currentValue?.dialogStyle !==\n        changes['dialogConfig'].previousValue?.dialogStyle\n      ) {\n        this.applyDialogStyle();\n      }\n\n      if (this.dialogConfig.visible) {\n        this.showDialog();\n      }\n    }\n  }\n\n  private applyDialogStyle(): void {\n    const dialogStyle = this.dialogConfig.dialogStyle || SeverityEnum.INFO;\n    const styleConfig = DIALOG_STYLES[dialogStyle] || {};\n\n    this.dialogConfig = {\n      ...DEFAULT_DIALOG_CONFIG,\n      ...styleConfig,\n      confirmButtonConfig: {\n        ...DEFAULT_DIALOG_CONFIG.confirmButtonConfig,\n        ...styleConfig.confirmButtonConfig,\n      },\n      cancelButtonConfig: {\n        ...DEFAULT_DIALOG_CONFIG.cancelButtonConfig,\n        ...styleConfig.cancelButtonConfig,\n      },\n    };\n  }\n\n  showDialog(): void {\n    this.confirmationService.confirm({\n      header: this.getDialogHeaderText(),\n      message: this.getDialogContentText(),\n      acceptLabel: this.dialogConfig.confirmButtonConfig?.label || 'Confirm',\n      rejectLabel: this.dialogConfig.cancelButtonConfig?.label || 'Cancel',\n      acceptButtonStyleClass: this.getButtonStyle(\n        this.dialogConfig.confirmButtonConfig,\n        true\n      ),\n      rejectButtonStyleClass: this.getButtonStyle(\n        this.dialogConfig.cancelButtonConfig,\n        false\n      ),\n      acceptIcon: this.dialogConfig.confirmButtonConfig?.icon || 'pi pi-check',\n      rejectIcon: this.dialogConfig.cancelButtonConfig?.icon || 'pi pi-times',\n      accept: () => {\n        this.confirm.emit();\n        if (this.dialogConfig.toastOnConfirm) {\n        }\n      },\n      reject: (type: ConfirmEventType) => {\n        this.cancel.emit();\n        if (\n          type === ConfirmEventType.REJECT &&\n          this.dialogConfig.toastOnCancel\n        ) {\n        }\n      },\n    });\n\n    // Use renderer to apply dynamic styles\n    setTimeout(() => {\n      const dialogElement = this.el.nativeElement.querySelector('.p-dialog');\n      if (dialogElement) {\n        this.renderer.setStyle(\n          dialogElement,\n          'width',\n          this.dialogConfig.width || '400px'\n        );\n        this.renderer.setStyle(\n          dialogElement,\n          'height',\n          this.dialogConfig.height || 'auto'\n        );\n      }\n    }, 0);\n  }\n\n  private getButtonStyle(\n    buttonConfig?: ButtonModel,\n    isConfirm: boolean = false\n  ): string {\n    let styleClass = buttonConfig?.styleClass ?? 'p-button-sm';\n\n    // ✅ Apply width dynamically if provided, otherwise default to 100%\n    const buttonWidth = buttonConfig?.width ?? '100%';\n\n    // ✅ Set default severity: SUCCESS for confirm, SECONDARY for cancel\n    const defaultSeverity = isConfirm ? SeverityEnum.DANGER : SeverityEnum.INFO;\n    const severity = buttonConfig?.severity ?? defaultSeverity;\n\n    // ✅ Apply severity-based styles only if no custom background color is set\n    if (!buttonConfig?.backgroundColor) {\n      switch (severity) {\n        case SeverityEnum.WARNING:\n          styleClass += ' p-button-warning';\n          break;\n        case SeverityEnum.DANGER:\n          styleClass += ' p-button-danger';\n          break;\n        case SeverityEnum.SUCCESS:\n          styleClass += ' p-button-success';\n          break;\n        case SeverityEnum.INFO:\n        default:\n          styleClass += ' p-button-secondary';\n          break;\n      }\n    }\n\n    return `${styleClass.trim()} width-${buttonWidth.replace('%', '')}`;\n  }\n\n  getDialogHeaderText(): string {\n    const header = this.dialogConfig.header;\n    const dialogStyle = this.dialogConfig.dialogStyle ?? SeverityEnum.INFO;\n    const styleHeader = DIALOG_STYLES[dialogStyle]?.header;\n\n    return typeof header === 'object' && header !== null && 'text' in header\n      ? header.text\n      : typeof header === 'string'\n      ? header\n      : typeof styleHeader === 'object' &&\n        styleHeader !== null &&\n        'text' in styleHeader\n      ? styleHeader.text\n      : 'Confirmation'; // ✅ Default value\n  }\n\n  getDialogHeaderStyle(): any {\n    const header = this.dialogConfig.header;\n    const dialogStyle = this.dialogConfig.dialogStyle ?? SeverityEnum.INFO;\n    const styleHeader = DIALOG_STYLES[dialogStyle]?.header;\n\n    return typeof header === 'object' && header !== null\n      ? {\n          color:\n            header.color ||\n            (typeof styleHeader === 'object' ? styleHeader?.color : '#333'),\n          fontSize: header.fontSize || '25px',\n        }\n      : {\n          color: typeof styleHeader === 'object' ? styleHeader?.color : '#333',\n          fontSize: '25px',\n        };\n  }\n\n  getDialogIconClass(): string {\n    const header = this.dialogConfig.header;\n    const dialogStyle = this.dialogConfig.dialogStyle ?? SeverityEnum.INFO; // ✅ Ensure dialogStyle is always defined\n    const styleHeader = DIALOG_STYLES[dialogStyle]?.header; // ✅ Store the style header separately\n\n    // ✅ Ensure header.icon exists and is an object before accessing .code\n    const icon =\n      typeof header === 'object' && header !== null && 'icon' in header\n        ? header.icon\n        : typeof styleHeader === 'object' && 'icon' in styleHeader\n        ? styleHeader.icon\n        : undefined;\n\n    // ✅ If `icon` is an object, extract `.code`, otherwise return as string or default value\n    return typeof icon === 'string'\n      ? icon\n      : (icon as IconStyle)?.code || 'pi pi-exclamation-circle';\n  }\n\n  getDialogIconStyle(): any {\n    const header = this.dialogConfig.header;\n    const dialogStyle = this.dialogConfig.dialogStyle ?? SeverityEnum.INFO;\n    const styleHeader = DIALOG_STYLES[dialogStyle]?.header;\n\n    const icon: IconStyle | undefined =\n      typeof header === 'object' && header !== null && 'icon' in header\n        ? (header.icon as IconStyle)\n        : undefined;\n\n    return {\n      color:\n        icon?.color ||\n        (typeof styleHeader === 'object' ? styleHeader?.color : '#f39c12'),\n      fontSize: icon?.fontSize || '1.5rem',\n      backgroundColor: icon?.backgroundColor || 'transparent',\n      borderRadius: icon?.shape === 'circular' ? '50%' : '4px',\n      padding: '5px',\n    };\n  }\n\n  getDialogContentText(): string {\n    const content = this.dialogConfig.content;\n    const dialogStyle = this.dialogConfig.dialogStyle ?? SeverityEnum.INFO;\n    const styleContent = DIALOG_STYLES[dialogStyle]?.content;\n\n    return typeof content === 'string'\n      ? content\n      : content?.text ||\n          (typeof styleContent === 'object'\n            ? styleContent?.text\n            : 'Are you sure?');\n  }\n\n  getDialogContentStyle(): any {\n    const content = this.dialogConfig.content;\n    const dialogStyle = this.dialogConfig.dialogStyle ?? SeverityEnum.INFO;\n    const styleContent = DIALOG_STYLES[dialogStyle]?.content;\n\n    return typeof content === 'object' && content !== null\n      ? {\n          color:\n            content.color ||\n            (typeof styleContent === 'object' ? styleContent?.color : '#333'),\n          fontSize: content.fontSize || '20px',\n          textAlign: content.position || 'left',\n        }\n      : {\n          color:\n            typeof styleContent === 'object' ? styleContent?.color : '#333',\n          fontSize: '20px',\n          textAlign: 'left',\n        };\n  }\n}\n","<div class=\"pt-dialog\">\n  <p-confirmDialog>\n    <!-- Header with Icon and Title aligned horizontally -->\n    <ng-template pTemplate=\"header\">\n      <div class=\"popup-header bordered-section\">\n        <i [class]=\"getDialogIconClass()\" [ngStyle]=\"getDialogIconStyle()\"></i>\n        <span class=\"popup-title\" [ngStyle]=\"getDialogHeaderStyle()\">\n          {{ getDialogHeaderText() }}\n        </span>\n      </div>\n    </ng-template>\n\n    <!-- Message Content with Divider -->\n    <ng-template pTemplate=\"message\" let-message>\n      <div\n        class=\"popup-content bordered-section\"\n        [ngStyle]=\"getDialogContentStyle()\"\n      >\n        <p>{{ getDialogContentText() }}</p>\n      </div>\n    </ng-template>\n  </p-confirmDialog>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTDialogComponent } from './pt-dialog.component';\nimport { DialogModule } from 'primeng/dialog';\nimport { PTButtonModule } from '../pt-button';\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\n\n@NgModule({\n  declarations: [PTDialogComponent],\n  imports: [CommonModule, DialogModule, PTButtonModule, ConfirmDialogModule],\n  exports: [PTDialogComponent],\n})\nexport class PTDialogModule {}\n","import { Component } from '@angular/core';\nimport { MessageService } from 'primeng/api';\nimport { ToastMessage } from '../models';\n\n@Component({\n  selector: 'pt-toast-notifier',\n  templateUrl: './pt-toast-notifier.component.html',\n})\nexport class PTToastNotifierComponent {\n  constructor(private messageService: MessageService) {}\n\n  show(toast: ToastMessage): void {\n    if (toast) {\n      this.messageService.add({\n        severity: toast.severity,\n        summary: toast.summary,\n        detail: toast.detail,\n        life: toast.life || 3000,\n      });\n    }\n  }\n\n  clear(): void {\n    this.messageService.clear();\n  }\n}\n","<p-toast position=\"top-right\"></p-toast>\n","import { NgModule } from '@angular/core';\nimport { PTToastNotifierComponent } from './pt-toast-notifier.component';\nimport { ToastModule } from 'primeng/toast';\nimport { CommonModule } from '@angular/common';\nimport { MessageService } from 'primeng/api';\n\n@NgModule({\n  declarations: [PTToastNotifierComponent],\n  imports: [CommonModule, ToastModule],\n  exports: [PTToastNotifierComponent],\n  providers: [MessageService],\n})\nexport class PTToastNotifierModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { PTAdvancedPrimeTableModule } from './pt-advanced-prime-table';\nimport { MultiSearchCriteriaModule } from './multi-search-criteria';\nimport { PTFormBuilderModule } from './pt-form-builder';\nimport { PTTextInputModule } from './pt-text-input';\nimport { PTTextAreaInputModule } from './pt-text-area-input';\nimport { PTSwitchInputModule } from './pt-switch-input';\nimport { PTNumberInputModule } from './pt-number-input';\nimport { PTCheckBoxInputModule } from './pt-check-box-input';\nimport { PTDateInputModule } from './pt-date-input';\nimport { PTMetricCardModule } from './pt-metric-card';\nimport { PTMetricCardGroupModule } from './pt-metric-card-group';\nimport { PTChartModule } from './pt-chart';\nimport { PTCardModule } from './pt-card';\nimport { PTMenuModule } from './pt-menu';\nimport { PTNavbarMenuModule } from './pt-nav-bar-menu';\nimport { PTSideBarMenuModule } from './pt-side-bar-menu';\nimport { PTPageSkeletonModule } from './pt-page-skeleton';\nimport { PTFooterModule } from './pt-footer';\nimport { PTBreadCrumbModule } from './pt-bread-crumb';\nimport { PTMenuFancyModule } from './pt-menu-fancy';\nimport { PTLoginPageModule } from './pt-login-page';\nimport { PTButtonModule } from './pt-button';\nimport { PTDialogModule } from './pt-dialog/pt-dialog.module';\nimport { PTToastNotifierModule } from './pt-toast-notifier';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    PTAdvancedPrimeTableModule,\n    MultiSearchCriteriaModule,\n\n    // Inputs\n    PTCheckBoxInputModule,\n    PTDateInputModule,\n    PTFormBuilderModule,\n    PTNumberInputModule,\n    PTSwitchInputModule,\n    PTTextAreaInputModule,\n    PTTextInputModule,\n\n    // Dashboard\n    PTMetricCardModule,\n    PTMetricCardGroupModule,\n\n    // Chart\n    PTChartModule,\n\n    // Cards\n    PTCardModule,\n\n    // Menu\n    PTMenuModule,\n    PTMenuFancyModule,\n\n    // Navbar\n    PTNavbarMenuModule,\n\n    // SideBar\n    PTSideBarMenuModule,\n\n    // Page skeleton\n    PTPageSkeletonModule,\n\n    // Footer\n    PTFooterModule,\n\n    // BreadCrumb\n    PTBreadCrumbModule,\n\n    // Login\n    PTLoginPageModule,\n\n    // Button\n    PTButtonModule,\n\n    // Dialog\n    PTDialogModule,\n\n    // Toasts\n    PTToastNotifierModule,\n  ],\n  exports: [\n    PTAdvancedPrimeTableModule,\n    MultiSearchCriteriaModule,\n\n    // Inputs\n    PTCheckBoxInputModule,\n    PTDateInputModule,\n    PTFormBuilderModule,\n    PTNumberInputModule,\n    PTSwitchInputModule,\n    PTTextAreaInputModule,\n    PTTextInputModule,\n\n    // Dashboard\n    PTMetricCardModule,\n    PTMetricCardGroupModule,\n\n    // Chart\n    PTChartModule,\n\n    // Cards\n    PTCardModule,\n\n    // Menu\n    PTMenuModule,\n    PTMenuFancyModule,\n    // Navbar\n    PTNavbarMenuModule,\n\n    // SideBar\n    PTSideBarMenuModule,\n\n    // Page skeleton\n    PTPageSkeletonModule,\n\n    // Footer\n    PTFooterModule,\n\n    // BreadCrumb\n    PTBreadCrumbModule,\n\n    // Login\n    PTLoginPageModule,\n\n    // Button\n    PTButtonModule,\n\n    // Dialog\n    PTDialogModule,\n\n    // Toasts\n    PTToastNotifierModule,\n  ],\n})\nexport class NgPrimeToolsModule {}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { MetricPanelData } from '../models/metric-panel-data.model';\nimport { CardConfig, TitleStyle } from '../models';\nimport { Router } from '@angular/router';\n\n@Component({\n  selector: 'pt-metric-panel',\n  templateUrl: './pt-metric-panel.component.html',\n  styleUrls: ['./pt-metric-panel.component.css'],\n})\nexport class PTMetricPanelComponent implements OnInit {\n  @Input() panelData!: MetricPanelData;\n  @Input() cardConfig: CardConfig = this.getDefaultCardConfig();\n\n  constructor(private router: Router) {}\n\n  ngOnInit(): void {}\n\n  getDefaultCardConfig(): CardConfig {\n    return {\n      backgroundColor: '#fff',\n      borderColor: '#ddd',\n      borderWidth: '1px',\n      padding: '20px',\n      margin: '10px 0',\n      borderRadius: '8px',\n      boxShadow: '0 4px 6px rgba(0, 0, 0, 0.1)',\n    };\n  }\n\n  getTitleText(): string {\n    return typeof this.panelData.title === 'object'\n      ? this.panelData.title.text\n      : this.panelData.title || '';\n  }\n\n  getTitleStyles() {\n    if (typeof this.panelData.title === 'object') {\n      return {\n        color: this.panelData.title.color || '#333',\n        fontSize: this.panelData.title.fontSize || '1.5rem',\n        textAlign: this.panelData.title.position || 'left',\n      };\n    }\n    return {};\n  }\n\n  getIconClass(icon?: string): string {\n    return icon ? icon : '';\n  }\n\n  getIconStyles(icon?: any) {\n    if (typeof icon === 'object') {\n      return {\n        color: icon.color || '#333',\n        fontSize: icon.fontSize || '1.2rem',\n        backgroundColor: icon.backgroundColor || 'transparent',\n        borderRadius: icon.shape === 'circular' ? '50%' : '8px',\n        padding: '6px',\n        display: 'inline-block',\n      };\n    }\n    return {};\n  }\n\n  getValueStyles(value: any) {\n    if (typeof value === 'object' && 'text' in value) {\n      return {\n        color: value.color || '#2d3748',\n        fontSize: value.fontSize || '1rem',\n        fontWeight: value.fontWeight || 'bold',\n      };\n    }\n    return {};\n  }\n\n  isTitleObject(): boolean {\n    return typeof this.panelData.title === 'object';\n  }\n\n  getTitleIcon(): string | undefined {\n    if (this.isTitleObject()) {\n      const icon = (this.panelData.title as TitleStyle).icon;\n      return typeof icon === 'string' ? icon : icon?.code;\n    }\n    return undefined;\n  }\n\n  isTitleStyle(value: any): value is TitleStyle {\n    return typeof value === 'object' && value !== null && 'text' in value;\n  }\n\n  handleClick(url?: string) {\n    if (url) {\n      this.router.navigate([url]);\n    }\n  }\n}\n","<pt-card [config]=\"cardConfig\">\n  <!-- Panel Title -->\n  <div class=\"panel-header\" [ngStyle]=\"getTitleStyles()\">\n    <i\n      *ngIf=\"getTitleIcon()\"\n      [ngClass]=\"getIconClass(getTitleIcon())\"\n      [ngStyle]=\"getIconStyles(getTitleIcon())\"\n    ></i>\n    <span>{{ getTitleText() }}</span>\n  </div>\n\n  <hr />\n\n  <!-- Metric Indicators -->\n  <div class=\"metric-list\">\n    <div\n      *ngFor=\"let item of panelData.indicators\"\n      class=\"metric-item\"\n      [ngStyle]=\"{ cursor: item?.url ? 'pointer' : 'default' }\"\n      (click)=\"handleClick(item?.url)\"\n      [attr.title]=\"item?.url ? 'Go to ' + item.url : ''\"\n    >\n      <i\n        *ngIf=\"item.icon\"\n        [ngClass]=\"getIconClass(item.icon.code)\"\n        [ngStyle]=\"getIconStyles(item.icon)\"\n      ></i>\n      <span class=\"metric-title\">\n        {{ isTitleStyle(item.title) ? item.title.text : item.title }}\n      </span>\n\n      <span class=\"metric-value\" [ngStyle]=\"getValueStyles(item.value)\">\n        {{ isTitleStyle(item.value) ? item.value.text : item.value }}\n      </span>\n    </div>\n  </div>\n</pt-card>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTMetricPanelComponent } from './pt-metric-panel.component';\nimport { PTCardModule } from '../pt-card';\n\n@NgModule({\n  declarations: [PTMetricPanelComponent],\n  imports: [CommonModule, PTCardModule],\n  exports: [PTMetricPanelComponent],\n})\nexport class PTMetricPanelModule {}\n","import {\n  Component,\n  Input,\n  OnInit,\n  OnDestroy,\n  ViewChild,\n  ElementRef,\n} from '@angular/core';\nimport {\n  Chart,\n  ChartConfiguration,\n  registerables,\n  ChartData,\n  ChartOptions,\n} from 'chart.js';\nimport ChartDataLabels from 'chartjs-plugin-datalabels';\nimport { ChartConfig, Dataset } from '../models/chart-config.model';\n\n@Component({\n  selector: 'pt-chart-comparison',\n  templateUrl: './pt-chart-comparison.component.html',\n  styleUrls: ['./pt-chart-comparison.component.css'],\n})\nexport class PTChartComparisonComponent implements OnInit, OnDestroy {\n  @Input() chartConfig!: ChartConfig;\n  @Input() medianTitle: string = 'Médiane';\n  @Input() xAxisTitle: string = 'Time';\n  @Input() yAxisTitle: string = 'Value';\n\n  // Y-Axis manual inputs\n  @Input() yMin!: number;\n  @Input() yMax!: number;\n  @Input() yStepSize!: number;\n\n  // Chart dimension inputs\n  @Input() chartHeight: string = '400px';\n  @Input() chartWidth: string = '1200px';\n\n  @ViewChild('chartCanvas', { static: true })\n  canvasRef!: ElementRef<HTMLCanvasElement>;\n\n  private chart!: Chart;\n\n  constructor() {\n    Chart.register(...registerables, ChartDataLabels);\n  }\n\n  ngOnInit() {\n    this.initializeChart();\n  }\n\n  ngOnDestroy() {\n    this.destroyChart();\n  }\n\n  /**\n   * Initializes the chart with median and datasets\n   */\n  private initializeChart() {\n    const canvas = this.canvasRef.nativeElement;\n    this.destroyChart();\n\n    const config: ChartConfiguration = {\n      type: this.chartConfig.type || 'line',\n      data: this.getFormattedChartData(), // Get data with median\n      options: this.getChartOptions(),\n    };\n\n    this.chart = new Chart(canvas, config);\n  }\n\n  /**\n   * Computes median values and adds them to the dataset\n   */\n  private getFormattedChartData(): ChartData {\n    const medianValues = this.calculateMedian();\n\n    return {\n      labels: this.chartConfig.data.labels,\n      datasets: [\n        // Add median line dataset\n        {\n          label: this.medianTitle || 'Médiane',\n          data: medianValues,\n          borderColor: '#0000FF', // Blue color\n          borderWidth: 2,\n          backgroundColor: 'transparent',\n          pointRadius: 0,\n          fill: false,\n          tension: 0.1,\n          borderDash: [5, 5], // Dashed line\n        },\n        // Keep existing datasets\n        ...(this.chartConfig.data.datasets as Dataset[]),\n      ],\n    };\n  }\n\n  /**\n   * Computes median values from all datasets at each time point\n   */\n  private calculateMedian(): number[] {\n    const datasets = this.chartConfig.data.datasets as Dataset[];\n\n    return this.chartConfig.data.labels!.map((_, index) => {\n      const valuesAtTime = datasets\n        .map((dataset) => dataset.data[index])\n        .filter((val) => val !== undefined);\n\n      if (valuesAtTime.length === 0) return 0;\n\n      valuesAtTime.sort((a, b) => a - b);\n      const middle = Math.floor(valuesAtTime.length / 2);\n\n      return valuesAtTime.length % 2 === 0\n        ? (valuesAtTime[middle - 1] + valuesAtTime[middle]) / 2\n        : valuesAtTime[middle];\n    });\n  }\n\n  /**\n   * Defines chart options including Y-axis scaling\n   */\n  private getChartOptions(): ChartOptions {\n    return {\n      responsive: true,\n      maintainAspectRatio: false,\n      plugins: {\n        legend: { display: true, position: 'top' },\n        tooltip: { mode: 'index', intersect: false },\n      },\n      scales: {\n        x: {\n          title: { display: true, text: this.chartConfig.xAxisTitle || 'Time' },\n          ticks: { font: { size: 12 } },\n        },\n        y: {\n          title: {\n            display: true,\n            text: this.chartConfig.yAxisTitle || 'Value',\n          },\n          min: this.chartConfig.scales?.y?.min,\n          max: this.chartConfig.scales?.y?.max,\n          ticks: {\n            stepSize: this.chartConfig.scales?.y?.ticks?.stepSize,\n            font: { size: 16, weight: 'bold' },\n            color: '#333',\n          },\n          grid: {\n            color: 'rgba(0,0,0,0.1)',\n          },\n          border: {\n            display: true,\n            color: '#000',\n          },\n        },\n      },\n    };\n  }\n\n  /**\n   * Destroys the existing chart instance if present\n   */\n  private destroyChart() {\n    if (this.chart) {\n      this.chart.destroy();\n      this.chart = undefined as any;\n    }\n  }\n}\n","<div class=\"chart-scroll-container\">\n  <div\n    class=\"chart-inner\"\n    [style.width]=\"chartConfig.chartWidth || '1200px'\"\n    [style.height]=\"chartConfig.chartHeight || '400px'\"\n  >\n    <canvas #chartCanvas></canvas>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTChartComparisonComponent } from './pt-chart-comparison.component';\n\n@NgModule({\n  declarations: [PTChartComparisonComponent],\n  imports: [CommonModule],\n  exports: [PTChartComparisonComponent],\n})\nexport class PTChartComparisonModule {}\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport {\n  AxisChartConfig,\n  AxisChartData,\n  ChartConfig,\n  TitleStyle,\n} from '../models';\n\n@Component({\n  selector: 'pt-line-chart',\n  templateUrl: './pt-line-chart.component.html',\n  styleUrls: ['./pt-line-chart.component.css'],\n})\nexport class PTLineChartComponent implements OnChanges {\n  @Input() chartData!: AxisChartData[];\n  @Input() config: AxisChartConfig = {\n    yAxisTitle: 'Values',\n    xAxisTitle: 'Labels',\n    chartIdentifier: 'line-chart',\n    chartMenu: [],\n    chartWidth: '100%',\n    cardConfig: {\n      identifier: 'line-chart-card',\n      title: 'Line Chart',\n      width: '100%',\n      menu: {\n        menuItems: [],\n      },\n    },\n  };\n\n  lineChartConfig: ChartConfig;\n\n  constructor() {\n    this.lineChartConfig = this.createLineChartConfig();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['chartData'] && this.chartData && this.chartData.length > 0) {\n      this.updateChartData();\n    }\n  }\n\n  private createLineChartConfig(): ChartConfig {\n    const chartTitle =\n      typeof this.config.cardConfig?.title === 'string'\n        ? this.config.cardConfig.title\n        : (this.config.cardConfig?.title as TitleStyle)?.text || 'Line Chart';\n\n    return {\n      type: 'line',\n      data: {\n        labels: [],\n        datasets: [\n          {\n            label: chartTitle,\n            data: [],\n            borderColor: '#4aa0fa',\n            backgroundColor: 'rgba(74, 160, 250, 0.2)',\n            borderWidth: 2,\n            tension: 0.4,\n            fill: true,\n            pointRadius: 5,\n            pointBackgroundColor: '#4aa0fa',\n          },\n        ],\n      },\n      options: {\n        responsive: true,\n        plugins: {\n          legend: {\n            display: true,\n            position: 'bottom',\n          },\n          tooltip: {\n            callbacks: {\n              label: (context: any) =>\n                `${context.dataset.label}: ${context.raw.toFixed(2)}`,\n            },\n          },\n          datalabels: {\n            display: false,\n          },\n        },\n        scales: {\n          y: {\n            beginAtZero: true,\n            title: {\n              display: !!this.config.yAxisTitle,\n              text: this.config.yAxisTitle,\n            },\n          },\n          x: {\n            title: {\n              display: !!this.config.xAxisTitle,\n              text: this.config.xAxisTitle,\n            },\n          },\n        },\n      },\n    };\n  }\n\n  private updateChartData(): void {\n    const labels = this.chartData.map((item) => item.label);\n    const data = this.chartData.map((item) => item.value);\n\n    this.lineChartConfig.data.labels = labels;\n    this.lineChartConfig.data.datasets[0].data = data;\n\n    // Trigger chart update\n    (this.lineChartConfig as any)._chart?.update();\n  }\n}\n","<pt-card [config]=\"config.cardConfig!\">\n  <pt-chart [chartConfig]=\"lineChartConfig\"></pt-chart>\n</pt-card>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTCardModule } from '../pt-card';\nimport { PTChartModule } from '../pt-chart';\nimport { PTLineChartComponent } from './pt-line-chart.component';\n\n@NgModule({\n  declarations: [PTLineChartComponent],\n  imports: [CommonModule, PTCardModule, PTChartModule],\n  exports: [PTLineChartComponent],\n})\nexport class PTLineChartModule {}\n","// Advanced table\nexport * from './table-column.model';\n\n// Multi search criteria\nexport * from './search-criteria.model';\nexport * from './filter-option.model';\n\n// Form inputs and btns\nexport * from './form-button.model';\nexport * from './form-field.model';\nexport * from './form-field-group.model';\nexport * from './form-check-field.model';\nexport * from './form-date-field.model';\nexport * from './form-drop-down-field.model';\nexport * from './form-multi-select.model';\nexport * from './form-number-field.model';\nexport * from './form-switch-field.model';\nexport * from './form-text-area-field.model';\nexport * from './form-text-field.model';\n\n// Metric data for dashboard\nexport * from './metric-card-data.model';\nexport * from './metric-panel-data.model';\nexport * from './metric-indicateur-data.model';\n\n// Chart\nexport * from './chart-config.model';\nexport * from './axis-chart-config.model';\nexport * from './axis-chart-data.model';\n\n// Card\nexport * from './card-config.model';\n\n// Menu\nexport * from './menu.model';\nexport * from './menu-item.model';\nexport * from './menu-config.model';\nexport * from './nav-bar-menu-config.model';\nexport * from './side-menu-bar-config.model';\n\n// Page Skeleton\nexport * from './page-skeleton-config.model';\n\n// Footer\nexport * from './footer-config.model';\n\n// Bread Crumb\nexport * from './bread-crumb-config.model';\n\n// login\nexport * from './login-page-config.model';\nexport * from './login-model';\n\n// Button\nexport * from './button.model';\n\n// Dialog\nexport * from './dialog-config.model';\nexport * from './toast-message.model';\n\n// Generic\nexport * from './icon-style.model';\nexport * from './title-style.model';\nexport * from './text-style.model';\nexport * from './image-style.model';\nexport * from './badge.model';\nexport * from './pattern.model';\nexport * from './footer.model';\n","import { Component, Input, HostBinding } from '@angular/core';\n\n@Component({\n  selector: 'pt-group',\n  templateUrl: './pt-group.component.html',\n  styleUrls: ['./pt-group.component.css'],\n})\nexport class PTGroupComponent {\n  @Input() gap: string = '16px';\n  @Input() justify:\n    | 'flex-start'\n    | 'center'\n    | 'flex-end'\n    | 'space-between'\n    | 'space-around' = 'flex-start';\n\n  @HostBinding('style.display') display = 'flex';\n  @HostBinding('style.flexWrap') flexWrap = 'wrap';\n  @HostBinding('style.gap') get gapSize() {\n    return this.gap;\n  }\n  @HostBinding('style.justifyContent') get justifyContent() {\n    return this.justify;\n  }\n}\n","<ng-content></ng-content>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTCardModule } from '../pt-card';\nimport { PTGroupComponent } from './pt-group.component';\n\n@NgModule({\n  declarations: [PTGroupComponent],\n  imports: [CommonModule, PTCardModule],\n  exports: [PTGroupComponent],\n})\nexport class PTGroupModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i5","i7","i12.CustomCurrencyPipe","i13.CustomDatePipe","i2","i4","i6","i8","i9","i1.PTDateService","i3.PTCheckBoxInputComponent","i4.PTDateInputComponent","i5.PTNumberInputComponent","i6.PTSwitchInputComponent","i7.PTTextAreaInputComponent","i8.PTTextInputComponent","i9.PTDropdownComponent","i10.PTMultiSelectComponent","i1","i4.PTDynamicFormFieldComponent","i2.PTMetricCardComponent","i2.PTMenuComponent","i2.PTCardComponent","i3.PTMenuFancyComponent","i3.PTCardComponent","i4.PTTextInputComponent","i1.PTCardComponent","i1.PTBreadCrumbService","i2.PTNavbarMenuComponent","i4.PTSideBarMenuComponent","i6.PTFooterComponent","i7.PTBreadCrumbComponent","i5.PTTextInputComponent","i3.PTLoginCardComponent","i2.PTChartComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;;;;;;;AAOG;SACa,kBAAkB,CAChC,GAAgB,EAChB,OAAe,YAAY,EAAA;;IAG3B,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAExC,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,GAAG,CAAC;KACZ;;AAGD,IAAA,OAAO,CAAC,IAAI,GAAG,IAAI,IAAI,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;;AAG5D,IAAA,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;;IAGzD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;AACrC;;MCxBa,kBAAkB,CAAA;IAC7B,SAAS,CACP,KAAa,EACb,QAAiB,EACjB,aAAsB,EACtB,iBAAuC,GAAA,OAAO,EAC9C,gBAAA,GAAoC,KAAK,EAAA;AAEzC,QAAA,IAAI,cAAsB,CAAC;AAE3B,QAAA,IAAI,aAAa,KAAK,SAAS,EAAE;AAC/B,YAAA,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;SAC/C;aAAM;AACL,YAAA,cAAc,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;SACnC;AAED,QAAA,MAAM,qBAAqB,GAAG,iBAAiB,KAAK,OAAO,GAAG,GAAG,GAAG,GAAG,CAAC;AACxE,QAAA,MAAM,oBAAoB,GAAG,gBAAgB,KAAK,OAAO,GAAG,GAAG,GAAG,GAAG,CAAC;QAEtE,cAAc,GAAG,cAAc,CAAC,OAAO,CACrC,uBAAuB,EACvB,qBAAqB,CACtB,CAAC;AAEF,QAAA,IAAI,oBAAoB,KAAK,GAAG,EAAE;YAChC,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;SACnD;QAED,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,iBAAyB,CAAC;YAE9B,QAAQ,QAAQ;AACd,gBAAA,KAAK,KAAK;AACR,oBAAA,iBAAiB,GAAG,CAAA,EAAG,cAAc,CAAA,GAAA,CAAK,CAAC;oBAC3C,MAAM;AACR,gBAAA,KAAK,KAAK;AACR,oBAAA,iBAAiB,GAAG,CAAA,CAAA,EAAI,cAAc,CAAA,CAAE,CAAC;oBACzC,MAAM;AACR,gBAAA;AACE,oBAAA,iBAAiB,GAAG,CAAG,EAAA,cAAc,CAAI,CAAA,EAAA,QAAQ,EAAE,CAAC;aACvD;AAED,YAAA,OAAO,iBAAiB,CAAC;SAC1B;AAED,QAAA,OAAO,cAAc,CAAC;KACvB;+GA9CU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;6GAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,CAAA,EAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,gBAAgB;AACtB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;;MCAY,cAAc,CAAA;AACzB,IAAA,SAAS,CAAC,KAAU,EAAE,MAAA,GAAiB,YAAY,EAAA;AACjD,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI,CAAC;AAExB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC/B,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;gBACtB,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACnC,gBAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;gBACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACpC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAExC,gBAAA,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAAE,oBAAA,OAAO,IAAI,CAAC;AAEvC,gBAAA,MAAM,OAAO,GAA+B;AAC1C,oBAAA,IAAI,EAAE,SAAS;AACf,oBAAA,KAAK,EAAE,SAAS;AAChB,oBAAA,GAAG,EAAE,SAAS;iBACf,CAAC;AACF,gBAAA,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aAC/D;SACF;AAAM,aAAA,IAAI,KAAK,YAAY,IAAI,EAAE;;AAEhC,YAAA,MAAM,OAAO,GAA+B;AAC1C,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,GAAG,EAAE,SAAS;aACf,CAAC;AACF,YAAA,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAChE;AAED,QAAA,OAAO,IAAI,CAAC;KACb;+GAhCU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;6GAAd,cAAc,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,CAAA,EAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,YAAY;AACnB,iBAAA,CAAA;;;MCYY,6BAA6B,CAAA;AAkDxC,IAAA,WAAA,GAAA;;QAhDS,IAAI,CAAA,IAAA,GAAU,EAAE,CAAC;QACjB,IAAO,CAAA,OAAA,GAAkB,EAAE,CAAC;QAC5B,IAAY,CAAA,YAAA,GAAW,CAAC,CAAC;QACzB,IAAW,CAAA,WAAA,GAAa,EAAE,CAAC;QAC3B,IAAe,CAAA,eAAA,GAAY,KAAK,CAAC;QACjC,IAAc,CAAA,cAAA,GAAY,KAAK,CAAC;QAChC,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;QAC9B,IAAe,CAAA,eAAA,GAAY,KAAK,CAAC;QACjC,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;QAC7B,IAAO,CAAA,OAAA,GAAU,EAAE,CAAC;QACpB,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;QAC5B,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;QACzB,IAAS,CAAA,SAAA,GAAkB,IAAI,CAAC;;AAG/B,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;AAC5B,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAO,CAAC;AACjC,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAQ,CAAC;AAC5C,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAQ,CAAC;QAI7C,IAAa,CAAA,aAAA,GAAG,aAAa,CAAC;QACrC,IAAW,CAAA,WAAA,GAAW,EAAE,CAAC;QAElB,IAAO,CAAA,OAAA,GAA2B,EAAE,CAAC;QAEpC,IAAkB,CAAA,kBAAA,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACnD,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;;QAGf,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QAC1B,IAAM,CAAA,MAAA,GAAY,KAAK,CAAC;QACxB,IAAI,CAAA,IAAA,GAAW,CAAC,CAAC;;AAGjB,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;AACpB,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;AAChB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,GAAG,EAAiB,CAAC;QACzC,IAAY,CAAA,YAAA,GAAU,EAAE,CAAC;QACzB,IAAkB,CAAA,kBAAA,GAAa,EAAE,CAAC;;AAGlC,QAAA,IAAA,CAAA,MAAM,GAAyB,MAAK,GAAG,CAAC;AACxC,QAAA,IAAA,CAAA,eAAe,GAAwB,MAAK,GAAG,CAAC;AAChD,QAAA,IAAA,CAAA,eAAe,GAAwB,MAAK,GAAG,CAAC;AAChD,QAAA,IAAA,CAAA,iBAAiB,GAAwB,MAAK,GAAG,CAAC;QAClD,IAAiB,CAAA,iBAAA,GAAY,KAAK,CAAC;KACnB;IAEhB,QAAQ,GAAA;QACN,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CACxC,CAAC,GAAG,KAAK,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CACjD,CAAC;AAEF,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,OAAO;AACnC,aAAA,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,QAAQ,KAAK,KAAK,CAAC;aACjE,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAc,CAAC,CAAC;QACpC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,iBAAiB,EAAE,CAAC;;QAGzB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;YAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,aAAa,CAAC,MAAM,EAAE;AACrC,gBAAA,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC;AACvB,gBAAA,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC;AACrB,gBAAA,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC;aACxB;YAED,IAAI,GAAG,CAAC,IAAI,KAAK,aAAa,CAAC,QAAQ,EAAE;AACvC,gBAAA,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC;aACrC;AAED,YAAA,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,EAAE;AAChC,gBAAA,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;aACvB;AAED,YAAA,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,EAAE;AAChC,gBAAA,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;aACvB;AAED,YAAA,IAAI,GAAG,CAAC,QAAQ,KAAK,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE;gBACpD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aACxC;AAED,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;gBACd,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;aAC5C;AACH,SAAC,CAAC,CAAC;KACJ;;AAGO,IAAA,yBAAyB,CAAC,GAAgB,EAAA;QAChD,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,YAAY,KAAI;AAC1C,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,YAAY,CAAC,CAAC;AAC5D,YAAA,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG;gBAC3B,OAAO,EAAE,GAAG,CAAC,aAAa;AAC1B,gBAAA,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE,YAAY,GAAG,YAAY;gBAClC,WAAW,EAAE,qBAAqB,GAAG,YAAY;aAClD,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;;IAGD,oBAAoB,CAClB,GAAgB,EAChB,YAAoB,EAAA;;QAGpB,IAAI,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,aAAa,EAAE;YAC1C,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;;AAGtD,YAAA,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE;gBAClD,OAAO,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;aACjC;SACF;QAED,OAAO,SAAS,CAAC;KAClB;IAED,sBAAsB,CAAC,YAAoB,EAAE,cAAmB,EAAA;AAC9D,QAAA,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;;QAGjD,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,KAAK,GAAG,cAAc,CAAC;;QAGlD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;QAG/B,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7C,QAAA,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,WAAW,CAAC,CAAC;;QAGzD,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;KAC/C;AAED,IAAA,QAAQ,CAAC,KAAU,EAAA;QACjB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC,CAAC;KACtD;AAED,IAAA,sBAAsB,CACpB,KAAU,EACV,UAAkB,EAClB,cAAmB,EAAA;;QAGnB,OAAO,CAAC,GAAG,CACT,wBAAwB,EACxB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAC1C,CAAC;AAEF,QAAA,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC;;AAIhC,QAAA,MAAM,WAAW,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AAEnD,QAAA,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,WAAW,CAAC,CAAC;;QAE5C,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO;SACR;;QAGD,cAAc,CAAC,WAAW,CAAC,CAAC;AAE5B,QAAA,MAAM,iBAAiB,GAAG,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;;QAE9D,IAAI,CAAC,QAAQ,CAAC;YACZ,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAI;AACvC,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;;gBAGrC,IAAI,WAAW,EAAE;;AAEf,oBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AAC9D,oBAAA,OAAO,cAAc,KAAK,iBAAiB,CAAC;iBAC7C;AACD,gBAAA,OAAO,KAAK,CAAC;AACf,aAAC,CAAC;AACH,SAAA,CAAC,CAAC;KACJ;;AAGD,IAAA,kBAAkB,CAAC,IAAS,EAAE,YAAoB,EAAE,KAAU,EAAA;AAC5D,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5C,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,WAAmB,KACpC,IAAI,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CACtE,CAAC;SACH;AACD,QAAA,OAAO,IAAI,CAAC;KACb;;AAGO,IAAA,oBAAoB,CAAC,GAAgB,EAAA;QAC3C,MAAM,eAAe,GAAG,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAG,eAAe,GAAG,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACzD,OAAO,CAAA,EAAG,UAAU,CAAA,EAAA,CAAI,CAAC;KAC1B;AAED,IAAA,cAAc,CAAC,GAAgB,EAAA;;AAE7B,QAAA,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;;AAGzE,QAAA,MAAM,WAAW,GAAG,cAAc,GAAG,EAAE,CAAC;;QAGxC,OAAO,CAAA,EAAG,WAAW,CAAA,EAAA,CAAI,CAAC;KAC3B;AAED,IAAA,KAAK,CAAC,KAAY,EAAA;QAChB,KAAK,CAAC,KAAK,EAAE,CAAC;AACd,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;KACvB;AAEO,IAAA,SAAS,CAAC,UAAkB,EAAA;QAClC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACpC,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;;YAEtB,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACnC,YAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;YACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AACxC,YAAA,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;SAC5C;AACD,QAAA,OAAO,IAAI,CAAC;KACb;IAEO,oBAAoB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;;AAEpB,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;gBACtD,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;aACjC;YACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;SACjC;KACF;IAEO,iBAAiB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AAC9B,gBAAA,QAAQ,MAAM,CAAC,IAAI;AACjB,oBAAA,KAAK,QAAQ;AACX,wBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,wBAAA,IAAI,CAAC,MAAM,GAAG,CAAC,KAAU,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;wBACnD,MAAM;AACR,oBAAA,KAAK,MAAM;AACT,wBAAA,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;wBACnC,MAAM;AACR,oBAAA;AACE,wBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,wBAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;iBACvB;AACH,aAAC,CAAC,CAAC;SACJ;KACF;AAEO,IAAA,qBAAqB,CAAC,MAAW,EAAA;AACvC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACnB,QAAA,IAAI,CAAC,eAAe,GAAG,CAAC,IAAS,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,eAAe,GAAG,CAAC,IAAS,KAAI;AACnC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACjC,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AACvB,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAS,KAAK,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KAC3D;AAED,IAAA,QAAQ,CAAC,KAAY,EAAE,EAAU,EAAE,GAAQ,EAAA;AACzC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B,CAAC;QAChD,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;KAC3C;AAED,IAAA,aAAa,CAAC,EAAU,EAAE,GAAQ,EAAE,KAAU,EAAA;AAC5C,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YACrB,IAAI,MAAM,EAAE,IAAI,KAAK,aAAa,CAAC,IAAI,EAAE;gBACvC,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;aAC7B;iBAAM;gBACL,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aAC9B;AACD,YAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;SACzC;aAAM;YACL,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/B,IAAI,MAAM,EAAE,IAAI,KAAK,aAAa,CAAC,IAAI,EAAE;gBACvC,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACjC,gBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;aACxB;iBAAM;AACL,gBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aACzB;SACF;KACF;AAED,IAAA,mBAAmB,CAAC,MAAmB,EAAA;AACrC,QAAA,QAAQ,MAAM,CAAC,IAAI;YACjB,KAAK,aAAa,CAAC,MAAM;AACvB,gBAAA,OAAO,MAAM,CAAC;YAChB,KAAK,aAAa,CAAC,MAAM,CAAC;YAC1B,KAAK,aAAa,CAAC,MAAM;AACvB,gBAAA,OAAO,SAAS,CAAC;YACnB,KAAK,aAAa,CAAC,IAAI;AACrB,gBAAA,OAAO,MAAM,CAAC;YAChB,KAAK,aAAa,CAAC,WAAW;AAC5B,gBAAA,OAAO,aAAa,CAAC;YACvB,KAAK,aAAa,CAAC,OAAO;AACxB,gBAAA,OAAO,SAAS,CAAC;YACnB,KAAK,aAAa,CAAC,QAAQ;AACzB,gBAAA,OAAO,UAAU,CAAC;AACpB,YAAA;AACE,gBAAA,OAAO,MAAM,CAAC;SACjB;KACF;;AAGD,IAAA,UAAU,CAAC,GAAW,EAAA;AACpB,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;AAC5D,QAAA,OAAO,MAAM,EAAE,UAAU,KAAK,KAAK,CAAC;KACrC;AAED,IAAA,aAAa,CAAC,GAAQ,EAAA;AACpB,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;AAC5D,QAAA,IACE,MAAM,EAAE,IAAI,KAAK,aAAa,CAAC,WAAW;AAC1C,YAAA,MAAM,CAAC,OAAO;AACd,YAAA,MAAM,CAAC,IAAI,KAAK,SAAS,EACzB;AACA,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,CAAC;AAC3B,gBAAA,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC7C,aAAA,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AACtD,YAAA,OAAO,IAAI,CAAC;SACb;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,YAAY,CAAC,GAAQ,EAAA;AACnB,QAAA,QACE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,IAAI;YACpD,aAAa,CAAC,IAAI,EAClB;KACH;;AAGD,IAAA,aAAa,CAAC,KAAU,EAAA;QACtB,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;KACpD;AAED,IAAA,iBAAiB,CAAC,MAAmB,EAAA;AACnC,QAAA,OAAO,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,MAAM;AACzC,YAAA,MAAM,CAAC,QAAQ;AACf,YAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC;cACvC,MAAM,CAAC,QAAQ;cACf,SAAS,CAAC;KACf;AAEO,IAAA,mBAAmB,CAAC,YAAoB,EAAA;QAC9C,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;KACvD;AAED,IAAA,YAAY,CAAC,KAAY,EAAA;AACvB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B,CAAC;QAChD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;;QAGzC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAI;YAC7C,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,KAAK,KAAI;AAC5C,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;gBAC9D,IAAI,CAAC,MAAM,EAAE;AACX,oBAAA,OAAO,KAAK,CAAC;iBACd;;gBAGD,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,EAAE;oBACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;oBAC9C,OAAO,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;iBAC7C;AAAM,qBAAA,IACL,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,MAAM;AACpC,oBAAA,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,MAAM,EACpC;oBACA,QACE,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EACnE;iBACH;qBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,QAAQ,EAAE;;oBAEjD,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;iBACtD;qBAAM;oBACL,QACE,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EACnE;iBACH;AACH,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;;AAGH,QAAA,IAAI,CAAC,EAAE,CAAC,KAAK,GAAG,YAAY,CAAC;;QAG7B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,CAAC;KAC9C;IAEO,oBAAoB,CAAC,YAAiB,EAAE,KAAa,EAAA;QAC3D,IAAI,YAAY,EAAE;;AAEhB,YAAA,OAAO,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAI;AAC5C,gBAAA,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;AACpC,gBAAA,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;oBACjC,OAAO,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;iBAChD;AACD,gBAAA,OAAO,KAAK,CAAC;AACf,aAAC,CAAC,CAAC;SACJ;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,UAAU,CAAC,IAAS,EAAA;AAClB,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,EAAE,CAAC;AACrB,QAAA,IAAI,IAAI,YAAY,IAAI,EAAE;;AAExB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACvD,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAChE,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC;AAC3C,YAAA,OAAO,GAAG,GAAG,CAAA,CAAA,EAAI,KAAK,CAAI,CAAA,EAAA,IAAI,EAAE,CAAC;SAClC;AAAM,aAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;;YAEnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC9B,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACtB,gBAAA,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;aAC9C;iBAAM;;AAEL,gBAAA,OAAO,IAAI,CAAC;aACb;SACF;AACD,QAAA,OAAO,EAAE,CAAC;KACX;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;KAC9B;IAED,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;KAC5B;AAED,IAAA,aAAa,CAAC,KAA0C,EAAA;QAGtD,IAAI,KAAK,EAAE;AACT,YAAA,MAAM,UAAU,GAA8B;AAC5C,gBAAA,KAAK,EAAG,KAAoB,CAAC,KAAK,IAAI,MAAM;AAC5C,gBAAA,MAAM,EAAG,KAAoB,CAAC,MAAM,IAAI,MAAM;aAC/C,CAAC;;AAGF,YAAA,IAAK,KAAoB,CAAC,MAAM,EAAE;AAChC,gBAAA,UAAU,CAAC,MAAM,GAAI,KAAoB,CAAC,MAAO,CAAC;aACnD;AAED,YAAA,IAAK,KAAoB,CAAC,UAAU,EAAE;AACpC,gBAAA,UAAU,CAAC,UAAU,GAAI,KAAoB,CAAC,UAAW,CAAC;aAC3D;AAED,YAAA,IAAK,KAAoB,CAAC,WAAW,EAAE;AACrC,gBAAA,UAAU,CAAC,WAAW,GAAI,KAAoB,CAAC,WAAY,CAAC;aAC7D;AAED,YAAA,IAAK,KAAoB,CAAC,SAAS,EAAE;AACnC,gBAAA,UAAU,CAAC,SAAS,GAAI,KAAoB,CAAC,SAAU,CAAC;aACzD;AAED,YAAA,IAAK,KAAoB,CAAC,YAAY,EAAE;AACtC,gBAAA,UAAU,CAAC,YAAY,GAAI,KAAoB,CAAC,YAAa,CAAC;aAC/D;AAED,YAAA,OAAO,UAAU,CAAC;SACnB;AAED,QAAA,OAAO,EAAE,CAAC;KACX;AAED,IAAA,aAAa,CAAC,KAA0C,EAAA;QAGtD,IAAI,KAAK,EAAE;YACT,OAAO;AACL,gBAAA,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,SAAS;AAC/B,gBAAA,QAAQ,EAAG,KAAoB,CAAC,QAAQ,IAAI,SAAS;AACrD,gBAAA,SAAS,EAAG,KAAoB,CAAC,QAAQ,IAAI,MAAM;aACpD,CAAC;SACH;AACD,QAAA,OAAO,EAAE,CAAC;KACX;IAED,YAAY,CACV,KAAa,EACb,aAAsB,EACtB,iBAAuC,GAAA,OAAO,EAC9C,gBAAA,GAAoC,KAAK,EAAA;QAEzC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,EAAE,CAAC;;AAGrE,QAAA,IAAI,eAAe,GACjB,aAAa,KAAK,SAAS;AACzB,cAAE,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;AAC9B,cAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;;AAGvB,QAAA,IAAI,gBAAgB,KAAK,OAAO,EAAE;YAChC,eAAe,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;SACrD;;QAGD,IAAI,iBAAiB,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE;AAChD,YAAA,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CACjC,gBAAgB,KAAK,OAAO,GAAG,GAAG,GAAG,GAAG,CACzC,CAAC;YACF,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CACzB,uBAAuB,EACvB,iBAAiB,KAAK,OAAO,GAAG,GAAG,GAAG,GAAG,CAC1C,CAAC;AACF,YAAA,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,KAAK,OAAO,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;SACxE;AAED,QAAA,OAAO,eAAe,CAAC;KACxB;+GAphBU,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,wnBChB1C,0wwBAomBA,EAAA,MAAA,EAAA,CAAA,swFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,2BAAA,EAAA,+BAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,4BAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,cAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,eAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,eAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,WAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDplBa,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBALzC,SAAS;+BACE,yBAAyB,EAAA,QAAA,EAAA,0wwBAAA,EAAA,MAAA,EAAA,CAAA,swFAAA,CAAA,EAAA,CAAA;wDAM1B,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAGI,MAAM,EAAA,CAAA;sBAAf,MAAM;gBACG,MAAM,EAAA,CAAA;sBAAf,MAAM;gBACG,gBAAgB,EAAA,CAAA;sBAAzB,MAAM;gBACG,cAAc,EAAA,CAAA;sBAAvB,MAAM;gBAE6B,EAAE,EAAA,CAAA;sBAArC,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;;;ME7BvB,sBAAsB,CAAA;IAIjC,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAED,YAAY,GAAA;AACV,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAgB,CAAC;QAErE,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;AACtD,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SACzD;AAED,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACxC,QAAA,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;;QAGlC,UAAU,CAAC,MAAK;YACd,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,SAAS,EAAE;AACzC,gBAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;oBAC3B,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;iBACvC;qBAAM;oBACL,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;iBACtC;aACF;YACD,OAAO,CAAC,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACvD,SAAC,CAAC,CAAC;KACJ;IAEO,aAAa,GAAA;QACnB,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AAC3B,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SACtC;AACD,QAAA,OAAO,UAAU,CAAC;KACnB;IAED,eAAe,GAAA;AACb,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACxD,QAAA,IAAI,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE;AACjC,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,CAAG,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,cAAc,CAAC;SAC1E;AACD,QAAA,OAAO,EAAE,CAAC;KACX;+GA9CU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,mHCTnC,2nBAsBA,EAAA,MAAA,EAAA,CAAA,uGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDba,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,2nBAAA,EAAA,MAAA,EAAA,CAAA,uGAAA,CAAA,EAAA,CAAA;8BAKlB,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;MEAK,mBAAmB,CAAA;+GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAnB,mBAAmB,EAAA,YAAA,EAAA,CAJf,sBAAsB,CAC3B,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,CAAA,EAAA,OAAA,EAAA,CACpD,sBAAsB,CAAA,EAAA,CAAA,CAAA,EAAA;AAErB,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,mBAAmB,EAHpB,OAAA,EAAA,CAAA,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGnD,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,sBAAsB,CAAC;AACtC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,CAAC;oBAC/D,OAAO,EAAE,CAAC,sBAAsB,CAAC;AAClC,iBAAA,CAAA;;;MC0BY,0BAA0B,CAAA;+GAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,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,0BAA0B,EAlBtB,YAAA,EAAA,CAAA,6BAA6B,EAAE,cAAc,aAE1D,YAAY;YACZ,WAAW;YACX,eAAe;YACf,YAAY;YACZ,cAAc;YACd,WAAW;YACX,iBAAiB;YACjB,SAAS;YACT,kBAAkB;YAClB,eAAe;YACf,eAAe;YACf,qBAAqB;AACrB,YAAA,mBAAmB,aAEX,6BAA6B,CAAA,EAAA,CAAA,CAAA,EAAA;AAE5B,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,0BAA0B,YAhBnC,YAAY;YACZ,WAAW;YACX,eAAe;YACf,YAAY;YACZ,cAAc;YACd,WAAW;YACX,iBAAiB;YACjB,SAAS;YAET,eAAe;YACf,eAAe;YACf,qBAAqB;YACrB,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIV,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAnBtC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,6BAA6B,EAAE,cAAc,CAAC;AAC7D,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,eAAe;wBACf,YAAY;wBACZ,cAAc;wBACd,WAAW;wBACX,iBAAiB;wBACjB,SAAS;wBACT,kBAAkB;wBAClB,eAAe;wBACf,eAAe;wBACf,qBAAqB;wBACrB,mBAAmB;AACpB,qBAAA;oBACD,OAAO,EAAE,CAAC,6BAA6B,CAAC;AACzC,iBAAA,CAAA;;;MC9BY,kBAAkB,CAAA;;AAE7B,IAAA,aAAa,CAAC,UAAkB,EAAA;QAC9B,IAAI,UAAU,EAAE;YACd,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACpC,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;gBACtB,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACnC,gBAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;gBACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACpC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AACxC,gBAAA,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;aAC5C;SACF;AACD,QAAA,OAAO,IAAI,CAAC;KACb;;IAGD,mBAAmB,CAAC,IAAW,EAAE,OAAc,EAAA;AAC7C,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AACvB,YAAA,MAAM,eAAe,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;AAEpC,YAAA,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;gBACtB,IACE,GAAG,CAAC,IAAI;AACR,oBAAA,GAAG,CAAC,IAAI,KAAK,MAAM;AACnB,oBAAA,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EACzB;AACA,oBAAA,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;wBACvB,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAW,CAAC;AACvD,4BAAA,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;iBAC7B;AACH,aAAC,CAAC,CAAC;AAEH,YAAA,OAAO,eAAe,CAAC;AACzB,SAAC,CAAC,CAAC;KACJ;+GAnCU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ICJW,cAWX;AAXD,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,aAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC3B,IAAA,aAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,aAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,aAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,aAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACjB,CAAC,EAXW,aAAa,KAAb,aAAa,GAWxB,EAAA,CAAA,CAAA;;ICXW,uBAOX;AAPD,CAAA,UAAY,sBAAsB,EAAA;AAChC,IAAA,sBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,sBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,sBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,sBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,sBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,sBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC7B,CAAC,EAPW,sBAAsB,KAAtB,sBAAsB,GAOjC,EAAA,CAAA,CAAA;;ICPW,kBAYX;AAZD,CAAA,UAAY,iBAAiB,EAAA;AAC3B,IAAA,iBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,iBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,iBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,iBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC3B,IAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,iBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,iBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,iBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACvB,CAAC,EAZW,iBAAiB,KAAjB,iBAAiB,GAY5B,EAAA,CAAA,CAAA;;ICZW,gBAOX;AAPD,CAAA,UAAY,eAAe,EAAA;AACzB,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,kBAA4B,CAAA;AAC5B,IAAA,eAAA,CAAA,WAAA,CAAA,GAAA,oBAAgC,CAAA;AAChC,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,kBAA4B,CAAA;AAC5B,IAAA,eAAA,CAAA,MAAA,CAAA,GAAA,eAAsB,CAAA;AACtB,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,kBAA4B,CAAA;AAC5B,IAAA,eAAA,CAAA,QAAA,CAAA,GAAA,iBAA0B,CAAA;AAC5B,CAAC,EAPW,eAAe,KAAf,eAAe,GAO1B,EAAA,CAAA,CAAA;;ICPW,oBAKX;AALD,CAAA,UAAY,mBAAmB,EAAA;AAC7B,IAAA,mBAAA,CAAA,cAAA,CAAA,GAAA,cAA6B,CAAA;AAC7B,IAAA,mBAAA,CAAA,cAAA,CAAA,GAAA,UAAyB,CAAA;AACzB,IAAA,mBAAA,CAAA,qBAAA,CAAA,GAAA,iBAAuC,CAAA;AACvC,IAAA,mBAAA,CAAA,cAAA,CAAA,GAAA,WAA0B,CAAA;AAC5B,CAAC,EALW,mBAAmB,KAAnB,mBAAmB,GAK9B,EAAA,CAAA,CAAA;;ICLW,UAIX;AAJD,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACrB,CAAC,EAJW,SAAS,KAAT,SAAS,GAIpB,EAAA,CAAA,CAAA,CAAA;AAEY,MAAA,eAAe,GAAG;AAC7B,IAAA,CAAC,SAAS,CAAC,IAAI,GAAG;AAChB,QAAA,KAAK,EAAE,OAAO;QACd,eAAe,EAAE,SAAS;AAC3B,KAAA;AACD,IAAA,CAAC,SAAS,CAAC,MAAM,GAAG;AAClB,QAAA,KAAK,EAAE,OAAO;QACd,eAAe,EAAE,SAAS;AAC3B,KAAA;AACD,IAAA,CAAC,SAAS,CAAC,OAAO,GAAG;AACnB,QAAA,KAAK,EAAE,OAAO;QACd,eAAe,EAAE,SAAS;AAC3B,KAAA;;;IClBS,aAKX;AALD,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,YAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,YAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACf,CAAC,EALW,YAAY,KAAZ,YAAY,GAKvB,EAAA,CAAA,CAAA;;ACLD;;MCUa,4BAA4B,CAAA;AALzC,IAAA,WAAA,GAAA;QAME,IAAsB,CAAA,sBAAA,GAAG,sBAAsB,CAAC;QAEvC,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;QACnB,IAAQ,CAAA,QAAA,GAAqB,EAAE,CAAC;QAChC,IAAY,CAAA,YAAA,GAAW,CAAC,CAAC;QACzB,IAAI,CAAA,IAAA,GAAU,EAAE,CAAC;AACjB,QAAA,IAAA,CAAA,IAAI,GAAyB,QAAQ,CAAC;AACrC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAS,CAAC;AACzC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAA0B,CAAC;QAEtE,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAC3B,IAAQ,CAAA,QAAA,GAAmB,EAAE,CAAC;AAmI/B,KAAA;IAjIC,QAAQ,GAAA;QACN,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC7B,YAAA,IACE,IAAI,CAAC,IAAI,KAAK,sBAAsB,CAAC,WAAW;gBAChD,IAAI,CAAC,aAAa,EAClB;gBACA,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;AACxC,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;aAC5B;AACH,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,iBAAiB,CAAC,KAAqB,EAAA;AACrC,QAAA,OAAO,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC;KAChC;AAED,IAAA,oBAAoB,CAAC,KAAqB,EAAA;AACxC,QAAA,OAAO,KAAK,CAAC,iBAAiB,IAAI,CAAC,CAAC;KACrC;AAED,IAAA,oBAAoB,CAAC,KAAqB,EAAA;AACxC,QAAA,OAAO,KAAK,CAAC,iBAAiB,IAAI,SAAS,CAAC;KAC7C;AAED,IAAA,YAAY,CAAC,KAAqB,EAAA;QAChC,OAAO,KAAK,CAAC,iBAAiB;AAC5B,cAAE,UAAU,CAAC,CAAA,EAAA,EAAK,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,CAAC,EAAE,CAAC;cAC3D,YAAY,CAAC;KAClB;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;YAC3B,MAAM,cAAc,GAA2B,EAAE,CAAC;YAClD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;AAClC,gBAAA,IAAI,SAAS,CAAC,KAAK,KAAK,IAAI,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,EAAE;oBAC7D,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC;iBAClD;AACH,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SAC1C;aAAM;YACL,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAI;gBACzC,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,KAAI;oBACvC,IAAI,SAAS,CAAC,IAAI,KAAK,sBAAsB,CAAC,SAAS,EAAE;wBACvD,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,KAAK,IAAI;4BAC9C,SAAS;4BACT,SAAS;yBACV,CAAC;AACF,wBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CACrC,CAAC;AACF,wBAAA,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE;AAC1B,4BAAA,OAAO,IAAI,CAAC;yBACb;AACD,wBAAA,IAAI,QAAQ,KAAK,IAAI,EAAE;AACrB,4BAAA,OAAO,KAAK,CAAC;yBACd;wBACD,MAAM,eAAe,GAAG,SAAS;AAC/B,8BAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;8BACzB,IAAI,CAAC;AACT,wBAAA,MAAM,aAAa,GAAG,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;wBAC/D,QACE,CAAC,CAAC,eAAe,IAAI,QAAQ,IAAI,eAAe;6BAC/C,CAAC,aAAa,IAAI,QAAQ,IAAI,aAAa,CAAC,EAC7C;qBACH;AAAM,yBAAA,IACL,SAAS,CAAC,IAAI,KAAK,sBAAsB,CAAC,MAAM;AAChD,wBAAA,SAAS,CAAC,IAAI,KAAK,sBAAsB,CAAC,MAAM,EAChD;AACA,wBAAA,QACE,CAAC,SAAS,CAAC,KAAK;AAChB,4BAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EACxD;qBACH;yBAAM,IAAI,SAAS,CAAC,IAAI,KAAK,sBAAsB,CAAC,WAAW,EAAE;AAChE,wBAAA,QACE,CAAC,SAAS,CAAC,KAAK;4BAChB,SAAS,CAAC,KAAK,CAAC,IAAI,CAClB,CAAC,MAAoB,KAAK,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAChE,EACD;qBACH;yBAAM,IAAI,SAAS,CAAC,IAAI,KAAK,sBAAsB,CAAC,MAAM,EAAE;AAC3D,wBAAA,QACE,CAAC,SAAS,CAAC,KAAK;AAChB,4BAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AACjB,iCAAA,QAAQ,EAAE;AACV,iCAAA,WAAW,EAAE;AACb,iCAAA,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,EACrD;qBACH;AACD,oBAAA,OAAO,IAAI,CAAC;AACd,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAClC;KACF;IAED,KAAK,GAAA;QACH,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAC9B,YAAA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;AACrB,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACnC;IAED,iBAAiB,CAAC,KAAU,EAAE,SAAyB,EAAA;AACrD,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;QAC/B,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,CAAC,IAAI,SAAS,CAAC,aAAa,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC;KAC7E;AAEO,IAAA,SAAS,CAAC,UAA4C,EAAA;QAC5D,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,OAAO,IAAI,CAAC;SACb;AAED,QAAA,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,eAAe,EAAE;AAClE,YAAA,OAAO,UAAkB,CAAC;SAC3B;QAED,MAAM,KAAK,GAAI,UAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAChD,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACtB,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACnC,YAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;YACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AACxC,YAAA,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;SAC5C;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AACD,IAAA,mBAAmB,CAAC,KAAqB,EAAA;AACvC,QAAA,OAAO,KAAK,CAAC,gBAAgB,KAAK,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;KAC/D;+GA9IU,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,sPCVzC,62GAwGA,EAAA,MAAA,EAAA,CAAA,umCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,eAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,WAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,cAAA,EAAA,SAAA,EAAA,YAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,KAAA,EAAA,KAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,SAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FD9Fa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBALxC,SAAS;+BACE,uBAAuB,EAAA,QAAA,EAAA,62GAAA,EAAA,MAAA,EAAA,CAAA,umCAAA,CAAA,EAAA,CAAA;8BAOxB,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACI,YAAY,EAAA,CAAA;sBAArB,MAAM;gBACG,cAAc,EAAA,CAAA;sBAAvB,MAAM;;;MEMI,yBAAyB,CAAA;+GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAzB,yBAAyB,EAAA,YAAA,EAAA,CAbrB,4BAA4B,CAAA,EAAA,OAAA,EAAA,CAEzC,YAAY;YACZ,cAAc;YACd,eAAe;YACf,iBAAiB;YACjB,YAAY;YACZ,WAAW;YACX,iBAAiB;AACjB,YAAA,WAAW,aAEH,4BAA4B,CAAA,EAAA,CAAA,CAAA,EAAA;AAE3B,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,yBAAyB,YAXlC,YAAY;YACZ,cAAc;YACd,eAAe;YACf,iBAAiB;YACjB,YAAY;YACZ,WAAW;YACX,iBAAiB;YACjB,WAAW,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIF,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAdrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,4BAA4B,CAAC;AAC5C,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,cAAc;wBACd,eAAe;wBACf,iBAAiB;wBACjB,YAAY;wBACZ,WAAW;wBACX,iBAAiB;wBACjB,WAAW;AACZ,qBAAA;oBACD,OAAO,EAAE,CAAC,4BAA4B,CAAC;AACxC,iBAAA,CAAA;;;MCVY,wBAAwB,CAAA;IAInC,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAED,YAAY,GAAA;AACV,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAgB,CAAC;QACrE,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;AAChC,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SACzD;QAED,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;gBAC3B,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;aACvC;iBAAM;gBACL,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;aACtC;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACxC,QAAA,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAClC,OAAO,CAAC,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;KACtD;IAEO,aAAa,GAAA;QACnB,MAAM,UAAU,GAAkB,EAAE,CAAC;AACrC,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;YAC3B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;SAChD;AACD,QAAA,OAAO,UAAU,CAAC;KACnB;IAEO,sBAAsB,GAAA;QAC5B,OAAO,CAAC,OAAwB,KAAmC;YACjE,OAAO,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;AAC1D,kBAAE,IAAI;AACN,kBAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;AAC/B,SAAC,CAAC;KACH;IAED,eAAe,GAAA;AACb,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACxD,QAAA,IAAI,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE;AAC1D,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,CAAG,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,cAAc,CAAC;SAC1E;AACD,QAAA,OAAO,EAAE,CAAC;KACX;+GAlDU,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,sHCdrC,2nBAwBA,EAAA,MAAA,EAAA,CAAA,iNAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDVa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;+BACE,oBAAoB,EAAA,QAAA,EAAA,2nBAAA,EAAA,MAAA,EAAA,CAAA,iNAAA,CAAA,EAAA,CAAA;8BAKrB,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;AEhBR;AAKM,SAAU,oBAAoB,CAClC,aAA4B,EAAA;IAE5B,QAAQ,aAAa;AACnB,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,OAAO,CAAC;AACjB,QAAA,KAAK,UAAU;AACb,YAAA,OAAO,UAAU,CAAC;AACpB,QAAA,KAAK,MAAM,CAAC;AACZ,QAAA;AACE,YAAA,OAAO,UAAU,CAAC;KACrB;AACH,CAAC;AAEK,SAAU,qBAAqB,CAAC,aAA4B,EAAA;IAChE,QAAQ,aAAa;AACnB,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,aAAa,CAAC;AACvB,QAAA,KAAK,UAAU;AACb,YAAA,OAAO,sBAAsB,CAAC;AAChC,QAAA,KAAK,MAAM,CAAC;AACZ,QAAA;AACE,YAAA,OAAO,aAAa,CAAC;KACxB;AACH,CAAC;AAEe,SAAA,SAAS,CAAC,UAAkB,EAAE,MAAsB,EAAA;IAClE,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACvC,IAAA,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;AAC5B,QAAA,MAAM,IAAI,KAAK,CAAC,wBAAwB,UAAU,CAAA,CAAE,CAAC,CAAC;IAExD,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;IAC3C,QAAQ,MAAM;AACZ,QAAA,KAAK,UAAU,CAAC;AAChB,QAAA,KAAK,UAAU,CAAC;AAChB,QAAA,KAAK,UAAU;YACb,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;YAC3B,MAAM;AACR,QAAA,KAAK,UAAU;YACb,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;YAC3B,MAAM;AACR,QAAA,KAAK,UAAU;YACb,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;YAC3B,MAAM;AACR,QAAA,KAAK,OAAO;AACV,YAAA,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;AACvB,YAAA,OAAO,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AACzD,QAAA,KAAK,UAAU;YACb,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;YAC/B,OAAO,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AACzE,QAAA;AACE,YAAA,MAAM,IAAI,KAAK,CAAC,4BAA4B,MAAM,CAAA,CAAE,CAAC,CAAC;KACzD;AAED,IAAA,IAAI,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,CAAA,EAAA,EAAK,IAAI,CAAE,CAAA,GAAG,IAAI,CAAC;AAC9C,IAAA,OAAO,IAAI,IAAI,CACb,MAAM,CAAC,IAAI,CAAC,EACZ,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EACjB,MAAM,CAAC,GAAG,CAAC,EACX,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EACjB,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,EACnB,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CACpB,CAAC;AACJ,CAAC;AAEK,SAAU,iBAAiB,CAC/B,KAAa,EACb,UAA0B,EAC1B,SAAkC,EAClC,UAAuB,EAAA;AAEvB,IAAA,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,UAAU,GAAG,OAAO,CAAC;IACpE,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAEtC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,MAAM,UAAU,KAAK,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;QAC1E,MAAM,IAAI,KAAK,CACb,CAAW,QAAA,EAAA,SAAS,CAAK,EAAA,EAAA,KAAK,CAAsB,mBAAA,EAAA,UAAU,CAAI,EAAA,CAAA,CACnE,CAAC;KACH;AAED,IAAA,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACrD,IAAA,MAAM,OAAO,GAAG,UAAU,KAAK,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC;IAC9C,IACE,IAAI,GAAG,CAAC;AACR,QAAA,IAAI,GAAG,OAAO;AACd,QAAA,MAAM,GAAG,CAAC;AACV,QAAA,MAAM,GAAG,EAAE;AACX,SAAC,MAAM,KAAK,SAAS,KAAK,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC,EACrD;QACA,MAAM,IAAI,KAAK,CACb,CAAW,QAAA,EAAA,SAAS,CAAK,EAAA,EAAA,KAAK,CAAqC,kCAAA,EAAA,OAAO,CAAM,IAAA,CAAA,CACjF,CAAC;KACH;AACH;;AClGA;MASa,aAAa,CAAA;AACxB,IAAA,WAAA,GAAA,GAAgB;;IAGhB,uBAAuB,CACrB,aAA4B,EAC5B,aAA8B,EAAA;AAE9B,QAAA,OAAO,aAAa,IAAI,oBAAoB,CAAC,aAAa,CAAC,CAAC;KAC7D;;IAGD,yBAAyB,CACvB,UAA0B,EAC1B,aAA4B,EAC5B,QAAiB,EACjB,QAAiB,EACjB,UAAA,GAA0B,IAAI,EAAA;AAE9B,QAAA,MAAM,eAAe,GAAqB;YACxC,UAAU;YACV,UAAU;YACV,UAAU;YACV,UAAU;YACV,UAAU;SACX,CAAC;AAEF,QAAA,MAAM,eAAe,GAAqB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAEhE,MAAM,eAAe,GAAqB,eAAe,CAAC;QAE1D,QAAQ,aAAa;AACnB,YAAA,KAAK,MAAM;gBACT,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACzC,oBAAA,MAAM,IAAI,KAAK,CACb,uBAAuB,UAAU,CAAA,2BAAA,CAA6B,CAC/D,CAAC;iBACH;gBACD,MAAM;AACR,YAAA,KAAK,MAAM;gBACT,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACzC,oBAAA,MAAM,IAAI,KAAK,CACb,uBAAuB,UAAU,CAAA,2BAAA,CAA6B,CAC/D,CAAC;iBACH;gBACD,IAAI,QAAQ,EAAE;oBACZ,iBAAiB,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;iBACjE;gBACD,IAAI,QAAQ,EAAE;oBACZ,iBAAiB,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;iBACjE;gBACD,MAAM;AACR,YAAA,KAAK,UAAU;gBACb,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACzC,oBAAA,MAAM,IAAI,KAAK,CACb,uBAAuB,UAAU,CAAA,+BAAA,CAAiC,CACnE,CAAC;iBACH;gBACD,MAAM;AACR,YAAA,KAAK,OAAO;gBACV,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACzC,oBAAA,MAAM,IAAI,KAAK,CACb,uBAAuB,UAAU,CAAA,4BAAA,CAA8B,CAChE,CAAC;iBACH;gBACD,MAAM;AACR,YAAA;AACE,gBAAA,MAAM,IAAI,KAAK,CAAC,8BAA8B,aAAa,CAAA,CAAE,CAAC,CAAC;SAClE;KACF;+GArEU,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAb,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCKY,oBAAoB,CAAA;AAS/B,IAAA,WAAA,CAAoB,WAA0B,EAAA;QAA1B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAe;QAL9C,IAAO,CAAA,OAAA,GAAgB,IAAI,CAAC;QAC5B,IAAO,CAAA,OAAA,GAAgB,IAAI,CAAC;QAC5B,IAAkB,CAAA,kBAAA,GAAW,aAAa,CAAC;QAC3C,IAAiB,CAAA,iBAAA,GAAmB,UAAU,CAAC;KAEG;IAElD,QAAQ,GAAA;QACN,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAC9D,IAAI,CAAC,SAAS,CAAC,aAA+B,IAAI,MAAM,EACzD,IAAI,CAAC,SAAS,CAAC,UAAU,CAC1B,CAAC;QAEF,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAE5B,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,WAAW,CAAC,yBAAyB,CACxC,IAAI,CAAC,iBAAiB,EACrB,IAAI,CAAC,SAAS,CAAC,aAA+B,IAAI,MAAM,EACzD,IAAI,CAAC,SAAS,CAAC,QAAQ,EACvB,IAAI,CAAC,SAAS,CAAC,QAAQ,EACvB,IAAI,CAAC,SAAS,CAAC,UAAU,IAAI,IAAI,CAClC,CAAC;SACH;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,KAAK,YAAY,KAAK,EAAE;AAC1B,gBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;aAC9B;iBAAM;AACL,gBAAA,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;aAC7C;SACF;AAED,QAAA,IAAI,CAAC,kBAAkB,GAAG,qBAAqB,CAC5C,IAAI,CAAC,SAAS,CAAC,aAA+B,IAAI,MAAM,CAC1D,CAAC;KACH;IAED,YAAY,GAAA;AACV,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAgB,CAAC;QACrE,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;AAChC,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SACzD;QAED,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;gBAC3B,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;aACvC;iBAAM;gBACL,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;aACtC;AACH,SAAC,CAAC,CAAC;QACH,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;KACtD;IAED,oBAAoB,GAAA;AAClB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,UAA4B,CAAC;AAE/D,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AAC3B,YAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;SAC/D;AACD,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AAC3B,YAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;SAC/D;KACF;IAEO,aAAa,GAAA;QACnB,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AAC3B,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SACtC;AACD,QAAA,OAAO,UAAU,CAAC;KACnB;IAED,eAAe,GAAA;AACb,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACxD,QAAA,IAAI,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE;AACjC,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,CAAG,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,cAAc,CAAC;SAC1E;AACD,QAAA,OAAO,EAAE,CAAC;KACX;+GApFU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAU,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,iHCbjC,w/BA+BA,EAAA,MAAA,EAAA,CAAA,uGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,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,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,eAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,WAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDlBa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,w/BAAA,EAAA,MAAA,EAAA,CAAA,uGAAA,CAAA,EAAA,CAAA;+EAKhB,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;MEAK,sBAAsB,CAAA;IAIjC,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAED,YAAY,GAAA;AACV,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAgB,CAAC;QACvE,IAAI,OAAO,EAAE;AACX,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACxC,YAAA,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;;YAGlC,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;oBAC3B,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;iBACvC;qBAAM;oBACL,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;iBACtC;gBAED,OAAO,CAAC,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACvD,aAAC,CAAC,CAAC;SACJ;KACF;IAEO,aAAa,GAAA;QACnB,MAAM,UAAU,GAAkB,EAAE,CAAC;AACrC,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AAC3B,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SACtC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,SAAS,EAAE;YACzC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACjD,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;gBACpB,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;aAC3C;iBAAM;gBACL,OAAO,CAAC,KAAK,CACX,CAAqB,kBAAA,EAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAmB,iBAAA,CAAA,CAChE,CAAC;aACH;SACF;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,SAAS,EAAE;YACzC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACjD,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;gBACpB,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;aAC3C;iBAAM;gBACL,OAAO,CAAC,KAAK,CACX,CAAqB,kBAAA,EAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAmB,iBAAA,CAAA,CAChE,CAAC;aACH;SACF;AACD,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE;AAClC,YAAA,UAAU,CAAC,IAAI,CACb,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CACjE,CAAC;SACH;AACD,QAAA,OAAO,UAAU,CAAC;KACnB;AAEO,IAAA,2BAA2B,CACjC,eAAoC,EAAA;QAEpC,OAAO,UAAU,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;KACxD;IAED,eAAe,GAAA;AACb,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACxD,QAAA,IAAI,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE;AACjC,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,CAAG,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,cAAc,CAAC;SAC1E;AAAM,aAAA,IAAI,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE;AACnC,YAAA,OAAO,CAAG,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAqB,kBAAA,EAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;SAC9E;AAAM,aAAA,IAAI,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE;AACnC,YAAA,OAAO,CAAG,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAoB,iBAAA,EAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;SAC7E;AAAM,aAAA,IAAI,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE;AACvC,YAAA,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,aAAa,CAAC;SAC7C;AACD,QAAA,OAAO,EAAE,CAAC;KACX;+GA9EU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,mHCfnC,ulEAsDA,EAAA,MAAA,EAAA,CAAA,uGAAA,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,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,cAAA,EAAA,SAAA,EAAA,YAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,KAAA,EAAA,KAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDvCa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,ulEAAA,EAAA,MAAA,EAAA,CAAA,uGAAA,CAAA,EAAA,CAAA;8BAKlB,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;MEHK,sBAAsB,CAAA;IAIjC,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAED,YAAY,GAAA;AACV,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAgB,CAAC;QACrE,IAAI,CAAC,OAAO,EAAE;;AAEZ,YAAA,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC;AAClE,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SACzD;;QAGD,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QAC5C,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;gBAC3B,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;aACvC;iBAAM;gBACL,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;aACtC;YACD,OAAO,CAAC,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACvD,SAAC,CAAC,CAAC;KACJ;IAEO,aAAa,GAAA;QACnB,MAAM,UAAU,GAAkB,EAAE,CAAC;AACrC,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;YAC3B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;SAChD;AACD,QAAA,OAAO,UAAU,CAAC;KACnB;IAEO,sBAAsB,GAAA;QAC5B,OAAO,CAAC,OAAwB,KAAmC;YACjE,OAAO,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;AAC1D,kBAAE,IAAI;AACN,kBAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;AAC/B,SAAC,CAAC;KACH;IAED,eAAe,GAAA;AACb,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACxD,QAAA,IAAI,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE;AAC1D,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,CAAG,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,cAAc,CAAC;SAC1E;AACD,QAAA,OAAO,EAAE,CAAC;KACX;+GAlDU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,mHCdnC,wsBAuBA,EAAA,MAAA,EAAA,CAAA,sFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDTa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,wsBAAA,EAAA,MAAA,EAAA,CAAA,sFAAA,CAAA,EAAA,CAAA;8BAKlB,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;MEDK,wBAAwB,CAAA;AALrC,IAAA,WAAA,GAAA;QAQE,IAAc,CAAA,cAAA,GAAW,CAAC,CAAC;AAmE5B,KAAA;IAjEC,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAED,YAAY,GAAA;AACV,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAgB,CAAC;QACvE,IAAI,OAAO,EAAE;AACX,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACxC,YAAA,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;;YAGlC,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;oBAC3B,OAAO,CAAC,OAAO,EAAE,CAAC;iBACnB;qBAAM;oBACL,OAAO,CAAC,MAAM,EAAE,CAAC;iBAClB;gBAED,OAAO,CAAC,sBAAsB,EAAE,CAAC;AACnC,aAAC,CAAC,CAAC;;YAEH,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACvC,gBAAA,IAAI,CAAC,cAAc,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACjD,aAAC,CAAC,CAAC;SACJ;KACF;IAEO,aAAa,GAAA;QACnB,MAAM,UAAU,GAAkB,EAAE,CAAC;AACrC,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AAC3B,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SACtC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,SAAS,EAAE;AAC1C,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;SACjE;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,SAAS,EAAE;AAC1C,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;SACjE;AACD,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE;AAClC,YAAA,UAAU,CAAC,IAAI,CACb,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CACjE,CAAC;SACH;AACD,QAAA,OAAO,UAAU,CAAC;KACnB;AAEO,IAAA,2BAA2B,CACjC,eAAoC,EAAA;QAEpC,OAAO,UAAU,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;KACxD;IAED,eAAe,GAAA;AACb,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACxD,QAAA,IAAI,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE;AACjC,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,CAAG,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,cAAc,CAAC;SAC1E;AAAM,aAAA,IAAI,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE;AACzC,YAAA,OAAO,CAAG,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAqB,kBAAA,EAAA,IAAI,CAAC,SAAS,CAAC,SAAS,kBAAkB,CAAC;SAC/F;AAAM,aAAA,IAAI,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE;AACzC,YAAA,OAAO,CAAG,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAoB,iBAAA,EAAA,IAAI,CAAC,SAAS,CAAC,SAAS,kBAAkB,CAAC;SAC9F;AAAM,aAAA,IAAI,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE;AACvC,YAAA,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,aAAa,CAAC;SAC7C;AACD,QAAA,OAAO,EAAE,CAAC;KACX;+GArEU,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,sHCfrC,wlEA6DA,EAAA,MAAA,EAAA,CAAA,iXAAA,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,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FD9Ca,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;+BACE,oBAAoB,EAAA,QAAA,EAAA,wlEAAA,EAAA,MAAA,EAAA,CAAA,iXAAA,CAAA,EAAA,CAAA;8BAKrB,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;MEAK,oBAAoB,CAAA;AALjC,IAAA,WAAA,GAAA;QASE,IAAc,CAAA,cAAA,GAAW,CAAC,CAAC;AAqF5B,KAAA;IAnFC,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;IAED,YAAY,GAAA;AACV,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAgB,CAAC;QACvE,IAAI,OAAO,EAAE;AACX,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACxC,YAAA,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YAElC,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;oBAC3B,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;iBACvC;qBAAM;oBACL,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACrC,oBAAA,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;wBAClC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC9B,qBAAC,CAAC,CAAC;iBACJ;gBACD,OAAO,CAAC,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACvD,aAAC,CAAC,CAAC;SACJ;KACF;IAED,oBAAoB,GAAA;AAClB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAgB,CAAC;QACvE,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,EAAE;AACrC,YAAA,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;SAChE;aAAM;AACL,YAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;SACzB;KACF;IAED,YAAY,GAAA;AACV,QAAA,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI;YACzB,KAAK,iBAAiB,CAAC,QAAQ;AAC7B,gBAAA,OAAO,UAAU,CAAC;YACpB,KAAK,iBAAiB,CAAC,MAAM;AAC3B,gBAAA,OAAO,QAAQ,CAAC;AAClB,YAAA;AACE,gBAAA,OAAO,MAAM,CAAC;SACjB;KACF;IAEO,aAAa,GAAA;QACnB,MAAM,UAAU,GAAkB,EAAE,CAAC;AACrC,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AAC3B,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SACtC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,SAAS,EAAE;AAC1C,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;SACjE;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,SAAS,EAAE;AAC1C,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;SACjE;AACD,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE;AAClC,YAAA,UAAU,CAAC,IAAI,CACb,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CACjE,CAAC;SACH;AACD,QAAA,OAAO,UAAU,CAAC;KACnB;AAEO,IAAA,2BAA2B,CACjC,eAAoC,EAAA;QAEpC,OAAO,UAAU,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;KACxD;IAED,eAAe,GAAA;AACb,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACxD,QAAA,IAAI,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE;AACjC,YAAA,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,cAAc,CAAC;SAC9C;AAAM,aAAA,IAAI,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE;AACzC,YAAA,OAAO,CAAG,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAqB,kBAAA,EAAA,IAAI,CAAC,SAAS,CAAC,SAAS,aAAa,CAAC;SAC1F;AAAM,aAAA,IAAI,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE;AACzC,YAAA,OAAO,CAAG,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAoB,iBAAA,EAAA,IAAI,CAAC,SAAS,CAAC,SAAS,aAAa,CAAC;SACzF;AAAM,aAAA,IAAI,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE;AACvC,YAAA,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,aAAa,CAAC;SAC7C;AACD,QAAA,OAAO,EAAE,CAAC;KACX;+GAxFU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,iHCjBjC,g3DAkEA,EAAA,MAAA,EAAA,CAAA,4ZAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,GAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,GAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDjDa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,g3DAAA,EAAA,MAAA,EAAA,CAAA,4ZAAA,CAAA,EAAA,CAAA;8BAKhB,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;MEVK,mBAAmB,CAAA;IAI9B,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAED,YAAY,GAAA;AACV,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAgB,CAAC;QAErE,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;AACxD,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SACzD;AAED,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACxC,QAAA,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;;QAGlC,UAAU,CAAC,MAAK;YACd,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,SAAS,EAAE;AACzC,gBAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;oBAC3B,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;iBACvC;qBAAM;oBACL,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;iBACtC;aACF;YAED,OAAO,CAAC,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACvD,SAAC,CAAC,CAAC;KACJ;IAEO,aAAa,GAAA;QACnB,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AAC3B,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SACtC;AACD,QAAA,OAAO,UAAU,CAAC;KACnB;IAED,eAAe,GAAA;AACb,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACxD,QAAA,IAAI,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE;AACjC,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,CAAG,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,cAAc,CAAC;SAC1E;AACD,QAAA,OAAO,EAAE,CAAC;KACX;+GA/CU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,+GCThC,unBAsBA,EAAA,MAAA,EAAA,CAAA,uGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,cAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDba,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACE,aAAa,EAAA,QAAA,EAAA,unBAAA,EAAA,MAAA,EAAA,CAAA,uGAAA,CAAA,EAAA,CAAA;8BAKd,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;MEOK,2BAA2B,CAAA;AALxC,IAAA,WAAA,GAAA;QAUE,IAAiB,CAAA,iBAAA,GAAG,iBAAiB,CAAC;AAiCvC,KAAA;AA/BC,IAAA,WAAW,CAAC,KAAgB,EAAA;AAC1B,QAAA,OAAO,KAAsB,CAAC;KAC/B;AAED,IAAA,aAAa,CAAC,KAAgB,EAAA;AAC5B,QAAA,OAAO,KAAwB,CAAC;KACjC;AAED,IAAA,eAAe,CAAC,KAAgB,EAAA;AAC9B,QAAA,OAAO,KAA0B,CAAC;KACnC;AAED,IAAA,WAAW,CAAC,KAAgB,EAAA;AAC1B,QAAA,OAAO,KAAsB,CAAC;KAC/B;AAED,IAAA,aAAa,CAAC,KAAgB,EAAA;AAC5B,QAAA,OAAO,KAA0B,CAAC;KACnC;AAED,IAAA,kBAAkB,CAAC,KAAgB,EAAA;AACjC,QAAA,OAAO,KAA6B,CAAC;KACtC;AAED,IAAA,eAAe,CAAC,KAAgB,EAAA;AAC9B,QAAA,OAAO,KAA0B,CAAC;KACnC;AAED,IAAA,aAAa,CAAC,KAAgB,EAAA;AAC5B,QAAA,OAAO,KAAwB,CAAC;KACjC;+GArCU,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,iIClBxC,uzDA2DA,EAAA,MAAA,EAAA,CAAA,uGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDzCa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,SAAS;+BACE,uBAAuB,EAAA,QAAA,EAAA,uzDAAA,EAAA,MAAA,EAAA,CAAA,uGAAA,CAAA,EAAA,CAAA;8BAKxB,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;;;METK,sBAAsB,CAAA;AAqBjC,IAAA,WAAA,CAAoB,EAAe,EAAA;QAAf,IAAE,CAAA,EAAA,GAAF,EAAE,CAAa;QApB1B,IAAS,CAAA,SAAA,GAAmB,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QACvD,IAAO,CAAA,OAAA,GAAiB,EAAE,CAAC;QAG3B,IAAU,CAAA,UAAA,GAAW,MAAM,CAAC;QAC5B,IAAQ,CAAA,QAAA,GAAgB,IAAI,CAAC;AAC5B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAA0B,CAAC;QAGlE,IAAiB,CAAA,iBAAA,GAAG,iBAAiB,CAAC;AAE9B,QAAA,IAAA,CAAA,aAAa,GAAG;AACtB,YAAA,EAAE,EAAE;AACF,gBAAA,QAAQ,EAAE,aAAa;AACxB,aAAA;AACD,YAAA,EAAE,EAAE;AACF,gBAAA,QAAQ,EAAE,YAAY;AACvB,aAAA;SACF,CAAC;QAGA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;KAC/B;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACrC;AAED,IAAA,cAAc,CAAC,KAAqB,EAAA;QAClC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,KAAI;AAC9B,YAAA,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;YAC/D,IAAI,CAAC,IAAI,CAAC,UAAU,CAClB,KAAK,CAAC,IAAI,EACV,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CACzC,CAAC;AACJ,SAAC,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,KAAI;AACjC,YAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AAChC,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,eAAe,CAAC,KAAgB,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE;YACnD,QACE,KAAK,CAAC,SAAS;AACf,gBAAA,CAAA,EAAG,KAAK,CAAC,KAAK,CAAI,CAAA,EAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAA,CAAE,EAC9D;SACH;AACD,QAAA,OAAO,EAAE,CAAC;KACX;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC7B,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACnB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACvC;KACF;IAED,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;KACnB;+GA9DU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,gPCZnC,qtCA0CA,EAAA,MAAA,EAAA,CAAA,u8BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAd,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,EAAAA,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,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAc,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FD9Ba,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,qtCAAA,EAAA,MAAA,EAAA,CAAA,u8BAAA,CAAA,EAAA,CAAA;kFAKlB,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACI,UAAU,EAAA,CAAA;sBAAnB,MAAM;;;MERI,qBAAqB,CAAA;+GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAArB,qBAAqB,EAAA,YAAA,EAAA,CAJjB,wBAAwB,CAC7B,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,mBAAmB,EAAE,cAAc,CAAA,EAAA,OAAA,EAAA,CACjD,wBAAwB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEvB,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,qBAAqB,EAHtB,OAAA,EAAA,CAAA,YAAY,EAAE,mBAAmB,EAAE,cAAc,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGhD,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,wBAAwB,CAAC;AACxC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,cAAc,CAAC;oBAC5D,OAAO,EAAE,CAAC,wBAAwB,CAAC;AACpC,iBAAA,CAAA;;;MCYY,mBAAmB,CAAA;+GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAnB,mBAAmB,EAAA,YAAA,EAAA,CAZf,sBAAsB,CAAA,EAAA,OAAA,EAAA,CAEnC,YAAY;YACZ,mBAAmB;YACnB,WAAW;YACX,gBAAgB;YAChB,qBAAqB;YACrB,eAAe;AACf,YAAA,iBAAiB,aAET,sBAAsB,CAAA,EAAA,CAAA,CAAA,EAAA;AAErB,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,mBAAmB,YAV5B,YAAY;YACZ,mBAAmB;YACnB,WAAW;YACX,gBAAgB;YAChB,qBAAqB;YACrB,eAAe;YACf,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIR,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAb/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,sBAAsB,CAAC;AACtC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,WAAW;wBACX,gBAAgB;wBAChB,qBAAqB;wBACrB,eAAe;wBACf,iBAAiB;AAClB,qBAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;AAClC,iBAAA,CAAA;;;MCVY,mBAAmB,CAAA;+GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAnB,mBAAmB,EAAA,YAAA,EAAA,CAJf,sBAAsB,CAC3B,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,CAAA,EAAA,OAAA,EAAA,CACpD,sBAAsB,CAAA,EAAA,CAAA,CAAA,EAAA;AAErB,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,mBAAmB,EAHpB,OAAA,EAAA,CAAA,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGnD,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,sBAAsB,CAAC;AACtC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,CAAC;oBAC/D,OAAO,EAAE,CAAC,sBAAsB,CAAC;AAClC,iBAAA,CAAA;;;MCSY,iBAAiB,CAAA;+GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAjB,iBAAiB,EAAA,YAAA,EAAA,CAVb,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAEjC,YAAY;YACZ,mBAAmB;YACnB,eAAe;YACf,eAAe;AACf,YAAA,eAAe,aAEP,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEnB,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,iBAAiB,YAR1B,YAAY;YACZ,mBAAmB;YACnB,eAAe;YACf,eAAe;YACf,eAAe,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIN,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAX7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,oBAAoB,CAAC;AACpC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,eAAe;wBACf,eAAe;wBACf,eAAe;AAChB,qBAAA;oBACD,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAChC,iBAAA,CAAA;;;MCCY,qBAAqB,CAAA;+GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAArB,qBAAqB,EAAA,YAAA,EAAA,CAVjB,wBAAwB,CAAA,EAAA,OAAA,EAAA,CAErC,YAAY;YACZ,mBAAmB;YACnB,mBAAmB;YACnB,gBAAgB;AAChB,YAAA,qBAAqB,aAEb,wBAAwB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEvB,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,qBAAqB,YAR9B,YAAY;YACZ,mBAAmB;YACnB,mBAAmB;YACnB,gBAAgB;YAChB,qBAAqB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIZ,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAXjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,wBAAwB,CAAC;AACxC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,mBAAmB;wBACnB,gBAAgB;wBAChB,qBAAqB;AACtB,qBAAA;oBACD,OAAO,EAAE,CAAC,wBAAwB,CAAC;AACpC,iBAAA,CAAA;;;MCPY,iBAAiB,CAAA;+GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAjB,iBAAiB,EAAA,YAAA,EAAA,CAJb,oBAAoB,CACzB,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,mBAAmB,EAAE,cAAc,CAAA,EAAA,OAAA,EAAA,CACjD,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEnB,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,iBAAiB,EAHlB,OAAA,EAAA,CAAA,YAAY,EAAE,mBAAmB,EAAE,cAAc,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGhD,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,oBAAoB,CAAC;AACpC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,cAAc,CAAC;oBAC5D,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAChC,iBAAA,CAAA;;;MCCY,gBAAgB,CAAA;+GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAhB,gBAAgB,EAAA,YAAA,EAAA,CAJZ,mBAAmB,CACxB,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,mBAAmB,EAAE,cAAc,CAAA,EAAA,OAAA,EAAA,CACjD,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA;AAElB,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,gBAAgB,EAHjB,OAAA,EAAA,CAAA,YAAY,EAAE,mBAAmB,EAAE,cAAc,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGhD,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,mBAAmB,CAAC;AACnC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,cAAc,CAAC;oBAC5D,OAAO,EAAE,CAAC,mBAAmB,CAAC;AAC/B,iBAAA,CAAA;;;MCqBY,wBAAwB,CAAA;+GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAxB,wBAAwB,EAAA,YAAA,EAAA,CAjBpB,2BAA2B,CAAA,EAAA,OAAA,EAAA,CAExC,YAAY;YACZ,mBAAmB;;YAGnB,qBAAqB;YACrB,iBAAiB;YACjB,mBAAmB;YACnB,mBAAmB;YACnB,qBAAqB;YACrB,iBAAiB;YACjB,gBAAgB;AAChB,YAAA,mBAAmB,aAEX,2BAA2B,CAAA,EAAA,CAAA,CAAA,EAAA;AAE1B,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,wBAAwB,YAfjC,YAAY;YACZ,mBAAmB;;YAGnB,qBAAqB;YACrB,iBAAiB;YACjB,mBAAmB;YACnB,mBAAmB;YACnB,qBAAqB;YACrB,iBAAiB;YACjB,gBAAgB;YAChB,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIV,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAlBpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,2BAA2B,CAAC;AAC3C,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;;wBAGnB,qBAAqB;wBACrB,iBAAiB;wBACjB,mBAAmB;wBACnB,mBAAmB;wBACnB,qBAAqB;wBACrB,iBAAiB;wBACjB,gBAAgB;wBAChB,mBAAmB;AACpB,qBAAA;oBACD,OAAO,EAAE,CAAC,2BAA2B,CAAC;AACvC,iBAAA,CAAA;;;MCbY,mBAAmB,CAAA;+GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAnB,mBAAmB,EAAA,YAAA,EAAA,CATf,sBAAsB,CAAA,EAAA,OAAA,EAAA,CAEnC,YAAY;YACZ,mBAAmB;YACnB,YAAY;AACZ,YAAA,wBAAwB,aAEhB,sBAAsB,CAAA,EAAA,CAAA,CAAA,EAAA;AAErB,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,mBAAmB,YAP5B,YAAY;YACZ,mBAAmB;YACnB,YAAY;YACZ,wBAAwB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIf,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAV/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,sBAAsB,CAAC;AACtC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,YAAY;wBACZ,wBAAwB;AACzB,qBAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;AAClC,iBAAA,CAAA;;;MCFY,qBAAqB,CAAA;aACR,IAAkB,CAAA,kBAAA,GAAG,SAAH,CAAa,EAAA;aAC/B,IAAiB,CAAA,iBAAA,GAAG,MAAH,CAAU,EAAA;aAC3B,IAAmB,CAAA,mBAAA,GAAG,SAAH,CAAa,EAAA;aAChC,IAAkB,CAAA,kBAAA,GAAG,MAAH,CAAU,EAAA;aAC5B,IAAmB,CAAA,mBAAA,GAAG,SAAH,CAAa,EAAA;aAChC,IAAkB,CAAA,kBAAA,GAAG,MAAH,CAAU,EAAA;aAC5B,IAAmB,CAAA,mBAAA,GAAG,SAAH,CAAa,EAAA;aAChC,IAAkB,CAAA,kBAAA,GAAG,MAAH,CAAU,EAAA;aAC5B,IAA6B,CAAA,6BAAA,GAAG,MAAH,CAAU,EAAA;aACvC,IAA4B,CAAA,4BAAA,GAAG,MAAH,CAAU,EAAA;aACtC,IAAwB,CAAA,wBAAA,GAAG,MAAH,CAAU,EAAA;IAI1D,YAAY,GAAA;QACV,OAAO,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC;KAC/C;IAED,aAAa,GAAA;QACX,OAAO,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC;KAChD;IAED,aAAa,GAAA;QACX,OAAO,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC;KAChD;AAED,IAAA,aAAa,CAAC,KAAwC,EAAA;AACpD,QAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;KAClC;IAED,sBAAsB,GAAA;QACpB,OAAO,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,KAAK,QAAQ,CAAC;KACzD;IAED,WAAW,GAAA;QACT,OAAO,IAAI,CAAC,YAAY,EAAE;AACxB,cAAG,IAAI,CAAC,QAAQ,CAAC,IAAkB,CAAC,IAAI;AACxC,cAAG,IAAI,CAAC,QAAQ,CAAC,IAAe,CAAC;KACpC;IAED,YAAY,GAAA;QACV,OAAO,IAAI,CAAC,aAAa,EAAE;AACzB,cAAG,IAAI,CAAC,QAAQ,CAAC,KAAmB,CAAC,IAAI;AACzC,cAAG,IAAI,CAAC,QAAQ,CAAC,KAAgB,CAAC;KACrC;IAED,YAAY,GAAA;QACV,OAAO,IAAI,CAAC,aAAa,EAAE;AACzB,cAAG,IAAI,CAAC,QAAQ,CAAC,KAAsB,CAAC,IAAI;AAC5C,cAAG,IAAI,CAAC,QAAQ,CAAC,KAAgB,CAAC;KACrC;IAED,YAAY,GAAA;QACV,MAAM,KAAK,GAAI,IAAI,CAAC,QAAQ,CAAC,KAAsB,EAAE,KAAK,CAAC;AAC3D,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;cAC3B,KAAsB,CAAC,IAAI;cAC3B,KAAgB,CAAC;KACvB;IAED,qBAAqB,GAAA;QACnB,OAAO,IAAI,CAAC,sBAAsB,EAAE;AAClC,cAAG,IAAI,CAAC,QAAQ,CAAC,cAA4B,CAAC,IAAI;AAClD,cAAG,IAAI,CAAC,QAAQ,CAAC,cAAyB,CAAC;KAC9C;IAED,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACvB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAiB,CAAC;YAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC;;AAGvC,YAAA,MAAM,YAAY,GAAG,KAAK,KAAK,UAAU,GAAG,KAAK,GAAG,KAAK,CAAC;YAE1D,OAAO;AACL,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,qBAAqB,CAAC,kBAAkB;AAC7D,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,qBAAqB,CAAC,iBAAiB;AAClE,gBAAA,kBAAkB,EAAE,IAAI,CAAC,eAAe,IAAI,aAAa;AACzD,gBAAA,eAAe,EAAE,YAAY;AAC7B,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE,cAAc;aACxB,CAAC;SACH;AACD,QAAA,OAAO,EAAE,CAAC;KACX;IAED,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAkB,CAAC;YAC/C,OAAO;AACL,gBAAA,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,qBAAqB,CAAC,mBAAmB;AAC/D,gBAAA,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,qBAAqB,CAAC,kBAAkB;AACpE,gBAAA,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,QAAQ;aACzC,CAAC;SACH;AACD,QAAA,OAAO,EAAE,CAAC;KACX;IAED,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAqB,CAAC;YAClD,OAAO;AACL,gBAAA,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,qBAAqB,CAAC,mBAAmB;AAC/D,gBAAA,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,qBAAqB,CAAC,kBAAkB;AACpE,gBAAA,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,MAAM;aACvC,CAAC;SACH;aAAM;YACL,OAAO;gBACL,KAAK,EAAE,qBAAqB,CAAC,mBAAmB;gBAChD,QAAQ,EAAE,qBAAqB,CAAC,kBAAkB;AAClD,gBAAA,UAAU,EAAE,MAAM;aACnB,CAAC;SACH;KACF;AAED,IAAA,cAAc,CAAC,QAA0B,EAAA;QACvC,MAAM,KAAK,GAAI,IAAI,CAAC,QAAQ,CAAC,KAAsB,EAAE,KAAK,CAAC;AAC3D,QAAA,IACE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AACxB,YAAA,KAAsB,CAAC,QAAQ,KAAK,QAAQ,EAC7C;YACA,OAAO;gBACL,KAAK,EACF,KAAsB,CAAC,KAAK;AAC7B,oBAAA,qBAAqB,CAAC,mBAAmB;gBAC3C,QAAQ,EACL,KAAsB,CAAC,QAAQ;AAChC,oBAAA,qBAAqB,CAAC,kBAAkB;AAC1C,gBAAA,UAAU,EAAG,KAAsB,CAAC,UAAU,IAAI,QAAQ;aAC3D,CAAC;SACH;aAAM;YACL,OAAO;gBACL,KAAK,EAAE,qBAAqB,CAAC,mBAAmB;gBAChD,QAAQ,EAAE,qBAAqB,CAAC,kBAAkB;AAClD,gBAAA,UAAU,EAAE,QAAQ;aACrB,CAAC;SACH;KACF;IAED,uBAAuB,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE,EAAE;AACjC,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,cAA2B,CAAC;YACjE,OAAO;gBACL,KAAK,EACH,cAAc,CAAC,KAAK;AACpB,oBAAA,qBAAqB,CAAC,6BAA6B;gBACrD,QAAQ,EACN,cAAc,CAAC,QAAQ;AACvB,oBAAA,qBAAqB,CAAC,4BAA4B;AACpD,gBAAA,UAAU,EAAE,cAAc,CAAC,UAAU,IAAI,QAAQ;aAClD,CAAC;SACH;aAAM;YACL,OAAO;gBACL,KAAK,EAAE,qBAAqB,CAAC,6BAA6B;gBAC1D,QAAQ,EAAE,qBAAqB,CAAC,4BAA4B;AAC5D,gBAAA,UAAU,EAAE,QAAQ;aACrB,CAAC;SACH;KACF;IAED,aAAa,GAAA;QACX,MAAM,KAAK,GAAI,IAAI,CAAC,QAAQ,CAAC,KAAsB,EAAE,KAAK,CAAC;AAC3D,QAAA,QACE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAK,KAAsB,CAAC,QAAQ,KAAK,MAAM,EACxE;KACH;IAED,cAAc,GAAA;QACZ,MAAM,KAAK,GAAI,IAAI,CAAC,QAAQ,CAAC,KAAsB,EAAE,KAAK,CAAC;AAC3D,QAAA,QACE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAK,KAAsB,CAAC,QAAQ,KAAK,OAAO,EACzE;KACH;IAED,2BAA2B,GAAA;QACzB,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,IAAI,MAAM;YACnD,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,IAAI,kBAAkB;YAC/D,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,IAAI,MAAM;SAChD,CAAC;KACH;IAED,kBAAkB,GAAA;QAChB,OAAO;AACL,YAAA,kBAAkB,EAChB,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,eAAe;AACzC,gBAAA,qBAAqB,CAAC,wBAAwB;YAChD,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,IAAI,MAAM;YACnD,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,IAAI,kBAAkB;YAC/D,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,IAAI,MAAM;SAChD,CAAC;KACH;+GA/LU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,wFCdlC,ilEA0EA,EAAA,MAAA,EAAA,CAAA,wtBAAA,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,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FD5Da,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,ilEAAA,EAAA,MAAA,EAAA,CAAA,wtBAAA,CAAA,EAAA,CAAA;8BAiBjB,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;;MElBK,kBAAkB,CAAA;+GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,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,kBAAkB,EAJd,YAAA,EAAA,CAAA,qBAAqB,CAC1B,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,qBAAqB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEpB,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,kBAAkB,YAHnB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGX,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,qBAAqB,CAAC;oBACrC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,qBAAqB,CAAC;AACjC,iBAAA,CAAA;;;MCAY,0BAA0B,CAAA;AALvC,IAAA,WAAA,GAAA;QAMW,IAAS,CAAA,SAAA,GAAqB,EAAE,CAAC;AAC3C,KAAA;+GAFY,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,gGCRvC,qJAMA,EAAA,MAAA,EAAA,CAAA,kHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,EAAAC,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDEa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;+BACE,sBAAsB,EAAA,QAAA,EAAA,qJAAA,EAAA,MAAA,EAAA,CAAA,kHAAA,CAAA,EAAA,CAAA;8BAKvB,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;MECK,uBAAuB,CAAA;+GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,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,uBAAuB,iBAJnB,0BAA0B,CAAA,EAAA,OAAA,EAAA,CAC/B,YAAY,EAAE,kBAAkB,aAChC,0BAA0B,CAAA,EAAA,CAAA,CAAA,EAAA;gHAEzB,uBAAuB,EAAA,OAAA,EAAA,CAHxB,YAAY,EAAE,kBAAkB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAG/B,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,0BAA0B,CAAC;AAC1C,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,kBAAkB,CAAC;oBAC3C,OAAO,EAAE,CAAC,0BAA0B,CAAC;AACtC,iBAAA,CAAA;;;MCcY,gBAAgB,CAAA;AAO3B,IAAA,WAAA,GAAA;QACE,KAAK,CAAC,QAAQ,CAAC,GAAG,aAAa,EAAE,eAAe,CAAC,CAAC;KACnD;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;IAED,WAAW,GAAA;QACT,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAED,eAAe,GAAA;AACb,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;;QAG5C,IAAI,CAAC,YAAY,EAAE,CAAC;AAEpB,QAAA,MAAM,MAAM,GAAuB;AACjC,YAAA,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAiB;AACxC,YAAA,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAiB;AACxC,YAAA,OAAO,EAAE;AACP,gBAAA,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO;AAC3B,gBAAA,OAAO,EAAE;AACP,oBAAA,UAAU,EAAE;AACV,wBAAA,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAI;AAC5B,4BAAA,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAgB,CAAC;AAC7D,4BAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;AACtD,4BAAA,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,IAAI,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC5D,4BAAA,OAAO,UAAU,CAAC;yBACnB;AACD,wBAAA,KAAK,EAAE,MAAM;AACb,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE,MAAM;AACf,yBAAA;AACF,qBAAA;AACD,oBAAA,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO;AACrC,iBAAA;AACF,aAAA;SACF,CAAC;;QAGF,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACxC;IAED,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAExC,YAAA,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;gBAC5B,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;aAC/C;AAED,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;SACrB;KACF;IAEO,YAAY,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,KAAK,GAAG,SAAgB,CAAC;SAC/B;KACF;+GArEU,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,gNCvB7B,2GAGA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDoBa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;+BACE,UAAU,EAAA,QAAA,EAAA,2GAAA,EAAA,CAAA;wDAKX,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAEN,SAAS,EAAA,CAAA;sBADR,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;MEhB/B,aAAa,CAAA;+GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAb,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,aAAa,EAJT,YAAA,EAAA,CAAA,gBAAgB,CACrB,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,gBAAgB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEf,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,aAAa,YAHd,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGX,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,gBAAgB,CAAC;oBAChC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,gBAAgB,CAAC;AAC5B,iBAAA,CAAA;;;MCAY,eAAe,CAAA;AAL5B,IAAA,WAAA,GAAA;AAMW,QAAA,IAAA,CAAA,MAAM,GAAe;AAC5B,YAAA,IAAI,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE;AACnE,YAAA,aAAa,EAAE,OAAO;SACvB,CAAC;QAUF,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;AA2EhB,KAAA;aAnFyB,IAAkB,CAAA,kBAAA,GAAG,MAAH,CAAU,EAAA;aAC5B,IAAsB,CAAA,sBAAA,GAAG,MAAH,CAAU,EAAA;aAChC,IAAkB,CAAA,kBAAA,GAAG,MAAH,CAAU,EAAA;aAC5B,IAAsB,CAAA,sBAAA,GAAG,MAAH,CAAU,EAAA;aAChC,IAAiB,CAAA,iBAAA,GAAG,kBAAH,CAAsB,EAAA;aAEhD,IAAgB,CAAA,gBAAA,GAA2B,IAA3B,CAAgC,EAAA;IAI/D,UAAU,GAAA;QACR,IACE,eAAe,CAAC,gBAAgB;AAChC,YAAA,eAAe,CAAC,gBAAgB,KAAK,IAAI,EACzC;AACA,YAAA,eAAe,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC;SAC9C;AAED,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AAE3B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,eAAe,CAAC,gBAAgB,GAAG,IAAI,CAAC;SACzC;aAAM;AACL,YAAA,eAAe,CAAC,gBAAgB,GAAG,IAAI,CAAC;SACzC;KACF;IAED,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,eAAe,CAAC,gBAAgB,KAAK,IAAI,EAAE;AAC7C,YAAA,eAAe,CAAC,gBAAgB,GAAG,IAAI,CAAC;SACzC;KACF;AAED,IAAA,oBAAoB,CAAC,IAAc,EAAA;;QAEjC,OAAO,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;KAC1E;AAED,IAAA,qBAAqB,CAAC,IAAc,EAAA;AAClC,QAAA,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;YACjC,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,eAAe,CAAC,kBAAkB;gBAC7D,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,eAAe,CAAC,sBAAsB;aACxE,CAAC;SACH;QACD,OAAO;YACL,KAAK,EAAE,eAAe,CAAC,kBAAkB;YACzC,QAAQ,EAAE,eAAe,CAAC,sBAAsB;SACjD,CAAC;KACH;IAED,YAAY,GAAA;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,eAAe,CAAC,iBAAiB,CAAC;KACpE;IAED,aAAa,GAAA;QACX,OAAO;AACL,YAAA,KAAK,EACH,IAAI,CAAC,MAAM,CAAC,KAAK;AACjB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK;AACvB,gBAAA,eAAe,CAAC,kBAAkB;AACpC,YAAA,QAAQ,EACN,IAAI,CAAC,MAAM,CAAC,QAAQ;AACpB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ;AAC1B,gBAAA,eAAe,CAAC,sBAAsB;SACzC,CAAC;KACH;AAED,IAAA,aAAa,CAAC,IAAc,EAAA;QAC1B,OAAO;AACL,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,eAAe,CAAC,kBAAkB;AACvD,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,eAAe,CAAC,sBAAsB;SAClE,CAAC;KACH;AAGD,IAAA,eAAe,CAAC,KAAiB,EAAA;QAC/B,MAAM,aAAa,GAAI,KAAK,CAAC,MAAsB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACxE,IAAI,CAAC,aAAa,EAAE;YAClB,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;KACF;+GAxFU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,mJCR5B,2sBA4BA,EAAA,MAAA,EAAA,CAAA,o1BAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDpBa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;+BACE,SAAS,EAAA,QAAA,EAAA,2sBAAA,EAAA,MAAA,EAAA,CAAA,o1BAAA,CAAA,EAAA,CAAA;8BAKV,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAkFN,eAAe,EAAA,CAAA;sBADd,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,CAAA;;;ME3E/B,eAAe,CAAA;;aAIF,IAAmB,CAAA,mBAAA,GAAG,MAAH,CAAU,EAAA;aAC7B,IAAuB,CAAA,uBAAA,GAAG,OAAH,CAAW,EAAA;aAClC,IAAkB,CAAA,kBAAA,GAAG,MAAH,CAAU,EAAA;aAC5B,IAAsB,CAAA,sBAAA,GAAG,KAAH,CAAS,EAAA;aAC/B,IAAqB,CAAA,qBAAA,GAAG,MAAH,CAAU,EAAA;aAC/B,IAAwB,CAAA,wBAAA,GAAG,MAAH,CAAU,EAAA;aAClC,IAAa,CAAA,aAAA,GAAG,MAAH,CAAU,EAAA;aACvB,IAAc,CAAA,cAAA,GAAG,MAAH,CAAU,EAAA;aACxB,IAAsB,CAAA,sBAAA,GAAG,MAAH,CAAU,EAAA;aAChC,IAAqB,CAAA,qBAAA,GAAG,OAAH,CAAW,EAAA;aAChC,IAAoB,CAAA,oBAAA,GAAG,MAAH,CAAU,EAAA;aAC9B,IAAoB,CAAA,oBAAA,GAAG,KAAH,CAAS,EAAA;aAC7B,IAAoB,CAAA,oBAAA,GAAG,KAAH,CAAS,EAAA;aAC7B,IAAe,CAAA,eAAA,GAAG,MAAH,CAAU,EAAA;aACzB,IAAc,CAAA,cAAA,GAAG,QAAH,CAAY,EAAA;IAElD,eAAe,GAAA;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;IAEO,aAAa,GAAA;QACnB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE;AACjC,YAAA,OAAO,CAAC,GAAG,CACT,iCAAiC,IAAI,CAAC,MAAM,CAAC,UAAU,kBAAkB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAA,CAAE,CACxG,CAAC;SACH;KACF;IAED,aAAa,GAAA;QACX,OAAO,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC;KAC9C;IAED,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC;KACtE;IAED,YAAY,GAAA;QACV,OAAO,IAAI,CAAC,aAAa,EAAE;AACzB,cAAG,IAAI,CAAC,MAAM,CAAC,KAAoB,CAAC,IAAI;AACxC,cAAG,IAAI,CAAC,MAAM,CAAC,KAAgB,CAAC;KACnC;IAED,cAAc,GAAA;AACZ,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAA+B,CAAC;AAC1D,QAAA,MAAM,QAAQ,GAA8B;AAC1C,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,KAAK,EAAE,UAAU;SAClB,CAAC;QACF,OAAO;AACL,YAAA,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,eAAe,CAAC,mBAAmB;AAC1D,YAAA,QAAQ,EAAE,KAAK,EAAE,QAAQ,IAAI,eAAe,CAAC,uBAAuB;YACpE,cAAc,EACZ,QAAQ,CAAC,KAAK,EAAE,QAAQ,IAAI,eAAe,CAAC,sBAAsB,CAAC;SACtE,CAAC;KACH;AAED,IAAA,WAAA,CAAoB,EAAqB,EAAA;QAArB,IAAE,CAAA,EAAA,GAAF,EAAE,CAAmB;QA5DhC,IAAM,CAAA,MAAA,GAAe,EAAE,CAAC;KA4DY;IAE7C,YAAY,GAAA;;QAEV,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;KACzB;IAED,YAAY,GAAA;QACV,MAAM,IAAI,GAAI,IAAI,CAAC,MAAM,CAAC,KAAoB,EAAE,IAAI,CAAC;AACrD,QAAA,OAAO,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,GAAI,IAAkB,EAAE,IAAI,IAAI,IAAI,CAAC;KAC5E;IAED,aAAa,GAAA;QACX,MAAM,IAAI,GAAI,IAAI,CAAC,MAAM,CAAC,KAAoB,EAAE,IAAI,CAAC;AACrD,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC5B,OAAO;AACL,gBAAA,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,eAAe,CAAC,kBAAkB;AACxD,gBAAA,QAAQ,EAAE,IAAI,EAAE,QAAQ,IAAI,eAAe,CAAC,sBAAsB;aACnE,CAAC;SACH;QACD,OAAO;YACL,KAAK,EAAE,eAAe,CAAC,kBAAkB;YACzC,QAAQ,EAAE,eAAe,CAAC,sBAAsB;SACjD,CAAC;KACH;IAED,eAAe,GAAA;QACb,MAAM,IAAI,GAAI,IAAI,CAAC,MAAM,CAAC,KAAoB,EAAE,IAAI,CAAC;QACrD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,EAAE,QAAQ,EAAE;YAC9C,OAAO,IAAI,CAAC,QAAQ,CAAC;SACtB;QACD,OAAO,eAAe,CAAC,qBAAqB,CAAC;KAC9C;IAED,eAAe,GAAA;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,eAAe,CAAC,qBAAqB,CAAC;KAC1E;IAED,aAAa,GAAA;;AAEX,QAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB;cAC7D,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,GAAG,GAAG;cACpD,CAAC,CAAC;;QAGN,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,sBAAsB;AACrE,cAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,GAAG,GAAG;cAC5D,CAAC,CAAC;;AAGN,QAAA,MAAM,eAAe,GACnB,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC,sBAAsB,KAAK,GAAG;AACvE,cAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC;cACnE,aAAa,CAAC;;QAGpB,MAAM,eAAe,GACnB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ;AAC7B,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,KAAK,GAAG;AAChD,cAAE,CACE,oCAAA,EAAA,CAAC,GAAG,mBACN,0BAA0B,CAAC,GAAG,mBAAmB,CAAA,SAAA,EAC/C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QACtB,CAAI,EAAA,CAAA;cACJ,EAAE,CAAC;QAET,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,IAAI,MAAM,CAAC;QAC1D,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,MAAM,CAAC;;AAG5D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC;AACtE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC;AACtE,QAAA,MAAM,gBAAgB,GAAG,CAAA,EAAG,OAAO,CAAI,CAAA,EAAA,OAAO,EAAE,CAAC;;QAGjD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,IAAI,CAAC,CAAC;AAC1D,QAAA,MAAM,cAAc,GAClB,WAAW,GAAG,CAAC;AACb,cAAE,CAAA,EAAG,YAAY,CAAA,CAAA,EAAI,aAAa,CAAE,CAAA;AACpC,cAAE,CAAG,EAAA,YAAY,CAAI,CAAA,EAAA,aAAa,EAAE,CAAC;;QAGzC,MAAM,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,IAAI,QAAQ,CAAC;AAErE,QAAA,MAAM,cAAc,GAClB,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,QAAQ,GAAG,QAAQ,GAAG,YAAY,CAAC;AAElE,QAAA,MAAM,UAAU,GACd,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;QAE/D,OAAO;AACL,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,aAAa,EAAE,QAAQ;AACvB,YAAA,cAAc;AACd,YAAA,UAAU;AACV,YAAA,eAAe;AACf,YAAA,eAAe;YACf,cAAc;YACd,kBAAkB;YAClB,gBAAgB;YAChB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,eAAe,CAAC,aAAa;YACzD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,eAAe,CAAC,cAAc;AAC5D,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;AAC1B,kBAAE,MAAM;kBACN,SACE,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,eAAe,CAAC,oBAC7C,CAAI,CAAA,EAAA,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,eAAe,CAAC,oBAAoB,CAAE,CAAA;YACzE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,eAAe,CAAC,eAAe;YAC/D,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,eAAe,CAAC,cAAc;AAC5D,YAAA,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,KAAK;AAC/C,YAAA,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,8BAA8B;AAClE,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM;SACvE,CAAC;KACH;;IAGO,SAAS,CAAC,GAAW,EAAE,KAAa,EAAA;QAC1C,MAAM,cAAc,GAAG,kCAAkC,CAAC;AAC1D,QAAA,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG,2CAA2C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrE,QAAA,OAAO,MAAM;AACX,cAAE,CAAA,KAAA,EAAQ,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAK,EAAA,EAAA,QAAQ,CAC1C,MAAM,CAAC,CAAC,CAAC,EACT,EAAE,CACH,CAAA,EAAA,EAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA,EAAA,EAAK,KAAK,CAAG,CAAA,CAAA;cAC1C,GAAG,CAAC;KACT;IAED,aAAa,GAAA;AACX,QAAA,MAAM,cAAc,GAClB,IAAI,CAAC,MAAM,CAAC,gBAAgB,KAAK,QAAQ,GAAG,QAAQ,GAAG,YAAY,CAAC;AACtE,QAAA,MAAM,UAAU,GACd,IAAI,CAAC,MAAM,CAAC,gBAAgB,KAAK,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;QAEnE,OAAO;AACL,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,aAAa,EAAE,QAAQ;YACvB,cAAc;YACd,UAAU;AACV,YAAA,QAAQ,EAAE,CAAC;AACX,YAAA,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,MAAM;AACf,YAAA,SAAS,EAAE,YAAY;AACvB,YAAA,SAAS,EAAE,IAAI,CAAC,sBAAsB,EAAE,GAAG,MAAM,GAAG,QAAQ;AAC5D,YAAA,SAAS,EAAE,IAAI,CAAC,oBAAoB,EAAE,GAAG,MAAM,GAAG,QAAQ;SAC3D,CAAC;KACH;IAED,eAAe,GAAA;AACb,QAAA,MAAM,cAAc,GAClB,IAAI,CAAC,MAAM,CAAC,kBAAkB,KAAK,QAAQ,GAAG,QAAQ,GAAG,YAAY,CAAC;AACxE,QAAA,MAAM,UAAU,GACd,IAAI,CAAC,MAAM,CAAC,kBAAkB,KAAK,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;QAErE,OAAO;AACL,YAAA,OAAO,EAAE,MAAM;YACf,cAAc;YACd,UAAU;YACV,YAAY,EAAE,MAAM;AACpB,YAAA,QAAQ,EAAE,UAAU;SACrB,CAAC;KACH;IAED,sBAAsB,GAAA;AACpB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;KAC3C;IAED,oBAAoB,GAAA;AAClB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;KACzC;IAED,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,QAAQ,GAAG,cAAc,GAAG,EAAE,CAAC;KACpE;IAED,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,KAAK,QAAQ,GAAG,cAAc,GAAG,EAAE,CAAC;KACxE;IAED,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,KAAK,QAAQ,GAAG,cAAc,GAAG,EAAE,CAAC;KAC1E;+GApPU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,6ECf5B,2mCAyCA,EAAA,MAAA,EAAA,CAAA,szCAAA,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,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FD1Ba,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;+BACE,SAAS,EAAA,QAAA,EAAA,2mCAAA,EAAA,MAAA,EAAA,CAAA,szCAAA,CAAA,EAAA,CAAA;sFAKV,MAAM,EAAA,CAAA;sBAAd,KAAK;;;MEPK,YAAY,CAAA;+GAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAZ,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,YAAY,EAJR,YAAA,EAAA,CAAA,eAAe,CACpB,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,eAAe,CAAA,EAAA,CAAA,CAAA,EAAA;AAEd,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,YAAY,YAHb,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGX,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,eAAe,CAAC;oBAC/B,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,eAAe,CAAC;AAC3B,iBAAA,CAAA;;;MCEY,YAAY,CAAA;+GAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAZ,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,YAAY,iBAJR,eAAe,CAAA,EAAA,OAAA,EAAA,CACpB,YAAY,EAAE,YAAY,aAC1B,eAAe,CAAA,EAAA,CAAA,CAAA,EAAA;gHAEd,YAAY,EAAA,OAAA,EAAA,CAHb,YAAY,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGzB,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,eAAe,CAAC;AAC/B,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;oBACrC,OAAO,EAAE,CAAC,eAAe,CAAC;AAC3B,iBAAA,CAAA;;;MCDY,oBAAoB,CAAA;AALjC,IAAA,WAAA,GAAA;AAMW,QAAA,IAAA,CAAA,MAAM,GAAe;AAC5B,YAAA,IAAI,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE;AACnE,YAAA,aAAa,EAAE,OAAO;SACvB,CAAC;AAEF,QAAA,IAAA,CAAA,cAAc,GAAe;AAC3B,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,MAAM,EAAE,GAAG;AACX,YAAA,OAAO,EAAE,KAAK;SACf,CAAC;QAUF,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;AA8EhB,KAAA;aAtFyB,IAAkB,CAAA,kBAAA,GAAG,MAAH,CAAU,EAAA;aAC5B,IAAsB,CAAA,sBAAA,GAAG,MAAH,CAAU,EAAA;aAChC,IAAkB,CAAA,kBAAA,GAAG,MAAH,CAAU,EAAA;aAC5B,IAAsB,CAAA,sBAAA,GAAG,MAAH,CAAU,EAAA;aAChC,IAAiB,CAAA,iBAAA,GAAG,kBAAH,CAAsB,EAAA;aAEhD,IAAgB,CAAA,gBAAA,GAAgC,IAAhC,CAAqC,EAAA;IAIpE,UAAU,GAAA;QACR,IACE,oBAAoB,CAAC,gBAAgB;AACrC,YAAA,oBAAoB,CAAC,gBAAgB,KAAK,IAAI,EAC9C;AACA,YAAA,oBAAoB,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC;SACnD;AAED,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AAE3B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,oBAAoB,CAAC,gBAAgB,GAAG,IAAI,CAAC;SAC9C;aAAM;AACL,YAAA,oBAAoB,CAAC,gBAAgB,GAAG,IAAI,CAAC;SAC9C;KACF;IAED,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,oBAAoB,CAAC,gBAAgB,KAAK,IAAI,EAAE;AAClD,YAAA,oBAAoB,CAAC,gBAAgB,GAAG,IAAI,CAAC;SAC9C;KACF;AAED,IAAA,oBAAoB,CAAC,IAAc,EAAA;;QAEjC,OAAO,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;KAC1E;AAED,IAAA,qBAAqB,CAAC,IAAc,EAAA;AAClC,QAAA,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;YACjC,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,oBAAoB,CAAC,kBAAkB;gBAClE,QAAQ,EACN,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,oBAAoB,CAAC,sBAAsB;aACrE,CAAC;SACH;QACD,OAAO;YACL,KAAK,EAAE,oBAAoB,CAAC,kBAAkB;YAC9C,QAAQ,EAAE,oBAAoB,CAAC,sBAAsB;SACtD,CAAC;KACH;IAED,YAAY,GAAA;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,oBAAoB,CAAC,iBAAiB,CAAC;KACzE;IAED,aAAa,GAAA;QACX,OAAO;AACL,YAAA,KAAK,EACH,IAAI,CAAC,MAAM,CAAC,KAAK;AACjB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK;AACvB,gBAAA,oBAAoB,CAAC,kBAAkB;AACzC,YAAA,QAAQ,EACN,IAAI,CAAC,MAAM,CAAC,QAAQ;AACpB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ;AAC1B,gBAAA,oBAAoB,CAAC,sBAAsB;SAC9C,CAAC;KACH;AAED,IAAA,aAAa,CAAC,IAAc,EAAA;QAC1B,OAAO;AACL,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,oBAAoB,CAAC,kBAAkB;AAC5D,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,oBAAoB,CAAC,sBAAsB;SACvE,CAAC;KACH;AAGD,IAAA,eAAe,CAAC,KAAiB,EAAA;QAC/B,MAAM,aAAa,GAAI,KAAK,CAAC,MAAsB,CAAC,OAAO,CACzD,gBAAgB,CACjB,CAAC;QACF,IAAI,CAAC,aAAa,EAAE;YAClB,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;KACF;+GAjGU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,yJCRjC,kyBA8BA,EAAA,MAAA,EAAA,CAAA,u/BAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDtBa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,kyBAAA,EAAA,MAAA,EAAA,CAAA,u/BAAA,CAAA,EAAA,CAAA;8BAKhB,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAyFN,eAAe,EAAA,CAAA;sBADd,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MEzF/B,qBAAqB,CAAA;AALlC,IAAA,WAAA,GAAA;QAMW,IAAgB,CAAA,gBAAA,GAAqB,EAAE,CAAC;AAEvC,QAAA,IAAA,CAAA,aAAa,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAqIxE,KAAA;;aAlIyB,IAAgB,CAAA,gBAAA,GAAW,EAAX,CAAc,EAAA;aAC9B,IAAqB,CAAA,qBAAA,GAAW,MAAX,CAAkB,EAAA;aACvC,IAAkB,CAAA,kBAAA,GAAW,MAAX,CAAkB,EAAA;aACpC,IAAmB,CAAA,mBAAA,GAAW,MAAX,CAAkB,EAAA;aACrC,IAAgB,CAAA,gBAAA,GAAW,aAAX,CAAyB,EAAA;aACzC,IAAsB,CAAA,sBAAA,GAAW,MAAX,CAAkB,EAAA;aACxC,IAA0B,CAAA,0BAAA,GAAW,MAAX,CAAkB,EAAA;aAC5C,IAAoB,CAAA,oBAAA,GAAW,KAAX,CAAiB,EAAA;aACrC,IAAkB,CAAA,kBAAA,GAAW,MAAX,CAAkB,EAAA;aACpC,IAA0B,CAAA,0BAAA,GAAW,YAAX,CAAwB,EAAA;aAClD,IAA2B,CAAA,2BAAA,GAAW,MAAX,CAAkB,EAAA;AAErE,IAAA,YAAY,CAAC,MAAW,EAAA;QACtB,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,UAAU,IAAI,MAAM,CAAC;KAC3D;AAED,IAAA,WAAW,CAAC,MAAW,EAAA;QACrB,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,IAAI,MAAM,CAAC;KACvD;IAED,UAAU,GAAA;QACR,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAClD,cAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ;AACrC,cAAE,qBAAqB,CAAC,gBAAgB,CAAC;KAC5C;IAED,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAClD,cAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO;AAChC,gBAAA,qBAAqB,CAAC,qBAAqB;AAC/C,cAAE,qBAAqB,CAAC,qBAAqB,CAAC;KACjD;IAED,aAAa,GAAA;QACX,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;YACjD,OAAO;AACL,gBAAA,KAAK,EACH,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK;AAChC,oBAAA,qBAAqB,CAAC,kBAAkB;AAC1C,gBAAA,KAAK,EACH,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK;AAChC,oBAAA,qBAAqB,CAAC,kBAAkB;AAC1C,gBAAA,MAAM,EACJ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM;AACjC,oBAAA,qBAAqB,CAAC,mBAAmB;aAC5C,CAAC;SACH;AACD,QAAA,OAAO,EAAE,CAAC;KACX;IAED,UAAU,GAAA;QACR,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACpD,cAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI;AACpC,cAAE,qBAAqB,CAAC,gBAAgB,CAAC;KAC5C;IAED,gBAAgB,GAAA;QACd,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE;YACnD,OAAO;AACL,gBAAA,KAAK,EACH,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK;AACnC,oBAAA,qBAAqB,CAAC,sBAAsB;AAC9C,gBAAA,QAAQ,EACN,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ;AACtC,oBAAA,qBAAqB,CAAC,0BAA0B;aACnD,CAAC;SACH;QACD,OAAO;YACL,KAAK,EAAE,qBAAqB,CAAC,sBAAsB;YACnD,QAAQ,EAAE,qBAAqB,CAAC,0BAA0B;SAC3D,CAAC;KACH;IAED,eAAe,GAAA;QACb,MAAM,YAAY,GAChB,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,sBAAsB;YACrD,qBAAqB,CAAC,oBAAoB,CAAC;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC;QAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,IAAI,MAAM,CAAC;QACpE,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,IAAI,MAAM,CAAC;;QAGtE,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO;AACpD,cAAE,QAAQ;cACR,WAAW,CAAC;QAChB,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO;AACpD,cAAE,QAAQ;cACR,WAAW,CAAC;AAChB,QAAA,MAAM,gBAAgB,GAAG,CAAA,EAAG,OAAO,CAAI,CAAA,EAAA,OAAO,EAAE,CAAC;;QAGjD,MAAM,kBAAkB,GACtB,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,IAAI,QAAQ,CAAC;;QAGtD,MAAM,eAAe,GAAG,QAAQ;cAC5B,uCACE,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,GAAG,GACjC,0BACE,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,GAAG,GACjC,CAAW,QAAA,EAAA,QAAQ,CAAG,CAAA,CAAA;cACtB,EAAE,CAAC;QAEP,OAAO;AACL,YAAA,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,GAAG,aAAa,GAAG,MAAM;AACvE,YAAA,eAAe,EAAE,eAAe;AAChC,YAAA,cAAc,EAAE,CAAA,EAAG,YAAY,CAAA,CAAA,EAAI,aAAa,CAAE,CAAA;AAClD,YAAA,kBAAkB,EAAE,kBAAkB;AACtC,YAAA,gBAAgB,EAAE,gBAAgB;SACnC,CAAC;KACH;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;KAC3B;IAED,mBAAmB,GAAA;AACjB,QAAA,QACE,IAAI,CAAC,gBAAgB,CAAC,gBAAgB;YACtC,qBAAqB,CAAC,0BAA0B,EAChD;KACH;IAED,qBAAqB,GAAA;QACnB,OAAO;AACL,YAAA,KAAK,EACH,IAAI,CAAC,gBAAgB,CAAC,iBAAiB;AACvC,gBAAA,qBAAqB,CAAC,2BAA2B;SACpD,CAAC;KACH;+GAvIU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,sJCRlC,m8BAmCA,EAAA,MAAA,EAAA,CAAA,41BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAmB,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FD3Ba,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,m8BAAA,EAAA,MAAA,EAAA,CAAA,41BAAA,CAAA,EAAA,CAAA;8BAKlB,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBAEI,aAAa,EAAA,CAAA;sBAAtB,MAAM;;;MEDI,iBAAiB,CAAA;+GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,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,iBAAiB,iBAJb,oBAAoB,CAAA,EAAA,OAAA,EAAA,CACzB,YAAY,EAAE,YAAY,aAC1B,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;gHAEnB,iBAAiB,EAAA,OAAA,EAAA,CAHlB,YAAY,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGzB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,oBAAoB,CAAC;AACpC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;oBACrC,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAChC,iBAAA,CAAA;;;MCEY,kBAAkB,CAAA;+GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAlB,kBAAkB,EAAA,YAAA,EAAA,CAJd,qBAAqB,CAC1B,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,YAAY,EAAE,iBAAiB,CAAA,EAAA,OAAA,EAAA,CAC7C,qBAAqB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEpB,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,kBAAkB,EAHnB,OAAA,EAAA,CAAA,YAAY,EAAE,YAAY,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAG5C,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,qBAAqB,CAAC;AACrC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,iBAAiB,CAAC;oBACxD,OAAO,EAAE,CAAC,qBAAqB,CAAC;AACjC,iBAAA,CAAA;;;MCaY,sBAAsB,CAAA;IAejC,WAAoB,CAAA,QAAmB,EAAU,EAAc,EAAA;QAA3C,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAAU,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;AAdtD,QAAA,IAAA,CAAA,UAAU,GAAsB;AACvC,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,eAAe,EAAE,OAAO;AACxB,YAAA,SAAS,EAAE,MAAM;AACjB,YAAA,gBAAgB,EAAE,MAAM;AACxB,YAAA,UAAU,EAAE,SAAS;AACrB,YAAA,iBAAiB,EAAE,SAAS;SAC7B,CAAC;AAIF,QAAA,IAAA,CAAA,gBAAgB,GAAe;AAC7B,YAAA,YAAY,EAAE,QAAQ;AACtB,YAAA,gBAAgB,EAAE,QAAQ;AAC1B,YAAA,UAAU,EAAE,yBAAyB;AACrC,YAAA,eAAe,EAAE,OAAO;AACxB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,OAAO,EAAE,GAAG;SACb,CAAC;AAEF,QAAA,IAAA,CAAA,UAAU,GAAe;AACvB,YAAA,UAAU,EAAE,kBAAkB;AAC9B,YAAA,eAAe,EAAE,EAAE;AACnB,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,kBAAkB,EAAE,KAAK;SAC1B,CAAC;QAEF,IAAS,CAAA,SAAA,GAAc,IAAI,SAAS,CAAC;AACnC,YAAA,MAAM,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC;AAC5B,SAAA,CAAC,CAAC;AAEH,QAAA,IAAA,CAAA,WAAW,GAAkB;AAC3B,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,WAAW,EAAE,WAAW;AACxB,YAAA,SAAS,EAAE,cAAc;SAC1B,CAAC;QAEF,IAAa,CAAA,aAAA,GAAW,EAAE,CAAC;KA7BwC;IA+BnE,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,GAAG;AAChB,YAAA,UAAU,EAAE,kBAAkB;AAC9B,YAAA,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe;AAChD,YAAA,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;AAC5B,YAAA,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;AAC9B,YAAA,kBAAkB,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU;AAC9C,YAAA,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO;SACjC,CAAC;QAEF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AAE3C,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK;cACnC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;cAC/B,GAAG,CAAC;QACR,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,GAAG,SAAS,GAAG,EAAE,CAAA,EAAA,CAAI,CAAC;QAC/C,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QACpD,IAAI,CAAC,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;AAExD,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;AAC9B,YAAA,IAAI,CAAC,SAAS;iBACX,GAAG,CAAC,QAAQ,CAAC;AACd,kBAAE,YAAY,CAAC,SAAS,CAAC,CAAC,UAAkB,KAAI;AAC9C,gBAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC5B,aAAC,CAAC,CAAC;SACN;KACF;IAED,UAAU,CAAC,IAAU,EAAE,KAAY,EAAA;AACjC,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;QACnC,KAAK,CAAC,cAAc,EAAE,CAAC;KACxB;AAED,IAAA,eAAe,CAAC,IAAU,EAAA;QACxB,OAAO,IAAI,CAAC,UAAU,GAAG,oBAAoB,GAAG,qBAAqB,CAAC;KACvE;AAED,IAAA,cAAc,CAAC,KAAY,EAAA;AACzB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAC9C,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAC7B,CAAC;QAEF,OAAO;AACL,YAAA,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,aAAa,CAAC,KAAK;AACzC,YAAA,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,aAAa,CAAC,eAAe;AACvE,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,QAAQ,EAAE,MAAM;SACjB,CAAC;KACH;AAED,IAAA,qBAAqB,CAAC,IAAe,EAAA;QACnC,QAAQ,IAAI;YACV,KAAK,SAAS,CAAC,IAAI;gBACjB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;YACxD,KAAK,SAAS,CAAC,MAAM;gBACnB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;YACxD,KAAK,SAAS,CAAC,OAAO;gBACpB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;AACxD,YAAA;gBACE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;SACzD;KACF;AAED,IAAA,QAAQ,CAAC,UAAkB,EAAA;AACzB,QAAA,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;YAC3C,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB;aAAM;AACL,YAAA,MAAM,eAAe,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;AACjD,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK;AACvC,iBAAA,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,eAAe,CAAC,CAAC;iBAC9D,MAAM,CAAC,OAAO,CAAW,CAAC;SAC9B;KACF;IAED,YAAY,CAAC,IAAU,EAAE,UAAkB,EAAA;AACzC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAE9D,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ;AACnC,iBAAA,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;iBACpD,MAAM,CAAC,OAAO,CAAW,CAAC;AAE7B,YAAA,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,gBAAA,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC;AACjC,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,gBAAA,OAAO,IAAI,CAAC;aACb;SACF;QAED,OAAO,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;KAC9B;IAED,gBAAgB,GAAA;QACd,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACrC,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAC1B,SAAC,CAAC,CAAC;KACJ;IAED,iBAAiB,GAAA;QACf,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,MAAM;SAC3C,CAAC;KACH;IAED,iBAAiB,GAAA;QACf,OAAO;AACL,YAAA,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,MAAM;AAC1C,YAAA,iBAAiB,EAAE,MAAM;AACzB,YAAA,eAAe,EAAE,KAAK;AACtB,YAAA,OAAO,EAAE,WAAW;AACpB,YAAA,WAAW,EAAE,MAAM;AACnB,YAAA,UAAU,EAAE,mCAAmC;AAC/C,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,aAAa,EAAE,QAAQ;AACvB,YAAA,QAAQ,EAAE;AACR,gBAAA,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,SAAS;AACxD,gBAAA,KAAK,EAAE,MAAM;AACd,aAAA;SACF,CAAC;KACH;IAED,oBAAoB,GAAA;QAClB,OAAO;AACL,YAAA,KAAK,EACH,IAAI,CAAC,UAAU,CAAC,gBAAgB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,MAAM;AACzE,YAAA,iBAAiB,EAAE,MAAM;AACzB,YAAA,eAAe,EAAE,KAAK;AACtB,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,UAAU,EAAE,mCAAmC;AAC/C,YAAA,QAAQ,EAAE;AACR,gBAAA,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,iBAAiB,IAAI,SAAS;AAChE,aAAA;SACF,CAAC;KACH;IACD,eAAe,GAAA;QACb,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;IAED,iBAAiB,GAAA;AACf,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;AACxE,QAAA,MAAM,YAAY,GAChB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;;AAG3D,QAAA,SAAS,CAAC,OAAO,CAAC,CAAC,IAAiB,KAAI;YACtC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,MAAK;AAC5C,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,IAAI,EACJ,kBAAkB,EAClB,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,SAAS,CACxC,CAAC;AACF,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,IAAI,EACJ,OAAO,EACP,IAAI,CAAC,UAAU,CAAC,cAAc,IAAI,OAAO,CAC1C,CAAC;AACJ,aAAC,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,MAAK;gBAC5C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;AACpD,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,IAAI,EACJ,OAAO,EACP,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,MAAM,CACpC,CAAC;AACJ,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;;AAGH,QAAA,YAAY,CAAC,OAAO,CAAC,CAAC,IAAiB,KAAI;YACzC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,MAAK;AAC5C,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,IAAI,EACJ,kBAAkB,EAClB,IAAI,CAAC,UAAU,CAAC,iBAAiB;oBAC/B,IAAI,CAAC,UAAU,CAAC,UAAU;AAC1B,oBAAA,SAAS,CACZ,CAAC;AACF,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,IAAI,EACJ,OAAO,EACP,IAAI,CAAC,UAAU,CAAC,qBAAqB;oBACnC,IAAI,CAAC,UAAU,CAAC,cAAc;AAC9B,oBAAA,MAAM,CACT,CAAC;AACJ,aAAC,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,MAAK;gBAC5C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;AACpD,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,IAAI,EACJ,OAAO,EACP,IAAI,CAAC,UAAU,CAAC,gBAAgB;oBAC9B,IAAI,CAAC,UAAU,CAAC,SAAS;AACzB,oBAAA,MAAM,CACT,CAAC;AACJ,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;+GAtPU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,8FCvBnC,whFAoFA,EAAA,MAAA,EAAA,CAAA,w8DAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAnB,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAoB,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FD7Da,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,whFAAA,EAAA,MAAA,EAAA,CAAA,w8DAAA,CAAA,EAAA,CAAA;uGAKnB,UAAU,EAAA,CAAA;sBAAlB,KAAK;;;MEZK,mBAAmB,CAAA;+GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAnB,mBAAmB,EAAA,YAAA,EAAA,CAJf,sBAAsB,CAAA,EAAA,OAAA,EAAA,CAC3B,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,CAAA,EAAA,OAAA,EAAA,CAC3D,sBAAsB,CAAA,EAAA,CAAA,CAAA,EAAA;AAErB,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,mBAAmB,YAHpB,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAG1D,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,sBAAsB,CAAC;oBACtC,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,CAAC;oBACtE,OAAO,EAAE,CAAC,sBAAsB,CAAC;AAClC,iBAAA,CAAA;;;MCHY,iBAAiB,CAAA;AAL9B,IAAA,WAAA,GAAA;AAMW,QAAA,IAAA,CAAA,YAAY,GAAiB;AACpC,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACzC,CAAC;AA2BH,KAAA;IAzBC,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;KACjC;IAED,aAAa,GAAA;AACX,QAAA,QACE,IAAI,CAAC,YAAY,CAAC,UAAU,IAAI;AAC9B,YAAA,eAAe,EAAE,SAAS;AAC1B,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,kBAAkB,EAAE,KAAK;AACzB,YAAA,OAAO,EAAE,GAAG;AACZ,YAAA,MAAM,EAAE,GAAG;AACZ,SAAA,EACD;KACH;IAED,YAAY,GAAA;AACV,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAC1C,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;QAExD,OAAO,cAAc,KAAK,WAAW;cACjC,CAAG,EAAA,WAAW,CAAE,CAAA;AAClB,cAAE,CAAG,EAAA,cAAc,CAAM,GAAA,EAAA,WAAW,EAAE,CAAC;KAC1C;+GA/BU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,2FCR9B,8QASA,EAAA,MAAA,EAAA,CAAA,wJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDDa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;+BACE,WAAW,EAAA,QAAA,EAAA,8QAAA,EAAA,MAAA,EAAA,CAAA,wJAAA,CAAA,EAAA,CAAA;8BAKZ,YAAY,EAAA,CAAA;sBAApB,KAAK;;;MECK,mBAAmB,CAAA;AAK9B,IAAA,WAAA,CAAoB,MAAc,EAAA;QAAd,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAJ1B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAa,EAAE,CAAC,CAAC;AAC1D,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;QACtC,IAAQ,CAAA,QAAA,GAAU,EAAE,CAAC;QAG3B,IAAI,CAAC,MAAM,CAAC,MAAM;AACf,aAAA,IAAI,CACH,MAAM,CACJ,CAAC,KAAK,KAA6B,KAAK,YAAY,aAAa,CAClE,CACF;AACA,aAAA,SAAS,CAAC,CAAC,KAAoB,KAAI;YAClC,IAAI,QAAQ,GAAG,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAClD,YAAA,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,IAAI,iBAAiB,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3C,IAAI,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;AAC7D,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACvC,SAAC,CAAC,CAAC;KACN;;AAGD,IAAA,WAAW,CAAC,QAAe,EAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC1B;AAED,IAAA,gBAAgB,CAAC,GAAA,GAAc,EAAE,EAAE,cAA0B,EAAE,EAAA;QAC7D,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,OAAO,WAAW,CAAC;SACpB;AAED,QAAA,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;AAEjE,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAChC,IAAI,CAAC,QAAQ,EACb,YAAY,EACZ,WAAW,CACZ,CAAC;KACH;AAEO,IAAA,sBAAsB,CAC5B,QAAe,EACf,YAAsB,EACtB,WAAuB,EAAA;AAEvB,QAAA,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AAC7B,YAAA,OAAO,WAAW,CAAC;SACpB;AAED,QAAA,MAAM,cAAc,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;QAE5C,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAC/B,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,cAAc,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAC3E,CAAC;QAEF,IAAI,WAAW,EAAE;AACf,YAAA,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;YAErE,IACE,WAAW,CAAC,QAAQ;AACpB,gBAAA,WAAW,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;AAC/B,gBAAA,YAAY,CAAC,MAAM,GAAG,CAAC,EACvB;AACA,gBAAA,OAAO,IAAI,CAAC,qBAAqB,CAC/B,WAAW,CAAC,QAAQ,EACpB,YAAY,EACZ,WAAW,EACX,cAAc,IAAI,EAAE,CACrB,CAAC;aACH;SACF;AAED,QAAA,OAAO,WAAW,CAAC;KACpB;AAEO,IAAA,qBAAqB,CAC3B,QAAgB,EAChB,YAAsB,EACtB,WAAuB,EACvB,UAAkB,EAAA;AAElB,QAAA,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AAC7B,YAAA,OAAO,WAAW,CAAC;SACpB;AAED,QAAA,MAAM,cAAc,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;AAC5C,QAAA,UAAU,GAAG,CAAI,CAAA,EAAA,UAAU,CAAI,CAAA,EAAA,cAAc,EAAE,CAAC;AAEhD,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC;QAErE,IAAI,WAAW,EAAE;AACf,YAAA,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;YAErE,IACE,WAAW,CAAC,QAAQ;AACpB,gBAAA,WAAW,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;AAC/B,gBAAA,YAAY,CAAC,MAAM,GAAG,CAAC,EACvB;AACA,gBAAA,OAAO,IAAI,CAAC,qBAAqB,CAC/B,WAAW,CAAC,QAAQ,EACpB,YAAY,EACZ,WAAW,EACX,UAAU,CACX,CAAC;aACH;SACF;aAAM;AACL,YAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAC9B,CAAC,IAAI,KACH,IAAI,CAAC,QAAQ;AACb,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,KAAK,UAAU,CAAC,CAC1D,CAAC;AACF,YAAA,IAAI,UAAU,IAAI,UAAU,CAAC,QAAQ,EAAE;AACrC,gBAAA,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CACxC,CAAC,KAAW,KAAK,KAAK,CAAC,GAAG,KAAK,UAAU,CAC1C,CAAC;gBACF,IAAI,SAAS,EAAE;AACb,oBAAA,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;AACnE,oBAAA,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;oBAEjE,IACE,SAAS,CAAC,QAAQ;AAClB,wBAAA,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;AAC7B,wBAAA,YAAY,CAAC,MAAM,GAAG,CAAC,EACvB;AACA,wBAAA,OAAO,IAAI,CAAC,qBAAqB,CAC/B,SAAS,CAAC,QAAQ,EAClB,YAAY,EACZ,WAAW,EACX,UAAU,CACX,CAAC;qBACH;iBACF;aACF;SACF;AAED,QAAA,OAAO,WAAW,CAAC;KACpB;+GAxIU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAR,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCUY,qBAAqB,CAAA;AAMhC,IAAA,WAAA,CACU,iBAAsC,EACtC,QAAmB,EACnB,EAAc,EAAA;QAFd,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAqB;QACtC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACnB,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;KACpB;IAEJ,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;;QAG5D,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AAEnE,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,SAAS,CACxE,CAAC,UAAU,KAAI;AACb,YAAA,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;AAC1B,SAAC,CACF,CAAC;KACH;IAED,eAAe,GAAA;QACb,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;IAED,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC/B,YAAA,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;SAC3C;KACF;IAED,qBAAqB,GAAA;QACnB,MAAM,YAAY,GAChB,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,sBAAsB,IAAI,KAAK,CAAC;QACjE,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ;cAC3D,CACE,oCAAA,EAAA,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,GAAG,GACjC,CAAA,uBAAA,EAA0B,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,GAAG,GAAG,CAC1D,SAAA,EAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAChC,CAAI,EAAA,CAAA;cACJ,EAAE,CAAC;;QAGP,UAAU,CAAC,MAAK;AACd,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,CACvD,8BAA8B,CAC/B,CAAC;YAEF,IAAI,aAAa,EAAE;gBACjB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,aAAa,EACb,kBAAkB,EAClB,eAAe,CAChB,CAAC;aACH;AACH,SAAC,CAAC,CAAC;KACJ;+GA5DU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAS,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,wGCnBlC,mMAMA,EAAA,MAAA,EAAA,CAAA,yXAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAvB,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,EAAAL,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDaa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,mMAAA,EAAA,MAAA,EAAA,CAAA,yXAAA,CAAA,EAAA,CAAA;sIAKjB,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;;;MEZK,uBAAuB,CAAA;AALpC,IAAA,WAAA,GAAA;AAOY,QAAA,IAAA,CAAA,aAAa,GAAuB,IAAI,YAAY,EAAQ,CAAC;QAEvE,IAAgB,CAAA,gBAAA,GAAY,IAAI,CAAC;AAsClC,KAAA;IApCC,QAAQ,GAAA;QACN,IAAI,CAAC,8BAA8B,EAAE,CAAC;QACtC,IAAI,CAAC,2BAA2B,EAAE,CAAC;KACpC;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAC/C,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;KAC3B;;IAGD,8BAA8B,GAAA;AAC5B,QAAA,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,GAAG;AAC7C,YAAA,UAAU,EAAE,6BAA6B;YACzC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,QAAQ,IAAI,IAAI;YACxE,eAAe,EACb,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,eAAe,IAAI,MAAM;YACzE,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,OAAO,IAAI,MAAM;YACxE,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,MAAM,IAAI,MAAM;AACtE,YAAA,GAAG,IAAI,CAAC,kBAAkB,CAAC,oBAAoB;SAChD,CAAC;KACH;;IAGD,2BAA2B,GAAA;AACzB,QAAA,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,GAAG;AAC1C,YAAA,UAAU,EAAE,0BAA0B;YACtC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,QAAQ,IAAI,KAAK;YACtE,eAAe,EACb,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,eAAe,IAAI,SAAS;YACzE,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,OAAO,IAAI,MAAM;AACrE,YAAA,kBAAkB,EAAE,IAAI;AACxB,YAAA,oBAAoB,EAAE,IAAI;AAC1B,YAAA,GAAG,IAAI,CAAC,kBAAkB,CAAC,iBAAiB;SAC7C,CAAC;KACH;+GAzCU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,2JCRpC,kvCAwCA,EAAA,MAAA,EAAA,CAAA,0mBAAA,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,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA6B,qBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,sBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA7B,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA8B,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDhCa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,kvCAAA,EAAA,MAAA,EAAA,CAAA,0mBAAA,CAAA,EAAA,CAAA;8BAKnB,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBACI,aAAa,EAAA,CAAA;sBAAtB,MAAM;;;MEAI,cAAc,CAAA;+GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAd,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,cAAc,iBAJV,iBAAiB,CAAA,EAAA,OAAA,EAAA,CACtB,YAAY,EAAE,YAAY,aAC1B,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA;gHAEhB,cAAc,EAAA,OAAA,EAAA,CAHf,YAAY,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGzB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,iBAAiB,CAAC;AACjC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;oBACrC,OAAO,EAAE,CAAC,iBAAiB,CAAC;AAC7B,iBAAA,CAAA;;;MCCY,kBAAkB,CAAA;+GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,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,kBAAkB,iBAJd,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAC1B,YAAY,EAAE,gBAAgB,aAC9B,qBAAqB,CAAA,EAAA,CAAA,CAAA,EAAA;gHAEpB,kBAAkB,EAAA,OAAA,EAAA,CAHnB,YAAY,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAG7B,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,qBAAqB,CAAC;AACrC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,gBAAgB,CAAC;oBACzC,OAAO,EAAE,CAAC,qBAAqB,CAAC;AACjC,iBAAA,CAAA;;;MCcY,oBAAoB,CAAA;+GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAApB,oBAAoB,EAAA,YAAA,EAAA,CAZhB,uBAAuB,CAAA,EAAA,OAAA,EAAA,CAEpC,YAAY;YACZ,kBAAkB;YAClB,YAAY;YACZ,mBAAmB;YACnB,YAAY;YACZ,cAAc;AACd,YAAA,kBAAkB,aAEV,uBAAuB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEtB,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,YAV7B,YAAY;YACZ,kBAAkB;YAClB,YAAY;YACZ,mBAAmB;YACnB,YAAY;YACZ,cAAc;YACd,kBAAkB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIT,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAbhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,uBAAuB,CAAC;AACvC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,kBAAkB;wBAClB,YAAY;wBACZ,mBAAmB;wBACnB,YAAY;wBACZ,cAAc;wBACd,kBAAkB;AACnB,qBAAA;oBACD,OAAO,EAAE,CAAC,uBAAuB,CAAC;AACnC,iBAAA,CAAA;;;MCLY,iBAAiB,CAAA;IAG5B,WAAoB,CAAA,QAAmB,EAAU,EAAc,EAAA;QAA3C,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAAU,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;KAAI;IAEnE,QAAQ,GAAA;;AAEN,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,IAAI,CAAC,YAAY,GAAG;AAClB,gBAAA,KAAK,EAAE,UAAU;AACjB,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,UAAU,EAAE,EAAE;AACd,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,MAAM,EAAE,MAAM;AACd,gBAAA,SAAS,EAAE,MAAM;AACjB,gBAAA,eAAe,EAAE,MAAM;AACvB,gBAAA,WAAW,EAAE,MAAM;aACpB,CAAC;SACH;KACF;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;QAE7C,IAAI,YAAY,EAAE;AAChB,YAAA,MAAM,IAAI,GAAG,YAAY,CAAC,aAAa,CAAC;AACxC,YAAA,MAAM,IAAI,GAAG,YAAY,CAAC,YAAY,CAAC;AAEvC,YAAA,IAAI,IAAI,IAAI,IAAI,EAAE;gBAChB,MAAM,mBAAmB,GACvB,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ;oBAC/B,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AAC9C,wBAAA,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;gBAErD,IAAI,mBAAmB,EAAE;AACvB,oBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAC1C;qBAAM;oBACL,IAAI,CAAC,iBAAiB,EAAE,CAAC;iBAC1B;aACF;iBAAM;;gBAEL,IAAI,CAAC,iBAAiB,EAAE,CAAC;aAC1B;SACF;KACF;AACD,IAAA,oBAAoB,CAAC,UAAmB,EAAA;AACtC,QAAA,MAAM,aAAa,GACjB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;QAE1D,IAAI,aAAa,EAAE;YACjB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,aAAa,EACb,OAAO,EACP,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAClD,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,aAAa,EACb,kBAAkB,EAClB,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAC3D,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,aAAa,EACb,cAAc,EACd,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CACvD,CAAC;SACH;KACF;IAED,eAAe,GAAA;QACb,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;IAED,UAAU,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,KAAK,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;KACjE;IAED,OAAO,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,QAAQ,CAAC;KAC3C;IAED,iBAAiB,GAAA;AACf,QAAA,MAAM,aAAa,GACjB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;AAE1D,QAAA,IAAI,aAAa,IAAI,IAAI,CAAC,YAAY,EAAE;AACtC,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;YAE9C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,aAAa,EACb,OAAO,EACP,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAClD,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,aAAa,EACb,kBAAkB,EAClB,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAC3D,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,aAAa,EACb,cAAc,EACd,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CACvD,CAAC;AAEF,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,aAAa,EACb,OAAO,EACP,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,MAAM,CAClC,CAAC;AAEF,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,aAAa,EACb,QAAQ,EACR,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,MAAM,CACnC,CAAC;SACH;KACF;+GAzHU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,gHCjB9B,oRASA,EAAA,MAAA,EAAA,CAAA,qCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAb,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDQa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;+BACE,WAAW,EAAA,QAAA,EAAA,oRAAA,EAAA,MAAA,EAAA,CAAA,qCAAA,CAAA,EAAA,CAAA;uGAKZ,YAAY,EAAA,CAAA;sBAApB,KAAK;;;MERK,cAAc,CAAA;+GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAd,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,cAAc,iBAJV,iBAAiB,CAAA,EAAA,OAAA,EAAA,CACtB,YAAY,EAAE,YAAY,aAC1B,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA;gHAEhB,cAAc,EAAA,OAAA,EAAA,CAHf,YAAY,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGzB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,iBAAiB,CAAC;AACjC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;oBACrC,OAAO,EAAE,CAAC,iBAAiB,CAAC;AAC7B,iBAAA,CAAA;;;MCoBY,oBAAoB,CAAA;AAQ/B,IAAA,WAAA,CAAoB,EAAe,EAAA;QAAf,IAAE,CAAA,EAAA,GAAF,EAAE,CAAa;QAN1B,IAAiB,CAAA,iBAAA,GAAkB,IAAI,CAAC;AACvC,QAAA,IAAA,CAAA,WAAW,GACnB,IAAI,YAAY,EAAc,CAAC;QAK/B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;KACpC;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,eAAe,EAAE,CAAC;AAEvB,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;YACxB,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,QAAQ,IAAI,EAAE;YACrD,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,QAAQ,IAAI,EAAE;AACtD,SAAA,CAAC,CAAC;;QAEH,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AAChD,YAAA,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG;AAClC,gBAAA,GAAG,IAAI,CAAC,eAAe,CAAC,YAAa;gBACrC,QAAQ,EAAE,MAAM,KAAK,OAAO;aAC7B,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;;IAGD,kBAAkB,GAAA;;AAEhB,QAAA,IAAI,CAAC,eAAe,CAAC,eAAe,GAAG;YACrC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,QAAQ,IAAI,EAAE;YAC9D,sBAAsB,EACpB,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,sBAAsB,IAAI,KAAK;AACvE,YAAA,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe;SACxC,CAAC;;AAGF,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG;YAC3B,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,IAAI,OAAO;YACjD,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,IAAI,QAAQ;YAC1D,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,IAAI,MAAM;YAClD,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,IAAI,MAAM;AACxD,YAAA,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK;SAC9B,CAAC;;AAGF,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG;YAC7B,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,IAAI,MAAM;YACxD,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE;YACtD,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,IAAI,OAAO;YACrD,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,IAAI,MAAM;AACtD,YAAA,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO;SAChC,CAAC;;AAGF,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG;YAC5B,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,IAAI,MAAM;YACvD,SAAS,EACP,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,IAAI,qBAAqB;AACjE,YAAA,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM;SAC/B,CAAC;;AAGF,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG;YAC3B,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,IAAI,EAAE;YACpD,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,IAAI,EAAE;YACpD,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,YAAY,IAAI,EAAE;AAC5D,YAAA,uBAAuB,EACrB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,uBAAuB;gBACnD,iEAAiE;AACnE,YAAA,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK;SAC9B,CAAC;;AAGF,QAAA,IAAI,CAAC,eAAe,CAAC,eAAe,GAAG;YACrC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,QAAQ,IAAI,IAAI;YAChE,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,KAAK,IAAI,OAAO;YAC7D,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,OAAO,IAAI,MAAM;AAChE,YAAA,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe;SACxC,CAAC;;AAGF,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,GAAG;YACnC,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,IAAI,UAAU;YAC5D,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,KAAK,IAAI,mBAAmB;YACvE,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,QAAQ,IAAI,IAAI;AAC9D,YAAA,WAAW,EACT,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,WAAW;gBAC/C,gCAAgC;AAClC,YAAA,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa;SACtC,CAAC;;AAGF,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,GAAG;YACnC,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,IAAI,UAAU;YAC5D,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,KAAK,IAAI,cAAc;YAClE,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,QAAQ,IAAI,IAAI;AAC9D,YAAA,WAAW,EACT,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,WAAW;gBAC/C,2BAA2B;YAC7B,IAAI,EACF,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,IAAI,iBAAiB,CAAC,QAAQ;AACxE,YAAA,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa;SACtC,CAAC;;AAGF,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG;YAClC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,KAAK,IAAI,OAAO;YAC1D,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,IAAI,IAAI,QAAQ;YACzD,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,IAAI,IAAI,eAAe;YAChE,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,OAAO,IAAI,MAAM;YAC7D,UAAU,EACR,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,UAAU,IAAI,kBAAkB;YACrE,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,QAAQ,IAAI,IAAI;YAC7D,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,KAAK,IAAI,MAAM;AACzD,YAAA,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY;SACrC,CAAC;KACH;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YACxB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SAC7C;aAAM;AACL,YAAA,IAAI,CAAC,eAAe,CAAC,KAAM,CAAC,YAAY;AACtC,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,uBAAuB,CAAC;SACvD;KACF;;IAGD,eAAe,GAAA;QACb,MAAM,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,QAAQ;AACrE,cAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;cACrB,EAAE,CAAC;QACP,MAAM,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,QAAQ;AACrE,cAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;cACrB,EAAE,CAAC;AAEP,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CACvB,IAAI,CAAC,eAAe,CAAC,aAAc,CAAC,IAAI,EACxC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAC1E,CAAC;AACF,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CACvB,IAAI,CAAC,eAAe,CAAC,aAAc,CAAC,IAAI,EACxC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAC1E,CAAC;KACH;+GApJU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EC7BjC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,0tDAsDA,EDnCI,MAAA,EAAA,CAAA,grBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAd,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,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,EACX,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAc,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,+HACd,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAKR,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAdhC,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,YAAY;wBACZ,cAAc;wBACd,iBAAiB;AAClB,qBAAA,EAAA,QAAA,EAAA,0tDAAA,EAAA,MAAA,EAAA,CAAA,grBAAA,CAAA,EAAA,CAAA;kFAKQ,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACI,WAAW,EAAA,CAAA;sBAApB,MAAM;;;MExBI,oBAAoB,CAAA;AALjC,IAAA,WAAA,GAAA;QAOW,IAAiB,CAAA,iBAAA,GAAkB,IAAI,CAAC;AACvC,QAAA,IAAA,CAAA,WAAW,GACnB,IAAI,YAAY,EAAc,CAAC;AAEzB,QAAA,IAAA,CAAA,iBAAiB,GAAe;AACtC,YAAA,YAAY,EAAE,GAAG;AACjB,YAAA,MAAM,EAAE,GAAG;AACX,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,YAAY,EAAE,QAAQ;AACtB,YAAA,gBAAgB,EAAE,QAAQ;SAC3B,CAAC;AAkCH,KAAA;IAhCC,QAAQ,GAAA;QACN,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;IAEO,mBAAmB,GAAA;;AAEzB,QAAA,IAAI,CAAC,eAAe,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CACxD,IAAI,CAAC,eAAe,CAAC,gBAAgB,CACtC,CAAC;;AAGF,QAAA,IAAI,CAAC,eAAe,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CACtD,IAAI,CAAC,eAAe,CAAC,cAAc,CACpC,CAAC;;AAGF,QAAA,IAAI,CAAC,eAAe,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CACvD,IAAI,CAAC,eAAe,CAAC,eAAe,CACrC,CAAC;KACH;AAEO,IAAA,aAAa,CAAC,MAAmB,EAAA;QACvC,OAAO;YACL,GAAG,IAAI,CAAC,iBAAiB;AACzB,YAAA,IAAI,MAAM,IAAI,EAAE;SACjB,CAAC;KACH;AAED,IAAA,aAAa,CAAC,UAAsB,EAAA;AAClC,QAAA,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACnC;+GA/CU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,sLCRjC,i/CAiDA,EAAA,MAAA,EAAA,CAAA,sqBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,EAAAV,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDzCa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,i/CAAA,EAAA,MAAA,EAAA,CAAA,sqBAAA,CAAA,EAAA,CAAA;8BAKhB,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACI,WAAW,EAAA,CAAA;sBAApB,MAAM;;;MEWI,iBAAiB,CAAA;+GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAjB,iBAAiB,EAAA,YAAA,EAAA,CAZb,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAEjC,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,iBAAiB;YACjB,YAAY;YACZ,cAAc;AACd,YAAA,oBAAoB,aAEZ,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEnB,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,iBAAiB,YAV1B,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,iBAAiB;YACjB,YAAY;YACZ,cAAc;YACd,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAb7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,oBAAoB,CAAC;AACpC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,iBAAiB;wBACjB,YAAY;wBACZ,cAAc;wBACd,oBAAoB;AACrB,qBAAA;oBACD,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAChC,iBAAA,CAAA;;;ACDD;AACA,MAAM,aAAa,GAAgD;AACjE,IAAA,CAAC,YAAY,CAAC,OAAO,GAAG;QACtB,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;QAC7C,OAAO,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,KAAK,EAAE,SAAS,EAAE;QACjE,mBAAmB,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE;QACtE,kBAAkB,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE;AACtE,KAAA;AACD,IAAA,CAAC,YAAY,CAAC,OAAO,GAAG;QACtB,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;QAC7C,OAAO,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,KAAK,EAAE,SAAS,EAAE;QAChE,mBAAmB,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE;QACtE,kBAAkB,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE;AACtE,KAAA;AACD,IAAA,CAAC,YAAY,CAAC,MAAM,GAAG;QACrB,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE;QAC3C,OAAO,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,SAAS,EAAE;QACzD,mBAAmB,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE;QACtE,kBAAkB,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE;AACtE,KAAA;AACD,IAAA,CAAC,YAAY,CAAC,IAAI,GAAG;QACnB,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE;QACjD,OAAO,EAAE,EAAE,IAAI,EAAE,qCAAqC,EAAE,KAAK,EAAE,SAAS,EAAE;QAC1E,mBAAmB,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE;QACtE,kBAAkB,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE;AACtE,KAAA;CACF,CAAC;AAEF;AACA,MAAM,qBAAqB,GAAiB;AAC1C,IAAA,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;AAChC,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,OAAO,EAAE,yBAAyB;AAClC,IAAA,mBAAmB,EAAE;AACnB,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,MAAM;AACjB,QAAA,eAAe,EAAE,SAAS;AAC3B,KAAA;AACD,IAAA,kBAAkB,EAAE;AAClB,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,SAAS,EAAE,MAAM;AACjB,QAAA,eAAe,EAAE,SAAS;AAC3B,KAAA;IACD,WAAW,EAAE,YAAY,CAAC,IAAI;CAC/B,CAAC;MAQW,iBAAiB,CAAA;AAK5B,IAAA,WAAA,CACU,mBAAwC,EACxC,cAA8B,EAC9B,QAAmB,EACnB,EAAc,EAAA;QAHd,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;QACxC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACnB,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;AARf,QAAA,IAAA,CAAA,YAAY,GAAiB,EAAE,GAAG,qBAAqB,EAAE,CAAC;AACzD,QAAA,IAAA,CAAA,OAAO,GAAuB,IAAI,YAAY,EAAE,CAAC;AACjD,QAAA,IAAA,CAAA,MAAM,GAAuB,IAAI,YAAY,EAAE,CAAC;KAOtD;AAEJ,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE;AAC3B,YAAA,IACE,OAAO,CAAC,cAAc,CAAC,CAAC,YAAY,EAAE,WAAW;gBACjD,OAAO,CAAC,cAAc,CAAC,CAAC,aAAa,EAAE,WAAW,EAClD;gBACA,IAAI,CAAC,gBAAgB,EAAE,CAAC;aACzB;AAED,YAAA,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;gBAC7B,IAAI,CAAC,UAAU,EAAE,CAAC;aACnB;SACF;KACF;IAEO,gBAAgB,GAAA;QACtB,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,IAAI,YAAY,CAAC,IAAI,CAAC;QACvE,MAAM,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAErD,IAAI,CAAC,YAAY,GAAG;AAClB,YAAA,GAAG,qBAAqB;AACxB,YAAA,GAAG,WAAW;AACd,YAAA,mBAAmB,EAAE;gBACnB,GAAG,qBAAqB,CAAC,mBAAmB;gBAC5C,GAAG,WAAW,CAAC,mBAAmB;AACnC,aAAA;AACD,YAAA,kBAAkB,EAAE;gBAClB,GAAG,qBAAqB,CAAC,kBAAkB;gBAC3C,GAAG,WAAW,CAAC,kBAAkB;AAClC,aAAA;SACF,CAAC;KACH;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;AAC/B,YAAA,MAAM,EAAE,IAAI,CAAC,mBAAmB,EAAE;AAClC,YAAA,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE;YACpC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,KAAK,IAAI,SAAS;YACtE,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,KAAK,IAAI,QAAQ;AACpE,YAAA,sBAAsB,EAAE,IAAI,CAAC,cAAc,CACzC,IAAI,CAAC,YAAY,CAAC,mBAAmB,EACrC,IAAI,CACL;AACD,YAAA,sBAAsB,EAAE,IAAI,CAAC,cAAc,CACzC,IAAI,CAAC,YAAY,CAAC,kBAAkB,EACpC,KAAK,CACN;YACD,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,IAAI,IAAI,aAAa;YACxE,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,IAAI,IAAI,aAAa;YACvE,MAAM,EAAE,MAAK;AACX,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AACpB,gBAAA,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE;iBACrC;aACF;AACD,YAAA,MAAM,EAAE,CAAC,IAAsB,KAAI;AACjC,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACnB,gBAAA,IACE,IAAI,KAAK,gBAAgB,CAAC,MAAM;AAChC,oBAAA,IAAI,CAAC,YAAY,CAAC,aAAa,EAC/B;iBACD;aACF;AACF,SAAA,CAAC,CAAC;;QAGH,UAAU,CAAC,MAAK;AACd,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YACvE,IAAI,aAAa,EAAE;AACjB,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,aAAa,EACb,OAAO,EACP,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,OAAO,CACnC,CAAC;AACF,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,aAAa,EACb,QAAQ,EACR,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,MAAM,CACnC,CAAC;aACH;SACF,EAAE,CAAC,CAAC,CAAC;KACP;AAEO,IAAA,cAAc,CACpB,YAA0B,EAC1B,SAAA,GAAqB,KAAK,EAAA;AAE1B,QAAA,IAAI,UAAU,GAAG,YAAY,EAAE,UAAU,IAAI,aAAa,CAAC;;AAG3D,QAAA,MAAM,WAAW,GAAG,YAAY,EAAE,KAAK,IAAI,MAAM,CAAC;;AAGlD,QAAA,MAAM,eAAe,GAAG,SAAS,GAAG,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC;AAC5E,QAAA,MAAM,QAAQ,GAAG,YAAY,EAAE,QAAQ,IAAI,eAAe,CAAC;;AAG3D,QAAA,IAAI,CAAC,YAAY,EAAE,eAAe,EAAE;YAClC,QAAQ,QAAQ;gBACd,KAAK,YAAY,CAAC,OAAO;oBACvB,UAAU,IAAI,mBAAmB,CAAC;oBAClC,MAAM;gBACR,KAAK,YAAY,CAAC,MAAM;oBACtB,UAAU,IAAI,kBAAkB,CAAC;oBACjC,MAAM;gBACR,KAAK,YAAY,CAAC,OAAO;oBACvB,UAAU,IAAI,mBAAmB,CAAC;oBAClC,MAAM;gBACR,KAAK,YAAY,CAAC,IAAI,CAAC;AACvB,gBAAA;oBACE,UAAU,IAAI,qBAAqB,CAAC;oBACpC,MAAM;aACT;SACF;AAED,QAAA,OAAO,CAAG,EAAA,UAAU,CAAC,IAAI,EAAE,CAAU,OAAA,EAAA,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;KACrE;IAED,mBAAmB,GAAA;AACjB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;QACxC,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,IAAI,YAAY,CAAC,IAAI,CAAC;QACvE,MAAM,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAEvD,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,IAAI,MAAM;cACpE,MAAM,CAAC,IAAI;AACb,cAAE,OAAO,MAAM,KAAK,QAAQ;AAC5B,kBAAE,MAAM;AACR,kBAAE,OAAO,WAAW,KAAK,QAAQ;AAC/B,oBAAA,WAAW,KAAK,IAAI;AACpB,oBAAA,MAAM,IAAI,WAAW;sBACrB,WAAW,CAAC,IAAI;AAClB,sBAAE,cAAc,CAAC;KACpB;IAED,oBAAoB,GAAA;AAClB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;QACxC,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,IAAI,YAAY,CAAC,IAAI,CAAC;QACvE,MAAM,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;AAEvD,QAAA,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;AAClD,cAAE;gBACE,KAAK,EACH,MAAM,CAAC,KAAK;AACZ,qBAAC,OAAO,WAAW,KAAK,QAAQ,GAAG,WAAW,EAAE,KAAK,GAAG,MAAM,CAAC;AACjE,gBAAA,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,MAAM;AACpC,aAAA;AACH,cAAE;AACE,gBAAA,KAAK,EAAE,OAAO,WAAW,KAAK,QAAQ,GAAG,WAAW,EAAE,KAAK,GAAG,MAAM;AACpE,gBAAA,QAAQ,EAAE,MAAM;aACjB,CAAC;KACP;IAED,kBAAkB,GAAA;AAChB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;AACxC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,IAAI,YAAY,CAAC,IAAI,CAAC;QACvE,MAAM,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;;AAGvD,QAAA,MAAM,IAAI,GACR,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,IAAI,MAAM;cAC7D,MAAM,CAAC,IAAI;cACX,OAAO,WAAW,KAAK,QAAQ,IAAI,MAAM,IAAI,WAAW;kBACxD,WAAW,CAAC,IAAI;kBAChB,SAAS,CAAC;;QAGhB,OAAO,OAAO,IAAI,KAAK,QAAQ;AAC7B,cAAE,IAAI;AACN,cAAG,IAAkB,EAAE,IAAI,IAAI,0BAA0B,CAAC;KAC7D;IAED,kBAAkB,GAAA;AAChB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;QACxC,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,IAAI,YAAY,CAAC,IAAI,CAAC;QACvE,MAAM,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;AAEvD,QAAA,MAAM,IAAI,GACR,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,IAAI,MAAM;cAC5D,MAAM,CAAC,IAAkB;cAC1B,SAAS,CAAC;QAEhB,OAAO;YACL,KAAK,EACH,IAAI,EAAE,KAAK;AACX,iBAAC,OAAO,WAAW,KAAK,QAAQ,GAAG,WAAW,EAAE,KAAK,GAAG,SAAS,CAAC;AACpE,YAAA,QAAQ,EAAE,IAAI,EAAE,QAAQ,IAAI,QAAQ;AACpC,YAAA,eAAe,EAAE,IAAI,EAAE,eAAe,IAAI,aAAa;AACvD,YAAA,YAAY,EAAE,IAAI,EAAE,KAAK,KAAK,UAAU,GAAG,KAAK,GAAG,KAAK;AACxD,YAAA,OAAO,EAAE,KAAK;SACf,CAAC;KACH;IAED,oBAAoB,GAAA;AAClB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;QAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,IAAI,YAAY,CAAC,IAAI,CAAC;QACvE,MAAM,YAAY,GAAG,aAAa,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;QAEzD,OAAO,OAAO,OAAO,KAAK,QAAQ;AAChC,cAAE,OAAO;cACP,OAAO,EAAE,IAAI;iBACV,OAAO,YAAY,KAAK,QAAQ;sBAC7B,YAAY,EAAE,IAAI;sBAClB,eAAe,CAAC,CAAC;KAC5B;IAED,qBAAqB,GAAA;AACnB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;QAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,IAAI,YAAY,CAAC,IAAI,CAAC;QACvE,MAAM,YAAY,GAAG,aAAa,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;AAEzD,QAAA,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI;AACpD,cAAE;gBACE,KAAK,EACH,OAAO,CAAC,KAAK;AACb,qBAAC,OAAO,YAAY,KAAK,QAAQ,GAAG,YAAY,EAAE,KAAK,GAAG,MAAM,CAAC;AACnE,gBAAA,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,MAAM;AACpC,gBAAA,SAAS,EAAE,OAAO,CAAC,QAAQ,IAAI,MAAM;AACtC,aAAA;AACH,cAAE;AACE,gBAAA,KAAK,EACH,OAAO,YAAY,KAAK,QAAQ,GAAG,YAAY,EAAE,KAAK,GAAG,MAAM;AACjE,gBAAA,QAAQ,EAAE,MAAM;AAChB,gBAAA,SAAS,EAAE,MAAM;aAClB,CAAC;KACP;+GA3OU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAf,IAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,iIAFjB,CAAC,mBAAmB,EAAE,cAAc,CAAC,+CCxElD,4wBAuBA,EAAA,MAAA,EAAA,CAAA,mrCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAd,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAc,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAnB,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,KAAA,EAAA,UAAA,EAAA,UAAA,EAAA,KAAA,EAAA,YAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDmDa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAGV,SAAA,EAAA,CAAC,mBAAmB,EAAE,cAAc,CAAC,EAAA,QAAA,EAAA,4wBAAA,EAAA,MAAA,EAAA,CAAA,mrCAAA,CAAA,EAAA,CAAA;0KAGvC,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACI,OAAO,EAAA,CAAA;sBAAhB,MAAM;gBACG,MAAM,EAAA,CAAA;sBAAf,MAAM;;;MEjEI,cAAc,CAAA;+GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAd,cAAc,EAAA,YAAA,EAAA,CAJV,iBAAiB,CAAA,EAAA,OAAA,EAAA,CACtB,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,mBAAmB,CAAA,EAAA,OAAA,EAAA,CAC/D,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEhB,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,cAAc,YAHf,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAG9D,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,iBAAiB,CAAC;oBACjC,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,mBAAmB,CAAC;oBAC1E,OAAO,EAAE,CAAC,iBAAiB,CAAC;AAC7B,iBAAA,CAAA;;;MCHY,wBAAwB,CAAA;AACnC,IAAA,WAAA,CAAoB,cAA8B,EAAA;QAA9B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;KAAI;AAEtD,IAAA,IAAI,CAAC,KAAmB,EAAA;QACtB,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;gBACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,MAAM,EAAE,KAAK,CAAC,MAAM;AACpB,gBAAA,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI;AACzB,aAAA,CAAC,CAAC;SACJ;KACF;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;KAC7B;+GAhBU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAmB,IAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,yDCRrC,8CACA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAd,IAAA,CAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,YAAA,EAAA,YAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDOa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,SAAS;+BACE,mBAAmB,EAAA,QAAA,EAAA,8CAAA,EAAA,CAAA;;;MEOlB,qBAAqB,CAAA;+GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAArB,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,qBAAqB,iBALjB,wBAAwB,CAAA,EAAA,OAAA,EAAA,CAC7B,YAAY,EAAE,WAAW,aACzB,wBAAwB,CAAA,EAAA,CAAA,CAAA,EAAA;AAGvB,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,qBAAqB,aAFrB,CAAC,cAAc,CAAC,EAFjB,OAAA,EAAA,CAAA,YAAY,EAAE,WAAW,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIxB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,wBAAwB,CAAC;AACxC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC;oBACpC,OAAO,EAAE,CAAC,wBAAwB,CAAC;oBACnC,SAAS,EAAE,CAAC,cAAc,CAAC;AAC5B,iBAAA,CAAA;;;MCgIY,kBAAkB,CAAA;+GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,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,kBAAkB,YA7G3B,YAAY;YACZ,WAAW;YACX,0BAA0B;YAC1B,yBAAyB;;YAGzB,qBAAqB;YACrB,iBAAiB;YACjB,mBAAmB;YACnB,mBAAmB;YACnB,mBAAmB;YACnB,qBAAqB;YACrB,iBAAiB;;YAGjB,kBAAkB;YAClB,uBAAuB;;YAGvB,aAAa;;YAGb,YAAY;;YAGZ,YAAY;YACZ,iBAAiB;;YAGjB,kBAAkB;;YAGlB,mBAAmB;;YAGnB,oBAAoB;;YAGpB,cAAc;;YAGd,kBAAkB;;YAGlB,iBAAiB;;YAGjB,cAAc;;YAGd,cAAc;;AAGd,YAAA,qBAAqB,aAGrB,0BAA0B;YAC1B,yBAAyB;;YAGzB,qBAAqB;YACrB,iBAAiB;YACjB,mBAAmB;YACnB,mBAAmB;YACnB,mBAAmB;YACnB,qBAAqB;YACrB,iBAAiB;;YAGjB,kBAAkB;YAClB,uBAAuB;;YAGvB,aAAa;;YAGb,YAAY;;YAGZ,YAAY;YACZ,iBAAiB;;YAEjB,kBAAkB;;YAGlB,mBAAmB;;YAGnB,oBAAoB;;YAGpB,cAAc;;YAGd,kBAAkB;;YAGlB,iBAAiB;;YAGjB,cAAc;;YAGd,cAAc;;YAGd,qBAAqB,CAAA,EAAA,CAAA,CAAA,EAAA;AAGZ,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,kBAAkB,YA7G3B,YAAY;YACZ,WAAW;YACX,0BAA0B;YAC1B,yBAAyB;;YAGzB,qBAAqB;YACrB,iBAAiB;YACjB,mBAAmB;YACnB,mBAAmB;YACnB,mBAAmB;YACnB,qBAAqB;YACrB,iBAAiB;;YAGjB,kBAAkB;YAClB,uBAAuB;;YAGvB,aAAa;;YAGb,YAAY;;YAGZ,YAAY;YACZ,iBAAiB;;YAGjB,kBAAkB;;YAGlB,mBAAmB;;YAGnB,oBAAoB;;YAGpB,cAAc;;YAGd,kBAAkB;;YAGlB,iBAAiB;;YAGjB,cAAc;;YAGd,cAAc;;AAGd,YAAA,qBAAqB,EAGrB,0BAA0B;YAC1B,yBAAyB;;YAGzB,qBAAqB;YACrB,iBAAiB;YACjB,mBAAmB;YACnB,mBAAmB;YACnB,mBAAmB;YACnB,qBAAqB;YACrB,iBAAiB;;YAGjB,kBAAkB;YAClB,uBAAuB;;YAGvB,aAAa;;YAGb,YAAY;;YAGZ,YAAY;YACZ,iBAAiB;;YAEjB,kBAAkB;;YAGlB,mBAAmB;;YAGnB,oBAAoB;;YAGpB,cAAc;;YAGd,kBAAkB;;YAGlB,iBAAiB;;YAGjB,cAAc;;YAGd,cAAc;;YAGd,qBAAqB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGZ,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBA/G9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,0BAA0B;wBAC1B,yBAAyB;;wBAGzB,qBAAqB;wBACrB,iBAAiB;wBACjB,mBAAmB;wBACnB,mBAAmB;wBACnB,mBAAmB;wBACnB,qBAAqB;wBACrB,iBAAiB;;wBAGjB,kBAAkB;wBAClB,uBAAuB;;wBAGvB,aAAa;;wBAGb,YAAY;;wBAGZ,YAAY;wBACZ,iBAAiB;;wBAGjB,kBAAkB;;wBAGlB,mBAAmB;;wBAGnB,oBAAoB;;wBAGpB,cAAc;;wBAGd,kBAAkB;;wBAGlB,iBAAiB;;wBAGjB,cAAc;;wBAGd,cAAc;;wBAGd,qBAAqB;AACtB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,0BAA0B;wBAC1B,yBAAyB;;wBAGzB,qBAAqB;wBACrB,iBAAiB;wBACjB,mBAAmB;wBACnB,mBAAmB;wBACnB,mBAAmB;wBACnB,qBAAqB;wBACrB,iBAAiB;;wBAGjB,kBAAkB;wBAClB,uBAAuB;;wBAGvB,aAAa;;wBAGb,YAAY;;wBAGZ,YAAY;wBACZ,iBAAiB;;wBAEjB,kBAAkB;;wBAGlB,mBAAmB;;wBAGnB,oBAAoB;;wBAGpB,cAAc;;wBAGd,kBAAkB;;wBAGlB,iBAAiB;;wBAGjB,cAAc;;wBAGd,cAAc;;wBAGd,qBAAqB;AACtB,qBAAA;AACF,iBAAA,CAAA;;;MChIY,sBAAsB,CAAA;AAIjC,IAAA,WAAA,CAAoB,MAAc,EAAA;QAAd,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAFzB,QAAA,IAAA,CAAA,UAAU,GAAe,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAExB;AAEtC,IAAA,QAAQ,MAAW;IAEnB,oBAAoB,GAAA;QAClB,OAAO;AACL,YAAA,eAAe,EAAE,MAAM;AACvB,YAAA,WAAW,EAAE,MAAM;AACnB,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,SAAS,EAAE,8BAA8B;SAC1C,CAAC;KACH;IAED,YAAY,GAAA;AACV,QAAA,OAAO,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,QAAQ;AAC7C,cAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI;cACzB,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;KAChC;IAED,cAAc,GAAA;QACZ,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,QAAQ,EAAE;YAC5C,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM;gBAC3C,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,IAAI,QAAQ;gBACnD,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,IAAI,MAAM;aACnD,CAAC;SACH;AACD,QAAA,OAAO,EAAE,CAAC;KACX;AAED,IAAA,YAAY,CAAC,IAAa,EAAA;QACxB,OAAO,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;KACzB;AAED,IAAA,aAAa,CAAC,IAAU,EAAA;AACtB,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC5B,OAAO;AACL,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,MAAM;AAC3B,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,QAAQ;AACnC,gBAAA,eAAe,EAAE,IAAI,CAAC,eAAe,IAAI,aAAa;AACtD,gBAAA,YAAY,EAAE,IAAI,CAAC,KAAK,KAAK,UAAU,GAAG,KAAK,GAAG,KAAK;AACvD,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE,cAAc;aACxB,CAAC;SACH;AACD,QAAA,OAAO,EAAE,CAAC;KACX;AAED,IAAA,cAAc,CAAC,KAAU,EAAA;QACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,EAAE;YAChD,OAAO;AACL,gBAAA,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,SAAS;AAC/B,gBAAA,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,MAAM;AAClC,gBAAA,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,MAAM;aACvC,CAAC;SACH;AACD,QAAA,OAAO,EAAE,CAAC;KACX;IAED,aAAa,GAAA;QACX,OAAO,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,QAAQ,CAAC;KACjD;IAED,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YACxB,MAAM,IAAI,GAAI,IAAI,CAAC,SAAS,CAAC,KAAoB,CAAC,IAAI,CAAC;AACvD,YAAA,OAAO,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,GAAG,IAAI,EAAE,IAAI,CAAC;SACrD;AACD,QAAA,OAAO,SAAS,CAAC;KAClB;AAED,IAAA,YAAY,CAAC,KAAU,EAAA;AACrB,QAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK,CAAC;KACvE;AAED,IAAA,WAAW,CAAC,GAAY,EAAA;QACtB,IAAI,GAAG,EAAE;YACP,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SAC7B;KACF;+GAtFU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAc,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,qHCVnC,snCAqCA,EAAA,MAAA,EAAA,CAAA,miBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAd,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,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,EAAAA,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,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAoB,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FD3Ba,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,snCAAA,EAAA,MAAA,EAAA,CAAA,miBAAA,CAAA,EAAA,CAAA;6EAKlB,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;;;MEFK,mBAAmB,CAAA;+GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,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,mBAAmB,iBAJf,sBAAsB,CAAA,EAAA,OAAA,EAAA,CAC3B,YAAY,EAAE,YAAY,aAC1B,sBAAsB,CAAA,EAAA,CAAA,CAAA,EAAA;gHAErB,mBAAmB,EAAA,OAAA,EAAA,CAHpB,YAAY,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGzB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,sBAAsB,CAAC;AACtC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;oBACrC,OAAO,EAAE,CAAC,sBAAsB,CAAC;AAClC,iBAAA,CAAA;;;MCcY,0BAA0B,CAAA;AAoBrC,IAAA,WAAA,GAAA;QAlBS,IAAW,CAAA,WAAA,GAAW,SAAS,CAAC;QAChC,IAAU,CAAA,UAAA,GAAW,MAAM,CAAC;QAC5B,IAAU,CAAA,UAAA,GAAW,OAAO,CAAC;;QAQ7B,IAAW,CAAA,WAAA,GAAW,OAAO,CAAC;QAC9B,IAAU,CAAA,UAAA,GAAW,QAAQ,CAAC;QAQrC,KAAK,CAAC,QAAQ,CAAC,GAAG,aAAa,EAAE,eAAe,CAAC,CAAC;KACnD;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;IAED,WAAW,GAAA;QACT,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;AAED;;AAEG;IACK,eAAe,GAAA;AACrB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;QAC5C,IAAI,CAAC,YAAY,EAAE,CAAC;AAEpB,QAAA,MAAM,MAAM,GAAuB;AACjC,YAAA,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,MAAM;AACrC,YAAA,IAAI,EAAE,IAAI,CAAC,qBAAqB,EAAE;AAClC,YAAA,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE;SAChC,CAAC;QAEF,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACxC;AAED;;AAEG;IACK,qBAAqB,GAAA;AAC3B,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAE5C,OAAO;AACL,YAAA,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM;AACpC,YAAA,QAAQ,EAAE;;AAER,gBAAA;AACE,oBAAA,KAAK,EAAE,IAAI,CAAC,WAAW,IAAI,SAAS;AACpC,oBAAA,IAAI,EAAE,YAAY;oBAClB,WAAW,EAAE,SAAS;AACtB,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,eAAe,EAAE,aAAa;AAC9B,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,IAAI,EAAE,KAAK;AACX,oBAAA,OAAO,EAAE,GAAG;AACZ,oBAAA,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACnB,iBAAA;;AAED,gBAAA,GAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAsB;AACjD,aAAA;SACF,CAAC;KACH;AAED;;AAEG;IACK,eAAe,GAAA;QACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAqB,CAAC;AAE7D,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;YACpD,MAAM,YAAY,GAAG,QAAQ;AAC1B,iBAAA,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBACrC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,SAAS,CAAC,CAAC;AAEtC,YAAA,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;AAAE,gBAAA,OAAO,CAAC,CAAC;AAExC,YAAA,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACnC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAEnD,YAAA,OAAO,YAAY,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;AAClC,kBAAE,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC;AACvD,kBAAE,YAAY,CAAC,MAAM,CAAC,CAAC;AAC3B,SAAC,CAAC,CAAC;KACJ;AAED;;AAEG;IACK,eAAe,GAAA;QACrB,OAAO;AACL,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,mBAAmB,EAAE,KAAK;AAC1B,YAAA,OAAO,EAAE;gBACP,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;gBAC1C,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE;AAC7C,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,CAAC,EAAE;AACD,oBAAA,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,MAAM,EAAE;oBACrE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE;AAC9B,iBAAA;AACD,gBAAA,CAAC,EAAE;AACD,oBAAA,KAAK,EAAE;AACL,wBAAA,OAAO,EAAE,IAAI;AACb,wBAAA,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,OAAO;AAC7C,qBAAA;oBACD,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG;oBACpC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG;AACpC,oBAAA,KAAK,EAAE;wBACL,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ;wBACrD,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;AAClC,wBAAA,KAAK,EAAE,MAAM;AACd,qBAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,iBAAiB;AACzB,qBAAA;AACD,oBAAA,MAAM,EAAE;AACN,wBAAA,OAAO,EAAE,IAAI;AACb,wBAAA,KAAK,EAAE,MAAM;AACd,qBAAA;AACF,iBAAA;AACF,aAAA;SACF,CAAC;KACH;AAED;;AAEG;IACK,YAAY,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,KAAK,GAAG,SAAgB,CAAC;SAC/B;KACF;+GAjJU,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,qZCvBvC,6PASA,EAAA,MAAA,EAAA,CAAA,gIAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDca,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;+BACE,qBAAqB,EAAA,QAAA,EAAA,6PAAA,EAAA,MAAA,EAAA,CAAA,gIAAA,CAAA,EAAA,CAAA;wDAKtB,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAGG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAGG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAGN,SAAS,EAAA,CAAA;sBADR,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;ME7B/B,uBAAuB,CAAA;+GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,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,uBAAuB,EAJnB,YAAA,EAAA,CAAA,0BAA0B,CAC/B,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,0BAA0B,CAAA,EAAA,CAAA,CAAA,EAAA;AAEzB,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,uBAAuB,YAHxB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGX,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,0BAA0B,CAAC;oBAC1C,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,0BAA0B,CAAC;AACtC,iBAAA,CAAA;;;MCKY,oBAAoB,CAAA;AAoB/B,IAAA,WAAA,GAAA;AAlBS,QAAA,IAAA,CAAA,MAAM,GAAoB;AACjC,YAAA,UAAU,EAAE,QAAQ;AACpB,YAAA,UAAU,EAAE,QAAQ;AACpB,YAAA,eAAe,EAAE,YAAY;AAC7B,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,UAAU,EAAE;AACV,gBAAA,UAAU,EAAE,iBAAiB;AAC7B,gBAAA,KAAK,EAAE,YAAY;AACnB,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,IAAI,EAAE;AACJ,oBAAA,SAAS,EAAE,EAAE;AACd,iBAAA;AACF,aAAA;SACF,CAAC;AAKA,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;KACrD;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACvE,IAAI,CAAC,eAAe,EAAE,CAAC;SACxB;KACF;IAEO,qBAAqB,GAAA;QAC3B,MAAM,UAAU,GACd,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,KAAK,QAAQ;AAC/C,cAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK;AAC9B,cAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,KAAoB,EAAE,IAAI,IAAI,YAAY,CAAC;QAE1E,OAAO;AACL,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,IAAI,EAAE;AACJ,gBAAA,MAAM,EAAE,EAAE;AACV,gBAAA,QAAQ,EAAE;AACR,oBAAA;AACE,wBAAA,KAAK,EAAE,UAAU;AACjB,wBAAA,IAAI,EAAE,EAAE;AACR,wBAAA,WAAW,EAAE,SAAS;AACtB,wBAAA,eAAe,EAAE,yBAAyB;AAC1C,wBAAA,WAAW,EAAE,CAAC;AACd,wBAAA,OAAO,EAAE,GAAG;AACZ,wBAAA,IAAI,EAAE,IAAI;AACV,wBAAA,WAAW,EAAE,CAAC;AACd,wBAAA,oBAAoB,EAAE,SAAS;AAChC,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,UAAU,EAAE,IAAI;AAChB,gBAAA,OAAO,EAAE;AACP,oBAAA,MAAM,EAAE;AACN,wBAAA,OAAO,EAAE,IAAI;AACb,wBAAA,QAAQ,EAAE,QAAQ;AACnB,qBAAA;AACD,oBAAA,OAAO,EAAE;AACP,wBAAA,SAAS,EAAE;4BACT,KAAK,EAAE,CAAC,OAAY,KAClB,CAAA,EAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAA,EAAA,EAAK,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,CAAA;AACxD,yBAAA;AACF,qBAAA;AACD,oBAAA,UAAU,EAAE;AACV,wBAAA,OAAO,EAAE,KAAK;AACf,qBAAA;AACF,iBAAA;AACD,gBAAA,MAAM,EAAE;AACN,oBAAA,CAAC,EAAE;AACD,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,KAAK,EAAE;AACL,4BAAA,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU;AACjC,4BAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;AAC7B,yBAAA;AACF,qBAAA;AACD,oBAAA,CAAC,EAAE;AACD,wBAAA,KAAK,EAAE;AACL,4BAAA,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU;AACjC,4BAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;AAC7B,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;SACF,CAAC;KACH;IAEO,eAAe,GAAA;AACrB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;AACxD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;QAEtD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC1C,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;;AAGjD,QAAA,IAAI,CAAC,eAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;KAChD;+GAnGU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,gICbjC,oHAGA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDUa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,oHAAA,EAAA,CAAA;wDAKhB,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;;;MEJK,iBAAiB,CAAA;+GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAjB,iBAAiB,EAAA,YAAA,EAAA,CAJb,oBAAoB,CACzB,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,YAAY,EAAE,aAAa,CAAA,EAAA,OAAA,EAAA,CACzC,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEnB,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,iBAAiB,EAHlB,OAAA,EAAA,CAAA,YAAY,EAAE,YAAY,EAAE,aAAa,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGxC,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,oBAAoB,CAAC;AACpC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,aAAa,CAAC;oBACpD,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAChC,iBAAA,CAAA;;;ACVD;;MCOa,gBAAgB,CAAA;AAL7B,IAAA,WAAA,GAAA;QAMW,IAAG,CAAA,GAAA,GAAW,MAAM,CAAC;QACrB,IAAO,CAAA,OAAA,GAKK,YAAY,CAAC;QAEJ,IAAO,CAAA,OAAA,GAAG,MAAM,CAAC;QAChB,IAAQ,CAAA,QAAA,GAAG,MAAM,CAAC;AAOlD,KAAA;AANC,IAAA,IAA8B,OAAO,GAAA;QACnC,OAAO,IAAI,CAAC,GAAG,CAAC;KACjB;AACD,IAAA,IAAyC,cAAc,GAAA;QACrD,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;+GAhBU,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,sQCP7B,6BACA,EAAA,MAAA,EAAA,CAAA,iHAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDMa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;+BACE,UAAU,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,iHAAA,CAAA,EAAA,CAAA;8BAKX,GAAG,EAAA,CAAA;sBAAX,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAOwB,OAAO,EAAA,CAAA;sBAApC,WAAW;uBAAC,eAAe,CAAA;gBACG,QAAQ,EAAA,CAAA;sBAAtC,WAAW;uBAAC,gBAAgB,CAAA;gBACC,OAAO,EAAA,CAAA;sBAApC,WAAW;uBAAC,WAAW,CAAA;gBAGiB,cAAc,EAAA,CAAA;sBAAtD,WAAW;uBAAC,sBAAsB,CAAA;;;MEXxB,aAAa,CAAA;+GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAb,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,aAAa,iBAJT,gBAAgB,CAAA,EAAA,OAAA,EAAA,CACrB,YAAY,EAAE,YAAY,aAC1B,gBAAgB,CAAA,EAAA,CAAA,CAAA,EAAA;gHAEf,aAAa,EAAA,OAAA,EAAA,CAHd,YAAY,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGzB,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,gBAAgB,CAAC;AAChC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;oBACrC,OAAO,EAAE,CAAC,gBAAgB,CAAC;AAC5B,iBAAA,CAAA;;;ACTD;;AAEG;;;;"}