{"version":3,"file":"vendure-admin-ui-dashboard.mjs","sources":["../../src/lib/dashboard/src/components/dashboard-widget/dashboard-widget.component.ts","../../src/lib/dashboard/src/components/dashboard-widget/dashboard-widget.component.html","../../src/lib/dashboard/src/components/dashboard/dashboard.component.ts","../../src/lib/dashboard/src/components/dashboard/dashboard.component.html","../../src/lib/dashboard/src/dashboard.routes.ts","../../src/lib/dashboard/src/widgets/latest-orders-widget/latest-orders-widget.component.ts","../../src/lib/dashboard/src/widgets/latest-orders-widget/latest-orders-widget.component.html","../../src/lib/dashboard/src/widgets/order-chart-widget/order-chart-widget.component.ts","../../src/lib/dashboard/src/widgets/order-chart-widget/order-chart-widget.component.html","../../src/lib/dashboard/src/widgets/order-summary-widget/order-summary-widget.component.ts","../../src/lib/dashboard/src/widgets/order-summary-widget/order-summary-widget.component.html","../../src/lib/dashboard/src/default-widgets.ts","../../src/lib/dashboard/src/dashboard.module.ts","../../src/lib/dashboard/src/widgets/test-widget/test-widget.component.ts","../../src/lib/dashboard/src/widgets/test-widget/test-widget.component.html","../../src/lib/dashboard/src/widgets/welcome-widget/welcome-widget.component.ts","../../src/lib/dashboard/src/widgets/welcome-widget/welcome-widget.component.html","../../src/lib/dashboard/src/public_api.ts","../../src/lib/dashboard/src/vendure-admin-ui-dashboard.ts"],"sourcesContent":["import {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    ComponentRef,\n    Input,\n    OnDestroy,\n    ViewChild,\n    ViewContainerRef,\n} from '@angular/core';\nimport { DashboardWidgetConfig } from '@vendure/admin-ui/core';\n\n@Component({\n    selector: 'vdr-dashboard-widget',\n    templateUrl: './dashboard-widget.component.html',\n    styleUrls: ['./dashboard-widget.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false,\n})\nexport class DashboardWidgetComponent implements AfterViewInit, OnDestroy {\n    @Input() widgetConfig: DashboardWidgetConfig;\n\n    @ViewChild('portal', { read: ViewContainerRef })\n    private portal: ViewContainerRef;\n\n    private componentRef: ComponentRef<any>;\n\n    ngAfterViewInit(): void {\n        this.loadWidget();\n    }\n\n    private async loadWidget() {\n        const loadComponentResult = this.widgetConfig.loadComponent();\n        const componentType =\n            loadComponentResult instanceof Promise ? await loadComponentResult : loadComponentResult;\n        this.componentRef = this.portal.createComponent(componentType);\n        this.componentRef.changeDetectorRef.detectChanges();\n    }\n\n    ngOnDestroy() {\n        if (this.componentRef) {\n            this.componentRef.destroy();\n        }\n    }\n}\n","<vdr-card [title]=\"widgetConfig.title ?? '' | translate\">\n    <ng-template vdrCardControls>\n        <ng-content></ng-content>\n    </ng-template>\n    <ng-template #portal></ng-template>\n</vdr-card>\n","import { CdkDragDrop } from '@angular/cdk/drag-drop';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport {\n    DashboardWidgetConfig,\n    DashboardWidgetService,\n    DashboardWidgetWidth,\n    DataService,\n    LocalStorageService,\n    titleSetter,\n    WidgetLayout,\n    WidgetLayoutDefinition,\n} from '@vendure/admin-ui/core';\nimport { assertNever } from '@vendure/common/lib/shared-utils';\nimport { Observable } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\n\n@Component({\n    selector: 'vdr-dashboard',\n    templateUrl: './dashboard.component.html',\n    styleUrls: ['./dashboard.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false,\n})\nexport class DashboardComponent implements OnInit {\n    widgetLayout: WidgetLayout | undefined;\n    availableWidgets$: Observable<Array<{ id: string; config: DashboardWidgetConfig }>>;\n    private readonly deletionMarker = '__delete__';\n    private setTitle = titleSetter();\n    constructor(\n        private dashboardWidgetService: DashboardWidgetService,\n        private localStorageService: LocalStorageService,\n        private changedDetectorRef: ChangeDetectorRef,\n        private dataService: DataService,\n    ) {}\n\n    ngOnInit() {\n        this.availableWidgets$ = this.dataService.client.userStatus().stream$.pipe(\n            map(({ userStatus }) => userStatus.permissions),\n            map(permissions => this.dashboardWidgetService.getAvailableWidgets(permissions)),\n            tap(widgets => (this.widgetLayout = this.initLayout(widgets.map(w => w.id)))),\n        );\n        this.setTitle('breadcrumb.dashboard');\n    }\n\n    getClassForWidth(width: DashboardWidgetWidth): string {\n        switch (width) {\n            case 3:\n                return `clr-col-12 clr-col-sm-6 clr-col-lg-3`;\n            case 4:\n                return `clr-col-12 clr-col-sm-6 clr-col-lg-4`;\n            case 6:\n                return `clr-col-12 clr-col-lg-6`;\n            case 8:\n                return `clr-col-12 clr-col-lg-8`;\n            case 12:\n                return `clr-col-12`;\n            default:\n                assertNever(width);\n        }\n    }\n\n    getSupportedWidths(config: DashboardWidgetConfig): DashboardWidgetWidth[] {\n        return config.supportedWidths || [3, 4, 6, 8, 12];\n    }\n\n    setWidgetWidth(widget: WidgetLayout[number][number], width: DashboardWidgetWidth) {\n        widget.width = width;\n        this.recalculateLayout();\n    }\n\n    trackRow(index: number, row: WidgetLayout[number]) {\n        const id = row.map(item => `${item.id}:${item.width}`).join('|');\n        return id;\n    }\n\n    trackRowItem(index: number, item: WidgetLayout[number][number]) {\n        return item.config;\n    }\n\n    addWidget(id: string) {\n        const config = this.dashboardWidgetService.getWidgetById(id);\n        if (config) {\n            const width = this.getSupportedWidths(config)[0];\n            const widget: WidgetLayout[number][number] = {\n                id,\n                config,\n                width,\n            };\n            let targetRow: WidgetLayout[number];\n            if (this.widgetLayout && this.widgetLayout.length) {\n                targetRow = this.widgetLayout[this.widgetLayout.length - 1];\n            } else {\n                targetRow = [];\n                this.widgetLayout?.push(targetRow);\n            }\n            targetRow.push(widget);\n            this.recalculateLayout();\n        }\n    }\n\n    removeWidget(widget: WidgetLayout[number][number]) {\n        widget.id = this.deletionMarker;\n        this.recalculateLayout();\n    }\n\n    drop(event: CdkDragDrop<{ index: number }>) {\n        const { currentIndex, previousIndex, previousContainer, container } = event;\n        if (previousIndex === currentIndex && previousContainer.data.index === container.data.index) {\n            // Nothing changed\n            return;\n        }\n        if (this.widgetLayout) {\n            const previousLayoutRow = this.widgetLayout[previousContainer.data.index];\n            const newLayoutRow = this.widgetLayout[container.data.index];\n\n            previousLayoutRow.splice(previousIndex, 1);\n            newLayoutRow.splice(currentIndex, 0, event.item.data);\n            this.recalculateLayout();\n        }\n    }\n\n    private initLayout(availableIds: string[]): WidgetLayout {\n        const savedLayoutDef = this.localStorageService.get('dashboardWidgetLayout');\n        let layoutDef: WidgetLayoutDefinition | undefined;\n        if (savedLayoutDef) {\n            // validate all the IDs from the saved layout are still available\n            layoutDef = savedLayoutDef.filter(item => availableIds.includes(item.id));\n        }\n        return this.dashboardWidgetService.getWidgetLayout(layoutDef);\n    }\n\n    private recalculateLayout() {\n        if (this.widgetLayout) {\n            const flattened = this.widgetLayout\n                .reduce((flat, row) => [...flat, ...row], [])\n                .filter(item => item.id !== this.deletionMarker);\n            const newLayoutDef: WidgetLayoutDefinition = flattened.map(item => ({\n                id: item.id,\n                width: item.width,\n            }));\n            this.widgetLayout = this.dashboardWidgetService.getWidgetLayout(newLayoutDef);\n            this.localStorageService.set('dashboardWidgetLayout', newLayoutDef);\n            setTimeout(() => this.changedDetectorRef.markForCheck());\n        }\n    }\n}\n","<vdr-page-block>\n    <div class=\"widget-header mb-1\">\n        <vdr-dropdown>\n            <button class=\"btn btn-secondary btn-sm\" vdrDropdownTrigger>\n                <clr-icon shape=\"plus\"></clr-icon>\n                {{ 'dashboard.add-widget' | translate }}\n                <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\n            </button>\n            <vdr-dropdown-menu vdrPosition=\"bottom-right\">\n                <button\n                    vdrDropdownItem\n                    *ngFor=\"let widget of availableWidgets$ | async\"\n                    (click)=\"addWidget(widget.id)\"\n                >\n                    {{ (widget.config.title ?? widget.id) | translate }}\n                </button>\n            </vdr-dropdown-menu>\n        </vdr-dropdown>\n    </div>\n    <div cdkDropListGroup>\n        <div\n            class=\"clr-row dashboard-row\"\n            *ngFor=\"let row of widgetLayout; index as rowIndex; trackBy: trackRow\"\n            cdkDropList\n            (cdkDropListDropped)=\"drop($event)\"\n            cdkDropListOrientation=\"horizontal\"\n            [cdkDropListData]=\"{ index: rowIndex }\"\n        >\n            <div\n                *ngFor=\"let widget of row; trackBy: trackRowItem\"\n                class=\"dashboard-item\"\n                [ngClass]=\"getClassForWidth(widget.width)\"\n                cdkDrag\n                [cdkDragData]=\"widget\"\n            >\n                <vdr-dashboard-widget\n                    *vdrIfPermissions=\"widget.config.requiresPermissions || null\"\n                    [widgetConfig]=\"widget.config\"\n                >\n                    <div class=\"flex\">\n                        <div class=\"drag-handle\" cdkDragHandle>\n                            <clr-icon shape=\"drag-handle\" size=\"24\"></clr-icon>\n                        </div>\n                        <vdr-dropdown>\n                            <button class=\"icon-button\" vdrDropdownTrigger>\n                                <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\n                            </button>\n                            <vdr-dropdown-menu vdrPosition=\"bottom-right\">\n                                <h4 class=\"dropdown-header\">{{ 'dashboard.widget-resize' | translate }}</h4>\n                                <button\n                                    vdrDropdownItem\n                                    [disabled]=\"width === widget.width\"\n                                    *ngFor=\"let width of getSupportedWidths(widget.config)\"\n                                    (click)=\"setWidgetWidth(widget, width)\"\n                                >\n                                    {{ 'dashboard.widget-width' | translate : { width: width } }}\n                                </button>\n                                <div class=\"dropdown-divider\" role=\"separator\"></div>\n                                <button vdrDropdownItem (click)=\"removeWidget(widget)\">\n                                    <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\n                                    {{ 'dashboard.remove-widget' | translate }}\n                                </button>\n                            </vdr-dropdown-menu>\n                        </vdr-dropdown>\n                    </div>\n                </vdr-dashboard-widget>\n            </div>\n        </div>\n    </div>\n</vdr-page-block>\n","import { Routes } from '@angular/router';\n\nimport { DashboardComponent } from './components/dashboard/dashboard.component';\n\nexport const dashboardRoutes: Routes = [\n    {\n        path: '',\n        component: DashboardComponent,\n        pathMatch: 'full',\n    },\n];\n","import { ChangeDetectionStrategy, Component, NgModule, OnInit } from '@angular/core';\nimport {\n    CoreModule,\n    DataService,\n    GetLatestOrdersDocument,\n    GetLatestOrdersQuery,\n    GetOrderListQuery,\n    ItemOf,\n    SharedModule,\n    SortOrder,\n} from '@vendure/admin-ui/core';\nimport { gql } from 'apollo-angular';\nimport { Observable } from 'rxjs';\n\nconst GET_LATEST_ORDERS = gql`\n    query GetLatestOrders($options: OrderListOptions) {\n        orders(options: $options) {\n            items {\n                id\n                createdAt\n                updatedAt\n                type\n                orderPlacedAt\n                code\n                state\n                total\n                totalWithTax\n                currencyCode\n                customer {\n                    id\n                    firstName\n                    lastName\n                }\n            }\n        }\n    }\n`;\n\n@Component({\n    selector: 'vdr-latest-orders-widget',\n    templateUrl: './latest-orders-widget.component.html',\n    styleUrls: ['./latest-orders-widget.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false,\n})\nexport class LatestOrdersWidgetComponent implements OnInit {\n    latestOrders$: Observable<Array<ItemOf<GetLatestOrdersQuery, 'orders'>>>;\n    constructor(private dataService: DataService) {}\n\n    ngOnInit(): void {\n        this.latestOrders$ = this.dataService\n            .query(GetLatestOrdersDocument, {\n                options: {\n                    take: 10,\n                    filter: {\n                        active: { eq: false },\n                        state: { notIn: ['Cancelled', 'Draft'] },\n                    },\n                    sort: {\n                        orderPlacedAt: SortOrder.DESC,\n                    },\n                },\n            })\n            .refetchOnChannelChange()\n            .mapStream(data => data.orders.items);\n    }\n}\n\n@NgModule({\n    imports: [CoreModule, SharedModule],\n    declarations: [LatestOrdersWidgetComponent],\n})\nexport class LatestOrdersWidgetModule {}\n","<vdr-data-table-2 [items]=\"latestOrders$ | async\" id=\"latest-orders-widget-list\">\n    <vdr-dt2-column [heading]=\"'common.code' | translate\" id=\"code\">\n        <ng-template let-order=\"item\">\n            <a class=\"button-ghost\" [routerLink]=\"['/orders/', order.id]\"\n                ><span>{{ order.code }}</span>\n                <clr-icon shape=\"arrow right\"></clr-icon>\n            </a>\n        </ng-template>\n    </vdr-dt2-column>\n    <vdr-dt2-column [heading]=\"'order.state' | translate\" id=\"state\" [hiddenByDefault]=\"true\">\n        <ng-template let-order=\"item\">\n            <vdr-order-state-label [state]=\"order.state\"></vdr-order-state-label>\n        </ng-template>\n    </vdr-dt2-column>\n    <vdr-dt2-column [heading]=\"'customer.customer' | translate\" id=\"customer\" [hiddenByDefault]=\"true\">\n        <ng-template let-order=\"item\">\n            <vdr-customer-label [customer]=\"order.customer\"></vdr-customer-label>\n        </ng-template>\n    </vdr-dt2-column>\n    <vdr-dt2-column [heading]=\"'order.total' | translate\" id=\"total\">\n        <ng-template let-order=\"item\">\n            {{ order.totalWithTax | localeCurrency : order.currencyCode }}\n        </ng-template>\n    </vdr-dt2-column>\n    <vdr-dt2-column [heading]=\"'order.placed-at' | translate\" id=\"placed-at\">\n        <ng-template let-order=\"item\">\n            {{ order.orderPlacedAt | timeAgo }}\n        </ng-template>\n    </vdr-dt2-column>\n</vdr-data-table-2>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport {\n    ChartEntry,\n    ChartFormatOptions,\n    DataService,\n    GetOrderChartDataDocument,\n    MetricType,\n} from '@vendure/admin-ui/core';\nimport { gql } from 'apollo-angular';\nimport { BehaviorSubject, combineLatest, Observable, Subject, switchMap } from 'rxjs';\nimport { distinctUntilChanged, map, startWith } from 'rxjs/operators';\n\nexport const GET_ORDER_CHART_DATA = gql`\n    query GetOrderChartData($refresh: Boolean, $types: [MetricType!]!) {\n        metricSummary(input: { interval: Daily, types: $types, refresh: $refresh }) {\n            interval\n            type\n            entries {\n                label\n                value\n            }\n        }\n    }\n`;\n\n@Component({\n    selector: 'vdr-order-chart-widget',\n    templateUrl: './order-chart-widget.component.html',\n    styleUrls: ['./order-chart-widget.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false,\n})\nexport class OrderChartWidgetComponent implements OnInit {\n    constructor(private dataService: DataService) {}\n    metrics$: Observable<ChartEntry[]>;\n    refresh$ = new Subject<boolean>();\n    metricType$ = new BehaviorSubject(MetricType.OrderTotal);\n    MetricType = MetricType;\n\n    ngOnInit() {\n        const currencyCode$ = this.dataService.settings\n            .getActiveChannel()\n            .refetchOnChannelChange()\n            .mapStream(data => data.activeChannel.defaultCurrencyCode || undefined);\n        const uiState$ = this.dataService.client.uiState().mapStream(data => data.uiState);\n        const metricType$ = this.metricType$.pipe(distinctUntilChanged());\n        this.metrics$ = combineLatest(metricType$, currencyCode$, uiState$).pipe(\n            switchMap(([metricType, currencyCode, uiState]) =>\n                this.refresh$.pipe(\n                    startWith(false),\n                    switchMap(refresh =>\n                        this.dataService\n                            .query(GetOrderChartDataDocument, {\n                                types: [metricType],\n                                refresh,\n                            })\n                            .mapSingle(data => data.metricSummary)\n                            .pipe(\n                                map(metrics => {\n                                    const formatValueAs: 'currency' | 'number' =\n                                        metricType === MetricType.OrderCount ? 'number' : 'currency';\n                                    const locale = `${uiState.language}-${uiState.locale}`;\n\n                                    const formatOptions: ChartFormatOptions = {\n                                        formatValueAs,\n                                        currencyCode,\n                                        locale,\n                                    };\n                                    return (\n                                        metrics\n                                            .find(m => m.type === metricType)\n                                            ?.entries.map(entry => ({ ...entry, formatOptions })) ?? []\n                                    );\n                                }),\n                            ),\n                    ),\n                ),\n            ),\n        );\n    }\n\n    refresh() {\n        this.refresh$.next(true);\n    }\n}\n","<vdr-chart [entries]=\"metrics$ | async\" />\n<div class=\"flex\" *ngIf=\"metricType$ | async as activeMetricType\">\n    <button\n        class=\"button-small\"\n        (click)=\"metricType$.next(MetricType.OrderTotal)\"\n        [class.active]=\"activeMetricType === MetricType.OrderTotal\"\n    >\n        {{ 'dashboard.metric-order-total-value' | translate }}\n    </button>\n    <button\n        class=\"ml-1 button-small\"\n        (click)=\"metricType$.next(MetricType.OrderCount)\"\n        [class.active]=\"activeMetricType === MetricType.OrderCount\"\n    >\n        {{ 'dashboard.metric-number-of-orders' | translate }}\n    </button>\n    <button\n        class=\"ml-1 button-small\"\n        (click)=\"metricType$.next(MetricType.AverageOrderValue)\"\n        [class.active]=\"activeMetricType === MetricType.AverageOrderValue\"\n    >\n        {{ 'dashboard.metric-average-order-value' | translate }}\n    </button>\n    <div class=\"flex-spacer\"></div>\n    <button class=\"button-small\" (click)=\"refresh()\">\n        <clr-icon shape=\"refresh\"></clr-icon>\n    </button>\n</div>\n","import { ChangeDetectionStrategy, Component, NgModule, OnInit } from '@angular/core';\nimport { CoreModule, DataService, GetOrderSummaryDocument } from '@vendure/admin-ui/core';\nimport { gql } from 'apollo-angular';\nimport dayjs from 'dayjs';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { distinctUntilChanged, map, shareReplay, switchMap } from 'rxjs/operators';\n\nexport type Timeframe = 'day' | 'week' | 'month';\n\nexport const GET_ORDER_SUMMARY = gql`\n    query GetOrderSummary($start: DateTime!, $end: DateTime!) {\n        orders(options: { filter: { orderPlacedAt: { between: { start: $start, end: $end } } } }) {\n            totalItems\n            items {\n                id\n                totalWithTax\n                currencyCode\n            }\n        }\n    }\n`;\n\n@Component({\n    selector: 'vdr-order-summary-widget',\n    templateUrl: './order-summary-widget.component.html',\n    styleUrls: ['./order-summary-widget.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false,\n})\nexport class OrderSummaryWidgetComponent implements OnInit {\n    today = new Date();\n    yesterday = new Date(new Date().setDate(this.today.getDate() - 1));\n    totalOrderCount$: Observable<number>;\n    totalOrderValue$: Observable<number>;\n    currencyCode$: Observable<string | undefined>;\n    selection$ = new BehaviorSubject<{ timeframe: Timeframe; date?: Date }>({\n        timeframe: 'day',\n        date: this.today,\n    });\n    dateRange$: Observable<{ start: Date; end: Date }>;\n\n    constructor(private dataService: DataService) {}\n\n    ngOnInit(): void {\n        this.dateRange$ = this.selection$.pipe(\n            distinctUntilChanged(),\n            map(selection => ({\n                start: dayjs(selection.date).startOf(selection.timeframe).toDate(),\n                end: dayjs(selection.date).endOf(selection.timeframe).toDate(),\n            })),\n            shareReplay(1),\n        );\n        const orderSummary$ = this.dateRange$.pipe(\n            switchMap(({ start, end }) =>\n                this.dataService\n                    .query(GetOrderSummaryDocument, { start: start.toISOString(), end: end.toISOString() })\n                    .refetchOnChannelChange()\n                    .mapStream(data => data.orders),\n            ),\n            shareReplay(1),\n        );\n        this.totalOrderCount$ = orderSummary$.pipe(map(res => res.totalItems));\n        this.totalOrderValue$ = orderSummary$.pipe(\n            map(res => res.items.reduce((total, order) => total + order.totalWithTax, 0)),\n        );\n        this.currencyCode$ = this.dataService.settings\n            .getActiveChannel()\n            .refetchOnChannelChange()\n            .mapStream(data => data.activeChannel.defaultCurrencyCode || undefined);\n    }\n}\n\n@NgModule({\n    imports: [CoreModule],\n    declarations: [OrderSummaryWidgetComponent],\n})\nexport class OrderSummaryWidgetModule {}\n","<div class=\"stats\">\n    <div class=\"stat\">\n        <div class=\"stat-figure\">{{ totalOrderCount$ | async }}</div>\n        <div class=\"stat-label\">{{ 'dashboard.total-orders' | translate }}</div>\n    </div>\n    <div class=\"stat\">\n        <div class=\"stat-figure\">\n            {{ totalOrderValue$ | async | localeCurrency: (currencyCode$ | async) || undefined }}\n        </div>\n        <div class=\"stat-label\">{{ 'dashboard.total-order-value' | translate }}</div>\n    </div>\n</div>\n<div class=\"footer\">\n    <div class=\"flex\" *ngIf=\"selection$ | async as selection\">\n        <button class=\"button-small\" [class.active]=\"selection.date === today\" (click)=\"selection$.next({timeframe: 'day', date: today})\">\n            {{ 'dashboard.today' | translate }}\n        </button>\n        <button class=\"ml-1 button-small\" [class.active]=\"selection.date === yesterday\" (click)=\"selection$.next({timeframe: 'day', date: yesterday})\">\n            {{ 'dashboard.yesterday' | translate }}\n        </button>\n        <button class=\"ml-1 button-small\" [class.active]=\"selection.timeframe === 'week'\" (click)=\"selection$.next({timeframe: 'week'})\">\n            {{ 'dashboard.thisWeek' | translate }}\n        </button>\n        <button class=\"ml-1 button-small\" [class.active]=\"selection.timeframe === 'month'\" (click)=\"selection$.next({timeframe: 'month'})\">\n            {{ 'dashboard.thisMonth' | translate }}\n        </button>\n    </div>\n\n    <div class=\"date-range\" *ngIf=\"dateRange$ | async as range\">\n        {{ range.start | localeDate }} - {{ range.end | localeDate }}\n    </div>\n</div>\n","import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport { DashboardWidgetConfig, Permission, WidgetLayoutDefinition } from '@vendure/admin-ui/core';\n\nimport { LatestOrdersWidgetComponent } from './widgets/latest-orders-widget/latest-orders-widget.component';\nimport { OrderChartWidgetComponent } from './widgets/order-chart-widget/order-chart-widget.component';\nimport { OrderSummaryWidgetComponent } from './widgets/order-summary-widget/order-summary-widget.component';\n\nexport const DEFAULT_DASHBOARD_WIDGET_LAYOUT: WidgetLayoutDefinition = [\n    { id: 'metrics', width: 12 },\n    { id: 'orderSummary', width: 6 },\n    { id: 'latestOrders', width: 6 },\n];\n\nexport const DEFAULT_WIDGETS: { [id: string]: DashboardWidgetConfig } = {\n    metrics: {\n        title: _('dashboard.metrics'),\n        supportedWidths: [6, 8, 12],\n        loadComponent: () => OrderChartWidgetComponent,\n        requiresPermissions: [Permission.ReadOrder],\n    },\n    orderSummary: {\n        title: _('dashboard.orders-summary'),\n        loadComponent: () => OrderSummaryWidgetComponent,\n        supportedWidths: [4, 6, 8, 12],\n        requiresPermissions: [Permission.ReadOrder],\n    },\n    latestOrders: {\n        title: _('dashboard.latest-orders'),\n        loadComponent: () => LatestOrdersWidgetComponent,\n        supportedWidths: [6, 8, 12],\n        requiresPermissions: [Permission.ReadOrder],\n    },\n};\n","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { DashboardWidgetService, SharedModule } from '@vendure/admin-ui/core';\n\nimport { DashboardWidgetComponent } from './components/dashboard-widget/dashboard-widget.component';\nimport { DashboardComponent } from './components/dashboard/dashboard.component';\nimport { dashboardRoutes } from './dashboard.routes';\nimport { DEFAULT_DASHBOARD_WIDGET_LAYOUT, DEFAULT_WIDGETS } from './default-widgets';\nimport { OrderChartWidgetComponent } from './widgets/order-chart-widget/order-chart-widget.component';\n\n@NgModule({\n    imports: [SharedModule, RouterModule.forChild(dashboardRoutes)],\n    declarations: [DashboardComponent, DashboardWidgetComponent, OrderChartWidgetComponent],\n})\nexport class DashboardModule {\n    constructor(dashboardWidgetService: DashboardWidgetService) {\n        Object.entries(DEFAULT_WIDGETS).map(([id, config]) => {\n            if (!dashboardWidgetService.getWidgetById(id)) {\n                dashboardWidgetService.registerWidget(id, config);\n            }\n        });\n        if (dashboardWidgetService.getDefaultLayout().length === 0) {\n            dashboardWidgetService.setDefaultLayout(DEFAULT_DASHBOARD_WIDGET_LAYOUT);\n        }\n    }\n}\n","import { ChangeDetectionStrategy, Component, NgModule } from '@angular/core';\n\n@Component({\n    selector: 'vdr-test-widget',\n    templateUrl: './test-widget.component.html',\n    styleUrls: ['./test-widget.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false,\n})\nexport class TestWidgetComponent {}\n\n@NgModule({\n    declarations: [TestWidgetComponent],\n})\nexport class TestWidgetModule {}\n","<p>This is a test widget!</p>\n","import { ChangeDetectionStrategy, Component, NgModule, OnInit } from '@angular/core';\nimport {\n    ADMIN_UI_VERSION,\n    CoreModule,\n    DataService,\n    GetActiveAdministratorQuery,\n    getAppConfig,\n} from '@vendure/admin-ui/core';\nimport { Observable } from 'rxjs';\n\n@Component({\n    selector: 'vdr-welcome-widget',\n    templateUrl: './welcome-widget.component.html',\n    styleUrls: ['./welcome-widget.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false,\n})\nexport class WelcomeWidgetComponent implements OnInit {\n    version = ADMIN_UI_VERSION;\n    administrator$: Observable<GetActiveAdministratorQuery['activeAdministrator']>;\n    brand = getAppConfig().brand;\n    hideVendureBranding = getAppConfig().hideVendureBranding;\n    hideVersion = getAppConfig().hideVersion;\n\n    constructor(private dataService: DataService) {}\n\n    ngOnInit(): void {\n        this.administrator$ = this.dataService.administrator\n            .getActiveAdministrator()\n            .mapStream(data => data.activeAdministrator || null);\n    }\n}\n\n@NgModule({\n    imports: [CoreModule],\n    declarations: [WelcomeWidgetComponent],\n})\nexport class WelcomeWidgetModule {}\n","<div *ngIf=\"administrator$ | async as administrator\">\n    <h4 class=\"\">\n        Welcome, {{ administrator.firstName }} {{ administrator.lastName }}<br />\n        <small class=\"p5\">Last login: {{ administrator.user.lastLogin | timeAgo }}</small>\n    </h4>\n\n    <p class=\"p5\" *ngIf=\"!hideVendureBranding || !hideVersion\">\n        {{ hideVendureBranding ? '' : 'Vendure' }} {{ hideVersion ? '' : ('Admin UI v' + version) }}\n    </p>\n</div>\n<div class=\"placeholder\">\n    <clr-icon shape=\"line-chart\" size=\"128\"></clr-icon>\n</div>\n","// This file was generated by the build-public-api.ts script\nexport * from './components/dashboard/dashboard.component';\nexport * from './components/dashboard-widget/dashboard-widget.component';\nexport * from './dashboard.module';\nexport * from './dashboard.routes';\nexport * from './default-widgets';\nexport * from './widgets/latest-orders-widget/latest-orders-widget.component';\nexport * from './widgets/order-chart-widget/order-chart-widget.component';\nexport * from './widgets/order-summary-widget/order-summary-widget.component';\nexport * from './widgets/test-widget/test-widget.component';\nexport * from './widgets/welcome-widget/welcome-widget.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i5.DashboardWidgetComponent","i6","i3","i4","i5","switchMap","_"],"mappings":";;;;;;;;;;;;;;;;;MAmBa,wBAAwB,CAAA;IAQjC,eAAe,GAAA;QACX,IAAI,CAAC,UAAU,EAAE;IACrB;AAEQ,IAAA,MAAM,UAAU,GAAA;QACpB,MAAM,mBAAmB,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;AAC7D,QAAA,MAAM,aAAa,GACf,mBAAmB,YAAY,OAAO,GAAG,MAAM,mBAAmB,GAAG,mBAAmB;QAC5F,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC;AAC9D,QAAA,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE;IACvD;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;QAC/B;IACJ;+GAxBS,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAxB,wBAAwB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAGJ,gBAAgB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtBjD,+MAMA,EAAA,MAAA,EAAA,CAAA,oHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDaa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAAA,eAAA,EAGf,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,+MAAA,EAAA,MAAA,EAAA,CAAA,oHAAA,CAAA,EAAA;8BAGR,YAAY,EAAA,CAAA;sBAApB;gBAGO,MAAM,EAAA,CAAA;sBADb,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;;;MECtC,kBAAkB,CAAA;AAK3B,IAAA,WAAA,CACY,sBAA8C,EAC9C,mBAAwC,EACxC,kBAAqC,EACrC,WAAwB,EAAA;QAHxB,IAAA,CAAA,sBAAsB,GAAtB,sBAAsB;QACtB,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;QACnB,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,WAAW,GAAX,WAAW;QANN,IAAA,CAAA,cAAc,GAAG,YAAY;QACtC,IAAA,CAAA,QAAQ,GAAG,WAAW,EAAE;IAM7B;IAEH,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,CACtE,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,UAAU,CAAC,WAAW,CAAC,EAC/C,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,EAChF,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAChF;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IACzC;AAEA,IAAA,gBAAgB,CAAC,KAA2B,EAAA;QACxC,QAAQ,KAAK;AACT,YAAA,KAAK,CAAC;AACF,gBAAA,OAAO,sCAAsC;AACjD,YAAA,KAAK,CAAC;AACF,gBAAA,OAAO,sCAAsC;AACjD,YAAA,KAAK,CAAC;AACF,gBAAA,OAAO,yBAAyB;AACpC,YAAA,KAAK,CAAC;AACF,gBAAA,OAAO,yBAAyB;AACpC,YAAA,KAAK,EAAE;AACH,gBAAA,OAAO,YAAY;AACvB,YAAA;gBACI,WAAW,CAAC,KAAK,CAAC;;IAE9B;AAEA,IAAA,kBAAkB,CAAC,MAA6B,EAAA;AAC5C,QAAA,OAAO,MAAM,CAAC,eAAe,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACrD;IAEA,cAAc,CAAC,MAAoC,EAAE,KAA2B,EAAA;AAC5E,QAAA,MAAM,CAAC,KAAK,GAAG,KAAK;QACpB,IAAI,CAAC,iBAAiB,EAAE;IAC5B;IAEA,QAAQ,CAAC,KAAa,EAAE,GAAyB,EAAA;QAC7C,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAA,EAAG,IAAI,CAAC,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,KAAK,CAAA,CAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAChE,QAAA,OAAO,EAAE;IACb;IAEA,YAAY,CAAC,KAAa,EAAE,IAAkC,EAAA;QAC1D,OAAO,IAAI,CAAC,MAAM;IACtB;AAEA,IAAA,SAAS,CAAC,EAAU,EAAA;QAChB,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,EAAE,CAAC;QAC5D,IAAI,MAAM,EAAE;YACR,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAChD,YAAA,MAAM,MAAM,GAAiC;gBACzC,EAAE;gBACF,MAAM;gBACN,KAAK;aACR;AACD,YAAA,IAAI,SAA+B;YACnC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AAC/C,gBAAA,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;YAC/D;iBAAO;gBACH,SAAS,GAAG,EAAE;AACd,gBAAA,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC;YACtC;AACA,YAAA,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;YACtB,IAAI,CAAC,iBAAiB,EAAE;QAC5B;IACJ;AAEA,IAAA,YAAY,CAAC,MAAoC,EAAA;AAC7C,QAAA,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,cAAc;QAC/B,IAAI,CAAC,iBAAiB,EAAE;IAC5B;AAEA,IAAA,IAAI,CAAC,KAAqC,EAAA;QACtC,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,SAAS,EAAE,GAAG,KAAK;AAC3E,QAAA,IAAI,aAAa,KAAK,YAAY,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE;;YAEzF;QACJ;AACA,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;AACzE,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AAE5D,YAAA,iBAAiB,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;AAC1C,YAAA,YAAY,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YACrD,IAAI,CAAC,iBAAiB,EAAE;QAC5B;IACJ;AAEQ,IAAA,UAAU,CAAC,YAAsB,EAAA;QACrC,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,uBAAuB,CAAC;AAC5E,QAAA,IAAI,SAA6C;QACjD,IAAI,cAAc,EAAE;;AAEhB,YAAA,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7E;QACA,OAAO,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC,SAAS,CAAC;IACjE;IAEQ,iBAAiB,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC;AAClB,iBAAA,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE;AAC3C,iBAAA,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,cAAc,CAAC;YACpD,MAAM,YAAY,GAA2B,SAAS,CAAC,GAAG,CAAC,IAAI,KAAK;gBAChE,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,KAAK,EAAE,IAAI,CAAC,KAAK;AACpB,aAAA,CAAC,CAAC;YACH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC,YAAY,CAAC;YAC7E,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,uBAAuB,EAAE,YAAY,CAAC;YACnE,UAAU,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;QAC5D;IACJ;+GAzHS,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,0ECvB/B,o3GAsEA,EAAA,MAAA,EAAA,CAAA,m2BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,2BAAA,EAAA,6BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FD/Ca,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,eAAA,EAGR,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,o3GAAA,EAAA,MAAA,EAAA,CAAA,m2BAAA,CAAA,EAAA;;;AEjBd,MAAM,eAAe,GAAW;AACnC,IAAA;AACI,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,SAAS,EAAE,kBAAkB;AAC7B,QAAA,SAAS,EAAE,MAAM;AACpB,KAAA;;;ACKL,MAAM,iBAAiB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;CAsB5B;MASY,2BAA2B,CAAA;AAEpC,IAAA,WAAA,CAAoB,WAAwB,EAAA;QAAxB,IAAA,CAAA,WAAW,GAAX,WAAW;IAAgB;IAE/C,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;aACrB,KAAK,CAAC,uBAAuB,EAAE;AAC5B,YAAA,OAAO,EAAE;AACL,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,MAAM,EAAE;AACJ,oBAAA,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE;oBACrB,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE;AAC3C,iBAAA;AACD,gBAAA,IAAI,EAAE;oBACF,aAAa,EAAE,SAAS,CAAC,IAAI;AAChC,iBAAA;AACJ,aAAA;SACJ;AACA,aAAA,sBAAsB;aACtB,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IAC7C;+GApBS,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,qFC7CxC,69CA8BA,EAAA,MAAA,EAAA,CAAA,0GAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,OAAA,EAAA,cAAA,EAAA,aAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,oBAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,IAAA,EAAA,SAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDea,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAPvC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,EAAA,eAAA,EAGnB,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,69CAAA,EAAA,MAAA,EAAA,CAAA,0GAAA,CAAA,EAAA;;MA6BR,wBAAwB,CAAA;+GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,CA3BxB,2BAA2B,CAAA,EAAA,OAAA,EAAA,CAwB1B,UAAU,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA;gHAGzB,wBAAwB,EAAA,OAAA,EAAA,CAHvB,UAAU,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAGzB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC;oBACnC,YAAY,EAAE,CAAC,2BAA2B,CAAC;AAC9C,iBAAA;;;AE3DM,MAAM,oBAAoB,GAAG,GAAG,CAAA;;;;;;;;;;;;MAoB1B,yBAAyB,CAAA;AAClC,IAAA,WAAA,CAAoB,WAAwB,EAAA;QAAxB,IAAA,CAAA,WAAW,GAAX,WAAW;AAE/B,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAW;QACjC,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAC,UAAU,CAAC,UAAU,CAAC;QACxD,IAAA,CAAA,UAAU,GAAG,UAAU;IAJwB;IAM/C,QAAQ,GAAA;AACJ,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC;AAClC,aAAA,gBAAgB;AAChB,aAAA,sBAAsB;AACtB,aAAA,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,mBAAmB,IAAI,SAAS,CAAC;QAC3E,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC;QAClF,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACjE,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,WAAW,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC,IAAI,CACpE,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,KAC1C,IAAI,CAAC,QAAQ,CAAC,IAAI,CACd,SAAS,CAAC,KAAK,CAAC,EAChB,SAAS,CAAC,OAAO,IACb,IAAI,CAAC;aACA,KAAK,CAAC,yBAAyB,EAAE;YAC9B,KAAK,EAAE,CAAC,UAAU,CAAC;YACnB,OAAO;SACV;aACA,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa;AACpC,aAAA,IAAI,CACD,GAAG,CAAC,OAAO,IAAG;AACV,YAAA,MAAM,aAAa,GACf,UAAU,KAAK,UAAU,CAAC,UAAU,GAAG,QAAQ,GAAG,UAAU;YAChE,MAAM,MAAM,GAAG,CAAA,EAAG,OAAO,CAAC,QAAQ,CAAA,CAAA,EAAI,OAAO,CAAC,MAAM,CAAA,CAAE;AAEtD,YAAA,MAAM,aAAa,GAAuB;gBACtC,aAAa;gBACb,YAAY;gBACZ,MAAM;aACT;AACD,YAAA,QACI;iBACK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;kBAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,GAAG,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC,IAAI,EAAE;AAEvE,QAAA,CAAC,CAAC,CACL,CACR,CACJ,CACJ,CACJ;IACL;IAEA,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B;+GAnDS,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,mFChCtC,glCA4BA,EAAA,MAAA,EAAA,CAAA,kGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDIa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAPrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAAA,eAAA,EAGjB,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,glCAAA,EAAA,MAAA,EAAA,CAAA,kGAAA,CAAA,EAAA;;;AErBd,MAAM,iBAAiB,GAAG,GAAG,CAAA;;;;;;;;;;;;MAoBvB,2BAA2B,CAAA;AAYpC,IAAA,WAAA,CAAoB,WAAwB,EAAA;QAAxB,IAAA,CAAA,WAAW,GAAX,WAAW;AAX/B,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,IAAI,EAAE;QAClB,IAAA,CAAA,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAIlE,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAAwC;AACpE,YAAA,SAAS,EAAE,KAAK;YAChB,IAAI,EAAE,IAAI,CAAC,KAAK;AACnB,SAAA,CAAC;IAG6C;IAE/C,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAClC,oBAAoB,EAAE,EACtB,GAAG,CAAC,SAAS,KAAK;AACd,YAAA,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE;AAClE,YAAA,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE;AACjE,SAAA,CAAC,CAAC,EACH,WAAW,CAAC,CAAC,CAAC,CACjB;QACD,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CACtCE,WAAS,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,KACrB,IAAI,CAAC;AACA,aAAA,KAAK,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE;AACrF,aAAA,sBAAsB;AACtB,aAAA,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CACtC,EACD,WAAW,CAAC,CAAC,CAAC,CACjB;AACD,QAAA,IAAI,CAAC,gBAAgB,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;AACtE,QAAA,IAAI,CAAC,gBAAgB,GAAG,aAAa,CAAC,IAAI,CACtC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,KAAK,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAChF;AACD,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC;AACjC,aAAA,gBAAgB;AAChB,aAAA,sBAAsB;AACtB,aAAA,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,mBAAmB,IAAI,SAAS,CAAC;IAC/E;+GAxCS,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,qFC7BxC,snDAgCA,EAAA,MAAA,EAAA,CAAA,uaAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDHa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAPvC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,EAAA,eAAA,EAGnB,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,snDAAA,EAAA,MAAA,EAAA,CAAA,uaAAA,CAAA,EAAA;;MAiDR,wBAAwB,CAAA;+GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAxB,wBAAwB,EAAA,YAAA,EAAA,CA/CxB,2BAA2B,CAAA,EAAA,OAAA,EAAA,CA4C1B,UAAU,CAAA,EAAA,CAAA,CAAA;AAGX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,YAHvB,UAAU,CAAA,EAAA,CAAA,CAAA;;4FAGX,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,UAAU,CAAC;oBACrB,YAAY,EAAE,CAAC,2BAA2B,CAAC;AAC9C,iBAAA;;;AEpEM,MAAM,+BAA+B,GAA2B;AACnE,IAAA,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;AAC5B,IAAA,EAAE,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE;AAChC,IAAA,EAAE,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE;;AAG7B,MAAM,eAAe,GAA4C;AACpE,IAAA,OAAO,EAAE;AACL,QAAA,KAAK,EAAEI,MAAC,CAAC,mBAAmB,CAAC;AAC7B,QAAA,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AAC3B,QAAA,aAAa,EAAE,MAAM,yBAAyB;AAC9C,QAAA,mBAAmB,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;AAC9C,KAAA;AACD,IAAA,YAAY,EAAE;AACV,QAAA,KAAK,EAAEA,MAAC,CAAC,0BAA0B,CAAC;AACpC,QAAA,aAAa,EAAE,MAAM,2BAA2B;QAChD,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AAC9B,QAAA,mBAAmB,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;AAC9C,KAAA;AACD,IAAA,YAAY,EAAE;AACV,QAAA,KAAK,EAAEA,MAAC,CAAC,yBAAyB,CAAC;AACnC,QAAA,aAAa,EAAE,MAAM,2BAA2B;AAChD,QAAA,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AAC3B,QAAA,mBAAmB,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;AAC9C,KAAA;;;MCjBQ,eAAe,CAAA;AACxB,IAAA,WAAA,CAAY,sBAA8C,EAAA;AACtD,QAAA,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,KAAI;YACjD,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE;AAC3C,gBAAA,sBAAsB,CAAC,cAAc,CAAC,EAAE,EAAE,MAAM,CAAC;YACrD;AACJ,QAAA,CAAC,CAAC;QACF,IAAI,sBAAsB,CAAC,gBAAgB,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;AACxD,YAAA,sBAAsB,CAAC,gBAAgB,CAAC,+BAA+B,CAAC;QAC5E;IACJ;+GAVS,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,iBAFT,kBAAkB,EAAE,wBAAwB,EAAE,yBAAyB,aAD5E,YAAY,EAAAP,IAAA,CAAA,YAAA,CAAA,EAAA,CAAA,CAAA;gHAGb,eAAe,EAAA,OAAA,EAAA,CAHd,YAAY,EAAE,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAA,EAAA,CAAA,CAAA;;4FAGrD,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;AAC/D,oBAAA,YAAY,EAAE,CAAC,kBAAkB,EAAE,wBAAwB,EAAE,yBAAyB,CAAC;AAC1F,iBAAA;;;MCJY,mBAAmB,CAAA;+GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,4ECThC,iCACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDQa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,eAAA,EAGV,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,iCAAA,EAAA;;MAOR,gBAAgB,CAAA;+GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,iBALhB,mBAAmB,CAAA,EAAA,CAAA,CAAA;gHAKnB,gBAAgB,EAAA,CAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,YAAY,EAAE,CAAC,mBAAmB,CAAC;AACtC,iBAAA;;;MEIY,sBAAsB,CAAA;AAO/B,IAAA,WAAA,CAAoB,WAAwB,EAAA;QAAxB,IAAA,CAAA,WAAW,GAAX,WAAW;QAN/B,IAAA,CAAA,OAAO,GAAG,gBAAgB;AAE1B,QAAA,IAAA,CAAA,KAAK,GAAG,YAAY,EAAE,CAAC,KAAK;AAC5B,QAAA,IAAA,CAAA,mBAAmB,GAAG,YAAY,EAAE,CAAC,mBAAmB;AACxD,QAAA,IAAA,CAAA,WAAW,GAAG,YAAY,EAAE,CAAC,WAAW;IAEO;IAE/C,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC;AAClC,aAAA,sBAAsB;aACtB,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC;IAC5D;+GAbS,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,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,SAAA,EAAA,IAAA,EAAA,sBAAsB,+ECjBnC,6iBAaA,EAAA,MAAA,EAAA,CAAA,8FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDIa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,eAAA,EAGb,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,6iBAAA,EAAA,MAAA,EAAA,CAAA,8FAAA,CAAA,EAAA;;MAsBR,mBAAmB,CAAA;+GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAnB,mBAAmB,EAAA,YAAA,EAAA,CApBnB,sBAAsB,CAAA,EAAA,OAAA,EAAA,CAiBrB,UAAU,CAAA,EAAA,CAAA,CAAA;AAGX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YAHlB,UAAU,CAAA,EAAA,CAAA,CAAA;;4FAGX,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,UAAU,CAAC;oBACrB,YAAY,EAAE,CAAC,sBAAsB,CAAC;AACzC,iBAAA;;;AEpCD;;ACAA;;AAEG;;;;"}