{"version":3,"file":"deja-js-component-mouse-dragdrop.mjs","sources":["../../../../projects/deja-js/component/mouse-dragdrop/mouse-dragdrop.service.ts","../../../../projects/deja-js/component/mouse-dragdrop/mouse-dragdrop-cursor.component.ts","../../../../projects/deja-js/component/mouse-dragdrop/mouse-dragdrop-cursor.component.html","../../../../projects/deja-js/component/mouse-dragdrop/mouse-draggable.directive.ts","../../../../projects/deja-js/component/mouse-dragdrop/mouse-droppable.directive.ts","../../../../projects/deja-js/component/mouse-dragdrop/mouse-drop-cursor-infos.interface.ts","../../../../projects/deja-js/component/mouse-dragdrop/mouse-drag-cursor-infos.interface.ts","../../../../projects/deja-js/component/mouse-dragdrop/mouse-dragdrop-context.interface.ts","../../../../projects/deja-js/component/mouse-dragdrop/index.ts","../../../../projects/deja-js/component/mouse-dragdrop/deja-js-component-mouse-dragdrop.ts"],"sourcesContent":["/*\n *  @license\n *  Copyright Hôpitaux Universitaires de Genève. All Rights Reserved.\n *\n *  Use of this source code is governed by an Apache-2.0 license that can be\n *  found in the LICENSE file at https://github.com/DSI-HUG/dejajs-components/blob/master/LICENSE\n */\n\n/**\n * Dragdrop service for mouse drag and drop\n */\nimport { Injectable } from '@angular/core';\nimport { Destroy } from '@deja-js/component/core';\nimport { BehaviorSubject, filter, takeUntil, tap } from 'rxjs';\n\nimport { IDragCursorInfos } from './mouse-drag-cursor-infos.interface';\nimport { IDragDropContext } from './mouse-dragdrop-context.interface';\nimport { IDropCursorInfos } from './mouse-drop-cursor-infos.interface';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class DejaMouseDragDropService extends Destroy {\n    public dragCursor$ = new BehaviorSubject<IDragCursorInfos>(null);\n    public dropCursor$ = new BehaviorSubject<IDropCursorInfos>(null);\n    public dragging$ = new BehaviorSubject<boolean>(false);\n\n    private _context = {} as IDragDropContext;\n    private _isDragging = false;\n\n    public constructor() {\n        super();\n\n        console.warn('@deja-js/component/mouse-dragdrop is deprecated, and will be removed in a further version. Please use @deja-js/component/v2/mouse-dragdrop.');\n\n        this.dragging$.pipe(\n            tap(value => this._isDragging = value),\n            filter(value => !value),\n            takeUntil(this.destroyed$)\n        ).subscribe(() => this._context = {});\n    }\n\n    public get isDragging(): boolean {\n        return this._isDragging;\n    }\n\n    public set context(value: IDragDropContext) {\n        this._context = value;\n    }\n\n    public get context(): IDragDropContext {\n        return this._context;\n    }\n}\n","/*\n *  @license\n *  Copyright Hôpitaux Universitaires de Genève. All Rights Reserved.\n *\n *  Use of this source code is governed by an Apache-2.0 license that can be\n *  found in the LICENSE file at https://github.com/DSI-HUG/dejajs-components/blob/master/LICENSE\n */\n\nimport { Component, ElementRef, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { Destroy } from '@deja-js/component/core';\nimport { Position } from '@deja-js/component/core/graphics';\nimport { BehaviorSubject, combineLatestWith, delay, filter, takeUntil, tap } from 'rxjs';\n\nimport { IDragCursorInfos } from './mouse-drag-cursor-infos.interface';\nimport { DejaMouseDragDropService } from './mouse-dragdrop.service';\n\n@Component({\n    encapsulation: ViewEncapsulation.None,\n    selector: 'deja-mouse-dragdrop-cursor',\n    styleUrls: [\n        './mouse-dragdrop-cursor.component.scss'\n    ],\n    templateUrl: './mouse-dragdrop-cursor.component.html'\n})\nexport class DejaMouseDragDropCursorComponent extends Destroy {\n    @ViewChild('block', { static: true }) private icon: ElementRef<HTMLElement>;\n    @ViewChild('content', { static: true }) private content: ElementRef<HTMLElement>;\n    private position$ = new BehaviorSubject<Position>(null);\n    private cursor$ = new BehaviorSubject<IDragCursorInfos>(null);\n    private currentCursor: IDragCursorInfos;\n\n    public constructor(elementRef: ElementRef, private dragDropService: DejaMouseDragDropService) {\n        super();\n\n        const element = elementRef.nativeElement as HTMLElement;\n\n        this.position$.pipe(\n            takeUntil(this.destroyed$)\n        ).subscribe(pos => {\n            element.style.left = pos ? `${pos.left}px` : '-1000px';\n            element.style.top = pos ? `${pos.top}px` : '-1000px';\n        });\n\n        // Hide\n        this.cursor$.pipe(\n            filter(cursor => !cursor),\n            tap(cursor => {\n                if (this.currentCursor) {\n                    if (this.contentElement) {\n                        this.contentElement.style.opacity = '0';\n                    }\n                    if (this.iconElement) {\n                        this.iconElement.style.opacity = '0';\n                    }\n                }\n                this.currentCursor = cursor;\n            }),\n            delay(300),\n            takeUntil(this.destroyed$)\n        ).subscribe(() => {\n            this.position$.next(null);\n            element.style.display = 'none';\n        });\n\n        // Show\n        this.cursor$.pipe(\n            filter(cursor => !!cursor),\n            tap(cursor => {\n                element.style.display = '';\n                if (this.contentElement) {\n                    this.contentElement.style.opacity = '0';\n                }\n                if (this.iconElement) {\n                    this.iconElement.style.opacity = '0';\n                }\n                this.currentCursor = cursor;\n            }),\n            filter(cursor => !cursor.className || cursor.className !== 'hidden'),\n            tap(cursor => {\n                if (cursor.html) {\n                    element.className = cursor.className;\n                    if (this.contentElement) {\n                        this.contentElement.innerHTML = cursor.html;\n                        this.contentElement.style.width = `${cursor.width || 48}px`;\n                        this.contentElement.style.height = `${cursor.height || 48}px`;\n                    }\n                } else if (this.iconElement) {\n                    this.iconElement.style.opacity = '1';\n                }\n            }),\n            delay(1),\n            takeUntil(this.destroyed$)\n        ).subscribe(cursor => {\n            if (!!cursor.html && this.contentElement) {\n                this.contentElement.style.opacity = '1';\n            }\n        });\n\n        this.dragDropService.dragCursor$.pipe(\n            combineLatestWith(this.dragDropService.dropCursor$),\n            takeUntil(this.destroyed$)\n        ).subscribe(([dragCursor, dropCursor]) => {\n            const cursor = (dragCursor || dropCursor) && {\n                className: dropCursor?.className || dragCursor?.className,\n                html: dropCursor?.html || dragCursor?.html || (dropCursor && dragCursor?.originalHtml),\n                width: dropCursor?.width || dragCursor?.width,\n                height: dropCursor?.height || dragCursor?.height,\n                position: dragCursor?.position,\n                originalEvent: dragCursor?.originalEvent\n            } as IDragCursorInfos;\n\n            if (cursor?.html !== this.currentCursor?.html || cursor?.className !== this.currentCursor?.className || cursor?.width !== this.currentCursor?.width || cursor?.height !== this.currentCursor?.height) {\n                // Update Content\n                this.cursor$.next(cursor);\n            } else {\n                // Update only Position\n                this.position$.next(cursor?.position);\n            }\n        });\n    }\n\n    private get iconElement(): HTMLElement {\n        return this.icon?.nativeElement;\n    }\n\n    private get contentElement(): HTMLElement {\n        return this.content?.nativeElement;\n    }\n}\n","<div id=\"block\" #block>\n    <mat-icon #block>block</mat-icon>\n</div>\n<div #content id=\"content\"></div>\n","/*\n *  @license\n *  Copyright Hôpitaux Universitaires de Genève. All Rights Reserved.\n *\n *  Use of this source code is governed by an Apache-2.0 license that can be\n *  found in the LICENSE file at https://github.com/DSI-HUG/dejajs-components/blob/master/LICENSE\n */\n\nimport { Directive, ElementRef, Input } from '@angular/core';\nimport { Destroy } from '@deja-js/component/core';\nimport { Position, Rect } from '@deja-js/component/core/graphics';\nimport { filter, fromEvent, map, mergeWith, Observable, of, Subject, switchMap, take, takeUntil, tap } from 'rxjs';\n\nimport { IDragCursorInfos } from './mouse-drag-cursor-infos.interface';\nimport { DejaMouseDragDropService } from './mouse-dragdrop.service';\nimport { IDragDropContext } from './mouse-dragdrop-context.interface';\n\n@Directive({\n    selector: '[deja-mouse-draggable]'\n})\nexport class DejaMouseDraggableDirective extends Destroy {\n    private _context: IDejaMouseDraggableContext;\n\n    @Input('deja-mouse-draggable')\n    public set context(value: IDejaMouseDraggableContext) {\n        this._context = value;\n    }\n\n    public get context(): IDejaMouseDraggableContext {\n        return this._context;\n    }\n\n    public constructor(elementRef: ElementRef, dragDropService: DejaMouseDragDropService) {\n        super();\n\n        const element = elementRef.nativeElement as HTMLElement;\n\n        const mouseLeaveEvent$ = fromEvent<MouseEvent>(element, 'mouseleave');\n        const mouseEnterEvent$ = fromEvent<MouseEvent>(element, 'mouseenter');\n        const mouseUpEvent$ = fromEvent<MouseEvent>(element.ownerDocument, 'mouseup');\n        const mouseDownEvent$ = fromEvent<MouseEvent>(element, 'mousedown');\n        const mouseMoveEvent$ = fromEvent<MouseEvent>(element.ownerDocument, 'mousemove');\n\n        mouseEnterEvent$.pipe(\n            filter(() => !dragDropService.isDragging),\n            switchMap(() => mouseDownEvent$.pipe(\n                filter(event => event.buttons === 1),\n                // eslint-disable-next-line rxjs/no-unsafe-takeuntil\n                takeUntil(mouseLeaveEvent$),\n                switchMap(event => {\n                    let target: HTMLElement;\n\n                    const match = (el: HTMLElement): boolean => el.tagName === this.context.target.toUpperCase() || el.id === this.context.target.substr(1) || el.hasAttribute(this.context.target.substring(1, this.context.target.length - 1));\n\n                    if (this.context) {\n                        if (this.context.target) {\n                            target = event.target as HTMLElement;\n                            // eslint-disable-next-line no-loops/no-loops\n                            while (target && !match(target)) {\n                                target = target.parentElement;\n                            }\n                        } else {\n                            target = element;\n                        }\n\n                        if (target && this.context.dragStart) {\n                            // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n                            const dragContext = this.context.dragStart(target);\n                            if (dragContext) {\n                                // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n                                if (dragContext.subscribe) {\n                                    const context$ = dragContext as Observable<IDragDropContext>;\n                                    // Observable\n                                    return context$.pipe(\n                                        take(1),\n                                        map((ddctx: IDragDropContext) => {\n                                            dragDropService.context = ddctx;\n                                            return ddctx && target; // Map to target if ddctx is defined\n                                        })\n                                    );\n                                } else {\n                                    // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n                                    dragDropService.context = dragContext;\n                                    return of(target);\n                                }\n                            }\n                        }\n                    }\n                    return of(null as HTMLElement);\n                }),\n                filter(target => !!target), // Start Drag if target is defined\n                switchMap(target => {\n                    dragDropService.dragging$.next(true);\n\n                    const moveUp$ = new Subject<void>();\n\n                    const enterWhileNotDragDropEvent$ = mouseEnterEvent$.pipe(\n                        filter(event => event.buttons !== 1 && dragDropService.isDragging)\n                    );\n\n                    const kill$ = mouseUpEvent$.pipe(\n                        mergeWith(enterWhileNotDragDropEvent$, moveUp$),\n                        take(1),\n                        tap(() => {\n                            dragDropService.dragCursor$.next(null);\n                            dragDropService.dragging$.next(false);\n                        }));\n\n                    return mouseMoveEvent$.pipe(\n                        // eslint-disable-next-line rxjs/no-unsafe-takeuntil\n                        takeUntil(kill$),\n                        tap(ev => {\n                            if (target && ev.buttons === 1) {\n                                const bounds = new Rect(element.getBoundingClientRect());\n                                const position = new Position(ev.pageX, ev.pageY);\n                                const html = bounds.containsPoint(position) ? target.innerHTML : undefined;\n\n                                // Post cursor infos to service\n                                dragDropService.dragCursor$.next({\n                                    position: position,\n                                    html: html,\n                                    originalHtml: target.innerHTML,\n                                    width: target.offsetWidth,\n                                    height: target.offsetHeight,\n                                    className: this.context.className,\n                                    originalEvent: ev\n                                } as IDragCursorInfos);\n\n                            } else {\n                                moveUp$.next();\n                            }\n\n                            // ev.preventDefault();\n                            return false;\n                        })\n                    );\n                })\n            )),\n            takeUntil(this.destroyed$)\n        ).subscribe();\n    }\n}\n\nexport interface IDejaMouseDraggableContext {\n    target?: string; // Tagname or #id or [attribute]\n    className?: string;\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    dragStart?: (element: HTMLElement) => any; // Return object or observable<object>\n}\n","/*\n *  @license\n *  Copyright Hôpitaux Universitaires de Genève. All Rights Reserved.\n *\n *  Use of this source code is governed by an Apache-2.0 license that can be\n *  found in the LICENSE file at https://github.com/DSI-HUG/dejajs-components/blob/master/LICENSE\n */\n\nimport { Directive, ElementRef, Input } from '@angular/core';\nimport { Destroy } from '@deja-js/component/core';\nimport { Position, Rect } from '@deja-js/component/core/graphics';\nimport { distinctUntilChanged, filter, Observable, of, switchMap, take, takeUntil, tap } from 'rxjs';\n\nimport { IDragCursorInfos } from './mouse-drag-cursor-infos.interface';\nimport { DejaMouseDragDropService } from './mouse-dragdrop.service';\nimport { IDragDropContext } from './mouse-dragdrop-context.interface';\nimport { IDropCursorInfos } from './mouse-drop-cursor-infos.interface';\n\n@Directive({\n    selector: '[deja-mouse-droppable]'\n})\nexport class DejaMouseDroppableDirective extends Destroy {\n    private _context: IDejaMouseDroppableContext;\n    private _dragContext: IDragDropContext;\n\n    @Input('deja-mouse-droppable')\n    public set context(value: IDejaMouseDroppableContext) {\n        this._context = value;\n    }\n\n    public get context(): IDejaMouseDroppableContext {\n        return this._context;\n    }\n\n    public constructor(elementRef: ElementRef, dragDropService: DejaMouseDragDropService) {\n        super();\n\n        const element = elementRef.nativeElement as HTMLElement;\n\n        const dragging$ = dragDropService.dragging$.pipe(\n            distinctUntilChanged()\n        );\n\n        const drop$ = dragDropService.dragCursor$.pipe(\n            filter(value => !!value),\n            switchMap(dragCursor => dragging$.pipe(\n                filter(value => !value),\n                take(1),\n                tap(() => {\n                    // console.log(`Drop ${!!this._dragContext}`)\n                    if (this._dragContext && this.context?.drop) {\n                        this.context.drop(this._dragContext, dragCursor);\n                    }\n                    this._dragContext = undefined;\n                    dragDropService.dropCursor$.next(null);\n                })\n            ))\n        );\n\n        dragging$.pipe(\n            filter(value => value),\n            switchMap(() =>\n                // console.log(`Drag ${!!this._dragContext}`)\n                dragDropService.dragCursor$.pipe(\n                    // eslint-disable-next-line rxjs/no-unsafe-takeuntil\n                    takeUntil(drop$),\n                    switchMap(dragCursor => {\n                        const bounds = new Rect(element.getBoundingClientRect());\n                        if (this.context && dragCursor) {\n                            const { pageX, pageY } = dragCursor.originalEvent;\n                            if (bounds.containsPoint(new Position(pageX, pageY))) {\n                                if (!this._dragContext) {\n                                    this._dragContext = dragDropService.context;\n                                    if (this.context.dragEnter) {\n                                        const dropContext$ = this.context.dragEnter(this._dragContext, dragCursor);\n                                        if (dropContext$) {\n                                            const dropContextObs$ = dropContext$ as Observable<IDropCursorInfos>;\n                                            if (dropContextObs$.subscribe) {\n                                                // Observable\n                                                return dropContextObs$;\n                                            } else {\n                                                return of(dropContext$ as IDropCursorInfos);\n                                            }\n                                        }\n                                    }\n                                } else if (this.context.dragOver) {\n                                    const overContext = this.context.dragOver(this._dragContext, dragCursor);\n                                    if (overContext) {\n                                        return of(overContext);\n                                    }\n                                }\n                            } else if (this._dragContext) {\n                                if (this.context?.dragLeave) {\n                                    this.context.dragLeave(this._dragContext);\n                                }\n                                this._dragContext = undefined;\n                                dragDropService.dropCursor$.next(null);\n                            }\n                        }\n\n                        return of(null);\n                    })\n                )\n            ),\n            filter(dropCursor => !!dropCursor),\n            takeUntil(this.destroyed$)\n        ).subscribe(dropCursor => dragDropService.dropCursor$.next(dropCursor));\n    }\n}\n\nexport interface IDejaMouseDroppableContext {\n    // eslint-disable-next-line rxjs/finnish\n    dragEnter?: (dragContext: IDragDropContext, dragCursor: IDragCursorInfos) => IDropCursorInfos | Observable<IDropCursorInfos>; // Return object or observable<object>\n    dragOver?: (dragContext: IDragDropContext, dragCursor: IDragCursorInfos) => IDropCursorInfos;\n    dragLeave?: (dragContext: IDragDropContext) => void;\n    drop?: (dragContext: IDragDropContext, dragCursor: IDragCursorInfos) => void;\n}\n","/*\n *  @license\n *  Copyright Hôpitaux Universitaires de Genève. All Rights Reserved.\n *\n *  Use of this source code is governed by an Apache-2.0 license that can be\n *  found in the LICENSE file at https://github.com/DSI-HUG/dejajs-components/blob/master/LICENSE\n */\n\nexport interface IDropCursorInfos {\n    html?: string;\n    width?: number;\n    height?: number;\n    className?: string;\n}\n","/*\n *  @license\n *  Copyright Hôpitaux Universitaires de Genève. All Rights Reserved.\n *\n *  Use of this source code is governed by an Apache-2.0 license that can be\n *  found in the LICENSE file at https://github.com/DSI-HUG/dejajs-components/blob/master/LICENSE\n */\n\nimport { Position } from '@deja-js/component/core/graphics';\n\nimport { IDropCursorInfos } from './mouse-drop-cursor-infos.interface';\n\nexport interface IDragCursorInfos extends IDropCursorInfos {\n    position: Position;\n    originalHtml: string;\n    originalEvent: MouseEvent;\n}\n","/*\n *  @license\n *  Copyright Hôpitaux Universitaires de Genève. All Rights Reserved.\n *\n *  Use of this source code is governed by an Apache-2.0 license that can be\n *  found in the LICENSE file at https://github.com/DSI-HUG/dejajs-components/blob/master/LICENSE\n */\n\nexport interface IDragDropContext {\n    [key: string]: unknown;\n}\n","/*\n *  @license\n *  Copyright Hôpitaux Universitaires de Genève. All Rights Reserved.\n *\n *  Use of this source code is governed by an Apache-2.0 license that can be\n *  found in the LICENSE file at https://github.com/DSI-HUG/dejajs-components/blob/master/LICENSE\n */\n\nimport { NgModule } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { DejaMouseDragDropCursorComponent } from './mouse-dragdrop-cursor.component';\nimport { DejaMouseDraggableDirective } from './mouse-draggable.directive';\nimport { DejaMouseDroppableDirective } from './mouse-droppable.directive';\n\n@NgModule({\n    declarations: [\n        DejaMouseDragDropCursorComponent,\n        DejaMouseDraggableDirective,\n        DejaMouseDroppableDirective\n    ],\n    imports: [\n        MatIconModule\n    ],\n    exports: [\n        DejaMouseDragDropCursorComponent,\n        DejaMouseDraggableDirective,\n        DejaMouseDroppableDirective\n    ],\n    providers: []\n})\nexport class DejaMouseDragDropModule { }\n\nexport * from './mouse-draggable.directive';\nexport * from './mouse-droppable.directive';\nexport * from './mouse-dragdrop-cursor.component';\nexport * from './mouse-drop-cursor-infos.interface';\nexport * from './mouse-drag-cursor-infos.interface';\nexport * from './mouse-dragdrop-context.interface';\nexport * from './mouse-dragdrop.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DejaMouseDragDropService"],"mappings":";;;;;;;;AAAA;;;;;;AAMG;AAgBG,MAAO,wBAAyB,SAAQ,OAAO,CAAA;AAQjD,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE,CAAC;AARL,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAmB,IAAI,CAAC,CAAC;AAC1D,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAmB,IAAI,CAAC,CAAC;AAC1D,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;QAE/C,IAAQ,CAAA,QAAA,GAAG,EAAsB,CAAC;QAClC,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AAKxB,QAAA,OAAO,CAAC,IAAI,CAAC,6IAA6I,CAAC,CAAC;QAE5J,IAAI,CAAC,SAAS,CAAC,IAAI,CACf,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,EACtC,MAAM,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,EACvB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC7B,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;KACzC;AAED,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;IAED,IAAW,OAAO,CAAC,KAAuB,EAAA;AACtC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACzB;AAED,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;;qHA9BQ,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,cAFrB,MAAM,EAAA,CAAA,CAAA;2FAET,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;ACrBD;;;;;;AAMG;AAkBG,MAAO,gCAAiC,SAAQ,OAAO,CAAA;IAOzD,WAAmB,CAAA,UAAsB,EAAU,eAAyC,EAAA;AACxF,QAAA,KAAK,EAAE,CAAC;QADuC,IAAe,CAAA,eAAA,GAAf,eAAe,CAA0B;AAJpF,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAW,IAAI,CAAC,CAAC;AAChD,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAmB,IAAI,CAAC,CAAC;AAM1D,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,aAA4B,CAAC;AAExD,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CACf,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC7B,CAAC,SAAS,CAAC,GAAG,IAAG;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,CAAG,EAAA,GAAG,CAAC,IAAI,CAAA,EAAA,CAAI,GAAG,SAAS,CAAC;AACvD,YAAA,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,CAAG,EAAA,GAAG,CAAC,GAAG,CAAA,EAAA,CAAI,GAAG,SAAS,CAAC;AACzD,SAAC,CAAC,CAAC;;AAGH,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CACb,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,EACzB,GAAG,CAAC,MAAM,IAAG;YACT,IAAI,IAAI,CAAC,aAAa,EAAE;gBACpB,IAAI,IAAI,CAAC,cAAc,EAAE;oBACrB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;AAC3C,iBAAA;gBACD,IAAI,IAAI,CAAC,WAAW,EAAE;oBAClB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;AACxC,iBAAA;AACJ,aAAA;AACD,YAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;AAChC,SAAC,CAAC,EACF,KAAK,CAAC,GAAG,CAAC,EACV,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC7B,CAAC,SAAS,CAAC,MAAK;AACb,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,YAAA,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;AACnC,SAAC,CAAC,CAAC;;QAGH,IAAI,CAAC,OAAO,CAAC,IAAI,CACb,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,EAC1B,GAAG,CAAC,MAAM,IAAG;AACT,YAAA,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;YAC3B,IAAI,IAAI,CAAC,cAAc,EAAE;gBACrB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;AAC3C,aAAA;YACD,IAAI,IAAI,CAAC,WAAW,EAAE;gBAClB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;AACxC,aAAA;AACD,YAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;SAC/B,CAAC,EACF,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,EACpE,GAAG,CAAC,MAAM,IAAG;YACT,IAAI,MAAM,CAAC,IAAI,EAAE;AACb,gBAAA,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;gBACrC,IAAI,IAAI,CAAC,cAAc,EAAE;oBACrB,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC;AAC5C,oBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,CAAG,EAAA,MAAM,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC;AAC5D,oBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,CAAG,EAAA,MAAM,CAAC,MAAM,IAAI,EAAE,IAAI,CAAC;AACjE,iBAAA;AACJ,aAAA;iBAAM,IAAI,IAAI,CAAC,WAAW,EAAE;gBACzB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;AACxC,aAAA;AACL,SAAC,CAAC,EACF,KAAK,CAAC,CAAC,CAAC,EACR,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC7B,CAAC,SAAS,CAAC,MAAM,IAAG;YACjB,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE;gBACtC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;AAC3C,aAAA;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CACjC,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,EACnD,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC7B,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,KAAI;AACrC,YAAA,MAAM,MAAM,GAAG,CAAC,UAAU,IAAI,UAAU,KAAK;AACzC,gBAAA,SAAS,EAAE,UAAU,EAAE,SAAS,IAAI,UAAU,EAAE,SAAS;AACzD,gBAAA,IAAI,EAAE,UAAU,EAAE,IAAI,IAAI,UAAU,EAAE,IAAI,KAAK,UAAU,IAAI,UAAU,EAAE,YAAY,CAAC;AACtF,gBAAA,KAAK,EAAE,UAAU,EAAE,KAAK,IAAI,UAAU,EAAE,KAAK;AAC7C,gBAAA,MAAM,EAAE,UAAU,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM;gBAChD,QAAQ,EAAE,UAAU,EAAE,QAAQ;gBAC9B,aAAa,EAAE,UAAU,EAAE,aAAa;aACvB,CAAC;AAEtB,YAAA,IAAI,MAAM,EAAE,IAAI,KAAK,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC,aAAa,EAAE,SAAS,IAAI,MAAM,EAAE,KAAK,KAAK,IAAI,CAAC,aAAa,EAAE,KAAK,IAAI,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE;;AAElM,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7B,aAAA;AAAM,iBAAA;;gBAEH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACzC,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAED,IAAA,IAAY,WAAW,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC;KACnC;AAED,IAAA,IAAY,cAAc,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC;KACtC;;6HAvGQ,gCAAgC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,gCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,ySCxB7C,iHAIA,EAAA,MAAA,EAAA,CAAA,4oBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FDoBa,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAR5C,SAAS;oCACS,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAC3B,4BAA4B,EAAA,QAAA,EAAA,iHAAA,EAAA,MAAA,EAAA,CAAA,4oBAAA,CAAA,EAAA,CAAA;qIAOQ,IAAI,EAAA,CAAA;sBAAjD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBACY,OAAO,EAAA,CAAA;sBAAtD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;AE1B1C;;;;;;AAMG;AAcG,MAAO,2BAA4B,SAAQ,OAAO,CAAA;IAYpD,WAAmB,CAAA,UAAsB,EAAE,eAAyC,EAAA;AAChF,QAAA,KAAK,EAAE,CAAC;AAER,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,aAA4B,CAAC;QAExD,MAAM,gBAAgB,GAAG,SAAS,CAAa,OAAO,EAAE,YAAY,CAAC,CAAC;QACtE,MAAM,gBAAgB,GAAG,SAAS,CAAa,OAAO,EAAE,YAAY,CAAC,CAAC;QACtE,MAAM,aAAa,GAAG,SAAS,CAAa,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QAC9E,MAAM,eAAe,GAAG,SAAS,CAAa,OAAO,EAAE,WAAW,CAAC,CAAC;QACpE,MAAM,eAAe,GAAG,SAAS,CAAa,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;AAElF,QAAA,gBAAgB,CAAC,IAAI,CACjB,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,EACzC,SAAS,CAAC,MAAM,eAAe,CAAC,IAAI,CAChC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC;;QAEpC,SAAS,CAAC,gBAAgB,CAAC,EAC3B,SAAS,CAAC,KAAK,IAAG;AACd,YAAA,IAAI,MAAmB,CAAC;AAExB,YAAA,MAAM,KAAK,GAAG,CAAC,EAAe,KAAc,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YAE7N,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,gBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACrB,oBAAA,MAAM,GAAG,KAAK,CAAC,MAAqB,CAAC;;AAErC,oBAAA,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AAC7B,wBAAA,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;AACjC,qBAAA;AACJ,iBAAA;AAAM,qBAAA;oBACH,MAAM,GAAG,OAAO,CAAC;AACpB,iBAAA;AAED,gBAAA,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;;oBAElC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACnD,oBAAA,IAAI,WAAW,EAAE;;wBAEb,IAAI,WAAW,CAAC,SAAS,EAAE;4BACvB,MAAM,QAAQ,GAAG,WAA2C,CAAC;;AAE7D,4BAAA,OAAO,QAAQ,CAAC,IAAI,CAChB,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,CAAC,KAAuB,KAAI;AAC5B,gCAAA,eAAe,CAAC,OAAO,GAAG,KAAK,CAAC;AAChC,gCAAA,OAAO,KAAK,IAAI,MAAM,CAAC;6BAC1B,CAAC,CACL,CAAC;AACL,yBAAA;AAAM,6BAAA;;AAEH,4BAAA,eAAe,CAAC,OAAO,GAAG,WAAW,CAAC;AACtC,4BAAA,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;AACrB,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACD,YAAA,OAAO,EAAE,CAAC,IAAmB,CAAC,CAAC;AACnC,SAAC,CAAC,EACF,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC;QAC1B,SAAS,CAAC,MAAM,IAAG;AACf,YAAA,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAErC,YAAA,MAAM,OAAO,GAAG,IAAI,OAAO,EAAQ,CAAC;YAEpC,MAAM,2BAA2B,GAAG,gBAAgB,CAAC,IAAI,CACrD,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,eAAe,CAAC,UAAU,CAAC,CACrE,CAAC;YAEF,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAC5B,SAAS,CAAC,2BAA2B,EAAE,OAAO,CAAC,EAC/C,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,MAAK;AACL,gBAAA,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,gBAAA,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACzC,CAAC,CAAC,CAAC;YAER,OAAO,eAAe,CAAC,IAAI;;YAEvB,SAAS,CAAC,KAAK,CAAC,EAChB,GAAG,CAAC,EAAE,IAAG;AACL,gBAAA,IAAI,MAAM,IAAI,EAAE,CAAC,OAAO,KAAK,CAAC,EAAE;oBAC5B,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;AACzD,oBAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;AAClD,oBAAA,MAAM,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;;AAG3E,oBAAA,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC;AAC7B,wBAAA,QAAQ,EAAE,QAAQ;AAClB,wBAAA,IAAI,EAAE,IAAI;wBACV,YAAY,EAAE,MAAM,CAAC,SAAS;wBAC9B,KAAK,EAAE,MAAM,CAAC,WAAW;wBACzB,MAAM,EAAE,MAAM,CAAC,YAAY;AAC3B,wBAAA,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;AACjC,wBAAA,aAAa,EAAE,EAAE;AACA,qBAAA,CAAC,CAAC;AAE1B,iBAAA;AAAM,qBAAA;oBACH,OAAO,CAAC,IAAI,EAAE,CAAC;AAClB,iBAAA;;AAGD,gBAAA,OAAO,KAAK,CAAC;aAChB,CAAC,CACL,CAAC;AACN,SAAC,CAAC,CACL,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC7B,CAAC,SAAS,EAAE,CAAC;KACjB;IArHD,IACW,OAAO,CAAC,KAAiC,EAAA;AAChD,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACzB;AAED,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;;wHAVQ,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4GAA3B,2BAA2B,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAHvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,wBAAwB;AACrC,iBAAA,CAAA;qIAKc,OAAO,EAAA,CAAA;sBADjB,KAAK;uBAAC,sBAAsB,CAAA;;;ACvBjC;;;;;;AAMG;AAeG,MAAO,2BAA4B,SAAQ,OAAO,CAAA;IAapD,WAAmB,CAAA,UAAsB,EAAE,eAAyC,EAAA;AAChF,QAAA,KAAK,EAAE,CAAC;AAER,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,aAA4B,CAAC;QAExD,MAAM,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC,IAAI,CAC5C,oBAAoB,EAAE,CACzB,CAAC;QAEF,MAAM,KAAK,GAAG,eAAe,CAAC,WAAW,CAAC,IAAI,CAC1C,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,EACxB,SAAS,CAAC,UAAU,IAAI,SAAS,CAAC,IAAI,CAClC,MAAM,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,EACvB,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,MAAK;;YAEL,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;gBACzC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AACpD,aAAA;AACD,YAAA,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;AAC9B,YAAA,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3C,SAAC,CAAC,CACL,CAAC,CACL,CAAC;AAEF,QAAA,SAAS,CAAC,IAAI,CACV,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,EACtB,SAAS,CAAC;;QAEN,eAAe,CAAC,WAAW,CAAC,IAAI;;QAE5B,SAAS,CAAC,KAAK,CAAC,EAChB,SAAS,CAAC,UAAU,IAAG;YACnB,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;AACzD,YAAA,IAAI,IAAI,CAAC,OAAO,IAAI,UAAU,EAAE;gBAC5B,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,aAAa,CAAC;AAClD,gBAAA,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE;AAClD,oBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACpB,wBAAA,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC;AAC5C,wBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;AACxB,4BAAA,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AAC3E,4BAAA,IAAI,YAAY,EAAE;gCACd,MAAM,eAAe,GAAG,YAA4C,CAAC;gCACrE,IAAI,eAAe,CAAC,SAAS,EAAE;;AAE3B,oCAAA,OAAO,eAAe,CAAC;AAC1B,iCAAA;AAAM,qCAAA;AACH,oCAAA,OAAO,EAAE,CAAC,YAAgC,CAAC,CAAC;AAC/C,iCAAA;AACJ,6BAAA;AACJ,yBAAA;AACJ,qBAAA;AAAM,yBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AAC9B,wBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AACzE,wBAAA,IAAI,WAAW,EAAE;AACb,4BAAA,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC;AAC1B,yBAAA;AACJ,qBAAA;AACJ,iBAAA;qBAAM,IAAI,IAAI,CAAC,YAAY,EAAE;AAC1B,oBAAA,IAAI,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE;wBACzB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC7C,qBAAA;AACD,oBAAA,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;AAC9B,oBAAA,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C,iBAAA;AACJ,aAAA;AAED,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AACpB,SAAC,CAAC,CACL,CACJ,EACD,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,EAClC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC7B,CAAC,SAAS,CAAC,UAAU,IAAI,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;KAC3E;IAlFD,IACW,OAAO,CAAC,KAAiC,EAAA;AAChD,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACzB;AAED,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;;wHAXQ,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4GAA3B,2BAA2B,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAHvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,wBAAwB;AACrC,iBAAA,CAAA;qIAMc,OAAO,EAAA,CAAA;sBADjB,KAAK;uBAAC,sBAAsB,CAAA;;;ACzBjC;;;;;;AAMG;;ACNH;;;;;;AAMG;;ACNH;;;;;;AAMG;;ACNH;;;;;;AAMG;MAyBU,uBAAuB,CAAA;;oHAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,iBAd5B,gCAAgC;QAChC,2BAA2B;QAC3B,2BAA2B,CAAA,EAAA,OAAA,EAAA,CAG3B,aAAa,CAAA,EAAA,OAAA,EAAA,CAGb,gCAAgC;QAChC,2BAA2B;QAC3B,2BAA2B,CAAA,EAAA,CAAA,CAAA;AAItB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,YAT5B,aAAa,CAAA,EAAA,CAAA,CAAA;2FASR,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAhBnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV,gCAAgC;wBAChC,2BAA2B;wBAC3B,2BAA2B;AAC9B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,aAAa;AAChB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,gCAAgC;wBAChC,2BAA2B;wBAC3B,2BAA2B;AAC9B,qBAAA;AACD,oBAAA,SAAS,EAAE,EAAE;AAChB,iBAAA,CAAA;;;AC9BD;;AAEG;;;;"}