{"version":3,"file":"obliczeniowo-elementary-date.mjs","sources":["../../../../projects/components/date/components/calendar-event/calendar-event.component.ts","../../../../projects/components/date/components/calendar-event/calendar-event.component.html","../../../../projects/components/date/components/events-list/events-list.component.ts","../../../../projects/components/date/components/events-list/events-list.component.html","../../../../projects/components/date/class/svg-day-element.class.ts","../../../../projects/components/date/components/calendar/calendar.component.ts","../../../../projects/components/date/components/calendar/calendar.component.html","../../../../projects/components/date/components/month-control/month-control.component.ts","../../../../projects/components/date/components/month-control/month-control.component.html","../../../../projects/components/date/date.module.ts","../../../../projects/components/date/obliczeniowo-elementary-date.ts"],"sourcesContent":["import { Component, ElementRef, AfterViewInit, ViewChild, input } from '@angular/core';\n\nexport interface EventSettings {\n  color: any;\n  day: Date;\n}\n\n@Component({\n    selector: 'obl-calendar-event',\n    templateUrl: './calendar-event.component.html',\n    styleUrls: ['./calendar-event.component.scss'],\n    standalone: false\n})\nexport class CalendarEventComponent implements AfterViewInit {\n  @ViewChild('calendarEventWindow', { static: false }) calendarEventWindow!: ElementRef<HTMLElement>;\n\n  eventSettings = input.required<EventSettings>();\n\n  constructor(private readonly calendarEventComponent: ElementRef<HTMLElement>) { }\n\n  ngAfterViewInit(): void {\n    this.calendarEventComponent.nativeElement.style.display = 'none';\n    this.calendarEventComponent.nativeElement.style.position = 'fixed';\n    this.calendarEventComponent.nativeElement.style.top = '0';\n    this.calendarEventComponent.nativeElement.style.left = '0';\n    this.calendarEventComponent.nativeElement.style.width = '100%';\n    this.calendarEventComponent.nativeElement.style.height = '100%';\n\n    this.calendarEventComponent.nativeElement.onclick = () => {\n      this.calendarEventComponent.nativeElement.style.display = 'none';\n    };\n\n    this.calendarEventWindow.nativeElement.style.position = 'relative';\n  }\n\n  displayWindow(x: number, y: number): void {\n    this.calendarEventWindow.nativeElement.style.left = x.toString() + 'px';\n    this.calendarEventWindow.nativeElement.style.top = y.toString() + 'px';\n\n    this.calendarEventComponent.nativeElement.style.display = 'block';\n  }\n}\n","<div class=\"window\"\n    [style.borderColor]=\"eventSettings().color\"\n    [style.borderWidth.px]=\"1\"\n    [style.borderStyle]=\"'solid'\"\n    #calendarEventWindow>\n    <ng-content select=\"title\"></ng-content>\n\n    <ng-content select=\"body\"></ng-content>\n</div>","import { CalendarEventComponent } from './../calendar-event/calendar-event.component';\nimport { Component, ContentChildren, QueryList } from '@angular/core';\n\n@Component({\n    selector: 'obl-events-list',\n    templateUrl: './events-list.component.html',\n    styleUrls: ['./events-list.component.scss'],\n    standalone: false\n})\nexport class EventsListComponent {\n  @ContentChildren(CalendarEventComponent) eventsList!: QueryList<CalendarEventComponent>;\n}\n","<ng-content select=\"eventslist\">\n</ng-content>","import { Rotate, Style, SvgRect, SvgText, SvgGroup } from '@obliczeniowo/elementary/post-diagram';\nimport { CalendarEventComponent } from '../components/calendar-event/calendar-event.component';\nimport { EventsListComponent } from '../components/events-list/events-list.component';\n\nexport class SvgDayElement {\n  private day: Date;\n  private readonly svgGroup: SvgGroup;\n  private readonly svgDayNumber: SvgText;\n  private readonly svgDayFrame: SvgRect;\n  private readonly svgDayBackground: SvgRect;\n  private eventComponent: CalendarEventComponent | undefined;\n  private readonly svgContainer;\n\n  set event(eventListComponent: EventsListComponent) {\n    if (eventListComponent) {\n      this.eventComponent = eventListComponent.eventsList.find(\n        (event: CalendarEventComponent) => {\n          return event.eventSettings().day.getDate() === this.day.getDate() &&\n            event.eventSettings().day.getMonth() === this.day.getMonth() &&\n            event.eventSettings().day.getFullYear() === this.day.getFullYear();\n        }\n      );\n    }\n\n    const now: Date = new Date();\n    const isNowDay: boolean =\n      this.day.getDate() === now.getDate() &&\n      this.day.getMonth() === now.getMonth() &&\n      this.day.getFullYear() === now.getFullYear();\n\n    this.svgDayBackground.svg.style.fill = this.eventComponent\n      ? this.eventComponent.eventSettings().color\n      : (isNowDay ? '#0078d7' : '#3d3d3d');\n  }\n\n  constructor(\n    x: number,\n    y: number,\n    width: number,\n    height: number,\n    day: Date,\n    currentMonth: Date,\n    svgContainer: any,\n    eventsListComponent: EventsListComponent,\n    onClick?: (date: Date) => void\n  ) {\n    this.day = day;\n    this.svgGroup = new SvgGroup(this.id, 'cursor: pointer');\n    this.svgContainer = svgContainer;\n    svgContainer.appendChild(this.svgGroup.svgGroupContainer);\n\n    const now: Date = new Date();\n    const isNowDay: boolean =\n      this.day.getDate() === now.getDate() &&\n      this.day.getMonth() === now.getMonth() &&\n      this.day.getFullYear() === now.getFullYear();\n\n    this.svgDayFrame = new SvgRect(\n      x,\n      y,\n      width,\n      height,\n      this.frameId,\n      this.svgGroup,\n      new Style({\n        fill: '#3d3d3d',\n        stroke: isNowDay ? '#0078d7' : 'none'\n      })\n    );\n\n    const dx = 3;\n\n    this.svgDayBackground = new SvgRect(\n      x + dx,\n      y + dx,\n      width - 2 * dx,\n      height - 2 * dx,\n      this.backgroundId,\n      this.svgGroup,\n      new Style({\n        fill: isNowDay ? '#0078d7' : '#3d3d3d'\n      })\n    );\n\n    this.svgDayNumber = new SvgText(\n      x + width / 2,\n      y + height / 2 + 5,\n      this.day.getDate().toString(),\n      new Style({\n        'text-anchor': 'middle',\n        fill: this.day.getDay() ? '#ffffff' : '#ff4400',\n        opacity: currentMonth.getMonth() === this.day.getMonth() ? '1' : '0.5'\n      }),\n      this.textId,\n      new Rotate(0),\n      this.svgGroup\n    );\n\n    this.event = eventsListComponent;\n\n    this.onClick = onClick;\n\n    this.svgGroup.svgGroupContainer.onclick = () => {\n      if (this.eventComponent) {\n        const rect: DOMRect = this.svgContainer.getBoundingClientRect();\n        this.eventComponent.displayWindow(x + rect.x, y + rect.y);\n      }\n      if (this.onClick) {\n        this.onClick(this.day);\n      }\n    };\n  }\n\n  onClick: ((date: Date) => void) | undefined;\n\n  setDay(day: Date, currentMonth: Date): void {\n    this.day = new Date(day);\n\n    const now: Date = new Date();\n    const isNowDay: boolean =\n      this.day.getDate() === now.getDate() &&\n      this.day.getMonth() === now.getMonth() &&\n      this.day.getFullYear() === now.getFullYear();\n\n    this.svgDayBackground.svg.setAttribute('id', this.backgroundId);\n    this.svgDayBackground.svg.setAttribute('style', new Style({\n      fill: !isNowDay ? '#3d3d3d' : '#0078d7'\n    }).toString());\n\n    this.svgDayNumber.svg.setAttribute('id', this.textId);\n    this.svgDayNumber.setText(day.getDate().toString());\n    this.svgDayNumber.svg.setAttribute('style',\n      new Style({\n        'text-anchor': 'middle',\n        fill: this.day.getDay() ? '#ffffff' : '#ff4400',\n        opacity: currentMonth.getMonth() === this.day.getMonth() ? '1' : '0.5'\n      }).toString());\n\n    this.svgDayFrame.svg.setAttribute('id', this.frameId);\n    this.svgDayFrame.svg.setAttribute('style', new Style({\n      fill: '#3d3d3d',\n      stroke: !isNowDay ? 'none' : '#0078d7'\n    }).toString());\n  }\n\n  get id(): string {\n    return 'day_' + this.day.getDate() + '_' + this.day.getMonth() + '_' + this.day.getFullYear();\n  }\n\n  get frameId(): string {\n    return 'frame_' + this.id;\n  }\n\n  get textId(): string {\n    return 'day_' + this.id;\n  }\n\n  get backgroundId(): string {\n    return 'background_' + this.id;\n  }\n}\n","import { ns, xlink } from '@obliczeniowo/elementary/svg';\nimport { MonthControlComponent } from './../month-control/month-control.component';\n\nimport { Component, ElementRef, ViewChild, AfterViewInit, HostListener, Input, Inject, LOCALE_ID, Output, EventEmitter, input, Renderer2 } from '@angular/core';\nimport { EventsListComponent } from '../events-list/events-list.component';\n\nimport { SvgDayElement } from '../../class/svg-day-element.class';\nimport { SvgRect, SvgText, Rotate, SvgGroup, Style } from '@obliczeniowo/elementary/post-diagram';\nimport { DatePipe } from '@angular/common';\n\n@Component({\n    selector: 'obl-calendar',\n    templateUrl: './calendar.component.html',\n    styleUrls: ['./calendar.component.scss'],\n    standalone: false\n})\nexport class CalendarComponent implements AfterViewInit {\n  @ViewChild('svgContainer', { static: false }) svgContainer!: ElementRef<SVGSVGElement>;\n\n  monthControl = input<MonthControlComponent | null>(null);\n\n  // tslint:disable-next-line: variable-name\n  private _eventsList: EventsListComponent | null = null;\n\n  @Input()\n  set eventsList(eventList: EventsListComponent | null) {\n    this._eventsList = eventList;\n    this.setEvents();\n  }\n\n  @Output()\n  clicked = new EventEmitter<Date>();\n\n  width = 500;\n  height = 500;\n\n  rectWidth = 40;\n  rectHeight = 40;\n  dx = 5;\n\n  private framesGroup!: SvgGroup;\n  private readonly defs!: SVGDefsElement;\n  private readonly radialGradient!: SVGRadialGradientElement;\n  private readonly linearGradient!: SVGLinearGradientElement;\n\n  private readonly datePipe!: DatePipe;\n\n  currentDay: Date = new Date();\n  currentMonth: Date = new Date();\n  startDate!: Date;\n  endDate!: Date;\n\n  backgroundColor = '#3d3d3d';\n\n  private readonly svgRects: SvgRect[] = [];\n  private readonly svgNumbers: SvgDayElement[] = [];\n\n  private svgHeaderGroup!: SvgGroup;\n  private readonly svgHeaderDaysText: SvgText[] = [];\n\n  constructor(\n    @Inject(LOCALE_ID) public readonly locale: string,\n    private readonly calendarComponent: ElementRef<HTMLElement>,\n    private readonly renderer: Renderer2\n  ) {\n    // do not move outside of constructor as brings initialization problem in installing project\n    this.datePipe = new DatePipe(this.locale || 'en-US');\n    this.defs = this.renderer.createElement('defs', ns) as any;\n    this.radialGradient = this.renderer.createElement('radialGradient', ns) as any;\n    this.linearGradient = this.renderer.createElement('linearGradient', ns) as any;\n    this.setStartEndDates();\n  }\n\n  private setStartEndDates(): void {\n    this.startDate = new Date(this.currentMonth);\n\n    this.startDate.setDate(1 - this.getFirstMonthDay(this.startDate));\n\n    this.endDate = new Date(this.startDate);\n    this.endDate.setDate(this.startDate.getDate() + 7 * 6 - 1);\n  }\n\n  private getFirstMonthDay(date: Date): number {\n    const firstDay: Date = new Date(date);\n    firstDay.setDate(1);\n    return firstDay.getDay() > 0 ? firstDay.getDay() - 1 : 6;\n  }\n\n  private setXYGradientPost(x: number, y: number): void {\n    this.radialGradient.setAttribute('cx', x.toString());\n    this.radialGradient.setAttribute('cy', y.toString());\n    this.radialGradient.setAttribute('fx', x.toString());\n    this.radialGradient.setAttribute('fy', y.toString());\n  }\n\n  @HostListener('mousemove', ['$event']) mouseMove(event: any): void {\n    const rect = this.svgContainer.nativeElement.getBoundingClientRect();\n    this.setXYGradientPost(event.clientX - rect.left, event.clientY - rect.top);\n  }\n\n  private setMonth(monthDate: Date): void {\n    this.currentMonth = new Date(monthDate);\n    this.setStartEndDates();\n    this.setEvents();\n  }\n\n  private setEvents(): void {\n    this.svgNumbers.forEach((svgNumber: SvgDayElement, index: number) => {\n      const day = new Date(this.startDate);\n      day.setDate(day.getDate() + index);\n\n      svgNumber.setDay(day, this.currentMonth);\n      svgNumber.event = this._eventsList as EventsListComponent;\n    });\n  }\n\n  ngAfterViewInit(): void {\n    this.calendarComponent.nativeElement.style.backgroundColor = this.backgroundColor;\n\n    this.backgroundColor = '#3d3d3d';\n\n    this.width = (this.rectHeight + this.dx) * 7 + this.dx;\n    this.height = (this.rectWidth + this.dx) * 7 + this.dx;\n\n    this.svgContainer.nativeElement.setAttribute('width', this.width.toString());\n    this.svgContainer.nativeElement.setAttribute('height', this.height.toString());\n    this.svgContainer.nativeElement.style.backgroundColor = this.backgroundColor;\n\n    this.linearGradient.id = 'frameLinearGradient';\n\n    const svgGradientStop: SVGStopElement = this.renderer.createElement('stop', ns) as any;\n    svgGradientStop.setAttribute('style', 'stop-color: white; stop-opacity: 1');\n    svgGradientStop.setAttribute('offset', '0');\n\n    const svgGradientStopEnd: SVGStopElement = this.renderer.createElement('stop', ns) as any;\n    svgGradientStopEnd.setAttribute('style', 'stop-color: white; stop-opacity: 0');\n    svgGradientStopEnd.setAttribute('offset', '1');\n\n    this.radialGradient.setAttributeNS(xlink, 'href', '#frameLinearGradient');\n    this.radialGradient.setAttribute('id', 'frameGradient');\n    this.radialGradient.setAttribute('cx', '1');\n    this.radialGradient.setAttribute('cy', '1');\n    this.radialGradient.setAttribute('fx', '1');\n    this.radialGradient.setAttribute('fy', '1');\n    this.radialGradient.setAttribute('r', '70');\n    this.radialGradient.setAttribute('gradientUnits', 'userSpaceOnUse');\n\n    this.linearGradient.appendChild(\n      svgGradientStop\n    );\n\n    this.linearGradient.appendChild(\n      svgGradientStopEnd\n    );\n\n    this.defs.appendChild(this.linearGradient);\n    this.defs.appendChild(this.radialGradient);\n\n    this.svgContainer.nativeElement.appendChild(this.defs);\n\n    const monthControl = this.monthControl();\n\n    if (monthControl) {\n      monthControl.triggerFunction = (date: Date) => {\n        this.setMonth(date);\n      };\n    }\n\n    this.framesGroup = new SvgGroup('framesGroup', 'stroke: url(#frameGradient); fill: none');\n\n    let day: Date;\n\n    const dx = 0;\n    const dy = this.rectHeight;\n\n    this.svgHeaderGroup = new SvgGroup('days_header');\n\n    const days: string[] = [];\n\n    for (let offset = 0; offset < 7; offset++) {\n      const date = new Date(this.startDate);\n      date.setDate(date.getDate() + offset);\n      days.push(this.datePipe.transform(date, 'E') as string);\n    }\n\n    days.forEach((dayT: string, index) => {\n      this.svgHeaderDaysText.push(\n        new SvgText(\n          index * (this.rectWidth + this.dx) + 0.5 * this.rectWidth + this.dx,\n          this.rectHeight - 12,\n          dayT,\n          new Style({\n            'text-anchor': 'middle',\n            fill: index !== 6 ? '#ffffff' : '#ff5500',\n            'font-size': '15px'\n          }),\n          'day_header_' + index,\n          new Rotate(0),\n          this.svgHeaderGroup\n        )\n      );\n    });\n\n    this.svgContainer.nativeElement.appendChild(this.svgHeaderGroup.svgGroupContainer);\n\n    for (let y = 0; y < 6; y++) {\n      for (let x = 0; x < 7; x++) {\n        this.svgRects.push(\n          new SvgRect(\n            (this.rectWidth + this.dx) * x + this.dx + dx,\n            (this.rectHeight + this.dx) * y + this.dx + dy,\n            this.rectWidth,\n            this.rectHeight,\n            '1',\n            this.framesGroup,\n            new Style({}),\n          ));\n\n        day = new Date(this.startDate);\n        day.setDate(day.getDate() + y * 7 + x);\n\n        this.svgNumbers.push(\n          new SvgDayElement(\n            (this.rectWidth + this.dx) * x + this.dx + dx,\n            (this.rectHeight + this.dx) * y + this.dx + dy,\n            this.rectWidth,\n            this.rectHeight,\n            day,\n            this.currentDay,\n            this.svgContainer.nativeElement,\n            this._eventsList as EventsListComponent,\n            (date: Date) => this.clicked.emit(date)\n          )\n        );\n      }\n    }\n\n    this.svgContainer.nativeElement.appendChild(this.framesGroup.svgGroupContainer);\n  }\n}\n","<svg #svgContainer></svg>\n","import { Component, model } from '@angular/core';\n\n@Component({\n    selector: 'obl-month-control',\n    templateUrl: './month-control.component.html',\n    styleUrls: ['./month-control.component.scss'],\n    standalone: false\n})\nexport class MonthControlComponent {\n  date = model<Date>(new Date());\n\n  triggerFunction = (date: Date) => {\n  }\n\n  nextMonth(): void {\n    this.date.set(new Date(this.date().setMonth(this.date().getMonth() + 1)));\n    this.triggerFunction(this.date());\n  }\n\n  previousMonth(): void {\n    this.date.set(new Date(this.date().setMonth(this.date().getMonth() - 1)));\n    this.triggerFunction(this.date());\n  }\n}\n","<button (click)=\"previousMonth()\">\n  <obl-icon [name]=\"'left'\"></obl-icon>\n</button>\n\n<div>{{ this.date() | date: 'LLLL - yyyy' }}</div>\n\n<button (click)=\"nextMonth()\">\n  <obl-icon [name]=\"'right'\"></obl-icon>\n</button>\n","import { IconsModule } from '@obliczeniowo/elementary/icons';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EventsListComponent } from './components/events-list/events-list.component';\nimport { CalendarComponent } from './components/calendar/calendar.component';\nimport { MonthControlComponent } from './components/month-control/month-control.component';\nimport { CalendarEventComponent } from './components/calendar-event/calendar-event.component';\n\n@NgModule({\n  declarations: [\n    EventsListComponent,\n    CalendarComponent,\n    MonthControlComponent,\n    CalendarEventComponent\n  ],\n  imports: [\n    CommonModule,\n    IconsModule\n  ],\n  exports: [\n    EventsListComponent,\n    CalendarComponent,\n    MonthControlComponent,\n    CalendarEventComponent\n  ],\n  providers: []\n})\nexport class DateModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;MAaa,sBAAsB,CAAA;AAKJ,IAAA,sBAAA;AAJwB,IAAA,mBAAmB;AAExE,IAAA,aAAa,GAAG,KAAK,CAAC,QAAQ,EAAiB;AAE/C,IAAA,WAAA,CAA6B,sBAA+C,EAAA;QAA/C,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB;;IAEnD,eAAe,GAAA;QACb,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;QAChE,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;QAClE,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG;QACzD,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG;QAC1D,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM;QAC9D,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM;QAE/D,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,OAAO,GAAG,MAAK;YACvD,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;AAClE,SAAC;QAED,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU;;IAGpE,aAAa,CAAC,CAAS,EAAE,CAAS,EAAA;AAChC,QAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,GAAG,IAAI;AACvE,QAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,GAAG,IAAI;QAEtE,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO;;uGA1BxD,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,sWCbnC,qRAQM,EAAA,MAAA,EAAA,CAAA,yOAAA,CAAA,EAAA,CAAA;;2FDKO,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,cAGlB,KAAK,EAAA,QAAA,EAAA,qRAAA,EAAA,MAAA,EAAA,CAAA,yOAAA,CAAA,EAAA;+EAGkC,mBAAmB,EAAA,CAAA;sBAAvE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,qBAAqB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;;MELxC,mBAAmB,CAAA;AACW,IAAA,UAAU;uGADxC,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EACb,sBAAsB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECVzC,mDACa,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FDQA,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cAGf,KAAK,EAAA,QAAA,EAAA,mDAAA,EAAA;8BAGsB,UAAU,EAAA,CAAA;sBAAlD,eAAe;uBAAC,sBAAsB;;;MEN5B,aAAa,CAAA;AAChB,IAAA,GAAG;AACM,IAAA,QAAQ;AACR,IAAA,YAAY;AACZ,IAAA,WAAW;AACX,IAAA,gBAAgB;AACzB,IAAA,cAAc;AACL,IAAA,YAAY;IAE7B,IAAI,KAAK,CAAC,kBAAuC,EAAA;QAC/C,IAAI,kBAAkB,EAAE;AACtB,YAAA,IAAI,CAAC,cAAc,GAAG,kBAAkB,CAAC,UAAU,CAAC,IAAI,CACtD,CAAC,KAA6B,KAAI;AAChC,gBAAA,OAAO,KAAK,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;AAC/D,oBAAA,KAAK,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;AAC5D,oBAAA,KAAK,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;AACtE,aAAC,CACF;;AAGH,QAAA,MAAM,GAAG,GAAS,IAAI,IAAI,EAAE;AAC5B,QAAA,MAAM,QAAQ,GACZ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,OAAO,EAAE;YACpC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,QAAQ,EAAE;YACtC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,WAAW,EAAE;QAE9C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;cACxC,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;AACtC,eAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;;AAGxC,IAAA,WAAA,CACE,CAAS,EACT,CAAS,EACT,KAAa,EACb,MAAc,EACd,GAAS,EACT,YAAkB,EAClB,YAAiB,EACjB,mBAAwC,EACxC,OAA8B,EAAA;AAE9B,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG;AACd,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,iBAAiB,CAAC;AACxD,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY;QAChC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;AAEzD,QAAA,MAAM,GAAG,GAAS,IAAI,IAAI,EAAE;AAC5B,QAAA,MAAM,QAAQ,GACZ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,OAAO,EAAE;YACpC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,QAAQ,EAAE;YACtC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,WAAW,EAAE;QAE9C,IAAI,CAAC,WAAW,GAAG,IAAI,OAAO,CAC5B,CAAC,EACD,CAAC,EACD,KAAK,EACL,MAAM,EACN,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,QAAQ,EACb,IAAI,KAAK,CAAC;AACR,YAAA,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG;AAChC,SAAA,CAAC,CACH;QAED,MAAM,EAAE,GAAG,CAAC;AAEZ,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,OAAO,CACjC,CAAC,GAAG,EAAE,EACN,CAAC,GAAG,EAAE,EACN,KAAK,GAAG,CAAC,GAAG,EAAE,EACd,MAAM,GAAG,CAAC,GAAG,EAAE,EACf,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,QAAQ,EACb,IAAI,KAAK,CAAC;YACR,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG;AAC9B,SAAA,CAAC,CACH;AAED,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,CAC7B,CAAC,GAAG,KAAK,GAAG,CAAC,EACb,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,EAClB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAC7B,IAAI,KAAK,CAAC;AACR,YAAA,aAAa,EAAE,QAAQ;AACvB,YAAA,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,SAAS,GAAG,SAAS;AAC/C,YAAA,OAAO,EAAE,YAAY,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG;AAClE,SAAA,CAAC,EACF,IAAI,CAAC,MAAM,EACX,IAAI,MAAM,CAAC,CAAC,CAAC,EACb,IAAI,CAAC,QAAQ,CACd;AAED,QAAA,IAAI,CAAC,KAAK,GAAG,mBAAmB;AAEhC,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;QAEtB,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,OAAO,GAAG,MAAK;AAC7C,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,MAAM,IAAI,GAAY,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE;AAC/D,gBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;;AAE3D,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;;AAE1B,SAAC;;AAGH,IAAA,OAAO;IAEP,MAAM,CAAC,GAAS,EAAE,YAAkB,EAAA;QAClC,IAAI,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;AAExB,QAAA,MAAM,GAAG,GAAS,IAAI,IAAI,EAAE;AAC5B,QAAA,MAAM,QAAQ,GACZ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,OAAO,EAAE;YACpC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,QAAQ,EAAE;YACtC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,WAAW,EAAE;AAE9C,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC;QAC/D,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC;YACxD,IAAI,EAAE,CAAC,QAAQ,GAAG,SAAS,GAAG;AAC/B,SAAA,CAAC,CAAC,QAAQ,EAAE,CAAC;AAEd,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;AACrD,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC;QACnD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,EACxC,IAAI,KAAK,CAAC;AACR,YAAA,aAAa,EAAE,QAAQ;AACvB,YAAA,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,SAAS,GAAG,SAAS;AAC/C,YAAA,OAAO,EAAE,YAAY,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG;AAClE,SAAA,CAAC,CAAC,QAAQ,EAAE,CAAC;AAEhB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC;QACrD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC;AACnD,YAAA,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,CAAC,QAAQ,GAAG,MAAM,GAAG;AAC9B,SAAA,CAAC,CAAC,QAAQ,EAAE,CAAC;;AAGhB,IAAA,IAAI,EAAE,GAAA;QACJ,OAAO,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;;AAG/F,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,QAAQ,GAAG,IAAI,CAAC,EAAE;;AAG3B,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,MAAM,GAAG,IAAI,CAAC,EAAE;;AAGzB,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,aAAa,GAAG,IAAI,CAAC,EAAE;;AAEjC;;MChJY,iBAAiB,CAAA;AA6CS,IAAA,MAAA;AAClB,IAAA,iBAAA;AACA,IAAA,QAAA;AA9C2B,IAAA,YAAY;AAE1D,IAAA,YAAY,GAAG,KAAK,CAA+B,IAAI,CAAC;;IAGhD,WAAW,GAA+B,IAAI;IAEtD,IACI,UAAU,CAAC,SAAqC,EAAA;AAClD,QAAA,IAAI,CAAC,WAAW,GAAG,SAAS;QAC5B,IAAI,CAAC,SAAS,EAAE;;AAIlB,IAAA,OAAO,GAAG,IAAI,YAAY,EAAQ;IAElC,KAAK,GAAG,GAAG;IACX,MAAM,GAAG,GAAG;IAEZ,SAAS,GAAG,EAAE;IACd,UAAU,GAAG,EAAE;IACf,EAAE,GAAG,CAAC;AAEE,IAAA,WAAW;AACF,IAAA,IAAI;AACJ,IAAA,cAAc;AACd,IAAA,cAAc;AAEd,IAAA,QAAQ;AAEzB,IAAA,UAAU,GAAS,IAAI,IAAI,EAAE;AAC7B,IAAA,YAAY,GAAS,IAAI,IAAI,EAAE;AAC/B,IAAA,SAAS;AACT,IAAA,OAAO;IAEP,eAAe,GAAG,SAAS;IAEV,QAAQ,GAAc,EAAE;IACxB,UAAU,GAAoB,EAAE;AAEzC,IAAA,cAAc;IACL,iBAAiB,GAAc,EAAE;AAElD,IAAA,WAAA,CACqC,MAAc,EAChC,iBAA0C,EAC1C,QAAmB,EAAA;QAFD,IAAM,CAAA,MAAA,GAAN,MAAM;QACxB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAQ,CAAA,QAAA,GAAR,QAAQ;;AAGzB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC;AACpD,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAQ;AAC1D,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,gBAAgB,EAAE,EAAE,CAAQ;AAC9E,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,gBAAgB,EAAE,EAAE,CAAQ;QAC9E,IAAI,CAAC,gBAAgB,EAAE;;IAGjB,gBAAgB,GAAA;QACtB,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;AAE5C,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEjE,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AACvC,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;;AAGpD,IAAA,gBAAgB,CAAC,IAAU,EAAA;AACjC,QAAA,MAAM,QAAQ,GAAS,IAAI,IAAI,CAAC,IAAI,CAAC;AACrC,QAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACnB,QAAA,OAAO,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC;;IAGlD,iBAAiB,CAAC,CAAS,EAAE,CAAS,EAAA;AAC5C,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AACpD,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AACpD,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AACpD,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;;AAGf,IAAA,SAAS,CAAC,KAAU,EAAA;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,qBAAqB,EAAE;AACpE,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;;AAGrE,IAAA,QAAQ,CAAC,SAAe,EAAA;QAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC;QACvC,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,SAAS,EAAE;;IAGV,SAAS,GAAA;QACf,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAwB,EAAE,KAAa,KAAI;YAClE,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YACpC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC;YAElC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC;AACxC,YAAA,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,WAAkC;AAC3D,SAAC,CAAC;;IAGJ,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe;AAEjF,QAAA,IAAI,CAAC,eAAe,GAAG,SAAS;AAEhC,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE;AACtD,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE;AAEtD,QAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;AAC5E,QAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC9E,QAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe;AAE5E,QAAA,IAAI,CAAC,cAAc,CAAC,EAAE,GAAG,qBAAqB;AAE9C,QAAA,MAAM,eAAe,GAAmB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAQ;AACtF,QAAA,eAAe,CAAC,YAAY,CAAC,OAAO,EAAE,oCAAoC,CAAC;AAC3E,QAAA,eAAe,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC;AAE3C,QAAA,MAAM,kBAAkB,GAAmB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAQ;AACzF,QAAA,kBAAkB,CAAC,YAAY,CAAC,OAAO,EAAE,oCAAoC,CAAC;AAC9E,QAAA,kBAAkB,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC;QAE9C,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,sBAAsB,CAAC;QACzE,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,EAAE,eAAe,CAAC;QACvD,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC;QAC3C,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC;QAC3C,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC;QAC3C,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC;QAC3C,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC;QAC3C,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,eAAe,EAAE,gBAAgB,CAAC;AAEnE,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,CAC7B,eAAe,CAChB;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,CAC7B,kBAAkB,CACnB;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC;QAE1C,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AAEtD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;QAExC,IAAI,YAAY,EAAE;AAChB,YAAA,YAAY,CAAC,eAAe,GAAG,CAAC,IAAU,KAAI;AAC5C,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACrB,aAAC;;QAGH,IAAI,CAAC,WAAW,GAAG,IAAI,QAAQ,CAAC,aAAa,EAAE,yCAAyC,CAAC;AAEzF,QAAA,IAAI,GAAS;QAEb,MAAM,EAAE,GAAG,CAAC;AACZ,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU;QAE1B,IAAI,CAAC,cAAc,GAAG,IAAI,QAAQ,CAAC,aAAa,CAAC;QAEjD,MAAM,IAAI,GAAa,EAAE;AAEzB,QAAA,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE;YACzC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC;AACrC,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAW,CAAC;;QAGzD,IAAI,CAAC,OAAO,CAAC,CAAC,IAAY,EAAE,KAAK,KAAI;AACnC,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CACzB,IAAI,OAAO,CACT,KAAK,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,EACnE,IAAI,CAAC,UAAU,GAAG,EAAE,EACpB,IAAI,EACJ,IAAI,KAAK,CAAC;AACR,gBAAA,aAAa,EAAE,QAAQ;gBACvB,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,SAAS,GAAG,SAAS;AACzC,gBAAA,WAAW,EAAE;AACd,aAAA,CAAC,EACF,aAAa,GAAG,KAAK,EACrB,IAAI,MAAM,CAAC,CAAC,CAAC,EACb,IAAI,CAAC,cAAc,CACpB,CACF;AACH,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC;AAElF,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC1B,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC1B,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,IAAI,OAAO,CACT,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,EAC7C,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,EAC9C,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,UAAU,EACf,GAAG,EACH,IAAI,CAAC,WAAW,EAChB,IAAI,KAAK,CAAC,EAAE,CAAC,CACd,CAAC;gBAEJ,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AAC9B,gBAAA,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEtC,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAClB,IAAI,aAAa,CACf,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,EAC7C,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,EAC9C,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,UAAU,EACf,GAAG,EACH,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,YAAY,CAAC,aAAa,EAC/B,IAAI,CAAC,WAAkC,EACvC,CAAC,IAAU,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CACxC,CACF;;;AAIL,QAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC;;AA7NtE,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,kBA6ClB,SAAS,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AA7CR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,ojBChB9B,6BACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FDea,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,cAGZ,KAAK,EAAA,QAAA,EAAA,6BAAA,EAAA;;0BA+ChB,MAAM;2BAAC,SAAS;0FA5C2B,YAAY,EAAA,CAAA;sBAAzD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,cAAc,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBAQxC,UAAU,EAAA,CAAA;sBADb;gBAOD,OAAO,EAAA,CAAA;sBADN;gBAiEsC,SAAS,EAAA,CAAA;sBAA/C,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;;;MEvF1B,qBAAqB,CAAA;AAChC,IAAA,IAAI,GAAG,KAAK,CAAO,IAAI,IAAI,EAAE,CAAC;AAE9B,IAAA,eAAe,GAAG,CAAC,IAAU,KAAI;AACjC,KAAC;IAED,SAAS,GAAA;QACP,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;;IAGnC,aAAa,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;;uGAbxB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,gPCRlC,+OASA,EAAA,MAAA,EAAA,CAAA,kWAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA;;2FDDa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,cAGjB,KAAK,EAAA,QAAA,EAAA,+OAAA,EAAA,MAAA,EAAA,CAAA,kWAAA,CAAA,EAAA;;;MEqBR,UAAU,CAAA;uGAAV,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,iBAjBnB,mBAAmB;YACnB,iBAAiB;YACjB,qBAAqB;AACrB,YAAA,sBAAsB,aAGtB,YAAY;AACZ,YAAA,WAAW,aAGX,mBAAmB;YACnB,iBAAiB;YACjB,qBAAqB;YACrB,sBAAsB,CAAA,EAAA,CAAA;AAIb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,YAXnB,YAAY;YACZ,WAAW,CAAA,EAAA,CAAA;;2FAUF,UAAU,EAAA,UAAA,EAAA,CAAA;kBAnBtB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,mBAAmB;wBACnB,iBAAiB;wBACjB,qBAAqB;wBACrB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,mBAAmB;wBACnB,iBAAiB;wBACjB,qBAAqB;wBACrB;AACD,qBAAA;AACD,oBAAA,SAAS,EAAE;AACZ,iBAAA;;;AC1BD;;AAEG;;;;"}