{"version":3,"file":"fundamental-ngx-core-busy-indicator.mjs","sources":["../../../../libs/core/busy-indicator/tokens.ts","../../../../libs/core/busy-indicator/busy-indicator.component.ts","../../../../libs/core/busy-indicator/busy-indicator.component.html","../../../../libs/core/busy-indicator/busy-indicator-extended/busy-indicator-extended.directive.ts","../../../../libs/core/busy-indicator/busy-indicator.module.ts","../../../../libs/core/busy-indicator/fundamental-ngx-core-busy-indicator.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const FD_BUSY_INDICATOR_COMPONENT = new InjectionToken('FdBusyIndicatorComponent');\n","import { TAB } from '@angular/cdk/keycodes';\n\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    ViewEncapsulation,\n    booleanAttribute,\n    computed,\n    effect,\n    inject,\n    input,\n    viewChild\n} from '@angular/core';\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { FD_LANGUAGE_SIGNAL, TranslationResolver } from '@fundamental-ngx/i18n';\nimport { FD_BUSY_INDICATOR_COMPONENT } from './tokens';\n\nexport type BusyIndicatorSize = 's' | 'm' | 'l';\n\n@Component({\n    selector: 'fd-busy-indicator',\n    templateUrl: './busy-indicator.component.html',\n    styleUrl: './busy-indicator.component.scss',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    providers: [\n        {\n            provide: FD_BUSY_INDICATOR_COMPONENT,\n            useExisting: BusyIndicatorComponent\n        }\n    ],\n    host: {\n        '[attr.role]': \"loading() ? 'progressbar' : 'presentation'\",\n        '[attr.tabindex]': 'loading() ? 0 : -1',\n        '[attr.aria-busy]': 'loading()',\n        '[attr.aria-live]': 'ariaLive()',\n        '[attr.aria-label]': 'ariaLabel()',\n        '[attr.aria-valuetext]': 'loading() ? ariaValueText() || _ariaValueText() : null',\n        '[attr.aria-valuemin]': '0',\n        '[attr.aria-valuemax]': '100',\n        '[attr.title]': 'loading() ? title() || _titleValue() : null',\n        '[class.fd-busy-indicator__container]': 'true',\n        '[class.fd-busy-indicator__container--inline]': '!block()',\n        '(keydown)': 'hostFocusChangeHandler($event)'\n    }\n})\nexport class BusyIndicatorComponent {\n    /** Whether to display the loading indicator animation. */\n    readonly loading = input(false);\n\n    /** The size of the loading indicator, default will be medium */\n    readonly size = input<BusyIndicatorSize>('m');\n\n    /** Whether to use loader as block element */\n    readonly block = input(false);\n\n    /** Aria label attribute value. */\n    readonly ariaLabel = input<string | null>(null);\n\n    /** Aria-valuetext attribute value. */\n    readonly ariaValueText = input<string | null>(null);\n\n    /** title attribute value for tooltip. */\n    readonly title = input<string | undefined>(undefined);\n\n    /** add loading label value */\n    readonly label = input<string | undefined>(undefined);\n\n    /** Aria live attribute value. */\n    readonly ariaLive = input<'assertive' | 'polite' | 'off' | null>(null);\n\n    /** Whether to stop mouse wheel events when the busy indicator is displayed via loading=\"true\". */\n    readonly preventWheelEvents = input(false, { transform: booleanAttribute });\n\n    /** @hidden */\n    protected readonly fakeFocusElement = viewChild<ElementRef>('fakeFocusElement');\n\n    /** @hidden */\n    protected readonly _langSignal = inject(FD_LANGUAGE_SIGNAL);\n\n    /** @hidden */\n    protected readonly _translationResolver = inject(TranslationResolver);\n\n    /** @hidden */\n    protected readonly _ariaValueText = computed(() =>\n        this._translationResolver.resolve(this._langSignal(), 'coreBusyIndicator.defaultAriaValueText')\n    );\n\n    /** @hidden */\n    protected readonly _titleValue = computed(() =>\n        this._translationResolver.resolve(this._langSignal(), 'coreBusyIndicator.defaultTitle')\n    );\n\n    /** @hidden */\n    private readonly _elementRef = inject(ElementRef);\n\n    constructor() {\n        // Reactively manage wheel event listener based on preventWheelEvents signal\n        effect((onCleanup) => {\n            if (this.preventWheelEvents()) {\n                this._elementRef.nativeElement.addEventListener('wheel', this._wheelListener, {\n                    passive: false\n                });\n\n                onCleanup(() => {\n                    this._elementRef.nativeElement.removeEventListener('wheel', this._wheelListener, {\n                        passive: false\n                    });\n                });\n            }\n        });\n    }\n\n    /** @hidden If focus escapes busy container focus element after wrapped content */\n    protected hostFocusChangeHandler(event: KeyboardEvent): void {\n        if (this.loading() && KeyUtil.isKeyCode(event, TAB) && !event.shiftKey) {\n            const element = this.fakeFocusElement();\n            if (element) {\n                element.nativeElement.focus();\n            }\n        }\n    }\n\n    /** @hidden If busy container is navigated as \"previous focusable element\",\n     * focus busy indicator to prevent from focusing wrapped content */\n    protected fakeElementFocusHandler(event: FocusEvent): void {\n        if (this.loading() && event.relatedTarget !== this._elementRef.nativeElement) {\n            event.stopPropagation();\n            this._elementRef.nativeElement.focus();\n        }\n    }\n\n    /** @hidden */\n    private _wheelListener = (event: WheelEvent): void => {\n        if (this.preventWheelEvents() && this.loading()) {\n            event.preventDefault();\n            event.stopImmediatePropagation();\n        }\n    };\n}\n","<ng-content></ng-content>\n@if (loading()) {\n    <div\n        #busyIndicator\n        class=\"fd-busy-indicator\"\n        [class.fd-busy-indicator--l]=\"size() === 'l'\"\n        [class.fd-busy-indicator--m]=\"size() === 'm'\"\n        [class.fd-busy-indicator--s]=\"size() === 's'\"\n    >\n        <div class=\"fd-busy-indicator__circle\"></div>\n        <div class=\"fd-busy-indicator__circle\"></div>\n        <div class=\"fd-busy-indicator__circle\"></div>\n    </div>\n    @if (label()) {\n        <span class=\"fd-busy-indicator-extended__label\">{{ label() }}</span>\n    }\n    <div class=\"fd-busy-indicator__overlay\"></div>\n    <div #fakeFocusElement tabindex=\"0\" aria-hidden=\"true\" (focusin)=\"fakeElementFocusHandler($event)\"></div>\n}\n","import { Directive, ElementRef, contentChild, effect, inject } from '@angular/core';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\nimport { BusyIndicatorComponent } from '../busy-indicator.component';\nimport { FD_BUSY_INDICATOR_COMPONENT } from '../tokens';\n\nconst messageToastClass = 'fd-message-toast';\n\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: '[fd-busy-indicator-extended]',\n    standalone: true\n})\nexport class BusyIndicatorExtendedDirective implements HasElementRef {\n    /** @hidden */\n    public readonly elementRef = inject(ElementRef);\n\n    /** @hidden */\n    protected readonly busyIndicator = contentChild(FD_BUSY_INDICATOR_COMPONENT, {\n        read: BusyIndicatorComponent\n    });\n\n    /** @hidden */\n    constructor() {\n        effect(() => {\n            const indicator = this.busyIndicator();\n            if (indicator) {\n                this._appendCssToParent();\n            }\n        });\n    }\n\n    /** @hidden */\n    private _appendCssToParent(): void {\n        const hasLabel = this.busyIndicator()?.label();\n        if (!hasLabel) {\n            return;\n        }\n        const classList = this.elementRef.nativeElement.parentElement?.classList;\n        if (classList) {\n            classList.add('fd-busy-indicator-extended');\n            if (classList.contains(messageToastClass)) {\n                classList.add('fd-busy-indicator-extended--message-toast');\n            }\n        }\n    }\n}\n","import { NgModule } from '@angular/core';\nimport { BusyIndicatorExtendedDirective } from './busy-indicator-extended/busy-indicator-extended.directive';\nimport { BusyIndicatorComponent } from './busy-indicator.component';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    exports: [BusyIndicatorComponent, BusyIndicatorExtendedDirective],\n    imports: [BusyIndicatorComponent, BusyIndicatorExtendedDirective]\n})\nexport class BusyIndicatorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAEa,2BAA2B,GAAG,IAAI,cAAc,CAAC,0BAA0B;;MC8C3E,sBAAsB,CAAA;AAkD/B,IAAA,WAAA,GAAA;;AAhDS,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;;AAGtB,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAoB,GAAG,gDAAC;;AAGpC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,KAAK,iDAAC;;AAGpB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAgB,IAAI,qDAAC;;AAGtC,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAgB,IAAI,yDAAC;;AAG1C,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAqB,SAAS,iDAAC;;AAG5C,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAqB,SAAS,iDAAC;;AAG5C,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAwC,IAAI,oDAAC;;QAG7D,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAC,KAAK,+DAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;AAGxD,QAAA,IAAA,CAAA,gBAAgB,GAAG,SAAS,CAAa,kBAAkB,4DAAC;;AAG5D,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,kBAAkB,CAAC;;AAGxC,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,mBAAmB,CAAC;;QAGlD,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MACzC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,wCAAwC,CAAC,0DAClG;;QAGkB,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MACtC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,gCAAgC,CAAC,uDAC1F;;AAGgB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;;AAuCzC,QAAA,IAAA,CAAA,cAAc,GAAG,CAAC,KAAiB,KAAU;YACjD,IAAI,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;gBAC7C,KAAK,CAAC,cAAc,EAAE;gBACtB,KAAK,CAAC,wBAAwB,EAAE;YACpC;AACJ,QAAA,CAAC;;AAxCG,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACjB,YAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;AAC3B,gBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE;AAC1E,oBAAA,OAAO,EAAE;AACZ,iBAAA,CAAC;gBAEF,SAAS,CAAC,MAAK;AACX,oBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE;AAC7E,wBAAA,OAAO,EAAE;AACZ,qBAAA,CAAC;AACN,gBAAA,CAAC,CAAC;YACN;AACJ,QAAA,CAAC,CAAC;IACN;;AAGU,IAAA,sBAAsB,CAAC,KAAoB,EAAA;AACjD,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AACpE,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE;YACvC,IAAI,OAAO,EAAE;AACT,gBAAA,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE;YACjC;QACJ;IACJ;AAEA;AACmE;AACzD,IAAA,uBAAuB,CAAC,KAAiB,EAAA;AAC/C,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;YAC1E,KAAK,CAAC,eAAe,EAAE;AACvB,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE;QAC1C;IACJ;8GApFS,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,gCAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,4CAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,wDAAA,EAAA,oBAAA,EAAA,GAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,YAAA,EAAA,6CAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,4CAAA,EAAA,UAAA,EAAA,EAAA,EAAA,SAAA,EArBpB;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,2BAA2B;AACpC,gBAAA,WAAW,EAAE;AAChB;AACJ,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChCL,0vBAmBA,EAAA,MAAA,EAAA,CAAA,2hLAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FD6Ba,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBA5BlC,SAAS;+BACI,mBAAmB,EAAA,aAAA,EAGd,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EAAA,SAAA,EACL;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,2BAA2B;AACpC,4BAAA,WAAW,EAAA;AACd;qBACJ,EAAA,IAAA,EACK;AACF,wBAAA,aAAa,EAAE,4CAA4C;AAC3D,wBAAA,iBAAiB,EAAE,oBAAoB;AACvC,wBAAA,kBAAkB,EAAE,WAAW;AAC/B,wBAAA,kBAAkB,EAAE,YAAY;AAChC,wBAAA,mBAAmB,EAAE,aAAa;AAClC,wBAAA,uBAAuB,EAAE,wDAAwD;AACjF,wBAAA,sBAAsB,EAAE,GAAG;AAC3B,wBAAA,sBAAsB,EAAE,KAAK;AAC7B,wBAAA,cAAc,EAAE,6CAA6C;AAC7D,wBAAA,sCAAsC,EAAE,MAAM;AAC9C,wBAAA,8CAA8C,EAAE,UAAU;AAC1D,wBAAA,WAAW,EAAE;AAChB,qBAAA,EAAA,QAAA,EAAA,0vBAAA,EAAA,MAAA,EAAA,CAAA,2hLAAA,CAAA,EAAA;48BA+B2D,kBAAkB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AExElF,MAAM,iBAAiB,GAAG,kBAAkB;MAO/B,8BAA8B,CAAA;;AAUvC,IAAA,WAAA,GAAA;;AARgB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;;QAG5B,IAAA,CAAA,aAAa,GAAG,YAAY,CAAC,2BAA2B,0DACvE,IAAI,EAAE,sBAAsB,EAAA,CAC9B;QAIE,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;YACtC,IAAI,SAAS,EAAE;gBACX,IAAI,CAAC,kBAAkB,EAAE;YAC7B;AACJ,QAAA,CAAC,CAAC;IACN;;IAGQ,kBAAkB,GAAA;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE;QAC9C,IAAI,CAAC,QAAQ,EAAE;YACX;QACJ;QACA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,EAAE,SAAS;QACxE,IAAI,SAAS,EAAE;AACX,YAAA,SAAS,CAAC,GAAG,CAAC,4BAA4B,CAAC;AAC3C,YAAA,IAAI,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;AACvC,gBAAA,SAAS,CAAC,GAAG,CAAC,2CAA2C,CAAC;YAC9D;QACJ;IACJ;8GAhCS,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAKS,2BAA2B,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACjE,sBAAsB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FANvB,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAL1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAEP,oBAAA,QAAQ,EAAE,8BAA8B;AACxC,oBAAA,UAAU,EAAE;AACf,iBAAA;AAMmD,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,2BAA2B,CAAA,EAAA,EAAA,GAAE;AACzE,4BAAA,IAAI,EAAE;AACT,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACfL;;;AAGG;MAKU,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YAFlB,sBAAsB,EAAE,8BAA8B,CAAA,EAAA,OAAA,EAAA,CADtD,sBAAsB,EAAE,8BAA8B,CAAA,EAAA,CAAA,CAAA;+GAGvD,mBAAmB,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,sBAAsB,EAAE,8BAA8B,CAAC;AACjE,oBAAA,OAAO,EAAE,CAAC,sBAAsB,EAAE,8BAA8B;AACnE,iBAAA;;;ACXD;;AAEG;;;;"}