{"version":3,"file":"magnolia-grid-angular.mjs","sources":["../../../../projects/magnolia/grid/src/lib/services/utils.service.ts","../../../../projects/magnolia/grid/src/lib/services/viewport.service.ts","../../../../projects/magnolia/grid/src/lib/services/context.service.ts","../../../../projects/magnolia/grid/src/lib/services/grid.service.ts","../../../../projects/magnolia/grid/src/lib/pipes/grid-width.pipe.ts","../../../../projects/magnolia/grid/src/lib/components/grid-base.component.ts","../../../../projects/magnolia/grid/src/lib/components/grid-resize.directive.ts","../../../../projects/magnolia/grid/src/lib/pipes/grid-id-generator.pipe.ts","../../../../projects/magnolia/grid/src/lib/components/grid-area.component.ts","../../../../projects/magnolia/grid/src/lib/components/grid-area.component.html","../../../../projects/magnolia/grid/src/lib/grid.module.ts","../../../../projects/magnolia/grid/src/public-api.ts","../../../../projects/magnolia/grid/src/magnolia-grid-angular.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class UtilsService {\n  urlJoin(...parts: string[]): string {\n    if (parts.length === 0) {\n      return '';\n    } \n\n    let url = '';\n    for (let i = 0; i < parts.length; i++) {\n      let part = parts[i];\n      // Removing the ending slashes\n      part = part.replace(/\\/+$/, '');\n  \n      if (i !== 0) {\n        // Removing the starting slashes\n        part = part.replace(/^\\/+/, '');\n        \n        part = '/' + part;\n      }\n    \n      url += part;\n    }\n\n    return url;\n  }\n\n  createIdByPathAndPrefix(path: string, prefix: string = ''): string {\n    if (!path) {\n      console.error('path is missing.');\n      return '';\n    }\n    return `${prefix}${path.replaceAll('/', '_')}`;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { IViewport } from '../types/iviewport';\nimport { UtilsService } from '../services/utils.service';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ViewportService {\n  private defaultViewportId: string = '';\n  private currentViewport = new BehaviorSubject<string>('');\n  breakpointsSubscription: Subscription | null = null;\n  private viewports: IViewport[] = [];\n\n  constructor(private breakpointObserver: BreakpointObserver, private utilsService: UtilsService) { }\n\n  setCustomBreakpoints(viewports: IViewport[]): void {\n    if(!viewports || viewports.length === 0) {\n      return;\n    };\n\n    // from the largest viewport to the smallest viewport\n    const sortedViewports = viewports.sort((a, b) => {\n      const value = (val: number) => val === 0 ? Number.POSITIVE_INFINITY : val;\n      return value(b.width) - value(a.width);\n    });\n\n    const mediaQueryMap = this.getMediaQueryMap(sortedViewports);\n    const mediaQueries = sortedViewports.map(vp => mediaQueryMap.get(vp.id) || '');\n\n    if (this.breakpointsSubscription) {\n      this.breakpointsSubscription.unsubscribe();\n    }\n  \n    this.breakpointsSubscription = this.breakpointObserver.observe(mediaQueries).subscribe({\n      next: () => {\n        const matchingViewportId = Array.from(mediaQueryMap.keys()).find(vpId => matchMedia(mediaQueryMap.get(vpId) || '').matches);\n        if (matchingViewportId) {\n          this.currentViewport.next(matchingViewportId);\n        } else {\n          this.currentViewport.next(this.defaultViewportId);\n        }\n      },\n      error: (err) => console.error('Error observing breakpoints:', err)\n    });  \n  }\n\n  getCurrentViewport() {\n    return this.currentViewport.asObservable();\n  }\n\n  private getMediaQueryMap(sortedViewports: IViewport[]): Map<string, string> {\n    const mediaQueryMap = new Map<string, string>();\n\n    for (let i = 0; i < sortedViewports.length; i++) {\n      const vp = sortedViewports[i];\n      let nextVp;\n      let query;\n      \n      if (i === 0) { // the largest viewport\n        nextVp = sortedViewports[i+1];\n        query = `(min-width: ${nextVp['width']}${nextVp.unit})`;\n      } else if (i === sortedViewports.length - 1) { // the smallest viewport\n        query = `(not (min-width: ${vp['width']}${vp.unit}))`;\n      } else {\n        nextVp = sortedViewports[i+1];\n        query = `(min-width: ${nextVp['width']}${nextVp.unit}) and (not (min-width: ${vp['width']}${vp.unit}))`;\n      }\n\n      mediaQueryMap.set(vp.id, query);\n    }\n\n    return mediaQueryMap;\n  }\n\n  getDefaultViewportId(): string {\n    return this.defaultViewportId;\n  }\n\n  private getDefaultViewportIdFromViewports(): string {\n    const defaultViewport = this.viewports.find(vp => vp.defaultViewport);\n    if (!defaultViewport) {\n      console.error('No default viewport found');\n      return '';\n    }\n    return defaultViewport.id;\n  }\n\n  async fetchViewports({gridViewportsUrl, path}: { path: string, gridViewportsUrl: string}): Promise<IViewport[]> {\n    try {\n      this.viewports = [];\n      if (!gridViewportsUrl || !path) {\n        console.error(\"'gridViewportsUrl' or 'path' is missing.\");\n        return this.viewports;\n      }\n  \n      const response = await fetch(\n        this.utilsService.urlJoin(gridViewportsUrl, path),\n        {\n          credentials: 'include'\n        }\n      );\n      if (!response.ok) {\n        return this.viewports;\n      }\n  \n      const data = await response.json();\n      this.viewports = data || [];\n      this.defaultViewportId = this.getDefaultViewportIdFromViewports();\n      this.setCustomBreakpoints(this.viewports);\n      return this.viewports;\n      \n    } catch (e) {\n      console.error('An error occurred when fetching viewports.');\n      return this.viewports;\n    }\n  };\n\n  getViewports(): IViewport[] {\n    return this.viewports;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\ninterface Context {\n  magnoliaContext?: any,\n  mgnlAuthorServer?: string,\n  gridPrefix?: string\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ContextService {\n  private context = new BehaviorSubject<Context|null>(null);\n  context$ = this.context.asObservable();\n\n  setValue(newContext: Context): void {\n    this.context.next(newContext);\n  }\n\n  getContext(): Context|null {\n    const contextValue = this.context.getValue();\n    if (!contextValue) {\n      return null;\n    }\n\n    if (contextValue.mgnlAuthorServer) {\n      const magnoliaContext = contextValue.magnoliaContext;\n      if (!magnoliaContext || Object.keys(magnoliaContext).length === 0) {\n        console.error('No magnoliaContext found.');\n      }\n    }\n    \n    return contextValue;\n  }\n\n  /*\n   * Check if the application is running as an author instance.\n  */\n  isAuthor(): boolean {\n    return !!this.getContext()?.mgnlAuthorServer;\n  }\n}","import { Injectable } from '@angular/core';\nimport { ViewportContent } from '../types/viewportcontent';\nimport { Grid } from '../types/grid';\nimport { ViewportUpdateRequest } from '../types/viewportupdaterequest';\nimport { ContextService } from '../services/context.service';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class GridService {\n\n  constructor (private contextService: ContextService) { }\n\n  getViewportRenderingValueById(gridData: any, viewportId: string) : ViewportContent {\n    const grid = this.parseGrid(gridData);\n    const viewport = grid ? grid[viewportId] : undefined;\n    return this.getViewportRenderingValue(viewport);\n  }\n\n  getViewportRenderingValue(viewport: any) : ViewportContent {\n    const maxColumns = viewport?.['max-cols'] || 12;\n    let columns = viewport?.cols || 12;\n    let offset = viewport?.offset || 0;\n    columns = Math.min(maxColumns, columns);\n    offset = Math.min(offset, maxColumns - columns);\n    const newLine = !!viewport?.['new-line'];\n    const hide = !!viewport?.hide;\n    const useDefaultSettings = !!viewport?.['use-default-settings'];\n\n    return {\n      'use-default-settings': useDefaultSettings,\n      cols: columns,\n      offset,\n      \"new-line\": newLine,\n      hide,\n      \"max-cols\": maxColumns\n    };\n  }\n\n  async updateViewport(gridUpdateViewportUrl: string, payload: ViewportUpdateRequest): Promise<Grid|null> {\n    const response = await fetch(\n      gridUpdateViewportUrl, {\n        method: \"POST\",\n        body: JSON.stringify(payload),\n        headers: {\n          \"Content-type\": \"application/json\"\n        },\n        credentials: 'include'\n      }\n    );\n\n    if (!response.ok) {\n      console.error('Could not update viewports.', payload);\n      return null;\n    }\n\n    const data = await response.json();\n    return data;\n  }\n\n  parseGrid(gridData: any): Grid | null {\n    let grid: { [key: string]: any } = {};\n    if (typeof gridData === 'string') {\n      try {\n        grid = JSON.parse(gridData);\n      } catch(e) {\n        console.error('An error occurred when parsing grid data.', e);\n      }\n    } else if (typeof gridData === 'object' && gridData) {\n      grid = gridData;\n    }\n    return Object.keys(grid).reduce((acc: {[viewportId: string]: ViewportContent }, key) => {\n      acc[key] = this.convertViewport(grid[key]);\n      return acc;\n    }, {});\n  }\n\n  getGridPrefix(): string {\n    const contextGridPrefix = this.contextService.getContext()?.gridPrefix;\n    return contextGridPrefix ? contextGridPrefix : 'mgnl-grid';\n  }\n\n  shouldRenderOffsetElement(gridData: Grid | null): boolean {\n    if (!gridData) {\n      return false;\n    }\n    \n    return Object.keys(gridData).some(vpId => {\n      const viewport = gridData[vpId];\n      if (!viewport ) {\n        return false;\n      }\n      \n      const renderingValue = this.getViewportRenderingValue(viewport);\n      return renderingValue.offset > 0;\n    });\n  }\n\n  private convertViewport(viewport: any): ViewportContent {\n    const oldPropNames = Object.keys(this.transformMaps);\n    if (Object.keys(viewport).some(key => oldPropNames.includes(key))) {\n      let newViewport: {\n        [viewportId: string]: any \n      } = {};\n      Object.keys(viewport).forEach(key => {\n        if (!oldPropNames.includes(key)) {\n          newViewport[key] = viewport[key];\n        } else {\n          newViewport[this.transformMaps[key]] = viewport[key];\n        }\n      });\n\n      return newViewport as ViewportContent ;\n    }\n    return viewport;\n  }\n\n  private transformMaps: { [propName: string]: string } = {\n    columns: 'cols',\n    newLine: 'new-line',\n    maxColumns: 'max-cols',\n    useDefaultSettings: 'use-default-settings',\n  };\n}","import { Pipe, PipeTransform } from '@angular/core';\nimport { ContextService } from '../services/context.service';\nimport { GridService } from '../services//grid.service';\n\n@Pipe({\n  name: 'gridWidth',\n  pure: true,\n  standalone: true\n})\nexport class GridWidthPipe implements PipeTransform {\n  private gridPrefix: string;\n  private isMagnoliaEdit: boolean;\n\n  constructor(contextService: ContextService, private gridService: GridService) {\n    this.gridPrefix = this.gridService.getGridPrefix();\n    this.isMagnoliaEdit = contextService.getContext()?.magnoliaContext?.isMagnoliaEdit;\n  }\n\n  transform(childContent: any, type: string = 'component'): any {\n    const defaultClass = `${this.gridPrefix}-cols-12`;\n\n    if (!childContent || !childContent.grid) {\n      return defaultClass;\n    }\n    \n    const gridData = this.gridService.parseGrid(childContent.grid);\n    if (!gridData || Object.keys(gridData).length === 0) {\n      return defaultClass;\n    }\n\n    let classList;\n    switch(type) {\n      case 'wrapper':\n        classList = this.getWrapperClasses(gridData);\n        break;\n      case 'offset':\n        classList = this.getOffsetClasses(gridData);\n        break;\n      default:\n        classList = this.getComponentClasses(gridData);\n    }\n\n    return classList.join(' ');\n  }\n\n  private getWrapperClasses(gridData: any): string[] {\n    const classList: string[] = [`${this.gridPrefix}-wrapper`];\n\n    Object.keys(gridData).forEach(vpId => {\n      const viewport = gridData[vpId];\n      if (!viewport) {\n        return;\n      }\n\n      const renderingValue = this.gridService.getViewportRenderingValue(viewport);\n      if (!renderingValue['use-default-settings']) {\n        classList.push(`${this.gridPrefix}-wrapper-${vpId}-cols-${renderingValue.cols}-offset-${renderingValue.offset}`);\n      }\n\n      if (renderingValue['new-line']) {\n        classList.push(`${this.gridPrefix}-new-line-${vpId}`);\n      }\n    });\n\n    return classList;\n  }\n\n  private getOffsetClasses(gridData: any): string[] {\n    const classList: string[] = [];\n    Object.keys(gridData).forEach(vpId => {\n      const viewport = gridData[vpId];\n      if (!viewport) {\n        return;\n      }\n\n      const renderingValue = this.gridService.getViewportRenderingValue(viewport);\n\n      if (!renderingValue['use-default-settings']) {\n        const offset = renderingValue.offset;\n        classList.push(`${this.gridPrefix}-offset-${vpId}-${offset}`);\n      }\n    });\n\n    return classList;\n  }\n\n  private getComponentClasses(gridData: any): string[] {\n    const classList: string[] = [];\n    Object.keys(gridData).forEach(vpId => {\n      const viewport = gridData[vpId];\n      if (!viewport) {\n        return;\n      }\n\n      const renderingValue = this.gridService.getViewportRenderingValue(viewport);\n\n      if (!renderingValue['use-default-settings']) {\n        classList.push(`${this.gridPrefix}-cols-${vpId}-${renderingValue.cols}`);\n      }\n    \n      const elementWrapperExists = this.gridService.shouldRenderOffsetElement(gridData);\n      if (!elementWrapperExists && renderingValue['new-line']) {\n        classList.push(`${this.gridPrefix}-new-line-${vpId}`);\n      }\n\n      if (renderingValue['hide']) {\n        classList.push(`${this.gridPrefix}-hide${this.isMagnoliaEdit ? '-edit' : ''}-${vpId}`);\n      }\n    });\n\n    return classList;\n  }\n}","import { Input, OnDestroy, Injector, Component} from '@angular/core';\nimport { ViewportService } from '../services/viewport.service';\nimport { Subscription } from 'rxjs';\nimport { ContextService } from '../services/context.service';\nimport { GridService } from '../services/grid.service';\n\n@Component({\n  template: '',\n  standalone: true\n})\nexport class GridBaseComponent implements OnDestroy {\n  @Input() grid: any;\n  public currentViewport: string = '';\n  protected isMagnoliaEdit: boolean = false;\n  protected viewportService: ViewportService;\n  protected gridService: GridService;\n  protected contextService: ContextService;\n  private viewportSubscription: Subscription;\n  \n  constructor(protected injector: Injector) {\n    this.viewportService = injector.get(ViewportService);\n    this.gridService = injector.get(GridService);\n    this.contextService = injector.get(ContextService);\n    this.isMagnoliaEdit = this.contextService.getContext()?.magnoliaContext?.isMagnoliaEdit;\n    this.viewportSubscription = this.viewportService.getCurrentViewport().subscribe({\n      next: (currentViewportId) => {\n        this.setCurrentViewport(currentViewportId);\n      },\n      error: (err) => console.error('Error getting viewport:', err)\n    });\n  }\n  \n  setCurrentViewport(viewportId: string) {\n    this.currentViewport = viewportId;\n  }\n\n  renderOffsetPlaceholder(componentContent: any): boolean {\n    const gridData = this.gridService.parseGrid(componentContent.grid);\n    return this.gridService.shouldRenderOffsetElement(gridData);\n  }\n  \n  ngOnDestroy(): void {\n    this.viewportSubscription.unsubscribe();\n  }\n}\n","import { OnInit, Directive, ElementRef, Renderer2, OnDestroy, Input, OnChanges, SimpleChanges, Inject, PLATFORM_ID } from '@angular/core';\nimport { GridService } from '../services/grid.service';\nimport { ViewportUpdateRequest } from '../types/viewportupdaterequest';\nimport { ContextService } from '../services/context.service';\nimport { ViewportService } from '../services/viewport.service';\nimport { UtilsService } from '../services/utils.service';\nimport { Grid } from '../types/grid'\nimport { isPlatformBrowser } from '@angular/common';\n\n@Directive({\n  selector: '[gridResize]',\n  standalone: true\n})\nexport class GridResizeDirective implements OnInit, OnDestroy, OnChanges {\n  @Input() gridResize: { isMagnoliaEdit: boolean, currentViewport: string, content: any } = { isMagnoliaEdit: false, currentViewport: '', content: {} };\n  private observer: MutationObserver | undefined;\n  private editorBarButtonsElement: HTMLElement | undefined;\n  private isResizing = false;\n  private startX: number | null = null;\n  private previousX: number | null = null;\n  private resizingElement: HTMLElement | null = null;\n  private mousemoveListener: (e: MouseEvent) => void = () => { };\n  private documentMouseUpEvent: (e: MouseEvent) => void = () => { };\n  private gridContainerDiv: HTMLElement | null = null;\n  private resizeDiv: HTMLElement | null = null;\n  private resizeBtn: HTMLElement | null = null;\n  private currentWidth: number | null = null;\n  private currentOffset: number | null = null;\n  private startOnNewLine : boolean = false;\n  private nativeHTMTLElement: HTMLElement;\n  private isviewportUpdated: boolean = false;\n  private totalResizeWidth: number = 0;\n  private gridUpdateViewportUrl: string;\n  private gridPrefix: string = '';\n  private gridOverlayClass: string = '';\n  private gridContainerClass: string = '';\n  private gridResizableClass: string = '';\n  private offsetId = '';\n  private elementWrapperId = '';\n  private gridData: Grid | null = null;\n  private activeViewportTextElement: HTMLElement | null = null;\n\n  // the left/right position of the nearest parent component or the grid container.\n  private leftResizingBoundaryX: number | null = null;\n  private rightResizingBoundaryX: number | null  = null;\n\n  constructor(private elementRef: ElementRef, private renderer: Renderer2, private gridService: GridService, contextService: ContextService, private utilsService: UtilsService, private viewportService: ViewportService, @Inject(PLATFORM_ID) private platformId: Object) {\n    this.nativeHTMTLElement = this.elementRef.nativeElement;\n    const mgnlAuthorServer = contextService.getContext()?.mgnlAuthorServer;\n    this.gridUpdateViewportUrl = mgnlAuthorServer ? utilsService.urlJoin(mgnlAuthorServer, '/.rest/grid/v1/update-viewport') : '';\n    this.gridPrefix = this.gridService.getGridPrefix();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (!isPlatformBrowser(this.platformId) || !this.gridResize.isMagnoliaEdit || !this.gridResize.content?.grid) {\n      return;\n    }\n\n    const gridResizeInput = changes['gridResize'];\n    if (gridResizeInput) {\n      const previousViewport = gridResizeInput.previousValue?.currentViewport;\n      const currentViewport = gridResizeInput.currentValue?.currentViewport;\n      if (previousViewport === currentViewport) {\n        return;\n      }\n\n      if (currentViewport) {\n        if (this.resizeBtn) {\n          this.renderer.removeClass(this.resizeBtn, 'hide');\n        }\n        this.setComponentDataWithCurrentViewport();\n        this.setActiveViewportText(this.activeViewportTextElement);\n        this.adjustDraggingElementPosition();\n      } else {\n        if (this.resizeBtn) {\n          this.renderer.addClass(this.resizeBtn, 'hide');\n        }\n      }\n    }\n  }\n\n  ngOnInit(): void {\n    if (!isPlatformBrowser(this.platformId) || !this.gridResize.isMagnoliaEdit || !this.gridResize.content?.grid) {\n      return;\n    }\n    \n    this.observer = new MutationObserver(this.mutationCallback);\n    this.handleGridResizeButton();\n    \n    this.gridContainerClass = `${this.gridPrefix}-container`;\n    this.gridOverlayClass = `${this.gridPrefix}-overlay`;\n    this.gridResizableClass = `${this.gridPrefix}-resizable`;\n\n    const componentPath = this.gridResize.content['@path'];\n    this.offsetId = this.utilsService.createIdByPathAndPrefix(componentPath, 'offset');\n    this.elementWrapperId = this.utilsService.createIdByPathAndPrefix(componentPath, 'wrapper');\n  }\n\n  private setComponentDataWithCurrentViewport(): void {\n    this.currentWidth = null;\n    this.currentOffset = null;\n    this.isviewportUpdated = false;\n\n    this.gridData = this.gridData || this.gridService.parseGrid(this.gridResize.content.grid);\n    const viewportData = this.gridData?.[this.gridResize.currentViewport];\n    if (!viewportData) {\n      throw `No grid data found with the current viewport '${this.gridResize.currentViewport}' - component path '${this.gridResize.content['@path']}'`;\n    }\n    const renderingValue = this.gridService.getViewportRenderingValue(viewportData);\n    this.currentWidth = renderingValue.cols;\n    this.currentOffset = renderingValue.offset;\n    this.startOnNewLine = renderingValue['new-line'];\n  }\n\n  private setActiveViewportText(activeViewportElement: HTMLElement | null): void {\n    if (activeViewportElement) {\n      if (activeViewportElement.firstChild) {\n        this.renderer.removeChild(activeViewportElement, activeViewportElement.firstChild);\n      }\n      const text = this.renderer.createText(this.getActiveViewportText(this.gridResize.currentViewport));\n      this.renderer.appendChild(activeViewportElement, text);\n    }\n  }\n\n  private setResizingBoundaries(): void {\n    const parentComponent = this.getNearestParentComponent(this.nativeHTMTLElement, 'editable-component');\n    if (parentComponent) {\n      const rect = parentComponent.getBoundingClientRect();\n      this.leftResizingBoundaryX = rect.left;\n      this.rightResizingBoundaryX = rect.right;\n    } else {\n      const rect = this.gridContainerDiv?.getBoundingClientRect();\n      this.leftResizingBoundaryX = rect?.left || 0;\n      this.rightResizingBoundaryX = rect?.right || 0;\n    }\n  }\n\n  private handleGridResizeButton(): void {\n    this.observer?.observe(this.nativeHTMTLElement, {\n        childList: true,\n        subtree: false\n    });\n\n    setTimeout(() => {\n      this.observer?.disconnect();\n    }, 15000);\n  }\n\n  private mutationCallback = (mutations: MutationRecord[]) => {\n      mutations.forEach((mutation) => {\n        if (!mutation.addedNodes || mutation.addedNodes.length === 0) {\n          return;\n        }\n\n        mutation.addedNodes.forEach((addedNode: Node) => {\n          if (!(addedNode instanceof HTMLElement)) {\n            return;\n          }\n\n          if (!this.isEditorBarEl(addedNode)) {\n            return;\n          }\n\n          const element = Array.from(addedNode.children).reverse().find(node => node.classList.contains('mgnlEditorBarButtons'));\n          this.editorBarButtonsElement = element ? element as HTMLElement : undefined;\n          if (this.editorBarButtonsElement && !this.resizeBtnAlreadyExists(this.editorBarButtonsElement)) {\n            this.addGridResizeButton(this.editorBarButtonsElement);\n          }\n        });\n      })\n  }\n\n  private addGridResizeButton(editorBarButtonsEl: HTMLElement): void {\n    this.resizeBtn = document.createElement(\"div\");\n    this.renderer.addClass(this.resizeBtn, 'editorIcon');\n    this.renderer.addClass(this.resizeBtn, 'icon-resize');\n\n    if (!this.gridResize.currentViewport) {\n      this.renderer.addClass(this.resizeBtn, 'hide');\n    }\n\n    this.resizeBtn.addEventListener('click', (e: any) => {\n      // workaround: avoid losing focus on the editor bar of the component when clicking on the resize button.\n      editorBarButtonsEl.click();\n      this.toggleResize();\n    });\n\n    this.renderer.insertBefore(editorBarButtonsEl, this.resizeBtn, editorBarButtonsEl.firstChild);\n  }\n\n  private isEditorBarEl(addedEl: HTMLElement): boolean {\n    const editorBarClasses = ['mgnlEditorBar', 'component'];\n    return editorBarClasses.every((cl) => addedEl.classList.contains(cl));\n  }\n\n  private resizeBtnAlreadyExists(editorBarButtonsEl: Element): boolean {\n    const resizeBtnClasses = ['editorIcon', 'icon-resize'];\n    return Array.from(editorBarButtonsEl.children).some((el) => resizeBtnClasses.every((cl) => el.classList.contains(cl)));\n  }\n\n  private toggleResize() {\n    if (!this.gridContainerDiv) {\n      this.gridContainerDiv = this.getGridContainerDiv();\n    }\n    if (!this.gridContainerDiv) {\n      throw `Could not find ${this.gridContainerClass}`;\n    }\n\n    this.isResizing = !this.isResizing;\n\n    if (this.isResizing) {\n      this.createOverlayColumns(this.gridContainerDiv);\n      this.createResizeHandle();\n      this.resizeBtn?.classList.add('active');\n      // need to set the boundary values after clicking on the resizing button because modifying gaps and paddings for editing causes the positions of elements to be changed.\n      this.setResizingBoundaries();\n      this.displayActiveViewportText();\n    } else {\n      this.gridContainerDiv?.removeEventListener('mousemove', this.mousemoveListener);\n      document.removeEventListener('mouseup', this.documentMouseUpEvent);\n\n      if (this.isviewportUpdated) {\n        this.refreshPage();\n      } else {\n        this.gridContainerDiv?.querySelectorAll(`div.${this.gridOverlayClass}`).forEach((overlay) => overlay.remove());\n        this.gridContainerDiv?.classList.remove('overlay-active');\n        this.nativeHTMTLElement.querySelectorAll(`.${this.gridResizableClass}`).forEach((resizable) => resizable.remove());\n        this.resizeBtn?.classList.remove('active');\n        this.restoreDefaultResizeDiv();\n        this.renderer.removeChild(this.nativeHTMTLElement, this.activeViewportTextElement);\n        this.renderer.removeStyle(this.nativeHTMTLElement, 'min-height');\n      }\n    }\n  }\n\n  private displayActiveViewportText(): void {\n    this.activeViewportTextElement = this.renderer.createElement('span');\n    this.activeViewportTextElement?.classList.add(`${this.gridPrefix}-active-viewport-text`);\n    this.setActiveViewportText(this.activeViewportTextElement);\n    this.renderer.appendChild(this.nativeHTMTLElement, this.activeViewportTextElement);\n    this.adjustActiveViewportTextPosition();\n  }\n\n  private adjustActiveViewportTextPosition(): void {\n    let viewportTextRect = this.activeViewportTextElement?.getBoundingClientRect();\n    let containerRect = this.gridContainerDiv?.getBoundingClientRect();\n\n    if (!viewportTextRect || !containerRect) {\n      return;\n    } \n\n    this.renderer.removeClass(this.activeViewportTextElement, 'left');\n    this.renderer.removeClass(this.activeViewportTextElement, 'right');\n\n    if (viewportTextRect.left < containerRect.left) {\n      this.renderer.addClass(this.activeViewportTextElement, 'left');\n    } else if (viewportTextRect.right > containerRect.right) {\n      this.renderer.addClass(this.activeViewportTextElement, 'right');\n    }\n  }\n\n  private createOverlayColumns(gridContainerDiv: HTMLElement | null): void {\n    if (gridContainerDiv === null) {\n      return;\n    }\n\n    const overlays = gridContainerDiv.querySelectorAll(`div.${this.gridOverlayClass}`);\n    if (overlays.length > 0) {\n      overlays[0].dispatchEvent(new Event('beforeremove'));\n    }\n\n    const overlayDiv = document.createElement('div');\n    overlayDiv.classList.add(this.gridOverlayClass);\n\n    const maxCol = 12;\n    for (let i = 1; i <= maxCol; i++) {\n      overlayDiv.appendChild(document.createElement('div'));\n    }\n\n    overlayDiv.addEventListener('beforeremove', e => this.toggleResize());\n    this.renderer.insertBefore(gridContainerDiv, overlayDiv, gridContainerDiv.firstChild);\n    this.renderer.addClass(gridContainerDiv, 'overlay-active');\n  }\n\n  private createResizeHandle(): void {\n    this.resizeDiv = document.createElement('div');\n    const style = getComputedStyle(this.nativeHTMTLElement);\n    if (!this.nativeHTMTLElement.style.minHeight) {\n      this.nativeHTMTLElement.style.minHeight = this.getNumber(style.height) + 20 + 'px';\n    }\n\n    this.mousemoveListener = (event: MouseEvent) => {\n      if (!this.resizingElement\n          || !this.resizeDiv\n          || this.previousX == null\n          || this.startX == null\n          || this.currentOffset !== 0 && !this.currentOffset\n          || !this.currentWidth) {\n        return;\n      }\n\n      let deltaX = event.clientX - this.previousX;\n      this.previousX = event.clientX;\n\n      const oneColWidth = this.getOneColWidth();\n      if (this.isResizingWithLeftHandle(this.resizingElement)) {\n        const maxLeftMove = this.leftResizingBoundaryX != null ? this.roundWithOneColWidth(oneColWidth, Math.abs(this.leftResizingBoundaryX - this.startX)) : 0;\n        const maxRightMove = (this.currentWidth - 1) * oneColWidth;\n\n        deltaX = this.getResizingDelta(event.clientX, this.startX, deltaX, this.totalResizeWidth, maxLeftMove, maxRightMove);\n        if (deltaX === 0) {\n          return;\n        }\n      \n        this.renderer.setStyle(this.resizeDiv, 'left', this.getNumber(this.resizeDiv.style.left) + deltaX + 'px');\n        this.renderer.setStyle(this.resizeDiv, 'width', (this.resizeDiv.offsetWidth - deltaX) + 'px');\n        this.totalResizeWidth += deltaX;\n      } else if (this.isResizingWithRightHandle(this.resizingElement)) {\n        const maxLeftMove = (this.currentWidth - 1) * oneColWidth;\n        const maxRightMove = this.rightResizingBoundaryX != null ? this.roundWithOneColWidth(oneColWidth, Math.abs(this.rightResizingBoundaryX - this.startX)) : 0;\n       \n        deltaX = this.getResizingDelta(event.clientX, this.startX, deltaX, this.totalResizeWidth, maxLeftMove, maxRightMove);\n        if (deltaX === 0) {\n          return;\n        }\n       \n        this.renderer.setStyle(this.resizeDiv, 'width', (this.resizeDiv.offsetWidth + deltaX) + 'px');\n        this.totalResizeWidth += deltaX;\n      }\n    };\n\n    const registerResizeElement = (event: MouseEvent) => {\n      this.startX = event.clientX;\n      this.previousX = event.clientX;\n      this.resizingElement = event.target as HTMLElement;\n      this.gridContainerDiv?.addEventListener('mousemove', this.mousemoveListener);\n      event.preventDefault();\n    }\n\n    const left = document.createElement('div');\n    left.classList.add('left');\n    left.addEventListener('mousedown', registerResizeElement);\n\n    const right = document.createElement('div');\n    right.classList.add('right');\n    right.addEventListener('mousedown', registerResizeElement);\n\n    this.resizeDiv.classList.add(this.gridResizableClass);\n    this.resizeDiv.appendChild(left);\n    this.resizeDiv.appendChild(right);\n\n    // workaround: avoid losing focus on the editor bar of the component.\n    this.registerClick(left);\n    this.registerClick(right);\n    this.registerClick(this.resizeDiv);\n\n    this.renderer.insertBefore(this.nativeHTMTLElement, this.resizeDiv, this.nativeHTMTLElement.firstChild);\n    this.handleDocumentMouseup();\n    this.adjustDraggingElementPosition();\n  }\n\n  private roundWithOneColWidth(oneColWidth: number, value: number): number {\n    return Math.round(value / oneColWidth) * oneColWidth;\n  }\n\n  private getNearestParentComponent(el: Element, tagName: string) : Element | null {    \n    while (el && el.parentElement) {\n      el = el.parentElement;\n      if (el.tagName && el.tagName.toLowerCase() === tagName) {\n        return el;\n      }\n    }\n    return null;\n  }\n  \n  private handleDocumentMouseup() {\n    this.documentMouseUpEvent = (e) => {\n      if (!this.isResizing) {\n        return;\n      }\n\n      this.gridContainerDiv?.removeEventListener('mousemove', this.mousemoveListener);\n      if (!this.resizingElement || this.startX !== 0 && !this.startX) {\n        this.resetResizeData();\n        return;\n      }\n\n      const widthDelta = Math.round(this.totalResizeWidth / this.getOneColWidth());\n\n      if (widthDelta !== 0) {\n        if (this.isResizingWithLeftHandle(this.resizingElement)) {\n          this.updateOffsetAndWidth(widthDelta);\n        } else if (this.isResizingWithRightHandle(this.resizingElement)) {\n          this.updateWidth(widthDelta);\n        }\n      } else {\n        this.restoreDefaultResizeDiv();\n      }\n\n      this.resetResizeData();\n\n      // workaround: avoid losing focus on the editor bar of the component when dragging outside of the component.\n      setTimeout(() => {\n        this.editorBarButtonsElement?.click();\n      }, 50); \n    }\n\n    document.addEventListener('mouseup', this.documentMouseUpEvent);\n  }\n\n  private isRightResizing(currentX: number, startX: number): boolean {\n    return currentX - startX > 0;\n  }\n\n  private getResizingDelta(clientX: number, startX: number, deltaX: number, totalResizeWidth: number, maxLeftMove: number, maxRightMove: number): number {\n    if (this.isRightResizing(clientX, startX)) {\n      if (totalResizeWidth >= maxRightMove) {\n        if (deltaX > 0 || (deltaX < 0 && clientX >= startX + maxRightMove)) {\n          return 0;\n        }\n      } else if (totalResizeWidth + deltaX > maxRightMove) {\n        deltaX = maxRightMove - totalResizeWidth;\n      }\n    } else { // resizing left\n      if (totalResizeWidth <= -maxLeftMove) {\n        if (deltaX < 0 || (deltaX > 0 && clientX <= startX - maxLeftMove)) {\n          return 0;\n        }\n      } else if (totalResizeWidth + deltaX < -maxLeftMove ) {\n        deltaX = -maxLeftMove - totalResizeWidth;\n      }\n    }\n\n    return deltaX;\n  }\n\n  private resetResizeData() {\n    this.resizingElement = null;\n    this.startX = null;\n    this.totalResizeWidth = 0;\n  }\n\n  private isResizingWithRightHandle(resizingElement: HTMLElement|null): boolean {\n    return !!resizingElement?.classList.contains('right');\n  }\n\n  private isResizingWithLeftHandle(resizingElement: HTMLElement|null): boolean {\n    return !!resizingElement?.classList.contains('left');\n  }\n\n  private getOneColWidth(): number {\n    if (!this.gridContainerDiv) {\n      throw `${this.gridContainerClass} element is null`;\n    }\n    return this.gridContainerDiv.offsetWidth / 12;\n  }\n\n  private getNumber(str: string): number {\n    return +str.replace('px', '');\n  }\n\n  private registerClick(element: HTMLElement) {\n    element.addEventListener('click', (event: MouseEvent) => {\n      this.editorBarButtonsElement?.click();\n    });\n  }\n\n  private async updateOffsetAndWidth(widthDelta: number) {\n    if (!widthDelta || this.currentOffset !== 0 && !this.currentOffset || !this.currentWidth) {\n      return;\n    }\n  \n    const newOffset = Math.max(this.currentOffset + widthDelta, 0);\n    const newCols = this.currentWidth - widthDelta;\n\n    const payload: ViewportUpdateRequest = {\n      path: this.gridResize.content['@path'],\n      viewportId: this.gridResize.currentViewport,\n      viewport: {\n        offset: newOffset,\n        cols: newCols\n      }\n    }\n\n    if (!this.gridUpdateViewportUrl) {\n      return;\n    }\n\n    const resData = await this.gridService.updateViewport(this.gridUpdateViewportUrl, payload);\n    const viewportData = resData && resData[this.gridResize.currentViewport];\n    if (!viewportData) {\n      this.restoreDefaultResizeDiv();\n      return;\n    }\n\n    this.isviewportUpdated = true;\n    this.currentOffset = viewportData.offset;\n    this.currentWidth = viewportData.cols;\n    this.updateGridDataValue(viewportData.cols, viewportData.offset);\n\n    this.updateGridClass(this.nativeHTMTLElement, 'cols', viewportData.cols);\n    this.updateOffsetElement();\n    this.updateElementWrapperClass();\n    this.adjustActiveViewportTextPosition();\n    this.restoreDefaultResizeDiv();\n  }\n\n  private updateGridDataValue(cols: number, offset: number): void {\n    const currentViewportData = this.gridData?.[this.gridResize.currentViewport];\n    if (currentViewportData) {\n      currentViewportData.cols = cols;\n      currentViewportData.offset = offset;\n      currentViewportData['use-default-settings'] = false;\n    }\n  }\n\n  private updateOffsetElement(): void {\n    if (this.currentOffset !== 0 && !this.currentOffset || !this.currentWidth) {\n      return;\n    }\n\n    const offsetElement = this.getOffsetElement();\n    if (offsetElement) {\n      this.updateGridClass(offsetElement, 'offset', this.currentOffset);\n    } else {\n      if (this.currentOffset > 0) {\n        const parent = this.nativeHTMTLElement.parentNode;\n        if (!this.gridData || !parent) {\n          return;\n        }\n\n        const wrapperClasses: string[] = [`${this.gridPrefix}-wrapper`];\n        const offsetClasses: string[] = [];\n\n        Object.keys(this.gridData).forEach(vpId => {\n          const renderingValue = this.gridService.getViewportRenderingValue(this.gridData?.[vpId]);\n          if (renderingValue['use-default-settings']) {\n            return;\n          }\n\n          const wrapperClass = this.createElementWrapperClass(vpId, renderingValue.cols, renderingValue.offset);\n          wrapperClasses.push(wrapperClass);\n\n          const offsetClass = this.createGridClass('offset', vpId, renderingValue.offset);\n          offsetClasses.push(offsetClass);\n        });\n\n        // create a temporary wrapper for component and offset\n        const tempWrapperEl: HTMLElement = document.createElement('div');\n        tempWrapperEl.classList.add(...wrapperClasses);\n        tempWrapperEl.id = this.elementWrapperId;\n\n        // create a temporary offset div\n        const tempOffsetEl: HTMLElement = document.createElement('div');\n        tempOffsetEl.classList.add(...offsetClasses);\n        tempOffsetEl.id = this.offsetId;\n\n        this.renderer.insertBefore(parent, tempWrapperEl, this.nativeHTMTLElement);\n        this.renderer.appendChild(tempWrapperEl, tempOffsetEl);\n        this.renderer.appendChild(tempWrapperEl, this.nativeHTMTLElement);\n\n        if (this.startOnNewLine) {\n          const componentNewLineClasses = Array.from(this.nativeHTMTLElement.classList).filter(cl => cl.includes(`${this.gridPrefix}-new-line`));\n          this.nativeHTMTLElement.classList.remove(...componentNewLineClasses);\n          tempWrapperEl.classList.add(...componentNewLineClasses);\n        }\n      }\n    }\n  }\n\n  private async updateWidth(widthDelta: number) {\n    if (!widthDelta || !this.currentWidth || this.currentOffset!== 0 && !this.currentOffset) {\n      return;\n    }\n\n    const newWidth = this.currentWidth + widthDelta;\n\n    const payload: ViewportUpdateRequest = {\n      path: this.gridResize.content['@path'],\n      viewportId: this.gridResize.currentViewport,\n      viewport: {\n        cols: newWidth,\n        offset: this.currentOffset\n      }\n    }\n\n    if (!this.gridUpdateViewportUrl) {\n      return;\n    }\n\n    const resData = await this.gridService.updateViewport(this.gridUpdateViewportUrl, payload);\n    const viewportData = resData && resData[this.gridResize.currentViewport];\n\n    if (!viewportData) {\n      this.restoreDefaultResizeDiv();\n      return;\n    }\n\n    this.isviewportUpdated = true;\n    this.currentOffset = viewportData.offset;\n    this.currentWidth = viewportData.cols;\n    this.updateGridDataValue(viewportData.cols, viewportData.offset);\n\n    this.updateGridClass(this.nativeHTMTLElement, 'cols', viewportData.cols);\n    this.updateElementWrapperClass();\n    this.adjustActiveViewportTextPosition();\n    this.restoreDefaultResizeDiv();\n  }\n\n  private restoreDefaultResizeDiv() {\n    this.renderer.removeStyle(this.resizeDiv, 'width');\n    this.renderer.removeStyle(this.resizeDiv, 'left');\n    this.adjustDraggingElementPosition();\n  }\n\n  private updateElementWrapperClass() {\n    const wrapperElement = this.getElementWrapper();\n    if (!wrapperElement || !this.currentWidth || this.currentOffset !== 0 && !this.currentOffset) {\n      return;\n    }\n\n    const currentWrapperClass = Array.from(wrapperElement.classList).find(cl => cl.startsWith(`${this.gridPrefix}-wrapper-${this.gridResize.currentViewport}`));\n    const newWrapperClass = this.createElementWrapperClass(this.gridResize.currentViewport, this.currentWidth, this.currentOffset);\n    if (currentWrapperClass) {\n      this.renderer.removeClass(wrapperElement, currentWrapperClass);\n    }\n    this.renderer.addClass(wrapperElement, newWrapperClass);\n  }\n  \n  private getElementWrapper(): HTMLElement | null | undefined {\n    return this.gridContainerDiv?.querySelector(`#${this.elementWrapperId}`);\n  }\n\n  private updateGridClass(element: HTMLElement, propertyName: string, newValue: number): void {\n    const currentGridClass = Array.from(element.classList).find(cl => cl.startsWith(`${this.gridPrefix}-${propertyName}-${this.gridResize.currentViewport}`));\n    const newGridClass = this.createGridClass(propertyName, this.gridResize.currentViewport, newValue);\n    if (currentGridClass) {\n      this.renderer.removeClass(element, currentGridClass);\n    }\n    this.renderer.addClass(element, newGridClass);\n  }\n\n  private createElementWrapperClass(viewportId: string, cols: number, offset: number): string {\n    return `${this.gridPrefix}-wrapper-${viewportId}-cols-${cols}-offset-${offset}`;\n  }\n\n  private createGridClass(propertyName:string, viewportId: string, value: number): string {\n    return `${this.gridPrefix}-${propertyName}-${viewportId}-${value}`;\n  }\n\n  private getGridContainerDiv(): HTMLElement | null {\n    return document.querySelector(`.${this.gridContainerClass}`);\n  }\n\n  private getOffsetElement(): HTMLElement | null | undefined {\n    return this.gridContainerDiv?.querySelector(`#${this.offsetId}`);\n  }\n\n  private getActiveViewportText(viewportId: string): string {\n    const viewportName = this.viewportService.getViewports().find(v => v.id === viewportId)?.displayName;\n    return viewportName ? `Editing viewport: ${viewportName}` : 'Error! No viewport found'\n  }\n\n  private refreshPage(): void {\n    window.location.reload();\n  }\n\n  private adjustDraggingElementPosition(): void {\n    if (!this.resizeDiv) {\n      return;\n    }\n    const leftHandle = this.resizeDiv.querySelector('.left');\n    const rightHandle = this.resizeDiv.querySelector('.right');\n    if (!leftHandle || !rightHandle) {\n      return;\n    }\n    if (leftHandle.getBoundingClientRect().left <= 0) {\n      this.renderer.setStyle(leftHandle, 'left', '0px');\n    } else {\n      this.renderer.removeStyle(leftHandle, 'left');\n    }\n    const viewportWidth = visualViewport?.width || window.innerWidth;\n    if (Math.round(rightHandle.getBoundingClientRect().right) >= Math.round(viewportWidth)) {\n      this.renderer.setStyle(rightHandle, 'right', '0px');\n    } else {\n      this.renderer.removeStyle(rightHandle, 'right');\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.observer?.disconnect();\n  }\n}","import { Pipe, PipeTransform } from '@angular/core';\nimport { UtilsService } from '../services//utils.service';\n\n@Pipe({\n  name: 'gridIdGenerator',\n  pure: true,\n  standalone: true\n})\nexport class GridIdGeneratorPipe implements PipeTransform {\n  \n  constructor(private utilsService: UtilsService) {}\n\n  transform(path: string, prefix: string): string {\n    return this.utilsService.createIdByPathAndPrefix(path, prefix);\n  }\n}","import { Component, ElementRef, Injector, Input, OnInit, OnDestroy, Inject, PLATFORM_ID} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { GridBaseComponent } from './grid-base.component';\nimport { EditableComponent } from '@magnolia/angular-editor';\nimport { GridWidthPipe } from '../pipes/grid-width.pipe';\nimport { GridResizeDirective } from './grid-resize.directive';\nimport { GridIdGeneratorPipe } from '../pipes/grid-id-generator.pipe';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Component({\n  selector: 'grid-area',\n  templateUrl: './grid-area.component.html',\n  imports: [EditableComponent, CommonModule, GridWidthPipe, GridIdGeneratorPipe, GridResizeDirective],\n  standalone: true\n})\nexport class GridAreaComponent extends GridBaseComponent implements OnInit, OnDestroy {\n  @Input() components: any[] = [];\n  @Input() wrapperClass: string = '';\n  generatedWrapperClass: string = '';\n  isAuthor: boolean = false;\n  private gridPrefix: string = '';\n  private observer: MutationObserver | undefined;\n  constructor(injector: Injector, private elementRef: ElementRef, @Inject(PLATFORM_ID) private platformId: Object) {\n    super(injector);\n    this.isAuthor = this.contextService.isAuthor();\n  }\n\n  ngOnInit(): void {\n    this.gridPrefix = this.gridService.getGridPrefix();\n    this.generatedWrapperClass = this.wrapperClass ? `${this.gridPrefix}-${this.wrapperClass}` : `${this.gridPrefix}-row`;\n    \n    if (!isPlatformBrowser(this.platformId) || !this.isAuthor || !this.isMagnoliaEdit) {\n      return;\n    }\n\n    this.observer = new MutationObserver((mutations: MutationRecord[]) => {\n      mutations.forEach((mutation) => {\n        if (!mutation.addedNodes || mutation.addedNodes.length === 0) {\n          return;\n        }\n  \n        mutation.addedNodes.forEach((addedNode: Node) => {\n          if (!this.isComponentEditorBar(addedNode)) {\n            return;\n          }\n          const newLineClasses = this.getNewLineClasses(addedNode as HTMLElement);\n          if (newLineClasses.length === 0) {\n            return;\n          }\n          this.addLinebreakIcon(addedNode as HTMLElement, newLineClasses);\n        });\n      })\n    });\n\n    this.observer.observe(this.elementRef.nativeElement, {\n      childList: true,\n      subtree: true\n    });\n\n    setTimeout(() => {\n      this.observer?.disconnect();\n    }, 15000);\n  }\n\n  private getNewLineClasses(htmlElement: HTMLElement): string[] {\n    if (!htmlElement.classList.contains('mgnlEditor')) {\n      return [];\n    }\n\n    const editableComponent = htmlElement.closest('editable-component');\n    if (!editableComponent) {\n      return [];\n    }\n    const componentId = editableComponent.getAttribute('id');\n    const wrapperId = componentId?.replace('component_', 'wrapper_');\n    const wrapperElement = this.elementRef.nativeElement?.querySelector(`#${wrapperId}`);\n\n    const componentClassList: string[] = Array.from(editableComponent.classList);\n    const wrapperClassList = wrapperElement ? Array.from((wrapperElement as HTMLElement).classList): [];\n    return componentClassList.concat(wrapperClassList).filter((cl) => cl.indexOf(`-new-line-`) != -1);\n  }\n\n  private addLinebreakIcon(editorBarEl: HTMLElement, newLineClasses: string[]): void {\n    const labelSection = editorBarEl.querySelector('.mgnlEditorBarLabelSection');\n    if (!labelSection || labelSection.querySelector('.new-line-indicator')) {\n      return;\n    }\n    const linebreakIcon = document.createElement(\"div\");\n    linebreakIcon.classList.add(\"new-line-indicator\");\n    newLineClasses.forEach((cl) => linebreakIcon.classList.add(cl));\n    labelSection.appendChild(linebreakIcon);\n  }\n\n  private isComponentEditorBar(htmlElement: Node): boolean {\n    if (!(htmlElement instanceof HTMLElement)) {\n      return false;\n    }\n\n    return htmlElement.classList.contains('mgnlEditorBar') && htmlElement.classList.contains('component');\n  }\n\n  override ngOnDestroy(): void {\n    this.observer?.disconnect();\n    super.ngOnDestroy();\n  }\n}\n","<ng-container *ngIf=\"components && components.length\">\n  <div [class]=\"generatedWrapperClass\">\n    <ng-container *ngFor=\"let childContent of components\">\n\n      <ng-container *ngIf=\"isAuthor; else publicTemplate\">\n        <ng-container *ngIf=\"renderOffsetPlaceholder(childContent); else authorComponentTemplate\">\n          <div \n            [class]=\"childContent | gridWidth:'wrapper'\"\n            [id]=\"childContent['@path'] | gridIdGenerator:'wrapper'\"\n          >\n            <div  \n              [id]=\"childContent['@path'] | gridIdGenerator:'offset'\"\n              [class]=\"childContent | gridWidth:'offset'\"\n            >\n            </div>\n            <editable-component \n              [gridResize]=\"{isMagnoliaEdit, currentViewport, content: childContent}\"\n              [id]=\"childContent['@path'] | gridIdGenerator:'component'\"\n              [content]=\"childContent\"\n              [class]=\"childContent | gridWidth\" \n            ></editable-component>\n          </div>\n        </ng-container>\n      </ng-container>\n    \n      <ng-template #publicTemplate>\n        <ng-container *ngIf=\"renderOffsetPlaceholder(childContent); else publicComponentTemplate\">\n          <div [class]=\"childContent | gridWidth:'wrapper'\">\n            <div [class]=\"childContent | gridWidth:'offset'\"></div>\n            <editable-component \n              [content]=\"childContent\"\n              [class]=\"childContent | gridWidth\" \n            ></editable-component>\n          </div>\n        </ng-container>\n      </ng-template>\n\n      <ng-template #publicComponentTemplate>\n        <editable-component \n          [content]=\"childContent\"\n          [class]=\"childContent | gridWidth\"\n        ></editable-component>\n      </ng-template>\n\n      <ng-template #authorComponentTemplate>\n        <editable-component\n          [gridResize]=\"{isMagnoliaEdit, currentViewport, content: childContent}\"\n          [id]=\"childContent['@path'] | gridIdGenerator:'component'\"\n          [content]=\"childContent\"\n          [class]=\"childContent | gridWidth\"\n        ></editable-component>\n      </ng-template>\n\n    </ng-container>\n  </div>\n</ng-container>","import { NgModule } from '@angular/core';\nimport { GridBaseComponent } from './components/grid-base.component';\nimport { GridAreaComponent } from './components/grid-area.component';\nimport { GridWidthPipe } from './pipes/grid-width.pipe';\n\n@NgModule({\n  imports: [\n    GridBaseComponent,\n    GridAreaComponent,\n    GridWidthPipe\n  ],\n  providers: [],\n  exports: [\n    GridBaseComponent,\n    GridAreaComponent,\n    GridWidthPipe\n  ]\n})\nexport class GridModule { }\n","/*\n * Public API Surface of grid\n */\n\nexport * from './lib/services/viewport.service';\nexport * from './lib/services/context.service';\nexport * from './lib/pipes/grid-width.pipe';\nexport * from './lib/components/grid-base.component';\nexport * from './lib/components/grid-area.component';\nexport * from './lib/components/grid-resize.directive';\nexport * from './lib/types/iviewport';\nexport * from './lib/types/viewportcontent';\nexport * from './lib/grid.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.UtilsService","i1.ContextService","i2.GridService","i1.UtilsService","i1"],"mappings":";;;;;;;;MAKa,YAAY,CAAA;IACvB,OAAO,CAAC,GAAG,KAAe,EAAA;AACxB,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACtB,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;QAED,IAAI,GAAG,GAAG,EAAE,CAAC;AACb,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,YAAA,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;;YAEpB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAEhC,IAAI,CAAC,KAAK,CAAC,EAAE;;gBAEX,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAEhC,gBAAA,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;AACnB,aAAA;YAED,GAAG,IAAI,IAAI,CAAC;AACb,SAAA;AAED,QAAA,OAAO,GAAG,CAAC;KACZ;AAED,IAAA,uBAAuB,CAAC,IAAY,EAAE,MAAA,GAAiB,EAAE,EAAA;QACvD,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAClC,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;AACD,QAAA,OAAO,CAAG,EAAA,MAAM,CAAG,EAAA,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA,CAAE,CAAC;KAChD;;0GA/BU,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,YAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;4FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCKY,eAAe,CAAA;IAM1B,WAAoB,CAAA,kBAAsC,EAAU,YAA0B,EAAA;QAA1E,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;QAAU,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QALtF,IAAiB,CAAA,iBAAA,GAAW,EAAE,CAAC;AAC/B,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC,CAAC;QAC1D,IAAuB,CAAA,uBAAA,GAAwB,IAAI,CAAC;QAC5C,IAAS,CAAA,SAAA,GAAgB,EAAE,CAAC;KAE+D;AAEnG,IAAA,oBAAoB,CAAC,SAAsB,EAAA;QACzC,IAAG,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YACvC,OAAO;AACR,SAAA;QAAA,CAAC;;QAGF,MAAM,eAAe,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;YAC9C,MAAM,KAAK,GAAG,CAAC,GAAW,KAAK,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,iBAAiB,GAAG,GAAG,CAAC;AAC1E,YAAA,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACzC,SAAC,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;QAC7D,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC,EAAE,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAE/E,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAChC,YAAA,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,CAAC;AAC5C,SAAA;AAED,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC;YACrF,IAAI,EAAE,MAAK;AACT,gBAAA,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;AAC5H,gBAAA,IAAI,kBAAkB,EAAE;AACtB,oBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAC/C,iBAAA;AAAM,qBAAA;oBACL,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACnD,iBAAA;aACF;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,GAAG,CAAC;AACnE,SAAA,CAAC,CAAC;KACJ;IAED,kBAAkB,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;KAC5C;AAEO,IAAA,gBAAgB,CAAC,eAA4B,EAAA;AACnD,QAAA,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;AAEhD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/C,YAAA,MAAM,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;AAC9B,YAAA,IAAI,MAAM,CAAC;AACX,YAAA,IAAI,KAAK,CAAC;AAEV,YAAA,IAAI,CAAC,KAAK,CAAC,EAAE;AACX,gBAAA,MAAM,GAAG,eAAe,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC;gBAC9B,KAAK,GAAG,CAAe,YAAA,EAAA,MAAM,CAAC,OAAO,CAAC,CAAA,EAAG,MAAM,CAAC,IAAI,CAAA,CAAA,CAAG,CAAC;AACzD,aAAA;iBAAM,IAAI,CAAC,KAAK,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC3C,KAAK,GAAG,CAAoB,iBAAA,EAAA,EAAE,CAAC,OAAO,CAAC,CAAA,EAAG,EAAE,CAAC,IAAI,CAAA,EAAA,CAAI,CAAC;AACvD,aAAA;AAAM,iBAAA;AACL,gBAAA,MAAM,GAAG,eAAe,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC;gBAC9B,KAAK,GAAG,eAAe,MAAM,CAAC,OAAO,CAAC,CAAA,EAAG,MAAM,CAAC,IAAI,0BAA0B,EAAE,CAAC,OAAO,CAAC,CAAA,EAAG,EAAE,CAAC,IAAI,IAAI,CAAC;AACzG,aAAA;YAED,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACjC,SAAA;AAED,QAAA,OAAO,aAAa,CAAC;KACtB;IAED,oBAAoB,GAAA;QAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KAC/B;IAEO,iCAAiC,GAAA;AACvC,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,eAAe,CAAC,CAAC;QACtE,IAAI,CAAC,eAAe,EAAE;AACpB,YAAA,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;AAC3C,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;QACD,OAAO,eAAe,CAAC,EAAE,CAAC;KAC3B;AAED,IAAA,MAAM,cAAc,CAAC,EAAC,gBAAgB,EAAE,IAAI,EAA4C,EAAA;QACtF,IAAI;AACF,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACpB,YAAA,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,EAAE;AAC9B,gBAAA,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;gBAC1D,OAAO,IAAI,CAAC,SAAS,CAAC;AACvB,aAAA;AAED,YAAA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,EACjD;AACE,gBAAA,WAAW,EAAE,SAAS;AACvB,aAAA,CACF,CAAC;AACF,YAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;gBAChB,OAAO,IAAI,CAAC,SAAS,CAAC;AACvB,aAAA;AAED,YAAA,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;AACnC,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;AAC5B,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iCAAiC,EAAE,CAAC;AAClE,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1C,OAAO,IAAI,CAAC,SAAS,CAAC;AAEvB,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAC5D,OAAO,IAAI,CAAC,SAAS,CAAC;AACvB,SAAA;KACF;;IAED,YAAY,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;;6GAhHU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA,CAAA;4FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCIY,cAAc,CAAA;AAH3B,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAe,IAAI,CAAC,CAAC;AAC1D,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;AA4BxC,KAAA;AA1BC,IAAA,QAAQ,CAAC,UAAmB,EAAA;AAC1B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAC/B;IAED,UAAU,GAAA;QACR,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC7C,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QAED,IAAI,YAAY,CAAC,gBAAgB,EAAE;AACjC,YAAA,MAAM,eAAe,GAAG,YAAY,CAAC,eAAe,CAAC;AACrD,YAAA,IAAI,CAAC,eAAe,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AACjE,gBAAA,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;AAC5C,aAAA;AACF,SAAA;AAED,QAAA,OAAO,YAAY,CAAC;KACrB;AAED;;AAEE;IACF,QAAQ,GAAA;QACN,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,gBAAgB,CAAC;KAC9C;;4GA7BU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA,CAAA;4FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCFY,WAAW,CAAA;AAEtB,IAAA,WAAA,CAAqB,cAA8B,EAAA;QAA9B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AA0G3C,QAAA,IAAA,CAAA,aAAa,GAAmC;AACtD,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,UAAU,EAAE,UAAU;AACtB,YAAA,kBAAkB,EAAE,sBAAsB;SAC3C,CAAC;KA/GsD;IAExD,6BAA6B,CAAC,QAAa,EAAE,UAAkB,EAAA;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACtC,QAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC;AACrD,QAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;KACjD;AAED,IAAA,yBAAyB,CAAC,QAAa,EAAA;QACrC,MAAM,UAAU,GAAG,QAAQ,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;AAChD,QAAA,IAAI,OAAO,GAAG,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC;AACnC,QAAA,IAAI,MAAM,GAAG,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC;QACnC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACxC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,GAAG,UAAU,CAAC,CAAC;AACzC,QAAA,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC;QAC9B,MAAM,kBAAkB,GAAG,CAAC,CAAC,QAAQ,GAAG,sBAAsB,CAAC,CAAC;QAEhE,OAAO;AACL,YAAA,sBAAsB,EAAE,kBAAkB;AAC1C,YAAA,IAAI,EAAE,OAAO;YACb,MAAM;AACN,YAAA,UAAU,EAAE,OAAO;YACnB,IAAI;AACJ,YAAA,UAAU,EAAE,UAAU;SACvB,CAAC;KACH;AAED,IAAA,MAAM,cAAc,CAAC,qBAA6B,EAAE,OAA8B,EAAA;AAChF,QAAA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,qBAAqB,EAAE;AACrB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;AAC7B,YAAA,OAAO,EAAE;AACP,gBAAA,cAAc,EAAE,kBAAkB;AACnC,aAAA;AACD,YAAA,WAAW,EAAE,SAAS;AACvB,SAAA,CACF,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AAChB,YAAA,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,OAAO,CAAC,CAAC;AACtD,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAED,QAAA,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;AACnC,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,SAAS,CAAC,QAAa,EAAA;QACrB,IAAI,IAAI,GAA2B,EAAE,CAAC;AACtC,QAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;YAChC,IAAI;AACF,gBAAA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC7B,aAAA;AAAC,YAAA,OAAM,CAAC,EAAE;AACT,gBAAA,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,CAAC,CAAC,CAAC;AAC/D,aAAA;AACF,SAAA;AAAM,aAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,EAAE;YACnD,IAAI,GAAG,QAAQ,CAAC;AACjB,SAAA;AACD,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAA6C,EAAE,GAAG,KAAI;AACrF,YAAA,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3C,YAAA,OAAO,GAAG,CAAC;SACZ,EAAE,EAAE,CAAC,CAAC;KACR;IAED,aAAa,GAAA;QACX,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,EAAE,UAAU,CAAC;QACvE,OAAO,iBAAiB,GAAG,iBAAiB,GAAG,WAAW,CAAC;KAC5D;AAED,IAAA,yBAAyB,CAAC,QAAqB,EAAA;QAC7C,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,IAAG;AACvC,YAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,QAAQ,EAAG;AACd,gBAAA,OAAO,KAAK,CAAC;AACd,aAAA;YAED,MAAM,cAAc,GAAG,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;AAChE,YAAA,OAAO,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;AACnC,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,eAAe,CAAC,QAAa,EAAA;QACnC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACrD,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;YACjE,IAAI,WAAW,GAEX,EAAE,CAAC;YACP,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;AAClC,gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBAC/B,WAAW,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;AAClC,iBAAA;AAAM,qBAAA;AACL,oBAAA,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;AACtD,iBAAA;AACH,aAAC,CAAC,CAAC;AAEH,YAAA,OAAO,WAA8B,CAAE;AACxC,SAAA;AACD,QAAA,OAAO,QAAQ,CAAC;KACjB;;yGA1GU,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAX,WAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFV,MAAM,EAAA,CAAA,CAAA;4FAEP,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCCY,aAAa,CAAA;IAIxB,WAAY,CAAA,cAA8B,EAAU,WAAwB,EAAA;QAAxB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QAC1E,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;QACnD,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,UAAU,EAAE,EAAE,eAAe,EAAE,cAAc,CAAC;KACpF;AAED,IAAA,SAAS,CAAC,YAAiB,EAAE,IAAA,GAAe,WAAW,EAAA;AACrD,QAAA,MAAM,YAAY,GAAG,CAAA,EAAG,IAAI,CAAC,UAAU,UAAU,CAAC;AAElD,QAAA,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AACvC,YAAA,OAAO,YAAY,CAAC;AACrB,SAAA;AAED,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AACnD,YAAA,OAAO,YAAY,CAAC;AACrB,SAAA;AAED,QAAA,IAAI,SAAS,CAAC;AACd,QAAA,QAAO,IAAI;AACT,YAAA,KAAK,SAAS;AACZ,gBAAA,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;gBAC7C,MAAM;AACR,YAAA,KAAK,QAAQ;AACX,gBAAA,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;gBAC5C,MAAM;AACR,YAAA;AACE,gBAAA,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AAClD,SAAA;AAED,QAAA,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC5B;AAEO,IAAA,iBAAiB,CAAC,QAAa,EAAA;QACrC,MAAM,SAAS,GAAa,CAAC,CAAA,EAAG,IAAI,CAAC,UAAU,CAAU,QAAA,CAAA,CAAC,CAAC;QAE3D,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,IAAG;AACnC,YAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,QAAQ,EAAE;gBACb,OAAO;AACR,aAAA;YAED,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;AAC5E,YAAA,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,EAAE;AAC3C,gBAAA,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAY,SAAA,EAAA,IAAI,SAAS,cAAc,CAAC,IAAI,CAAW,QAAA,EAAA,cAAc,CAAC,MAAM,CAAA,CAAE,CAAC,CAAC;AAClH,aAAA;AAED,YAAA,IAAI,cAAc,CAAC,UAAU,CAAC,EAAE;gBAC9B,SAAS,CAAC,IAAI,CAAC,CAAG,EAAA,IAAI,CAAC,UAAU,CAAa,UAAA,EAAA,IAAI,CAAE,CAAA,CAAC,CAAC;AACvD,aAAA;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,SAAS,CAAC;KAClB;AAEO,IAAA,gBAAgB,CAAC,QAAa,EAAA;QACpC,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,IAAG;AACnC,YAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,QAAQ,EAAE;gBACb,OAAO;AACR,aAAA;YAED,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;AAE5E,YAAA,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,EAAE;AAC3C,gBAAA,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;AACrC,gBAAA,SAAS,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,QAAA,EAAW,IAAI,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE,CAAC,CAAC;AAC/D,aAAA;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,SAAS,CAAC;KAClB;AAEO,IAAA,mBAAmB,CAAC,QAAa,EAAA;QACvC,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,IAAG;AACnC,YAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,QAAQ,EAAE;gBACb,OAAO;AACR,aAAA;YAED,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;AAE5E,YAAA,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,EAAE;AAC3C,gBAAA,SAAS,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,UAAU,CAAS,MAAA,EAAA,IAAI,IAAI,cAAc,CAAC,IAAI,CAAA,CAAE,CAAC,CAAC;AAC1E,aAAA;YAED,MAAM,oBAAoB,GAAG,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;AAClF,YAAA,IAAI,CAAC,oBAAoB,IAAI,cAAc,CAAC,UAAU,CAAC,EAAE;gBACvD,SAAS,CAAC,IAAI,CAAC,CAAG,EAAA,IAAI,CAAC,UAAU,CAAa,UAAA,EAAA,IAAI,CAAE,CAAA,CAAC,CAAC;AACvD,aAAA;AAED,YAAA,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE;gBAC1B,SAAS,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,UAAU,CAAQ,KAAA,EAAA,IAAI,CAAC,cAAc,GAAG,OAAO,GAAG,EAAE,CAAI,CAAA,EAAA,IAAI,CAAE,CAAA,CAAC,CAAC;AACxF,aAAA;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,SAAS,CAAC;KAClB;;2GAtGU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;yGAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,CAAA;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,WAAW;AACjB,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;;MCEY,iBAAiB,CAAA;AAS5B,IAAA,WAAA,CAAsB,QAAkB,EAAA;QAAlB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAPjC,IAAe,CAAA,eAAA,GAAW,EAAE,CAAC;QAC1B,IAAc,CAAA,cAAA,GAAY,KAAK,CAAC;QAOxC,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACrD,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,EAAE,eAAe,EAAE,cAAc,CAAC;QACxF,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE,CAAC,SAAS,CAAC;AAC9E,YAAA,IAAI,EAAE,CAAC,iBAAiB,KAAI;AAC1B,gBAAA,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;aAC5C;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC;AAC9D,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,kBAAkB,CAAC,UAAkB,EAAA;AACnC,QAAA,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC;KACnC;AAED,IAAA,uBAAuB,CAAC,gBAAqB,EAAA;AAC3C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;KAC7D;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC;KACzC;;+GAjCU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,kGAHlB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;4FAGD,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;+FAEU,IAAI,EAAA,CAAA;sBAAZ,KAAK;;;MCEK,mBAAmB,CAAA;AAiC9B,IAAA,WAAA,CAAoB,UAAsB,EAAU,QAAmB,EAAU,WAAwB,EAAE,cAA8B,EAAU,YAA0B,EAAU,eAAgC,EAA+B,UAAkB,EAAA;QAApP,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QAAU,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAAU,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QAA0C,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAAU,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAA+B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAQ;AAhC/P,QAAA,IAAA,CAAA,UAAU,GAAuE,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAG9I,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QACnB,IAAM,CAAA,MAAA,GAAkB,IAAI,CAAC;QAC7B,IAAS,CAAA,SAAA,GAAkB,IAAI,CAAC;QAChC,IAAe,CAAA,eAAA,GAAuB,IAAI,CAAC;AAC3C,QAAA,IAAA,CAAA,iBAAiB,GAA4B,MAAK,GAAI,CAAC;AACvD,QAAA,IAAA,CAAA,oBAAoB,GAA4B,MAAK,GAAI,CAAC;QAC1D,IAAgB,CAAA,gBAAA,GAAuB,IAAI,CAAC;QAC5C,IAAS,CAAA,SAAA,GAAuB,IAAI,CAAC;QACrC,IAAS,CAAA,SAAA,GAAuB,IAAI,CAAC;QACrC,IAAY,CAAA,YAAA,GAAkB,IAAI,CAAC;QACnC,IAAa,CAAA,aAAA,GAAkB,IAAI,CAAC;QACpC,IAAc,CAAA,cAAA,GAAa,KAAK,CAAC;QAEjC,IAAiB,CAAA,iBAAA,GAAY,KAAK,CAAC;QACnC,IAAgB,CAAA,gBAAA,GAAW,CAAC,CAAC;QAE7B,IAAU,CAAA,UAAA,GAAW,EAAE,CAAC;QACxB,IAAgB,CAAA,gBAAA,GAAW,EAAE,CAAC;QAC9B,IAAkB,CAAA,kBAAA,GAAW,EAAE,CAAC;QAChC,IAAkB,CAAA,kBAAA,GAAW,EAAE,CAAC;QAChC,IAAQ,CAAA,QAAA,GAAG,EAAE,CAAC;QACd,IAAgB,CAAA,gBAAA,GAAG,EAAE,CAAC;QACtB,IAAQ,CAAA,QAAA,GAAgB,IAAI,CAAC;QAC7B,IAAyB,CAAA,yBAAA,GAAuB,IAAI,CAAC;;QAGrD,IAAqB,CAAA,qBAAA,GAAkB,IAAI,CAAC;QAC5C,IAAsB,CAAA,sBAAA,GAAmB,IAAI,CAAC;AAwG9C,QAAA,IAAA,CAAA,gBAAgB,GAAG,CAAC,SAA2B,KAAI;AACvD,YAAA,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;AAC7B,gBAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC5D,OAAO;AACR,iBAAA;gBAED,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAe,KAAI;AAC9C,oBAAA,IAAI,EAAE,SAAS,YAAY,WAAW,CAAC,EAAE;wBACvC,OAAO;AACR,qBAAA;AAED,oBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE;wBAClC,OAAO;AACR,qBAAA;AAED,oBAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC;AACvH,oBAAA,IAAI,CAAC,uBAAuB,GAAG,OAAO,GAAG,OAAsB,GAAG,SAAS,CAAC;AAC5E,oBAAA,IAAI,IAAI,CAAC,uBAAuB,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE;AAC9F,wBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;AACxD,qBAAA;AACH,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC,CAAA;AACN,SAAC,CAAA;QA3HC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QACxD,MAAM,gBAAgB,GAAG,cAAc,CAAC,UAAU,EAAE,EAAE,gBAAgB,CAAC;AACvE,QAAA,IAAI,CAAC,qBAAqB,GAAG,gBAAgB,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,gCAAgC,CAAC,GAAG,EAAE,CAAC;QAC9H,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;KACpD;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE;YAC5G,OAAO;AACR,SAAA;AAED,QAAA,MAAM,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAC9C,QAAA,IAAI,eAAe,EAAE;AACnB,YAAA,MAAM,gBAAgB,GAAG,eAAe,CAAC,aAAa,EAAE,eAAe,CAAC;AACxE,YAAA,MAAM,eAAe,GAAG,eAAe,CAAC,YAAY,EAAE,eAAe,CAAC;YACtE,IAAI,gBAAgB,KAAK,eAAe,EAAE;gBACxC,OAAO;AACR,aAAA;AAED,YAAA,IAAI,eAAe,EAAE;gBACnB,IAAI,IAAI,CAAC,SAAS,EAAE;oBAClB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AACnD,iBAAA;gBACD,IAAI,CAAC,mCAAmC,EAAE,CAAC;AAC3C,gBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;gBAC3D,IAAI,CAAC,6BAA6B,EAAE,CAAC;AACtC,aAAA;AAAM,iBAAA;gBACL,IAAI,IAAI,CAAC,SAAS,EAAE;oBAClB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAChD,iBAAA;AACF,aAAA;AACF,SAAA;KACF;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE;YAC5G,OAAO;AACR,SAAA;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC5D,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAE9B,IAAI,CAAC,kBAAkB,GAAG,CAAA,EAAG,IAAI,CAAC,UAAU,YAAY,CAAC;QACzD,IAAI,CAAC,gBAAgB,GAAG,CAAA,EAAG,IAAI,CAAC,UAAU,UAAU,CAAC;QACrD,IAAI,CAAC,kBAAkB,GAAG,CAAA,EAAG,IAAI,CAAC,UAAU,YAAY,CAAC;QAEzD,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AACnF,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;KAC7F;IAEO,mCAAmC,GAAA;AACzC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAE/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC1F,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;QACtE,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,MAAM,iDAAiD,IAAI,CAAC,UAAU,CAAC,eAAe,CAAuB,oBAAA,EAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;AAClJ,SAAA;QACD,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC;AAChF,QAAA,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC;AACxC,QAAA,IAAI,CAAC,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC;AAC3C,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;KAClD;AAEO,IAAA,qBAAqB,CAAC,qBAAyC,EAAA;AACrE,QAAA,IAAI,qBAAqB,EAAE;YACzB,IAAI,qBAAqB,CAAC,UAAU,EAAE;gBACpC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,qBAAqB,EAAE,qBAAqB,CAAC,UAAU,CAAC,CAAC;AACpF,aAAA;AACD,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC;YACnG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;AACxD,SAAA;KACF;IAEO,qBAAqB,GAAA;AAC3B,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;AACtG,QAAA,IAAI,eAAe,EAAE;AACnB,YAAA,MAAM,IAAI,GAAG,eAAe,CAAC,qBAAqB,EAAE,CAAC;AACrD,YAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,IAAI,CAAC;AACvC,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC;AAC1C,SAAA;AAAM,aAAA;YACL,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,CAAC;YAC5D,IAAI,CAAC,qBAAqB,GAAG,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;YAC7C,IAAI,CAAC,sBAAsB,GAAG,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC;AAChD,SAAA;KACF;IAEO,sBAAsB,GAAA;QAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAC5C,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,OAAO,EAAE,KAAK;AACjB,SAAA,CAAC,CAAC;QAEH,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC;SAC7B,EAAE,KAAK,CAAC,CAAC;KACX;AA0BO,IAAA,mBAAmB,CAAC,kBAA+B,EAAA;QACzD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AAEtD,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE;YACpC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAChD,SAAA;QAED,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAM,KAAI;;YAElD,kBAAkB,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,YAAY,EAAE,CAAC;AACtB,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAC;KAC/F;AAEO,IAAA,aAAa,CAAC,OAAoB,EAAA;AACxC,QAAA,MAAM,gBAAgB,GAAG,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;AACxD,QAAA,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;KACvE;AAEO,IAAA,sBAAsB,CAAC,kBAA2B,EAAA;AACxD,QAAA,MAAM,gBAAgB,GAAG,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;AACvD,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KACxH;IAEO,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC1B,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AACpD,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC1B,YAAA,MAAM,CAAkB,eAAA,EAAA,IAAI,CAAC,kBAAkB,EAAE,CAAC;AACnD,SAAA;AAED,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;QAEnC,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACjD,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;;YAExC,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,yBAAyB,EAAE,CAAC;AAClC,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAChF,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAEnE,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;AACpB,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,OAAO,IAAI,CAAC,gBAAgB,CAAA,CAAE,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC/G,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;gBAC1D,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAA,CAAE,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;gBACnH,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC3C,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAC/B,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;gBACnF,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;AAClE,aAAA;AACF,SAAA;KACF;IAEO,yBAAyB,GAAA;QAC/B,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACrE,QAAA,IAAI,CAAC,yBAAyB,EAAE,SAAS,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,qBAAA,CAAuB,CAAC,CAAC;AACzF,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACnF,IAAI,CAAC,gCAAgC,EAAE,CAAC;KACzC;IAEO,gCAAgC,GAAA;QACtC,IAAI,gBAAgB,GAAG,IAAI,CAAC,yBAAyB,EAAE,qBAAqB,EAAE,CAAC;QAC/E,IAAI,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,CAAC;AAEnE,QAAA,IAAI,CAAC,gBAAgB,IAAI,CAAC,aAAa,EAAE;YACvC,OAAO;AACR,SAAA;QAED,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;QAClE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;AAEnE,QAAA,IAAI,gBAAgB,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE;YAC9C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;AAChE,SAAA;AAAM,aAAA,IAAI,gBAAgB,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE;YACvD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;AACjE,SAAA;KACF;AAEO,IAAA,oBAAoB,CAAC,gBAAoC,EAAA;QAC/D,IAAI,gBAAgB,KAAK,IAAI,EAAE;YAC7B,OAAO;AACR,SAAA;AAED,QAAA,MAAM,QAAQ,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,CAAO,IAAA,EAAA,IAAI,CAAC,gBAAgB,CAAE,CAAA,CAAC,CAAC;AACnF,QAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACvB,YAAA,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;AACtD,SAAA;QAED,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACjD,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAEhD,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,EAAE,EAAE;YAChC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AACvD,SAAA;AAED,QAAA,UAAU,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AACtE,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACtF,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;KAC5D;IAEO,kBAAkB,GAAA;QACxB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,SAAS,EAAE;AAC5C,YAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACpF,SAAA;AAED,QAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC,KAAiB,KAAI;YAC7C,IAAI,CAAC,IAAI,CAAC,eAAe;mBAClB,CAAC,IAAI,CAAC,SAAS;mBACf,IAAI,CAAC,SAAS,IAAI,IAAI;mBACtB,IAAI,CAAC,MAAM,IAAI,IAAI;mBACnB,IAAI,CAAC,aAAa,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa;mBAC/C,CAAC,IAAI,CAAC,YAAY,EAAE;gBACzB,OAAO;AACR,aAAA;YAED,IAAI,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;AAC5C,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;AAE/B,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YAC1C,IAAI,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;AACvD,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,IAAI,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;gBACxJ,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,WAAW,CAAC;gBAE3D,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;gBACrH,IAAI,MAAM,KAAK,CAAC,EAAE;oBAChB,OAAO;AACR,iBAAA;AAED,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;gBAC1G,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,MAAM,IAAI,IAAI,CAAC,CAAC;AAC9F,gBAAA,IAAI,CAAC,gBAAgB,IAAI,MAAM,CAAC;AACjC,aAAA;iBAAM,IAAI,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;gBAC/D,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,WAAW,CAAC;AAC1D,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,IAAI,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;gBAE3J,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;gBACrH,IAAI,MAAM,KAAK,CAAC,EAAE;oBAChB,OAAO;AACR,iBAAA;gBAED,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,MAAM,IAAI,IAAI,CAAC,CAAC;AAC9F,gBAAA,IAAI,CAAC,gBAAgB,IAAI,MAAM,CAAC;AACjC,aAAA;AACH,SAAC,CAAC;AAEF,QAAA,MAAM,qBAAqB,GAAG,CAAC,KAAiB,KAAI;AAClD,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;AAC5B,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;AAC/B,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,MAAqB,CAAC;YACnD,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC7E,KAAK,CAAC,cAAc,EAAE,CAAC;AACzB,SAAC,CAAA;QAED,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;QAE1D,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC5C,QAAA,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC7B,QAAA,KAAK,CAAC,gBAAgB,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;QAE3D,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;;AAGlC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAEnC,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACxG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,6BAA6B,EAAE,CAAC;KACtC;IAEO,oBAAoB,CAAC,WAAmB,EAAE,KAAa,EAAA;QAC7D,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,WAAW,CAAC;KACtD;IAEO,yBAAyB,CAAC,EAAW,EAAE,OAAe,EAAA;AAC5D,QAAA,OAAO,EAAE,IAAI,EAAE,CAAC,aAAa,EAAE;AAC7B,YAAA,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC;AACtB,YAAA,IAAI,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;AACtD,gBAAA,OAAO,EAAE,CAAC;AACX,aAAA;AACF,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;IAEO,qBAAqB,GAAA;AAC3B,QAAA,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC,KAAI;AAChC,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACpB,OAAO;AACR,aAAA;YAED,IAAI,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAChF,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAC9D,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,OAAO;AACR,aAAA;AAED,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;YAE7E,IAAI,UAAU,KAAK,CAAC,EAAE;gBACpB,IAAI,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;AACvD,oBAAA,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;AACvC,iBAAA;qBAAM,IAAI,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;AAC/D,oBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AAC9B,iBAAA;AACF,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAChC,aAAA;YAED,IAAI,CAAC,eAAe,EAAE,CAAC;;YAGvB,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,uBAAuB,EAAE,KAAK,EAAE,CAAC;aACvC,EAAE,EAAE,CAAC,CAAC;AACT,SAAC,CAAA;QAED,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;KACjE;IAEO,eAAe,CAAC,QAAgB,EAAE,MAAc,EAAA;AACtD,QAAA,OAAO,QAAQ,GAAG,MAAM,GAAG,CAAC,CAAC;KAC9B;IAEO,gBAAgB,CAAC,OAAe,EAAE,MAAc,EAAE,MAAc,EAAE,gBAAwB,EAAE,WAAmB,EAAE,YAAoB,EAAA;QAC3I,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;YACzC,IAAI,gBAAgB,IAAI,YAAY,EAAE;AACpC,gBAAA,IAAI,MAAM,GAAG,CAAC,KAAK,MAAM,GAAG,CAAC,IAAI,OAAO,IAAI,MAAM,GAAG,YAAY,CAAC,EAAE;AAClE,oBAAA,OAAO,CAAC,CAAC;AACV,iBAAA;AACF,aAAA;AAAM,iBAAA,IAAI,gBAAgB,GAAG,MAAM,GAAG,YAAY,EAAE;AACnD,gBAAA,MAAM,GAAG,YAAY,GAAG,gBAAgB,CAAC;AAC1C,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,gBAAgB,IAAI,CAAC,WAAW,EAAE;AACpC,gBAAA,IAAI,MAAM,GAAG,CAAC,KAAK,MAAM,GAAG,CAAC,IAAI,OAAO,IAAI,MAAM,GAAG,WAAW,CAAC,EAAE;AACjE,oBAAA,OAAO,CAAC,CAAC;AACV,iBAAA;AACF,aAAA;AAAM,iBAAA,IAAI,gBAAgB,GAAG,MAAM,GAAG,CAAC,WAAW,EAAG;AACpD,gBAAA,MAAM,GAAG,CAAC,WAAW,GAAG,gBAAgB,CAAC;AAC1C,aAAA;AACF,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACf;IAEO,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACnB,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;KAC3B;AAEO,IAAA,yBAAyB,CAAC,eAAiC,EAAA;QACjE,OAAO,CAAC,CAAC,eAAe,EAAE,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;KACvD;AAEO,IAAA,wBAAwB,CAAC,eAAiC,EAAA;QAChE,OAAO,CAAC,CAAC,eAAe,EAAE,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;KACtD;IAEO,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC1B,YAAA,MAAM,CAAG,EAAA,IAAI,CAAC,kBAAkB,kBAAkB,CAAC;AACpD,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,WAAW,GAAG,EAAE,CAAC;KAC/C;AAEO,IAAA,SAAS,CAAC,GAAW,EAAA;QAC3B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;KAC/B;AAEO,IAAA,aAAa,CAAC,OAAoB,EAAA;QACxC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAiB,KAAI;AACtD,YAAA,IAAI,CAAC,uBAAuB,EAAE,KAAK,EAAE,CAAC;AACxC,SAAC,CAAC,CAAC;KACJ;IAEO,MAAM,oBAAoB,CAAC,UAAkB,EAAA;AACnD,QAAA,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACxF,OAAO;AACR,SAAA;AAED,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC;AAC/D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;AAE/C,QAAA,MAAM,OAAO,GAA0B;YACrC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC;AACtC,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe;AAC3C,YAAA,QAAQ,EAAE;AACR,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,IAAI,EAAE,OAAO;AACd,aAAA;SACF,CAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;YAC/B,OAAO;AACR,SAAA;AAED,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;AAC3F,QAAA,MAAM,YAAY,GAAG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;QACzE,IAAI,CAAC,YAAY,EAAE;YACjB,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC;AACzC,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC;QACtC,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;AAEjE,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;QACzE,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,gCAAgC,EAAE,CAAC;QACxC,IAAI,CAAC,uBAAuB,EAAE,CAAC;KAChC;IAEO,mBAAmB,CAAC,IAAY,EAAE,MAAc,EAAA;AACtD,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AAC7E,QAAA,IAAI,mBAAmB,EAAE;AACvB,YAAA,mBAAmB,CAAC,IAAI,GAAG,IAAI,CAAC;AAChC,YAAA,mBAAmB,CAAC,MAAM,GAAG,MAAM,CAAC;AACpC,YAAA,mBAAmB,CAAC,sBAAsB,CAAC,GAAG,KAAK,CAAC;AACrD,SAAA;KACF;IAEO,mBAAmB,GAAA;AACzB,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACzE,OAAO;AACR,SAAA;AAED,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC9C,QAAA,IAAI,aAAa,EAAE;YACjB,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AACnE,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE;AAC1B,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC;AAClD,gBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,EAAE;oBAC7B,OAAO;AACR,iBAAA;gBAED,MAAM,cAAc,GAAa,CAAC,CAAA,EAAG,IAAI,CAAC,UAAU,CAAU,QAAA,CAAA,CAAC,CAAC;gBAChE,MAAM,aAAa,GAAa,EAAE,CAAC;AAEnC,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,IAAG;AACxC,oBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;AACzF,oBAAA,IAAI,cAAc,CAAC,sBAAsB,CAAC,EAAE;wBAC1C,OAAO;AACR,qBAAA;AAED,oBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;AACtG,oBAAA,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAElC,oBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;AAChF,oBAAA,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAClC,iBAAC,CAAC,CAAC;;gBAGH,MAAM,aAAa,GAAgB,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACjE,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC;AAC/C,gBAAA,aAAa,CAAC,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;;gBAGzC,MAAM,YAAY,GAAgB,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAChE,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC;AAC7C,gBAAA,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;AAEhC,gBAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBAC3E,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;gBACvD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBAElE,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,oBAAA,MAAM,uBAAuB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAG,EAAA,IAAI,CAAC,UAAU,CAAW,SAAA,CAAA,CAAC,CAAC,CAAC;oBACvI,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,uBAAuB,CAAC,CAAC;oBACrE,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,uBAAuB,CAAC,CAAC;AACzD,iBAAA;AACF,aAAA;AACF,SAAA;KACF;IAEO,MAAM,WAAW,CAAC,UAAkB,EAAA;AAC1C,QAAA,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvF,OAAO;AACR,SAAA;AAED,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;AAEhD,QAAA,MAAM,OAAO,GAA0B;YACrC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC;AACtC,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe;AAC3C,YAAA,QAAQ,EAAE;AACR,gBAAA,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,IAAI,CAAC,aAAa;AAC3B,aAAA;SACF,CAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;YAC/B,OAAO;AACR,SAAA;AAED,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;AAC3F,QAAA,MAAM,YAAY,GAAG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;QAEzE,IAAI,CAAC,YAAY,EAAE;YACjB,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC;AACzC,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC;QACtC,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;AAEjE,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;QACzE,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,gCAAgC,EAAE,CAAC;QACxC,IAAI,CAAC,uBAAuB,EAAE,CAAC;KAChC;IAEO,uBAAuB,GAAA;QAC7B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACnD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,6BAA6B,EAAE,CAAC;KACtC;IAEO,yBAAyB,GAAA;AAC/B,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAChD,QAAA,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YAC5F,OAAO;AACR,SAAA;AAED,QAAA,MAAM,mBAAmB,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,CAAG,EAAA,IAAI,CAAC,UAAU,CAAA,SAAA,EAAY,IAAI,CAAC,UAAU,CAAC,eAAe,CAAE,CAAA,CAAC,CAAC,CAAC;QAC5J,MAAM,eAAe,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AAC/H,QAAA,IAAI,mBAAmB,EAAE;YACvB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC;AAChE,SAAA;QACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;KACzD;IAEO,iBAAiB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAI,CAAA,EAAA,IAAI,CAAC,gBAAgB,CAAE,CAAA,CAAC,CAAC;KAC1E;AAEO,IAAA,eAAe,CAAC,OAAoB,EAAE,YAAoB,EAAE,QAAgB,EAAA;AAClF,QAAA,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,CAAG,EAAA,IAAI,CAAC,UAAU,IAAI,YAAY,CAAA,CAAA,EAAI,IAAI,CAAC,UAAU,CAAC,eAAe,CAAE,CAAA,CAAC,CAAC,CAAC;AAC1J,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;AACnG,QAAA,IAAI,gBAAgB,EAAE;YACpB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;AACtD,SAAA;QACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;KAC/C;AAEO,IAAA,yBAAyB,CAAC,UAAkB,EAAE,IAAY,EAAE,MAAc,EAAA;QAChF,OAAO,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,SAAA,EAAY,UAAU,CAAA,MAAA,EAAS,IAAI,CAAA,QAAA,EAAW,MAAM,CAAA,CAAE,CAAC;KACjF;AAEO,IAAA,eAAe,CAAC,YAAmB,EAAE,UAAkB,EAAE,KAAa,EAAA;QAC5E,OAAO,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,CAAA,EAAI,YAAY,CAAA,CAAA,EAAI,UAAU,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,CAAC;KACpE;IAEO,mBAAmB,GAAA;QACzB,OAAO,QAAQ,CAAC,aAAa,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,kBAAkB,CAAE,CAAA,CAAC,CAAC;KAC9D;IAEO,gBAAgB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAI,CAAA,EAAA,IAAI,CAAC,QAAQ,CAAE,CAAA,CAAC,CAAC;KAClE;AAEO,IAAA,qBAAqB,CAAC,UAAkB,EAAA;QAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,WAAW,CAAC;QACrG,OAAO,YAAY,GAAG,CAAA,kBAAA,EAAqB,YAAY,CAAA,CAAE,GAAG,0BAA0B,CAAA;KACvF;IAEO,WAAW,GAAA;AACjB,QAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;KAC1B;IAEO,6BAA6B,GAAA;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,OAAO;AACR,SAAA;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACzD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW,EAAE;YAC/B,OAAO;AACR,SAAA;QACD,IAAI,UAAU,CAAC,qBAAqB,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE;YAChD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AACnD,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAC/C,SAAA;QACD,MAAM,aAAa,GAAG,cAAc,EAAE,KAAK,IAAI,MAAM,CAAC,UAAU,CAAC;AACjE,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;YACtF,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACrD,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AACjD,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC;KAC7B;;AAtqBU,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,6KAiCmM,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qGAjCjO,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;0BAkC2N,MAAM;2BAAC,WAAW,CAAA;4CAhCnO,UAAU,EAAA,CAAA;sBAAlB,KAAK;;;MCNK,mBAAmB,CAAA;AAE9B,IAAA,WAAA,CAAoB,YAA0B,EAAA;QAA1B,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;KAAI;IAElD,SAAS,CAAC,IAAY,EAAE,MAAc,EAAA;QACpC,OAAO,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KAChE;;iHANU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;+GAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,CAAA;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,iBAAiB;AACvB,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;;ACQK,MAAO,iBAAkB,SAAQ,iBAAiB,CAAA;AAOtD,IAAA,WAAA,CAAY,QAAkB,EAAU,UAAsB,EAA+B,UAAkB,EAAA;QAC7G,KAAK,CAAC,QAAQ,CAAC,CAAC;QADsB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QAA+B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAQ;QANtG,IAAU,CAAA,UAAA,GAAU,EAAE,CAAC;QACvB,IAAY,CAAA,YAAA,GAAW,EAAE,CAAC;QACnC,IAAqB,CAAA,qBAAA,GAAW,EAAE,CAAC;QACnC,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QAClB,IAAU,CAAA,UAAA,GAAW,EAAE,CAAC;QAI9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;KAChD;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;QACnD,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,YAAY,GAAG,CAAG,EAAA,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,CAAA,CAAE,GAAG,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,IAAA,CAAM,CAAC;AAEtH,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACjF,OAAO;AACR,SAAA;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,CAAC,SAA2B,KAAI;AACnE,YAAA,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;AAC7B,gBAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC5D,OAAO;AACR,iBAAA;gBAED,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAe,KAAI;AAC9C,oBAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,EAAE;wBACzC,OAAO;AACR,qBAAA;oBACD,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAwB,CAAC,CAAC;AACxE,oBAAA,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;wBAC/B,OAAO;AACR,qBAAA;AACD,oBAAA,IAAI,CAAC,gBAAgB,CAAC,SAAwB,EAAE,cAAc,CAAC,CAAC;AAClE,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC,CAAA;AACJ,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;AACnD,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,OAAO,EAAE,IAAI;AACd,SAAA,CAAC,CAAC;QAEH,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC;SAC7B,EAAE,KAAK,CAAC,CAAC;KACX;AAEO,IAAA,iBAAiB,CAAC,WAAwB,EAAA;QAChD,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;AACjD,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;QAED,MAAM,iBAAiB,GAAG,WAAW,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QACpE,IAAI,CAAC,iBAAiB,EAAE;AACtB,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;QACD,MAAM,WAAW,GAAG,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,SAAS,GAAG,WAAW,EAAE,OAAO,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AACjE,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,aAAa,CAAC,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,CAAC,CAAC;QAErF,MAAM,kBAAkB,GAAa,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;AAC7E,QAAA,MAAM,gBAAgB,GAAG,cAAc,GAAG,KAAK,CAAC,IAAI,CAAE,cAA8B,CAAC,SAAS,CAAC,GAAE,EAAE,CAAC;QACpG,OAAO,kBAAkB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,CAAA,UAAA,CAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACnG;IAEO,gBAAgB,CAAC,WAAwB,EAAE,cAAwB,EAAA;QACzE,MAAM,YAAY,GAAG,WAAW,CAAC,aAAa,CAAC,4BAA4B,CAAC,CAAC;QAC7E,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,aAAa,CAAC,qBAAqB,CAAC,EAAE;YACtE,OAAO;AACR,SAAA;QACD,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACpD,QAAA,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAClD,QAAA,cAAc,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAChE,QAAA,YAAY,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;KACzC;AAEO,IAAA,oBAAoB,CAAC,WAAiB,EAAA;AAC5C,QAAA,IAAI,EAAE,WAAW,YAAY,WAAW,CAAC,EAAE;AACzC,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;AAED,QAAA,OAAO,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;KACvG;IAEQ,WAAW,GAAA;AAClB,QAAA,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC;QAC5B,KAAK,CAAC,WAAW,EAAE,CAAC;KACrB;;AAzFU,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,oEAO4C,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAPxE,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECf9B,orEAuDe,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED3CH,iBAAiB,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,IAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FAGvF,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAEZ,OAAA,EAAA,CAAC,iBAAiB,EAAE,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,mBAAmB,CAAC,cACvF,IAAI,EAAA,QAAA,EAAA,orEAAA,EAAA,CAAA;;0BASiD,MAAM;2BAAC,WAAW,CAAA;4CAN1E,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;;;MECK,UAAU,CAAA;;wGAAV,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAV,UAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,YAXnB,iBAAiB;QACjB,iBAAiB;AACjB,QAAA,aAAa,aAIb,iBAAiB;QACjB,iBAAiB;QACjB,aAAa,CAAA,EAAA,CAAA,CAAA;AAGJ,UAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,YAXnB,iBAAiB;QACjB,iBAAiB,CAAA,EAAA,CAAA,CAAA;4FAUR,UAAU,EAAA,UAAA,EAAA,CAAA;kBAbtB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,iBAAiB;wBACjB,iBAAiB;wBACjB,aAAa;AACd,qBAAA;AACD,oBAAA,SAAS,EAAE,EAAE;AACb,oBAAA,OAAO,EAAE;wBACP,iBAAiB;wBACjB,iBAAiB;wBACjB,aAAa;AACd,qBAAA;AACF,iBAAA,CAAA;;;ACjBD;;AAEG;;ACFH;;AAEG;;;;"}