{"version":3,"file":"igniteui-angular-slider.mjs","sources":["../../../projects/igniteui-angular/slider/src/slider/slider.common.ts","../../../projects/igniteui-angular/slider/src/slider/label/thumb-label.component.ts","../../../projects/igniteui-angular/slider/src/slider/label/thumb-label.component.html","../../../projects/igniteui-angular/slider/src/slider/thumb/thumb-slider.component.ts","../../../projects/igniteui-angular/slider/src/slider/thumb/thumb-slider.component.html","../../../projects/igniteui-angular/slider/src/slider/ticks/tick.pipe.ts","../../../projects/igniteui-angular/slider/src/slider/ticks/ticks.component.ts","../../../projects/igniteui-angular/slider/src/slider/ticks/ticks.component.html","../../../projects/igniteui-angular/slider/src/slider/slider.component.ts","../../../projects/igniteui-angular/slider/src/slider/slider.component.html","../../../projects/igniteui-angular/slider/src/slider/public_api.ts","../../../projects/igniteui-angular/slider/src/slider/slider.module.ts","../../../projects/igniteui-angular/slider/src/igniteui-angular-slider.ts"],"sourcesContent":["import { Directive } from '@angular/core';\n\n/**\n * Template directive that allows you to set a custom template representing the lower label value of the {@link IgxSliderComponent}\n *\n * ```html\n * <igx-slider>\n *  <ng-template igxSliderThumbFrom let-value let-labels>{{value}}</ng-template>\n * </igx-slider>\n * ```\n *\n * @context {@link IgxSliderComponent.context}\n */\n@Directive({\n    selector: '[igxSliderThumbFrom]',\n    standalone: true\n})\nexport class IgxThumbFromTemplateDirective {}\n\n/**\n * Template directive that allows you to set a custom template representing the upper label value of the {@link IgxSliderComponent}\n *\n * ```html\n * <igx-slider>\n *  <ng-template igxSliderThumbTo let-value let-labels>{{value}}</ng-template>\n * </igx-slider>\n * ```\n *\n * @context {@link IgxSliderComponent.context}\n */\n@Directive({\n    selector: '[igxSliderThumbTo]',\n    standalone: true\n})\nexport class IgxThumbToTemplateDirective {}\n\n/**\n * Template directive that allows you to set a custom template, represeting primary/secondary tick labels of the {@link IgxSliderComponent}\n *\n * @context {@link IgxTicksComponent.context}\n */\n@Directive({\n    selector: '[igxSliderTickLabel]',\n    standalone: true\n})\nexport class IgxTickLabelTemplateDirective {}\n\nexport interface IRangeSliderValue {\n    lower: number;\n    upper: number;\n}\n\nexport interface ISliderValueChangeEventArgs {\n    oldValue: number | IRangeSliderValue;\n    value: number | IRangeSliderValue;\n}\n\nexport const IgxSliderType = {\n    /**\n     * Slider with single thumb.\n     */\n    SLIDER: 'slider',\n    /**\n     *  Range slider with multiple thumbs, that can mark the range.\n     */\n    RANGE: 'range'\n} as const;\nexport type IgxSliderType = (typeof IgxSliderType)[keyof typeof IgxSliderType];\n\nexport const SliderHandle = {\n    FROM: 'from',\n    TO: 'to'\n} as const;\nexport type SliderHandle = (typeof SliderHandle)[keyof typeof SliderHandle];\n\n/**\n * Slider Tick labels Orientation\n */\nexport const TickLabelsOrientation = {\n    Horizontal: 'horizontal',\n    TopToBottom: 'toptobottom',\n    BottomToTop: 'bottomtotop'\n} as const;\nexport type TickLabelsOrientation = (typeof TickLabelsOrientation)[keyof typeof TickLabelsOrientation];\n\n/**\n * Slider Ticks orientation\n */\nexport const TicksOrientation = {\n    Top: 'top',\n    Bottom: 'bottom',\n    Mirror: 'mirror'\n} as const;\nexport type TicksOrientation = (typeof TicksOrientation)[keyof typeof TicksOrientation];\n","import { Component, Input, TemplateRef, HostBinding, ElementRef, booleanAttribute, inject } from '@angular/core';\nimport { SliderHandle } from '../slider.common';\nimport { IgxSliderThumbComponent } from '../thumb/thumb-slider.component';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\n\n/**\n * @hidden\n */\n@Component({\n    selector: 'igx-thumb-label',\n    templateUrl: 'thumb-label.component.html',\n    imports: [NgClass, NgTemplateOutlet]\n})\nexport class IgxThumbLabelComponent {\n    private _elementRef = inject(ElementRef);\n\n    @Input()\n    public value: any;\n\n    @Input()\n    public templateRef: TemplateRef<any>;\n\n    @Input()\n    public context: any;\n\n    @Input()\n    public type: SliderHandle;\n\n    @Input({ transform: booleanAttribute })\n    public continuous: boolean;\n\n    @Input({ transform: booleanAttribute })\n    public deactiveState: boolean;\n\n    @Input()\n    public thumb: IgxSliderThumbComponent;\n\n\n    @HostBinding('class.igx-slider-thumb-label-from')\n    public get thumbFromClass() {\n        return this.type === SliderHandle.FROM;\n    }\n\n    @HostBinding('class.igx-slider-thumb-label-to')\n    public get thumbToClass() {\n        return this.type === SliderHandle.TO;\n    }\n\n    @HostBinding('class.igx-slider-thumb-label-from--active')\n    public get thumbFromActiveClass() {\n        return this.type === SliderHandle.FROM && this.active;\n    }\n\n    @HostBinding('class.igx-slider-thumb-label-to--active')\n    public get thumbToActiveClass() {\n        return this.type === SliderHandle.TO && this.active;\n    }\n\n    @HostBinding('class.igx-slider-thumb-label-from--pressed')\n    public get labelFromPressedClass() {\n        return this.thumb?.thumbFromPressedClass;\n    }\n\n    @HostBinding('class.igx-slider-thumb-label-to--pressed')\n    public get labelToPressedClass() {\n        return this.thumb?.thumbToPressedClass;\n    }\n\n    public get getLabelClass() {\n        return {\n            'igx-slider-thumb-label-from__container': this.type === SliderHandle.FROM,\n            'igx-slider-thumb-label-to__container': this.type === SliderHandle.TO\n        };\n    }\n\n    private _active: boolean;\n\n    public get nativeElement() {\n        return this._elementRef.nativeElement;\n    }\n\n    public get active() {\n        return this._active;\n    }\n\n    public set active(val: boolean) {\n        if (this.continuous || this.deactiveState) {\n            this._active = false;\n        } else {\n            this._active = val;\n        }\n    }\n}\n","<div [ngClass]=\"getLabelClass\">\n    <ng-container *ngTemplateOutlet=\"templateRef ? templateRef : thumbFromDefaultTemplate; context: context\"></ng-container>\n</div>\n\n<ng-template #thumbFromDefaultTemplate>\n    {{ value }}\n</ng-template>\n","import { Component, Input, HostListener, ElementRef, HostBinding, Output, EventEmitter, OnInit, OnDestroy, TemplateRef, booleanAttribute, inject } from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\nimport { SliderHandle } from '../slider.common';\nimport { Subject } from 'rxjs';\nimport { NgClass } from '@angular/common';\nimport { ɵIgxDirectionality } from 'igniteui-angular/core';\n\n/**\n * @hidden\n */\n@Component({\n    selector: 'igx-thumb',\n    templateUrl: 'thumb-slider.component.html',\n    imports: [NgClass]\n})\nexport class IgxSliderThumbComponent implements OnInit, OnDestroy {\n    private _elementRef = inject(ElementRef);\n    private _dir = inject(ɵIgxDirectionality);\n\n    @Input()\n    public value: any;\n\n    @Input({ transform: booleanAttribute })\n    public continuous: boolean;\n\n    @Input()\n    public thumbLabelVisibilityDuration: number;\n\n    @Input({ transform: booleanAttribute })\n    public disabled: boolean;\n\n    @Input()\n    public onPan: Subject<number>;\n\n    @Input()\n    public stepDistance: number;\n\n    @Input()\n    public step: number;\n\n    @Input()\n    public templateRef: TemplateRef<any>;\n\n    @Input()\n    public context: any;\n\n    @Input()\n    public type: SliderHandle;\n\n    @Input({ transform: booleanAttribute })\n    public deactiveState: boolean;\n\n    @Input()\n    public min: number;\n\n    @Input()\n    public max: number;\n\n    @Input()\n    public labels: any[];\n\n    @Output()\n    public thumbValueChange = new EventEmitter<number>();\n\n    @Output()\n    public thumbChange = new EventEmitter<any>();\n\n    @Output()\n    public thumbBlur = new EventEmitter<void>();\n\n    @Output()\n    public hoverChange = new EventEmitter<boolean>();\n\n    @HostBinding('attr.tabindex')\n    public tabindex = 0;\n\n    @HostBinding('attr.role')\n    public role = 'slider';\n\n    @HostBinding('attr.aria-valuenow')\n    public get ariaValueNow() {\n        return this.value;\n    }\n\n    @HostBinding('attr.aria-valuemin')\n    public get ariaValueMin() {\n        return this.min;\n    }\n\n    @HostBinding('attr.aria-valuemax')\n    public get ariaValueMax() {\n        return this.max;\n    }\n\n    @HostBinding('attr.aria-valuetext')\n    public get ariaValueText() {\n        if (this.labels && this.labels[this.value] !== undefined) {\n            return this.labels[this.value];\n        }\n        return this.value;\n    }\n\n    @HostBinding('attr.aria-label')\n    public get ariaLabelAttr() {\n        return `Slider thumb ${this.type}`;\n    }\n\n    @HostBinding('attr.aria-orientation')\n    public ariaOrientation = 'horizontal';\n\n    @HostBinding(`attr.aria-disabled`)\n    public get ariaDisabled() {\n        return this.disabled;\n    }\n\n    @HostBinding('attr.z-index')\n    public zIndex = 0;\n\n    @HostBinding('class.igx-slider-thumb-to--focused')\n    public focused = false;\n\n    @HostBinding('class.igx-slider-thumb-from')\n    public get thumbFromClass() {\n        return this.type === SliderHandle.FROM;\n    }\n\n    @HostBinding('class.igx-slider-thumb-to')\n    public get thumbToClass() {\n        return this.type === SliderHandle.TO;\n    }\n\n    @HostBinding('class.igx-slider-thumb-from--active')\n    public get thumbFromActiveClass() {\n        return this.type === SliderHandle.FROM && this._isActive;\n    }\n\n    @HostBinding('class.igx-slider-thumb-to--active')\n    public get thumbToActiveClass() {\n        return this.type === SliderHandle.TO && this._isActive;\n    }\n\n    @HostBinding('class.igx-slider-thumb-from--disabled')\n    public get thumbFromDisabledClass() {\n        return this.type === SliderHandle.FROM && this.disabled;\n    }\n\n    @HostBinding('class.igx-slider-thumb-to--disabled')\n    public get thumbToDisabledClass() {\n        return this.type === SliderHandle.TO && this.disabled;\n    }\n\n    @HostBinding('class.igx-slider-thumb-from--pressed')\n    public get thumbFromPressedClass() {\n        return this.type === SliderHandle.FROM && this.isActive && this._isPressed;\n    }\n\n    @HostBinding('class.igx-slider-thumb-to--pressed')\n    public get thumbToPressedClass() {\n        return this.type === SliderHandle.TO && this.isActive && this._isPressed;\n    }\n\n    public get getDotClass() {\n        return {\n            'igx-slider-thumb-from__dot': this.type === SliderHandle.FROM,\n            'igx-slider-thumb-to__dot': this.type === SliderHandle.TO\n        };\n    }\n\n    public isActive = false;\n\n    public get nativeElement() {\n        return this._elementRef.nativeElement;\n    }\n\n    public get destroy(): Subject<boolean> {\n        return this._destroy$;\n    }\n\n    private _isActive = false;\n    private _isPressed = false;\n    private _destroy$ = new Subject<boolean>();\n\n    private get thumbPositionX() {\n        const thumbBounderies = this.nativeElement.getBoundingClientRect();\n        const thumbCenter = (thumbBounderies.right - thumbBounderies.left) / 2;\n        return thumbBounderies.left + thumbCenter;\n    }\n\n    @HostListener('pointerenter')\n    public onPointerEnter() {\n        this.focused = false;\n        this.hoverChange.emit(true);\n    }\n\n    @HostListener('pointerleave')\n    public onPointerLeave() {\n        this.hoverChange.emit(false);\n    }\n\n    @HostListener('keyup', ['$event'])\n    public onKeyUp(event: KeyboardEvent) {\n        event.stopPropagation();\n        this.focused = true;\n    }\n\n    @HostListener('keydown', ['$event'])\n    public onKeyDown(event: KeyboardEvent) {\n        if (this.disabled) {\n            return;\n        }\n\n        let increment = 0;\n        const stepWithDir = (rtl: boolean) => rtl ? this.step * -1 : this.step;\n        if (event.key.endsWith('Left')) {\n            increment = stepWithDir(!this._dir.rtl);\n        } else if (event.key.endsWith('Right')) {\n            increment = stepWithDir(this._dir.rtl);\n        } else {\n            return;\n        }\n\n        this.thumbChange.emit();\n        this.thumbValueChange.emit(increment);\n    }\n\n    @HostListener('blur')\n    public onBlur() {\n        this.isActive = false;\n        this.zIndex = 0;\n        this.focused = false;\n        this.thumbBlur.emit();\n    }\n\n    @HostListener('focus')\n    public onFocusListener() {\n        this.isActive = true;\n        this.zIndex = 1;\n    }\n\n    /**\n     * @hidden\n     */\n    public ngOnInit() {\n        this.onPan\n            .pipe(takeUntil(this._destroy$))\n            .subscribe(mouseX =>\n                this.updateThumbValue(mouseX)\n            );\n    }\n\n    /**\n     * @hidden\n     */\n    public ngOnDestroy() {\n        this._destroy$.next(true);\n        this._destroy$.complete();\n    }\n\n    /**\n     * Show thumb label and ripple.\n     */\n    public showThumbIndicators() {\n        this.toggleThumbIndicators(true);\n    }\n\n    /**\n     * Hide thumb label and ripple.\n     */\n    public hideThumbIndicators() {\n        this.toggleThumbIndicators(false);\n    }\n\n    private updateThumbValue(mouseX: number) {\n        const updateValue = this.calculateTrackUpdate(mouseX);\n        if (this.isActive && updateValue !== 0) {\n            this.thumbValueChange.emit(updateValue);\n        }\n    }\n\n    private calculateTrackUpdate(mouseX: number): number {\n        const scaleX = this._dir.rtl ? this.thumbPositionX - mouseX : mouseX - this.thumbPositionX;\n        const stepDistanceCenter = this.stepDistance / 2;\n\n        // If the thumb scale range (slider update) is less thàn a half step,\n        // the position stays the same.\n        const scaleXPositive = Math.abs(scaleX);\n        if (scaleXPositive < stepDistanceCenter) {\n            return 0;\n        }\n\n        return this.stepToProceed(scaleX, this.stepDistance);\n    }\n\n    private stepToProceed(scaleX, stepDist) {\n        return Math.round(scaleX / stepDist) * this.step;\n    }\n\n    private toggleThumbIndicators(visible: boolean) {\n        this._isPressed = visible;\n\n        if (this.continuous || this.deactiveState) {\n            this._isActive = false;\n        } else {\n            this._isActive = visible;\n        }\n\n    }\n}\n","<div [ngClass]=\"getDotClass\"></div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * @hidden\n */\n@Pipe({\n    name: 'spreadTickLabels',\n    standalone: true\n})\nexport class IgxTickLabelsPipe implements PipeTransform {\n\n\n    public transform(labels: Array<string | number | boolean | null | undefined>, secondaryTicks: number) {\n        if (!labels) {\n            return;\n        }\n\n        const result = [];\n        labels.forEach(item => {\n            result.push(item);\n            for (let i = 0; i < secondaryTicks; i++) {\n                result.push('');\n            }\n        });\n\n        return result;\n    }\n}\n","import { Component, Input, TemplateRef, HostBinding, booleanAttribute } from '@angular/core';\nimport { TicksOrientation, TickLabelsOrientation } from '../slider.common';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\n\n/**\n * @hidden\n */\n@Component({\n    selector: 'igx-ticks',\n    templateUrl: 'ticks.component.html',\n    imports: [NgClass, NgTemplateOutlet]\n})\nexport class IgxTicksComponent {\n    @Input()\n    public primaryTicks: number;\n\n    @Input()\n    public secondaryTicks: number;\n\n    @Input({ transform: booleanAttribute })\n    public primaryTickLabels: boolean;\n\n    @Input({ transform: booleanAttribute })\n    public secondaryTickLabels: boolean;\n\n    @Input()\n    public ticksOrientation: TicksOrientation;\n\n    @Input()\n    public tickLabelsOrientation: TickLabelsOrientation;\n\n    @Input()\n    public maxValue: number;\n\n    @Input()\n    public minValue: number;\n\n    @Input({ transform: booleanAttribute })\n    public labelsViewEnabled: boolean;\n\n    @Input()\n    public labels: Array<number | string | boolean | null | undefined>;\n\n    @Input()\n    public tickLabelTemplateRef: TemplateRef<any>;\n\n    /**\n     * @hidden\n     */\n    @HostBinding('class.igx-slider__ticks')\n    public ticksClass = true;\n\n    /**\n     * @hidden\n     */\n    @HostBinding('class.igx-slider__ticks--top')\n    public get ticksTopClass() {\n        return this.ticksOrientation === TicksOrientation.Top;\n    }\n\n    /**\n     * @hidden\n     */\n    @HostBinding('class.igx-slider__ticks--tall')\n    public get hasPrimaryClass() {\n        return this.primaryTicks > 0;\n    }\n\n    /**\n     * @hidden\n     */\n    @HostBinding('class.igx-slider__tick-labels--top-bottom')\n    public get labelsTopToBottomClass() {\n        return this.tickLabelsOrientation === TickLabelsOrientation.TopToBottom;\n    }\n\n    /**\n     * @hidden\n     */\n    @HostBinding('class.igx-slider__tick-labels--bottom-top')\n    public get labelsBottomToTopClass() {\n        return this.tickLabelsOrientation === TickLabelsOrientation.BottomToTop;\n    }\n\n    /**\n     * Returns the template context corresponding to\n     * {@link IgxTickLabelTemplateDirective}\n     *\n     * ```typescript\n     * return {\n     *  $implicit //returns the value per each tick label.\n     *  isPrimery //returns if the tick is primary.\n     *  labels // returns the {@link labels} collection.\n     *  index // returns the index per each tick of the whole sequence.\n     * }\n     * ```\n     *\n     * @param idx the index per each tick label.\n     */\n    public context(idx: number): any {\n        return {\n            $implicit: this.tickLabel(idx),\n            isPrimary: this.isPrimary(idx),\n            labels: this.labels,\n            index: idx\n        };\n    }\n\n    /**\n     * @hidden\n     */\n    public get ticksLength() {\n        return this.primaryTicks > 0 ?\n            ((this.primaryTicks - 1) * this.secondaryTicks) + this.primaryTicks :\n            this.secondaryTicks > 0 ? this.secondaryTicks : 0;\n    }\n\n    public hiddenTickLabels(idx: number) {\n        return this.isPrimary(idx) ? this.primaryTickLabels : this.secondaryTickLabels;\n    }\n\n    /**\n     * @hidden\n     */\n    public isPrimary(idx: number) {\n        return this.primaryTicks <= 0 ? false :\n            idx % (this.secondaryTicks + 1) === 0;\n    }\n\n    /**\n     * @hidden\n     */\n    public tickLabel(idx: number) {\n        if (this.labelsViewEnabled) {\n            return this.labels[idx];\n        }\n\n        const labelStep = (Math.max(this.minValue, this.maxValue) - Math.min(this.minValue, this.maxValue)) / (this.ticksLength - 1);\n        const labelVal = labelStep * idx;\n\n        return (this.minValue + labelVal).toFixed(2);\n    }\n}\n","@for (n of [].constructor(ticksLength); track $index; let idx = $index) {\n    <div class=\"igx-slider__ticks-group\" [ngClass]=\"{ 'igx-slider__ticks-group--tall': isPrimary(idx)}\">\n        <div class=\"igx-slider__ticks-tick\">\n            <span class=\"igx-slider__ticks-label\" [ngClass]=\"{ 'igx-slider__tick-label--hidden': !hiddenTickLabels(idx)}\">\n                <ng-container *ngTemplateOutlet=\"tickLabelTemplateRef ? tickLabelTemplateRef : tickLabelDefaultTemplate; context: context(idx)\"></ng-container>\n            </span>\n        </div>\n    </div>\n}\n\n<ng-template #tickLabelDefaultTemplate let-value>\n    {{ value }}\n</ng-template>\n","import { AfterContentInit, AfterViewInit, ChangeDetectorRef, Component, ContentChild, ElementRef, EventEmitter, HostBinding, HostListener, Input, NgZone, OnChanges, OnDestroy, OnInit, Output, QueryList, Renderer2, SimpleChanges, TemplateRef, ViewChild, ViewChildren, booleanAttribute, inject } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { animationFrameScheduler, fromEvent, interval, merge, noop, Observable, Subject, timer } from 'rxjs';\nimport { takeUntil, throttle, throttleTime } from 'rxjs/operators';\nimport { EditorProvider, ɵIgxDirectionality, resizeObservable } from 'igniteui-angular/core';\nimport { IgxThumbLabelComponent } from './label/thumb-label.component';\nimport {\n    IgxSliderType, IgxThumbFromTemplateDirective,\n    IgxThumbToTemplateDirective, IgxTickLabelTemplateDirective, IRangeSliderValue, ISliderValueChangeEventArgs, SliderHandle, TickLabelsOrientation, TicksOrientation\n} from './slider.common';\nimport { IgxSliderThumbComponent } from './thumb/thumb-slider.component';\nimport { IgxTickLabelsPipe } from './ticks/tick.pipe';\nimport { IgxTicksComponent } from './ticks/ticks.component';\n\nlet NEXT_ID = 0;\n\n/**\n * **Ignite UI for Angular Slider** -\n * [Documentation](https://www.infragistics.com/products/ignite-ui-angular/angular/components/slider/slider)\n *\n * The Ignite UI Slider allows selection in a given range by moving the thumb along the track. The track\n * can be defined as continuous or stepped, and you can choose between single and range slider types.\n *\n * Example:\n * ```html\n * <igx-slider id=\"slider\"\n *            [minValue]=\"0\" [maxValue]=\"100\"\n *            [continuous]=true [(ngModel)]=\"volume\">\n * </igx-slider>\n * ```\n */\n@Component({\n    providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: IgxSliderComponent, multi: true }],\n    selector: 'igx-slider',\n    templateUrl: 'slider.component.html',\n    imports: [IgxTicksComponent, IgxThumbLabelComponent, IgxSliderThumbComponent, IgxTickLabelsPipe]\n})\nexport class IgxSliderComponent implements\n    ControlValueAccessor,\n    EditorProvider,\n    OnInit,\n    AfterViewInit,\n    AfterContentInit,\n    OnChanges,\n    OnDestroy {\n    private renderer = inject(Renderer2);\n    private _el = inject(ElementRef);\n    private _cdr = inject(ChangeDetectorRef);\n    private _ngZone = inject(NgZone);\n    private _dir = inject(ɵIgxDirectionality);\n\n    /**\n     * @hidden\n     */\n    public get thumbFrom(): IgxSliderThumbComponent {\n        return this.thumbs.find(thumb => thumb.type === SliderHandle.FROM);\n    }\n\n    /**\n     * @hidden\n     */\n    public get thumbTo(): IgxSliderThumbComponent {\n        return this.thumbs.find(thumb => thumb.type === SliderHandle.TO);\n    }\n\n    private get labelFrom(): IgxThumbLabelComponent {\n        return this.labelRefs.find(label => label.type === SliderHandle.FROM);\n    }\n\n    private get labelTo(): IgxThumbLabelComponent {\n        return this.labelRefs.find(label => label.type === SliderHandle.TO);\n    }\n\n    /**\n     * @hidden\n     */\n    @ViewChild('track', { static: true })\n    public trackRef: ElementRef;\n\n    /**\n     * @hidden\n     */\n    @ContentChild(IgxThumbFromTemplateDirective, { read: TemplateRef })\n    public thumbFromTemplateRef: TemplateRef<any>;\n\n    /**\n     * @hidden\n     */\n    @ContentChild(IgxThumbToTemplateDirective, { read: TemplateRef })\n    public thumbToTemplateRef: TemplateRef<any>;\n\n    /**\n     * @hidden\n     */\n    @ContentChild(IgxTickLabelTemplateDirective, { read: TemplateRef, static: false })\n    public tickLabelTemplateRef: TemplateRef<any>;\n\n    /**\n     * @hidden\n     */\n    @HostBinding('class.igx-slider')\n    public slierClass = true;\n\n    /**\n     * Sets the value of the `id` attribute.\n     * If not provided it will be automatically generated.\n     * ```html\n     * <igx-slider [id]=\"'igx-slider-32'\" [(ngModel)]=\"task.percentCompleted\" [step]=\"5\" [lowerBound]=\"20\">\n     * ```\n     */\n    @HostBinding('attr.id')\n    @Input()\n    public id = `igx-slider-${NEXT_ID++}`;\n\n    /**\n     * Sets the duration visibility of thumbs labels. The default value is 750 milliseconds.\n     * ```html\n     * <igx-slider #slider [thumbLabelVisibilityDuration]=\"3000\" [(ngModel)]=\"task.percentCompleted\" [step]=\"5\">\n     * ```\n     */\n    @Input()\n    public thumbLabelVisibilityDuration = 750;\n\n    /**\n     * @hidden\n     */\n    @HostBinding('class.igx-slider--disabled')\n    public get disabledClass() {\n        return this.disabled;\n    }\n\n    /**\n     * Gets the type of the `IgxSliderComponent`.\n     * The slider can be IgxSliderType.SLIDER(default) or IgxSliderType.RANGE.\n     * ```typescript\n     * @ViewChild(\"slider2\")\n     * public slider: IgxSliderComponent;\n     * ngAfterViewInit(){\n     *     let type = this.slider.type;\n     * }\n     */\n    @Input()\n    public get type() {\n        return this._type as IgxSliderType;\n    }\n\n    /**\n     * Sets the type of the `IgxSliderComponent`.\n     * The slider can be IgxSliderType.SLIDER(default) or IgxSliderType.RANGE.\n     * ```typescript\n     * sliderType: IgxSliderType = IgxSliderType.RANGE;\n     * ```\n     * ```html\n     * <igx-slider #slider2 [type]=\"sliderType\" [(ngModel)]=\"rangeValue\" [minValue]=\"0\" [maxValue]=\"100\">\n     * ```\n     */\n    public set type(type: IgxSliderType) {\n        this._type = type;\n\n        if (type === IgxSliderType.SLIDER) {\n            this.lowerValue = 0;\n        }\n\n        if (this._hasViewInit) {\n            this.updateTrack();\n        }\n    }\n\n\n    /**\n     * Enables `labelView`, by accepting a collection of primitive values with more than one element.\n     * Each element will be equally spread over the slider and it will serve as a thumb label.\n     * Once the property is set, it will precendence over {@link maxValue}, {@link minValue}, {@link step}.\n     * This means that the manipulation for those properties won't be allowed.\n     */\n    @Input()\n    public get labels() {\n        return this._labels;\n    }\n\n    public set labels(labels: Array<number | string | boolean | null | undefined>) {\n        this._labels = labels;\n\n        this._pMax = this.valueToFraction(this.upperBound, 0, 1);\n        this._pMin = this.valueToFraction(this.lowerBound, 0, 1);\n\n        this.positionHandlersAndUpdateTrack();\n\n        if (this._hasViewInit) {\n            this.stepDistance = this.calculateStepDistance();\n            this.setTickInterval();\n        }\n    }\n\n    /**\n     * Returns the template context corresponding\n     * to {@link IgxThumbFromTemplateDirective} and {@link IgxThumbToTemplateDirective} templates.\n     *\n     * ```typescript\n     * return {\n     *  $implicit // returns the value of the label,\n     *  labels // returns the labels collection the user has passed.\n     * }\n     * ```\n     */\n    public get context(): any {\n        return {\n            $implicit: this.value,\n            labels: this.labels\n        };\n    }\n\n    /**\n     * Sets the incremental/decremental step of the value when dragging the thumb.\n     * The default step is 1, and step should not be less or equal than 0.\n     * ```html\n     * <igx-slider #slider [(ngModel)]=\"task.percentCompleted\" [step]=\"5\">\n     * ```\n     */\n    @Input()\n    public set step(step: number) {\n        this._step = step;\n\n        if (this._hasViewInit) {\n            this.stepDistance = this.calculateStepDistance();\n            this.normalizeByStep(this._value);\n            this.setValue(this._value, true);\n            this.positionHandlersAndUpdateTrack();\n            this.setTickInterval();\n        }\n    }\n\n    /**\n     * Returns the incremental/decremental dragging step of the {@link IgxSliderComponent}.\n     * ```typescript\n     * @ViewChild(\"slider2\")\n     * public slider: IgxSliderComponent;\n     * ngAfterViewInit(){\n     *     let step = this.slider.step;\n     * }\n     * ```\n     */\n    public get step() {\n        return this.labelsViewEnabled ? 1 : this._step;\n    }\n\n    /**\n     * Returns if the {@link IgxSliderComponent} is disabled.\n     * ```typescript\n     * @ViewChild(\"slider2\")\n     * public slider: IgxSliderComponent;\n     * ngAfterViewInit(){\n     *     let isDisabled = this.slider.disabled;\n     * }\n     * ```\n     */\n    @Input({ transform: booleanAttribute })\n    public get disabled(): boolean {\n        return this._disabled;\n    }\n\n    /**\n     * Disables the component.\n     * ```html\n     * <igx-slider #slider [disabled]=\"true\" [(ngModel)]=\"task.percentCompleted\" [step]=\"5\" [lowerBound]=\"20\">\n     * ```\n     */\n    public set disabled(disable: boolean) {\n        this._disabled = disable;\n\n        if (this._hasViewInit) {\n            this.changeThumbFocusableState(disable);\n        }\n    }\n\n    /**\n     * Returns if the {@link IgxSliderComponent} is set as continuous.\n     * ```typescript\n     * @ViewChild(\"slider2\")\n     * public slider: IgxSliderComponent;\n     * ngAfterViewInit(){\n     *     let continuous = this.slider.continuous;\n     * }\n     * ```\n     */\n    @Input({ transform: booleanAttribute })\n    public get continuous(): boolean {\n        return this._continuous;\n    }\n\n    /**\n     * Sets the {@link IgxSliderComponent} as continuous.\n     * By default is considered that the {@link IgxSliderComponent} is discrete.\n     * Discrete {@link IgxSliderComponent} slider has step indicators over the track and visible thumb labels during interaction.\n     * Continuous {@link IgxSliderComponent} does not have ticks and does not show bubble labels for values.\n     * ```html\n     * <igx-slider #slider [continuous]=\"'true'\" [(ngModel)]=\"task.percentCompleted\" [step]=\"5\" [lowerBound]=\"20\">\n     * ```\n     */\n    public set continuous(continuous: boolean) {\n        this._continuous = continuous;\n        if (this._hasViewInit) {\n            this.setTickInterval();\n        }\n    }\n\n    /**\n     * Returns the minimal displayed track value of the `IgxSliderComponent`.\n     * ```typescript\n     *  @ViewChild(\"slider2\")\n     * public slider: IgxSliderComponent;\n     * ngAfterViewInit(){\n     *     let sliderMin = this.slider.minValue;\n     * }\n     * ```\n     */\n    public get minValue(): number {\n        if (this.labelsViewEnabled) {\n            return 0;\n        }\n\n        return this._minValue;\n    }\n\n    /**\n     * Sets the minimal displayed track value for the `IgxSliderComponent`.\n     * The default minimal value is 0.\n     * ```html\n     * <igx-slider [type]=\"sliderType\" [minValue]=\"56\" [maxValue]=\"100\">\n     * ```\n     */\n    @Input()\n    public set minValue(value: number) {\n        if (value >= this.maxValue) {\n            return;\n        } else {\n            this._minValue = value;\n        }\n\n        if (value > this._upperBound) {\n            this.updateUpperBoundAndMaxTravelZone();\n            this.lowerBound = value;\n        }\n\n        // Refresh min travel zone limit.\n        this._pMin = 0;\n        // Recalculate step distance.\n        this.positionHandlersAndUpdateTrack();\n        if (this._hasViewInit) {\n            this.stepDistance = this.calculateStepDistance();\n            this.setTickInterval();\n        }\n    }\n\n    /**\n     * Returns the maximum displayed track value for the {@link IgxSliderComponent}.\n     * ```typescript\n     * @ViewChild(\"slider\")\n     * public slider: IgxSliderComponent;\n     * ngAfterViewInit(){\n     *     let sliderMax = this.slider.maxValue;\n     * }\n     *  ```\n     */\n    public get maxValue(): number {\n        return this.labelsViewEnabled ?\n            this.labels.length - 1 :\n            this._maxValue;\n    }\n\n    /**\n     * Sets the maximal displayed track value for the `IgxSliderComponent`.\n     * The default maximum value is 100.\n     * ```html\n     * <igx-slider [type]=\"sliderType\" [minValue]=\"56\" [maxValue]=\"256\">\n     * ```\n     */\n    @Input()\n    public set maxValue(value: number) {\n        if (value <= this._minValue) {\n            return;\n        } else {\n            this._maxValue = value;\n        }\n\n        if (value < this._lowerBound) {\n            this.updateLowerBoundAndMinTravelZone();\n            this.upperBound = value;\n        }\n\n        // refresh max travel zone limits.\n        this._pMax = 1;\n        // recalculate step distance.\n        this.positionHandlersAndUpdateTrack();\n        if (this._hasViewInit) {\n            this.stepDistance = this.calculateStepDistance();\n            this.setTickInterval();\n        }\n    }\n\n    /**\n     * Returns the lower boundary of settable values of the `IgxSliderComponent`.\n     * If not set, will return `minValue`.\n     * ```typescript\n     * @ViewChild(\"slider\")\n     * public slider: IgxSliderComponent;\n     * ngAfterViewInit(){\n     *     let sliderLowBound = this.slider.lowerBound;\n     * }\n     * ```\n     */\n    public get lowerBound(): number {\n        if (!Number.isNaN(this._lowerBound) && this._lowerBound !== undefined) {\n            return this.valueInRange(this._lowerBound, this.minValue, this.maxValue);\n        }\n\n        return this.minValue;\n    }\n\n    /**\n     * Sets the lower boundary of settable values of the `IgxSliderComponent`.\n     * If not set is the same as min value.\n     * ```html\n     * <igx-slider [step]=\"5\" [lowerBound]=\"20\">\n     * ```\n     */\n    @Input()\n    public set lowerBound(value: number) {\n        if (value >= this.upperBound || (this.labelsViewEnabled && value < 0)) {\n            return;\n        }\n\n        this._lowerBound = this.valueInRange(value, this.minValue, this.maxValue);\n\n        // Refresh min travel zone.\n        this._pMin = this.valueToFraction(this._lowerBound, 0, 1);\n        this.positionHandlersAndUpdateTrack();\n    }\n\n    /**\n     * Returns the upper boundary of settable values of the `IgxSliderComponent`.\n     * If not set, will return `maxValue`\n     * ```typescript\n     * @ViewChild(\"slider\")\n     * public slider: IgxSliderComponent;\n     * ngAfterViewInit(){\n     *    let sliderUpBound = this.slider.upperBound;\n     * }\n     * ```\n     */\n    public get upperBound(): number {\n        if (!Number.isNaN(this._upperBound) && this._upperBound !== undefined) {\n            return this.valueInRange(this._upperBound, this.minValue, this.maxValue);\n        }\n\n        return this.maxValue;\n    }\n\n    /**\n     * Sets the upper boundary of the `IgxSliderComponent`.\n     * If not set is the same as max value.\n     * ```html\n     * <igx-slider [step]=\"5\" [upperBound]=\"20\">\n     * ```\n     */\n    @Input()\n    public set upperBound(value: number) {\n        if (value <= this.lowerBound || (this.labelsViewEnabled && value > this.labels.length - 1)) {\n            return;\n        }\n\n        this._upperBound = this.valueInRange(value, this.minValue, this.maxValue);\n        // Refresh time travel zone.\n        this._pMax = this.valueToFraction(this._upperBound, 0, 1);\n        this.positionHandlersAndUpdateTrack();\n    }\n\n    /**\n     * Returns the slider value. If the slider is of type {@link IgxSliderType.SLIDER} the returned value is number.\n     * If the slider type is {@link IgxSliderType.RANGE}.\n     * The returned value represents an object of {@link lowerValue} and {@link upperValue}.\n     * ```typescript\n     * @ViewChild(\"slider2\")\n     * public slider: IgxSliderComponent;\n     * public sliderValue(event){\n     *     let sliderVal = this.slider.value;\n     * }\n     * ```\n     */\n    public get value(): number | IRangeSliderValue {\n        if (this.isRange) {\n            return {\n                lower: this.valueInRange(this.lowerValue, this.lowerBound, this.upperBound),\n                upper: this.valueInRange(this.upperValue, this.lowerBound, this.upperBound)\n            };\n        } else {\n            return this.valueInRange(this.upperValue, this.lowerBound, this.upperBound);\n        }\n    }\n\n    /**\n     * Sets the slider value.\n     * If the slider is of type {@link IgxSliderType.SLIDER}.\n     * The argument is number. By default the {@link value} gets the {@link lowerBound}.\n     * If the slider type is {@link IgxSliderType.RANGE} the argument\n     * represents an object of {@link lowerValue} and {@link upperValue} properties.\n     * By default the object is associated with the {@link lowerBound} and {@link upperBound} property values.\n     * ```typescript\n     * rangeValue = {\n     *   lower: 30,\n     *   upper: 60\n     * };\n     * ```\n     * ```html\n     * <igx-slider [type]=\"sliderType\" [(ngModel)]=\"rangeValue\" [minValue]=\"56\" [maxValue]=\"256\">\n     * ```\n     */\n    @Input()\n    public set value(value: number | IRangeSliderValue) {\n        this.normalizeByStep(value);\n\n        if (this._hasViewInit) {\n            this.setValue(this._value, true);\n            this.positionHandlersAndUpdateTrack();\n        }\n    }\n\n    /**\n     * Returns the number of the presented primary ticks.\n     * ```typescript\n     * const primaryTicks = this.slider.primaryTicks;\n     * ```\n     */\n    @Input()\n    public get primaryTicks() {\n        if (this.labelsViewEnabled) {\n            return this._primaryTicks = this.labels.length;\n        }\n        return this._primaryTicks;\n    }\n\n    /**\n     * Sets the number of primary ticks. If {@link @labels} is enabled, this property won't function.\n     * Insted enable ticks by {@link showTicks} property.\n     * ```typescript\n     * this.slider.primaryTicks = 5;\n     * ```\n     */\n    public set primaryTicks(val: number) {\n        if (val <= 1) {\n            return;\n        }\n\n        this._primaryTicks = val;\n    }\n\n    /**\n     * Returns the number of the presented secondary ticks.\n     * ```typescript\n     * const secondaryTicks = this.slider.secondaryTicks;\n     * ```\n     */\n    @Input()\n    public get secondaryTicks() {\n        return this._secondaryTicks;\n    }\n\n    /**\n     * Sets the number of secondary ticks. The property functions even when {@link labels} is enabled,\n     * but all secondary ticks won't present any tick labels.\n     * ```typescript\n     * this.slider.secondaryTicks = 5;\n     * ```\n     */\n    public set secondaryTicks(val: number) {\n        if (val < 1) {\n            return;\n        }\n\n        this._secondaryTicks = val;\n    }\n\n    /**\n     * Show/hide slider ticks\n     * ```html\n     * <igx-slier [showTicks]=\"true\" [primaryTicks]=\"5\"></igx-slier>\n     * ```\n     */\n    @Input({ transform: booleanAttribute })\n    public showTicks = false;\n\n    /**\n     * show/hide primary tick labels\n     * ```html\n     * <igx-slider [primaryTicks]=\"5\" [primaryTickLabels]=\"false\"></igx-slider>\n     * ```\n     */\n    @Input({ transform: booleanAttribute })\n    public primaryTickLabels = true;\n\n    /**\n     * show/hide secondary tick labels\n     * ```html\n     * <igx-slider [secondaryTicks]=\"5\" [secondaryTickLabels]=\"false\"></igx-slider>\n     * ```\n     */\n    @Input({ transform: booleanAttribute })\n    public secondaryTickLabels = true;\n\n    /**\n     * Changes ticks orientation:\n     * bottom - The default orienation, below the slider track.\n     * top - Above the slider track\n     * mirror - combines top and bottom orientation.\n     * ```html\n     * <igx-slider [primaryTicks]=\"5\" [ticksOrientation]=\"ticksOrientation\"></igx-slider>\n     * ```\n     */\n    @Input()\n    public ticksOrientation: TicksOrientation = TicksOrientation.Bottom;\n\n    /**\n     * Changes tick labels rotation:\n     * horizontal - The default rotation\n     * toptobottom - Rotates tick labels vertically to 90deg\n     * bottomtotop - Rotate tick labels vertically to -90deg\n     * ```html\n     * <igx-slider [primaryTicks]=\"5\" [secondaryTicks]=\"3\" [tickLabelsOrientation]=\"tickLabelsOrientaiton\"></igx-slider>\n     * ```\n     */\n    @Input()\n    public tickLabelsOrientation: TickLabelsOrientation = TickLabelsOrientation.Horizontal;\n\n    /**\n     * @hidden\n     */\n    public get deactivateThumbLabel() {\n        return ((this.primaryTicks && this.primaryTickLabels) || (this.secondaryTicks && this.secondaryTickLabels)) &&\n            (this.ticksOrientation === TicksOrientation.Top || this.ticksOrientation === TicksOrientation.Mirror);\n    }\n\n    /**\n     * This event is emitted every time the value is changed.\n     * ```typescript\n     * public change(event){\n     *    alert(\"The value has been changed!\");\n     * }\n     * ```\n     * ```html\n     * <igx-slider (valueChange)=\"change($event)\" #slider [(ngModel)]=\"task.percentCompleted\" [step]=\"5\">\n     * ```\n     */\n    @Output()\n    public valueChange = new EventEmitter<ISliderValueChangeEventArgs>();\n\n    /**\n     * This event is emitted every time the lower value of a range slider is changed.\n     * ```typescript\n     * public change(value){\n     *    alert(`The lower value has been changed to ${value}`);\n     * }\n     * ```\n     * ```html\n     * <igx-slider [(lowerValue)]=\"model.lowervalue\" (lowerValueChange)=\"change($event)\" [step]=\"5\">\n     * ```\n     */\n    @Output()\n    public lowerValueChange = new EventEmitter<number>();\n\n    /**\n     * This event is emitted every time the upper value of a range slider is changed.\n     * ```typescript\n     * public change(value){\n     *    alert(`The upper value has been changed to ${value}`);\n     * }\n     * ```\n     * ```html\n     * <igx-slider [(upperValue)]=\"model.uppervalue\" (upperValueChange)=\"change($event)\" [step]=\"5\">\n     * ```\n     */\n    @Output()\n    public upperValueChange = new EventEmitter<number>();\n\n    /**\n     * This event is emitted at the end of every slide interaction.\n     * ```typescript\n     * public change(event){\n     *    alert(\"The value has been changed!\");\n     * }\n     * ```\n     * ```html\n     * <igx-slider (dragFinished)=\"change($event)\" #slider [(ngModel)]=\"task.percentCompleted\" [step]=\"5\">\n     * ```\n     */\n    @Output()\n    public dragFinished = new EventEmitter<number | IRangeSliderValue>();\n\n    /**\n     * @hidden\n     */\n    @ViewChild('ticks', { static: true })\n    private ticks: ElementRef;\n\n    /**\n     * @hidden\n     */\n    @ViewChildren(IgxSliderThumbComponent)\n    private thumbs: QueryList<IgxSliderThumbComponent> = new QueryList<IgxSliderThumbComponent>();\n\n    /**\n     * @hidden\n     */\n    @ViewChildren(IgxThumbLabelComponent)\n    private labelRefs: QueryList<IgxThumbLabelComponent> = new QueryList<IgxThumbLabelComponent>();\n\n    /**\n     * @hidden\n     */\n    public onPan: Subject<number> = new Subject<number>();\n\n    /**\n     * @hidden\n     */\n    public stepDistance: number;\n\n    // Limit handle travel zone\n    private _pMin = 0;\n    private _pMax = 1;\n\n    // From/upperValue in percent values\n    private _hasViewInit = false;\n    private _minValue = 0;\n    private _maxValue = 100;\n    private _lowerBound: number;\n    private _upperBound: number;\n    private _lowerValue: number;\n    private _upperValue: number;\n    private _continuous = false;\n    private _disabled = false;\n    private _step = 1;\n    private _value: number | IRangeSliderValue = 0;\n\n    // ticks\n    private _primaryTicks = 0;\n    private _secondaryTicks = 0;\n    private _sliding = false;\n\n    private _labels = new Array<number | string | boolean | null | undefined>();\n    private _type: IgxSliderType = IgxSliderType.SLIDER;\n\n    private _destroyer$ = new Subject<boolean>();\n    private _indicatorsDestroyer$ = new Subject<boolean>();\n    private _indicatorsTimer: Observable<any>;\n\n    private _onChangeCallback: (_: any) => void = noop;\n    private _onTouchedCallback: () => void = noop;\n\n    constructor() {\n        this.stepDistance = this._step;\n    }\n\n    /**\n     * @hidden\n     */\n    @HostListener('focus')\n    public onFocus() {\n        this.toggleSliderIndicators();\n    }\n\n    /**\n     * Returns whether the `IgxSliderComponent` type is RANGE.\n     * ```typescript\n     *  @ViewChild(\"slider\")\n     * public slider: IgxSliderComponent;\n     * ngAfterViewInit(){\n     *     let sliderRange = this.slider.isRange;\n     * }\n     * ```\n     */\n    public get isRange(): boolean {\n        return this.type === IgxSliderType.RANGE;\n    }\n\n    /**\n     * Returns the lower value of a RANGE `IgxSliderComponent`.\n     * ```typescript\n     * @ViewChild(\"slider\")\n     * public slider: IgxSliderComponent;\n     * public lowValue(event){\n     *    let sliderLowValue = this.slider.lowerValue;\n     * }\n     * ```\n     */\n    public get lowerValue(): number {\n        if (!Number.isNaN(this._lowerValue) && this._lowerValue !== undefined && this._lowerValue >= this.lowerBound) {\n            return this._lowerValue;\n        }\n\n        return this.lowerBound;\n    }\n\n    /**\n     * Sets the lower value of a RANGE `IgxSliderComponent`.\n     * ```typescript\n     * @ViewChild(\"slider\")\n     * public slider: IgxSliderComponent;\n     * public lowValue(event){\n     *    this.slider.lowerValue = value;\n     * }\n     * ```\n     */\n    @Input()\n    public set lowerValue(value: number) {\n        const adjustedValue = this.valueInRange(value, this.lowerBound, this.upperBound);\n        if (this._lowerValue !== adjustedValue) {\n            this._lowerValue = adjustedValue;\n            this.lowerValueChange.emit(this._lowerValue);\n            this.value = { lower: this._lowerValue, upper: this._upperValue };\n        }\n    }\n\n    /**\n     * Returns the upper value of a RANGE `IgxSliderComponent`.\n     * Returns `value` of a SLIDER `IgxSliderComponent`\n     * ```typescript\n     *  @ViewChild(\"slider2\")\n     * public slider: IgxSliderComponent;\n     * public upperValue(event){\n     *     let upperValue = this.slider.upperValue;\n     * }\n     * ```\n     */\n    public get upperValue() {\n        if (!Number.isNaN(this._upperValue) && this._upperValue !== undefined && this._upperValue <= this.upperBound) {\n            return this._upperValue;\n        }\n\n        return this.upperBound;\n    }\n\n    /**\n     * Sets the upper value of a RANGE `IgxSliderComponent`.\n     * ```typescript\n     *  @ViewChild(\"slider2\")\n     * public slider: IgxSliderComponent;\n     * public upperValue(event){\n     *     this.slider.upperValue = value;\n     * }\n     * ```\n     */\n    @Input()\n    public set upperValue(value: number) {\n        const adjustedValue = this.valueInRange(value, this.lowerBound, this.upperBound);\n        if (this._upperValue !== adjustedValue) {\n            this._upperValue = adjustedValue;\n            this.upperValueChange.emit(this._upperValue);\n            this.value = { lower: this._lowerValue, upper: this._upperValue };\n        }\n    }\n\n    /**\n     * Returns the value corresponding the lower label.\n     * ```typescript\n     * @ViewChild(\"slider\")\n     * public slider: IgxSliderComponent;\n     * let label = this.slider.lowerLabel;\n     * ```\n     */\n    public get lowerLabel() {\n        return this.labelsViewEnabled ? this.labels[this.lowerValue] : this.lowerValue;\n    }\n\n    /**\n     * Returns the value corresponding the upper label.\n     * ```typescript\n     * @ViewChild(\"slider\")\n     * public slider: IgxSliderComponent;\n     * let label = this.slider.upperLabel;\n     * ```\n     */\n    public get upperLabel() {\n        return this.labelsViewEnabled ? this.labels[this.upperValue] : this.upperValue;\n    }\n\n    /**\n     * Returns if label view is enabled.\n     * If the {@link labels} is set, the view is automatically activated.\n     * ```typescript\n     * @ViewChild(\"slider\")\n     * public slider: IgxSliderComponent;\n     * let labelView = this.slider.labelsViewEnabled;\n     * ```\n     */\n    public get labelsViewEnabled(): boolean {\n        return !!(this.labels && this.labels.length > 1);\n    }\n\n    /**\n     * @hidden\n     */\n    public get showTopTicks() {\n        return this.ticksOrientation === TicksOrientation.Top ||\n            this.ticksOrientation === TicksOrientation.Mirror;\n    }\n\n    /**\n     * @hidden\n     */\n    public get showBottomTicks() {\n        return this.ticksOrientation === TicksOrientation.Bottom ||\n            this.ticksOrientation === TicksOrientation.Mirror;\n    }\n\n    /**\n     * @hidden\n     */\n    public ngOnChanges(changes: SimpleChanges) {\n        if (changes.minValue && changes.maxValue &&\n            changes.minValue.currentValue < changes.maxValue.currentValue) {\n            this._maxValue = changes.maxValue.currentValue;\n            this._minValue = changes.minValue.currentValue;\n        }\n\n        if (changes.step && changes.step.isFirstChange()) {\n            this.normalizeByStep(this._value);\n        }\n    }\n\n    /**\n     * @hidden\n     */\n    public ngOnInit() {\n        /**\n         * if {@link SliderType.SLIDER} than the initial value shold be the lowest one.\n         */\n        if (!this.isRange) {\n            this._upperValue = this.lowerBound;\n        }\n\n        // Set track travel zone\n        this._pMin = this.valueToFraction(this.lowerBound) || 0;\n        this._pMax = this.valueToFraction(this.upperBound) || 1;\n    }\n\n    public ngAfterContentInit() {\n        this.setValue(this._value, false);\n    }\n\n    /**\n     * @hidden\n     */\n    public ngAfterViewInit() {\n        this._hasViewInit = true;\n        this.stepDistance = this.calculateStepDistance();\n        this.positionHandlersAndUpdateTrack();\n        this.setTickInterval();\n        this.changeThumbFocusableState(this.disabled);\n\n        this.subscribeToEvents(this.thumbFrom);\n        this.subscribeToEvents(this.thumbTo);\n\n        this.thumbs.changes.pipe(takeUntil(this._destroyer$)).subscribe(change => {\n            const thumbFrom = change.find((thumb: IgxSliderThumbComponent) => thumb.type === SliderHandle.FROM);\n            this.positionHandler(thumbFrom, null, this.lowerValue);\n            this.subscribeToEvents(thumbFrom);\n            this.changeThumbFocusableState(this.disabled);\n        });\n\n        this.labelRefs.changes.pipe(takeUntil(this._destroyer$)).subscribe(() => {\n            const labelFrom = this.labelRefs.find((label: IgxThumbLabelComponent) => label.type === SliderHandle.FROM);\n            this.positionHandler(null, labelFrom, this.lowerValue);\n        });\n\n        this._ngZone.runOutsideAngular(() => {\n            resizeObservable(this._el.nativeElement).pipe(\n                throttleTime(40),\n                takeUntil(this._destroyer$)).subscribe(() => this._ngZone.run(() => {\n                    this.stepDistance = this.calculateStepDistance();\n                }));\n            fromEvent(this._el.nativeElement, 'pointermove').pipe(\n                throttle(() => interval(0, animationFrameScheduler)),\n                takeUntil(this._destroyer$)).subscribe(($event: PointerEvent) => this._ngZone.run(() => {\n                    this.onPointerMove($event);\n                }));\n        });\n    }\n\n    /**\n     * @hidden\n     */\n    public ngOnDestroy() {\n        this._destroyer$.next(true);\n        this._destroyer$.complete();\n\n        this._indicatorsDestroyer$.next(true);\n        this._indicatorsDestroyer$.complete();\n    }\n\n    /**\n     * @hidden\n     */\n    public writeValue(value: IRangeSliderValue | number): void {\n        if (this.isNullishButNotZero(value)) {\n            return;\n        }\n\n        this.normalizeByStep(value);\n        this.setValue(this._value, false);\n        this.positionHandlersAndUpdateTrack();\n    }\n\n    /**\n     * @hidden\n     */\n    public registerOnChange(fn: any): void {\n        this._onChangeCallback = fn;\n    }\n\n    /**\n     * @hidden\n     */\n    public registerOnTouched(fn: any): void {\n        this._onTouchedCallback = fn;\n    }\n\n    /** @hidden */\n    public getEditElement() {\n        return this.isRange ? this.thumbFrom.nativeElement : this.thumbTo.nativeElement;\n    }\n\n    /**\n     *\n     * @hidden\n     */\n    public update(mouseX) {\n        if (this.disabled) {\n            return;\n        }\n\n        // Update To/From Values\n        this.onPan.next(mouseX);\n\n        // Finally do positionHandlersAndUpdateTrack the DOM\n        // based on data values\n        this.positionHandlersAndUpdateTrack();\n    }\n\n    /**\n     * @hidden\n     */\n    public thumbChanged(value: number, thumbType: string) {\n        const oldValue = this.value;\n\n        if (this.isRange) {\n            if (thumbType === SliderHandle.FROM) {\n                if (this.lowerValue + value > this.upperValue) {\n                    this.upperValue = this.lowerValue + value;\n                }\n                this.lowerValue += value;\n            } else {\n                if (this.upperValue + value < this.lowerValue) {\n                    this.lowerValue = this.upperValue + value;\n                }\n                this.upperValue += value;\n            }\n\n            const newVal: IRangeSliderValue = {\n                lower: this.lowerValue,\n                upper: this.upperValue\n            }\n\n            // Swap the thumbs if a collision appears.\n            // if (newVal.lower == newVal.upper) {\n            //     this.toggleThumb();\n            // }\n\n            this.value = newVal;\n\n        } else {\n            const newVal = (this.value as number) + value;\n            if (newVal >= this.lowerBound && newVal <= this.upperBound) {\n                this.value = newVal;\n            }\n        }\n\n        if (this.hasValueChanged(oldValue)) {\n            this.emitValueChange(oldValue);\n        }\n    }\n\n    /**\n     * @hidden\n     */\n    public onThumbChange() {\n        this.toggleSliderIndicators();\n    }\n\n    /**\n     * @hidden\n     */\n    public onHoverChange(state: boolean) {\n        return state ? this.showSliderIndicators() : this.hideSliderIndicators();\n    }\n\n    public setValue(value: number | IRangeSliderValue, triggerChange: boolean) {\n        let res;\n        if (!this.isRange) {\n            value = value as number;\n            if (!isNaN(value)) {\n                this._upperValue = value - value % this.step;\n                res = this.upperValue;\n            }\n        } else {\n            value = this.validateInitialValue(value as IRangeSliderValue);\n            this._upperValue = value.upper;\n            this._lowerValue = value.lower;\n            res = { lower: this.lowerValue, upper: this.upperValue };\n        }\n\n        if (triggerChange) {\n            this._onChangeCallback(res);\n        }\n    }\n\n    @HostListener('pointerdown', ['$event'])\n    protected onPointerDown($event: PointerEvent) {\n        this.findClosestThumb($event);\n\n        if (!this.thumbTo.isActive && this.thumbFrom === undefined) {\n            return;\n        }\n\n        this._sliding = true;\n        const activeThumb = this.thumbTo.isActive ? this.thumbTo : this.thumbFrom;\n        activeThumb.nativeElement.setPointerCapture($event.pointerId);\n        this.showSliderIndicators();\n\n        $event.preventDefault();\n    }\n\n    private onPointerMove($event: PointerEvent) {\n        if (this._sliding) {\n            this.update($event.clientX);\n        }\n    }\n\n    @HostListener('pointerup', ['$event'])\n    protected onPointerUp($event: PointerEvent) {\n        if (!this.thumbTo.isActive && this.thumbFrom === undefined) {\n            return;\n        }\n\n        const activeThumb = this.thumbTo.isActive ? this.thumbTo : this.thumbFrom;\n        activeThumb.nativeElement.releasePointerCapture($event.pointerId);\n\n        this._sliding = false;\n        this.hideSliderIndicators();\n        this.dragFinished.emit(this.value);\n    }\n\n    private validateInitialValue(value: IRangeSliderValue) {\n        if (value.upper < value.lower) {\n            const temp = value.upper;\n            value.upper = value.lower;\n            value.lower = temp;\n        }\n\n        if (value.lower < this.lowerBound) {\n            value.lower = this.lowerBound;\n        }\n\n        if (value.upper > this.upperBound) {\n            value.upper = this.upperBound;\n        }\n\n        return value;\n    }\n\n    private findClosestThumb(event: PointerEvent) {\n        if (this.isRange) {\n            this.closestHandle(event);\n        } else {\n            this.thumbTo.nativeElement.focus();\n        }\n\n        this.update(event.clientX);\n    }\n\n    private updateLowerBoundAndMinTravelZone() {\n        this.lowerBound = this.minValue;\n        this._pMin = 0;\n    }\n\n    private updateUpperBoundAndMaxTravelZone() {\n        this.upperBound = this.maxValue;\n        this._pMax = 1;\n    }\n\n    private calculateStepDistance() {\n        return this._el.nativeElement.getBoundingClientRect().width / (this.maxValue - this.minValue) * this.step;\n    }\n\n    // private toggleThumb() {\n    //     return this.thumbFrom.isActive ?\n    //         this.thumbTo.nativeElement.focus() :\n    //         this.thumbFrom.nativeElement.focus();\n    // }\n\n    private valueInRange(value, min = 0, max = 100) {\n        return Math.max(Math.min(value, max), min);\n    }\n\n    private positionHandler(thumbHandle: ElementRef, labelHandle: ElementRef, position: number) {\n        const percent = `${this.valueToFraction(position) * 100}%`;\n        const dir = this._dir.rtl ? 'right' : 'left';\n\n        if (thumbHandle) {\n            thumbHandle.nativeElement.style[dir] = percent;\n        }\n\n        if (labelHandle) {\n            labelHandle.nativeElement.style[dir] = percent;\n        }\n    }\n\n    private positionHandlersAndUpdateTrack() {\n        if (!this.isRange) {\n            this.positionHandler(this.thumbTo, this.labelTo, this.value as number);\n        } else {\n            this.positionHandler(this.thumbTo, this.labelTo, (this.value as IRangeSliderValue).upper);\n            this.positionHandler(this.thumbFrom, this.labelFrom, (this.value as IRangeSliderValue).lower);\n        }\n\n        if (this._hasViewInit) {\n            this.updateTrack();\n        }\n    }\n\n    private closestHandle(event: PointerEvent) {\n        const fromOffset = this.thumbFrom.nativeElement.offsetLeft + this.thumbFrom.nativeElement.offsetWidth / 2;\n        const toOffset = this.thumbTo.nativeElement.offsetLeft + this.thumbTo.nativeElement.offsetWidth / 2;\n        const xPointer = event.clientX - this._el.nativeElement.getBoundingClientRect().left;\n        const match = this.closestTo(xPointer, [fromOffset, toOffset]);\n\n        if (fromOffset === toOffset && toOffset < xPointer) {\n            this.thumbTo.nativeElement.focus();\n        } else if (fromOffset === toOffset && toOffset > xPointer) {\n            this.thumbFrom.nativeElement.focus();\n        } else if (match === fromOffset) {\n            this.thumbFrom.nativeElement.focus();\n        } else {\n            this.thumbTo.nativeElement.focus();\n        }\n    }\n\n    private setTickInterval() {\n        let tickInterval;\n        const trackProgress = 100;\n\n        if (this.labelsViewEnabled) {\n            // Calc ticks depending on the labels length;\n            tickInterval = ((trackProgress / (this.labels.length - 1) * 10)) / 10;\n        } else {\n            const trackRange = this.maxValue - this.minValue;\n            tickInterval = this.step > 1 ?\n                (trackProgress / ((trackRange / this.step)) * 10) / 10\n                : null;\n        }\n\n        this.renderer.setStyle(this.ticks.nativeElement, 'stroke-dasharray', `0, ${tickInterval * Math.sqrt(2)}%`);\n        this.renderer.setStyle(this.ticks.nativeElement, 'visibility', this.continuous || tickInterval === null ? 'hidden' : 'visible');\n    }\n\n    private showSliderIndicators() {\n        if (this.disabled) {\n            return;\n        }\n\n        if (this._indicatorsTimer) {\n            this._indicatorsDestroyer$.next(true);\n            this._indicatorsTimer = null;\n        }\n\n        this.thumbTo.showThumbIndicators();\n        this.labelTo.active = true;\n        if (this.thumbFrom) {\n            this.thumbFrom.showThumbIndicators();\n        }\n\n        if (this.labelFrom) {\n            this.labelFrom.active = true;\n        }\n\n    }\n\n    private hideSliderIndicators() {\n        if (this.disabled) {\n            return;\n        }\n\n        this._indicatorsTimer = timer(this.thumbLabelVisibilityDuration);\n        this._indicatorsTimer.pipe(takeUntil(this._indicatorsDestroyer$)).subscribe(() => {\n            this.thumbTo.hideThumbIndicators();\n            this.labelTo.active = false;\n            if (this.thumbFrom) {\n                this.thumbFrom.hideThumbIndicators();\n            }\n\n            if (this.labelFrom) {\n                this.labelFrom.active = false;\n            }\n        });\n    }\n\n    private toggleSliderIndicators() {\n        this.showSliderIndicators();\n        this.hideSliderIndicators();\n    }\n\n    private changeThumbFocusableState(state: boolean) {\n        const value = state ? -1 : 0;\n\n        if (this.isRange) {\n            this.thumbFrom.tabindex = value;\n        }\n\n        this.thumbTo.tabindex = value;\n\n        this._cdr.detectChanges();\n    }\n\n    private closestTo(goal: number, positions: number[]): number {\n        return positions.reduce((previous, current) => (Math.abs(goal - current) < Math.abs(goal - previous) ? current : previous));\n    }\n\n    private valueToFraction(value: number, pMin = this._pMin, pMax = this._pMax) {\n        return this.valueInRange((value - this.minValue) / (this.maxValue - this.minValue), pMin, pMax);\n    }\n\n    private isNullishButNotZero(value: any): boolean {\n        return !value && value !== 0;\n    }\n\n    /**\n     * @hidden\n     * Normalizе the value when two-way data bind is used and {@link this.step} is set.\n     * @param value\n     */\n    private normalizeByStep(value: IRangeSliderValue | number) {\n        if (this.isRange) {\n            this._value = {\n                lower: Math.floor((value as IRangeSliderValue).lower / this.step) * this.step,\n                upper: Math.floor((value as IRangeSliderValue).upper / this.step) * this.step\n            };\n        } else {\n            this._value = Math.floor((value as number) / this.step) * this.step;\n        }\n    }\n\n    private updateTrack() {\n        const fromPosition = this.valueToFraction(this.lowerValue);\n        const toPosition = this.valueToFraction(this.upperValue);\n        const positionGap = toPosition - fromPosition;\n\n        let trackLeftIndention = fromPosition;\n        if (this.isRange) {\n            if (positionGap) {\n                trackLeftIndention = Math.round((1 / positionGap * fromPosition) * 100);\n            }\n\n            trackLeftIndention = this._dir.rtl ? -trackLeftIndention : trackLeftIndention;\n            this.renderer.setStyle(this.trackRef.nativeElement, 'transform', `scaleX(${positionGap}) translateX(${trackLeftIndention}%)`);\n        } else {\n            this.renderer.setStyle(this.trackRef.nativeElement, 'transform', `scaleX(${toPosition})`);\n        }\n    }\n\n    private subscribeToEvents(thumb: IgxSliderThumbComponent) {\n        if (!thumb) {\n            return;\n        }\n\n        thumb.thumbValueChange\n            .pipe(takeUntil(this.unsubscriber(thumb)))\n            .subscribe(value => this.thumbChanged(value, thumb.type));\n\n        thumb.thumbBlur\n            .pipe(takeUntil(this.unsubscriber(thumb)))\n            .subscribe(() => this._onTouchedCallback());\n    }\n\n    private unsubscriber(thumb: IgxSliderThumbComponent) {\n        return merge(this._destroyer$, thumb.destroy);\n    }\n\n    private hasValueChanged(oldValue) {\n        const isSliderWithDifferentValue: boolean = !this.isRange && oldValue !== this.value;\n        const isRangeWithOneDifferentValue: boolean = this.isRange &&\n            ((oldValue as IRangeSliderValue).lower !== (this.value as IRangeSliderValue).lower ||\n                (oldValue as IRangeSliderValue).upper !== (this.value as IRangeSliderValue).upper);\n\n        return isSliderWithDifferentValue || isRangeWithOneDifferentValue;\n    }\n\n    private emitValueChange(oldValue: number | IRangeSliderValue) {\n        this.valueChange.emit({ oldValue, value: this.value });\n    }\n}\n\n/**\n * @hidden\n */\n\n","@if (showTicks && showTopTicks) {\n    <igx-ticks\n        ticksOrientation=\"top\"\n        [primaryTicks]=\"primaryTicks\"\n        [secondaryTicks]=\"secondaryTicks\"\n        [primaryTickLabels]=\"primaryTickLabels\"\n        [secondaryTickLabels]=\"secondaryTickLabels\"\n        [tickLabelsOrientation]=\"tickLabelsOrientation\"\n        [labelsViewEnabled]=\"labelsViewEnabled\"\n        [labels]=\"labels | spreadTickLabels:secondaryTicks\"\n        [tickLabelTemplateRef]=\"tickLabelTemplateRef\"\n        [minValue]=\"minValue\"\n        [maxValue]=\"maxValue\">\n    </igx-ticks>\n}\n<div class=\"igx-slider__track\">\n    <div class=\"igx-slider__track-inactive\"></div>\n    <div #track class=\"igx-slider__track-fill\"></div>\n    <div class=\"igx-slider__track-steps\">\n        <svg width=\"100%\" height=\"100%\">\n          <line #ticks x1=\"0\" y1=\"2\" x2=\"100%\" y2=\"2\"></line>\n        </svg>\n    </div>\n</div>\n<div class=\"igx-slider__thumbs\">\n    @if (isRange) {\n        <igx-thumb-label\n            type=\"from\"\n            [value]=\"lowerLabel\"\n            [templateRef]=\"thumbFromTemplateRef\"\n            [continuous]=\"continuous\"\n            [context]=\"context\"\n            [deactiveState]=\"deactivateThumbLabel\"\n            [thumb]=\"thumbFrom\"></igx-thumb-label>\n    }\n\n    @if (isRange) {\n        <igx-thumb\n            #thumbFrom\n            type=\"from\"\n            [value]=\"lowerLabel\"\n            [min]=\"minValue\"\n            [max]=\"maxValue\"\n            [disabled]=\"disabled\"\n            [continuous]=\"continuous\"\n            [onPan]=\"onPan\"\n            [stepDistance]=\"stepDistance\"\n            [step]=\"step\"\n            [templateRef]=\"thumbFromTemplateRef\"\n            [context]=\"context\"\n            [labels]=\"labels\"\n            (thumbChange)=\"onThumbChange()\"\n            (hoverChange)=\"onHoverChange($event)\"\n            [deactiveState]=\"deactivateThumbLabel\"\n            [thumbLabelVisibilityDuration]=\"thumbLabelVisibilityDuration\"></igx-thumb>\n    }\n\n    <igx-thumb-label\n        [value]=\"upperLabel\"\n        type=\"to\"\n        [templateRef]=\"thumbToTemplateRef\"\n        [continuous]=\"continuous\"\n        [context]=\"context\"\n        [deactiveState]=\"deactivateThumbLabel\"\n        [thumb]=\"thumbTo\"></igx-thumb-label>\n\n    <igx-thumb\n        #thumbTo\n        type=\"to\"\n        [value]=\"upperLabel\"\n        [min]=\"minValue\"\n        [max]=\"maxValue\"\n        [disabled]=\"disabled\"\n        [continuous]=\"continuous\"\n        [onPan]=\"onPan\"\n        [stepDistance]=\"stepDistance\"\n        [step]=\"step\"\n        [templateRef]=\"thumbToTemplateRef\"\n        [context]=\"context\"\n        [labels]=\"labels\"\n        (thumbChange)=\"onThumbChange()\"\n        (hoverChange)=\"onHoverChange($event)\"\n        [deactiveState]=\"deactivateThumbLabel\"\n        [thumbLabelVisibilityDuration]=\"thumbLabelVisibilityDuration\"></igx-thumb>\n</div>\n@if (showTicks && showBottomTicks) {\n    <igx-ticks\n        ticksOrientation=\"bottom\"\n        [primaryTicks]=\"primaryTicks\"\n        [secondaryTicks]=\"secondaryTicks\"\n        [primaryTickLabels]=\"primaryTickLabels\"\n        [secondaryTickLabels]=\"secondaryTickLabels\"\n        [tickLabelsOrientation]=\"tickLabelsOrientation\"\n        [labelsViewEnabled]=\"labelsViewEnabled\"\n        [labels]=\"labels | spreadTickLabels:secondaryTicks\"\n        [tickLabelTemplateRef]=\"tickLabelTemplateRef\"\n        [minValue]=\"minValue\"\n        [maxValue]=\"maxValue\">\n    </igx-ticks>\n}\n","import { IgxThumbFromTemplateDirective, IgxThumbToTemplateDirective, IgxTickLabelTemplateDirective } from './slider.common';\nimport { IgxSliderComponent } from './slider.component';\n\nexport * from './slider.component';\nexport * from './slider.common';\n\n/* NOTE: Slider directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_SLIDER_DIRECTIVES = [\n    IgxSliderComponent,\n    IgxThumbFromTemplateDirective,\n    IgxThumbToTemplateDirective,\n    IgxTickLabelTemplateDirective\n] as const;\n","import { NgModule } from '@angular/core';\nimport { IGX_SLIDER_DIRECTIVES } from './public_api';\n\n/**\n * @hidden\n * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components\n */\n@NgModule({\n    imports: [\n        ...IGX_SLIDER_DIRECTIVES\n    ],\n    exports: [\n        ...IGX_SLIDER_DIRECTIVES\n    ]\n})\nexport class IgxSliderModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["ɵIgxDirectionality","i1.IgxSliderComponent","i2.IgxThumbFromTemplateDirective","i2.IgxThumbToTemplateDirective","i2.IgxTickLabelTemplateDirective"],"mappings":";;;;;;;;AAEA;;;;;;;;;;AAUG;MAKU,6BAA6B,CAAA;8GAA7B,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAJzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAGD;;;;;;;;;;AAUG;MAKU,2BAA2B,CAAA;8GAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAJvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAGD;;;;AAIG;MAKU,6BAA6B,CAAA;8GAA7B,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAJzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAaM,MAAM,aAAa,GAAG;AACzB;;AAEG;AACH,IAAA,MAAM,EAAE,QAAQ;AAChB;;AAEG;AACH,IAAA,KAAK,EAAE;;AAIJ,MAAM,YAAY,GAAG;AACxB,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,EAAE,EAAE;;AAIR;;AAEG;AACI,MAAM,qBAAqB,GAAG;AACjC,IAAA,UAAU,EAAE,YAAY;AACxB,IAAA,WAAW,EAAE,aAAa;AAC1B,IAAA,WAAW,EAAE;;AAIjB;;AAEG;AACI,MAAM,gBAAgB,GAAG;AAC5B,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,MAAM,EAAE;;;ACtFZ;;AAEG;MAMU,sBAAsB,CAAA;AALnC,IAAA,WAAA,GAAA;AAMY,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AA8E3C,IAAA;AAtDG,IAAA,IACW,cAAc,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI;IAC1C;AAEA,IAAA,IACW,YAAY,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE;IACxC;AAEA,IAAA,IACW,oBAAoB,GAAA;QAC3B,OAAO,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM;IACzD;AAEA,IAAA,IACW,kBAAkB,GAAA;QACzB,OAAO,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM;IACvD;AAEA,IAAA,IACW,qBAAqB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,qBAAqB;IAC5C;AAEA,IAAA,IACW,mBAAmB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,mBAAmB;IAC1C;AAEA,IAAA,IAAW,aAAa,GAAA;QACpB,OAAO;AACH,YAAA,wCAAwC,EAAE,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI;AACzE,YAAA,sCAAsC,EAAE,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC;SACtE;IACL;AAIA,IAAA,IAAW,aAAa,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa;IACzC;AAEA,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,OAAO;IACvB;IAEA,IAAW,MAAM,CAAC,GAAY,EAAA;QAC1B,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa,EAAE;AACvC,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;QACxB;aAAO;AACH,YAAA,IAAI,CAAC,OAAO,GAAG,GAAG;QACtB;IACJ;8GA9ES,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAeX,gBAAgB,CAAA,EAAA,aAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAGhB,gBAAgB,+dC/BxC,yPAOA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDIc,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAE1B,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,OAAA,EAElB,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,yPAAA,EAAA;;sBAKnC;;sBAGA;;sBAGA;;sBAGA;;sBAGA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAGrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAGrC;;sBAIA,WAAW;uBAAC,mCAAmC;;sBAK/C,WAAW;uBAAC,iCAAiC;;sBAK7C,WAAW;uBAAC,2CAA2C;;sBAKvD,WAAW;uBAAC,yCAAyC;;sBAKrD,WAAW;uBAAC,4CAA4C;;sBAKxD,WAAW;uBAAC,0CAA0C;;;AExD3D;;AAEG;MAMU,uBAAuB,CAAA;AALpC,IAAA,WAAA,GAAA;AAMY,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAACA,kBAAkB,CAAC;AA6ClC,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAU;AAG7C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAO;AAGrC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAQ;AAGpC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAW;QAGzC,IAAA,CAAA,QAAQ,GAAG,CAAC;QAGZ,IAAA,CAAA,IAAI,GAAG,QAAQ;QA+Bf,IAAA,CAAA,eAAe,GAAG,YAAY;QAQ9B,IAAA,CAAA,MAAM,GAAG,CAAC;QAGV,IAAA,CAAA,OAAO,GAAG,KAAK;QAiDf,IAAA,CAAA,QAAQ,GAAG,KAAK;QAUf,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,UAAU,GAAG,KAAK;AAClB,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAW;AA+H7C,IAAA;AApOG,IAAA,IACW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,KAAK;IACrB;AAEA,IAAA,IACW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,GAAG;IACnB;AAEA,IAAA,IACW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,GAAG;IACnB;AAEA,IAAA,IACW,aAAa,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE;YACtD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QAClC;QACA,OAAO,IAAI,CAAC,KAAK;IACrB;AAEA,IAAA,IACW,aAAa,GAAA;AACpB,QAAA,OAAO,CAAA,aAAA,EAAgB,IAAI,CAAC,IAAI,EAAE;IACtC;AAKA,IAAA,IACW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,QAAQ;IACxB;AAQA,IAAA,IACW,cAAc,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI;IAC1C;AAEA,IAAA,IACW,YAAY,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE;IACxC;AAEA,IAAA,IACW,oBAAoB,GAAA;QAC3B,OAAO,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS;IAC5D;AAEA,IAAA,IACW,kBAAkB,GAAA;QACzB,OAAO,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,IAAI,IAAI,CAAC,SAAS;IAC1D;AAEA,IAAA,IACW,sBAAsB,GAAA;QAC7B,OAAO,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ;IAC3D;AAEA,IAAA,IACW,oBAAoB,GAAA;QAC3B,OAAO,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,IAAI,IAAI,CAAC,QAAQ;IACzD;AAEA,IAAA,IACW,qBAAqB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU;IAC9E;AAEA,IAAA,IACW,mBAAmB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU;IAC5E;AAEA,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO;AACH,YAAA,4BAA4B,EAAE,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI;AAC7D,YAAA,0BAA0B,EAAE,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC;SAC1D;IACL;AAIA,IAAA,IAAW,aAAa,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa;IACzC;AAEA,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,SAAS;IACzB;AAMA,IAAA,IAAY,cAAc,GAAA;QACtB,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,qBAAqB,EAAE;AAClE,QAAA,MAAM,WAAW,GAAG,CAAC,eAAe,CAAC,KAAK,GAAG,eAAe,CAAC,IAAI,IAAI,CAAC;AACtE,QAAA,OAAO,eAAe,CAAC,IAAI,GAAG,WAAW;IAC7C;IAGO,cAAc,GAAA;AACjB,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;IAC/B;IAGO,cAAc,GAAA;AACjB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;IAChC;AAGO,IAAA,OAAO,CAAC,KAAoB,EAAA;QAC/B,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;IACvB;AAGO,IAAA,SAAS,CAAC,KAAoB,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf;QACJ;QAEA,IAAI,SAAS,GAAG,CAAC;QACjB,MAAM,WAAW,GAAG,CAAC,GAAY,KAAK,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI;QACtE,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YAC5B,SAAS,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QAC3C;aAAO,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YACpC,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QAC1C;aAAO;YACH;QACJ;AAEA,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;AACvB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC;IACzC;IAGO,MAAM,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC;AACf,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;IACzB;IAGO,eAAe,GAAA;AAClB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC;IACnB;AAEA;;AAEG;IACI,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC;AACA,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;AAC9B,aAAA,SAAS,CAAC,MAAM,IACb,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAChC;IACT;AAEA;;AAEG;IACI,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;IAC7B;AAEA;;AAEG;IACI,mBAAmB,GAAA;AACtB,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;IACpC;AAEA;;AAEG;IACI,mBAAmB,GAAA;AACtB,QAAA,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;IACrC;AAEQ,IAAA,gBAAgB,CAAC,MAAc,EAAA;QACnC,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;QACrD,IAAI,IAAI,CAAC,QAAQ,IAAI,WAAW,KAAK,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC;QAC3C;IACJ;AAEQ,IAAA,oBAAoB,CAAC,MAAc,EAAA;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,cAAc;AAC1F,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC;;;QAIhD,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AACvC,QAAA,IAAI,cAAc,GAAG,kBAAkB,EAAE;AACrC,YAAA,OAAO,CAAC;QACZ;QAEA,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC;IACxD;IAEQ,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,IAAI;IACpD;AAEQ,IAAA,qBAAqB,CAAC,OAAgB,EAAA;AAC1C,QAAA,IAAI,CAAC,UAAU,GAAG,OAAO;QAEzB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa,EAAE;AACvC,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QAC1B;aAAO;AACH,YAAA,IAAI,CAAC,SAAS,GAAG,OAAO;QAC5B;IAEJ;8GAnSS,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAOZ,gBAAgB,CAAA,EAAA,4BAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAMhB,gBAAgB,+KAqBhB,gBAAgB,CAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,oCAAA,EAAA,cAAA,EAAA,6BAAA,EAAA,qBAAA,EAAA,2BAAA,EAAA,mBAAA,EAAA,qCAAA,EAAA,2BAAA,EAAA,mCAAA,EAAA,yBAAA,EAAA,uCAAA,EAAA,6BAAA,EAAA,qCAAA,EAAA,2BAAA,EAAA,sCAAA,EAAA,4BAAA,EAAA,oCAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjDxC,yCACA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDYc,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAER,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;+BACI,WAAW,EAAA,OAAA,EAEZ,CAAC,OAAO,CAAC,EAAA,QAAA,EAAA,yCAAA,EAAA;;sBAMjB;;sBAGA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAGrC;;sBAGA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAGrC;;sBAGA;;sBAGA;;sBAGA;;sBAGA;;sBAGA;;sBAGA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAGrC;;sBAGA;;sBAGA;;sBAGA;;sBAGA;;sBAGA;;sBAGA;;sBAGA,WAAW;uBAAC,eAAe;;sBAG3B,WAAW;uBAAC,WAAW;;sBAGvB,WAAW;uBAAC,oBAAoB;;sBAKhC,WAAW;uBAAC,oBAAoB;;sBAKhC,WAAW;uBAAC,oBAAoB;;sBAKhC,WAAW;uBAAC,qBAAqB;;sBAQjC,WAAW;uBAAC,iBAAiB;;sBAK7B,WAAW;uBAAC,uBAAuB;;sBAGnC,WAAW;uBAAC,CAAA,kBAAA,CAAoB;;sBAKhC,WAAW;uBAAC,cAAc;;sBAG1B,WAAW;uBAAC,oCAAoC;;sBAGhD,WAAW;uBAAC,6BAA6B;;sBAKzC,WAAW;uBAAC,2BAA2B;;sBAKvC,WAAW;uBAAC,qCAAqC;;sBAKjD,WAAW;uBAAC,mCAAmC;;sBAK/C,WAAW;uBAAC,uCAAuC;;sBAKnD,WAAW;uBAAC,qCAAqC;;sBAKjD,WAAW;uBAAC,sCAAsC;;sBAKlD,WAAW;uBAAC,oCAAoC;;sBAgChD,YAAY;uBAAC,cAAc;;sBAM3B,YAAY;uBAAC,cAAc;;sBAK3B,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;sBAMhC,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;sBAoBlC,YAAY;uBAAC,MAAM;;sBAQnB,YAAY;uBAAC,OAAO;;;AEvOzB;;AAEG;MAKU,iBAAiB,CAAA;IAGnB,SAAS,CAAC,MAA2D,EAAE,cAAsB,EAAA;QAChG,IAAI,CAAC,MAAM,EAAE;YACT;QACJ;QAEA,MAAM,MAAM,GAAG,EAAE;AACjB,QAAA,MAAM,CAAC,OAAO,CAAC,IAAI,IAAG;AAClB,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACjB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE;AACrC,gBAAA,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACnB;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,MAAM;IACjB;8GAjBS,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,kBAAA,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,kBAAkB;AACxB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACJD;;AAEG;MAMU,iBAAiB,CAAA;AAL9B,IAAA,WAAA,GAAA;AAuCI;;AAEG;QAEI,IAAA,CAAA,UAAU,GAAG,IAAI;AA4F3B,IAAA;AA1FG;;AAEG;AACH,IAAA,IACW,aAAa,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,gBAAgB,KAAK,gBAAgB,CAAC,GAAG;IACzD;AAEA;;AAEG;AACH,IAAA,IACW,eAAe,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,YAAY,GAAG,CAAC;IAChC;AAEA;;AAEG;AACH,IAAA,IACW,sBAAsB,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,qBAAqB,KAAK,qBAAqB,CAAC,WAAW;IAC3E;AAEA;;AAEG;AACH,IAAA,IACW,sBAAsB,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,qBAAqB,KAAK,qBAAqB,CAAC,WAAW;IAC3E;AAEA;;;;;;;;;;;;;;AAcG;AACI,IAAA,OAAO,CAAC,GAAW,EAAA;QACtB,OAAO;AACH,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;AAC9B,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;YAC9B,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,YAAA,KAAK,EAAE;SACV;IACL;AAEA;;AAEG;AACH,IAAA,IAAW,WAAW,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,YAAY,GAAG,CAAC;AACxB,YAAA,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,YAAY;AACnE,YAAA,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,GAAG,CAAC;IACzD;AAEO,IAAA,gBAAgB,CAAC,GAAW,EAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,mBAAmB;IAClF;AAEA;;AAEG;AACI,IAAA,SAAS,CAAC,GAAW,EAAA;QACxB,OAAO,IAAI,CAAC,YAAY,IAAI,CAAC,GAAG,KAAK;YACjC,GAAG,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC;IAC7C;AAEA;;AAEG;AACI,IAAA,SAAS,CAAC,GAAW,EAAA;AACxB,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;QAC3B;AAEA,QAAA,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AAC5H,QAAA,MAAM,QAAQ,GAAG,SAAS,GAAG,GAAG;AAEhC,QAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAChD;8GAjIS,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,CAAA,mBAAA,EAAA,mBAAA,EAON,gBAAgB,CAAA,EAAA,mBAAA,EAAA,CAAA,qBAAA,EAAA,qBAAA,EAGhB,gBAAgB,CAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,CAAA,mBAAA,EAAA,mBAAA,EAehB,gBAAgB,CAAA,EAAA,MAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,8BAAA,EAAA,oBAAA,EAAA,+BAAA,EAAA,sBAAA,EAAA,2CAAA,EAAA,6BAAA,EAAA,2CAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrCxC,wpBAaA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDHc,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAE1B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,OAAA,EAEZ,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,wpBAAA,EAAA;;sBAGnC;;sBAGA;;sBAGA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAGrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAGrC;;sBAGA;;sBAGA;;sBAGA;;sBAGA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAGrC;;sBAGA;;sBAMA,WAAW;uBAAC,yBAAyB;;sBAMrC,WAAW;uBAAC,8BAA8B;;sBAQ1C,WAAW;uBAAC,+BAA+B;;sBAQ3C,WAAW;uBAAC,2CAA2C;;sBAQvD,WAAW;uBAAC,2CAA2C;;;AEjE5D,IAAI,OAAO,GAAG,CAAC;AAEf;;;;;;;;;;;;;;AAcG;MAOU,kBAAkB,CAAA;AAc3B;;AAEG;AACH,IAAA,IAAW,SAAS,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,CAAC;IACtE;AAEA;;AAEG;AACH,IAAA,IAAW,OAAO,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,CAAC;IACpE;AAEA,IAAA,IAAY,SAAS,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,CAAC;IACzE;AAEA,IAAA,IAAY,OAAO,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,CAAC;IACvE;AAoDA;;AAEG;AACH,IAAA,IACW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,QAAQ;IACxB;AAEA;;;;;;;;;AASG;AACH,IAAA,IACW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,KAAsB;IACtC;AAEA;;;;;;;;;AASG;IACH,IAAW,IAAI,CAAC,IAAmB,EAAA;AAC/B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AAEjB,QAAA,IAAI,IAAI,KAAK,aAAa,CAAC,MAAM,EAAE;AAC/B,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC;QACvB;AAEA,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,WAAW,EAAE;QACtB;IACJ;AAGA;;;;;AAKG;AACH,IAAA,IACW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,OAAO;IACvB;IAEA,IAAW,MAAM,CAAC,MAA2D,EAAA;AACzE,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AAErB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;QAExD,IAAI,CAAC,8BAA8B,EAAE;AAErC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,qBAAqB,EAAE;YAChD,IAAI,CAAC,eAAe,EAAE;QAC1B;IACJ;AAEA;;;;;;;;;;AAUG;AACH,IAAA,IAAW,OAAO,GAAA;QACd,OAAO;YACH,SAAS,EAAE,IAAI,CAAC,KAAK;YACrB,MAAM,EAAE,IAAI,CAAC;SAChB;IACL;AAEA;;;;;;AAMG;IACH,IACW,IAAI,CAAC,IAAY,EAAA;AACxB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AAEjB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,qBAAqB,EAAE;AAChD,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;YAChC,IAAI,CAAC,8BAA8B,EAAE;YACrC,IAAI,CAAC,eAAe,EAAE;QAC1B;IACJ;AAEA;;;;;;;;;AASG;AACH,IAAA,IAAW,IAAI,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,iBAAiB,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK;IAClD;AAEA;;;;;;;;;AASG;AACH,IAAA,IACW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS;IACzB;AAEA;;;;;AAKG;IACH,IAAW,QAAQ,CAAC,OAAgB,EAAA;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,OAAO;AAExB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC;QAC3C;IACJ;AAEA;;;;;;;;;AASG;AACH,IAAA,IACW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW;IAC3B;AAEA;;;;;;;;AAQG;IACH,IAAW,UAAU,CAAC,UAAmB,EAAA;AACrC,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU;AAC7B,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,eAAe,EAAE;QAC1B;IACJ;AAEA;;;;;;;;;AASG;AACH,IAAA,IAAW,QAAQ,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,YAAA,OAAO,CAAC;QACZ;QAEA,OAAO,IAAI,CAAC,SAAS;IACzB;AAEA;;;;;;AAMG;IACH,IACW,QAAQ,CAAC,KAAa,EAAA;AAC7B,QAAA,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;YACxB;QACJ;aAAO;AACH,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QAC1B;AAEA,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;YAC1B,IAAI,CAAC,gCAAgC,EAAE;AACvC,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;QAC3B;;AAGA,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC;;QAEd,IAAI,CAAC,8BAA8B,EAAE;AACrC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,qBAAqB,EAAE;YAChD,IAAI,CAAC,eAAe,EAAE;QAC1B;IACJ;AAEA;;;;;;;;;AASG;AACH,IAAA,IAAW,QAAQ,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,iBAAiB;AACzB,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YACtB,IAAI,CAAC,SAAS;IACtB;AAEA;;;;;;AAMG;IACH,IACW,QAAQ,CAAC,KAAa,EAAA;AAC7B,QAAA,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE;YACzB;QACJ;aAAO;AACH,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QAC1B;AAEA,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;YAC1B,IAAI,CAAC,gCAAgC,EAAE;AACvC,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;QAC3B;;AAGA,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC;;QAEd,IAAI,CAAC,8BAA8B,EAAE;AACrC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,qBAAqB,EAAE;YAChD,IAAI,CAAC,eAAe,EAAE;QAC1B;IACJ;AAEA;;;;;;;;;;AAUG;AACH,IAAA,IAAW,UAAU,GAAA;AACjB,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE;AACnE,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC;QAC5E;QAEA,OAAO,IAAI,CAAC,QAAQ;IACxB;AAEA;;;;;;AAMG;IACH,IACW,UAAU,CAAC,KAAa,EAAA;AAC/B,QAAA,IAAI,KAAK,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,iBAAiB,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;YACnE;QACJ;AAEA,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC;;AAGzE,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,8BAA8B,EAAE;IACzC;AAEA;;;;;;;;;;AAUG;AACH,IAAA,IAAW,UAAU,GAAA;AACjB,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE;AACnE,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC;QAC5E;QAEA,OAAO,IAAI,CAAC,QAAQ;IACxB;AAEA;;;;;;AAMG;IACH,IACW,UAAU,CAAC,KAAa,EAAA;QAC/B,IAAI,KAAK,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,iBAAiB,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;YACxF;QACJ;AAEA,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC;;AAEzE,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,8BAA8B,EAAE;IACzC;AAEA;;;;;;;;;;;AAWG;AACH,IAAA,IAAW,KAAK,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,OAAO;AACH,gBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC;AAC3E,gBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU;aAC7E;QACL;aAAO;AACH,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC;QAC/E;IACJ;AAEA;;;;;;;;;;;;;;;;AAgBG;IACH,IACW,KAAK,CAAC,KAAiC,EAAA;AAC9C,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AAE3B,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;YAChC,IAAI,CAAC,8BAA8B,EAAE;QACzC;IACJ;AAEA;;;;;AAKG;AACH,IAAA,IACW,YAAY,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxB,OAAO,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;QAClD;QACA,OAAO,IAAI,CAAC,aAAa;IAC7B;AAEA;;;;;;AAMG;IACH,IAAW,YAAY,CAAC,GAAW,EAAA;AAC/B,QAAA,IAAI,GAAG,IAAI,CAAC,EAAE;YACV;QACJ;AAEA,QAAA,IAAI,CAAC,aAAa,GAAG,GAAG;IAC5B;AAEA;;;;;AAKG;AACH,IAAA,IACW,cAAc,GAAA;QACrB,OAAO,IAAI,CAAC,eAAe;IAC/B;AAEA;;;;;;AAMG;IACH,IAAW,cAAc,CAAC,GAAW,EAAA;AACjC,QAAA,IAAI,GAAG,GAAG,CAAC,EAAE;YACT;QACJ;AAEA,QAAA,IAAI,CAAC,eAAe,GAAG,GAAG;IAC9B;AAqDA;;AAEG;AACH,IAAA,IAAW,oBAAoB,GAAA;QAC3B,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,iBAAiB,MAAM,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,mBAAmB,CAAC;AACtG,aAAC,IAAI,CAAC,gBAAgB,KAAK,gBAAgB,CAAC,GAAG,IAAI,IAAI,CAAC,gBAAgB,KAAK,gBAAgB,CAAC,MAAM,CAAC;IAC7G;AAsHA,IAAA,WAAA,GAAA;AAxsBQ,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;AACxB,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAChC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AACxB,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAACA,kBAAkB,CAAC;AAgDzC;;AAEG;QAEI,IAAA,CAAA,UAAU,GAAG,IAAI;AAExB;;;;;;AAMG;AAGI,QAAA,IAAA,CAAA,EAAE,GAAG,CAAA,WAAA,EAAc,OAAO,EAAE,EAAE;AAErC;;;;;AAKG;QAEI,IAAA,CAAA,4BAA4B,GAAG,GAAG;AA6czC;;;;;AAKG;QAEI,IAAA,CAAA,SAAS,GAAG,KAAK;AAExB;;;;;AAKG;QAEI,IAAA,CAAA,iBAAiB,GAAG,IAAI;AAE/B;;;;;AAKG;QAEI,IAAA,CAAA,mBAAmB,GAAG,IAAI;AAEjC;;;;;;;;AAQG;AAEI,QAAA,IAAA,CAAA,gBAAgB,GAAqB,gBAAgB,CAAC,MAAM;AAEnE;;;;;;;;AAQG;AAEI,QAAA,IAAA,CAAA,qBAAqB,GAA0B,qBAAqB,CAAC,UAAU;AAUtF;;;;;;;;;;AAUG;AAEI,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAA+B;AAEpE;;;;;;;;;;AAUG;AAEI,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAU;AAEpD;;;;;;;;;;AAUG;AAEI,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAU;AAEpD;;;;;;;;;;AAUG;AAEI,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAA8B;AAQpE;;AAEG;AAEK,QAAA,IAAA,CAAA,MAAM,GAAuC,IAAI,SAAS,EAA2B;AAE7F;;AAEG;AAEK,QAAA,IAAA,CAAA,SAAS,GAAsC,IAAI,SAAS,EAA0B;AAE9F;;AAEG;AACI,QAAA,IAAA,CAAA,KAAK,GAAoB,IAAI,OAAO,EAAU;;QAQ7C,IAAA,CAAA,KAAK,GAAG,CAAC;QACT,IAAA,CAAA,KAAK,GAAG,CAAC;;QAGT,IAAA,CAAA,YAAY,GAAG,KAAK;QACpB,IAAA,CAAA,SAAS,GAAG,CAAC;QACb,IAAA,CAAA,SAAS,GAAG,GAAG;QAKf,IAAA,CAAA,WAAW,GAAG,KAAK;QACnB,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,KAAK,GAAG,CAAC;QACT,IAAA,CAAA,MAAM,GAA+B,CAAC;;QAGtC,IAAA,CAAA,aAAa,GAAG,CAAC;QACjB,IAAA,CAAA,eAAe,GAAG,CAAC;QACnB,IAAA,CAAA,QAAQ,GAAG,KAAK;AAEhB,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,KAAK,EAAgD;AACnE,QAAA,IAAA,CAAA,KAAK,GAAkB,aAAa,CAAC,MAAM;AAE3C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAW;AACpC,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,OAAO,EAAW;QAG9C,IAAA,CAAA,iBAAiB,GAAqB,IAAI;QAC1C,IAAA,CAAA,kBAAkB,GAAe,IAAI;AAGzC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK;IAClC;AAEA;;AAEG;IAEI,OAAO,GAAA;QACV,IAAI,CAAC,sBAAsB,EAAE;IACjC;AAEA;;;;;;;;;AASG;AACH,IAAA,IAAW,OAAO,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,KAAK;IAC5C;AAEA;;;;;;;;;AASG;AACH,IAAA,IAAW,UAAU,GAAA;QACjB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,EAAE;YAC1G,OAAO,IAAI,CAAC,WAAW;QAC3B;QAEA,OAAO,IAAI,CAAC,UAAU;IAC1B;AAEA;;;;;;;;;AASG;IACH,IACW,UAAU,CAAC,KAAa,EAAA;AAC/B,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC;AAChF,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,aAAa,EAAE;AACpC,YAAA,IAAI,CAAC,WAAW,GAAG,aAAa;YAChC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;AAC5C,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE;QACrE;IACJ;AAEA;;;;;;;;;;AAUG;AACH,IAAA,IAAW,UAAU,GAAA;QACjB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,EAAE;YAC1G,OAAO,IAAI,CAAC,WAAW;QAC3B;QAEA,OAAO,IAAI,CAAC,UAAU;IAC1B;AAEA;;;;;;;;;AASG;IACH,IACW,UAAU,CAAC,KAAa,EAAA;AAC/B,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC;AAChF,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,aAAa,EAAE;AACpC,YAAA,IAAI,CAAC,WAAW,GAAG,aAAa;YAChC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;AAC5C,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE;QACrE;IACJ;AAEA;;;;;;;AAOG;AACH,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,UAAU;IAClF;AAEA;;;;;;;AAOG;AACH,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,UAAU;IAClF;AAEA;;;;;;;;AAQG;AACH,IAAA,IAAW,iBAAiB,GAAA;AACxB,QAAA,OAAO,CAAC,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IACpD;AAEA;;AAEG;AACH,IAAA,IAAW,YAAY,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,gBAAgB,KAAK,gBAAgB,CAAC,GAAG;AACjD,YAAA,IAAI,CAAC,gBAAgB,KAAK,gBAAgB,CAAC,MAAM;IACzD;AAEA;;AAEG;AACH,IAAA,IAAW,eAAe,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,gBAAgB,KAAK,gBAAgB,CAAC,MAAM;AACpD,YAAA,IAAI,CAAC,gBAAgB,KAAK,gBAAgB,CAAC,MAAM;IACzD;AAEA;;AAEG;AACI,IAAA,WAAW,CAAC,OAAsB,EAAA;AACrC,QAAA,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ;YACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE;YAC/D,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,YAAY;YAC9C,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,YAAY;QAClD;QAEA,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;AAC9C,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;QACrC;IACJ;AAEA;;AAEG;IACI,QAAQ,GAAA;AACX;;AAEG;AACH,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACf,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU;QACtC;;AAGA,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACvD,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;IAC3D;IAEO,kBAAkB,GAAA;QACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;IACrC;AAEA;;AAEG;IACI,eAAe,GAAA;AAClB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,qBAAqB,EAAE;QAChD,IAAI,CAAC,8BAA8B,EAAE;QACrC,IAAI,CAAC,eAAe,EAAE;AACtB,QAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC;AAE7C,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC;AACtC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC;AAEpC,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAG;AACrE,YAAA,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAA8B,KAAK,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,CAAC;YACnG,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC;AACtD,YAAA,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;AACjC,YAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC;AACjD,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YACpE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAA6B,KAAK,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,CAAC;YAC1G,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC;AAC1D,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAK;AAChC,YAAA,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CACzC,YAAY,CAAC,EAAE,CAAC,EAChB,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAK;AAC/D,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,qBAAqB,EAAE;YACpD,CAAC,CAAC,CAAC;YACP,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,IAAI,CACjD,QAAQ,CAAC,MAAM,QAAQ,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC,EACpD,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAoB,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAK;AACnF,gBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;YAC9B,CAAC,CAAC,CAAC;AACX,QAAA,CAAC,CAAC;IACN;AAEA;;AAEG;IACI,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;AAE3B,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;AACrC,QAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE;IACzC;AAEA;;AAEG;AACI,IAAA,UAAU,CAAC,KAAiC,EAAA;AAC/C,QAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE;YACjC;QACJ;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;QACjC,IAAI,CAAC,8BAA8B,EAAE;IACzC;AAEA;;AAEG;AACI,IAAA,gBAAgB,CAAC,EAAO,EAAA;AAC3B,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;IAC/B;AAEA;;AAEG;AACI,IAAA,iBAAiB,CAAC,EAAO,EAAA;AAC5B,QAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE;IAChC;;IAGO,cAAc,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;IACnF;AAEA;;;AAGG;AACI,IAAA,MAAM,CAAC,MAAM,EAAA;AAChB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf;QACJ;;AAGA,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;;;QAIvB,IAAI,CAAC,8BAA8B,EAAE;IACzC;AAEA;;AAEG;IACI,YAAY,CAAC,KAAa,EAAE,SAAiB,EAAA;AAChD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK;AAE3B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,SAAS,KAAK,YAAY,CAAC,IAAI,EAAE;gBACjC,IAAI,IAAI,CAAC,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;oBAC3C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,KAAK;gBAC7C;AACA,gBAAA,IAAI,CAAC,UAAU,IAAI,KAAK;YAC5B;iBAAO;gBACH,IAAI,IAAI,CAAC,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;oBAC3C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,KAAK;gBAC7C;AACA,gBAAA,IAAI,CAAC,UAAU,IAAI,KAAK;YAC5B;AAEA,YAAA,MAAM,MAAM,GAAsB;gBAC9B,KAAK,EAAE,IAAI,CAAC,UAAU;gBACtB,KAAK,EAAE,IAAI,CAAC;aACf;;;;;AAOD,YAAA,IAAI,CAAC,KAAK,GAAG,MAAM;QAEvB;aAAO;AACH,YAAA,MAAM,MAAM,GAAI,IAAI,CAAC,KAAgB,GAAG,KAAK;AAC7C,YAAA,IAAI,MAAM,IAAI,IAAI,CAAC,UAAU,IAAI,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE;AACxD,gBAAA,IAAI,CAAC,KAAK,GAAG,MAAM;YACvB;QACJ;AAEA,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;QAClC;IACJ;AAEA;;AAEG;IACI,aAAa,GAAA;QAChB,IAAI,CAAC,sBAAsB,EAAE;IACjC;AAEA;;AAEG;AACI,IAAA,aAAa,CAAC,KAAc,EAAA;AAC/B,QAAA,OAAO,KAAK,GAAG,IAAI,CAAC,oBAAoB,EAAE,GAAG,IAAI,CAAC,oBAAoB,EAAE;IAC5E;IAEO,QAAQ,CAAC,KAAiC,EAAE,aAAsB,EAAA;AACrE,QAAA,IAAI,GAAG;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACf,KAAK,GAAG,KAAe;AACvB,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBACf,IAAI,CAAC,WAAW,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,IAAI;AAC5C,gBAAA,GAAG,GAAG,IAAI,CAAC,UAAU;YACzB;QACJ;aAAO;AACH,YAAA,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAA0B,CAAC;AAC7D,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,KAAK;AAC9B,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,KAAK;AAC9B,YAAA,GAAG,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE;QAC5D;QAEA,IAAI,aAAa,EAAE;AACf,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;QAC/B;IACJ;AAGU,IAAA,aAAa,CAAC,MAAoB,EAAA;AACxC,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;AAE7B,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;YACxD;QACJ;AAEA,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS;QACzE,WAAW,CAAC,aAAa,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC;QAC7D,IAAI,CAAC,oBAAoB,EAAE;QAE3B,MAAM,CAAC,cAAc,EAAE;IAC3B;AAEQ,IAAA,aAAa,CAAC,MAAoB,EAAA;AACtC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;QAC/B;IACJ;AAGU,IAAA,WAAW,CAAC,MAAoB,EAAA;AACtC,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;YACxD;QACJ;AAEA,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS;QACzE,WAAW,CAAC,aAAa,CAAC,qBAAqB,CAAC,MAAM,CAAC,SAAS,CAAC;AAEjE,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;QACrB,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACtC;AAEQ,IAAA,oBAAoB,CAAC,KAAwB,EAAA;QACjD,IAAI,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE;AAC3B,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK;AACxB,YAAA,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK;AACzB,YAAA,KAAK,CAAC,KAAK,GAAG,IAAI;QACtB;QAEA,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;AAC/B,YAAA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU;QACjC;QAEA,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;AAC/B,YAAA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU;QACjC;AAEA,QAAA,OAAO,KAAK;IAChB;AAEQ,IAAA,gBAAgB,CAAC,KAAmB,EAAA;AACxC,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAC7B;aAAO;AACH,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE;QACtC;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;IAC9B;IAEQ,gCAAgC,GAAA;AACpC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ;AAC/B,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC;IAClB;IAEQ,gCAAgC,GAAA;AACpC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ;AAC/B,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC;IAClB;IAEQ,qBAAqB,GAAA;QACzB,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,IAAI;IAC7G;;;;;;IAQQ,YAAY,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,EAAA;AAC1C,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC;IAC9C;AAEQ,IAAA,eAAe,CAAC,WAAuB,EAAE,WAAuB,EAAE,QAAgB,EAAA;AACtF,QAAA,MAAM,OAAO,GAAG,CAAA,EAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAA,CAAA,CAAG;AAC1D,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,OAAO,GAAG,MAAM;QAE5C,IAAI,WAAW,EAAE;YACb,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO;QAClD;QAEA,IAAI,WAAW,EAAE;YACb,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO;QAClD;IACJ;IAEQ,8BAA8B,GAAA;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACf,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAe,CAAC;QAC1E;aAAO;AACH,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAG,IAAI,CAAC,KAA2B,CAAC,KAAK,CAAC;AACzF,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAG,IAAI,CAAC,KAA2B,CAAC,KAAK,CAAC;QACjG;AAEA,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,WAAW,EAAE;QACtB;IACJ;AAEQ,IAAA,aAAa,CAAC,KAAmB,EAAA;AACrC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,WAAW,GAAG,CAAC;AACzG,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,GAAG,CAAC;AACnG,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,IAAI;AACpF,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAE9D,IAAI,UAAU,KAAK,QAAQ,IAAI,QAAQ,GAAG,QAAQ,EAAE;AAChD,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE;QACtC;aAAO,IAAI,UAAU,KAAK,QAAQ,IAAI,QAAQ,GAAG,QAAQ,EAAE;AACvD,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE;QACxC;AAAO,aAAA,IAAI,KAAK,KAAK,UAAU,EAAE;AAC7B,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE;QACxC;aAAO;AACH,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE;QACtC;IACJ;IAEQ,eAAe,GAAA;AACnB,QAAA,IAAI,YAAY;QAChB,MAAM,aAAa,GAAG,GAAG;AAEzB,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;;YAExB,YAAY,GAAG,EAAE,aAAa,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE;QACzE;aAAO;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;AAChD,YAAA,YAAY,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC;AACxB,gBAAA,CAAC,aAAa,KAAK,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI;kBAClD,IAAI;QACd;QAEA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,kBAAkB,EAAE,CAAA,GAAA,EAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG,CAAC;AAC1G,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC,UAAU,IAAI,YAAY,KAAK,IAAI,GAAG,QAAQ,GAAG,SAAS,CAAC;IACnI;IAEQ,oBAAoB,GAAA;AACxB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf;QACJ;AAEA,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACvB,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;AACrC,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;QAChC;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;AAClC,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI;AAC1B,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE;QACxC;AAEA,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI;QAChC;IAEJ;IAEQ,oBAAoB,GAAA;AACxB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf;QACJ;QAEA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC;AAChE,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AAC7E,YAAA,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;AAClC,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK;AAC3B,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,gBAAA,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE;YACxC;AAEA,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,gBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK;YACjC;AACJ,QAAA,CAAC,CAAC;IACN;IAEQ,sBAAsB,GAAA;QAC1B,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,oBAAoB,EAAE;IAC/B;AAEQ,IAAA,yBAAyB,CAAC,KAAc,EAAA;AAC5C,QAAA,MAAM,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;AAE5B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,KAAK;QACnC;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,KAAK;AAE7B,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;IAC7B;IAEQ,SAAS,CAAC,IAAY,EAAE,SAAmB,EAAA;AAC/C,QAAA,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAC;IAC/H;AAEQ,IAAA,eAAe,CAAC,KAAa,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,EAAA;QACvE,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;IACnG;AAEQ,IAAA,mBAAmB,CAAC,KAAU,EAAA;AAClC,QAAA,OAAO,CAAC,KAAK,IAAI,KAAK,KAAK,CAAC;IAChC;AAEA;;;;AAIG;AACK,IAAA,eAAe,CAAC,KAAiC,EAAA;AACrD,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,MAAM,GAAG;AACV,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAE,KAA2B,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI;AAC7E,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAE,KAA2B,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;aAC5E;QACL;aAAO;AACH,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAE,KAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI;QACvE;IACJ;IAEQ,WAAW,GAAA;QACf,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC;QAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC;AACxD,QAAA,MAAM,WAAW,GAAG,UAAU,GAAG,YAAY;QAE7C,IAAI,kBAAkB,GAAG,YAAY;AACrC,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,WAAW,EAAE;AACb,gBAAA,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,WAAW,GAAG,YAAY,IAAI,GAAG,CAAC;YAC3E;AAEA,YAAA,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,kBAAkB,GAAG,kBAAkB;AAC7E,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,EAAE,CAAA,OAAA,EAAU,WAAW,gBAAgB,kBAAkB,CAAA,EAAA,CAAI,CAAC;QACjI;aAAO;AACH,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,EAAE,UAAU,UAAU,CAAA,CAAA,CAAG,CAAC;QAC7F;IACJ;AAEQ,IAAA,iBAAiB,CAAC,KAA8B,EAAA;QACpD,IAAI,CAAC,KAAK,EAAE;YACR;QACJ;AAEA,QAAA,KAAK,CAAC;aACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACxC,aAAA,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AAE7D,QAAA,KAAK,CAAC;aACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACxC,SAAS,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;IACnD;AAEQ,IAAA,YAAY,CAAC,KAA8B,EAAA;QAC/C,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC;IACjD;AAEQ,IAAA,eAAe,CAAC,QAAQ,EAAA;AAC5B,QAAA,MAAM,0BAA0B,GAAY,CAAC,IAAI,CAAC,OAAO,IAAI,QAAQ,KAAK,IAAI,CAAC,KAAK;AACpF,QAAA,MAAM,4BAA4B,GAAY,IAAI,CAAC,OAAO;aACpD,QAA8B,CAAC,KAAK,KAAM,IAAI,CAAC,KAA2B,CAAC,KAAK;gBAC7E,QAA8B,CAAC,KAAK,KAAM,IAAI,CAAC,KAA2B,CAAC,KAAK,CAAC;QAE1F,OAAO,0BAA0B,IAAI,4BAA4B;IACrE;AAEQ,IAAA,eAAe,CAAC,QAAoC,EAAA;AACxD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IAC1D;8GAz1CS,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAAA,EAAA,8BAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EA2NP,gBAAgB,CAAA,EAAA,UAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EA6BhB,gBAAgB,yNA+ShB,gBAAgB,CAAA,EAAA,iBAAA,EAAA,CAAA,mBAAA,EAAA,mBAAA,EAShB,gBAAgB,CAAA,EAAA,mBAAA,EAAA,CAAA,qBAAA,EAAA,qBAAA,EAShB,gBAAgB,CAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,SAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,SAAA,EA9jBzB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAkD3E,6BAA6B,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,WAAW,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAMlD,2BAA2B,2BAAU,WAAW,EAAA,EAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAMhD,6BAA6B,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,WAAW,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAomBlD,uBAAuB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAMvB,sBAAsB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxsBxC,kiHAoGA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjEc,iBAAiB,0QAAE,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,uBAAuB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,8BAAA,EAAA,UAAA,EAAA,OAAA,EAAA,cAAA,EAAA,MAAA,EAAA,aAAA,EAAA,SAAA,EAAA,MAAA,EAAA,eAAA,EAAA,KAAA,EAAA,KAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,IAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEtF,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;gCACK,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAA,kBAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA,QAAA,EAC/E,YAAY,EAAA,OAAA,EAEb,CAAC,iBAAiB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,iBAAiB,CAAC,EAAA,QAAA,EAAA,kiHAAA,EAAA;;sBAyC/F,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAMnC,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,6BAA6B,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;;sBAMjE,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,2BAA2B,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;;sBAM/D,YAAY;uBAAC,6BAA6B,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE;;sBAMhF,WAAW;uBAAC,kBAAkB;;sBAU9B,WAAW;uBAAC,SAAS;;sBACrB;;sBASA;;sBAMA,WAAW;uBAAC,4BAA4B;;sBAexC;;sBAkCA;;sBA4CA;;sBAqCA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBA6BrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBA8CrC;;sBA8CA;;sBAiDA;;sBAuCA;;sBAoDA;;sBAgBA;;sBA6BA;;sBA0BA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBASrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBASrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAYrC;;sBAYA;;sBAsBA;;sBAcA;;sBAcA;;sBAcA;;sBAMA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAMnC,YAAY;uBAAC,uBAAuB;;sBAMpC,YAAY;uBAAC,sBAAsB;;sBAoDnC,YAAY;uBAAC,OAAO;;sBA+CpB;;sBAuCA;;sBAkRA,YAAY;uBAAC,aAAa,EAAE,CAAC,QAAQ,CAAC;;sBAsBtC,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;;;AEpnCzC;AACO,MAAM,qBAAqB,GAAG;IACjC,kBAAkB;IAClB,6BAA6B;IAC7B,2BAA2B;IAC3B;;;ACRJ;;;AAGG;MASU,eAAe,CAAA;8GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAf,eAAe,EAAA,OAAA,EAAA,CAAAC,kBAAA,EAAAC,6BAAA,EAAAC,2BAAA,EAAAC,6BAAA,CAAA,EAAA,OAAA,EAAA,CAAAH,kBAAA,EAAAC,6BAAA,EAAAC,2BAAA,EAAAC,6BAAA,CAAA,EAAA,CAAA,CAAA;+GAAf,eAAe,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAR3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;AACL,wBAAA,GAAG;AACN,qBAAA;AACD,oBAAA,OAAO,EAAE;AACL,wBAAA,GAAG;AACN;AACJ,iBAAA;;;ACdD;;AAEG;;;;"}