tickera-angular-components 0.0.1-dev.20 → 0.0.1-dev.200
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/tickera-angular-components.mjs +7949 -1527
- package/fesm2022/tickera-angular-components.mjs.map +1 -1
- package/i18n/en.json +134 -4
- package/i18n/es.json +134 -4
- package/index.d.ts +2655 -468
- package/package.json +5 -2
- package/tickera.styles.css +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tickera-angular-components.mjs","sources":["../../../projects/tickera-angular-components/src/lib/i18n/transloco-loader.ts","../../../projects/tickera-angular-components/src/lib/i18n/language.utils.ts","../../../projects/tickera-angular-components/src/lib/config/tickera-components.config.ts","../../../projects/tickera-angular-components/src/lib/constants/alerts.ts","../../../projects/tickera-angular-components/src/lib/constants/buttons.ts","../../../projects/tickera-angular-components/src/lib/constants/form-error-messages.ts","../../../projects/tickera-angular-components/src/lib/constants/form-fields.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/admin-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/cities-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/countries-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/states-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/performances-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/shows-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/customers-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/price-zones-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/venues-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/product-types-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/product-tags-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/product-categories-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/products-api.routes.ts","../../../projects/tickera-angular-components/src/lib/enums/file-type.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/coupons/coupon-applicability.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/coupons/coupon-discount-type.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/coupons/coupon-status.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/corporate-bonds/corporate-bond-status.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/performances/performance-status.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/performances/performance-ticket-status.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/room-maps/room-map-element-orientation.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/room-maps/room-map-element-type.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/gift-bonds/gift-bond-status.enum.ts","../../../projects/tickera-angular-components/src/lib/types/orders/order-item-type.enum.ts","../../../projects/tickera-angular-components/src/lib/types/orders/order-status.enum.ts","../../../projects/tickera-angular-components/src/lib/helpers/get-formatted-customer.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/parse-json-to-form-data.ts","../../../projects/tickera-angular-components/src/lib/helpers/transform-image-to-file.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/format-cities-response-to-select.helper.ts","../../../projects/tickera-angular-components/src/lib/validators/date-validators.validator.ts","../../../projects/tickera-angular-components/src/lib/validators/must-match.validator.ts","../../../projects/tickera-angular-components/src/lib/services/api.service.ts","../../../projects/tickera-angular-components/src/lib/services/toast.service.ts","../../../projects/tickera-angular-components/src/lib/services/loading-modal.service.ts","../../../projects/tickera-angular-components/src/lib/services/delete-confirmation.service.ts","../../../projects/tickera-angular-components/src/lib/services/change-password-form.service.ts","../../../projects/tickera-angular-components/src/lib/services/date.service.ts","../../../projects/tickera-angular-components/src/lib/services/admin.service.ts","../../../projects/tickera-angular-components/src/lib/services/cities.service.ts","../../../projects/tickera-angular-components/src/lib/services/country.service.ts","../../../projects/tickera-angular-components/src/lib/services/states.service.ts","../../../projects/tickera-angular-components/src/lib/services/performance.service.ts","../../../projects/tickera-angular-components/src/lib/services/performances-list-events.service.ts","../../../projects/tickera-angular-components/src/lib/services/show.service.ts","../../../projects/tickera-angular-components/src/lib/services/customer.service.ts","../../../projects/tickera-angular-components/src/lib/services/price-zone.service.ts","../../../projects/tickera-angular-components/src/lib/services/price-zone-event.service.ts","../../../projects/tickera-angular-components/src/lib/services/price-zone-form-modal.service.ts","../../../projects/tickera-angular-components/src/lib/services/product-category.service.ts","../../../projects/tickera-angular-components/src/lib/services/product-tag.service.ts","../../../projects/tickera-angular-components/src/lib/services/product-type.service.ts","../../../projects/tickera-angular-components/src/lib/services/product.service.ts","../../../projects/tickera-angular-components/src/lib/interceptors/auth.interceptor.ts","../../../projects/tickera-angular-components/src/lib/components/buttons/app-button/app-button.component.ts","../../../projects/tickera-angular-components/src/lib/components/buttons/app-button/app-button.component.html","../../../projects/tickera-angular-components/src/lib/components/buttons/app-link-button/app-link-button.component.ts","../../../projects/tickera-angular-components/src/lib/components/buttons/app-link-button/app-link-button.component.html","../../../projects/tickera-angular-components/src/lib/components/feedback/alert/alert.component.ts","../../../projects/tickera-angular-components/src/lib/components/feedback/alert/alert.component.html","../../../projects/tickera-angular-components/src/lib/components/modals/modal/modal.component.ts","../../../projects/tickera-angular-components/src/lib/components/modals/modal/modal.component.html","../../../projects/tickera-angular-components/src/lib/components/feedback/loading-modal/loading-modal.component.ts","../../../projects/tickera-angular-components/src/lib/components/feedback/loading-modal/loading-modal.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/form-input/form-input.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/form-input/form-input.component.html","../../../projects/tickera-angular-components/src/lib/components/feedback/delete-confirmation/delete-confirmation.component.ts","../../../projects/tickera-angular-components/src/lib/components/feedback/delete-confirmation/delete-confirmation.component.html","../../../projects/tickera-angular-components/src/lib/components/data-display/audit-information/audit-information.component.ts","../../../projects/tickera-angular-components/src/lib/components/data-display/audit-information/audit-information.component.html","../../../projects/tickera-angular-components/src/lib/components/data-display/dynamic-table/dynamic-table.component.ts","../../../projects/tickera-angular-components/src/lib/components/data-display/dynamic-table/dynamic-table.component.html","../../../projects/tickera-angular-components/src/lib/components/navigation/language-switcher/language-switcher.component.ts","../../../projects/tickera-angular-components/src/lib/components/navigation/language-switcher/language-switcher.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/form-select/form-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/form-select/form-select.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/form-textarea/form-textarea.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/form-textarea/form-textarea.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/form-editor/form-editor.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/form-editor/form-editor.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/color-picker/color-picker.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/color-picker/color-picker.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/date-input/date-input.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/date-input/date-input.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/toggle-switch/toggle-switch.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/toggle-switch/toggle-switch.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/file-upload-preview/file-upload-preview.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/file-upload-preview/file-upload-preview.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/file-upload/file-upload.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/file-upload/file-upload.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/async-select/async-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/async-select/async-select.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/change-password-form/change-password-form.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/change-password-form/change-password-form.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/admin-select/admin-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/admin-select/admin-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/city-select/city-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/city-select/city-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/country-select/country-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/country-select/country-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/state-select/state-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/state-select/state-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/customer-select/customer-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/customer-select/customer-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/performance-select/performance-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/performance-select/performance-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/performance-multi-select/performance-multi-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/performance-multi-select/performance-multi-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/product-select/product-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/product-select/product-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/product-multi-select/product-multi-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/product-multi-select/product-multi-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/show-select/show-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/show-select/show-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/show-multi-select/show-multi-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/show-multi-select/show-multi-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/price-zone-select/price-zone-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/price-zone-select/price-zone-select.component.html","../../../projects/tickera-angular-components/src/lib/components/performances-selection/day-selector-grid/day-selector-grid.component.ts","../../../projects/tickera-angular-components/src/lib/components/performances-selection/day-selector-grid/day-selector-grid.component.html","../../../projects/tickera-angular-components/src/lib/components/performances-selection/performance-card/performance-card.component.ts","../../../projects/tickera-angular-components/src/lib/components/performances-selection/performance-card/performance-card.component.html","../../../projects/tickera-angular-components/src/lib/components/performances-selection/performance-card-list/performance-card-list.component.ts","../../../projects/tickera-angular-components/src/lib/components/performances-selection/performance-card-list/performance-card-list.component.html","../../../projects/tickera-angular-components/src/lib/components/performances-selection/performance-stepper/performance-stepper.component.ts","../../../projects/tickera-angular-components/src/lib/components/performances-selection/performance-stepper/performance-stepper.component.html","../../../projects/tickera-angular-components/src/lib/components/performances-selection/shows-filter/shows-filter.component.ts","../../../projects/tickera-angular-components/src/lib/components/performances-selection/shows-filter/shows-filter.component.html","../../../projects/tickera-angular-components/src/lib/components/performances-selection/zone-price-item/zone-price-item.component.ts","../../../projects/tickera-angular-components/src/lib/components/performances-selection/zone-price-item/zone-price-item.component.html","../../../projects/tickera-angular-components/src/lib/components/performances-selection/zone-price-list/zone-price-list.component.ts","../../../projects/tickera-angular-components/src/lib/components/performances-selection/zone-price-list/zone-price-list.component.html","../../../projects/tickera-angular-components/src/public-api.ts","../../../projects/tickera-angular-components/src/tickera-angular-components.ts"],"sourcesContent":["import { TranslocoLoader } from '@jsverse/transloco';\nimport { Observable, from } from 'rxjs';\n\nimport es from './es.json';\nimport en from './en.json';\n\nconst translations: Record<string, Record<string, unknown>> = {\n es,\n en,\n};\n\nexport class TickeraTranslocoLoader implements TranslocoLoader {\n getTranslation(lang: string): Observable<Record<string, unknown>> {\n const translation = translations[lang] || translations['es'];\n return from(Promise.resolve(translation));\n }\n}\n","const STORAGE_KEY = 'tickera_lang';\nconst DEFAULT_LANG = 'es';\nconst AVAILABLE_LANGS = ['es', 'en'];\n\nexport function getStoredLanguage(): string {\n try {\n const stored = localStorage.getItem(STORAGE_KEY);\n if (stored && AVAILABLE_LANGS.includes(stored)) {\n return stored;\n }\n } catch {\n // localStorage not available\n }\n return '';\n}\n\nexport function setStoredLanguage(lang: string): void {\n try {\n localStorage.setItem(STORAGE_KEY, lang);\n } catch {\n // localStorage not available\n }\n}\n\nexport function getBrowserLanguage(): string {\n const nav = typeof navigator !== 'undefined' ? navigator : null;\n if (!nav) return DEFAULT_LANG;\n\n // Check navigator.language and navigator.languages\n const browserLangs = nav.languages || [nav.language];\n\n for (const lang of browserLangs) {\n if (!lang) continue;\n\n // Exact match (e.g., \"es\", \"en\")\n const shortLang = lang.split('-')[0].toLowerCase();\n if (AVAILABLE_LANGS.includes(shortLang)) {\n return shortLang;\n }\n }\n\n return DEFAULT_LANG;\n}\n\nexport function resolveLanguage(): string {\n // 1. Check localStorage first\n const stored = getStoredLanguage();\n if (stored) return stored;\n\n // 2. Detect from browser\n return getBrowserLanguage();\n}\n","import { InjectionToken, EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { provideTransloco, TranslocoConfig } from '@jsverse/transloco';\nimport { TickeraTranslocoLoader } from '../i18n/transloco-loader';\nimport { resolveLanguage, setStoredLanguage } from '../i18n/language.utils';\n\nexport interface TickeraComponentsConfig {\n apiUrl: string;\n accessTokenKey?: string;\n defaultLang?: string;\n availableLangs?: string[];\n}\n\nexport const TICKERA_COMPONENTS_CONFIG = new InjectionToken<TickeraComponentsConfig>(\n 'TICKERA_COMPONENTS_CONFIG',\n);\n\nexport function provideTickeraComponents(config: TickeraComponentsConfig): EnvironmentProviders {\n const defaultLang = config.defaultLang || 'es';\n const availableLangs = config.availableLangs || ['es', 'en'];\n const detectedLang = resolveLanguage();\n\n return makeEnvironmentProviders([\n { provide: TICKERA_COMPONENTS_CONFIG, useValue: config },\n ...provideTransloco({\n config: {\n defaultLang: detectedLang,\n availableLangs,\n reRenderOnLangChange: true,\n fallbackLang: defaultLang,\n } as TranslocoConfig,\n loader: TickeraTranslocoLoader,\n }),\n ]);\n}\n","export const ALERT_ICONS = {\n success: 'ri-check-line',\n error: 'ri-error-warning-line',\n warning: 'ri-alert-line',\n info: 'ri-info-line',\n};\n","export const BUTTON_VARIANT_CLASSES: Record<string, string> = {\n primary: 'btn-primary',\n secondary: 'btn-secondary',\n tertiary: 'btn-tertiary',\n success: 'btn-success',\n transparent: 'btn-transparent',\n};\n\nexport const BASE_BUTTON_CLASSES = 'btn';\n\nexport const BUTTON_SIZES_CLASSES: Record<string, string> = {\n xs: 'btn-xs',\n sm: 'btn-sm',\n md: 'btn-md',\n lg: 'btn-lg',\n};\n","export const FORM_ERROR_MESSAGES: Record<string, string> = {\n required: 'Este campo es requerido',\n minlength: 'Debe tener al menos caracteres',\n maxlength: 'Debe tener al menos caracteres',\n pattern: 'El formato no es válido',\n email: 'El formato no es válido',\n mustMatch: 'Las contraseñas no coinciden',\n matDatepickerMin: 'La fecha no puede ser anterior a la fecha mínima permitida',\n matDatepickerMax: 'La fecha no puede ser posterior a la fecha máxima permitida',\n};\n","export const BASE_INPUT_CLASSES = [\n 'block',\n 'w-full',\n 'rounded-md',\n 'px-3',\n 'py-1.5',\n 'text-base',\n 'text-gray-900',\n 'outline-1',\n '-outline-offset-1',\n 'outline-gray-300',\n 'placeholder:text-gray-400',\n 'focus:outline-2',\n 'focus:-outline-offset-2',\n 'focus:outline-indigo-600',\n 'sm:text-sm/6',\n].join(' ');\n\nexport const ERROR_INPUT_CLASSES = BASE_INPUT_CLASSES + ' outline-red-500 dark:outline-red-500';\n","export const ADMIN_API_ROUTES = {\n FIND_ALL: '/admins',\n CREATE: '/admins/auth/register',\n updateOne: (id: number) => `/admins/${id}`,\n deleteOne: (id: number) => `/admins/${id}`,\n};\n","export const CITY_API_ENDPOINTS = {\n findAll: '/cities',\n create: '/cities',\n findById: (id: number) => `/cities/${id}`,\n update: (id: number) => `/cities/${id}`,\n delete: (id: number) => `/cities/${id}`,\n};\n","export const COUNTRY_API_ENDPOINTS = {\n findAll: '/countries',\n create: '/countries',\n findById: (id: number) => `/countries/${id}`,\n update: (id: number) => `/countries/${id}`,\n delete: (id: number) => `/countries/${id}`,\n};\n","export const STATE_API_ENDPOINTS = {\n findAll: '/states',\n create: '/states',\n findById: (id: number) => `/states/${id}`,\n update: (id: number) => `/states/${id}`,\n delete: (id: number) => `/states/${id}`,\n};\n","export const PERFORMANCES_API_ROUTES = {\n findAll: '/performances',\n create: '/performances',\n createBulk: '/performances/bulk',\n findOneById: (id: number) => `/performances/${id}`,\n findOneBookingData: (id: number) => `/performances/${id}/booking-data`,\n update: (id: number) => `/performances/${id}`,\n delete: (id: number) => `/performances/${id}`,\n deleteMany: '/performances/bulk',\n cancel: (id: number) => `/performances/${id}/cancel`,\n publishInventory: (id: number) => `/performances/${id}/publish-inventory`,\n reserve: (id: number) => `/performances/${id}/reserve`,\n ticketQrToken: (uuid: string) => `/performances/tickets/${uuid}/qr-token`,\n getAvailableDays: '/performances/available-days',\n publicAvailablePerformances: '/public/performances/daily',\n};\n","export const SHOWS_API_ROUTES = {\n findAll: '/shows',\n create: '/shows',\n findOneById: (id: number) => `/shows/${id}`,\n update: (id: number) => `/shows/${id}`,\n delete: (id: number) => `/shows/${id}`,\n getImages: (id: number) => `/shows/${id}/images`,\n uploadGallery: (id: number) => `/shows/${id}/images`,\n deleteOneImage: (showId: number, imageId: number) => `/shows/${showId}/images/${imageId}`,\n publicAvailablePerformances: '/public/shows/available',\n};\n","export const CUSTOMERS_API_ROUTES = {\n findAll: '/customers',\n create: '/customers/auth/register',\n findOne: (id: number) => `/customers/${id}`,\n update: (id: number) => `/customers/${id}`,\n delete: (id: number) => `/customers/${id}`,\n};\n","export const PRICE_ZONES_API_ROUTES = {\n FIND_ALL: '/price-zones',\n CREATE: '/price-zones',\n findOneById: (id: number) => `/price-zones/${id}`,\n update: (id: number) => `/price-zones/${id}`,\n delete: (id: number) => `/price-zones/${id}`,\n updateElements: (id: number) => `/price-zones/${id}/elements`,\n duplicate: (id: number) => `/price-zones/${id}/duplicate`,\n};\n","export const VENUES_API_ROUTES = {\n findAll: '/venues',\n create: '/venues',\n findOneById: (id: number) => '/venues/' + id,\n update: (id: number) => '/venues/' + id,\n delete: (id: number) => '/venues/' + id,\n getGallery: (id: number) => '/venues/' + id + '/images',\n uploadGallery: (id: number) => '/venues/' + id + '/images',\n deleteOneImage: (venueId: number, imageId: number) => '/venues/' + venueId + '/images/' + imageId,\n};\n","export const PRODUCT_TYPES_API_ROUTES = {\n FIND_ALL: '/product-types',\n CREATE: '/product-types',\n findById: (id: number) => `/product-types/${id}`,\n update: (id: number) => `/product-types/${id}`,\n delete: (id: number) => `/product-types/${id}`,\n};\n","export const PRODUCT_TAGS_API_ROUTES = {\n FIND_ALL: '/product-tags',\n CREATE: '/product-tags',\n findById: (id: number) => `/product-tags/${id}`,\n update: (id: number) => `/product-tags/${id}`,\n delete: (id: number) => `/product-tags/${id}`,\n};\n","export const PRODUCT_CATEGORIES_API_ROUTES = {\n FIND_ALL: '/product-categories',\n CREATE: '/product-categories',\n findById: (id: number) => `/product-categories/${id}`,\n update: (id: number) => `/product-categories/${id}`,\n delete: (id: number) => `/product-categories/${id}`,\n};\n","export const PRODUCTS_API_ROUTES = {\n FIND_ALL: '/products',\n CREATE: '/products',\n findOneById: (id: number) => `/products/${id}`,\n update: (id: number) => `/products/${id}`,\n delete: (id: number) => `/products/${id}`,\n fetchImages: (id: number) => `/products/${id}/images`,\n uploadImages: (id: number) => `/products/${id}/images`,\n deleteOneImage: (productId: number, imageId: number) =>\n `/products/${productId}/images/${imageId}`,\n};\n","export enum FileType {\n IMAGE = 'image',\n PDF = 'pdf',\n EXCEL = 'excel',\n WORD = 'word',\n TEXT = 'text',\n DEFAULT = 'default',\n}\n","export enum CouponApplicability {\n GENERAL = 'GENERAL',\n CUSTOMER_EMAIL = 'CUSTOMER_EMAIL',\n MEMBERSHIP_TYPE = 'MEMBERSHIP_TYPE',\n SHOWS = 'SHOWS',\n PERFORMANCES = 'PERFORMANCES',\n}\n","export enum CouponDiscountType {\n PERCENTAGE = 'PERCENTAGE',\n FIXED = 'FIXED',\n}\n","export enum CouponStatus {\n ACTIVE = 'ACTIVE',\n INACTIVE = 'INACTIVE',\n EXPIRED = 'EXPIRED',\n CONSUMED = 'CONSUMED',\n}\n","export enum CorporateBondStatus {\n ACTIVE = 'ACTIVE',\n INACTIVE = 'INACTIVE',\n EXPIRED = 'EXPIRED',\n CONSUMED = 'CONSUMED',\n}\n","export enum PerformanceStatus {\n ACTIVE = 'active',\n CANCELLED = 'cancelled',\n FINISHED = 'finished',\n POSTPONED = 'postponed',\n}\n","export enum PerformanceTicketStatus {\n AVAILABLE = 'available',\n RESERVED = 'reserved',\n SOLD = 'sold',\n BLOCKED = 'blocked',\n}\n","export enum RoomMapElementOrientation {\n TOP = 'top',\n RIGHT = 'right',\n BOTTOM = 'bottom',\n LEFT = 'left',\n CENTER = 'center',\n}\n","export enum RoomMapElementType {\n SEAT_BLOCK = 'seat_block',\n TABLE = 'table',\n ZONE = 'zone',\n EXIT = 'exit',\n STAGE = 'stage',\n PRODUCTION_AREA = 'production_area',\n UNAVAILABLE_SPACE = 'unavailable_space',\n STAIR = 'stair',\n HALLWAY = 'hallway',\n}\n","export enum GiftBondStatus {\n ACTIVE = 'ACTIVE',\n INACTIVE = 'INACTIVE',\n EXPIRED = 'EXPIRED',\n CONSUMED = 'CONSUMED',\n}\n","export enum OrderItemType {\n TICKET = 'TICKET',\n PRODUCT = 'PRODUCT',\n}\n","export enum OrderStatus {\n ON_HOLD = 'on-hold',\n PENDING_PAYMENT = 'pending-payment',\n PROCESSING = 'processing',\n COMPLETED = 'completed',\n FAILED = 'failed',\n CANCELLED = 'cancelled',\n REFUNDED = 'refunded',\n}\n","import { Customer } from '../interfaces/customers/customer.interface';\n\nexport const getCustomerFullname = (customer: Customer) => {\n return `${customer.first_name || ''} ${customer.last_name || ''}`.trim();\n};\n","export function parseJsonToFormDataAdvanced(imageGallery: any[]): FormData {\n const formData = new FormData();\n\n if (!Array.isArray(imageGallery)) {\n throw new Error('imageGallery debe ser un array');\n }\n\n if (imageGallery.length === 0) {\n throw new Error('No hay imágenes para procesar');\n }\n\n if (imageGallery.length > 10) {\n throw new Error('El backend acepta máximo 10 archivos por petición');\n }\n\n const processedFiles: any = [];\n\n imageGallery.forEach((image, index) => {\n try {\n if (!image.name) {\n throw new Error(`La imagen ${index + 1} no tiene nombre`);\n }\n\n if (!image.type || !image.type.startsWith('image/')) {\n throw new Error(`La imagen ${index + 1} no tiene un tipo MIME válido`);\n }\n\n if (!image.preview) {\n throw new Error(`La imagen ${index + 1} no tiene datos de preview`);\n }\n\n if (!image.preview.includes('data:image/') || !image.preview.includes('base64,')) {\n throw new Error(`La imagen ${index + 1} no tiene un formato base64 válido`);\n }\n\n const base64Data = image.preview.split(',')[1];\n const byteCharacters = atob(base64Data);\n const byteNumbers = new Array(byteCharacters.length);\n\n for (let i = 0; i < byteCharacters.length; i++) {\n byteNumbers[i] = byteCharacters.charCodeAt(i);\n }\n\n const byteArray = new Uint8Array(byteNumbers);\n const blob = new Blob([byteArray], { type: image.type });\n\n const file = new File([blob], image.name, {\n type: image.type,\n lastModified: Date.now(),\n });\n\n if (file.size === 0) {\n throw new Error(`El archivo ${image.name} está vacío`);\n }\n\n formData.append('files', file);\n processedFiles.push({\n name: image.name,\n size: file.size,\n type: file.type,\n });\n } catch (error: any) {\n console.error(`Error procesando imagen ${index + 1}:`, error);\n throw new Error(\n `Error procesando ${image.name || 'imagen ' + (index + 1)}: ${error?.message}`,\n );\n }\n });\n\n return formData;\n}\n","import { ShowImage } from '../interfaces/shows/show-image.interface';\nimport { VenueImage } from '../interfaces/venues/venue-image.interface';\nimport { UploadedFile } from '../interfaces/uploaded-file.interface';\n\nexport const transformImageToFile = (image: ShowImage | VenueImage): UploadedFile => {\n return {\n preview: image.full_url,\n name: image.original_name,\n size: image.size,\n type: image.mime_type,\n extension: image.extension,\n } as UploadedFile;\n};\n","import { CitiesResponse } from '../interfaces/cities/cities-response.interface';\n\nexport const formatCitiesResponseToSelect = (res: CitiesResponse) => {\n if (!res.data.cities || res.data.cities.length < 1) {\n return [];\n }\n\n return res.data.cities?.map(({ id, name, search_text }) => ({\n value: id,\n label: search_text ?? name,\n }));\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn, FormGroup } from '@angular/forms';\n\nexport function MinTodayValidator(controlName: string): ValidatorFn {\n return (formGroup: AbstractControl): ValidationErrors | null => {\n const group = formGroup as FormGroup;\n const control = group.get(controlName);\n\n if (!control || !control.value) {\n return null;\n }\n\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n\n let selectedDate: Date;\n\n if (control.value instanceof Date) {\n selectedDate = new Date(control.value);\n } else if (typeof control.value === 'string') {\n const [year, month, day] = control.value.split('-').map(Number);\n selectedDate = new Date(Date.UTC(year, month - 1, day));\n } else {\n return null;\n }\n\n selectedDate.setUTCHours(0, 0, 0, 0);\n\n if (selectedDate < today) {\n control.setErrors({ minToday: true });\n return { minToday: true };\n } else {\n const currentErrors = control.errors;\n if (currentErrors) {\n delete currentErrors['minToday'];\n control.setErrors(Object.keys(currentErrors).length > 0 ? currentErrors : null);\n }\n return null;\n }\n };\n}\n\nexport function EndDateGreaterThanStartValidator(\n startDateControlName: string,\n endDateControlName: string,\n): ValidatorFn {\n return (formGroup: AbstractControl): ValidationErrors | null => {\n const group = formGroup as FormGroup;\n const startDateControl = group.get(startDateControlName);\n const endDateControl = group.get(endDateControlName);\n\n if (!startDateControl || !endDateControl || !startDateControl.value || !endDateControl.value) {\n return null;\n }\n\n let startDate: Date;\n let endDate: Date;\n\n if (startDateControl.value instanceof Date) {\n startDate = new Date(startDateControl.value);\n } else if (typeof startDateControl.value === 'string') {\n const [startYear, startMonth, startDay] = startDateControl.value.split('-').map(Number);\n startDate = new Date(Date.UTC(startYear, startMonth - 1, startDay));\n } else {\n return null;\n }\n\n if (endDateControl.value instanceof Date) {\n endDate = new Date(endDateControl.value);\n } else if (typeof endDateControl.value === 'string') {\n const [endYear, endMonth, endDay] = endDateControl.value.split('-').map(Number);\n endDate = new Date(Date.UTC(endYear, endMonth - 1, endDay));\n } else {\n return null;\n }\n\n startDate.setUTCHours(0, 0, 0, 0);\n endDate.setUTCHours(0, 0, 0, 0);\n\n if (endDate <= startDate) {\n endDateControl.setErrors({ endDateGreaterThanStart: true });\n return { endDateGreaterThanStart: true };\n } else {\n const currentErrors = endDateControl.errors;\n if (currentErrors) {\n delete currentErrors['endDateGreaterThanStart'];\n endDateControl.setErrors(Object.keys(currentErrors).length > 0 ? currentErrors : null);\n }\n return null;\n }\n };\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn, FormGroup } from '@angular/forms';\n\nexport function MustMatchValidator(controlName: string, matchingControlName: string): ValidatorFn {\n return (formGroup: AbstractControl): ValidationErrors | null => {\n const group = formGroup as FormGroup;\n const control = group.get(controlName);\n const matchingControl = group.get(matchingControlName);\n\n if (!control || !matchingControl) {\n return null;\n }\n\n if (control.value !== matchingControl.value) {\n matchingControl.setErrors({ mustMatch: true });\n return { mustMatch: true };\n } else {\n matchingControl.setErrors(null);\n return null;\n }\n };\n}\n","import { Inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n TICKERA_COMPONENTS_CONFIG,\n TickeraComponentsConfig,\n} from '../config/tickera-components.config';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ApiService {\n private apiUrl: string;\n\n constructor(\n private http: HttpClient,\n @Inject(PLATFORM_ID) private platformId: Object,\n @Inject(TICKERA_COMPONENTS_CONFIG) private config: TickeraComponentsConfig,\n ) {\n this.apiUrl = config.apiUrl;\n }\n\n private getHeaders(contentType?: string): HttpHeaders {\n let headers = new HttpHeaders();\n\n if (contentType) {\n headers = headers.set('Content-Type', contentType);\n }\n\n return headers;\n }\n\n private validateContentType(body: any): string | undefined {\n if (body instanceof FormData) {\n return undefined;\n }\n return 'application/json';\n }\n\n private handleError(error: HttpErrorResponse): Observable<never> {\n if (error.status === 401 && isPlatformBrowser(this.platformId)) {\n const currentRoute = window.location.pathname;\n if (currentRoute.startsWith('/admin')) {\n localStorage.removeItem('access_token');\n window.location.href = '/';\n }\n }\n return throwError(() => error);\n }\n\n get<T>(path: string): Observable<T> {\n const headers = this.getHeaders(this.validateContentType(null));\n return this.http\n .get<T>(`${this.apiUrl}${path}`, { headers })\n .pipe(catchError(this.handleError.bind(this)));\n }\n\n post<T>(path: string, body: any): Observable<T> {\n const headers = this.getHeaders(this.validateContentType(body));\n return this.http\n .post<T>(`${this.apiUrl}${path}`, body, { headers })\n .pipe(catchError(this.handleError.bind(this)));\n }\n\n patch<T>(path: string, body: any): Observable<T> {\n const headers = this.getHeaders(this.validateContentType(body));\n return this.http\n .patch<T>(`${this.apiUrl}${path}`, body, { headers })\n .pipe(catchError(this.handleError.bind(this)));\n }\n\n put<T>(path: string, body: any): Observable<T> {\n const headers = this.getHeaders(this.validateContentType(body));\n return this.http\n .put<T>(`${this.apiUrl}${path}`, body, { headers })\n .pipe(catchError(this.handleError.bind(this)));\n }\n\n delete<T>(path: string, body?: any): Observable<T> {\n const headers = this.getHeaders(this.validateContentType(body));\n return this.http\n .request<T>('DELETE', `${this.apiUrl}${path}`, { headers, body })\n .pipe(catchError(this.handleError.bind(this)));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { toast } from 'ngx-sonner';\n\ntype ToastType = 'success' | 'error' | 'info';\n\n@Injectable({ providedIn: 'root' })\nexport class ToastService {\n show(message: string, type: ToastType = 'info') {\n toast[type](message);\n }\n}\n","import { Injectable, signal, WritableSignal } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class LoadingModalService {\n title: WritableSignal<string> = signal('');\n isOpen: WritableSignal<boolean> = signal(false);\n\n get modalIsOpen(): WritableSignal<boolean> {\n return this.isOpen;\n }\n\n open(title?: string) {\n this.title.set(title ?? 'Cargando...');\n this.isOpen.set(true);\n }\n\n close() {\n this.isOpen.set(false);\n }\n}\n","import { Injectable, signal, WritableSignal } from '@angular/core';\nimport { DeleteConfirmationOpen } from '../interfaces/delete-confirmation-open.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class DeleteConfirmationService {\n title: WritableSignal<string> = signal('Confirmar eliminación');\n resourceName: WritableSignal<string> = signal('');\n confirmationText: WritableSignal<string> = signal('');\n isOpen: WritableSignal<boolean> = signal(false);\n confirmDeleteCallback: (() => void) | null = null;\n\n get modalTitle(): WritableSignal<string> {\n return this.title;\n }\n\n get modalResourceName(): WritableSignal<string> {\n return this.resourceName;\n }\n\n get modalConfirmationText(): WritableSignal<string> {\n return this.confirmationText;\n }\n\n get modalIsOpen(): WritableSignal<boolean> {\n return this.isOpen;\n }\n\n open(\n { title, resourceName, confirmationText }: DeleteConfirmationOpen,\n confirmCallback?: () => void,\n ) {\n this.title.set(title);\n this.resourceName.set(resourceName);\n this.confirmationText.set(confirmationText);\n this.confirmDeleteCallback = confirmCallback || null;\n this.isOpen.set(true);\n }\n\n close() {\n this.title.set('Confirmar eliminación');\n this.resourceName.set('');\n this.confirmationText.set('');\n this.confirmDeleteCallback = null;\n this.isOpen.set(false);\n }\n\n getConfirmDeleteCallback(): (() => void) | null {\n return this.confirmDeleteCallback;\n }\n}\n","import { Injectable, signal, WritableSignal } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class ChangePasswordFormService {\n resourceId: WritableSignal<number> = signal(0);\n isCustomer: WritableSignal<boolean> = signal(false);\n isAdmin: WritableSignal<boolean> = signal(false);\n isOpen: WritableSignal<boolean> = signal(false);\n\n get modalIsOpen(): WritableSignal<boolean> {\n return this.isOpen;\n }\n\n get isCustomerMode(): WritableSignal<boolean> {\n return this.isCustomer;\n }\n\n get isAdminMode(): WritableSignal<boolean> {\n return this.isAdmin;\n }\n\n get resourceIdValue(): WritableSignal<number> {\n return this.resourceId;\n }\n\n open(resourceId: number, isAdmin: boolean = false) {\n this.resourceId.set(resourceId);\n this.isCustomer.set(!isAdmin);\n this.isAdmin.set(isAdmin);\n this.isOpen.set(true);\n }\n\n close() {\n this.isOpen.set(false);\n }\n}\n","import { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { formatDate } from '@angular/common';\n\n@Injectable({ providedIn: 'root' })\nexport class DateService {\n constructor(@Inject(LOCALE_ID) private locale: string) {}\n\n formatDate(date: Date, format: string = 'yyyy-MM-dd'): string {\n const formattedDate = formatDate(date, format, this.locale);\n return formattedDate;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ApiService } from './api.service';\nimport { AdminsResponse } from '../interfaces/admins/admins-response.interface';\nimport { ADMIN_API_ROUTES } from '../constants/api-routes/admin-api.routes';\n\n@Injectable({ providedIn: 'root' })\nexport class AdminService {\n constructor(private apiService: ApiService) {}\n\n fetchAdmins(\n page: number = 1,\n search: string = '',\n limit: number = 20,\n ): Observable<AdminsResponse> {\n const queryParams = new URLSearchParams();\n if (page) queryParams.append('page', page.toString());\n if (search) queryParams.append('search', search);\n if (limit) queryParams.append('limit', limit.toString());\n const queryString = queryParams.toString();\n const apiRoute = `${ADMIN_API_ROUTES.FIND_ALL}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<AdminsResponse>(apiRoute);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(ADMIN_API_ROUTES.deleteOne(id));\n }\n\n createOne(data: any): Observable<any> {\n return this.apiService.post(ADMIN_API_ROUTES.CREATE, data);\n }\n\n updateOne(id: number, data: any): Observable<any> {\n return this.apiService.patch(ADMIN_API_ROUTES.updateOne(id), data);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ApiService } from './api.service';\nimport { CITY_API_ENDPOINTS } from '../constants/api-routes/cities-api.routes';\nimport { CitiesResponse } from '../interfaces/cities/cities-response.interface';\nimport { City } from '../interfaces/cities/city.interface';\nimport { CityResponse } from '../interfaces/cities/city-response.interface';\nimport { FetchCitiesParams } from '../interfaces/cities/fetch-cities-params.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class CitiesService {\n constructor(private apiService: ApiService) {}\n\n fetchCities({ page, search, stateId }: FetchCitiesParams): Observable<CitiesResponse> {\n const queryParams = new URLSearchParams();\n if (page) queryParams.append('page', page.toString());\n if (search) queryParams.append('search', search);\n if (stateId) queryParams.append('state_id', stateId.toString());\n const queryString = queryParams.toString();\n const apiRoute = `${CITY_API_ENDPOINTS.findAll}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<CitiesResponse>(apiRoute);\n }\n\n createOne(data: City): Observable<CityResponse> {\n return this.apiService.post(CITY_API_ENDPOINTS.create, data);\n }\n\n updateOne(id: number, data: City): Observable<CityResponse> {\n return this.apiService.patch<CityResponse>(CITY_API_ENDPOINTS.update(id), data);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(CITY_API_ENDPOINTS.delete(id));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ApiService } from './api.service';\nimport { COUNTRY_API_ENDPOINTS } from '../constants/api-routes/countries-api.routes';\nimport { CountriesResponse } from '../interfaces/countries/countries-response.interface';\nimport { CountryResponse } from '../interfaces/countries/country-response.interface';\nimport { Country } from '../interfaces/countries/country.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class CountryService {\n constructor(private apiService: ApiService) {}\n\n fetchCountries(page?: number, search?: string): Observable<CountriesResponse> {\n const queryParams = new URLSearchParams();\n if (page) queryParams.append('page', page.toString());\n if (search) queryParams.append('search', search);\n const queryString = queryParams.toString();\n const apiRoute = `${COUNTRY_API_ENDPOINTS.findAll}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<CountriesResponse>(apiRoute);\n }\n\n createOne(data: Country): Observable<CountryResponse> {\n return this.apiService.post(COUNTRY_API_ENDPOINTS.create, data);\n }\n\n updateOne(id: number, data: Country): Observable<CountryResponse> {\n return this.apiService.patch<CountryResponse>(COUNTRY_API_ENDPOINTS.update(id), data);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(COUNTRY_API_ENDPOINTS.delete(id));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ApiService } from './api.service';\nimport { STATE_API_ENDPOINTS } from '../constants/api-routes/states-api.routes';\nimport { StatesResponse } from '../interfaces/states/states-response.interface';\nimport { StateResponse } from '../interfaces/states/state-response.interface';\nimport { State } from '../interfaces/states/state.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class StatesService {\n constructor(private apiService: ApiService) {}\n\n fetchStates(page?: number, search?: string, countryId?: number): Observable<StatesResponse> {\n const queryParams = new URLSearchParams();\n if (page) queryParams.append('page', page.toString());\n if (search) queryParams.append('search', search);\n if (countryId) queryParams.append('country_id', countryId.toString());\n const queryString = queryParams.toString();\n const apiRoute = `${STATE_API_ENDPOINTS.findAll}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<StatesResponse>(apiRoute);\n }\n\n fetchStatesByCountryId(countryId: number): Observable<StatesResponse> {\n const apiRoute = `${STATE_API_ENDPOINTS.findAll}?country_id=${countryId}`;\n return this.apiService.get<StatesResponse>(apiRoute);\n }\n\n createOne(data: State): Observable<StateResponse> {\n return this.apiService.post(STATE_API_ENDPOINTS.create, data);\n }\n\n updateOne(id: number, data: State): Observable<StateResponse> {\n return this.apiService.patch<StateResponse>(STATE_API_ENDPOINTS.update(id), data);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(STATE_API_ENDPOINTS.delete(id));\n }\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { PERFORMANCES_API_ROUTES } from '../constants/api-routes/performances-api.routes';\nimport { ApiService } from './api.service';\nimport { PerformancesResponseInterface } from '../interfaces/performances/performances-response.interface';\nimport { Performance } from '../interfaces/performances/performance.interface';\nimport { PerformanceResponse } from '../interfaces/performances/performance-response.interface';\nimport { PerformanceBookingDataResponse } from '../interfaces/performances/performance-booking-data.interface';\nimport { PerformancesAvailableDaysResponse } from '../interfaces/performances/performances-available-days-response.interface';\nimport { FetchDailyPerformancesParams } from '../interfaces/daily-performances/fetch-daily-performances-params.interface';\nimport { DailyPerformancesResponse } from '../interfaces/daily-performances/daily-performances-response.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class PerformanceService {\n private performancesSubject = new BehaviorSubject<Performance[]>([]);\n public performances$ = this.performancesSubject.asObservable();\n\n constructor(private apiService: ApiService) {}\n\n fetchPerformances(showId?: number, search?: string): Observable<PerformancesResponseInterface> {\n const queryParams = new URLSearchParams();\n if (showId) queryParams.append('show_id', showId.toString());\n if (search) queryParams.append('search', search);\n queryParams.append('limit', '100');\n const queryString = queryParams.toString();\n const apiRoute = `${PERFORMANCES_API_ROUTES.findAll}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<PerformancesResponseInterface>(apiRoute);\n }\n\n fetchDailyPerformances({\n show_id,\n search,\n limit,\n date,\n }: FetchDailyPerformancesParams): Observable<DailyPerformancesResponse> {\n const queryParams = new URLSearchParams();\n if (date) queryParams.append('date', date.toString());\n if (show_id) queryParams.append('show_id', show_id.toString());\n if (search) queryParams.append('search', search);\n queryParams.append('limit', limit?.toString() ?? '100');\n\n const queryString = queryParams.toString();\n const apiRoute = `${PERFORMANCES_API_ROUTES.publicAvailablePerformances}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<DailyPerformancesResponse>(apiRoute);\n }\n\n loadPerformances({ showId, search }: { showId?: number; search?: string } = {}): void {\n this.fetchPerformances(showId, search).subscribe({\n next: ({ data }) => {\n this.performancesSubject.next(data?.performances ?? []);\n },\n error: () => {\n this.performancesSubject.next([]);\n },\n });\n }\n\n getCurrentPerformances(): Performance[] {\n return this.performancesSubject.value;\n }\n\n fetchOneById(id: number): Observable<PerformanceResponse> {\n return this.apiService.get<PerformanceResponse>(PERFORMANCES_API_ROUTES.findOneById(id));\n }\n\n fetchOneBookingData(id: number): Observable<PerformanceBookingDataResponse> {\n const apiRoute = PERFORMANCES_API_ROUTES.findOneBookingData(id);\n return this.apiService.get<PerformanceBookingDataResponse>(apiRoute);\n }\n\n fetchAvailableDays(params?: { show_id?: number }): Observable<PerformancesAvailableDaysResponse> {\n const queryParams = new URLSearchParams();\n if (params?.show_id) queryParams.append('show_id', params.show_id.toString());\n const queryString = queryParams.toString();\n const apiRoute = `${PERFORMANCES_API_ROUTES.getAvailableDays}${queryString ? '?' + queryString : ''}`;\n\n return this.apiService.get<PerformancesAvailableDaysResponse>(apiRoute);\n }\n\n createOne(data: Performance): Observable<any> {\n return this.apiService.post(PERFORMANCES_API_ROUTES.create, data);\n }\n\n createMany(data: Partial<Performance>[]): Observable<any> {\n return this.apiService.post(PERFORMANCES_API_ROUTES.createBulk, { performances: data });\n }\n\n updateOne(id: number, data: any): Observable<PerformanceResponse> {\n return this.apiService.patch<PerformanceResponse>(PERFORMANCES_API_ROUTES.update(id), data);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(PERFORMANCES_API_ROUTES.delete(id));\n }\n\n deleteMany(ids: number[]): Observable<any> {\n return this.apiService.delete(PERFORMANCES_API_ROUTES.deleteMany, { ids });\n }\n\n cancelPerformance(id: number, notifyUsers: boolean): Observable<any> {\n return this.apiService.patch(PERFORMANCES_API_ROUTES.cancel(id), { notify_users: notifyUsers });\n }\n\n publishInvenotry(id: number): Observable<any> {\n const apiRoute = PERFORMANCES_API_ROUTES.publishInventory(id);\n return this.apiService.post(apiRoute, {});\n }\n}\n","import { computed, Injectable, signal } from '@angular/core';\nimport { DailyPerformanceItem, PerformanceAvailableDay } from '../interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class PerformancesListEventsService {\n private _selectedDay = signal<PerformanceAvailableDay | null>(null);\n private _selectedPerformance = signal<DailyPerformanceItem | null>(null);\n private _filteredShowId = signal<number | null>(null);\n\n readonly selectedDay = computed(() => this._selectedDay());\n readonly selectedDayDate = computed(() => this._selectedDay()?.date);\n readonly selectedPerformance = computed(() => this._selectedPerformance());\n readonly filteredShowId = computed(() => this._filteredShowId());\n\n setSelectedDay(day: PerformanceAvailableDay | null): void {\n this._selectedDay.set(day);\n }\n\n setSelectedPerformance(performance: DailyPerformanceItem | null) {\n this._selectedPerformance.set(performance);\n }\n\n setFilteredShowId(id: number | null): void {\n this._filteredShowId.set(id);\n }\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { SHOWS_API_ROUTES } from '../constants/api-routes/shows-api.routes';\nimport { ApiService } from './api.service';\nimport { ShowsResponseInterface } from '../interfaces/shows/shows-response.interface';\nimport { Show } from '../interfaces/shows/show.interface';\nimport { ShowResponse } from '../interfaces/shows/show-response.interface';\nimport { ShowImage } from '../interfaces/shows/show-image.interface';\nimport { FetchShowsParams } from '../interfaces/shows/fetch-shows-params.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class ShowService {\n private showsSubject = new BehaviorSubject<Show[]>([]);\n public shows$ = this.showsSubject.asObservable();\n\n constructor(private apiService: ApiService) {}\n\n loadShows({ page, search }: FetchShowsParams = {}): void {\n this.fetchShows({ page, search }).subscribe({\n next: ({ data }) => {\n this.showsSubject.next(data?.shows ?? []);\n },\n error: () => {\n this.showsSubject.next([]);\n },\n });\n }\n\n getCurrentShows(): Show[] {\n return this.showsSubject.value;\n }\n\n fetchShows({ limit, page, search }: FetchShowsParams): Observable<ShowsResponseInterface> {\n const queryParams = new URLSearchParams();\n if (page) queryParams.append('page', page.toString());\n if (limit) queryParams.append('limit', limit.toString());\n if (search) queryParams.append('search', search);\n\n const queryString = queryParams.toString();\n const apiRoute = `${SHOWS_API_ROUTES.findAll}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<ShowsResponseInterface>(apiRoute);\n }\n\n fetchAvailableShows({\n date,\n limit,\n page,\n search,\n }: FetchShowsParams): Observable<ShowsResponseInterface> {\n const queryParams = new URLSearchParams();\n if (date) queryParams.append('date', date);\n if (page) queryParams.append('page', page.toString());\n if (search) queryParams.append('search', search);\n if (limit) queryParams.append('limit', limit.toString());\n const queryString = queryParams.toString();\n\n const apiRoute = `${SHOWS_API_ROUTES.publicAvailablePerformances}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<ShowsResponseInterface>(apiRoute);\n }\n\n fetchOneById(id: number): Observable<ShowResponse> {\n return this.apiService.get<ShowResponse>(SHOWS_API_ROUTES.findOneById(id));\n }\n\n createOne(data: Show): Observable<ShowResponse> {\n return this.apiService.post(SHOWS_API_ROUTES.create, data);\n }\n\n updateOne(id: number, data: any): Observable<ShowResponse> {\n return this.apiService.patch<ShowResponse>(SHOWS_API_ROUTES.update(id), data);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(SHOWS_API_ROUTES.delete(id));\n }\n\n fetchImages(id: number): Observable<{ data: ShowImage[] }> {\n return this.apiService.get(SHOWS_API_ROUTES.getImages(id));\n }\n\n uploadImages(id: number, files?: FormData): Observable<{ data: ShowImage[] }> {\n return this.apiService.post(SHOWS_API_ROUTES.uploadGallery(id), files);\n }\n\n deleteOneImage(showId: number, imageId: number): Observable<any> {\n return this.apiService.delete(SHOWS_API_ROUTES.deleteOneImage(showId, imageId));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ApiService } from './api.service';\nimport { CustomersResponse } from '../interfaces/customers/customers-response.interface';\nimport { CustomerResponse } from '../interfaces/customers/customer-response.interface';\nimport { CUSTOMERS_API_ROUTES } from '../constants/api-routes/customers-api.routes';\nimport { Customer } from '../interfaces/customers/customer.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class CustomerService {\n constructor(private apiService: ApiService) {}\n\n createOne(data: Customer): Observable<CustomerResponse> {\n return this.apiService.post<CustomerResponse>(CUSTOMERS_API_ROUTES.create, data);\n }\n\n fetchCustomers(page: number, search: string, limit?: number): Observable<CustomersResponse> {\n const queryParams = new URLSearchParams();\n if (page) queryParams.append('page', page.toString());\n if (search) queryParams.append('search', search);\n if (limit) queryParams.append('limit', limit.toString());\n const queryString = queryParams.toString();\n const apiRoute = `${CUSTOMERS_API_ROUTES.findAll}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<CustomersResponse>(apiRoute);\n }\n\n fetchOneById(id: number): Observable<CustomerResponse> {\n return this.apiService.get<CustomerResponse>(CUSTOMERS_API_ROUTES.findOne(id));\n }\n\n updateOne(id: number, data: any): Observable<CustomerResponse> {\n return this.apiService.patch<CustomerResponse>(CUSTOMERS_API_ROUTES.update(id), data);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(CUSTOMERS_API_ROUTES.delete(id));\n }\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { PRICE_ZONES_API_ROUTES } from '../constants/api-routes/price-zones-api.routes';\nimport { ApiService } from './api.service';\nimport { PriceZonesResponseInterface } from '../interfaces/price-zones/price-zones-response.interface';\nimport { PriceZone } from '../interfaces/price-zones/price-zone.interface';\nimport { FindAllPriceZoneParams } from '../interfaces/price-zones/find-all-price-zone-params.interface';\nimport { PriceZoneResponse } from '../interfaces/price-zones/price-zone-response.interface';\nimport { PriceZoneUpdateResponse } from '../interfaces/price-zones/price-zone-update-response.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class PriceZoneService {\n private priceZonesSubject = new BehaviorSubject<PriceZone[]>([]);\n public priceZones$ = this.priceZonesSubject.asObservable();\n\n constructor(private apiService: ApiService) {}\n\n fetchPriceZones({\n roomMapId,\n page,\n search,\n limit,\n }: FindAllPriceZoneParams = {}): Observable<PriceZonesResponseInterface> {\n const queryParams = new URLSearchParams();\n if (roomMapId) queryParams.append('room_map_id', roomMapId.toString());\n if (page) queryParams.append('page', page.toString());\n if (search) queryParams.append('search', search);\n if (limit) queryParams.append('limit', limit.toString());\n const queryString = queryParams.toString();\n const apiRoute = `${PRICE_ZONES_API_ROUTES.FIND_ALL}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<PriceZonesResponseInterface>(apiRoute);\n }\n\n loadPriceZones({ roomMapId, page, search, limit }: FindAllPriceZoneParams = {}): void {\n this.fetchPriceZones({ roomMapId, page, search, limit }).subscribe({\n next: ({ data }) => {\n this.priceZonesSubject.next(data?.price_zones ?? []);\n },\n error: () => {\n this.priceZonesSubject.next([]);\n },\n });\n }\n\n getCurrentPriceZones(): PriceZone[] {\n return this.priceZonesSubject.value;\n }\n\n fetchOneById(id: number): Observable<PriceZoneResponse> {\n return this.apiService.get<PriceZoneResponse>(PRICE_ZONES_API_ROUTES.findOneById(id));\n }\n\n createOne(data: PriceZone): Observable<any> {\n return this.apiService.post(PRICE_ZONES_API_ROUTES.CREATE, data);\n }\n\n duplicateOne(id: number, name: string): Observable<any> {\n return this.apiService.post(PRICE_ZONES_API_ROUTES.duplicate(id), { name });\n }\n\n updateOne(id: number, data: any): Observable<PriceZoneUpdateResponse> {\n return this.apiService.patch<PriceZoneUpdateResponse>(PRICE_ZONES_API_ROUTES.update(id), data);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(PRICE_ZONES_API_ROUTES.delete(id));\n }\n}\n","import { Injectable, signal, WritableSignal } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { Subject } from 'rxjs';\nimport { PriceZone } from '../interfaces/price-zones/price-zone.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class PriceZoneEventService {\n private priceZoneDeleted$ = new Subject<void>();\n private priceZoneSaved$ = new Subject<void>();\n\n private _selectedPriceZone: WritableSignal<PriceZone | null> = signal(null);\n readonly selectedPriceZone$ = toObservable(this._selectedPriceZone);\n\n onPriceZoneDeleted() {\n this.priceZoneDeleted$.next();\n }\n\n getPriceZoneDeleted() {\n return this.priceZoneDeleted$.asObservable();\n }\n\n onPriceZoneSaved() {\n this.priceZoneSaved$.next();\n }\n\n getPriceZoneSaved() {\n return this.priceZoneSaved$.asObservable();\n }\n\n setSelectedPriceZone(priceZone: PriceZone | null) {\n this._selectedPriceZone.set(priceZone);\n }\n}\n","import { Injectable, signal, WritableSignal } from '@angular/core';\nimport { PriceZone } from '../interfaces/price-zones/price-zone.interface';\nimport { PriceZoneEventService } from './price-zone-event.service';\n\n@Injectable({ providedIn: 'root' })\nexport class PriceZoneFormModalService {\n priceZone: WritableSignal<PriceZone | null> = signal(null);\n isOpen: WritableSignal<boolean> = signal(false);\n\n constructor(private priceZoneEventService: PriceZoneEventService) {}\n\n get modalIsOpen(): WritableSignal<boolean> {\n return this.isOpen;\n }\n\n get currentPriceZone(): WritableSignal<PriceZone | null> {\n return this.priceZone;\n }\n\n open(priceZone: PriceZone | null = null) {\n this.priceZone.set(priceZone);\n this.priceZoneEventService.setSelectedPriceZone(priceZone);\n this.isOpen.set(true);\n }\n\n close() {\n this.isOpen.set(false);\n this.priceZone.set(null);\n }\n}\n","import { Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport {\n FetchProductCategoriesParams,\n ProductCategoriesResponse,\n ProductCategory,\n ProductCategoryResponse,\n} from '../interfaces';\nimport { ApiService } from './api.service';\nimport { PRODUCT_CATEGORIES_API_ROUTES } from '../constants/api-routes';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProductCategoryService {\n constructor(private apiService: ApiService) {}\n\n fetchCategories({\n page,\n search,\n limit,\n }: FetchProductCategoriesParams): Observable<ProductCategoriesResponse> {\n const queryParams = new URLSearchParams();\n\n if (page) queryParams.append('page', page.toString());\n if (limit) queryParams.append('limit', limit.toString());\n if (search) queryParams.append('search', search);\n\n const queryString = queryParams.toString();\n const apiRoute = `${PRODUCT_CATEGORIES_API_ROUTES.FIND_ALL}${queryString ? '?' + queryString : ''}`;\n\n return this.apiService.get<ProductCategoriesResponse>(apiRoute);\n }\n\n fetchOneById(id: number): Observable<ProductCategoryResponse> {\n const apiRoute = PRODUCT_CATEGORIES_API_ROUTES.findById(id);\n return this.apiService.get<ProductCategoryResponse>(apiRoute);\n }\n\n createOne(data: ProductCategory): Observable<any> {\n const apiRoute = PRODUCT_CATEGORIES_API_ROUTES.CREATE;\n return this.apiService.post(apiRoute, data);\n }\n\n updateOne(id: number, data: ProductCategory): Observable<ProductCategoryResponse> {\n const apiRoute = PRODUCT_CATEGORIES_API_ROUTES.update(id);\n return this.apiService.patch<ProductCategoryResponse>(apiRoute, data);\n }\n\n deleteOne(id: number): Observable<any> {\n const apiRoute = PRODUCT_CATEGORIES_API_ROUTES.delete(id);\n return this.apiService.delete(apiRoute);\n }\n}\n","import { Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { ApiService } from './api.service';\nimport {\n FetchProductTagsParams,\n ProductTag,\n ProductTagResponse,\n ProductTagsResponse,\n} from '../interfaces';\nimport { PRODUCT_TAGS_API_ROUTES } from '../constants/api-routes';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProductTagService {\n constructor(private apiService: ApiService) {}\n\n fetchTags({ page, search, limit }: FetchProductTagsParams): Observable<ProductTagsResponse> {\n const queryParams = new URLSearchParams();\n\n if (page) queryParams.append('page', page.toString());\n if (limit) queryParams.append('limit', limit.toString());\n if (search) queryParams.append('search', search);\n\n const queryString = queryParams.toString();\n const apiRoute = `${PRODUCT_TAGS_API_ROUTES.FIND_ALL}${queryString ? '?' + queryString : ''}`;\n\n return this.apiService.get<ProductTagsResponse>(apiRoute);\n }\n\n fetchOneById(id: number): Observable<ProductTagResponse> {\n const apiRoute = PRODUCT_TAGS_API_ROUTES.findById(id);\n return this.apiService.get<ProductTagResponse>(apiRoute);\n }\n\n createOne(data: ProductTag): Observable<any> {\n const apiRoute = PRODUCT_TAGS_API_ROUTES.CREATE;\n return this.apiService.post(apiRoute, data);\n }\n\n updateOne(id: number, data: ProductTag): Observable<ProductTagResponse> {\n const apiRoute = PRODUCT_TAGS_API_ROUTES.update(id);\n return this.apiService.patch<ProductTagResponse>(apiRoute, data);\n }\n\n deleteOne(id: number): Observable<any> {\n const apiRoute = PRODUCT_TAGS_API_ROUTES.delete(id);\n return this.apiService.delete(apiRoute);\n }\n}\n","import { Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { ApiService } from './api.service';\nimport {\n FetchProductTypesParams,\n ProductType,\n ProductTypeResponse,\n ProductTypesResponse,\n} from '../interfaces';\nimport { PRODUCT_TYPES_API_ROUTES } from '../constants/api-routes/product-types-api.routes';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProductTypeService {\n constructor(private apiService: ApiService) {}\n\n fetchTypes({ page, search, limit }: FetchProductTypesParams): Observable<ProductTypesResponse> {\n const queryParams = new URLSearchParams();\n\n if (page) queryParams.append('page', page.toString());\n if (limit) queryParams.append('limit', limit.toString());\n if (search) queryParams.append('search', search);\n\n const queryString = queryParams.toString();\n const apiRoute = `${PRODUCT_TYPES_API_ROUTES.FIND_ALL}${queryString ? '?' + queryString : ''}`;\n\n return this.apiService.get<ProductTypesResponse>(apiRoute);\n }\n\n fetchOneById(id: number): Observable<ProductTypeResponse> {\n const apiRoute = PRODUCT_TYPES_API_ROUTES.findById(id);\n return this.apiService.get<ProductTypeResponse>(apiRoute);\n }\n\n createOne(data: ProductType): Observable<any> {\n const apiRoute = PRODUCT_TYPES_API_ROUTES.CREATE;\n return this.apiService.post(apiRoute, data);\n }\n\n updateOne(id: number, data: ProductType): Observable<ProductTypeResponse> {\n const apiRoute = PRODUCT_TYPES_API_ROUTES.update(id);\n return this.apiService.patch<ProductTypeResponse>(apiRoute, data);\n }\n\n deleteOne(id: number): Observable<any> {\n const apiRoute = PRODUCT_TYPES_API_ROUTES.delete(id);\n return this.apiService.delete(apiRoute);\n }\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { PRODUCTS_API_ROUTES } from '../constants/api-routes/products-api.routes';\nimport { ApiService } from './api.service';\nimport { ProductsResponseInterface } from '../interfaces/products/products-response.interface';\nimport { ProductResponse } from '../interfaces/products/product-response.interface';\nimport { Product } from '../interfaces/products/product.interface';\nimport { FetchProductsParams } from '../interfaces/products/fetch-products-params.interface';\nimport { ProductImage } from '../interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class ProductService {\n private productsSubject = new BehaviorSubject<Product[]>([]);\n public products$ = this.productsSubject.asObservable();\n\n constructor(private apiService: ApiService) {}\n\n fetchProducts({\n page,\n search,\n limit,\n }: FetchProductsParams): Observable<ProductsResponseInterface> {\n const queryParams = new URLSearchParams();\n if (page) queryParams.append('page', page.toString());\n if (search) queryParams.append('search', search);\n if (limit) queryParams.append('limit', limit.toString());\n const queryString = queryParams.toString();\n const apiRoute = `${PRODUCTS_API_ROUTES.FIND_ALL}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<ProductsResponseInterface>(apiRoute);\n }\n\n loadProducts(params: FetchProductsParams): void {\n this.fetchProducts(params).subscribe({\n next: ({ data }) => {\n this.productsSubject.next(data?.products ?? []);\n },\n error: () => {\n this.productsSubject.next([]);\n },\n });\n }\n\n getCurrentProducts(): Product[] {\n return this.productsSubject.value;\n }\n\n fetchOneById(id: number): Observable<ProductResponse> {\n return this.apiService.get<ProductResponse>(PRODUCTS_API_ROUTES.findOneById(id));\n }\n\n createOne(data: Product): Observable<any> {\n return this.apiService.post(PRODUCTS_API_ROUTES.CREATE, data);\n }\n\n updateOne(id: number, data: any): Observable<ProductResponse> {\n return this.apiService.patch<ProductResponse>(PRODUCTS_API_ROUTES.update(id), data);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(PRODUCTS_API_ROUTES.delete(id));\n }\n\n fetchImages(id: number): Observable<{ data: ProductImage[] }> {\n const apiRoute = PRODUCTS_API_ROUTES.fetchImages(id);\n return this.apiService.get<{ data: ProductImage[] }>(apiRoute);\n }\n\n uploadImages(id: number, files?: FormData): Observable<{ data: ProductImage[] }> {\n const apiRoute = PRODUCTS_API_ROUTES.uploadImages(id);\n return this.apiService.post<{ data: ProductImage[] }>(apiRoute, files);\n }\n\n deleteOneImage(productId: number, imageId: number): Observable<any> {\n const apiRoute = PRODUCTS_API_ROUTES.deleteOneImage(productId, imageId);\n return this.apiService.delete(apiRoute);\n }\n}\n","import { HttpInterceptorFn } from '@angular/common/http';\nimport { inject, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n TICKERA_COMPONENTS_CONFIG,\n TickeraComponentsConfig,\n} from '../config/tickera-components.config';\n\nexport const authInterceptor: HttpInterceptorFn = (req, next) => {\n const platformId = inject(PLATFORM_ID);\n const config = inject(TICKERA_COMPONENTS_CONFIG) as TickeraComponentsConfig;\n\n if (isPlatformBrowser(platformId)) {\n const key = config.accessTokenKey ?? 'access_token';\n const token = localStorage.getItem(key);\n if (token) {\n req = req.clone({\n setHeaders: { Authorization: `Bearer ${token}` },\n });\n }\n }\n\n return next(req);\n};\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'app-button',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './app-button.component.html',\n styleUrl: './app-button.component.scss',\n})\nexport class AppButtonComponent {\n @Output() clicked = new EventEmitter<void>();\n @Input() disabled: boolean = false;\n @Input() loading: boolean = false;\n @Input() type: 'button' | 'submit' = 'button';\n @Input() variant: 'primary' | 'secondary' | 'tertiary' | 'success' | 'transparent' = 'primary';\n @Input() text: string = '';\n @Input() size: 'xs' | 'sm' | 'md' | 'lg' = 'md';\n @Input() loadingText: string = '';\n @Input() icon: string = '';\n\n handleClick() {\n this.clicked.emit();\n }\n\n get buttonClasses(): string {\n return [\n 'btn',\n `btn-${this.variant}`,\n `btn-${this.size}`,\n this.disabled ? 'btn-disabled' : '',\n this.loading ? 'btn-loading' : '',\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n","<button\n [type]=\"type\"\n [disabled]=\"loading || disabled\"\n [class]=\"buttonClasses\"\n (click)=\"handleClick()\"\n>\n @if (icon && !loading) {\n <i class=\"btn-icon\" [ngClass]=\"icon\"></i>\n }\n\n @if (loading) {\n <i class=\"btn-icon btn-icon-spin ri-refresh-line\"></i>\n }\n\n {{ loading ? loadingText : text }}\n</button>\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslocoModule } from '@jsverse/transloco';\nimport { RouterLink, RouterModule } from '@angular/router';\n\n@Component({\n selector: 'app-link-button',\n standalone: true,\n imports: [CommonModule, RouterLink, RouterModule, TranslocoModule],\n templateUrl: './app-link-button.component.html',\n styleUrls: ['../app-button/app-button.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class AppLinkButtonComponent {\n @Input() disabled: boolean = false;\n @Input() loading: boolean = false;\n @Input() target: '_blank' | '_self' | '_parent' | '_top' = '_self';\n @Input() text: string = '';\n @Input() icon: string = '';\n @Input() loadingText: string = '';\n @Input() route: string = '';\n @Input() queryParams: Record<string, any> = {};\n @Input() size: 'xs' | 'sm' | 'md' | 'lg' = 'md';\n @Input() variant: 'primary' | 'secondary' | 'tertiary' | 'success' | 'transparent' = 'primary';\n\n get buttonClasses(): string {\n return [\n 'btn',\n `btn-${this.variant}`,\n `btn-${this.size}`,\n this.disabled ? 'btn-disabled' : '',\n this.loading ? 'btn-loading' : '',\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n","<a\n class=\"{{ buttonClasses }}\"\n [routerLink]=\"!disabled ? route : null\"\n [queryParams]=\"queryParams\"\n [target]=\"target\"\n>\n @if (icon) {\n <i [class]=\"icon\"></i>\n }\n\n {{ loading ? loadingText : text }}\n</a>\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ALERT_ICONS } from '../../../constants/alerts';\n\n@Component({\n selector: 'app-alert',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class AppAlertComponent {\n @Input() type: 'success' | 'error' | 'warning' | 'info' = 'success';\n @Input() text: string = '';\n @Input() closeable: boolean = false;\n @Input() size: 'xs' | 'sm' | 'md' | 'lg' = 'md';\n\n get alertIcon(): string {\n return ALERT_ICONS[this.type] ?? ALERT_ICONS.info;\n }\n}\n","<div class=\"alert\" [class]=\"'alert--' + type + ' alert--' + size\" role=\"alert\">\n <div class=\"alert-content\">\n <i class=\"{{ alertIcon }}\"></i>\n <span>{{ text }}</span>\n </div>\n\n @if (closeable) {\n <span class=\"alert-close\">\n <i class=\"ri-close-line\"></i>\n </span>\n }\n</div>\n","import {\n Component,\n ViewEncapsulation,\n Input,\n Output,\n EventEmitter,\n WritableSignal,\n signal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'app-modal',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class AppModalComponent {\n @Input() title: string = '';\n @Input() disableClose: boolean = false;\n @Input() isOpen: WritableSignal<boolean> = signal(false);\n @Input() size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' = 'md';\n\n @Output() closeModal = new EventEmitter<void>();\n\n onCloseModal(): void {\n if (this.disableClose) return;\n\n this.closeModal.emit();\n }\n}\n","@if (isOpen()) {\n <div class=\"modal-overlay\">\n <div class=\"modal-backdrop\" (click)=\"onCloseModal()\"></div>\n\n <div class=\"modal-dialog\" [class]=\"'modal-dialog--' + size\">\n @if (!disableClose || !!title) {\n <div class=\"modal-header\">\n <h3 class=\"modal-title\">{{ title }}</h3>\n\n @if (!disableClose) {\n <button class=\"modal-close-button\" (click)=\"onCloseModal()\">×</button>\n }\n </div>\n }\n\n <div class=\"modal-body\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n}\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AppModalComponent } from '../../modals/modal/modal.component';\nimport { LoadingModalService } from '../../../services/loading-modal.service';\n\n@Component({\n selector: 'loading-modal',\n standalone: true,\n imports: [CommonModule, AppModalComponent],\n templateUrl: './loading-modal.component.html',\n styleUrls: ['./loading-modal.component.scss'],\n})\nexport class LoadingmModalComponent {\n constructor(private loadingModalService: LoadingModalService) {}\n\n get isOpen() {\n return this.loadingModalService.modalIsOpen;\n }\n\n get title() {\n return this.loadingModalService.title;\n }\n\n closeModal() {\n this.loadingModalService.close();\n }\n\n onCitySaved() {\n this.loadingModalService.close();\n }\n}\n","<app-modal [disableClose]=\"true\" [isOpen]=\"isOpen\" (closeModal)=\"closeModal()\">\n <div class=\"loading-modal-body\">\n <div role=\"status\">\n <div class=\"loading-modal-spinner-wrapper\">\n <div class=\"loading-modal-spinner\"></div>\n </div>\n <span class=\"loading-modal-hidden\">Loading...</span>\n </div>\n\n <p class=\"loading-modal-title\">{{ title() }}</p>\n </div>\n</app-modal>\n","import { Component, Input, Self, Optional } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { BASE_INPUT_CLASSES, ERROR_INPUT_CLASSES } from '../../../constants/form-fields';\n\n@Component({\n selector: 'form-input',\n standalone: true,\n imports: [FormsModule, CommonModule, ReactiveFormsModule],\n templateUrl: './form-input.component.html',\n styleUrls: ['./form-input.component.scss'],\n})\nexport class FormInputComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() type = 'text';\n @Input() name = '';\n @Input() id = '';\n @Input() placeholder = '';\n @Input() required = false;\n @Input() readonly = false;\n @Input() minlength: number | null = null;\n @Input() min: number | null = null;\n @Input() step: number | null = 1;\n @Input() pattern: string | null = null;\n @Input() fieldGroupClass: string = '';\n @Input() autocomplete: boolean = true;\n\n value: any = '';\n disabled = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Self() @Optional() public ngControl: NgControl,\n private transloco: TranslocoService,\n ) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInput(value: any): void {\n this.value = value;\n this.onChange(value);\n this.onTouched();\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n const dirty = control.dirty;\n const touched = control.touched;\n return control.invalid ? dirty || touched : false;\n }\n\n get errorMessage(): string {\n if (!this.ngControl?.errors) return '';\n\n const errors = this.ngControl.errors;\n const errorKey = Object.keys(errors)[0];\n\n if (errorKey === 'minlength') {\n return this.transloco.translate('formErrors.minlength', {\n length: errors[errorKey].requiredLength,\n });\n }\n\n if (errorKey === 'maxlength') {\n return this.transloco.translate('formErrors.maxlength', {\n length: errors[errorKey].requiredLength,\n });\n }\n\n if (errorKey === 'email') {\n return this.transloco.translate('formErrors.email');\n }\n\n return this.transloco.translate(`formErrors.${errorKey}`);\n }\n\n get inputClasses(): string {\n return this.showError ? ERROR_INPUT_CLASSES : BASE_INPUT_CLASSES;\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' w-full';\n }\n\n return baseClasses;\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"form-input-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"form-input-required\">*</span>\n }\n </label>\n }\n\n <div class=\"relative\">\n <input\n [type]=\"type\"\n [id]=\"inputId\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [minlength]=\"minlength\"\n [pattern]=\"pattern || ''\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [class.disabled]=\"readonly\"\n [class.error]=\"showError\"\n class=\"form-input\"\n [autocomplete]=\"autocomplete\"\n [min]=\"min\"\n [step]=\"step\"\n />\n </div>\n\n @if (showError) {\n <div class=\"form-input-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n","import { Component, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { TranslocoModule, TranslocoService } from '@jsverse/transloco';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\nimport { FormInputComponent } from '../../forms/form-input/form-input.component';\nimport { AppModalComponent } from '../../modals/modal/modal.component';\nimport { AppAlertComponent } from '../../feedback/alert/alert.component';\nimport { DeleteConfirmationService } from '../../../services/delete-confirmation.service';\n\n@Component({\n selector: 'delete-confirmation',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n TranslocoModule,\n AppButtonComponent,\n FormInputComponent,\n AppModalComponent,\n AppAlertComponent,\n ],\n templateUrl: './delete-confirmation.component.html',\n styleUrls: ['./delete-confirmation.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class DeleteConfirmationComponent {\n deleteConfirmationForm: FormGroup;\n\n constructor(\n private fb: FormBuilder,\n private deleteConfirmationService: DeleteConfirmationService,\n protected transloco: TranslocoService,\n ) {\n this.deleteConfirmationForm = this.fb.group({\n confirmationText: ['', [Validators.required]],\n });\n }\n\n get title() {\n return this.deleteConfirmationService.modalTitle();\n }\n\n get resourceName() {\n return this.deleteConfirmationService.modalResourceName();\n }\n\n get confirmationText() {\n return this.deleteConfirmationService.modalConfirmationText();\n }\n\n get isOpen() {\n return this.deleteConfirmationService.modalIsOpen;\n }\n\n get isConfirmationValid(): boolean {\n const value = this.deleteConfirmationForm.value.confirmationText?.trim()?.toLowerCase();\n const confirmation = this.confirmationText?.trim()?.toLowerCase();\n return value == confirmation;\n }\n\n onCloseModal(): void {\n this.deleteConfirmationForm.reset();\n this.deleteConfirmationService.close();\n }\n\n onConfirmDelete(): void {\n const callback = this.deleteConfirmationService.getConfirmDeleteCallback();\n if (callback) {\n callback();\n }\n this.deleteConfirmationForm.reset();\n this.deleteConfirmationService.close();\n }\n}\n","@if (isOpen()) {\n <app-modal [title]=\"title\" [isOpen]=\"isOpen\" (closeModal)=\"onCloseModal()\">\n <form\n [formGroup]=\"deleteConfirmationForm\"\n method=\"POST\"\n class=\"delete-confirmation-content\"\n (ngSubmit)=\"onConfirmDelete()\"\n >\n <app-alert\n type=\"warning\"\n [text]=\"'deleteConfirmation.warning' | transloco\"\n size=\"sm\"\n [closeable]=\"false\"\n />\n\n <p class=\"delete-confirmation-instructions\">\n {{ 'deleteConfirmation.instructions' | transloco }}\n\n <span class=\"delete-confirmation-highlight\">\n {{ confirmationText }}\n </span>\n </p>\n\n <form-input\n name=\"confirmationText\"\n type=\"text\"\n class=\"delete-confirmation-field\"\n [required]=\"true\"\n [autocomplete]=\"false\"\n formControlName=\"confirmationText\"\n [placeholder]=\"\n transloco.translate('deleteConfirmation.placeholder', { text: confirmationText })\n \"\n />\n\n <div class=\"delete-confirmation-actions\">\n <app-button\n variant=\"tertiary\"\n [text]=\"'deleteConfirmation.cancel' | transloco\"\n (click)=\"onCloseModal()\"\n size=\"sm\"\n />\n\n <app-button\n type=\"submit\"\n variant=\"primary\"\n [text]=\"'deleteConfirmation.delete' | transloco\"\n [disabled]=\"!isConfirmationValid\"\n size=\"sm\"\n />\n </div>\n </form>\n </app-modal>\n}\n","import { Component, Input } from '@angular/core';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { Auditable } from '../../../interfaces/auditable.interface';\n\n@Component({\n selector: 'app-audit-information',\n standalone: true,\n imports: [CommonModule, DatePipe],\n templateUrl: './audit-information.component.html',\n styleUrls: ['./audit-information.component.scss'],\n})\nexport class AuditInformationComponent {\n @Input() data: Auditable | null = null;\n}\n","@if (data) {\n <div class=\"audit-information\">\n <div class=\"audit-information-section\">\n <div class=\"audit-information-header\">\n <p class=\"audit-information-header-title\">Información de auditoria</p>\n </div>\n\n <div class=\"audit-information-body\">\n <ul class=\"audit-information-list\">\n <li class=\"audit-information-item\">\n <span class=\"audit-information-label\">Fecha de creación:</span>\n <span>{{ data.created_at | date: 'medium' }}</span>\n </li>\n\n @if (data.created_by_admin) {\n <li class=\"audit-information-item\">\n <span class=\"audit-information-label\">Creado por:</span>\n <span>\n {{ data.created_by_admin.first_name }} - {{ data.created_by_admin.email }}\n </span>\n </li>\n }\n\n @if (data.updated_at) {\n <li class=\"audit-information-item\">\n <span class=\"audit-information-label\">Última actualización:</span>\n <span>{{ data.updated_at | date: 'medium' }}</span>\n </li>\n }\n\n @if (data.updated_by_admin) {\n <li class=\"audit-information-item\">\n <span class=\"audit-information-label\">Actualizado por:</span>\n <span>\n {{ data.updated_by_admin.first_name }} - {{ data.updated_by_admin.email }}\n </span>\n </li>\n }\n\n @if (data.is_published && data.published_at) {\n <li class=\"audit-information-item\">\n <span class=\"audit-information-label\">Fecha de publicación:</span>\n <span>{{ data.published_at | date: 'medium' }}</span>\n </li>\n }\n\n @if (data.is_published && data.published_by_admin) {\n <li class=\"audit-information-item\">\n <span class=\"audit-information-label\">Publicado por:</span>\n <span>\n {{ data.published_by_admin.first_name }} - {{ data.published_by_admin.email }}\n </span>\n </li>\n }\n </ul>\n </div>\n </div>\n </div>\n}\n","import { Component, EventEmitter, Input, Output, Type, Injector } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'dynamic-table',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './dynamic-table.component.html',\n styleUrls: ['./dynamic-table.component.scss'],\n})\nexport class DynamicTableComponent {\n constructor(private injector: Injector) {}\n\n @Input() title: string = '';\n @Input() data: any[] = [];\n @Input() headers: any[] = [];\n @Input() columnComponents: { [key: string]: Type<any> } = {};\n\n // Inputs necesarios para la paginación remota\n @Input() isLoading: boolean = true;\n @Input() totalItems: number = 0;\n @Input() itemsPerPage: number = 10;\n @Input() currentPage: number = 1;\n\n // Eventos para avisar al Backend\n @Output() pageChange = new EventEmitter<number>();\n @Output() searchChange = new EventEmitter<string>();\n\n // Visualización de paginación\n @Input() showPagination: boolean = true;\n\n // Visualización de búsqueda\n @Input() showSearch: boolean = true;\n\n // Visualización de título\n @Input() showTitle: boolean = true;\n\n get totalPages(): number {\n return Math.ceil(this.totalItems / this.itemsPerPage) || 1;\n }\n\n onSearch(event: any) {\n this.data = [];\n const value = event.target.value;\n this.searchChange.emit(value); // El padre recibe el término y hace el fetch\n }\n\n changePage(delta: number) {\n const newPage = this.currentPage + delta;\n if (newPage > 0 && newPage <= this.totalPages) {\n this.pageChange.emit(newPage); // El padre recibe la nueva página\n }\n }\n\n createInjector(row: any): Injector {\n return Injector.create({\n providers: [{ provide: 'ROW_DATA', useValue: row }],\n parent: this.injector,\n });\n }\n}\n","<div class=\"dynamic-table\">\n @if (showTitle || showSearch) {\n <div class=\"dynamic-table-toolbar\">\n @if (showTitle) {\n <h2 class=\"dynamic-table-title\">{{ title }}</h2>\n }\n\n @if (showSearch) {\n <input\n type=\"text\"\n (input)=\"onSearch($event)\"\n placeholder=\"Buscar...\"\n class=\"dynamic-table-search\"\n />\n }\n </div>\n }\n\n <div class=\"dynamic-table-scroll\">\n <table class=\"dynamic-table-table\">\n <thead class=\"dynamic-table-head\">\n <tr>\n @for (header of headers; track header.key) {\n <th class=\"dynamic-table-head-cell\">\n {{ header.label }}\n </th>\n }\n </tr>\n </thead>\n\n <tbody class=\"dynamic-table-body\">\n @if (isLoading) {\n <tr class=\"dynamic-table-row\">\n @for (header of headers; track header.key) {\n <td class=\"dynamic-table-cell\">\n <div class=\"dynamic-table-skeleton\"></div>\n </td>\n }\n </tr>\n }\n\n @for (row of data; track row) {\n <tr class=\"dynamic-table-row\">\n @for (header of headers; track header.key) {\n <td class=\"dynamic-table-cell dynamic-table-cell--nowrap\">\n @if (columnComponents[header.key]) {\n <ng-container\n *ngComponentOutlet=\"columnComponents[header.key]; injector: createInjector(row)\"\n ></ng-container>\n } @else {\n {{ row[header.key] || '---' }}\n }\n </td>\n }\n </tr>\n }\n\n @if ((!data || data.length < 1) && !isLoading) {\n <tr>\n <td [attr.colspan]=\"headers.length\" class=\"dynamic-table-empty\">\n No se encontraron registros en el servidor.\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n @if (showPagination) {\n <div class=\"dynamic-table-pagination\">\n <div class=\"dynamic-table-pagination-info\">\n Mostrando página\n <span class=\"dynamic-table-pagination-strong\">{{ currentPage }}</span> de\n <span class=\"dynamic-table-pagination-strong\">{{ totalPages }}</span>\n <span class=\"dynamic-table-pagination-total\">({{ totalItems }} registros totales)</span>\n </div>\n\n <div class=\"dynamic-table-pagination-actions\">\n <button\n (click)=\"changePage(-1)\"\n [disabled]=\"currentPage === 1\"\n class=\"dynamic-table-pagination-button\"\n >\n Anterior\n </button>\n <button\n (click)=\"changePage(1)\"\n [disabled]=\"currentPage >= totalPages\"\n class=\"dynamic-table-pagination-button\"\n >\n Siguiente\n </button>\n </div>\n </div>\n }\n</div>\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslocoService, TranslocoModule } from '@jsverse/transloco';\nimport { setStoredLanguage } from '../../../i18n/language.utils';\n\n@Component({\n selector: 'language-switcher',\n standalone: true,\n imports: [CommonModule, TranslocoModule],\n templateUrl: './language-switcher.component.html',\n styleUrls: ['./language-switcher.component.scss'],\n})\nexport class LanguageSwitcherComponent {\n availableLangs = ['es', 'en'];\n\n constructor(protected transloco: TranslocoService) {}\n\n get activeLang(): string {\n return this.transloco.getActiveLang();\n }\n\n switchLang(lang: string): void {\n this.transloco.setActiveLang(lang);\n setStoredLanguage(lang);\n }\n}\n","<div class=\"lang-switcher\">\n @for (lang of availableLangs; track lang) {\n <button\n (click)=\"switchLang(lang)\"\n class=\"lang-switcher-btn\"\n [class.active]=\"activeLang === lang\"\n [class.inactive]=\"activeLang !== lang\"\n >\n {{ lang | uppercase }}\n </button>\n }\n</div>\n","import { Component, Input, Self, Optional } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\n\n@Component({\n selector: 'form-select',\n standalone: true,\n imports: [FormsModule, CommonModule, ReactiveFormsModule],\n templateUrl: './form-select.component.html',\n styleUrls: ['./form-select.component.scss'],\n})\nexport class FormSelectComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() name = '';\n @Input() id = '';\n @Input() placeholder = 'Seleccione una opción';\n @Input() required = false;\n @Input() disabled = false;\n @Input() readonly = false;\n @Input() options: SelectOption[] = [];\n @Input() fieldGroupClass: string = '';\n @Input() showDefaultOption: boolean = true;\n @Input() defaultOptionLabel: string = '';\n\n value: any = '';\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Self() @Optional() public ngControl: NgControl,\n private transloco: TranslocoService,\n ) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onSelectChange(value: any): void {\n this.value = value;\n this.onChange(value);\n this.onTouched();\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n const dirty = control.dirty;\n const touched = control.touched;\n return control.invalid ? dirty || touched : false;\n }\n\n get errorMessage(): string {\n if (!this.ngControl?.errors) return '';\n\n const errors = this.ngControl.errors;\n const errorKey = Object.keys(errors)[0];\n\n return this.transloco.translate(\n `formErrors.${errorKey}`,\n {},\n this.transloco.translate('formErrors.invalidSelection'),\n );\n }\n\n get resolvedDefaultOptionLabel(): string {\n return this.defaultOptionLabel || this.transloco.translate('common.selectOption');\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' w-full';\n }\n\n return baseClasses;\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"form-select-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"form-select-required\">*</span>\n }\n </label>\n }\n\n <div class=\"relative\">\n <select\n [id]=\"inputId\"\n [name]=\"name\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onSelectChange($event)\"\n (blur)=\"onTouched()\"\n class=\"form-select\"\n [class.disabled]=\"readonly\"\n [class.error]=\"showError\"\n >\n @if (showDefaultOption) {\n <option [value]=\"null\" disabled selected>{{ resolvedDefaultOptionLabel }}</option>\n }\n\n @for (option of options; track option.value) {\n <option [value]=\"option.value\" [disabled]=\"option.disabled\">\n {{ option.label }}\n </option>\n }\n </select>\n </div>\n\n @if (showError) {\n <div class=\"form-select-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n","import { Component, Input, Self, Optional } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { TranslocoService } from '@jsverse/transloco';\n\n@Component({\n selector: 'form-textarea',\n standalone: true,\n imports: [FormsModule, CommonModule, ReactiveFormsModule],\n templateUrl: './form-textarea.component.html',\n styleUrls: ['./form-textarea.component.scss'],\n})\nexport class FormTextareaComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() name = '';\n @Input() id = '';\n @Input() placeholder = '';\n @Input() required = false;\n @Input() readonly = false;\n @Input() minlength: number | null = null;\n @Input() maxlength: number | null = null;\n @Input() rows: number = 4;\n @Input() cols: number | null = null;\n @Input() fieldGroupClass: string = '';\n\n value: any = '';\n disabled = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Self() @Optional() public ngControl: NgControl,\n private transloco: TranslocoService,\n ) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInput(value: any): void {\n this.value = value;\n this.onChange(value);\n this.onTouched();\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n const dirty = control.dirty;\n const touched = control.touched;\n return control.invalid ? dirty || touched : false;\n }\n\n get errorMessage(): string {\n if (!this.ngControl?.errors) return '';\n\n const errors = this.ngControl.errors;\n const errorKey = Object.keys(errors)[0];\n\n if (errorKey === 'minlength') {\n return this.transloco.translate('formErrors.minlength', {\n length: errors[errorKey].requiredLength,\n });\n }\n\n if (errorKey === 'maxlength') {\n return this.transloco.translate('formErrors.maxlength', {\n length: errors[errorKey].requiredLength,\n });\n }\n\n return this.transloco.translate(`formErrors.${errorKey}`);\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' w-full';\n }\n\n return baseClasses;\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"form-textarea-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"form-textarea-required\">*</span>\n }\n </label>\n }\n\n <div class=\"relative\">\n <textarea\n [id]=\"inputId\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [minlength]=\"minlength\"\n [maxlength]=\"maxlength\"\n [rows]=\"rows\"\n [cols]=\"cols\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n class=\"form-textarea\"\n [class.disabled]=\"readonly\"\n [class.error]=\"showError\"\n ></textarea>\n </div>\n\n @if (showError) {\n <div class=\"form-textarea-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n","import { Component, Input, Self, Optional, OnInit, OnDestroy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { TranslocoService } from '@jsverse/transloco';\nimport {\n Editor,\n NgxEditorComponent,\n NgxEditorMenuComponent,\n DEFAULT_TOOLBAR,\n Toolbar,\n toHTML,\n} from 'ngx-editor';\n\n@Component({\n selector: 'form-editor',\n standalone: true,\n imports: [\n FormsModule,\n CommonModule,\n ReactiveFormsModule,\n NgxEditorComponent,\n NgxEditorMenuComponent,\n ],\n templateUrl: './form-editor.component.html',\n styleUrls: ['./form-editor.component.scss'],\n})\nexport class FormEditorComponent implements ControlValueAccessor, OnInit, OnDestroy {\n @Input() label = '';\n @Input() name = '';\n @Input() id = '';\n @Input() placeholder = '';\n @Input() required = false;\n @Input() readonly = false;\n @Input() toolbar: Toolbar = DEFAULT_TOOLBAR;\n @Input() fieldGroupClass = '';\n\n editor!: Editor;\n value: string = '';\n disabled = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n private subscription: Subscription | null = null;\n\n constructor(\n @Self() @Optional() public ngControl: NgControl,\n private transloco: TranslocoService,\n ) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n ngOnInit(): void {\n this.editor = new Editor();\n\n if (this.value) {\n this.editor.setContent(this.value);\n }\n\n this.subscription = this.editor.valueChanges\n .pipe(distinctUntilChanged())\n .subscribe((doc: Record<string, unknown>) => {\n this.value = toHTML(doc);\n this.onChange(this.value);\n this.onTouched();\n });\n }\n\n ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n this.editor?.destroy();\n }\n\n writeValue(value: any): void {\n this.value = value ?? '';\n\n if (this.editor) {\n this.editor.setContent(value ?? null);\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n return control.invalid ? control.dirty || control.touched : false;\n }\n\n get errorMessage(): string {\n if (!this.ngControl?.errors) return '';\n\n const errors = this.ngControl.errors;\n const errorKey = Object.keys(errors)[0];\n\n if (errorKey === 'minlength') {\n return this.transloco.translate('formErrors.minlength', {\n length: errors[errorKey].requiredLength,\n });\n }\n\n if (errorKey === 'maxlength') {\n return this.transloco.translate('formErrors.maxlength', {\n length: errors[errorKey].requiredLength,\n });\n }\n\n return this.transloco.translate(\n `formErrors.${errorKey}`,\n {},\n this.transloco.translate('formErrors.invalidField'),\n );\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' w-full';\n }\n\n return baseClasses;\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"form-editor-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"form-editor-required\">*</span>\n }\n </label>\n }\n\n <div class=\"form-editor-wrapper\" [class.disabled]=\"disabled\">\n <ngx-editor [editor]=\"editor\" outputFormat=\"html\" [placeholder]=\"placeholder\">\n <ngx-editor-menu\n [editor]=\"editor\"\n [toolbar]=\"toolbar\"\n [disabled]=\"disabled\"\n ></ngx-editor-menu>\n </ngx-editor>\n </div>\n\n @if (showError) {\n <div class=\"form-editor-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n","import {\n Component,\n Input,\n Self,\n Optional,\n ElementRef,\n HostListener,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n selector: 'color-picker',\n standalone: true,\n imports: [FormsModule, CommonModule, ReactiveFormsModule],\n templateUrl: './color-picker.component.html',\n styleUrls: ['./color-picker.component.scss'],\n})\nexport class ColorPickerComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() name = '';\n @Input() id = '';\n @Input() placeholder = '#000000';\n @Input() required = false;\n @Input() readonly = false;\n @Input() fieldGroupClass: string = '';\n @Input() showPreview = true;\n @Input() presetColors: string[] = [\n '#000000',\n '#FFFFFF',\n '#EF4444',\n '#F97316',\n '#F59E0B',\n '#EAB308',\n '#84CC16',\n '#22C55E',\n '#10B981',\n '#14B8A6',\n '#06B6D4',\n '#0EA5E9',\n '#3B82F6',\n '#6366F1',\n '#8B5CF6',\n '#A855F7',\n '#D946EF',\n '#EC4899',\n '#F43F5E',\n '#6B7280',\n ];\n @Output() colorChange = new EventEmitter<string>();\n\n value: string = '#000000';\n disabled = false;\n isDropdownOpen = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Self() @Optional() public ngControl: NgControl,\n private elementRef: ElementRef,\n ) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n const clickedInside = this.elementRef.nativeElement.contains(event.target);\n if (!clickedInside && this.isDropdownOpen) {\n this.isDropdownOpen = false;\n }\n }\n\n // Control value accessor methods\n writeValue(value: string): void {\n if (value) {\n this.value = value;\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onColorChange(color: string): void {\n this.value = color;\n this.onChange(color);\n this.onTouched();\n }\n\n onInputColorChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n this.value = input.value;\n this.onChange(input.value);\n this.onTouched();\n this.colorChange.emit(input.value);\n }\n\n toggleDropdown(): void {\n if (this.disabled || this.readonly) return;\n this.isDropdownOpen = !this.isDropdownOpen;\n }\n\n selectPresetColor(color: string): void {\n this.onColorChange(color);\n this.colorChange.emit(color);\n this.isDropdownOpen = false;\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n const dirty = control.dirty;\n const touched = control.touched;\n return control.invalid ? dirty || touched : false;\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' w-full';\n }\n\n return baseClasses;\n }\n\n isValidHexColor(color: string): boolean {\n return /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(color);\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"color-picker-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"color-picker-required\">*</span>\n }\n </label>\n }\n\n <div class=\"relative\">\n <div class=\"color-picker-row\">\n <!-- Color Input -->\n <div class=\"color-picker-input-wrapper\">\n <input\n type=\"text\"\n [id]=\"inputId\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onInputColorChange($event)\"\n (blur)=\"onTouched()\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n class=\"color-picker-input\"\n [class.disabled]=\"readonly\"\n [class.error]=\"showError\"\n pattern=\"^#[0-9A-Fa-f]{6}$\"\n />\n\n <!-- Native Color Picker (Hidden) -->\n <input\n type=\"color\"\n class=\"color-picker-native-input\"\n [disabled]=\"disabled || readonly\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onColorChange($event)\"\n />\n </div>\n\n <!-- Color Preview -->\n @if (showPreview) {\n <div class=\"color-picker-preview-wrapper\">\n <div\n class=\"color-picker-swatch\"\n [style.background-color]=\"value\"\n (click)=\"toggleDropdown()\"\n [class.disabled]=\"disabled || readonly\"\n ></div>\n </div>\n }\n </div>\n\n <!-- Color Presets Dropdown -->\n @if (isDropdownOpen && !disabled && !readonly) {\n <div class=\"color-picker-dropdown\">\n <div class=\"color-picker-presets\">\n @for (color of presetColors; track color) {\n <button\n type=\"button\"\n class=\"color-picker-preset-button\"\n [style.background-color]=\"color\"\n (click)=\"selectPresetColor(color)\"\n [attr.aria-label]=\"`Select color ${color}`\"\n ></button>\n }\n </div>\n\n <!-- Custom Color Input -->\n <div class=\"color-picker-custom\">\n <label class=\"color-picker-custom-label\">Custom color:</label>\n <input\n type=\"color\"\n class=\"color-picker-custom-input\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onColorChange($event)\"\n />\n </div>\n </div>\n }\n </div>\n\n @if (showError) {\n <div class=\"color-picker-error-message\">Please enter a valid hex color (e.g., #FF5733)</div>\n }\n</div>\n","import { Component, Input, Self, Optional } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { TranslocoService } from '@jsverse/transloco';\n\n@Component({\n selector: 'date-input',\n standalone: true,\n imports: [FormsModule, CommonModule, ReactiveFormsModule],\n templateUrl: './date-input.component.html',\n styleUrls: ['./date-input.component.scss'],\n})\nexport class DateInputComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() type = 'date';\n @Input() includeTime = false;\n @Input() name = '';\n @Input() id = '';\n @Input() placeholder = '';\n @Input() required = false;\n @Input() readonly = false;\n @Input() min: string | null = null;\n @Input() max: string | null = null;\n @Input() fieldGroupClass: string = '';\n @Input() dateFormat: string = 'yyyy-MM-dd';\n\n value: any = '';\n disabled = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Self() @Optional() public ngControl: NgControl,\n private transloco: TranslocoService,\n ) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n writeValue(value: any): void {\n if (value) {\n if (value instanceof Date) {\n this.value = this.formatDateForInput(value);\n } else if (typeof value === 'string') {\n this.value = value;\n } else {\n this.value = '';\n }\n } else {\n this.value = '';\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInput(value: any): void {\n this.value = value;\n const dateValue = value ? new Date(value) : null;\n this.onChange(dateValue);\n this.onTouched();\n }\n\n private formatDateForInput(date: Date): string {\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n\n if (this.includeTime) {\n const hours = String(date.getHours()).padStart(2, '0');\n const minutes = String(date.getMinutes()).padStart(2, '0');\n return `${year}-${month}-${day}T${hours}:${minutes}`;\n }\n\n return `${year}-${month}-${day}`;\n }\n\n private parseDateFromString(dateString: string): Date | null {\n if (!dateString) return null;\n const date = new Date(dateString);\n return isNaN(date.getTime()) ? null : date;\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n const dirty = control.dirty;\n const touched = control.touched;\n return control.invalid ? dirty || touched : false;\n }\n\n get errorMessage(): string {\n if (!this.ngControl?.errors) return '';\n\n const errors = this.ngControl.errors;\n const errorKey = Object.keys(errors)[0];\n\n if (errorKey === 'minlength') {\n return this.transloco.translate('formErrors.minlength', {\n length: errors[errorKey].requiredLength,\n });\n }\n\n return this.transloco.translate(\n `formErrors.${errorKey}`,\n {},\n this.transloco.translate('formErrors.invalidField'),\n );\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' w-full';\n }\n\n return baseClasses;\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"date-input-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"date-input-required\">*</span>\n }\n </label>\n }\n\n <div class=\"relative\">\n <input\n [type]=\"includeTime ? 'datetime-local' : type\"\n [id]=\"inputId\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [min]=\"min\"\n [max]=\"max\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n [disabled]=\"disabled\"\n class=\"date-input\"\n [class.disabled]=\"readonly\"\n [class.error]=\"showError\"\n [readonly]=\"readonly\"\n />\n </div>\n\n @if (showError) {\n <div class=\"date-input-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n","import { Component, Input, Self, Optional, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n selector: 'toggle-switch',\n standalone: true,\n imports: [FormsModule, CommonModule, ReactiveFormsModule],\n templateUrl: './toggle-switch.component.html',\n styleUrls: ['./toggle-switch.component.scss'],\n})\nexport class ToggleSwitchComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() name = '';\n @Input() id = '';\n @Input() required = false;\n @Input() disabled = false;\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\n @Input() fieldGroupClass: string = '';\n @Input() description = '';\n @Output() toggleClick = new EventEmitter<boolean>();\n\n value: boolean = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(@Self() @Optional() public ngControl: NgControl) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n // Control value accessor methods\n writeValue(value: any): void {\n this.value = value ?? false;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onToggle(): void {\n this.value = !this.value;\n this.onChange(this.value);\n this.onTouched();\n this.toggleClick.emit(this.value);\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' w-full';\n }\n\n return baseClasses;\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"toggle-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"toggle-required\">*</span>\n }\n </label>\n }\n\n <div class=\"toggle-container\">\n <button\n type=\"button\"\n role=\"switch\"\n [id]=\"inputId\"\n [name]=\"name\"\n [attr.aria-checked]=\"value\"\n [attr.aria-required]=\"required\"\n [disabled]=\"disabled\"\n [class]=\"\n 'toggle-switch ' +\n size +\n (value ? ' checked' : ' unchecked') +\n (disabled ? ' disabled' : '')\n \"\n (click)=\"onToggle()\"\n >\n <span\n [class]=\"\n 'toggle-thumb ' +\n size +\n (value ? ' checked' : ' unchecked') +\n (disabled ? ' disabled' : '')\n \"\n ></span>\n </button>\n\n @if (description) {\n <span class=\"toggle-description\">{{ description }}</span>\n }\n </div>\n\n <!-- Hidden checkbox for form submission and accessibility -->\n <input\n type=\"checkbox\"\n [id]=\"inputId + '-hidden'\"\n [name]=\"name\"\n [checked]=\"value\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n class=\"toggle-hidden\"\n (change)=\"onToggle()\"\n />\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FileType } from '../../../enums/file-type.enum';\nimport { UploadedFile } from '../../../interfaces/uploaded-file.interface';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\n\n@Component({\n selector: 'file-upload-preview',\n standalone: true,\n imports: [FormsModule, CommonModule, ReactiveFormsModule, AppButtonComponent],\n templateUrl: './file-upload-preview.component.html',\n styleUrls: ['./file-upload-preview.component.scss'],\n})\nexport class FileUploadPreviewComponent {\n @Input({ required: true }) file: UploadedFile = {} as UploadedFile;\n @Output() remove = new EventEmitter<UploadedFile>();\n\n removeFile(): void {\n this.remove.emit(this.file);\n }\n\n getFileType(file: UploadedFile): FileType {\n if (file.type.startsWith('image/')) return FileType.IMAGE;\n if (file.type === 'application/pdf') return FileType.PDF;\n if (\n file.type.includes('spreadsheet') ||\n file.type.includes('excel') ||\n file.extension === 'xlsx' ||\n file.extension === 'xls' ||\n file.extension === 'csv'\n ) {\n return FileType.EXCEL;\n }\n if (\n file.type.includes('word') ||\n file.type.includes('document') ||\n file.extension === 'docx' ||\n file.extension === 'doc'\n ) {\n return FileType.WORD;\n }\n if (file.type.startsWith('text/') || file.extension === 'txt') {\n return FileType.TEXT;\n }\n return FileType.DEFAULT;\n }\n\n getFileIcon(fileType: FileType): string {\n switch (fileType) {\n case FileType.IMAGE:\n return 'ri-image-line';\n case FileType.PDF:\n return 'ri-file-pdf-line';\n case FileType.EXCEL:\n return 'ri-file-excel-line';\n case FileType.WORD:\n return 'ri-file-word-line';\n case FileType.TEXT:\n return 'ri-file-text-line';\n default:\n return 'ri-file-line';\n }\n }\n\n getFileTypeIcon(file: UploadedFile): string {\n return this.getFileIcon(this.getFileType(file));\n }\n\n formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 Bytes';\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n }\n}\n","<div class=\"file-preview-item\">\n <div class=\"file-preview-content\">\n <!-- File Preview/Icon -->\n <div class=\"file-preview-icon-wrapper\">\n @if (file.preview) {\n <img [src]=\"file.preview\" [alt]=\"file.name\" class=\"file-preview-image\" />\n } @else {\n <div class=\"file-preview-icon-placeholder\">\n <i [class]=\"getFileTypeIcon(file) + ' file-preview-icon'\"></i>\n </div>\n }\n </div>\n\n <!-- File Info -->\n <div class=\"file-preview-info\">\n <p class=\"file-preview-name\">\n {{ file.name }}\n </p>\n <p class=\"file-preview-meta\">\n @if (!!file.size) {\n {{ formatFileSize(file.size) }}\n }\n @if (file.extension) {\n • {{ file.extension.toUpperCase() }}\n }\n </p>\n </div>\n </div>\n\n <!-- Actions -->\n <div class=\"file-preview-actions\">\n <app-button\n icon=\"ri-delete-bin-line\"\n (clicked)=\"removeFile()\"\n variant=\"primary\"\n size=\"xs\"\n title=\"Eliminar archivo\"\n />\n </div>\n</div>\n","import { Component, Input, Self, Optional, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { TranslocoService, TranslocoModule } from '@jsverse/transloco';\nimport { FileUploadConfig } from '../../../interfaces/file-upload-config.interface';\nimport { UploadedFile } from '../../../interfaces/uploaded-file.interface';\nimport { FileType } from '../../../enums/file-type.enum';\nimport { FileUploadPreviewComponent } from '../file-upload-preview/file-upload-preview.component';\n\n@Component({\n selector: 'file-upload',\n standalone: true,\n imports: [\n FormsModule,\n CommonModule,\n ReactiveFormsModule,\n TranslocoModule,\n FileUploadPreviewComponent,\n ],\n templateUrl: './file-upload.component.html',\n styleUrls: ['./file-upload.component.scss'],\n})\nexport class FileUploadComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() name = '';\n @Input() id = '';\n @Input() required = false;\n @Input() readonly = false;\n @Input() fieldGroupClass: string = '';\n @Input() config: FileUploadConfig = {};\n @Input() accept: string = '*/*';\n\n @Output() fileSelected = new EventEmitter<UploadedFile[]>();\n @Output() fileRemoved = new EventEmitter<UploadedFile>();\n @Output() validationError = new EventEmitter<string>();\n\n files: UploadedFile[] = [];\n disabled = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n dragOver = false;\n\n constructor(\n @Self() @Optional() public ngControl: NgControl,\n private transloco: TranslocoService,\n ) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n writeValue(value: UploadedFile[] | null): void {\n this.files = value || [];\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onFileSelect(event: Event): void {\n const input = event.target as HTMLInputElement;\n if (input.files && input.files.length > 0) {\n this.handleFiles(Array.from(input.files));\n }\n input.value = '';\n }\n\n onDrop(event: DragEvent): void {\n event.preventDefault();\n this.dragOver = false;\n\n if (event.dataTransfer?.files && event.dataTransfer.files.length > 0) {\n this.handleFiles(Array.from(event.dataTransfer.files));\n }\n }\n\n onDragOver(event: DragEvent): void {\n event.preventDefault();\n this.dragOver = true;\n }\n\n onDragLeave(event: DragEvent): void {\n event.preventDefault();\n this.dragOver = false;\n }\n\n private async handleFiles(fileList: File[]): Promise<void> {\n const newFiles: UploadedFile[] = [];\n\n for (const file of fileList) {\n const validationError = this.validateFile(file);\n if (validationError) {\n this.validationError.emit(validationError);\n continue;\n }\n\n const uploadedFile: UploadedFile = {\n file,\n name: file.name,\n size: file.size,\n type: file.type,\n extension: this.getFileExtension(file.name),\n };\n\n if (this.isImage(file)) {\n uploadedFile.preview = await this.generateImagePreview(file);\n }\n\n newFiles.push(uploadedFile);\n }\n\n if (this.config.multiple) {\n const maxFiles = this.config.maxFiles || 10;\n const totalFiles = [...this.files, ...newFiles].slice(0, maxFiles);\n this.files = totalFiles;\n } else {\n this.files = newFiles.slice(0, 1);\n }\n\n this.onChange(this.files);\n this.onTouched();\n this.fileSelected.emit(this.files);\n }\n\n private validateFile(file: File): string | null {\n if (this.config.maxFileSize && file.size > this.config.maxFileSize) {\n const maxSizeMB = this.config.maxFileSize / (1024 * 1024);\n return this.transloco.translate('fileUpload.sizeError', {\n fileName: file.name,\n maxSize: maxSizeMB.toFixed(2),\n });\n }\n\n if (this.config.allowedExtensions && this.config.allowedExtensions.length > 0) {\n const extension = this.getFileExtension(file.name);\n if (!this.config.allowedExtensions.includes(extension)) {\n return this.transloco.translate('fileUpload.extensionError', {\n fileName: file.name,\n extensions: this.config.allowedExtensions.join(', '),\n });\n }\n }\n\n return null;\n }\n\n private getFileExtension(filename: string): string {\n return filename.split('.').pop()?.toLowerCase() || '';\n }\n\n private isImage(file: File): boolean {\n return file.type.startsWith('image/');\n }\n\n private async generateImagePreview(file: File): Promise<string> {\n return new Promise((resolve) => {\n const reader = new FileReader();\n reader.onload = (e) => {\n resolve(e.target?.result as string);\n };\n reader.readAsDataURL(file);\n });\n }\n\n removeFile(index: number): void {\n const removedFile = this.files[index];\n this.files.splice(index, 1);\n this.onChange(this.files);\n this.onTouched();\n this.fileRemoved.emit(removedFile);\n }\n\n getFileType(file: UploadedFile): FileType {\n if (file.type.startsWith('image/')) return FileType.IMAGE;\n if (file.type === 'application/pdf') return FileType.PDF;\n if (\n file.type.includes('spreadsheet') ||\n file.type.includes('excel') ||\n file.extension === 'xlsx' ||\n file.extension === 'xls' ||\n file.extension === 'csv'\n ) {\n return FileType.EXCEL;\n }\n if (\n file.type.includes('word') ||\n file.type.includes('document') ||\n file.extension === 'docx' ||\n file.extension === 'doc'\n ) {\n return FileType.WORD;\n }\n if (file.type.startsWith('text/') || file.extension === 'txt') {\n return FileType.TEXT;\n }\n return FileType.DEFAULT;\n }\n\n getFileIcon(fileType: FileType): string {\n switch (fileType) {\n case FileType.IMAGE:\n return 'ri-image-line';\n case FileType.PDF:\n return 'ri-file-pdf-line';\n case FileType.EXCEL:\n return 'ri-file-excel-line';\n case FileType.WORD:\n return 'ri-file-word-line';\n case FileType.TEXT:\n return 'ri-file-text-line';\n default:\n return 'ri-file-line';\n }\n }\n\n getFileTypeIcon(file: UploadedFile): string {\n return this.getFileIcon(this.getFileType(file));\n }\n\n triggerFileInput(): void {\n const inputElement = document.getElementById(this.inputId) as HTMLInputElement;\n if (inputElement) {\n inputElement.click();\n }\n }\n\n formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 Bytes';\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n const dirty = control.dirty;\n const touched = control.touched;\n return control.invalid ? dirty || touched : false;\n }\n\n get errorMessage(): string {\n if (!this.ngControl?.errors) return '';\n\n const errors = this.ngControl.errors;\n const errorKey = Object.keys(errors)[0];\n\n return this.transloco.translate(\n `formErrors.${errorKey}`,\n {},\n this.transloco.translate('formErrors.invalidField'),\n );\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' w-full';\n }\n\n return baseClasses;\n }\n\n get uploadAreaClasses(): string {\n const baseClasses = 'file-upload-area';\n\n if (this.disabled) {\n return `${baseClasses} disabled`;\n }\n\n if (this.dragOver) {\n return `${baseClasses} drag-over`;\n }\n\n return baseClasses;\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"file-upload-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"file-upload-required\">*</span>\n }\n </label>\n }\n\n <!-- Upload Area -->\n <div\n class=\"file-upload-container\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n >\n <div [class]=\"uploadAreaClasses\" (click)=\"!disabled && triggerFileInput()\">\n <input\n [id]=\"inputId\"\n [name]=\"name\"\n type=\"file\"\n [accept]=\"accept\"\n [multiple]=\"config.multiple\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n (change)=\"onFileSelect($event)\"\n (blur)=\"onTouched()\"\n class=\"file-upload-hidden\"\n />\n\n <div class=\"file-upload-content\">\n <i class=\"ri-upload-cloud-2-line file-upload-icon\"></i>\n <div class=\"file-upload-text\">\n <p class=\"file-upload-primary-text\">\n @if (config.multiple) {\n {{ 'fileUpload.dropMultiple' | transloco }}\n } @else {\n {{ 'fileUpload.dropSingle' | transloco }}\n }\n </p>\n <p class=\"file-upload-secondary-text\">\n @if (config.allowedExtensions && config.allowedExtensions.length > 0) {\n {{ 'fileUpload.allowedExtensions' | transloco }}\n {{ config.allowedExtensions.join(', ') }}\n }\n @if (config.maxFileSize) {\n • {{ 'fileUpload.maxSize' | transloco }} {{ formatFileSize(config.maxFileSize) }}\n }\n </p>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Files Preview -->\n @if (files.length > 0) {\n <div class=\"file-upload-list\">\n @for (file of files; track file; let i = $index) {\n <file-upload-preview [file]=\"file\" (remove)=\"removeFile(i)\" />\n }\n </div>\n }\n\n <!-- Validation Error -->\n @if (showError) {\n <div class=\"file-upload-error\">\n {{ errorMessage }}\n </div>\n }\n\n <!-- File Type Legend -->\n @if (files.length === 0) {\n <div class=\"file-upload-legend\">\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-image-line file-upload-legend-icon-blue\"></i>\n <span>{{ 'fileUpload.fileTypeImages' | transloco }}</span>\n </div>\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-file-pdf-line file-upload-legend-icon-red\"></i>\n <span>PDF</span>\n </div>\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-file-excel-line file-upload-legend-icon-green\"></i>\n <span>{{ 'fileUpload.fileTypeExcel' | transloco }}</span>\n </div>\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-file-word-line file-upload-legend-icon-word\"></i>\n <span>{{ 'fileUpload.fileTypeWord' | transloco }}</span>\n </div>\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-file-text-line file-upload-legend-icon-gray\"></i>\n <span>{{ 'fileUpload.fileTypeText' | transloco }}</span>\n </div>\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-file-line file-upload-legend-icon-muted\"></i>\n <span>{{ 'fileUpload.fileTypeOther' | transloco }}</span>\n </div>\n </div>\n }\n</div>\n","import {\n Component,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n OnChanges,\n SimpleChanges,\n ViewEncapsulation,\n forwardRef,\n inject,\n signal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, NgControl, NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { Subject, Observable, of } from 'rxjs';\nimport {\n debounceTime,\n distinctUntilChanged,\n switchMap,\n takeUntil,\n catchError,\n map,\n} from 'rxjs/operators';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\n\nexport interface AsyncSelectConfig<T = any> {\n load: (params?: { search?: string; parentId?: number }) => Observable<T>;\n map: (response: T) => SelectOption[];\n}\n\n@Component({\n selector: 'async-select',\n standalone: true,\n imports: [CommonModule, FormsModule, NgSelectModule],\n templateUrl: './async-select.component.html',\n styleUrls: ['./async-select.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AsyncSelectComponent),\n multi: true,\n },\n ],\n})\nexport class AsyncSelectComponent implements OnInit, OnDestroy, OnChanges, ControlValueAccessor {\n @Input() config?: AsyncSelectConfig<any>;\n @Input() items: SelectOption[] = [];\n @Input() parentId?: number | null;\n @Input() label = '';\n @Input() placeholder = 'Seleccione...';\n @Input() name = '';\n @Input() required = false;\n @Input() multiple = false;\n @Input() clearable = true;\n @Input() searchable = true;\n @Input() loading = false;\n @Input() virtualScroll = false;\n @Input() notFoundText = 'No se encontraron resultados';\n @Input() bindLabel = 'label';\n @Input() bindValue = 'value';\n @Input() disabled = false;\n\n value: any = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n displayItems: SelectOption[] = [];\n loadingSignal = signal(false);\n private searchTerm$ = new Subject<string>();\n private destroy$ = new Subject<void>();\n private injector = inject(Injector);\n private _ngControl: NgControl | null = null;\n\n constructor() {}\n\n private get ngControl(): NgControl | null {\n if (!this._ngControl) {\n this._ngControl = this.injector.get(NgControl, null);\n }\n return this._ngControl;\n }\n\n ngOnInit() {\n this.setupSearch();\n if (this.config) {\n this.loadAndMap();\n } else {\n this.displayItems = this.items;\n this.searchMode();\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['parentId'] && !changes['parentId'].firstChange) {\n this.handleParentIdChange();\n }\n if (changes['items'] && !changes['items'].firstChange && !this.config) {\n this.displayItems = this.items;\n }\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private setupSearch() {\n this.searchTerm$\n .pipe(\n debounceTime(400),\n distinctUntilChanged(),\n switchMap((term) => {\n if (this.config) {\n this.loadingSignal.set(true);\n return this.fetchData({ search: term });\n }\n return of(this.displayItems);\n }),\n takeUntil(this.destroy$),\n )\n .subscribe((options) => {\n this.displayItems = options;\n this.loadingSignal.set(false);\n });\n }\n\n private searchMode() {\n this.searchTerm$\n .pipe(\n debounceTime(400),\n distinctUntilChanged(),\n switchMap((term) => {\n this.loadingSignal.set(true);\n setTimeout(() => this.loadingSignal.set(false), 150);\n return of(\n this.items.filter((item) => item.label.toLowerCase().includes(term.toLowerCase())),\n );\n }),\n takeUntil(this.destroy$),\n )\n .subscribe((options) => {\n this.displayItems = options;\n });\n }\n\n private loadAndMap(params?: { search?: string; parentId?: number }) {\n if (!this.config) return;\n this.loadingSignal.set(true);\n this.fetchData(params)\n .pipe(takeUntil(this.destroy$))\n .subscribe((options) => {\n this.displayItems = options;\n this.loadingSignal.set(false);\n });\n }\n\n private fetchData(params?: { search?: string; parentId?: number }): Observable<SelectOption[]> {\n if (!this.config) return of([]);\n\n const mergedParams = { ...params };\n if (this.parentId != null && mergedParams.parentId == null) {\n mergedParams.parentId = this.parentId;\n }\n\n return this.config.load(mergedParams).pipe(\n map((res) => this.config!.map(res)),\n catchError(() => of([])),\n );\n }\n\n private handleParentIdChange() {\n this.value = this.multiple ? [] : null;\n this.onChange(this.value);\n\n if (this.parentId != null && this.config) {\n this.loadAndMap({ parentId: this.parentId });\n } else if (this.config) {\n this.displayItems = [];\n this.loadingSignal.set(false);\n }\n }\n\n onSearch(event: any) {\n const term = event?.term || '';\n this.searchTerm$.next(term);\n }\n\n onSelectChange(value: any) {\n this.value = value;\n this.onChange(value);\n this.onTouched();\n }\n\n get typeahead$(): Subject<string> {\n return this.searchTerm$;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n return control.invalid ? control.dirty || control.touched : false;\n }\n\n get errorMessage(): string {\n if (!this.ngControl?.errors) return '';\n const errorKey = Object.keys(this.ngControl.errors)[0];\n return 'Campo inválido';\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","<div class=\"async-select-wrapper\">\n @if (label) {\n <label class=\"async-select-label\">\n {{ label }}\n @if (required) {\n <span class=\"async-select-required\">*</span>\n }\n </label>\n }\n\n <ng-select\n [items]=\"displayItems\"\n [multiple]=\"multiple\"\n [searchable]=\"searchable\"\n [clearable]=\"clearable\"\n [placeholder]=\"placeholder\"\n [loading]=\"loading || loadingSignal()\"\n [virtualScroll]=\"virtualScroll\"\n [notFoundText]=\"notFoundText\"\n [bindLabel]=\"bindLabel\"\n [bindValue]=\"bindValue\"\n [ngModel]=\"value\"\n [typeahead]=\"typeahead$\"\n [closeOnSelect]=\"!multiple\"\n [disabled]=\"disabled\"\n [class.error]=\"showError\"\n (ngModelChange)=\"onSelectChange($event)\"\n (blur)=\"onTouched()\"\n (search)=\"onSearch($event)\"\n />\n\n @if (showError) {\n <div class=\"async-select-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n","import { Component, signal, ViewEncapsulation, WritableSignal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { TranslocoModule, TranslocoService } from '@jsverse/transloco';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\nimport { FormInputComponent } from '../../forms/form-input/form-input.component';\nimport { AppModalComponent } from '../../modals/modal/modal.component';\nimport { ChangePasswordFormService } from '../../../services/change-password-form.service';\nimport { MustMatchValidator } from '../../../validators/must-match.validator';\nimport { CustomerService } from '../../../services/customer.service';\nimport { AdminService } from '../../../services/admin.service';\nimport { ToastService } from '../../../services/toast.service';\n\n@Component({\n selector: 'change-password-form',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n TranslocoModule,\n AppButtonComponent,\n FormInputComponent,\n AppModalComponent,\n ],\n providers: [AdminService, CustomerService],\n templateUrl: './change-password-form.component.html',\n styleUrls: ['./change-password-form.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class ChangePasswordFormComponent {\n changePasswordForm: FormGroup;\n loading: WritableSignal<boolean> = signal(false);\n\n constructor(\n private fb: FormBuilder,\n private changePasswordFormService: ChangePasswordFormService,\n private customerService: CustomerService,\n private adminService: AdminService,\n private toastService: ToastService,\n private transloco: TranslocoService,\n ) {\n this.changePasswordForm = this.fb.group(\n {\n password: ['', [Validators.required, Validators.minLength(6)]],\n confirm_password: ['', [Validators.required, Validators.minLength(6)]],\n },\n {\n validators: MustMatchValidator('password', 'confirm_password'),\n },\n );\n }\n\n get isOpen() {\n return this.changePasswordFormService.modalIsOpen;\n }\n\n get resourceId() {\n return this.changePasswordFormService.resourceId;\n }\n\n onCloseModal(): void {\n this.changePasswordForm.reset();\n this.changePasswordFormService.close();\n }\n\n onConfirmDelete(): void {\n this.loading.set(true);\n\n const service = this.changePasswordFormService.isAdminMode()\n ? this.adminService\n : this.customerService;\n\n const isAdmin = this.changePasswordFormService.isAdminMode();\n const successKey = isAdmin ? 'changePassword.adminSuccess' : 'changePassword.customerSuccess';\n const errorKey = isAdmin ? 'changePassword.adminError' : 'changePassword.customerError';\n\n service.updateOne(this.resourceId(), this.changePasswordForm.value).subscribe({\n next: () => {\n this.toastService.show(this.transloco.translate(successKey), 'success');\n this.changePasswordForm.reset();\n this.changePasswordFormService.close();\n this.loading.set(false);\n },\n error: (error: any) => {\n console.error('Error al actualizar contraseña:', error);\n this.toastService.show(this.transloco.translate(errorKey), 'error');\n this.loading.set(false);\n },\n });\n }\n}\n","@if (isOpen()) {\n <app-modal\n [title]=\"'changePassword.title' | transloco\"\n [isOpen]=\"isOpen\"\n (closeModal)=\"onCloseModal()\"\n >\n <form\n [formGroup]=\"changePasswordForm\"\n method=\"POST\"\n class=\"change-password-form-body\"\n (ngSubmit)=\"onConfirmDelete()\"\n >\n <form-input\n [label]=\"'changePassword.newPasswordLabel' | transloco\"\n [placeholder]=\"'changePassword.newPasswordPlaceholder' | transloco\"\n name=\"password\"\n type=\"password\"\n class=\"change-password-form-field\"\n [required]=\"true\"\n [autocomplete]=\"false\"\n formControlName=\"password\"\n />\n\n <form-input\n [label]=\"'changePassword.confirmPasswordLabel' | transloco\"\n [placeholder]=\"'changePassword.confirmPasswordPlaceholder' | transloco\"\n name=\"confirm_password\"\n type=\"password\"\n class=\"change-password-form-field\"\n [required]=\"true\"\n [autocomplete]=\"false\"\n formControlName=\"confirm_password\"\n />\n\n <div class=\"change-password-form-actions\">\n <app-button\n variant=\"tertiary\"\n [text]=\"'changePassword.cancel' | transloco\"\n (click)=\"onCloseModal()\"\n size=\"sm\"\n />\n\n <app-button\n [disabled]=\"loading() || changePasswordForm.invalid || changePasswordForm.pristine\"\n [loading]=\"loading()\"\n type=\"submit\"\n variant=\"primary\"\n [text]=\"'changePassword.save' | transloco\"\n [loadingText]=\"'changePassword.saving' | transloco\"\n size=\"sm\"\n />\n </div>\n </form>\n </app-modal>\n}\n","import { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n EventEmitter,\n Output,\n WritableSignal,\n signal,\n PLATFORM_ID,\n Inject,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { AbstractControl, FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { ControlValueAccessor, Validator } from '@angular/forms';\nimport { FormSelectComponent } from '../../../components/forms/form-select/form-select.component';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { AdminService } from '../../../services/admin.service';\nimport { Admin } from '../../../interfaces/admins/admin.interface';\n\n@Component({\n selector: 'admin-select',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormSelectComponent],\n templateUrl: './admin-select.component.html',\n styleUrls: ['./admin-select.component.scss'],\n})\nexport class AdminSelectComponent implements OnInit, OnDestroy, ControlValueAccessor, Validator {\n @Input() label: string = 'Equipo de trabajo';\n @Input() placeholder: string = 'Selecciona un equipo de trabajo';\n @Input() name: string = 'admin_id';\n @Input() required: boolean = false;\n @Input() readonly: boolean = false;\n @Input() showError: boolean = true;\n @Input() customClass: string = '';\n @Input() control?: AbstractControl | null = null;\n\n @Output() adminChange = new EventEmitter<number | null>();\n\n admins: WritableSignal<SelectOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(false);\n private destroy$ = new Subject<void>();\n\n // ControlValueAccessor properties\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private adminService: AdminService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.loadAdmins();\n }\n }\n\n // Update the formControl getter to handle the AbstractControl\n get formControl(): FormControl {\n return this.control as FormControl;\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n loadAdmins() {\n this.loading.set(true);\n this.adminService\n .fetchAdmins()\n .pipe(takeUntil(this.destroy$))\n .subscribe({\n next: ({ data: { admins } }: { data: { admins: Admin[] } }) => {\n this.admins.set(\n admins?.map((admin) => ({\n value: admin.id,\n label: `${admin.first_name} ${admin.last_name} - ${admin.email}`,\n })) || [],\n );\n this.loading.set(false);\n },\n error: () => {\n this.admins.set([]);\n this.loading.set(false);\n },\n });\n }\n\n // In admin-select.component.ts\n onAdminSelected(event: Event) {\n const select = event.target as HTMLSelectElement;\n const value = select.value ? Number(select.value) : null;\n\n // Update the local value\n this.value = value;\n\n // Update the form control if it exists\n if (this.control) {\n this.control.setValue(value);\n this.control.markAsTouched();\n }\n\n // Emit the change event\n this.adminChange.emit(value);\n }\n\n // ControlValueAccessor methods\n writeValue(value: number | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n // Validator method\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n\n // Helper method to check if control is invalid\n get isInvalid(): boolean {\n return false;\n }\n}\n","<form-select\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name || 'country_id'\"\n [class]=\"customClass\"\n [options]=\"admins()\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [formControl]=\"formControl\"\n (change)=\"onAdminSelected($event)\"\n/>\n","import {\n Component,\n OnInit,\n OnDestroy,\n forwardRef,\n Input,\n Output,\n EventEmitter,\n ViewEncapsulation,\n OnChanges,\n SimpleChanges,\n WritableSignal,\n signal,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n FormControl,\n NG_VALIDATORS,\n Validator,\n AbstractControl,\n} from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { CitiesService } from '../../../services/cities.service';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FormSelectComponent } from '../../../components/forms/form-select/form-select.component';\nimport { CitiesResponse } from '../../../interfaces/cities/cities-response.interface';\nimport { formatCitiesResponseToSelect } from '../../../helpers/format-cities-response-to-select.helper';\n\n@Component({\n selector: 'city-select',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormSelectComponent],\n templateUrl: './city-select.component.html',\n styleUrls: ['./city-select.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CitySelectComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => CitySelectComponent),\n multi: true,\n },\n ],\n})\nexport class CitySelectComponent\n implements OnInit, OnDestroy, OnChanges, ControlValueAccessor, Validator\n{\n @Input() label: string = 'Ciudad';\n @Input() name: string = 'city_id';\n @Input() placeholder: string = 'Selecciona una ciudad';\n @Input() required: boolean = false;\n @Input() disabled: boolean = false;\n @Input() readonly: boolean = false;\n @Input() stateId: number | null = null;\n @Input() showError: boolean = true;\n @Input() customClass: string = '';\n @Input() control?: AbstractControl | null = null;\n\n @Output() cityChange = new EventEmitter<number | null>();\n\n cities: WritableSignal<SelectOption[]> = signal([]);\n loading: boolean = false;\n private destroy$ = new Subject<void>();\n\n // ControlValueAccessor properties\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(private citiesService: CitiesService) {}\n\n // Update the formControl getter to handle the AbstractControl\n get formControl(): FormControl {\n return this.control as FormControl;\n }\n\n ngOnInit() {\n this.loadCities();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['stateId'] && !changes['stateId'].firstChange) {\n this.value = null;\n this.onChange(null);\n this.cityChange.emit(null);\n\n if (this.stateId) {\n this.loadCities();\n } else {\n this.cities.set([]);\n }\n }\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n loadCities() {\n this.loading = true;\n this.citiesService\n .fetchCities({ stateId: this.stateId ?? undefined })\n .pipe(takeUntil(this.destroy$))\n .subscribe({\n next: (response: CitiesResponse) => {\n this.cities.set(formatCitiesResponseToSelect(response));\n this.loading = false;\n },\n error: () => {\n this.cities.set([]);\n this.loading = false;\n },\n });\n }\n\n onCitySelected(event: Event) {\n const select = event.target as HTMLSelectElement;\n const value = select.value ? Number(select.value) : null;\n this.value = value;\n this.onChange(value);\n this.onTouched();\n this.cityChange.emit(value);\n }\n\n // ControlValueAccessor methods\n writeValue(value: number | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n // Validator method\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n\n get isInvalid(): boolean {\n return false;\n }\n\n get isDisabled(): boolean {\n return this.disabled || this.readonly || !this.stateId || this.loading;\n }\n}\n","<form-select\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name\"\n [class]=\"customClass\"\n [required]=\"required\"\n [options]=\"cities()\"\n [readonly]=\"readonly\"\n [formControl]=\"formControl\"\n (change)=\"onCitySelected($event)\"\n/>\n","import { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n EventEmitter,\n Output,\n WritableSignal,\n signal,\n PLATFORM_ID,\n Inject,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { AbstractControl, FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { ControlValueAccessor, Validator } from '@angular/forms';\nimport { FormSelectComponent } from '../../../components/forms/form-select/form-select.component';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { CountryService } from '../../../services/country.service';\n\n@Component({\n selector: 'country-select',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormSelectComponent],\n templateUrl: './country-select.component.html',\n styleUrls: ['./country-select.component.scss'],\n})\nexport class CountrySelectComponent implements OnInit, OnDestroy, ControlValueAccessor, Validator {\n @Input() label: string = 'País';\n @Input() placeholder: string = 'Selecciona un país';\n @Input() name: string = 'country_id';\n @Input() required: boolean = false;\n @Input() readonly: boolean = false;\n @Input() showError: boolean = true;\n @Input() customClass: string = '';\n @Input() control?: AbstractControl | null = null;\n\n @Output() countryChange = new EventEmitter<number | null>();\n\n countries: WritableSignal<SelectOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(false);\n private destroy$ = new Subject<void>();\n\n // ControlValueAccessor properties\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private countryService: CountryService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.loadCountries();\n }\n }\n\n // Update the formControl getter to handle the AbstractControl\n get formControl(): FormControl {\n return this.control as FormControl;\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n loadCountries() {\n this.loading.set(true);\n this.countryService\n .fetchCountries()\n .pipe(takeUntil(this.destroy$))\n .subscribe({\n next: ({ data: { countries } }: { data: { countries: any[] } }) => {\n this.countries.set(\n countries?.map((country) => ({\n value: country.id,\n label: country.name,\n })) || [],\n );\n this.loading.set(false);\n },\n error: () => {\n this.countries.set([]);\n this.loading.set(false);\n },\n });\n }\n\n // In country-select.component.ts\n onCountrySelected(event: Event) {\n const select = event.target as HTMLSelectElement;\n const value = select.value ? Number(select.value) : null;\n\n // Update the local value\n this.value = value;\n\n // Update the form control if it exists\n if (this.control) {\n this.control.setValue(value);\n this.control.markAsTouched();\n }\n\n // Emit the change event\n this.countryChange.emit(value);\n }\n\n // ControlValueAccessor methods\n writeValue(value: number | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n // Validator method\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n\n // Helper method to check if control is invalid\n get isInvalid(): boolean {\n return false;\n }\n}\n","<form-select\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name || 'country_id'\"\n [class]=\"customClass\"\n [options]=\"countries()\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [formControl]=\"formControl\"\n (change)=\"onCountrySelected($event)\"\n></form-select>\n","import {\n Component,\n OnInit,\n OnDestroy,\n forwardRef,\n Input,\n Output,\n EventEmitter,\n ViewEncapsulation,\n OnChanges,\n SimpleChanges,\n WritableSignal,\n signal,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n FormControl,\n NG_VALIDATORS,\n Validator,\n AbstractControl,\n} from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { StatesService } from '../../../services/states.service';\nimport { FormSelectComponent } from '../../../components/forms/form-select/form-select.component';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\n\n@Component({\n selector: 'state-select',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormSelectComponent],\n templateUrl: './state-select.component.html',\n styleUrls: ['./state-select.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => StateSelectComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => StateSelectComponent),\n multi: true,\n },\n ],\n})\nexport class StateSelectComponent\n implements OnInit, OnDestroy, OnChanges, ControlValueAccessor, Validator\n{\n @Input() label: string = 'Departamento';\n @Input() name: string = 'state_id';\n @Input() placeholder: string = 'Selecciona un departamento';\n @Input() required: boolean = false;\n @Input() readonly: boolean = false;\n @Input() countryId: number | null = null;\n @Input() showError: boolean = true;\n @Input() customClass: string = '';\n @Input() control?: AbstractControl | null = null;\n\n @Output() stateChange = new EventEmitter<number | null>();\n\n states: WritableSignal<SelectOption[]> = signal([]);\n loading: boolean = false;\n private destroy$ = new Subject<void>();\n\n // ControlValueAccessor properties\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(private statesService: StatesService) {}\n\n ngOnInit() {\n this.loadStates();\n }\n\n // Update the formControl getter to handle the AbstractControl\n get formControl(): FormControl {\n return this.control as FormControl;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['countryId'] && !changes['countryId'].firstChange) {\n this.value = null;\n this.onChange(null);\n this.stateChange.emit(null);\n\n if (this.countryId) {\n this.loadStates();\n } else {\n this.states.set([]);\n }\n }\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n loadStates() {\n this.loading = true;\n this.statesService\n .fetchStates(1, undefined, this.countryId!)\n .pipe(takeUntil(this.destroy$))\n .subscribe({\n next: ({ data: { states } }: { data: { states: any[] } }) => {\n this.states.set(states?.map(({ id, name }) => ({ value: id, label: name })) || []);\n this.loading = false;\n },\n error: () => {\n this.states.set([]);\n this.loading = false;\n },\n });\n }\n\n onStateSelected(event: Event) {\n const select = event.target as HTMLSelectElement;\n const value = select.value ? Number(select.value) : null;\n this.value = value;\n this.onChange(value);\n this.onTouched();\n this.stateChange.emit(value);\n }\n\n writeValue(value: number | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n\n get isInvalid(): boolean {\n return false;\n }\n\n get isDisabled(): boolean {\n return this.readonly || !this.countryId || this.loading;\n }\n}\n","<form-select\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name || 'state_id'\"\n [class]=\"customClass\"\n [options]=\"states()\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [formControl]=\"formControl\"\n (change)=\"onStateSelected($event)\"\n></form-select>\n","import { Component, Input, EventEmitter, Output, forwardRef } from '@angular/core';\nimport {\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n ControlValueAccessor,\n Validator,\n FormControl,\n FormsModule,\n} from '@angular/forms';\nimport {\n AsyncSelectComponent,\n AsyncSelectConfig,\n} from '../../../components/forms/async-select/async-select.component';\nimport { CustomerService } from '../../../services/customer.service';\nimport { Customer } from '../../../interfaces/customers/customer.interface';\nimport { getCustomerFullname } from '../../../helpers/get-formatted-customer.helper';\n\n@Component({\n selector: 'customer-select',\n standalone: true,\n imports: [AsyncSelectComponent, FormsModule],\n templateUrl: './customer-select.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CustomerSelectComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => CustomerSelectComponent),\n multi: true,\n },\n ],\n})\nexport class CustomerSelectComponent implements ControlValueAccessor, Validator {\n @Input() label: string = 'Cliente';\n @Input() placeholder: string = 'Selecciona un cliente';\n @Input() name: string = 'customer_id';\n @Input() required: boolean = false;\n @Input() readonly: boolean = false;\n @Input() multiple = false;\n\n @Output() customerChange = new EventEmitter<number | null>();\n\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n config: AsyncSelectConfig = {\n load: (params) => this.customerService.fetchCustomers(1, params?.search || '', 50),\n map: (res) =>\n res.data.customers?.map((customer: Customer) => ({\n value: customer.id,\n label: `${getCustomerFullname(customer)} - ${customer.email}`.trim(),\n })) || [],\n };\n\n constructor(private customerService: CustomerService) {}\n\n onInternalChange(value: any) {\n this.value = value;\n this.onChange(value);\n this.onTouched();\n this.customerChange.emit(value);\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n}\n","<async-select\n [config]=\"config\"\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name || 'customer_id'\"\n [required]=\"required\"\n [multiple]=\"multiple\"\n [clearable]=\"true\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onInternalChange($event)\"\n/>\n","import { Subject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n EventEmitter,\n Output,\n WritableSignal,\n signal,\n PLATFORM_ID,\n Inject,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n AbstractControl,\n FormControl,\n ReactiveFormsModule,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n ControlValueAccessor,\n Validator,\n} from '@angular/forms';\nimport { FormSelectComponent } from '../../../components/forms/form-select/form-select.component';\nimport { PerformanceService } from '../../../services/performance.service';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { Performance } from '../../../interfaces/performances/performance.interface';\n\n@Component({\n selector: 'performance-select',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormSelectComponent],\n templateUrl: './performance-select.component.html',\n styleUrls: [],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PerformanceSelectComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PerformanceSelectComponent),\n multi: true,\n },\n ],\n})\nexport class PerformanceSelectComponent\n implements OnInit, OnDestroy, ControlValueAccessor, Validator\n{\n @Input() label: string = 'Función';\n @Input() placeholder: string = 'Selecciona una función';\n @Input() name: string = 'performance_id';\n @Input() required: boolean = false;\n @Input() readonly: boolean = false;\n @Input() showError: boolean = true;\n @Input() customClass: string = '';\n @Input() control?: AbstractControl | null = null;\n\n @Output() performanceChange = new EventEmitter<number | null>();\n\n performances: WritableSignal<SelectOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(false);\n searchTerm: string = '';\n private searchSubject = new Subject<string>();\n private destroy$ = new Subject<void>();\n\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private performanceService: PerformanceService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.performanceService.loadPerformances({ search: this.searchTerm });\n\n this.performanceService.performances$\n .pipe(takeUntil(this.destroy$))\n .subscribe((performances: Performance[]) => {\n this.performances.set(\n performances?.map((p) => ({\n value: p.id,\n label: `${p.show?.title || `Show #${p.show_id}`} - ${new Date(p.start_time).toLocaleDateString()}`,\n })) || [],\n );\n this.loading.set(false);\n });\n\n this.searchSubject\n .pipe(debounceTime(400), distinctUntilChanged(), takeUntil(this.destroy$))\n .subscribe((search) => {\n this.searchTerm = search;\n this.performanceService.loadPerformances({ search: this.searchTerm });\n });\n }\n }\n\n get formControl(): FormControl {\n return this.control as FormControl;\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n onSearchChange(search: string) {\n this.searchSubject.next(search);\n }\n\n onPerformanceSelected(event: Event) {\n const select = event.target as HTMLSelectElement;\n const value = select.value ? Number(select.value) : null;\n\n this.value = value;\n\n if (this.control) {\n this.control.setValue(value);\n this.control.markAsTouched();\n }\n\n this.performanceChange.emit(value);\n }\n\n writeValue(value: number | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n\n get isInvalid(): boolean {\n return false;\n }\n}\n","<form-select\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name || 'performance_id'\"\n [class]=\"customClass\"\n [options]=\"performances()\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [formControl]=\"formControl\"\n (change)=\"onPerformanceSelected($event)\"\n></form-select>\n","import { Subject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n forwardRef,\n signal,\n WritableSignal,\n Inject,\n PLATFORM_ID,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { PerformanceService } from '../../../services/performance.service';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { Performance } from '../../../interfaces/performances/performance.interface';\n\n@Component({\n selector: 'performance-multi-select',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './performance-multi-select.component.html',\n styleUrls: ['./performance-multi-select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PerformanceMultiSelectComponent),\n multi: true,\n },\n ],\n})\nexport class PerformanceMultiSelectComponent implements OnInit, OnDestroy, ControlValueAccessor {\n @Input() label: string = 'Funciones';\n @Input() placeholder: string = 'Buscar funciones...';\n\n allPerformances: WritableSignal<SelectOption[]> = signal([]);\n filteredPerformances: WritableSignal<SelectOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(true);\n\n selectedIds: number[] = [];\n searchTerm: string = '';\n\n private searchSubject = new Subject<string>();\n private destroy$ = new Subject<void>();\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private performanceService: PerformanceService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.performanceService.loadPerformances({});\n\n this.performanceService.performances$\n .pipe(takeUntil(this.destroy$))\n .subscribe((performances: Performance[]) => {\n this.allPerformances.set(\n performances?.map((p) => ({\n value: p.id,\n label: `${p.show?.title || `Show #${p.show_id}`} - ${new Date(p.start_time).toLocaleString()}`,\n })) || [],\n );\n this.applyFilter();\n this.loading.set(false);\n });\n\n this.searchSubject\n .pipe(debounceTime(400), distinctUntilChanged(), takeUntil(this.destroy$))\n .subscribe((search) => {\n this.searchTerm = search;\n this.performanceService.loadPerformances({ search: this.searchTerm });\n });\n }\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private applyFilter() {\n if (this.searchTerm) {\n const term = this.searchTerm.toLowerCase();\n this.filteredPerformances.set(\n this.allPerformances().filter((p) => p.label.toLowerCase().includes(term)),\n );\n } else {\n this.filteredPerformances.set([...this.allPerformances()]);\n }\n }\n\n onSearchChange(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.searchSubject.next(value);\n }\n\n isSelected(id: number): boolean {\n return this.selectedIds.includes(id);\n }\n\n togglePerformance(id: number) {\n const index = this.selectedIds.indexOf(id);\n if (index > -1) {\n this.selectedIds = this.selectedIds.filter((v) => v !== id);\n } else {\n this.selectedIds = [...this.selectedIds, id];\n }\n this.onChange(this.selectedIds);\n this.onTouched();\n }\n\n removePerformance(id: number) {\n this.togglePerformance(id);\n }\n\n getPerformanceLabel(id: number): string {\n return this.allPerformances().find((p) => p.value === id)?.label || '';\n }\n\n writeValue(value: number[] | null): void {\n this.selectedIds = value || [];\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n}\n","<div class=\"performance-multi-select\">\n @if (label) {\n <label class=\"performance-multi-select-label\">\n {{ label }}\n </label>\n }\n\n @if (selectedIds.length > 0) {\n <div class=\"performance-multi-select-tags\">\n @for (id of selectedIds; track id) {\n <span class=\"performance-multi-select-tag\">\n {{ getPerformanceLabel(id) }}\n <button\n type=\"button\"\n class=\"performance-multi-select-tag-remove\"\n (click)=\"removePerformance(id)\"\n >\n ×\n </button>\n </span>\n }\n </div>\n }\n\n <input\n type=\"text\"\n [placeholder]=\"placeholder\"\n class=\"performance-multi-select-search\"\n (input)=\"onSearchChange($event)\"\n />\n\n @if (loading()) {\n <div class=\"performance-multi-select-loading\">\n <div class=\"performance-multi-select-spinner\"></div>\n Cargando funciones...\n </div>\n }\n\n @if (!loading() && filteredPerformances().length > 0) {\n <div class=\"performance-multi-select-list\">\n @for (p of filteredPerformances(); track p.value) {\n <label class=\"performance-multi-select-option\">\n <input\n type=\"checkbox\"\n [checked]=\"isSelected(p.value)\"\n (change)=\"togglePerformance(p.value)\"\n class=\"performance-multi-select-checkbox\"\n />\n <span class=\"performance-multi-select-option-label\">{{ p.label }}</span>\n </label>\n }\n </div>\n }\n\n @if (!loading() && filteredPerformances().length === 0) {\n <p class=\"performance-multi-select-empty\">No se encontraron funciones</p>\n }\n</div>\n","import { Subject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n EventEmitter,\n Output,\n WritableSignal,\n signal,\n PLATFORM_ID,\n Inject,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n AbstractControl,\n FormControl,\n ReactiveFormsModule,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n ControlValueAccessor,\n Validator,\n} from '@angular/forms';\nimport { FormSelectComponent } from '../../../components/forms/form-select/form-select.component';\nimport { ProductService } from '../../../services/product.service';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { Product } from '../../../interfaces/products/product.interface';\n\n@Component({\n selector: 'product-select',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormSelectComponent],\n templateUrl: './product-select.component.html',\n styleUrls: [],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ProductSelectComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => ProductSelectComponent),\n multi: true,\n },\n ],\n})\nexport class ProductSelectComponent implements OnInit, OnDestroy, ControlValueAccessor, Validator {\n @Input() label: string = 'Producto';\n @Input() placeholder: string = 'Selecciona un producto';\n @Input() name: string = 'product_id';\n @Input() required: boolean = false;\n @Input() readonly: boolean = false;\n @Input() showError: boolean = true;\n @Input() customClass: string = '';\n @Input() control?: AbstractControl | null = null;\n\n @Output() productChange = new EventEmitter<number | null>();\n\n products: WritableSignal<SelectOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(false);\n searchTerm: string = '';\n private searchSubject = new Subject<string>();\n private destroy$ = new Subject<void>();\n\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private productService: ProductService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.productService.loadProducts({ search: this.searchTerm });\n\n this.productService.products$\n .pipe(takeUntil(this.destroy$))\n .subscribe((products: Product[]) => {\n this.products.set(\n products?.map((product) => ({\n value: product.id,\n label: product.name,\n })) || [],\n );\n this.loading.set(false);\n });\n\n this.searchSubject\n .pipe(debounceTime(400), distinctUntilChanged(), takeUntil(this.destroy$))\n .subscribe((search) => {\n this.searchTerm = search;\n this.productService.loadProducts({ search: this.searchTerm });\n });\n }\n }\n\n get formControl(): FormControl {\n return this.control as FormControl;\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n onSearchChange(search: string) {\n this.searchSubject.next(search);\n }\n\n onProductSelected(event: Event) {\n const select = event.target as HTMLSelectElement;\n const value = select.value ? Number(select.value) : null;\n\n this.value = value;\n\n if (this.control) {\n this.control.setValue(value);\n this.control.markAsTouched();\n }\n\n this.productChange.emit(value);\n }\n\n writeValue(value: number | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n\n get isInvalid(): boolean {\n return false;\n }\n}\n","<form-select\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name || 'product_id'\"\n [class]=\"customClass\"\n [options]=\"products()\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [formControl]=\"formControl\"\n (change)=\"onProductSelected($event)\"\n></form-select>\n","import { Subject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n Output,\n EventEmitter,\n forwardRef,\n signal,\n WritableSignal,\n Inject,\n PLATFORM_ID,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { ProductService } from '../../../services/product.service';\nimport { Product } from '../../../interfaces/products/product.interface';\n\ninterface ProductOption {\n value: number;\n label: string;\n imageUrl: string | null;\n}\n\n@Component({\n selector: 'product-multi-select',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './product-multi-select.component.html',\n styleUrls: ['./product-multi-select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ProductMultiSelectComponent),\n multi: true,\n },\n ],\n})\nexport class ProductMultiSelectComponent implements OnInit, OnDestroy, ControlValueAccessor {\n @Input() label: string = 'Productos';\n @Input() placeholder: string = 'Buscar productos...';\n @Input() set initialSelection(ids: number[] | null) {\n this.selectedIds = ids ?? [];\n }\n @Output() selectionChange = new EventEmitter<number[]>();\n\n allProducts: WritableSignal<ProductOption[]> = signal([]);\n filteredProducts: WritableSignal<ProductOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(true);\n\n selectedIds: number[] = [];\n searchTerm: string = '';\n\n private searchSubject = new Subject<string>();\n private destroy$ = new Subject<void>();\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private productService: ProductService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.productService.loadProducts({ search: this.searchTerm });\n\n this.productService.products$\n .pipe(takeUntil(this.destroy$))\n .subscribe((products: Product[]) => {\n this.allProducts.set(\n products?.map((p) => ({\n value: p.id,\n label: p.name,\n imageUrl: p.images?.[0]?.full_url ?? null,\n })) || [],\n );\n this.applyFilter();\n this.loading.set(false);\n });\n\n this.searchSubject\n .pipe(debounceTime(400), distinctUntilChanged(), takeUntil(this.destroy$))\n .subscribe((search) => {\n this.searchTerm = search;\n this.productService.loadProducts({ search: this.searchTerm });\n });\n }\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private applyFilter() {\n if (this.searchTerm) {\n const term = this.searchTerm.toLowerCase();\n this.filteredProducts.set(\n this.allProducts().filter((p) => p.label.toLowerCase().includes(term)),\n );\n } else {\n this.filteredProducts.set([...this.allProducts()]);\n }\n }\n\n onSearchChange(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.searchSubject.next(value);\n }\n\n isSelected(id: number): boolean {\n return this.selectedIds.includes(id);\n }\n\n toggleProduct(id: number) {\n const index = this.selectedIds.indexOf(id);\n if (index > -1) {\n this.selectedIds = this.selectedIds.filter((v) => v !== id);\n } else {\n this.selectedIds = [...this.selectedIds, id];\n }\n this.onChange(this.selectedIds);\n this.onTouched();\n this.selectionChange.emit(this.selectedIds);\n }\n\n removeProduct(id: number) {\n this.toggleProduct(id);\n }\n\n getProductOption(id: number): ProductOption | undefined {\n return this.allProducts().find((p) => p.value === id);\n }\n\n writeValue(value: number[] | null): void {\n this.selectedIds = value || [];\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n}\n","<div class=\"product-multi-select\">\n @if (label) {\n <label class=\"product-multi-select-label\">\n {{ label }}\n </label>\n }\n\n @if (selectedIds.length > 0) {\n <div class=\"product-multi-select-tags\">\n @for (id of selectedIds; track id) {\n @let product = getProductOption(id);\n <span class=\"product-multi-select-tag\">\n @if (product?.imageUrl) {\n <img [src]=\"product!.imageUrl\" alt=\"\" class=\"product-multi-select-tag-image\" />\n }\n {{ product?.label ?? id }}\n <button\n type=\"button\"\n class=\"product-multi-select-tag-remove\"\n (click)=\"removeProduct(id)\"\n >\n ×\n </button>\n </span>\n }\n </div>\n }\n\n <input\n type=\"text\"\n [placeholder]=\"placeholder\"\n class=\"product-multi-select-search\"\n (input)=\"onSearchChange($event)\"\n />\n\n @if (loading()) {\n <div class=\"product-multi-select-loading\">\n <div class=\"product-multi-select-spinner\"></div>\n Cargando productos...\n </div>\n }\n\n @if (!loading() && filteredProducts().length > 0) {\n <div class=\"product-multi-select-list\">\n @for (p of filteredProducts(); track p.value) {\n <label class=\"product-multi-select-option\">\n <input\n type=\"checkbox\"\n [checked]=\"isSelected(p.value)\"\n (change)=\"toggleProduct(p.value)\"\n class=\"product-multi-select-checkbox\"\n />\n @if (p.imageUrl) {\n <img [src]=\"p.imageUrl\" alt=\"\" class=\"product-multi-select-option-image\" />\n } @else {\n <div class=\"product-multi-select-option-image-placeholder\">\n <i class=\"ri-image-line\"></i>\n </div>\n }\n <span class=\"product-multi-select-option-label\">{{ p.label }}</span>\n </label>\n }\n </div>\n }\n\n @if (!loading() && filteredProducts().length === 0) {\n <p class=\"product-multi-select-empty\">No se encontraron productos</p>\n }\n</div>\n","import { Subject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n EventEmitter,\n Output,\n WritableSignal,\n signal,\n PLATFORM_ID,\n Inject,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n AbstractControl,\n FormControl,\n ReactiveFormsModule,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n ControlValueAccessor,\n Validator,\n} from '@angular/forms';\nimport { FormSelectComponent } from '../../../components/forms/form-select/form-select.component';\nimport { ShowService } from '../../../services/show.service';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { Show } from '../../../interfaces/shows/show.interface';\n\n@Component({\n selector: 'show-select',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormSelectComponent],\n templateUrl: './show-select.component.html',\n styleUrls: [],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ShowSelectComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => ShowSelectComponent),\n multi: true,\n },\n ],\n})\nexport class ShowSelectComponent implements OnInit, OnDestroy, ControlValueAccessor, Validator {\n @Input() label: string = 'Función';\n @Input() placeholder: string = 'Selecciona una función';\n @Input() name: string = 'show_id';\n @Input() required: boolean = false;\n @Input() readonly: boolean = false;\n @Input() showError: boolean = true;\n @Input() customClass: string = '';\n @Input() control?: AbstractControl | null = null;\n\n @Output() showChange = new EventEmitter<number | null>();\n\n shows: WritableSignal<SelectOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(false);\n searchTerm: string = '';\n private searchSubject = new Subject<string>();\n private destroy$ = new Subject<void>();\n\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private showService: ShowService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.showService.loadShows({ search: this.searchTerm });\n\n this.showService.shows$.pipe(takeUntil(this.destroy$)).subscribe((shows: Show[]) => {\n const formatted = shows?.map((show) => ({ value: show.id, label: show.title })) || [];\n this.shows.set(formatted);\n this.loading.set(false);\n });\n\n this.searchSubject\n .pipe(debounceTime(400), distinctUntilChanged(), takeUntil(this.destroy$))\n .subscribe((search) => {\n this.searchTerm = search;\n this.showService.loadShows({ search: this.searchTerm });\n });\n }\n }\n\n get formControl(): FormControl {\n return this.control as FormControl;\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n onSearchChange(search: string) {\n this.searchSubject.next(search);\n }\n\n onShowSelected(event: Event) {\n const select = event.target as HTMLSelectElement;\n const value = select.value ? Number(select.value) : null;\n\n this.value = value;\n\n if (this.control) {\n this.control.setValue(value);\n this.control.markAsTouched();\n }\n\n this.showChange.emit(value);\n }\n\n writeValue(value: number | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n\n get isInvalid(): boolean {\n return false;\n }\n}\n","<form-select\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name || 'show_id'\"\n [class]=\"customClass\"\n [options]=\"shows()\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [formControl]=\"formControl\"\n (change)=\"onShowSelected($event)\"\n></form-select>\n","import { Subject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n forwardRef,\n signal,\n WritableSignal,\n Inject,\n PLATFORM_ID,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { ShowService } from '../../../services/show.service';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { Show } from '../../../interfaces/shows/show.interface';\n\n@Component({\n selector: 'show-multi-select',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './show-multi-select.component.html',\n styleUrls: ['./show-multi-select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ShowMultiSelectComponent),\n multi: true,\n },\n ],\n})\nexport class ShowMultiSelectComponent implements OnInit, OnDestroy, ControlValueAccessor {\n @Input() label: string = 'Funciones';\n @Input() placeholder: string = 'Buscar funciones...';\n\n allShows: WritableSignal<SelectOption[]> = signal([]);\n filteredShows: WritableSignal<SelectOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(true);\n\n selectedIds: number[] = [];\n searchTerm: string = '';\n\n private searchSubject = new Subject<string>();\n private destroy$ = new Subject<void>();\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private showService: ShowService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.showService.loadShows({});\n\n this.showService.shows$.pipe(takeUntil(this.destroy$)).subscribe((shows: Show[]) => {\n this.allShows.set(\n shows?.map((show) => ({\n value: show.id,\n label: show.title,\n })) || [],\n );\n this.applyFilter();\n this.loading.set(false);\n });\n\n this.searchSubject\n .pipe(debounceTime(400), distinctUntilChanged(), takeUntil(this.destroy$))\n .subscribe((search) => {\n this.searchTerm = search;\n this.showService.loadShows({ search: this.searchTerm });\n });\n }\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private applyFilter() {\n if (this.searchTerm) {\n const term = this.searchTerm.toLowerCase();\n this.filteredShows.set(this.allShows().filter((s) => s.label.toLowerCase().includes(term)));\n } else {\n this.filteredShows.set([...this.allShows()]);\n }\n }\n\n onSearchChange(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.searchSubject.next(value);\n }\n\n isSelected(id: number): boolean {\n return this.selectedIds.includes(id);\n }\n\n toggleShow(id: number) {\n const index = this.selectedIds.indexOf(id);\n if (index > -1) {\n this.selectedIds = this.selectedIds.filter((v) => v !== id);\n } else {\n this.selectedIds = [...this.selectedIds, id];\n }\n this.onChange(this.selectedIds);\n this.onTouched();\n }\n\n removeShow(id: number) {\n this.toggleShow(id);\n }\n\n getShowLabel(id: number): string {\n return this.allShows().find((s) => s.value === id)?.label || '';\n }\n\n writeValue(value: number[] | null): void {\n this.selectedIds = value || [];\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n}\n","<div class=\"show-multi-select\">\n @if (label) {\n <label class=\"show-multi-select-label\">\n {{ label }}\n </label>\n }\n\n @if (selectedIds.length > 0) {\n <div class=\"show-multi-select-tags\">\n @for (id of selectedIds; track id) {\n <span class=\"show-multi-select-tag\">\n {{ getShowLabel(id) }}\n <button type=\"button\" class=\"show-multi-select-tag-remove\" (click)=\"removeShow(id)\">\n ×\n </button>\n </span>\n }\n </div>\n }\n\n <input\n type=\"text\"\n [placeholder]=\"placeholder\"\n class=\"show-multi-select-search\"\n (input)=\"onSearchChange($event)\"\n />\n\n @if (loading()) {\n <div class=\"show-multi-select-loading\">\n <div class=\"show-multi-select-spinner\"></div>\n Cargando funciones...\n </div>\n }\n\n @if (!loading() && filteredShows().length > 0) {\n <div class=\"show-multi-select-list\">\n @for (show of filteredShows(); track show.value) {\n <label class=\"show-multi-select-option\">\n <input\n type=\"checkbox\"\n [checked]=\"isSelected(show.value)\"\n (change)=\"toggleShow(show.value)\"\n class=\"show-multi-select-checkbox\"\n />\n <span class=\"show-multi-select-option-label\">{{ show.label }}</span>\n </label>\n }\n </div>\n }\n\n @if (!loading() && filteredShows().length === 0) {\n <p class=\"show-multi-select-empty\">No se encontraron funciones</p>\n }\n</div>\n","import { Subject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n EventEmitter,\n Output,\n WritableSignal,\n signal,\n PLATFORM_ID,\n Inject,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n AbstractControl,\n FormControl,\n ReactiveFormsModule,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n ControlValueAccessor,\n Validator,\n} from '@angular/forms';\nimport { FormSelectComponent } from '../../../components/forms/form-select/form-select.component';\nimport { PriceZoneService } from '../../../services/price-zone.service';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { PriceZone } from '../../../interfaces/price-zones/price-zone.interface';\n\n@Component({\n selector: 'price-zone-select',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormSelectComponent],\n templateUrl: './price-zone-select.component.html',\n styleUrls: [],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PriceZoneSelectComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PriceZoneSelectComponent),\n multi: true,\n },\n ],\n})\nexport class PriceZoneSelectComponent\n implements OnInit, OnDestroy, ControlValueAccessor, Validator\n{\n @Input() label: string = 'Categoría';\n @Input() placeholder: string = 'Selecciona una categoría';\n @Input() name: string = 'price_zone_id';\n @Input() required: boolean = false;\n @Input() readonly: boolean = false;\n @Input() showError: boolean = true;\n @Input() customClass: string = '';\n @Input() control?: AbstractControl | null = null;\n\n @Output() priceZoneChange = new EventEmitter<number | null>();\n\n priceZones: WritableSignal<SelectOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(false);\n searchTerm: string = '';\n private searchSubject = new Subject<string>();\n private destroy$ = new Subject<void>();\n\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private priceZoneService: PriceZoneService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.priceZoneService.loadPriceZones({ search: this.searchTerm });\n\n this.priceZoneService.priceZones$\n .pipe(takeUntil(this.destroy$))\n .subscribe((priceZones: PriceZone[]) => {\n this.priceZones.set(\n priceZones?.map((pz) => ({\n value: pz.id,\n label: pz.name,\n })) || [],\n );\n this.loading.set(false);\n });\n\n this.searchSubject\n .pipe(debounceTime(400), distinctUntilChanged(), takeUntil(this.destroy$))\n .subscribe((search) => {\n this.searchTerm = search;\n this.priceZoneService.loadPriceZones({ search: this.searchTerm });\n });\n }\n }\n\n get formControl(): FormControl {\n return this.control as FormControl;\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n onSearchChange(search: string) {\n this.searchSubject.next(search);\n }\n\n onPriceZoneSelected(event: Event) {\n const select = event.target as HTMLSelectElement;\n const value = select.value ? Number(select.value) : null;\n\n this.value = value;\n\n if (this.control) {\n this.control.setValue(value);\n this.control.markAsTouched();\n }\n\n this.priceZoneChange.emit(value);\n }\n\n writeValue(value: number | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n\n get isInvalid(): boolean {\n return false;\n }\n}\n","<form-select\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name || 'price_zone_id'\"\n [class]=\"customClass\"\n [options]=\"priceZones()\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [formControl]=\"formControl\"\n (change)=\"onPriceZoneSelected($event)\"\n></form-select>\n","import {\n Component,\n effect,\n ElementRef,\n Inject,\n Input,\n PLATFORM_ID,\n signal,\n ViewChild,\n WritableSignal,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { PerformancesListEventsService } from '../../../services/performances-list-events.service';\nimport { AppAlertComponent } from '../../feedback/alert/alert.component';\nimport { PerformanceAvailableDay } from '../../../interfaces';\nimport { PerformanceService, ToastService } from '../../../services';\n\n@Component({\n selector: 'day-selector-grid',\n standalone: true,\n imports: [CommonModule, AppAlertComponent],\n templateUrl: './day-selector-grid.component.html',\n styleUrls: ['./day-selector-grid.component.scss'],\n})\nexport class DaySelectorGridComponent {\n @Input() displayMode: 'grid' | 'carousel' = 'grid';\n loadingData: WritableSignal<boolean> = signal(true);\n days: WritableSignal<PerformanceAvailableDay[]> = signal([]);\n @ViewChild('carouselTrack') carouselTrack?: ElementRef<HTMLElement>;\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: object,\n protected performanceService: PerformanceService,\n protected listEventService: PerformancesListEventsService,\n protected toastService: ToastService,\n ) {\n effect(() => {\n this.listEventService.filteredShowId();\n if (isPlatformBrowser(this.platformId)) {\n this.days.set([]);\n this.listEventService.setSelectedDay(null);\n this.loadData();\n }\n });\n }\n\n private loadData(): void {\n this.loadingData.set(true);\n const showId = this.listEventService.filteredShowId() ?? undefined;\n\n this.performanceService.fetchAvailableDays({ show_id: showId }).subscribe({\n next: (response) => {\n const days = response?.data?.days ?? [];\n this.days.set(days);\n if (days.length > 0 && !this.listEventService.selectedDay()) {\n this.listEventService.setSelectedDay(days[0]);\n }\n this.loadingData.set(false);\n },\n error: () => {\n this.toastService.show('Error al cargar los datos de la función.', 'error');\n this.loadingData.set(false);\n },\n });\n }\n\n isDayActive(day: PerformanceAvailableDay): boolean {\n return day.date === this.listEventService.selectedDay()?.date;\n }\n\n onToggle(day: PerformanceAvailableDay): void {\n if (this.isDayActive(day)) return;\n this.listEventService.setSelectedPerformance(null);\n this.listEventService.setSelectedDay(day);\n }\n\n scrollCarousel(direction: 1 | -1): void {\n const track = this.carouselTrack?.nativeElement;\n if (!track) return;\n const item = track.children[0] as HTMLElement | undefined;\n const itemWidth = item?.offsetWidth ?? 112;\n track.scrollBy({ left: direction * (itemWidth + 8), behavior: 'smooth' });\n }\n}\n","@if (loadingData()) {\n <div class=\"day-selector-grid\">\n @for (i of [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; track $index) {\n <div class=\"day-selector-grid-skeleton-item\"></div>\n }\n </div>\n}\n\n@if (!loadingData() && days().length < 1) {\n <app-alert\n type=\"error\"\n text=\"No se encontraron funciones disponibles\"\n size=\"md\"\n [closeable]=\"false\"\n />\n}\n\n@if (days().length > 0) {\n <p class=\"day-selector-heading\">Selecciona un día</p>\n}\n\n@if (displayMode === 'carousel' && days().length > 0) {\n <div class=\"day-selector-carousel\">\n <button\n type=\"button\"\n (click)=\"scrollCarousel(-1)\"\n class=\"day-selector-carousel-arrow day-selector-carousel-arrow--left\"\n aria-label=\"Anterior\"\n >\n <i class=\"ri-arrow-left-s-line\"></i>\n </button>\n <div #carouselTrack class=\"day-selector-carousel-track\">\n @for (item of days(); track $index) {\n <button\n (click)=\"onToggle(item)\"\n class=\"day-selector-carousel-item\"\n [class.day-selector-item--active]=\"isDayActive(item)\"\n >\n <span class=\"day-selector-item-weekday\">\n {{ item.date | date: 'EEE' | uppercase }}\n </span>\n <span class=\"day-selector-item-day\">\n {{ item.date | date: 'dd' }}\n </span>\n <span class=\"day-selector-item-month\">\n {{ item.date | date: 'MMM' }}\n </span>\n <span class=\"day-selector-item-count\">\n {{ item.count | number: '1.0-2' }}\n </span>\n </button>\n }\n </div>\n <button\n type=\"button\"\n (click)=\"scrollCarousel(1)\"\n class=\"day-selector-carousel-arrow day-selector-carousel-arrow--right\"\n aria-label=\"Siguiente\"\n >\n <i class=\"ri-arrow-right-s-line\"></i>\n </button>\n </div>\n} @else {\n <div class=\"day-selector-grid\">\n @for (item of days(); track $index) {\n <button\n (click)=\"onToggle(item)\"\n class=\"day-selector-grid-item\"\n [class.day-selector-item--active]=\"isDayActive(item)\"\n >\n <span class=\"day-selector-item-weekday\">\n {{ item.date | date: 'EEE' | uppercase }}\n </span>\n <span class=\"day-selector-item-day\">\n {{ item.date | date: 'dd' }}\n </span>\n <span class=\"day-selector-item-month\">\n {{ item.date | date: 'MMM' }}\n </span>\n <span class=\"day-selector-item-count\">\n {{ item.count | number: '1.0-2' }}\n </span>\n </button>\n }\n </div>\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { PerformancesListEventsService } from '../../../services/performances-list-events.service';\nimport { AppLinkButtonComponent } from '../../buttons/app-link-button/app-link-button.component';\nimport { DailyPerformanceItem } from '../../../interfaces';\n\n@Component({\n selector: 'performance-card',\n standalone: true,\n imports: [CommonModule, AppLinkButtonComponent],\n templateUrl: './performance-card.component.html',\n styleUrls: ['./performance-card.component.scss'],\n})\nexport class PerformanceCardComponent {\n @Input({ required: true }) card!: DailyPerformanceItem;\n\n constructor(protected listEventService: PerformancesListEventsService) {}\n\n onSelect(): void {\n this.listEventService.setSelectedPerformance(this.card);\n }\n\n isSelected(): boolean {\n return this.listEventService.selectedPerformance()?.id === this.card.id;\n }\n}\n","<div class=\"performance-card\" [class.performance-card--selected]=\"isSelected()\">\n <div class=\"performance-card-image\">\n @if (card.show.images && card.show.images.length > 0) {\n <img [src]=\"card.show.images[0].full_url\" class=\"performance-card-image-img\" />\n } @else {\n <span class=\"performance-card-image-placeholder\"></span>\n }\n </div>\n\n <div class=\"performance-card-info\">\n <div class=\"performance-card-title\">\n {{ card.show.title }}\n </div>\n\n <div class=\"performance-card-datetime\">\n <span class=\"performance-card-date\">\n {{ card.start_time | date: `EEEE` | titlecase }}\n {{ card.start_time | date: `dd 'de' MMMM,` }}\n </span>\n\n <span class=\"performance-card-time\">\n {{ card.start_time | date: `hh:mm` }}\n </span>\n\n <span class=\"performance-card-meridiem\">\n {{ card.start_time | date: 'a' }}\n </span>\n </div>\n\n <div class=\"performance-card-price\">\n Desde\n <span class=\"performance-card-price-value\">\n ${{ card.zone_price_cheapest | number: '1.0-2' }}\n </span>\n </div>\n </div>\n\n <div class=\"performance-card-actions\">\n <app-link-button\n [route]=\"`/admin/performances/${card.id}/reservation`\"\n text=\"Comprar entradas\"\n icon=\"ri-coupon-line\"\n variant=\"primary\"\n size=\"xs\"\n />\n </div>\n</div>\n","import { Component, effect, Inject, PLATFORM_ID, signal, WritableSignal } from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { PerformanceCardComponent } from '../performance-card/performance-card.component';\nimport { PerformancesListEventsService } from '../../../services/performances-list-events.service';\nimport { DailyPerformanceItem } from '../../../interfaces';\nimport { PerformanceService, ToastService } from '../../../services';\n\n@Component({\n selector: 'performance-card-list',\n standalone: true,\n imports: [PerformanceCardComponent, CommonModule],\n templateUrl: './performance-card-list.component.html',\n styleUrls: ['./performance-card-list.component.scss'],\n})\nexport class PerformanceCardListComponent {\n loadingData: WritableSignal<boolean> = signal(true);\n performances: WritableSignal<DailyPerformanceItem[]> = signal([]);\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: object,\n protected performanceService: PerformanceService,\n protected listEventService: PerformancesListEventsService,\n protected toastService: ToastService,\n ) {\n effect(() => {\n const date = this.listEventService.selectedDayDate();\n if (date) {\n this.loadData();\n }\n });\n\n effect(() => {\n this.listEventService.filteredShowId();\n this.performances.set([]);\n const date = this.listEventService.selectedDayDate();\n if (date) {\n this.loadData();\n }\n });\n }\n\n ngOnInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.loadData();\n }\n }\n\n private loadData(): void {\n this.loadingData.set(true);\n const date = this.listEventService.selectedDayDate();\n const showId = this.listEventService.filteredShowId() ?? undefined;\n if (!date) {\n this.loadingData.set(false);\n return;\n }\n\n this.performanceService.fetchDailyPerformances({ date, show_id: showId }).subscribe({\n next: (response) => {\n this.performances.set(response?.data?.performances ?? []);\n this.loadingData.set(false);\n },\n error: () => {\n this.toastService.show('Error al cargar los datos de la función.', 'error');\n this.loadingData.set(false);\n },\n });\n }\n\n get selectedDayDate(): string | null {\n return this.listEventService.selectedDay()?.date ?? null;\n }\n}\n","@if (selectedDayDate) {\n <p class=\"performance-card-list-heading\">\n <span>Funciones disponibles:</span>\n <span class=\"performance-card-list-heading-date\">\n el {{ selectedDayDate | date: \"EEEE d 'de' MMMM\" }}\n </span>\n </p>\n}\n\n<div class=\"performance-card-list\">\n @if (loadingData()) {\n @for (i of [1, 2]; track $index) {\n <div class=\"performance-card-list-skeleton\"></div>\n }\n }\n\n @for (card of performances(); track $index) {\n <performance-card [card]=\"card\" />\n }\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'performance-stepper',\n standalone: true,\n templateUrl: './performance-stepper.component.html',\n styleUrls: ['./performance-stepper.component.scss'],\n})\nexport class PerformanceStepperComponent {\n @Input({ required: true }) stepLabel!: string;\n @Input({ required: true }) title!: string;\n @Input({ required: true }) highlight!: string;\n}\n","<div class=\"performance-stepper-label\">\n <span class=\"performance-stepper-label-bar\"></span>\n {{ stepLabel }}\n</div>\n\n<h1 class=\"performance-stepper-title\">\n <span class=\"performance-stepper-title-main\">{{ title }} </span\n ><span class=\"performance-stepper-title-highlight\">{{ highlight }}</span>\n</h1>\n","import { Component, Inject, PLATFORM_ID, signal, WritableSignal } from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { PerformancesListEventsService } from '../../../services/performances-list-events.service';\nimport { Router } from '@angular/router';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\nimport { Show } from '../../../interfaces';\nimport { ShowService, ToastService } from '../../../services';\n\n@Component({\n selector: 'shows-filter',\n standalone: true,\n imports: [AppButtonComponent, CommonModule],\n templateUrl: './shows-filter.component.html',\n styleUrls: ['./shows-filter.component.scss'],\n})\nexport class ShowsFilterComponent {\n loadingData: WritableSignal<boolean> = signal(true);\n shows: WritableSignal<Show[]> = signal([]);\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: object,\n protected showService: ShowService,\n protected listEventService: PerformancesListEventsService,\n protected toastService: ToastService,\n private router: Router,\n ) {}\n\n ngOnInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.loadData();\n }\n }\n\n private loadData(): void {\n this.loadingData.set(true);\n\n this.showService.fetchAvailableShows({}).subscribe({\n next: (response) => {\n this.shows.set(response?.data?.shows ?? []);\n this.loadingData.set(false);\n },\n error: () => {\n this.toastService.show('Error al cargar shows del filtro.', 'error');\n this.loadingData.set(false);\n },\n });\n }\n\n isActive(showId: number): boolean {\n return this.listEventService.filteredShowId() === showId;\n }\n\n onFilter(show: Show): void {\n const isCurrentlyActive = this.isActive(show.id);\n if (isCurrentlyActive) {\n this.listEventService.setFilteredShowId(null);\n this.router.navigate([], {\n queryParams: { show_id: null },\n queryParamsHandling: 'merge',\n });\n } else {\n this.listEventService.setFilteredShowId(show.id);\n this.router.navigate([], {\n queryParams: { show_id: show.id },\n queryParamsHandling: 'merge',\n });\n }\n this.listEventService.setSelectedDay(null);\n this.listEventService.setSelectedPerformance(null);\n }\n}\n","<div class=\"shows-filter\">\n @if (shows().length > 0) {\n <p class=\"shows-filter-heading\">Filtrar por evento</p>\n }\n\n @if (loadingData()) {\n @for (i of [1, 2, 3]; track $index) {\n <div class=\"shows-filter-skeleton\"></div>\n }\n }\n\n @for (show of shows(); track $index) {\n <div class=\"shows-filter-item\" [class.shows-filter-item--active]=\"isActive(show.id)\">\n <div class=\"shows-filter-item-info\">\n <span class=\"shows-filter-item-image\">\n @if (show.images.length > 0) {\n <img [src]=\"show.images[0].full_url\" class=\"shows-filter-item-image-img\" />\n } @else {\n <span class=\"shows-filter-item-image-placeholder\"></span>\n }\n </span>\n\n <div>\n <div class=\"shows-filter-item-title\">{{ show.title }}</div>\n @if (show.performances_quantity && show.performances_quantity > 0) {\n <div class=\"shows-filter-item-count\">\n {{ show.performances_quantity }} funciones\n </div>\n }\n </div>\n </div>\n\n <div class=\"shows-filter-item-actions\">\n @if (isActive(show.id)) {\n <app-button\n variant=\"tertiary\"\n icon=\"ri-close-line\"\n size=\"xs\"\n (clicked)=\"onFilter(show)\"\n />\n } @else {\n <app-button variant=\"primary\" text=\"Filtrar\" size=\"xs\" (clicked)=\"onFilter(show)\" />\n }\n </div>\n </div>\n }\n</div>\n","import { Component, Input } from '@angular/core';\nimport { PriceZoneItem } from '../../../interfaces/price-zones/price-zone-item.interface';\n\n@Component({\n selector: 'zone-price-item',\n standalone: true,\n templateUrl: './zone-price-item.component.html',\n styleUrls: ['./zone-price-item.component.scss'],\n})\nexport class ZonePriceItemComponent {\n @Input({ required: true }) zone!: PriceZoneItem;\n}\n","<div class=\"zone-price-item\">\n <div class=\"zone-price-item-info\">\n <span class=\"zone-price-item-swatch {{ zone.colorClass }}\"></span>\n <div>\n <div class=\"zone-price-item-name\">{{ zone.name }}</div>\n <div class=\"zone-price-item-seats\">{{ zone.seatsAvailable }} sillas disponibles</div>\n </div>\n </div>\n <div class=\"zone-price-item-price\">{{ zone.price }}</div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { ZonePriceItemComponent } from '../zone-price-item/zone-price-item.component';\nimport { PriceZoneItem } from '../../../interfaces/price-zones/price-zone-item.interface';\n\n@Component({\n selector: 'zone-price-list',\n standalone: true,\n imports: [ZonePriceItemComponent],\n templateUrl: './zone-price-list.component.html',\n styleUrls: ['./zone-price-list.component.scss'],\n})\nexport class ZonePriceListComponent {\n @Input({ required: true }) zones!: PriceZoneItem[];\n}\n","<p class=\"zone-price-list-title\">ZONAS Y PRECIOS</p>\n\n<div class=\"zone-price-list\">\n @for (zone of zones; track $index) {\n <zone-price-item [zone]=\"zone\" />\n }\n</div>\n","// Config\nexport * from './lib/config/index';\n\n// i18n\nexport * from './lib/i18n/index';\n\n// Constants\nexport * from './lib/constants/index';\nexport * from './lib/constants/api-routes/index';\n\n// Enums\nexport * from './lib/enums/index';\n\n// Types\nexport * from './lib/types/index';\n\n// Interfaces\nexport * from './lib/interfaces/index';\n\n// Helpers\nexport * from './lib/helpers/index';\n\n// Validators\nexport * from './lib/validators/index';\n\n// Services\nexport * from './lib/services/index';\n\n// Interceptors\nexport * from './lib/interceptors/index';\n\n// Components - Buttons\nexport * from './lib/components/buttons/app-button/app-button.component';\nexport * from './lib/components/buttons/app-link-button/app-link-button.component';\n\n// Components - Feedback\nexport * from './lib/components/feedback/alert/alert.component';\nexport * from './lib/components/feedback/loading-modal/loading-modal.component';\nexport * from './lib/components/feedback/delete-confirmation/delete-confirmation.component';\n\n// Components - Modals\nexport * from './lib/components/modals/modal/modal.component';\n\n// Components - Data Display\nexport * from './lib/components/data-display/audit-information/audit-information.component';\nexport * from './lib/components/data-display/dynamic-table/dynamic-table.component';\n\n// Components - Navigation\nexport * from './lib/components/navigation/language-switcher/language-switcher.component';\n\n// Components - Forms\nexport * from './lib/components/forms/form-input/form-input.component';\nexport * from './lib/components/forms/form-select/form-select.component';\nexport * from './lib/components/forms/form-textarea/form-textarea.component';\nexport * from './lib/components/forms/form-editor/form-editor.component';\nexport * from './lib/components/forms/color-picker/color-picker.component';\nexport * from './lib/components/forms/date-input/date-input.component';\nexport * from './lib/components/forms/toggle-switch/toggle-switch.component';\nexport * from './lib/components/forms/file-upload/file-upload.component';\nexport * from './lib/components/forms/file-upload-preview/file-upload-preview.component';\nexport * from './lib/components/forms/async-select/async-select.component';\nexport * from './lib/components/forms/change-password-form/change-password-form.component';\n\n// Components - Select Integrations\nexport * from './lib/components/select-integrations/admin-select/admin-select.component';\nexport * from './lib/components/select-integrations/city-select/city-select.component';\nexport * from './lib/components/select-integrations/country-select/country-select.component';\nexport * from './lib/components/select-integrations/state-select/state-select.component';\nexport * from './lib/components/select-integrations/customer-select/customer-select.component';\nexport * from './lib/components/select-integrations/performance-select/performance-select.component';\nexport * from './lib/components/select-integrations/performance-multi-select/performance-multi-select.component';\nexport * from './lib/components/select-integrations/product-select/product-select.component';\nexport * from './lib/components/select-integrations/product-multi-select/product-multi-select.component';\nexport * from './lib/components/select-integrations/show-select/show-select.component';\nexport * from './lib/components/select-integrations/show-multi-select/show-multi-select.component';\nexport * from './lib/components/select-integrations/price-zone-select/price-zone-select.component';\n\n// Performance selection\nexport * from './lib/components/performances-selection/day-selector-grid/day-selector-grid.component';\nexport * from './lib/components/performances-selection/performance-card/performance-card.component';\nexport * from './lib/components/performances-selection/performance-card-list/performance-card-list.component';\nexport * from './lib/components/performances-selection/performance-stepper/performance-stepper.component';\nexport * from './lib/components/performances-selection/shows-filter/shows-filter.component';\nexport * from './lib/components/performances-selection/zone-price-item/zone-price-item.component';\nexport * from './lib/components/performances-selection/zone-price-list/zone-price-list.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ApiService","i1.PriceZoneEventService","i1","i1.LoadingModalService","i2","i2.DeleteConfirmationService","i3","i2.ChangePasswordFormService","i3.CustomerService","i4.AdminService","i5.ToastService","i6","i1.AdminService","i1.CitiesService","i1.CountryService","i1.StatesService","i1.CustomerService","i1.PerformanceService","i1.ProductService","i1.ShowService","i1.PriceZoneService","i2.PerformancesListEventsService","i1.ToastService","i1.PerformancesListEventsService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tickera-angular-components.mjs","sources":["../../../projects/tickera-angular-components/src/lib/i18n/transloco-loader.ts","../../../projects/tickera-angular-components/src/lib/i18n/language.utils.ts","../../../projects/tickera-angular-components/src/lib/config/tickera-components.config.ts","../../../projects/tickera-angular-components/src/lib/constants/alerts.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/admin-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/admission-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/cities-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/countries-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/customers-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/performances-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/price-zones-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/product-categories-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/product-tags-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/product-types-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/products-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/shows-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/states-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/venues-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/api-routes/vip-cards-api.routes.ts","../../../projects/tickera-angular-components/src/lib/constants/buttons.ts","../../../projects/tickera-angular-components/src/lib/constants/form-error-messages.ts","../../../projects/tickera-angular-components/src/lib/constants/form-fields.ts","../../../projects/tickera-angular-components/src/lib/constants/phone-countries.ts","../../../projects/tickera-angular-components/src/lib/constants/select-options/customers.ts","../../../projects/tickera-angular-components/src/lib/enums/file-type.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/coupons/coupon-applicability.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/coupons/coupon-discount-type.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/coupons/coupon-status.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/corporate-bonds/corporate-bond-status.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/performances/performance-status.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/performances/performance-ticket-status.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/room-maps/room-map-element-orientation.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/room-maps/room-map-element-type.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/gift-bonds/gift-bond-status.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/gift-bonds/gift-bond-purchase-status.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/transactions/transaction-status.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/orders/order-item-type.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/orders/order-status.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/orders/creator-type.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/orders/payment-method.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/vip-cards/vip-card-status.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/vip-cards/vip-transaction-type.enum.ts","../../../projects/tickera-angular-components/src/lib/enums/memberships/membership-status.enum.ts","../../../projects/tickera-angular-components/src/lib/constants/select-options/orders.ts","../../../projects/tickera-angular-components/src/lib/constants/select-options/performances.ts","../../../projects/tickera-angular-components/src/lib/constants/ticket-map.ts","../../../projects/tickera-angular-components/src/lib/helpers/scene-generators/draw-rounded-rect.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/scene-generators/generate-exit-scene.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/scene-generators/generate-hallway-scene.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/scene-generators/generate-production-area-scene.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/ticker-map/color.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/ticker-map/draw-chair-icon.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/ticker-map/draw-happy-face.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/ticker-map/draw-wheel-chair-icon.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/ticker-map/number-to-letter.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/ticker-map/performance-ticket-icon.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/ticker-map/seat-block-ticket-scene.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/ticker-map/table-ticket-scene.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/ticker-map/ticket-map.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/scene-generators/generate-seat-block-scene.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/scene-generators/generate-stage-scene.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/scene-generators/generate-stair-scene.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/scene-generators/generate-table-scene.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/scene-generators/generate-unavailable-space-scene.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/scene-generators/generate-zone-scene.helper.ts","../../../projects/tickera-angular-components/src/lib/constants/konva-shapes.ts","../../../projects/tickera-angular-components/src/lib/interfaces/ticket-selection/selected-discount-card-type.interface.ts","../../../projects/tickera-angular-components/src/lib/helpers/get-formatted-customer.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/get-formatted-admin.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/get-order-discount.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/parse-json-to-form-data.ts","../../../projects/tickera-angular-components/src/lib/helpers/transform-image-to-file.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/transform-url-params.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/format-cities-response-to-select.helper.ts","../../../projects/tickera-angular-components/src/lib/helpers/tickets/ticket-can-open-qr.helper.ts","../../../projects/tickera-angular-components/src/lib/validators/date-validators.validator.ts","../../../projects/tickera-angular-components/src/lib/validators/must-match.validator.ts","../../../projects/tickera-angular-components/src/lib/validators/email.validator.ts","../../../projects/tickera-angular-components/src/lib/services/api.service.ts","../../../projects/tickera-angular-components/src/lib/services/sidebar-state.service.ts","../../../projects/tickera-angular-components/src/lib/services/browser-zoom-lock.service.ts","../../../projects/tickera-angular-components/src/lib/services/toast.service.ts","../../../projects/tickera-angular-components/src/lib/services/delete-confirmation.service.ts","../../../projects/tickera-angular-components/src/lib/services/change-password-form.service.ts","../../../projects/tickera-angular-components/src/lib/services/date.service.ts","../../../projects/tickera-angular-components/src/lib/services/admin.service.ts","../../../projects/tickera-angular-components/src/lib/services/cities.service.ts","../../../projects/tickera-angular-components/src/lib/services/country.service.ts","../../../projects/tickera-angular-components/src/lib/services/states.service.ts","../../../projects/tickera-angular-components/src/lib/services/performance.service.ts","../../../projects/tickera-angular-components/src/lib/services/performances-list-events.service.ts","../../../projects/tickera-angular-components/src/lib/services/show.service.ts","../../../projects/tickera-angular-components/src/lib/services/customer.service.ts","../../../projects/tickera-angular-components/src/lib/services/price-zone.service.ts","../../../projects/tickera-angular-components/src/lib/services/price-zone-event.service.ts","../../../projects/tickera-angular-components/src/lib/services/price-zone-form-modal.service.ts","../../../projects/tickera-angular-components/src/lib/services/product-category.service.ts","../../../projects/tickera-angular-components/src/lib/services/product-tag.service.ts","../../../projects/tickera-angular-components/src/lib/services/product-type.service.ts","../../../projects/tickera-angular-components/src/lib/services/product.service.ts","../../../projects/tickera-angular-components/src/lib/services/base-modal.service.ts","../../../projects/tickera-angular-components/src/lib/services/feedback-modal.service.ts","../../../projects/tickera-angular-components/src/lib/services/purchase-limit.service.ts","../../../projects/tickera-angular-components/src/lib/services/order-transaction-details-modal.service.ts","../../../projects/tickera-angular-components/src/lib/services/ticket-selection/performance-booking-data.service.ts","../../../projects/tickera-angular-components/src/lib/services/ticket-selection/ticket-selection-details.service.ts","../../../projects/tickera-angular-components/src/lib/services/ticket-selection/ticket-selection-discount.service.ts","../../../projects/tickera-angular-components/src/lib/services/ticket-selection/ticket-selection.service.ts","../../../projects/tickera-angular-components/src/lib/services/ticket-selection/ticket-selection-totals.service.ts","../../../projects/tickera-angular-components/src/lib/services/ticket-selection/ticket-map-zoom.service.ts","../../../projects/tickera-angular-components/src/lib/services/ticket-selection/confirmation-order-modal.service.ts","../../../projects/tickera-angular-components/src/lib/services/ticket-selection/seat-availability-sse.service.ts","../../../projects/tickera-angular-components/src/lib/services/ticket-selection/admission-queue.service.ts","../../../projects/tickera-angular-components/src/lib/services/tickets/ticket-qr.service.ts","../../../projects/tickera-angular-components/src/lib/services/tickets/ticket-qr-modal.service.ts","../../../projects/tickera-angular-components/src/lib/services/vip-card.service.ts","../../../projects/tickera-angular-components/src/lib/services/pending-changes.service.ts","../../../projects/tickera-angular-components/src/lib/interceptors/auth.interceptor.ts","../../../projects/tickera-angular-components/src/lib/components/buttons/app-button/app-button.component.ts","../../../projects/tickera-angular-components/src/lib/components/buttons/app-button/app-button.component.html","../../../projects/tickera-angular-components/src/lib/components/buttons/app-link-button/app-link-button.component.ts","../../../projects/tickera-angular-components/src/lib/components/buttons/app-link-button/app-link-button.component.html","../../../projects/tickera-angular-components/src/lib/components/feedback/app-alert/app-alert.component.ts","../../../projects/tickera-angular-components/src/lib/components/feedback/app-alert/app-alert.component.html","../../../projects/tickera-angular-components/src/lib/components/modals/app-modal/app-modal.component.ts","../../../projects/tickera-angular-components/src/lib/components/modals/app-modal/app-modal.component.html","../../../projects/tickera-angular-components/src/lib/components/modals/feedback-modal/feedback-modal.component.ts","../../../projects/tickera-angular-components/src/lib/components/modals/feedback-modal/feedback-modal.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/form-input/form-input.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/form-input/form-input.component.html","../../../projects/tickera-angular-components/src/lib/components/feedback/delete-confirmation/delete-confirmation.component.ts","../../../projects/tickera-angular-components/src/lib/components/feedback/delete-confirmation/delete-confirmation.component.html","../../../projects/tickera-angular-components/src/lib/components/data-display/app-badge/app-badge.component.ts","../../../projects/tickera-angular-components/src/lib/components/data-display/app-badge/app-badge.component.html","../../../projects/tickera-angular-components/src/lib/components/data-display/audit-information/audit-information.component.ts","../../../projects/tickera-angular-components/src/lib/components/data-display/audit-information/audit-information.component.html","../../../projects/tickera-angular-components/src/lib/components/data-display/dynamic-table/dynamic-table.component.ts","../../../projects/tickera-angular-components/src/lib/components/data-display/dynamic-table/dynamic-table.component.html","../../../projects/tickera-angular-components/src/lib/components/data-display/text-expandable/text-expandable.component.ts","../../../projects/tickera-angular-components/src/lib/components/data-display/text-expandable/text-expandable.component.html","../../../projects/tickera-angular-components/src/lib/components/data-editing/quick-status-edit/quick-status-edit.component.ts","../../../projects/tickera-angular-components/src/lib/components/data-editing/quick-status-edit/quick-status-edit.component.html","../../../projects/tickera-angular-components/src/lib/components/data-editing/bulk-save-bar/bulk-save-bar.component.ts","../../../projects/tickera-angular-components/src/lib/components/data-editing/bulk-save-bar/bulk-save-bar.component.html","../../../projects/tickera-angular-components/src/lib/components/shows-selection/show-type-badge/show-type-badge.component.ts","../../../projects/tickera-angular-components/src/lib/components/shows-selection/show-type-badge/show-type-badge.component.html","../../../projects/tickera-angular-components/src/lib/components/shows-selection/show-card/show-card.component.ts","../../../projects/tickera-angular-components/src/lib/components/shows-selection/show-card/show-card.component.html","../../../projects/tickera-angular-components/src/lib/components/shows-selection/show-card-skeleton/show-card-skeleton.component.ts","../../../projects/tickera-angular-components/src/lib/components/shows-selection/show-card-skeleton/show-card-skeleton.component.html","../../../projects/tickera-angular-components/src/lib/components/navigation/app-breadcrumb/app-breadcrumb.component.ts","../../../projects/tickera-angular-components/src/lib/components/navigation/app-breadcrumb/app-breadcrumb.component.html","../../../projects/tickera-angular-components/src/lib/components/navigation/language-switcher/language-switcher.component.ts","../../../projects/tickera-angular-components/src/lib/components/navigation/language-switcher/language-switcher.component.html","../../../projects/tickera-angular-components/src/lib/components/navigation/sidebar-menu/sidebar-menu.component.ts","../../../projects/tickera-angular-components/src/lib/components/navigation/sidebar-menu/sidebar-menu.component.html","../../../projects/tickera-angular-components/src/lib/components/navigation/admin-navbar/admin-navbar.component.ts","../../../projects/tickera-angular-components/src/lib/components/navigation/admin-navbar/admin-navbar.component.html","../../../projects/tickera-angular-components/src/lib/components/navigation/layouts/admin-layout/admin-layout.component.ts","../../../projects/tickera-angular-components/src/lib/components/navigation/layouts/admin-layout/admin-layout.component.html","../../../projects/tickera-angular-components/src/lib/components/navigation/layouts/public-layout/public-layout.component.ts","../../../projects/tickera-angular-components/src/lib/components/navigation/layouts/public-layout/public-layout.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/identity-document-input/identity-document-input.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/identity-document-input/identity-document-input.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/form-select/form-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/form-select/form-select.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/form-textarea/form-textarea.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/form-textarea/form-textarea.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/number-input/number-input.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/number-input/number-input.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/phone-input/phone-input.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/phone-input/phone-input.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/form-editor/form-editor.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/form-editor/form-editor.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/color-picker/color-picker.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/color-picker/color-picker.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/date-input/date-input.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/date-input/date-input.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/toggle-switch/toggle-switch.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/toggle-switch/toggle-switch.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/file-upload-preview/file-upload-preview.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/file-upload-preview/file-upload-preview.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/file-upload/file-upload.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/file-upload/file-upload.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/async-select/async-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/async-select/async-select.component.html","../../../projects/tickera-angular-components/src/lib/components/forms/change-password-form/change-password-form.component.ts","../../../projects/tickera-angular-components/src/lib/components/forms/change-password-form/change-password-form.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/admin-select/admin-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/admin-select/admin-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/city-select/city-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/city-select/city-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/country-select/country-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/country-select/country-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/state-select/state-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/state-select/state-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/customer-select/customer-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/customer-select/customer-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/performance-select/performance-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/performance-select/performance-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/performance-multi-select/performance-multi-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/performance-multi-select/performance-multi-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/product-select/product-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/product-select/product-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/product-multi-select/product-multi-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/product-multi-select/product-multi-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/show-select/show-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/show-select/show-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/show-multi-select/show-multi-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/show-multi-select/show-multi-select.component.html","../../../projects/tickera-angular-components/src/lib/components/select-integrations/price-zone-select/price-zone-select.component.ts","../../../projects/tickera-angular-components/src/lib/components/select-integrations/price-zone-select/price-zone-select.component.html","../../../projects/tickera-angular-components/src/lib/components/performances/performance-ticket-status-badge/performance-ticket-status-badge.component.ts","../../../projects/tickera-angular-components/src/lib/components/performances/performance-ticket-status-badge/performance-ticket-status-badge.component.html","../../../projects/tickera-angular-components/src/lib/components/performances-selection/performance-status-badge/performance-status-badge.component.ts","../../../projects/tickera-angular-components/src/lib/components/performances-selection/performance-status-badge/performance-status-badge.component.html","../../../projects/tickera-angular-components/src/lib/components/performances-selection/day-selector-grid/day-selector-grid.component.ts","../../../projects/tickera-angular-components/src/lib/components/performances-selection/day-selector-grid/day-selector-grid.component.html","../../../projects/tickera-angular-components/src/lib/components/performances-selection/performance-card/performance-card.component.ts","../../../projects/tickera-angular-components/src/lib/components/performances-selection/performance-card/performance-card.component.html","../../../projects/tickera-angular-components/src/lib/components/performances-selection/performance-card-list/performance-card-list.component.ts","../../../projects/tickera-angular-components/src/lib/components/performances-selection/performance-card-list/performance-card-list.component.html","../../../projects/tickera-angular-components/src/lib/components/performances-selection/performance-stepper/performance-stepper.component.ts","../../../projects/tickera-angular-components/src/lib/components/performances-selection/performance-stepper/performance-stepper.component.html","../../../projects/tickera-angular-components/src/lib/components/performances-selection/shows-filter/shows-filter.component.ts","../../../projects/tickera-angular-components/src/lib/components/performances-selection/shows-filter/shows-filter.component.html","../../../projects/tickera-angular-components/src/lib/components/performances-selection/zone-price-item/zone-price-item.component.ts","../../../projects/tickera-angular-components/src/lib/components/performances-selection/zone-price-item/zone-price-item.component.html","../../../projects/tickera-angular-components/src/lib/components/performances-selection/zone-price-list/zone-price-list.component.ts","../../../projects/tickera-angular-components/src/lib/components/performances-selection/zone-price-list/zone-price-list.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-widget/ticket-map-widget.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-widget/ticket-map-widget.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-widget-header/ticket-map-widget-header.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-widget-header/ticket-map-widget-header.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-zoom-controls/ticket-map-zoom-controls.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-zoom-controls/ticket-map-zoom-controls.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-floor-selector/ticket-map-floor-selector.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-floor-selector/ticket-map-floor-selector.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/performance-ticket-map/performance-ticket-map.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/performance-ticket-map/performance-ticket-map.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-price-zones/ticket-map-price-zones.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-price-zones/ticket-map-price-zones.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-product-selection-item/ticket-map-product-selection-item.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-product-selection-item/ticket-map-product-selection-item.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-product-selection/ticket-map-product-selection.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-product-selection/ticket-map-product-selection.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-totals/ticket-map-totals.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-totals/ticket-map-totals.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-wrapper/ticket-map-wrapper.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/ticket-map-wrapper/ticket-map-wrapper.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/seat-selection-empty-summary/seat-selection-empty-summary.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/seat-selection-empty-summary/seat-selection-empty-summary.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/seat-selection-summary-item/seat-selection-summary-item.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/seat-selection-summary-item/seat-selection-summary-item.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/seat-selection-summary/seat-selection-summary.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/seat-selection-summary/seat-selection-summary.component.html","../../../projects/tickera-angular-components/src/lib/components/ticket-map/confirmation-order-modal/confirmation-order-modal.component.ts","../../../projects/tickera-angular-components/src/lib/components/ticket-map/confirmation-order-modal/confirmation-order-modal.component.html","../../../projects/tickera-angular-components/src/lib/components/orders-information/order-status-badge/order-status-badge.component.ts","../../../projects/tickera-angular-components/src/lib/components/orders-information/order-status-badge/order-status-badge.component.html","../../../projects/tickera-angular-components/src/lib/components/orders-information/order-information/order-information.component.ts","../../../projects/tickera-angular-components/src/lib/components/orders-information/order-information/order-information.component.html","../../../projects/tickera-angular-components/src/lib/components/orders-information/order-item-type-badge/order-item-type-badge.component.ts","../../../projects/tickera-angular-components/src/lib/components/orders-information/order-item-type-badge/order-item-type-badge.component.html","../../../projects/tickera-angular-components/src/lib/components/orders-information/ticket-qr/ticket-qr.component.ts","../../../projects/tickera-angular-components/src/lib/components/orders-information/ticket-qr/ticket-qr.component.html","../../../projects/tickera-angular-components/src/lib/components/orders-information/ticket-qr-modal/ticket-qr-modal.component.ts","../../../projects/tickera-angular-components/src/lib/components/orders-information/ticket-qr-modal/ticket-qr-modal.component.html","../../../projects/tickera-angular-components/src/lib/components/orders-information/order-items/order-items.component.ts","../../../projects/tickera-angular-components/src/lib/components/orders-information/order-items/order-items.component.html","../../../projects/tickera-angular-components/src/lib/components/orders-information/order-discount-applied/order-discount-applied.component.ts","../../../projects/tickera-angular-components/src/lib/components/orders-information/order-discount-applied/order-discount-applied.component.html","../../../projects/tickera-angular-components/src/lib/components/orders-information/order-billing-info/order-billing-info.component.ts","../../../projects/tickera-angular-components/src/lib/components/orders-information/order-billing-info/order-billing-info.component.html","../../../projects/tickera-angular-components/src/lib/components/orders-information/order-transaction-details-modal/order-transaction-details-modal.component.ts","../../../projects/tickera-angular-components/src/lib/components/orders-information/order-transaction-details-modal/order-transaction-details-modal.component.html","../../../projects/tickera-angular-components/src/lib/components/orders-information/order-transactions/order-transactions.component.ts","../../../projects/tickera-angular-components/src/lib/components/orders-information/order-transactions/order-transactions.component.html","../../../projects/tickera-angular-components/src/lib/components/vip/vip-card-status-badge/vip-card-status-badge.component.ts","../../../projects/tickera-angular-components/src/lib/components/vip/vip-card-status-badge/vip-card-status-badge.component.html","../../../projects/tickera-angular-components/src/lib/components/vip/vip-balance-card/vip-balance-card.component.ts","../../../projects/tickera-angular-components/src/lib/components/vip/vip-balance-card/vip-balance-card.component.html","../../../projects/tickera-angular-components/src/lib/components/vip/vip-recharge-modal/vip-recharge-modal.component.ts","../../../projects/tickera-angular-components/src/lib/components/vip/vip-recharge-modal/vip-recharge-modal.component.html","../../../projects/tickera-angular-components/src/lib/components/vip/vip-transactions-table/vip-transactions-table.component.ts","../../../projects/tickera-angular-components/src/lib/components/vip/vip-transactions-table/vip-transactions-table.component.html","../../../projects/tickera-angular-components/src/public-api.ts","../../../projects/tickera-angular-components/src/tickera-angular-components.ts"],"sourcesContent":["import { TranslocoLoader } from '@jsverse/transloco';\nimport { Observable, from } from 'rxjs';\n\nimport es from './es.json';\nimport en from './en.json';\n\nconst translations: Record<string, Record<string, unknown>> = {\n es,\n en,\n};\n\nexport class TickeraTranslocoLoader implements TranslocoLoader {\n getTranslation(lang: string): Observable<Record<string, unknown>> {\n const translation = translations[lang] || translations['es'];\n return from(Promise.resolve(translation));\n }\n}\n","const STORAGE_KEY = 'tickera_lang';\nconst DEFAULT_LANG = 'es';\nconst AVAILABLE_LANGS = ['es', 'en'];\n\nexport function getStoredLanguage(): string {\n try {\n const stored = localStorage.getItem(STORAGE_KEY);\n if (stored && AVAILABLE_LANGS.includes(stored)) {\n return stored;\n }\n } catch {\n // localStorage not available\n }\n return '';\n}\n\nexport function setStoredLanguage(lang: string): void {\n try {\n localStorage.setItem(STORAGE_KEY, lang);\n } catch {\n // localStorage not available\n }\n}\n\nexport function getBrowserLanguage(): string {\n const nav = typeof navigator !== 'undefined' ? navigator : null;\n if (!nav) return DEFAULT_LANG;\n\n // Check navigator.language and navigator.languages\n const browserLangs = nav.languages || [nav.language];\n\n for (const lang of browserLangs) {\n if (!lang) continue;\n\n // Exact match (e.g., \"es\", \"en\")\n const shortLang = lang.split('-')[0].toLowerCase();\n if (AVAILABLE_LANGS.includes(shortLang)) {\n return shortLang;\n }\n }\n\n return DEFAULT_LANG;\n}\n\nexport function resolveLanguage(): string {\n // 1. Check localStorage first\n const stored = getStoredLanguage();\n if (stored) return stored;\n\n // 2. Detect from browser\n return getBrowserLanguage();\n}\n","import {\n InjectionToken,\n EnvironmentProviders,\n makeEnvironmentProviders,\n LOCALE_ID,\n} from '@angular/core';\nimport { provideTransloco, TranslocoConfig } from '@jsverse/transloco';\nimport { TickeraTranslocoLoader } from '../i18n/transloco-loader';\nimport { resolveLanguage } from '../i18n/language.utils';\nimport { DATE_PIPE_DEFAULT_OPTIONS } from '@angular/common';\nimport {\n provideTippyConfig,\n provideTippyLoader,\n tooltipVariation,\n popperVariation,\n} from '@ngneat/helipopper/config';\nimport { TickeraComponentsConfig } from '../interfaces/tickera-components-config.interface';\n\nexport const TICKERA_COMPONENTS_CONFIG = new InjectionToken<TickeraComponentsConfig>(\n 'TICKERA_COMPONENTS_CONFIG',\n);\n\nexport function provideTickeraComponents(config: TickeraComponentsConfig): EnvironmentProviders {\n const defaultLang = config.defaultLang || 'es';\n const availableLangs = config.availableLangs || ['es', 'en'];\n const detectedLang = resolveLanguage();\n\n return makeEnvironmentProviders([\n { provide: TICKERA_COMPONENTS_CONFIG, useValue: config },\n { provide: DATE_PIPE_DEFAULT_OPTIONS, useValue: { timezone: 'America/Bogota' } },\n ...provideTransloco({\n config: {\n defaultLang: detectedLang,\n availableLangs,\n reRenderOnLangChange: true,\n fallbackLang: defaultLang,\n } as TranslocoConfig,\n loader: TickeraTranslocoLoader,\n }),\n provideTippyLoader(() => import('tippy.js')),\n provideTippyConfig({\n defaultVariation: 'tooltip',\n variations: {\n tooltip: tooltipVariation,\n popper: popperVariation,\n },\n }),\n ]);\n}\n","export const ALERT_ICONS = {\n success: 'ri-check-line',\n error: 'ri-error-warning-line',\n warning: 'ri-alert-line',\n info: 'ri-info-line',\n};\n","export const ADMIN_API_ROUTES = {\n FIND_ALL: '/admins',\n CREATE: '/admins/auth/register',\n findOne: (id: number) => `/admins/${id}`,\n updateOne: (id: number) => `/admins/${id}`,\n deleteOne: (id: number) => `/admins/${id}`,\n};\n","export const ADMISSION_API_ROUTES = {\n join: (performanceId: number) => `/admission/${performanceId}/join`,\n leave: (performanceId: number) => `/admission/${performanceId}/leave`,\n status: (performanceId: number) => `/admission/${performanceId}/status`,\n events: (performanceId: number) => `/admission/${performanceId}/events`,\n};\n","export const CITY_API_ENDPOINTS = {\n findAll: '/cities',\n create: '/cities',\n findById: (id: number) => `/cities/${id}`,\n update: (id: number) => `/cities/${id}`,\n delete: (id: number) => `/cities/${id}`,\n};\n","export const COUNTRY_API_ENDPOINTS = {\n findAll: '/countries',\n create: '/countries',\n findById: (id: number) => `/countries/${id}`,\n update: (id: number) => `/countries/${id}`,\n delete: (id: number) => `/countries/${id}`,\n};\n","export const CUSTOMERS_API_ROUTES = {\n findAll: '/customers',\n create: '/customers/auth/register',\n findOne: (id: number) => `/customers/${id}`,\n update: (id: number) => `/customers/${id}`,\n delete: (id: number) => `/customers/${id}`,\n};\n","export const PERFORMANCES_API_ROUTES = {\n findAll: '/performances',\n create: '/performances',\n createBulk: '/performances/bulk',\n findOneById: (id: number) => `/performances/${id}`,\n findOneBookingData: (id: number) => `/performances/${id}/booking-data`,\n findOneBookingDataAdmin: (id: number) => `/performances/${id}/booking-data/admin`,\n update: (id: number) => `/performances/${id}`,\n delete: (id: number) => `/performances/${id}`,\n deleteMany: '/performances/bulk',\n bulkPublished: '/performances/bulk-published',\n cancel: (id: number) => `/performances/${id}/cancel`,\n publishInventory: (id: number) => `/performances/${id}/publish-inventory`,\n reserve: (id: number) => `/performances/${id}/reserve`,\n ticketQrToken: (uuid: string) => `/performances/tickets/${uuid}/qr-token`,\n getAvailableDays: '/performances/available-days',\n publicAvailablePerformances: '/public/performances/daily',\n seatEventsTicket: (id: number) => `/performances/${id}/seat-events/ticket`,\n seatEventsTicketAdmin: (id: number) => `/performances/${id}/seat-events/ticket/admin`,\n seatEvents: (id: number) => `/performances/${id}/seat-events`,\n myQrToken: (ticketUuid: string) => `/performances/tickets/${ticketUuid}/my-qr-token`,\n ticketPdf: (ticketUuid: string) => `/performances/tickets/${ticketUuid}/pdf`,\n myTicketPdf: (ticketUuid: string) => `/performances/tickets/${ticketUuid}/my-pdf`,\n};\n","export const PRICE_ZONES_API_ROUTES = {\n FIND_ALL: '/price-zones',\n CREATE: '/price-zones',\n findOneById: (id: number) => `/price-zones/${id}`,\n update: (id: number) => `/price-zones/${id}`,\n delete: (id: number) => `/price-zones/${id}`,\n updateElements: (id: number) => `/price-zones/${id}/elements`,\n duplicate: (id: number) => `/price-zones/${id}/duplicate`,\n};\n","export const PRODUCT_CATEGORIES_API_ROUTES = {\n FIND_ALL: '/product-categories',\n CREATE: '/product-categories',\n findById: (id: number) => `/product-categories/${id}`,\n update: (id: number) => `/product-categories/${id}`,\n delete: (id: number) => `/product-categories/${id}`,\n};\n","export const PRODUCT_TAGS_API_ROUTES = {\n FIND_ALL: '/product-tags',\n CREATE: '/product-tags',\n findById: (id: number) => `/product-tags/${id}`,\n update: (id: number) => `/product-tags/${id}`,\n delete: (id: number) => `/product-tags/${id}`,\n};\n","export const PRODUCT_TYPES_API_ROUTES = {\n FIND_ALL: '/product-types',\n CREATE: '/product-types',\n findById: (id: number) => `/product-types/${id}`,\n update: (id: number) => `/product-types/${id}`,\n delete: (id: number) => `/product-types/${id}`,\n};\n","export const PRODUCTS_API_ROUTES = {\n FIND_ALL: '/products',\n CREATE: '/products',\n findOneById: (id: number) => `/products/${id}`,\n update: (id: number) => `/products/${id}`,\n delete: (id: number) => `/products/${id}`,\n fetchImages: (id: number) => `/products/${id}/images`,\n uploadImages: (id: number) => `/products/${id}/images`,\n deleteOneImage: (productId: number, imageId: number) =>\n `/products/${productId}/images/${imageId}`,\n};\n","export const SHOWS_API_ROUTES = {\n findAll: '/shows',\n create: '/shows',\n findOneById: (id: number) => `/shows/${id}`,\n update: (id: number) => `/shows/${id}`,\n delete: (id: number) => `/shows/${id}`,\n getImages: (id: number) => `/shows/${id}/images`,\n uploadGallery: (id: number) => `/shows/${id}/images`,\n deleteOneImage: (showId: number, imageId: number) => `/shows/${showId}/images/${imageId}`,\n publicAvailablePerformances: '/public/shows/available',\n};\n","export const STATE_API_ENDPOINTS = {\n findAll: '/states',\n create: '/states',\n findById: (id: number) => `/states/${id}`,\n update: (id: number) => `/states/${id}`,\n delete: (id: number) => `/states/${id}`,\n};\n","export const VENUES_API_ROUTES = {\n findAll: '/venues',\n create: '/venues',\n findOneById: (id: number) => '/venues/' + id,\n update: (id: number) => '/venues/' + id,\n delete: (id: number) => '/venues/' + id,\n getGallery: (id: number) => '/venues/' + id + '/images',\n uploadGallery: (id: number) => '/venues/' + id + '/images',\n deleteOneImage: (venueId: number, imageId: number) => '/venues/' + venueId + '/images/' + imageId,\n};\n","export const VIP_CARDS_API_ROUTES = {\n findAll: '/admin/vip-cards',\n findOne: (id: number) => `/admin/vip-cards/${id}`,\n activateAdmin: '/admin/vip-cards/activate',\n rechargeAdmin: (id: number) => `/admin/vip-cards/${id}/recharge`,\n updateStatus: (id: number) => `/admin/vip-cards/${id}/status`,\n updateTerms: (id: number) => `/admin/vip-cards/${id}/terms`,\n transactions: (id: number) => `/admin/vip-cards/${id}/transactions`,\n findMy: '/vip-cards/my',\n activate: '/vip-cards/activate',\n recharge: '/vip-cards/recharge',\n};\n","export const BUTTON_VARIANT_CLASSES: Record<string, string> = {\n primary: 'btn-primary',\n secondary: 'btn-secondary',\n tertiary: 'btn-tertiary',\n success: 'btn-success',\n transparent: 'btn-transparent',\n};\n\nexport const BASE_BUTTON_CLASSES = 'btn';\n\nexport const BUTTON_SIZES_CLASSES: Record<string, string> = {\n xs: 'btn-xs',\n sm: 'btn-sm',\n md: 'btn-md',\n lg: 'btn-lg',\n};\n","export const FORM_ERROR_MESSAGES: Record<string, string> = {\n required: 'Este campo es requerido',\n minlength: 'Debe tener al menos caracteres',\n maxlength: 'Debe tener al menos caracteres',\n pattern: 'El formato no es válido',\n email: 'El formato no es válido',\n mustMatch: 'Las contraseñas no coinciden',\n matDatepickerMin: 'La fecha no puede ser anterior a la fecha mínima permitida',\n matDatepickerMax: 'La fecha no puede ser posterior a la fecha máxima permitida',\n};\n","export const BASE_INPUT_CLASSES = [\n 'block',\n 'w-full',\n 'rounded-md',\n 'px-3',\n 'py-1.5',\n 'text-base',\n 'text-gray-900',\n 'outline-1',\n '-outline-offset-1',\n 'outline-gray-300',\n 'placeholder:text-gray-400',\n 'focus:outline-2',\n 'focus:-outline-offset-2',\n 'focus:outline-indigo-600',\n 'sm:text-sm/6',\n].join(' ');\n\nexport const ERROR_INPUT_CLASSES = BASE_INPUT_CLASSES + ' outline-red-500 dark:outline-red-500';\n","import { PhoneCountry } from '../interfaces/phone-country.interface';\n\nexport function phoneCountryFlag(isoCode: string): string {\n return isoCode\n .toUpperCase()\n .replace(/./g, (char) => String.fromCodePoint(127397 + char.charCodeAt(0)));\n}\n\nexport const PHONE_COUNTRIES: PhoneCountry[] = [\n { name: 'Afganistán', isoCode: 'AF', dialCode: '+93' },\n { name: 'Albania', isoCode: 'AL', dialCode: '+355' },\n { name: 'Alemania', isoCode: 'DE', dialCode: '+49' },\n { name: 'Andorra', isoCode: 'AD', dialCode: '+376' },\n { name: 'Angola', isoCode: 'AO', dialCode: '+244' },\n { name: 'Anguila', isoCode: 'AI', dialCode: '+1' },\n { name: 'Antigua y Barbuda', isoCode: 'AG', dialCode: '+1' },\n { name: 'Arabia Saudita', isoCode: 'SA', dialCode: '+966' },\n { name: 'Argelia', isoCode: 'DZ', dialCode: '+213' },\n { name: 'Argentina', isoCode: 'AR', dialCode: '+54' },\n { name: 'Armenia', isoCode: 'AM', dialCode: '+374' },\n { name: 'Aruba', isoCode: 'AW', dialCode: '+297' },\n { name: 'Australia', isoCode: 'AU', dialCode: '+61' },\n { name: 'Austria', isoCode: 'AT', dialCode: '+43' },\n { name: 'Azerbaiyán', isoCode: 'AZ', dialCode: '+994' },\n { name: 'Bahamas', isoCode: 'BS', dialCode: '+1' },\n { name: 'Bangladés', isoCode: 'BD', dialCode: '+880' },\n { name: 'Barbados', isoCode: 'BB', dialCode: '+1' },\n { name: 'Baréin', isoCode: 'BH', dialCode: '+973' },\n { name: 'Bélgica', isoCode: 'BE', dialCode: '+32' },\n { name: 'Belice', isoCode: 'BZ', dialCode: '+501' },\n { name: 'Benín', isoCode: 'BJ', dialCode: '+229' },\n { name: 'Bermudas', isoCode: 'BM', dialCode: '+1' },\n { name: 'Bielorrusia', isoCode: 'BY', dialCode: '+375' },\n { name: 'Bolivia', isoCode: 'BO', dialCode: '+591' },\n { name: 'Bosnia y Herzegovina', isoCode: 'BA', dialCode: '+387' },\n { name: 'Botsuana', isoCode: 'BW', dialCode: '+267' },\n { name: 'Brasil', isoCode: 'BR', dialCode: '+55' },\n { name: 'Brunéi', isoCode: 'BN', dialCode: '+673' },\n { name: 'Bulgaria', isoCode: 'BG', dialCode: '+359' },\n { name: 'Burkina Faso', isoCode: 'BF', dialCode: '+226' },\n { name: 'Burundi', isoCode: 'BI', dialCode: '+257' },\n { name: 'Bután', isoCode: 'BT', dialCode: '+975' },\n { name: 'Cabo Verde', isoCode: 'CV', dialCode: '+238' },\n { name: 'Camboya', isoCode: 'KH', dialCode: '+855' },\n { name: 'Camerún', isoCode: 'CM', dialCode: '+237' },\n { name: 'Canadá', isoCode: 'CA', dialCode: '+1' },\n { name: 'Chad', isoCode: 'TD', dialCode: '+235' },\n { name: 'Chile', isoCode: 'CL', dialCode: '+56' },\n { name: 'China', isoCode: 'CN', dialCode: '+86' },\n { name: 'Chipre', isoCode: 'CY', dialCode: '+357' },\n { name: 'Colombia', isoCode: 'CO', dialCode: '+57' },\n { name: 'Comoras', isoCode: 'KM', dialCode: '+269' },\n { name: 'Congo', isoCode: 'CG', dialCode: '+242' },\n { name: 'Corea del Norte', isoCode: 'KP', dialCode: '+850' },\n { name: 'Corea del Sur', isoCode: 'KR', dialCode: '+82' },\n { name: 'Costa de Marfil', isoCode: 'CI', dialCode: '+225' },\n { name: 'Costa Rica', isoCode: 'CR', dialCode: '+506' },\n { name: 'Croacia', isoCode: 'HR', dialCode: '+385' },\n { name: 'Cuba', isoCode: 'CU', dialCode: '+53' },\n { name: 'Curazao', isoCode: 'CW', dialCode: '+599' },\n { name: 'Dinamarca', isoCode: 'DK', dialCode: '+45' },\n { name: 'Dominica', isoCode: 'DM', dialCode: '+1' },\n { name: 'Ecuador', isoCode: 'EC', dialCode: '+593' },\n { name: 'Egipto', isoCode: 'EG', dialCode: '+20' },\n { name: 'El Salvador', isoCode: 'SV', dialCode: '+503' },\n { name: 'Emiratos Árabes Unidos', isoCode: 'AE', dialCode: '+971' },\n { name: 'Eritrea', isoCode: 'ER', dialCode: '+291' },\n { name: 'Eslovaquia', isoCode: 'SK', dialCode: '+421' },\n { name: 'Eslovenia', isoCode: 'SI', dialCode: '+386' },\n { name: 'España', isoCode: 'ES', dialCode: '+34' },\n { name: 'Estados Unidos', isoCode: 'US', dialCode: '+1' },\n { name: 'Estonia', isoCode: 'EE', dialCode: '+372' },\n { name: 'Esuatini', isoCode: 'SZ', dialCode: '+268' },\n { name: 'Etiopía', isoCode: 'ET', dialCode: '+251' },\n { name: 'Filipinas', isoCode: 'PH', dialCode: '+63' },\n { name: 'Finlandia', isoCode: 'FI', dialCode: '+358' },\n { name: 'Fiyi', isoCode: 'FJ', dialCode: '+679' },\n { name: 'Francia', isoCode: 'FR', dialCode: '+33' },\n { name: 'Gabón', isoCode: 'GA', dialCode: '+241' },\n { name: 'Gambia', isoCode: 'GM', dialCode: '+220' },\n { name: 'Georgia', isoCode: 'GE', dialCode: '+995' },\n { name: 'Ghana', isoCode: 'GH', dialCode: '+233' },\n { name: 'Gibraltar', isoCode: 'GI', dialCode: '+350' },\n { name: 'Granada', isoCode: 'GD', dialCode: '+1' },\n { name: 'Grecia', isoCode: 'GR', dialCode: '+30' },\n { name: 'Groenlandia', isoCode: 'GL', dialCode: '+299' },\n { name: 'Guadalupe', isoCode: 'GP', dialCode: '+590' },\n { name: 'Guam', isoCode: 'GU', dialCode: '+1' },\n { name: 'Guatemala', isoCode: 'GT', dialCode: '+502' },\n { name: 'Guayana Francesa', isoCode: 'GF', dialCode: '+594' },\n { name: 'Guinea', isoCode: 'GN', dialCode: '+224' },\n { name: 'Guinea-Bisáu', isoCode: 'GW', dialCode: '+245' },\n { name: 'Guinea Ecuatorial', isoCode: 'GQ', dialCode: '+240' },\n { name: 'Guyana', isoCode: 'GY', dialCode: '+592' },\n { name: 'Haití', isoCode: 'HT', dialCode: '+509' },\n { name: 'Honduras', isoCode: 'HN', dialCode: '+504' },\n { name: 'Hong Kong', isoCode: 'HK', dialCode: '+852' },\n { name: 'Hungría', isoCode: 'HU', dialCode: '+36' },\n { name: 'India', isoCode: 'IN', dialCode: '+91' },\n { name: 'Indonesia', isoCode: 'ID', dialCode: '+62' },\n { name: 'Irak', isoCode: 'IQ', dialCode: '+964' },\n { name: 'Irán', isoCode: 'IR', dialCode: '+98' },\n { name: 'Irlanda', isoCode: 'IE', dialCode: '+353' },\n { name: 'Islandia', isoCode: 'IS', dialCode: '+354' },\n { name: 'Islas Caimán', isoCode: 'KY', dialCode: '+1' },\n { name: 'Islas Cook', isoCode: 'CK', dialCode: '+682' },\n { name: 'Islas Feroe', isoCode: 'FO', dialCode: '+298' },\n { name: 'Islas Malvinas', isoCode: 'FK', dialCode: '+500' },\n { name: 'Islas Marianas del Norte', isoCode: 'MP', dialCode: '+1' },\n { name: 'Islas Marshall', isoCode: 'MH', dialCode: '+692' },\n { name: 'Islas Salomón', isoCode: 'SB', dialCode: '+677' },\n { name: 'Islas Vírgenes Británicas', isoCode: 'VG', dialCode: '+1' },\n { name: 'Islas Vírgenes de EE. UU.', isoCode: 'VI', dialCode: '+1' },\n { name: 'Israel', isoCode: 'IL', dialCode: '+972' },\n { name: 'Italia', isoCode: 'IT', dialCode: '+39' },\n { name: 'Jamaica', isoCode: 'JM', dialCode: '+1' },\n { name: 'Japón', isoCode: 'JP', dialCode: '+81' },\n { name: 'Jordania', isoCode: 'JO', dialCode: '+962' },\n { name: 'Kazajistán', isoCode: 'KZ', dialCode: '+7' },\n { name: 'Kenia', isoCode: 'KE', dialCode: '+254' },\n { name: 'Kirguistán', isoCode: 'KG', dialCode: '+996' },\n { name: 'Kiribati', isoCode: 'KI', dialCode: '+686' },\n { name: 'Kosovo', isoCode: 'XK', dialCode: '+383' },\n { name: 'Kuwait', isoCode: 'KW', dialCode: '+965' },\n { name: 'Laos', isoCode: 'LA', dialCode: '+856' },\n { name: 'Lesoto', isoCode: 'LS', dialCode: '+266' },\n { name: 'Letonia', isoCode: 'LV', dialCode: '+371' },\n { name: 'Líbano', isoCode: 'LB', dialCode: '+961' },\n { name: 'Liberia', isoCode: 'LR', dialCode: '+231' },\n { name: 'Libia', isoCode: 'LY', dialCode: '+218' },\n { name: 'Liechtenstein', isoCode: 'LI', dialCode: '+423' },\n { name: 'Lituania', isoCode: 'LT', dialCode: '+370' },\n { name: 'Luxemburgo', isoCode: 'LU', dialCode: '+352' },\n { name: 'Macao', isoCode: 'MO', dialCode: '+853' },\n { name: 'Macedonia del Norte', isoCode: 'MK', dialCode: '+389' },\n { name: 'Madagascar', isoCode: 'MG', dialCode: '+261' },\n { name: 'Malasia', isoCode: 'MY', dialCode: '+60' },\n { name: 'Malaui', isoCode: 'MW', dialCode: '+265' },\n { name: 'Maldivas', isoCode: 'MV', dialCode: '+960' },\n { name: 'Malí', isoCode: 'ML', dialCode: '+223' },\n { name: 'Malta', isoCode: 'MT', dialCode: '+356' },\n { name: 'Marruecos', isoCode: 'MA', dialCode: '+212' },\n { name: 'Martinica', isoCode: 'MQ', dialCode: '+596' },\n { name: 'Mauricio', isoCode: 'MU', dialCode: '+230' },\n { name: 'Mauritania', isoCode: 'MR', dialCode: '+222' },\n { name: 'México', isoCode: 'MX', dialCode: '+52' },\n { name: 'Micronesia', isoCode: 'FM', dialCode: '+691' },\n { name: 'Moldavia', isoCode: 'MD', dialCode: '+373' },\n { name: 'Mónaco', isoCode: 'MC', dialCode: '+377' },\n { name: 'Mongolia', isoCode: 'MN', dialCode: '+976' },\n { name: 'Montenegro', isoCode: 'ME', dialCode: '+382' },\n { name: 'Montserrat', isoCode: 'MS', dialCode: '+1' },\n { name: 'Mozambique', isoCode: 'MZ', dialCode: '+258' },\n { name: 'Myanmar', isoCode: 'MM', dialCode: '+95' },\n { name: 'Namibia', isoCode: 'NA', dialCode: '+264' },\n { name: 'Nauru', isoCode: 'NR', dialCode: '+674' },\n { name: 'Nepal', isoCode: 'NP', dialCode: '+977' },\n { name: 'Nicaragua', isoCode: 'NI', dialCode: '+505' },\n { name: 'Níger', isoCode: 'NE', dialCode: '+227' },\n { name: 'Nigeria', isoCode: 'NG', dialCode: '+234' },\n { name: 'Niue', isoCode: 'NU', dialCode: '+683' },\n { name: 'Noruega', isoCode: 'NO', dialCode: '+47' },\n { name: 'Nueva Caledonia', isoCode: 'NC', dialCode: '+687' },\n { name: 'Nueva Zelanda', isoCode: 'NZ', dialCode: '+64' },\n { name: 'Omán', isoCode: 'OM', dialCode: '+968' },\n { name: 'Países Bajos', isoCode: 'NL', dialCode: '+31' },\n { name: 'Pakistán', isoCode: 'PK', dialCode: '+92' },\n { name: 'Palaos', isoCode: 'PW', dialCode: '+680' },\n { name: 'Panamá', isoCode: 'PA', dialCode: '+507' },\n { name: 'Papúa Nueva Guinea', isoCode: 'PG', dialCode: '+675' },\n { name: 'Paraguay', isoCode: 'PY', dialCode: '+595' },\n { name: 'Perú', isoCode: 'PE', dialCode: '+51' },\n { name: 'Polinesia Francesa', isoCode: 'PF', dialCode: '+689' },\n { name: 'Polonia', isoCode: 'PL', dialCode: '+48' },\n { name: 'Portugal', isoCode: 'PT', dialCode: '+351' },\n { name: 'Puerto Rico', isoCode: 'PR', dialCode: '+1' },\n { name: 'Qatar', isoCode: 'QA', dialCode: '+974' },\n { name: 'Reino Unido', isoCode: 'GB', dialCode: '+44' },\n { name: 'República Centroafricana', isoCode: 'CF', dialCode: '+236' },\n { name: 'República Checa', isoCode: 'CZ', dialCode: '+420' },\n { name: 'República Democrática del Congo', isoCode: 'CD', dialCode: '+243' },\n { name: 'República Dominicana', isoCode: 'DO', dialCode: '+1' },\n { name: 'Reunión', isoCode: 'RE', dialCode: '+262' },\n { name: 'Ruanda', isoCode: 'RW', dialCode: '+250' },\n { name: 'Rumania', isoCode: 'RO', dialCode: '+40' },\n { name: 'Rusia', isoCode: 'RU', dialCode: '+7' },\n { name: 'Samoa', isoCode: 'WS', dialCode: '+685' },\n { name: 'Samoa Americana', isoCode: 'AS', dialCode: '+1' },\n { name: 'San Cristóbal y Nieves', isoCode: 'KN', dialCode: '+1' },\n { name: 'San Marino', isoCode: 'SM', dialCode: '+378' },\n { name: 'San Martín (Francia)', isoCode: 'MF', dialCode: '+590' },\n { name: 'San Pedro y Miquelón', isoCode: 'PM', dialCode: '+508' },\n { name: 'San Vicente y las Granadinas', isoCode: 'VC', dialCode: '+1' },\n { name: 'Santa Elena', isoCode: 'SH', dialCode: '+290' },\n { name: 'Santa Lucía', isoCode: 'LC', dialCode: '+1' },\n { name: 'Santo Tomé y Príncipe', isoCode: 'ST', dialCode: '+239' },\n { name: 'Senegal', isoCode: 'SN', dialCode: '+221' },\n { name: 'Serbia', isoCode: 'RS', dialCode: '+381' },\n { name: 'Seychelles', isoCode: 'SC', dialCode: '+248' },\n { name: 'Sierra Leona', isoCode: 'SL', dialCode: '+232' },\n { name: 'Singapur', isoCode: 'SG', dialCode: '+65' },\n { name: 'Siria', isoCode: 'SY', dialCode: '+963' },\n { name: 'Somalia', isoCode: 'SO', dialCode: '+252' },\n { name: 'Sri Lanka', isoCode: 'LK', dialCode: '+94' },\n { name: 'Sudáfrica', isoCode: 'ZA', dialCode: '+27' },\n { name: 'Sudán', isoCode: 'SD', dialCode: '+249' },\n { name: 'Sudán del Sur', isoCode: 'SS', dialCode: '+211' },\n { name: 'Suecia', isoCode: 'SE', dialCode: '+46' },\n { name: 'Suiza', isoCode: 'CH', dialCode: '+41' },\n { name: 'Surinam', isoCode: 'SR', dialCode: '+597' },\n { name: 'Svalbard y Jan Mayen', isoCode: 'SJ', dialCode: '+47' },\n { name: 'Tailandia', isoCode: 'TH', dialCode: '+66' },\n { name: 'Taiwán', isoCode: 'TW', dialCode: '+886' },\n { name: 'Tanzania', isoCode: 'TZ', dialCode: '+255' },\n { name: 'Tayikistán', isoCode: 'TJ', dialCode: '+992' },\n { name: 'Territorio Británico del Océano Índico', isoCode: 'IO', dialCode: '+246' },\n { name: 'Timor Oriental', isoCode: 'TL', dialCode: '+670' },\n { name: 'Togo', isoCode: 'TG', dialCode: '+228' },\n { name: 'Tonga', isoCode: 'TO', dialCode: '+676' },\n { name: 'Trinidad y Tobago', isoCode: 'TT', dialCode: '+1' },\n { name: 'Túnez', isoCode: 'TN', dialCode: '+216' },\n { name: 'Turkmenistán', isoCode: 'TM', dialCode: '+993' },\n { name: 'Turquía', isoCode: 'TR', dialCode: '+90' },\n { name: 'Tuvalu', isoCode: 'TV', dialCode: '+688' },\n { name: 'Ucrania', isoCode: 'UA', dialCode: '+380' },\n { name: 'Uganda', isoCode: 'UG', dialCode: '+256' },\n { name: 'Uruguay', isoCode: 'UY', dialCode: '+598' },\n { name: 'Uzbekistán', isoCode: 'UZ', dialCode: '+998' },\n { name: 'Vanuatu', isoCode: 'VU', dialCode: '+678' },\n { name: 'Vaticano', isoCode: 'VA', dialCode: '+39' },\n { name: 'Venezuela', isoCode: 'VE', dialCode: '+58' },\n { name: 'Vietnam', isoCode: 'VN', dialCode: '+84' },\n { name: 'Yemen', isoCode: 'YE', dialCode: '+967' },\n { name: 'Yibuti', isoCode: 'DJ', dialCode: '+253' },\n { name: 'Zambia', isoCode: 'ZM', dialCode: '+260' },\n { name: 'Zimbabue', isoCode: 'ZW', dialCode: '+263' },\n];\n","import { SelectOption } from '../../interfaces';\n\nexport const DOCUMENT_TYPES_OPTIONS: SelectOption[] = [\n { value: 'CC', label: 'common.documentTypes.cc' },\n { value: 'CE', label: 'common.documentTypes.ce' },\n { value: 'NIT', label: 'common.documentTypes.nit' },\n { value: 'PP', label: 'common.documentTypes.pp' },\n { value: 'TI', label: 'common.documentTypes.ti' },\n];\n","export enum FileType {\n IMAGE = 'image',\n PDF = 'pdf',\n EXCEL = 'excel',\n WORD = 'word',\n TEXT = 'text',\n DEFAULT = 'default',\n}\n","export enum CouponApplicability {\n GENERAL = 'GENERAL',\n CUSTOMER_EMAIL = 'CUSTOMER_EMAIL',\n MEMBERSHIP_TYPE = 'MEMBERSHIP_TYPE',\n SHOWS = 'SHOWS',\n PERFORMANCES = 'PERFORMANCES',\n}\n","export enum CouponDiscountType {\n PERCENTAGE = 'PERCENTAGE',\n FIXED = 'FIXED',\n}\n","export enum CouponStatus {\n ACTIVE = 'ACTIVE',\n INACTIVE = 'INACTIVE',\n EXPIRED = 'EXPIRED',\n CONSUMED = 'CONSUMED',\n}\n","export enum CorporateBondStatus {\n ACTIVE = 'ACTIVE',\n INACTIVE = 'INACTIVE',\n PENDING = 'PENDING',\n PAYMENT_FAILED = 'PAYMENT_FAILED',\n EXPIRED = 'EXPIRED',\n CONSUMED = 'CONSUMED',\n}\n","export enum PerformanceStatus {\n SCHEDULED = 'scheduled',\n OPEN = 'open',\n CLOSED = 'closed',\n CANCELLED = 'cancelled',\n COMPLETED = 'completed',\n POSTPONED = 'postponed',\n}\n","export enum PerformanceTicketStatus {\n AVAILABLE = 'available',\n RESERVED = 'reserved',\n SOLD = 'sold',\n BLOCKED = 'blocked',\n}\n","export enum RoomMapElementOrientation {\n TOP = 'top',\n RIGHT = 'right',\n BOTTOM = 'bottom',\n LEFT = 'left',\n CENTER = 'center',\n}\n","export enum RoomMapElementType {\n SEAT_BLOCK = 'seat_block',\n TABLE = 'table',\n ZONE = 'zone',\n EXIT = 'exit',\n STAGE = 'stage',\n PRODUCTION_AREA = 'production_area',\n UNAVAILABLE_SPACE = 'unavailable_space',\n STAIR = 'stair',\n HALLWAY = 'hallway',\n}\n","export enum GiftBondStatus {\n ACTIVE = 'ACTIVE',\n INACTIVE = 'INACTIVE',\n}\n","export enum GiftBondPurchaseStatus {\n AVAILABLE = 'AVAILABLE',\n REDEEMED = 'REDEEMED',\n EXPIRED = 'EXPIRED',\n CANCELLED = 'CANCELLED',\n}\n","export enum TransactionStatus {\n PENDING = 'PENDING',\n APPROVED = 'APPROVED',\n REJECTED = 'REJECTED',\n ERROR = 'ERROR',\n}\n","export enum OrderItemType {\n TICKET = 'TICKET',\n PRODUCT = 'PRODUCT',\n GIFT_BOND = 'GIFT_BOND',\n CORPORATE_BOND = 'CORPORATE_BOND',\n VIP_RECHARGE = 'VIP_RECHARGE',\n}\n","export enum OrderStatus {\n ON_HOLD = 'on-hold',\n PENDING_PAYMENT = 'pending-payment',\n PROCESSING = 'processing',\n COMPLETED = 'completed',\n FAILED = 'failed',\n CANCELLED = 'cancelled',\n REFUNDED = 'refunded',\n}\n","export enum CreatorType {\n ADMIN = 'admin',\n CUSTOMER = 'customer',\n}\n","export enum PaymentMethod {\n PAYROLL = 'payroll',\n CASH = 'cash',\n DATAFONO = 'datafono',\n INTERNAL_EXCHANGE = 'internal_exchange',\n CLIENT_EXCHANGE = 'client_exchange',\n MERCADO_PAGO = 'mercado_pago',\n}\n","export enum VipCardStatus {\n ACTIVE = 'ACTIVE',\n INACTIVE = 'INACTIVE',\n EXPIRED = 'EXPIRED',\n}\n","export enum VipTransactionType {\n INITIAL_RECHARGE = 'INITIAL_RECHARGE',\n RECHARGE = 'RECHARGE',\n PURCHASE_PAYMENT = 'PURCHASE_PAYMENT',\n}\n","export enum MembershipStatus {\n ACTIVE = 'ACTIVE',\n INACTIVE = 'INACTIVE',\n}\n","import { SelectOption } from '../../interfaces';\nimport { OrderItemType, OrderStatus } from '../../types';\nimport { TransactionStatus } from '../../enums';\n\nexport const PAYMENT_METHODS_OPTIONS: SelectOption[] = [\n { value: 'credit_card', label: 'paymentMethod.creditCard' },\n { value: 'debit_card', label: 'paymentMethod.debitCard' },\n { value: 'pse', label: 'paymentMethod.pse' },\n { value: 'cash', label: 'paymentMethod.cash' },\n { value: 'bank_transfer', label: 'paymentMethod.bankTransfer' },\n];\n\nexport const ORDER_STATUS_COLORS: Record<OrderStatus, { text: string; bg: string }> = {\n completed: { text: '#16a34a', bg: '#dcfce7' },\n processing: { text: '#525252', bg: '#f5f5f5' },\n refunded: { text: '#ea580c', bg: '#ffedd5' },\n failed: { text: '#dc2626', bg: '#fee2e2' },\n cancelled: { text: '#dc2626', bg: '#fee2e2' },\n 'on-hold': { text: '#ca8a04', bg: '#fef9c3' },\n 'pending-payment': { text: '#ca8a04', bg: '#fef9c3' },\n};\n\nexport const ORDER_ITEM_TYPES_COLORS: Record<OrderItemType, { text: string; bg: string }> = {\n TICKET: { text: '#1d4ed8', bg: '#eff6ff' },\n PRODUCT: { text: '#7e22ce', bg: '#faf5ff' },\n GIFT_BOND: { text: '#ca8a04', bg: '#fefce8' },\n CORPORATE_BOND: { text: '#0d9488', bg: '#ccfbf1' },\n VIP_RECHARGE: { text: '#940d89', bg: '#fbccf1' },\n};\n\nexport const ORDER_DISCOUNT_COLORS: Record<string, { text: string; bg: string }> = {\n coupon: { text: '#1d4ed8', bg: '#eff6ff' },\n corporate_bond: { text: '#7e22ce', bg: '#faf5ff' },\n gift_bond: { text: '#ca8a04', bg: '#fefce8' },\n vip: { text: '#940d89', bg: '#fbccf1' },\n subscription: { text: '#0d9488', bg: '#ccfbf1' },\n};\n\nexport const TRANSACTION_STATUS_COLORS: Record<TransactionStatus, { text: string; bg: string }> = {\n [TransactionStatus.PENDING]: { text: '#ca8a04', bg: '#fef9c3' },\n [TransactionStatus.APPROVED]: { text: '#16a34a', bg: '#dcfce7' },\n [TransactionStatus.REJECTED]: { text: '#dc2626', bg: '#fee2e2' },\n [TransactionStatus.ERROR]: { text: '#ea580c', bg: '#ffedd5' },\n};\n","import { PerformanceStatus, PerformanceTicketStatus } from '../../enums';\n\nexport const PERFORMANCE_TICKET_STATUS_COLORS: Record<\n PerformanceTicketStatus,\n { text: string; bg: string }\n> = {\n [PerformanceTicketStatus.AVAILABLE]: { text: '#22C55E', bg: '#DCFCE7' },\n [PerformanceTicketStatus.RESERVED]: { text: '#EAB308', bg: '#FEF08A' },\n [PerformanceTicketStatus.SOLD]: { text: '#EF4444', bg: '#FECACA' },\n [PerformanceTicketStatus.BLOCKED]: { text: '#6B7280', bg: '#E5E7EB' },\n};\n\nexport const PERFORMANCE_STATUS_COLORS: Record<PerformanceStatus, { text: string; bg: string }> = {\n scheduled: { text: '#1e40af', bg: '#dbeafe' },\n open: { text: '#16a34a', bg: '#dcfce7' },\n closed: { text: '#525252', bg: '#f5f5f5' },\n cancelled: { text: '#dc2626', bg: '#fee2e2' },\n completed: { text: '#374151', bg: '#f3f4f6' },\n postponed: { text: '#ea580c', bg: '#ffedd5' },\n};\n","import { PerformanceTicketStatus, RoomMapElementType } from '../enums';\n\nexport const TICKET_MAP_LAST_TICKETS_LIMIT = 10;\n\nexport const TICKET_ELEMENT_TYPES = [\n RoomMapElementType.SEAT_BLOCK,\n RoomMapElementType.TABLE,\n RoomMapElementType.ZONE,\n];\n\nexport const DEFAULT_STAGE_CONFIG: { [x: string]: any } = {\n width: 800,\n height: 600,\n draggable: true,\n scaleX: 1,\n scaleY: 1,\n x: 0,\n y: 0,\n};\n\nexport const TICKET_STATUS_COLORS: Record<PerformanceTicketStatus, string> = {\n [PerformanceTicketStatus.AVAILABLE]: '#22C55E',\n [PerformanceTicketStatus.RESERVED]: '#EAB308',\n [PerformanceTicketStatus.SOLD]: '#EF4444',\n [PerformanceTicketStatus.BLOCKED]: '#6B7280',\n};\n\nexport const TICKET_STATUS_FILLS: Record<PerformanceTicketStatus, string> = {\n [PerformanceTicketStatus.AVAILABLE]: '#DCFCE7',\n [PerformanceTicketStatus.RESERVED]: '#FEF08A',\n [PerformanceTicketStatus.SOLD]: '#FECACA',\n [PerformanceTicketStatus.BLOCKED]: '#E5E7EB',\n};\n\nexport const TICKET_STATUS_LABELS: Record<PerformanceTicketStatus, string> = {\n [PerformanceTicketStatus.AVAILABLE]: 'Disponible',\n [PerformanceTicketStatus.RESERVED]: 'Reservado',\n [PerformanceTicketStatus.SOLD]: 'Vendido',\n [PerformanceTicketStatus.BLOCKED]: 'Bloqueado',\n};\n\nexport const TICKET_MAP_GRID_SIZE = 30;\n\nexport const TICKET_MAP_TITLE_HEIGHT = 30;\n\n// Hover por piso: al pasar el mouse sobre un elemento de un piso, los demás\n// pisos visibles se atenúan y el piso activo pasa al frente (ver\n// PerformanceBookingDataService.floorZOrder y PerformanceTicketMapComponent).\nexport const TICKET_MAP_FLOOR_HOVER_OPACITY = 0.25;\nexport const TICKET_MAP_FLOOR_HOVER_FADE_MS = 150;\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\n\nexport function drawRoundedRect(\n con: Context,\n shape: Shape,\n x: number,\n y: number,\n width: number,\n height: number,\n cornerRadius: number,\n) {\n con.beginPath();\n con.moveTo(x + cornerRadius, y);\n con.lineTo(x + width - cornerRadius, y);\n con.quadraticCurveTo(x + width, y, x + width, y + cornerRadius);\n con.lineTo(x + width, y + height - cornerRadius);\n con.quadraticCurveTo(x + width, y + height, x + width - cornerRadius, y + height);\n con.lineTo(x + cornerRadius, y + height);\n con.quadraticCurveTo(x, y + height, x, y + height - cornerRadius);\n con.lineTo(x, y + cornerRadius);\n con.quadraticCurveTo(x, y, x + cornerRadius, y);\n con.closePath();\n con.fillStrokeShape(shape);\n}\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\nimport { drawRoundedRect } from './draw-rounded-rect.helper';\n\nexport const generateExitScene = (con: Context, shape: Shape) => {\n const w = shape.width();\n const h = shape.height();\n const padding = 4;\n\n con.save();\n\n const exitX = padding;\n const exitY = padding;\n const exitWidth = w - padding * 2;\n const exitHeight = h - padding * 2;\n const cornerRadius = Math.min(exitWidth, exitHeight) * 0.2;\n\n drawRoundedRect(con, shape, exitX, exitY, exitWidth, exitHeight, cornerRadius);\n\n // Stage text - check if parent has element_name, otherwise use \"ESCENARIO\"\n // const fontSize = Math.min(w, h) * 0.35;\n con.font = `11px Arial`;\n con.fillStyle = '#333333';\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n const centerX = w / 2;\n const centerY = h / 2;\n\n // Get parent element and check for element_name\n const stageText = '🚪' + (shape?.attrs?.element_name || 'Salida');\n con.fillText(stageText, centerX, centerY);\n\n con.restore();\n};\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\nimport { drawRoundedRect } from './draw-rounded-rect.helper';\n\nexport const generateHallwayScene = (con: Context, shape: Shape) => {\n const w = shape.width();\n const h = shape.height();\n const padding = 4;\n\n con.save();\n\n const exitX = padding;\n const exitY = padding;\n const exitWidth = w - padding * 2;\n const exitHeight = h - padding * 2;\n const cornerRadius = Math.min(exitWidth, exitHeight) * 0.2;\n\n drawRoundedRect(con, shape, exitX, exitY, exitWidth, exitHeight, cornerRadius);\n\n // Stage text - check if parent has element_name, otherwise use \"ESCENARIO\"\n // const fontSize = Math.min(w, h) * 0.35;\n con.font = `11px Arial`;\n con.fillStyle = '#333333';\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n const centerX = w / 2;\n const centerY = h / 2;\n\n // Get parent element and check for element_name\n const stageText = '🚶🏽' + (shape?.attrs?.element_name || 'Pasillo');\n con.fillText(stageText, centerX, centerY);\n\n con.restore();\n};\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\nimport { drawRoundedRect } from './draw-rounded-rect.helper';\n\nexport const generateProductionAreaScene = (con: Context, shape: Shape) => {\n const w = shape.width();\n const h = shape.height();\n const padding = 4;\n\n con.save();\n\n const exitX = padding;\n const exitY = padding;\n const exitWidth = w - padding * 2;\n const exitHeight = h - padding * 2;\n const cornerRadius = Math.min(exitWidth, exitHeight) * 0.2;\n\n drawRoundedRect(con, shape, exitX, exitY, exitWidth, exitHeight, cornerRadius);\n\n // Stage text - check if parent has element_name, otherwise use \"ESCENARIO\"\n // const fontSize = Math.min(w, h) * 0.35;\n con.font = `11px Arial`;\n con.fillStyle = '#333333';\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n const centerX = w / 2;\n const centerY = h / 2;\n\n // Get parent element and check for element_name\n const stageText = '🛠️' + (shape?.attrs?.element_name || 'Área de producción');\n con.fillText(stageText, centerX, centerY);\n\n con.restore();\n};\n","export function tintColor(hex: string, amount: number = 0.7): string {\n const cleanHex = hex.replace('#', '');\n const r = parseInt(cleanHex.substring(0, 2), 16);\n const g = parseInt(cleanHex.substring(2, 4), 16);\n const b = parseInt(cleanHex.substring(4, 6), 16);\n\n const tintedR = Math.round(r + (255 - r) * amount);\n const tintedG = Math.round(g + (255 - g) * amount);\n const tintedB = Math.round(b + (255 - b) * amount);\n\n return `#${tintedR.toString(16).padStart(2, '0')}${tintedG.toString(16).padStart(2, '0')}${tintedB.toString(16).padStart(2, '0')}`;\n}\n","import type { Context } from 'konva/lib/Context';\n\nexport const drawChairIcon = (con: Context, cx: number, cy: number, size: number) => {\n con.beginPath();\n\n const backWidth = size * 0.7;\n const backHeight = size * 0.6;\n const backX = cx - backWidth / 2;\n const backY = cy - backHeight / 2 - size * 0.1;\n\n con.moveTo(backX + backWidth * 0.2, backY);\n con.lineTo(backX + backWidth * 0.8, backY);\n con.quadraticCurveTo(backX + backWidth, backY, backX + backWidth, backY + backHeight * 0.2);\n con.lineTo(backX + backWidth, backY + backHeight * 0.8);\n con.quadraticCurveTo(\n backX + backWidth,\n backY + backHeight,\n backX + backWidth * 0.8,\n backY + backHeight,\n );\n con.lineTo(backX + backWidth * 0.2, backY + backHeight);\n con.quadraticCurveTo(backX, backY + backHeight, backX, backY + backHeight * 0.8);\n con.lineTo(backX, backY + backHeight * 0.2);\n con.quadraticCurveTo(backX, backY, backX + backWidth * 0.2, backY);\n\n const chairSeatWidth = size * 0.8;\n const chairSeatHeight = size * 0.3;\n const seatX = cx - chairSeatWidth / 2;\n const seatY = cy + backHeight * 0.3;\n\n con.moveTo(seatX, seatY);\n con.lineTo(seatX + chairSeatWidth, seatY);\n con.lineTo(seatX + chairSeatWidth * 0.9, seatY + chairSeatHeight);\n con.lineTo(seatX + chairSeatWidth * 0.1, seatY + chairSeatHeight);\n con.closePath();\n\n const legWidth = size * 0.1;\n const legHeight = size * 0.2;\n\n con.moveTo(seatX + chairSeatWidth * 0.1, seatY + chairSeatHeight);\n con.lineTo(seatX + chairSeatWidth * 0.1 + legWidth, seatY + chairSeatHeight);\n con.lineTo(seatX + chairSeatWidth * 0.1 + legWidth, seatY + chairSeatHeight + legHeight);\n con.lineTo(seatX + chairSeatWidth * 0.1, seatY + chairSeatHeight + legHeight);\n\n con.moveTo(seatX + chairSeatWidth * 0.9 - legWidth, seatY + chairSeatHeight);\n con.lineTo(seatX + chairSeatWidth * 0.9, seatY + chairSeatHeight);\n con.lineTo(seatX + chairSeatWidth * 0.9, seatY + chairSeatHeight + legHeight);\n con.lineTo(seatX + chairSeatWidth * 0.9 - legWidth, seatY + chairSeatHeight + legHeight);\n\n con.closePath();\n};\n","import type { Context } from 'konva/lib/Context';\n\nexport const drawHappyFace = (con: Context, cx: number, cy: number, size: number) => {\n const radius = size * 0.45;\n\n con.beginPath();\n con.arc(cx, cy, radius, 0, Math.PI * 2);\n con.closePath();\n con.fillStyle = '#DCFCE7';\n con.fill();\n con.strokeStyle = '#166534';\n con.lineWidth = 2;\n con.stroke();\n\n const eyeR = radius * 0.12;\n const eyeOffX = radius * 0.3;\n const eyeOffY = radius * 0.15;\n con.beginPath();\n con.arc(cx - eyeOffX, cy - eyeOffY, eyeR, 0, Math.PI * 2);\n con.closePath();\n con.fillStyle = '#166534';\n con.fill();\n con.beginPath();\n con.arc(cx + eyeOffX, cy - eyeOffY, eyeR, 0, Math.PI * 2);\n con.closePath();\n con.fill();\n\n con.beginPath();\n con.moveTo(cx - radius * 0.35, cy + radius * 0.05);\n con.quadraticCurveTo(cx, cy + radius * 0.4, cx + radius * 0.35, cy + radius * 0.05);\n con.strokeStyle = '#166534';\n con.lineWidth = 2;\n con.stroke();\n};\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\n\nexport const drawWheelchairIcon = (\n con: Context,\n shape: Shape,\n cx: number,\n cy: number,\n size: number,\n fillColor = '#DBEAFE',\n strokeColor = '#60A5FA',\n) => {\n const reactSize = size * 0.75;\n const x = cx - size / 2 + size * 0.1;\n const y = cy - size / 2 + size * 0.1833;\n\n const origFill = shape.getAttr('fill');\n const origStroke = shape.getAttr('stroke');\n shape.setAttr('fill', fillColor);\n shape.setAttr('stroke', strokeColor);\n\n con.beginPath();\n con.rect(x, y, reactSize, reactSize);\n con.closePath();\n con.fillStrokeShape(shape);\n\n shape.setAttr('fill', origFill);\n shape.setAttr('stroke', origStroke);\n\n con.font = `${size * 0.6}px serif`;\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n con.fillText('♿', cx + size * 0.0233, cy + size * 0.1417);\n};\n","export const numberToLetter = (num: number): string => {\n if (num < 0) return 'A';\n let result = '';\n let n = num;\n while (n >= 0) {\n result = String.fromCharCode(65 + (n % 26)) + result;\n n = Math.floor(n / 26) - 1;\n }\n return result;\n};\n","import { RoomMapElementType } from '../../enums';\nimport { PerformanceTicket } from '../../interfaces';\n\nexport const getItemTypeIcon = (ticket: PerformanceTicket): string => {\n if ([RoomMapElementType.SEAT_BLOCK, RoomMapElementType.TABLE].includes(ticket.element_type)) {\n return ticket.is_accessible ? '♿️' : '🪑';\n }\n\n if (ticket.element_type === RoomMapElementType.ZONE) {\n return '🗺️';\n }\n\n return '🛒';\n};\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\nimport {\n TICKET_MAP_GRID_SIZE,\n TICKET_STATUS_COLORS,\n TICKET_STATUS_FILLS,\n} from '../../constants/ticket-map';\nimport { numberToLetter } from './number-to-letter.helper';\nimport { drawChairIcon } from './draw-chair-icon.helper';\nimport { drawWheelchairIcon } from './draw-wheel-chair-icon.helper';\nimport { drawHappyFace } from './draw-happy-face.helper';\nimport { PerformanceTicketStatus } from '../../enums';\n\nexport const generateSeatBlockTicketScene = (\n con: Context,\n shape: Shape,\n numerationConfig?: {\n start_row_letter: string;\n row_order: 'TOP_TO_BOTTOM' | 'BOTTOM_TO_TOP';\n start_column_number: number;\n column_order: 'LEFT_TO_RIGHT' | 'RIGHT_TO_LEFT';\n },\n ticketStatusMap?: Map<string, PerformanceTicketStatus>,\n) => {\n const w = shape.width();\n const h = shape.height();\n const seatSize = TICKET_MAP_GRID_SIZE;\n const chairScale = 0.8;\n\n const elementName = shape?.attrs?.element_name || 'Asientos';\n const showElementName = shape?.attrs?.show_element_name ?? true;\n const seatsData = shape?.attrs?.seats as\n Array<Array<{ is_accessible: boolean; is_non_existent: boolean } | undefined>> | undefined;\n const hasTitle = !!(elementName && showElementName);\n const chairsStartY = hasTitle ? TICKET_MAP_GRID_SIZE : 0;\n\n const cols = Math.floor(w / seatSize);\n const rows = Math.floor((h - chairsStartY) / seatSize);\n\n const config = numerationConfig || {\n start_row_letter: 'A',\n row_order: 'TOP_TO_BOTTOM' as const,\n start_column_number: 1,\n column_order: 'LEFT_TO_RIGHT' as const,\n };\n\n const startRowLetter = config?.start_row_letter?.toUpperCase() || 'A';\n const startRowNum = startRowLetter.charCodeAt(0) - 65;\n\n const origFill = shape.getAttr('fill');\n const origStroke = shape.getAttr('stroke');\n\n if (hasTitle) {\n con.save();\n\n const textFont = `bold 10px Arial`;\n con.font = textFont;\n const textWidth = con.measureText(elementName).width;\n const paddingX = 10;\n const containerHeight = 18;\n const containerWidth = textWidth + paddingX * 2;\n const containerX = (w - containerWidth) / 2;\n const containerY = (TICKET_MAP_GRID_SIZE - containerHeight) / 2;\n const lineY = TICKET_MAP_GRID_SIZE;\n\n const strokeColor = shape.getAttr('stroke') || '#999';\n\n con.beginPath();\n con.moveTo(0, lineY);\n con.lineTo(w, lineY);\n con.strokeStyle = strokeColor;\n con.lineWidth = 1;\n con.stroke();\n\n con.beginPath();\n con.moveTo(containerX + 4, containerY);\n con.lineTo(containerX + containerWidth - 4, containerY);\n con.quadraticCurveTo(\n containerX + containerWidth,\n containerY,\n containerX + containerWidth,\n containerY + 4,\n );\n con.lineTo(containerX + containerWidth, containerY + containerHeight - 4);\n con.quadraticCurveTo(\n containerX + containerWidth,\n containerY + containerHeight,\n containerX + containerWidth - 4,\n containerY + containerHeight,\n );\n con.lineTo(containerX + 4, containerY + containerHeight);\n con.quadraticCurveTo(\n containerX,\n containerY + containerHeight,\n containerX,\n containerY + containerHeight - 4,\n );\n con.lineTo(containerX, containerY + 4);\n con.quadraticCurveTo(containerX, containerY, containerX + 4, containerY);\n con.closePath();\n con.fillStrokeShape(shape);\n\n con.font = textFont;\n con.fillStyle = strokeColor;\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n con.fillText(elementName, w / 2, containerY + containerHeight / 2);\n\n con.restore();\n }\n\n for (let x = 0; x < w; x += seatSize) {\n for (let y = chairsStartY; y < h; y += seatSize) {\n const colIndex = Math.floor(x / seatSize);\n const rowIndex = Math.floor((y - chairsStartY) / seatSize);\n\n let actualRowIndex = rowIndex;\n if (config.row_order === 'BOTTOM_TO_TOP') {\n actualRowIndex = rows - 1 - rowIndex;\n }\n\n let actualColIndex = colIndex;\n if (config.column_order === 'RIGHT_TO_LEFT') {\n actualColIndex = cols - 1 - colIndex;\n }\n\n const rowLetter = numberToLetter(startRowNum + actualRowIndex);\n const colNumber = Number(config.start_column_number) + Number(actualColIndex);\n const seatNumber = `${rowLetter}${colNumber}`;\n const centerX = x + seatSize / 2 + 1;\n const centerY = y + seatSize / 2 - 2;\n const size = seatSize * chairScale;\n\n const seatState = seatsData?.[rowIndex]?.[colIndex];\n if (seatState?.is_non_existent) continue;\n\n con.save();\n\n const selectedNumerations: Set<string> | undefined = shape.getAttr('selectedNumerations');\n const isSelected = selectedNumerations?.has(seatNumber);\n\n const ticketStatus = ticketStatusMap?.get(seatNumber);\n const isLocked = ticketStatus != null && ticketStatus !== PerformanceTicketStatus.AVAILABLE;\n\n if (isSelected) {\n drawHappyFace(con, x + seatSize / 2, y + seatSize / 2, size);\n } else if (isLocked && seatState?.is_accessible) {\n drawWheelchairIcon(\n con,\n shape,\n centerX,\n centerY,\n size,\n TICKET_STATUS_FILLS[ticketStatus!],\n TICKET_STATUS_COLORS[ticketStatus!],\n );\n } else if (isLocked) {\n shape.setAttr('fill', TICKET_STATUS_FILLS[ticketStatus!]);\n shape.setAttr('stroke', TICKET_STATUS_COLORS[ticketStatus!]);\n drawChairIcon(con, centerX, centerY, size);\n con.fillStrokeShape(shape);\n shape.setAttr('fill', origFill);\n shape.setAttr('stroke', origStroke);\n con.fillStyle = '#333333';\n con.font = `${size * 0.3}px Arial`;\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n con.fillText(seatNumber, centerX, centerY - 1);\n } else if (seatState?.is_accessible) {\n drawWheelchairIcon(con, shape, centerX, centerY, size);\n } else {\n drawChairIcon(con, centerX, centerY, size);\n con.fillStrokeShape(shape);\n\n shape.setAttr('fill', origFill);\n shape.setAttr('stroke', origStroke);\n\n con.fillStyle = '#333333';\n con.font = `${size * 0.3}px Arial`;\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n con.fillText(seatNumber, centerX, centerY - 1);\n }\n\n con.restore();\n }\n }\n\n shape.setAttr('fill', origFill);\n shape.setAttr('stroke', origStroke);\n};\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\nimport { TICKET_STATUS_COLORS, TICKET_STATUS_FILLS } from '../../constants/ticket-map';\nimport { drawHappyFace } from './draw-happy-face.helper';\nimport { drawWheelchairIcon } from './draw-wheel-chair-icon.helper';\nimport { PerformanceTicketStatus } from '../../enums';\nimport { RoomMapSeatState } from '../../interfaces';\n\nexport const generateTableTicketScene = (\n con: Context,\n shape: Shape,\n chairTicketStatuses?: PerformanceTicketStatus[],\n tableSeats?: RoomMapSeatState[][],\n) => {\n const w = shape.width();\n const h = shape.height();\n\n const fillColor = shape.fill();\n const strokeColor = shape.stroke();\n const totalCapacity: number = shape?.attrs?.total_capacity ?? 0;\n const zoneText: string = shape?.attrs?.element_name || 'Mesa';\n\n const cx = w / 2;\n const cy = h / 2;\n\n const chairRadius = Math.min(w, h) * 0.1;\n const gap = chairRadius * 0.4;\n const tableRadius = Math.min(w, h) / 2 - chairRadius * 2 - gap;\n\n con.save();\n\n if (totalCapacity > 0) {\n const orbitRadius = tableRadius + gap + chairRadius;\n const selectedNumerations: Set<string> | undefined = shape.getAttr('selectedNumerations');\n\n for (let i = 0; i < totalCapacity; i++) {\n const seatState = tableSeats?.[0]?.[i];\n if (seatState?.is_non_existent) {\n continue;\n }\n\n const seatKey = `S${i + 1}`;\n const isSelected = selectedNumerations?.has(seatKey);\n\n const angle = (2 * Math.PI * i) / totalCapacity - Math.PI / 2;\n const scx = cx + orbitRadius * Math.cos(angle);\n const scy = cy + orbitRadius * Math.sin(angle);\n\n const chairStatus = chairTicketStatuses?.[i];\n const isLocked = chairStatus != null && chairStatus !== PerformanceTicketStatus.AVAILABLE;\n\n if (isSelected) {\n drawHappyFace(con, scx, scy, chairRadius * 2);\n } else if (isLocked && seatState?.is_accessible) {\n drawWheelchairIcon(\n con,\n shape,\n scx,\n scy,\n chairRadius * 2,\n TICKET_STATUS_FILLS[chairStatus!],\n TICKET_STATUS_COLORS[chairStatus!],\n );\n } else if (isLocked) {\n const origFill = shape.getAttr('fill');\n const origStroke = shape.getAttr('stroke');\n shape.setAttr('fill', TICKET_STATUS_FILLS[PerformanceTicketStatus.BLOCKED]);\n shape.setAttr('stroke', TICKET_STATUS_COLORS[PerformanceTicketStatus.BLOCKED]);\n con.beginPath();\n con.arc(scx, scy, chairRadius, 0, Math.PI * 2);\n con.closePath();\n con.lineWidth = Math.max(1, chairRadius * 0.15);\n con.stroke();\n con.fillStrokeShape(shape);\n shape.setAttr('fill', origFill);\n shape.setAttr('stroke', origStroke);\n } else if (seatState?.is_accessible) {\n drawWheelchairIcon(con, shape, scx, scy, chairRadius * 2);\n } else {\n con.beginPath();\n con.arc(scx, scy, chairRadius, 0, Math.PI * 2);\n con.closePath();\n\n con.lineWidth = Math.max(1, chairRadius * 0.15);\n con.stroke();\n con.fillStrokeShape(shape);\n }\n }\n }\n\n con.beginPath();\n con.arc(cx, cy, tableRadius, 0, Math.PI * 2);\n con.closePath();\n con.fillStrokeShape(shape);\n\n const fontSize = tableRadius * 0.45;\n con.font = `${fontSize}px Arial`;\n con.fillStyle = strokeColor;\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n con.fillText(zoneText, cx, cy);\n\n con.restore();\n};\n","import { TICKET_MAP_GRID_SIZE, TICKET_MAP_TITLE_HEIGHT } from '../../constants';\nimport { KONVA_SHAPE_MAPPINGS } from '../../constants/konva-shapes';\nimport { PerformanceTicketStatus, RoomMapElementType } from '../../enums';\nimport {\n ElementRenderData,\n NumerationConfig,\n PerformanceTicket,\n RoomMapElementTemplate,\n TicketMapSeatPosition,\n TicketMapTableChairPosition,\n} from '../../interfaces';\nimport { tintColor } from './color.helper';\nimport { numberToLetter } from './number-to-letter.helper';\nimport { generateSeatBlockTicketScene } from './seat-block-ticket-scene.helper';\nimport { generateTableTicketScene } from './table-ticket-scene.helper';\n\nfunction buildSeatLabel(\n rowIndex: number,\n colIndex: number,\n rows: number,\n cols: number,\n config: NumerationConfig,\n): string {\n let actualRowIndex = rowIndex;\n if (config.row_order === 'BOTTOM_TO_TOP') {\n actualRowIndex = rows - 1 - rowIndex;\n }\n\n let actualColIndex = colIndex;\n if (config.column_order === 'RIGHT_TO_LEFT') {\n actualColIndex = cols - 1 - colIndex;\n }\n\n const startRowNum = (config.start_row_letter?.toUpperCase() || 'A').charCodeAt(0) - 65;\n const rowLetter = numberToLetter(startRowNum + actualRowIndex);\n const colNumber = Number(config.start_column_number) + Number(actualColIndex);\n return `${rowLetter}${colNumber}`;\n}\n\nfunction buildSeatPositions(element: RoomMapElementTemplate): TicketMapSeatPosition[][] {\n const config = element.numeration_config || {\n start_row_letter: 'A',\n row_order: 'TOP_TO_BOTTOM' as const,\n start_column_number: 1,\n column_order: 'LEFT_TO_RIGHT' as const,\n };\n\n const w = element.konva_shape?.config?.width || 300;\n const h = element.konva_shape?.config?.height || 300;\n const hasTitle = !!(element.element_name && element.show_element_name !== false);\n const chairsStartY = hasTitle ? TICKET_MAP_TITLE_HEIGHT : 0;\n const cols = Math.floor(w / TICKET_MAP_GRID_SIZE);\n const rows = Math.floor((h - chairsStartY) / TICKET_MAP_GRID_SIZE);\n\n const positions: TicketMapSeatPosition[][] = [];\n\n for (let rowIndex = 0; rowIndex < rows; rowIndex++) {\n const row: TicketMapSeatPosition[] = [];\n for (let colIndex = 0; colIndex < cols; colIndex++) {\n const seatLabel = buildSeatLabel(rowIndex, colIndex, rows, cols, config);\n\n const seatState = element.seats?.[rowIndex]?.[colIndex];\n if (seatState?.is_non_existent) {\n row.push({ rowIndex, colIndex, seatLabel });\n continue;\n }\n\n row.push({ rowIndex, colIndex, seatLabel });\n }\n positions.push(row);\n }\n\n return positions;\n}\n\nfunction buildChairPositions(element: RoomMapElementTemplate): TicketMapTableChairPosition[] {\n const w = element.konva_shape?.config?.width || 150;\n const h = element.konva_shape?.config?.height || 150;\n const totalCapacity = element.total_capacity || 0;\n\n const chairRadius = Math.min(w, h) * 0.1;\n const gap = chairRadius * 0.4;\n const tableRadius = Math.min(w, h) / 2 - chairRadius * 2 - gap;\n const cx = w / 2;\n const cy = h / 2;\n\n const positions: TicketMapTableChairPosition[] = [];\n\n if (totalCapacity > 0) {\n const orbitRadius = tableRadius + gap + chairRadius;\n\n for (let i = 0; i < totalCapacity; i++) {\n const angle = (2 * Math.PI * i) / totalCapacity - Math.PI / 2;\n const scx = cx + orbitRadius * Math.cos(angle);\n const scy = cy + orbitRadius * Math.sin(angle);\n\n positions.push({ index: i, angle, x: scx, y: scy });\n }\n }\n\n return positions;\n}\n\nexport function processElementsToRenderData(\n elements: RoomMapElementTemplate[],\n tickets: PerformanceTicket[],\n priceZones?: { id: number; color: string }[],\n): ElementRenderData[] {\n const ticketByElement = new Map<number, PerformanceTicket[]>();\n for (const ticket of tickets) {\n const existing = ticketByElement.get(ticket.room_map_element_id) || [];\n existing.push(ticket);\n ticketByElement.set(ticket.room_map_element_id, existing);\n }\n\n const result: ElementRenderData[] = [];\n\n for (const element of elements) {\n if (element.id == null) continue;\n\n const elementTickets = ticketByElement.get(element.id) || [];\n const elementBaseConfig = KONVA_SHAPE_MAPPINGS[element.type];\n\n let overrideFill: string | undefined;\n let overrideStroke: string | undefined;\n\n if (element.price_zone_id != null && priceZones) {\n const priceZone = priceZones.find((pz) => pz.id === element.price_zone_id);\n if (priceZone?.color) {\n overrideStroke = priceZone.color;\n overrideFill = tintColor(priceZone.color);\n }\n }\n\n let shapeConfig: Record<string, any> = {\n ...element?.konva_shape?.config,\n draggable: false,\n ...(overrideFill ? { fill: overrideFill } : {}),\n ...(overrideStroke ? { stroke: overrideStroke } : {}),\n element_name: element.element_name || element.name,\n show_element_name: element.show_element_name ?? true,\n total_capacity: element.total_capacity,\n };\n\n const ticketByNumeration = new Map<string, PerformanceTicket>();\n for (const ticket of elementTickets) {\n if (ticket.seat_numeration != null) {\n ticketByNumeration.set(ticket.seat_numeration, ticket);\n }\n }\n\n let seatPositions: TicketMapSeatPosition[][] | undefined;\n let chairPositions: TicketMapTableChairPosition[] | undefined;\n\n if (element.type === RoomMapElementType.SEAT_BLOCK) {\n seatPositions = buildSeatPositions(element);\n\n const ticketStatusMap = new Map<string, PerformanceTicketStatus>();\n for (const [numeration, ticket] of ticketByNumeration) {\n ticketStatusMap.set(numeration, ticket.status);\n }\n\n shapeConfig = {\n ...shapeConfig,\n name: String(element.id),\n sceneFunc: (con: any, shape: any) => {\n generateSeatBlockTicketScene(con, shape, element.numeration_config, ticketStatusMap);\n },\n seats: element.seats,\n };\n }\n\n if (element.type === RoomMapElementType.TABLE) {\n chairPositions = buildChairPositions(element);\n const chairStatuses: PerformanceTicketStatus[] = [];\n\n for (let i = 0; i < (element.total_capacity || 0); i++) {\n const key = `S${i + 1}`;\n const ticket = ticketByNumeration.get(key);\n chairStatuses.push(ticket?.status ?? PerformanceTicketStatus.AVAILABLE);\n }\n\n shapeConfig = {\n ...shapeConfig,\n name: String(element.id),\n sceneFunc: (con: any, shape: any) => {\n generateTableTicketScene(con, shape, chairStatuses, element.seats);\n },\n seats: element.seats,\n };\n }\n\n if (![RoomMapElementType.SEAT_BLOCK, RoomMapElementType.TABLE].includes(element.type)) {\n const defaultSceneFunc = elementBaseConfig?.config?.sceneFunc;\n if (defaultSceneFunc && !shapeConfig['sceneFunc']) {\n shapeConfig['sceneFunc'] = defaultSceneFunc;\n }\n }\n\n let elementName = element.name ?? '';\n if (!!element.element_name) {\n elementName += `: ${element.element_name}`;\n }\n\n result.push({\n elementId: element.id,\n hallFloorId: element.hall_floor_id ?? null,\n type: element.type,\n shapeConfig,\n tickets: elementTickets,\n ticketByNumeration,\n elementName,\n seatPositions,\n chairPositions,\n // Disponibilidad real de la zona (no la capacidad total), para que el\n // tope de selección refleje lo que realmente queda por vender.\n zoneCapacity:\n element.type === RoomMapElementType.ZONE\n ? elementTickets.filter((t) => t.status === PerformanceTicketStatus.AVAILABLE).length\n : element.total_capacity,\n });\n }\n\n return result;\n}\n\nexport function findTicketAtPosition(\n renderData: ElementRenderData,\n relX: number,\n relY: number,\n): PerformanceTicket | null {\n if (renderData.type === RoomMapElementType.SEAT_BLOCK && renderData.seatPositions) {\n const config = renderData.shapeConfig;\n const w = config['width'] || 300;\n const hasTitle = !!(renderData.elementName && config['show_element_name'] !== false);\n const chairsStartY = hasTitle ? TICKET_MAP_TITLE_HEIGHT : 0;\n\n const col = Math.floor(relX / TICKET_MAP_GRID_SIZE);\n const row = Math.floor((relY - chairsStartY) / TICKET_MAP_GRID_SIZE);\n\n if (\n col < 0 ||\n row < 0 ||\n row >= renderData.seatPositions.length ||\n col >= (renderData.seatPositions[0]?.length || 0)\n ) {\n return null;\n }\n\n const seat = renderData.seatPositions[row]?.[col];\n if (!seat) return null;\n\n const seatState = (renderData.shapeConfig['seats'] as any)?.[row]?.[col];\n if (seatState?.is_non_existent) return null;\n\n return renderData.ticketByNumeration.get(seat.seatLabel) || null;\n }\n\n if (renderData.type === RoomMapElementType.TABLE && renderData.chairPositions) {\n for (const chair of renderData.chairPositions) {\n const seatState = (renderData.shapeConfig['seats'] as any)?.[0]?.[chair.index];\n if (seatState?.is_non_existent) continue;\n\n const dx = relX - chair.x;\n const dy = relY - chair.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n\n const w = renderData.shapeConfig['width'] || 150;\n const h = renderData.shapeConfig['height'] || 150;\n const chairRadius = Math.min(w, h) * 0.1;\n\n if (distance <= chairRadius + 5) {\n const key = `S${chair.index + 1}`;\n return renderData.ticketByNumeration.get(key) || null;\n }\n }\n return null;\n }\n\n if (renderData.type === RoomMapElementType.ZONE) {\n for (const ticket of renderData.ticketByNumeration.values()) {\n return ticket;\n }\n return renderData.tickets[0] || null;\n }\n\n return null;\n}\n\nexport function findElementAtPosition(\n renderDataList: ElementRenderData[],\n stageX: number,\n stageY: number,\n): { element: ElementRenderData; relX: number; relY: number } | null {\n for (let i = renderDataList.length - 1; i >= 0; i--) {\n const el = renderDataList[i];\n const cfg = el.shapeConfig;\n const ex = cfg['x'] || 0;\n const ey = cfg['y'] || 0;\n const ew = cfg['width'] || 0;\n const eh = cfg['height'] || 0;\n const rotation = cfg['rotation'] || 0;\n\n if (rotation) {\n const rad = rotation * (Math.PI / 180);\n const cos = Math.cos(-rad);\n const sin = Math.sin(-rad);\n const dx = stageX - ex;\n const dy = stageY - ey;\n const localX = dx * cos - dy * sin;\n const localY = dx * sin + dy * cos;\n\n if (localX >= 0 && localX <= ew && localY >= 0 && localY <= eh) {\n return { element: el, relX: localX, relY: localY };\n }\n } else {\n if (stageX >= ex && stageX <= ex + ew && stageY >= ey && stageY <= ey + eh) {\n return { element: el, relX: stageX - ex, relY: stageY - ey };\n }\n }\n }\n return null;\n}\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\nimport { TICKET_MAP_GRID_SIZE } from '../../constants';\nimport { RoomMapSeatState } from '../../interfaces';\nimport { drawWheelchairIcon } from '../ticker-map';\n\n// Helper function to convert number to multi-letter label (A, B, ..., Z, AA, AB, ...)\nconst numberToLetter = (num: number): string => {\n if (num < 0) return 'A';\n let result = '';\n let n = num;\n while (n >= 0) {\n result = String.fromCharCode(65 + (n % 26)) + result;\n n = Math.floor(n / 26) - 1;\n }\n return result;\n};\n\nconst drawChairIcon = (con: Context, cx: number, cy: number, size: number) => {\n con.beginPath();\n\n const backWidth = size * 0.7;\n const backHeight = size * 0.6;\n const backX = cx - backWidth / 2;\n const backY = cy - backHeight / 2 - size * 0.1;\n\n con.moveTo(backX + backWidth * 0.2, backY);\n con.lineTo(backX + backWidth * 0.8, backY);\n con.quadraticCurveTo(backX + backWidth, backY, backX + backWidth, backY + backHeight * 0.2);\n con.lineTo(backX + backWidth, backY + backHeight * 0.8);\n con.quadraticCurveTo(\n backX + backWidth,\n backY + backHeight,\n backX + backWidth * 0.8,\n backY + backHeight,\n );\n con.lineTo(backX + backWidth * 0.2, backY + backHeight);\n con.quadraticCurveTo(backX, backY + backHeight, backX, backY + backHeight * 0.8);\n con.lineTo(backX, backY + backHeight * 0.2);\n con.quadraticCurveTo(backX, backY, backX + backWidth * 0.2, backY);\n\n const chairSeatWidth = size * 0.8;\n const chairSeatHeight = size * 0.3;\n const seatX = cx - chairSeatWidth / 2;\n const seatY = cy + backHeight * 0.3;\n\n con.moveTo(seatX, seatY);\n con.lineTo(seatX + chairSeatWidth, seatY);\n con.lineTo(seatX + chairSeatWidth * 0.9, seatY + chairSeatHeight);\n con.lineTo(seatX + chairSeatWidth * 0.1, seatY + chairSeatHeight);\n con.closePath();\n\n const legWidth = size * 0.1;\n const legHeight = size * 0.2;\n\n con.moveTo(seatX + chairSeatWidth * 0.1, seatY + chairSeatHeight);\n con.lineTo(seatX + chairSeatWidth * 0.1 + legWidth, seatY + chairSeatHeight);\n con.lineTo(seatX + chairSeatWidth * 0.1 + legWidth, seatY + chairSeatHeight + legHeight);\n con.lineTo(seatX + chairSeatWidth * 0.1, seatY + chairSeatHeight + legHeight);\n\n con.moveTo(seatX + chairSeatWidth * 0.9 - legWidth, seatY + chairSeatHeight);\n con.lineTo(seatX + chairSeatWidth * 0.9, seatY + chairSeatHeight);\n con.lineTo(seatX + chairSeatWidth * 0.9, seatY + chairSeatHeight + legHeight);\n con.lineTo(seatX + chairSeatWidth * 0.9 - legWidth, seatY + chairSeatHeight + legHeight);\n\n con.closePath();\n};\n\nexport const generateSeatBlockScene = (\n con: Context,\n shape: Shape,\n numerationConfig?: {\n start_row_letter: string;\n row_order: 'TOP_TO_BOTTOM' | 'BOTTOM_TO_TOP';\n start_column_number: number;\n column_order: 'LEFT_TO_RIGHT' | 'RIGHT_TO_LEFT';\n },\n) => {\n const w = shape.width();\n const h = shape.height();\n const seatSize = TICKET_MAP_GRID_SIZE;\n const chairScale = 0.8;\n\n const elementName = shape?.attrs?.element_name || 'Asientos';\n const showElementName = shape?.attrs?.show_element_name ?? true;\n const seatsData = shape?.attrs?.seats as RoomMapSeatState[][] | undefined;\n const hasTitle = !!(elementName && showElementName);\n const titleHeight = hasTitle ? TICKET_MAP_GRID_SIZE : 0;\n const chairsStartY = titleHeight;\n\n const cols = Math.floor(w / seatSize);\n const rows = Math.floor((h - chairsStartY) / seatSize);\n\n const config = numerationConfig || {\n start_row_letter: 'A',\n row_order: 'TOP_TO_BOTTOM',\n start_column_number: 1,\n column_order: 'LEFT_TO_RIGHT',\n };\n\n const startRowLetter = config?.start_row_letter?.toUpperCase() || 'A';\n const startRowNum = startRowLetter.charCodeAt(0) - 65;\n\n if (hasTitle) {\n con.save();\n\n const textFont = `bold 10px Arial`;\n con.font = textFont;\n const textWidth = con.measureText(elementName).width;\n const paddingX = 10;\n const containerHeight = 18;\n const containerWidth = textWidth + paddingX * 2;\n const containerX = (w - containerWidth) / 2;\n const containerY = (titleHeight - containerHeight) / 2;\n const borderRadius = 4;\n const lineY = titleHeight;\n\n const strokeColor = shape.getAttr('stroke') || '#999';\n\n con.beginPath();\n con.moveTo(0, lineY);\n con.lineTo(w, lineY);\n con.strokeStyle = strokeColor;\n con.lineWidth = 1;\n con.stroke();\n\n con.beginPath();\n con.moveTo(containerX + borderRadius, containerY);\n con.lineTo(containerX + containerWidth - borderRadius, containerY);\n con.quadraticCurveTo(\n containerX + containerWidth,\n containerY,\n containerX + containerWidth,\n containerY + borderRadius,\n );\n con.lineTo(containerX + containerWidth, containerY + containerHeight - borderRadius);\n con.quadraticCurveTo(\n containerX + containerWidth,\n containerY + containerHeight,\n containerX + containerWidth - borderRadius,\n containerY + containerHeight,\n );\n con.lineTo(containerX + borderRadius, containerY + containerHeight);\n con.quadraticCurveTo(\n containerX,\n containerY + containerHeight,\n containerX,\n containerY + containerHeight - borderRadius,\n );\n con.lineTo(containerX, containerY + borderRadius);\n con.quadraticCurveTo(containerX, containerY, containerX + borderRadius, containerY);\n con.closePath();\n con.fillStrokeShape(shape);\n\n con.font = textFont;\n con.fillStyle = strokeColor;\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n con.fillText(elementName, w / 2, containerY + containerHeight / 2);\n\n con.restore();\n }\n\n for (let x = 0; x < w; x += seatSize) {\n for (let y = chairsStartY; y < h; y += seatSize) {\n const colIndex = Math.floor(x / seatSize);\n const rowIndex = Math.floor((y - chairsStartY) / seatSize);\n\n let actualRowIndex = rowIndex;\n if (config.row_order === 'BOTTOM_TO_TOP') {\n actualRowIndex = rows - 1 - rowIndex;\n }\n\n let actualColIndex = colIndex;\n if (config.column_order === 'RIGHT_TO_LEFT') {\n actualColIndex = cols - 1 - colIndex;\n }\n\n const rowLetter = numberToLetter(startRowNum + actualRowIndex);\n const colNumber = Number(config.start_column_number) + Number(actualColIndex);\n const seatNumber = `${rowLetter}${colNumber}`;\n const centerX = x + seatSize / 2 + 1;\n const centerY = y + seatSize / 2 - 2;\n const size = seatSize * chairScale;\n\n // Check seat state\n const seatState = seatsData?.[rowIndex]?.[colIndex];\n\n // Skip non-existent seats\n if (seatState?.is_non_existent) {\n continue;\n }\n\n con.save();\n\n if (seatState?.is_accessible) {\n drawWheelchairIcon(con, shape, centerX, centerY, size);\n } else {\n drawChairIcon(con, centerX, centerY, size);\n con.fillStrokeShape(shape);\n\n // Draw seat number\n con.fillStyle = '#333333';\n con.font = `${size * 0.3}px Arial`;\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n con.fillText(seatNumber, centerX, centerY - 1);\n }\n\n con.restore();\n }\n }\n};\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\nimport { TICKET_MAP_GRID_SIZE } from '../../constants';\n\nexport const generateStageScene = (con: Context, shape: Shape) => {\n const w = shape.width();\n const h = shape.height();\n const padding = 4;\n\n con.save();\n\n // Stage background (rectangle with rounded corners)\n const exitX = padding;\n const exitY = padding;\n const exitWidth = w - padding * 2;\n const exitHeight = h - padding * 2;\n const cornerRadius = Math.min(exitWidth, exitHeight) * 0.2;\n\n con.beginPath();\n con.moveTo(exitX + cornerRadius, exitY);\n con.lineTo(exitX + exitWidth - cornerRadius, exitY);\n con.quadraticCurveTo(exitX + exitWidth, exitY, exitX + exitWidth, exitY + cornerRadius);\n con.lineTo(exitX + exitWidth, exitY + exitHeight);\n con.lineTo(exitX, exitY + exitHeight);\n con.lineTo(exitX, exitY + cornerRadius);\n con.quadraticCurveTo(exitX, exitY, exitX + cornerRadius, exitY);\n con.closePath();\n con.fillStrokeShape(shape);\n\n // Stage text\n const centerX = w / 2;\n const centerY = h / 2;\n con.font = `12px Arial`;\n con.fillStyle = shape.getAttr('stroke') as string;\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n\n const stageText = shape?.attrs?.element_name || 'Escenario';\n const dotRadius = 2.5;\n const dotGap = 10;\n const textWidth = con.measureText(stageText).width;\n\n // Dot before text\n con.beginPath();\n con.arc(centerX - textWidth / 2 - dotGap, centerY, dotRadius, 0, Math.PI * 2);\n con.fillStyle = shape.getAttr('stroke') as string;\n con.fill();\n\n // Text\n con.fillText(stageText, centerX, centerY);\n\n // Dot after text\n con.beginPath();\n con.arc(centerX + textWidth / 2 + dotGap, centerY, dotRadius, 0, Math.PI * 2);\n con.fillStyle = shape.getAttr('stroke') as string;\n con.fill();\n\n // Footer below the element: line and \"▼ Vista del público\"\n const lineColor = '#b0b0b0';\n const footerCenterY = h + TICKET_MAP_GRID_SIZE / 2;\n\n con.beginPath();\n con.moveTo(0, footerCenterY);\n con.lineTo(w, footerCenterY);\n con.strokeStyle = lineColor;\n con.lineWidth = 1;\n con.stroke();\n\n const labelText = '▼ Vista del público';\n const textFont = `bold 10px Arial`;\n con.font = textFont;\n const labelWidth = con.measureText(labelText).width;\n const paddingX = 10;\n const containerHeight = 18;\n const containerWidth = labelWidth + paddingX * 2;\n const containerX = (w - containerWidth) / 2;\n const containerY = footerCenterY - containerHeight / 2;\n const borderRadius = 4;\n\n con.beginPath();\n con.moveTo(containerX + borderRadius, containerY);\n con.lineTo(containerX + containerWidth - borderRadius, containerY);\n con.quadraticCurveTo(\n containerX + containerWidth,\n containerY,\n containerX + containerWidth,\n containerY + borderRadius,\n );\n con.lineTo(containerX + containerWidth, containerY + containerHeight - borderRadius);\n con.quadraticCurveTo(\n containerX + containerWidth,\n containerY + containerHeight,\n containerX + containerWidth - borderRadius,\n containerY + containerHeight,\n );\n con.lineTo(containerX + borderRadius, containerY + containerHeight);\n con.quadraticCurveTo(\n containerX,\n containerY + containerHeight,\n containerX,\n containerY + containerHeight - borderRadius,\n );\n con.lineTo(containerX, containerY + borderRadius);\n con.quadraticCurveTo(containerX, containerY, containerX + borderRadius, containerY);\n con.closePath();\n con.fillStyle = '#ededed';\n con.fill();\n con.strokeStyle = lineColor;\n con.lineWidth = 1;\n con.stroke();\n\n con.font = textFont;\n con.fillStyle = lineColor;\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n con.fillText(labelText, w / 2, footerCenterY);\n\n con.restore();\n};\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\nimport { drawRoundedRect } from './draw-rounded-rect.helper';\n\nexport const generateStairScene = (con: Context, shape: Shape) => {\n const w = shape.width();\n const h = shape.height();\n const padding = 4;\n\n con.save();\n\n const exitX = padding;\n const exitY = padding;\n const exitWidth = w - padding * 2;\n const exitHeight = h - padding * 2;\n const cornerRadius = Math.min(exitWidth, exitHeight) * 0.2;\n\n drawRoundedRect(con, shape, exitX, exitY, exitWidth, exitHeight, cornerRadius);\n\n // Stage text - check if parent has element_name, otherwise use \"ESCENARIO\"\n // const fontSize = Math.min(w, h) * 0.35;\n con.font = `11px Arial`;\n con.fillStyle = '#333333';\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n const centerX = w / 2;\n const centerY = h / 2;\n\n // Get parent element and check for element_name\n const stageText = '🪜' + (shape?.attrs?.element_name || 'Escalera');\n con.fillText(stageText, centerX, centerY);\n\n con.restore();\n};\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\nimport { RoomMapSeatState } from '../../interfaces';\nimport { drawWheelchairIcon } from '../ticker-map';\n\nexport const generateTableScene = (con: Context, shape: Shape) => {\n const w = shape.width();\n const h = shape.height();\n\n const fillColor = shape.fill();\n const strokeColor = shape.stroke();\n const totalCapacity: number = shape?.attrs?.total_capacity ?? 0;\n const zoneText: string = shape?.attrs?.element_name || 'Mesa';\n const seatsData = shape?.attrs?.seats as RoomMapSeatState[][] | undefined;\n\n const cx = w / 2;\n const cy = h / 2;\n\n // Radio de la mesa: el más pequeño entre ancho y alto, con un poco de margen\n // para dejar espacio a las sillas alrededor\n const chairRadius = Math.min(w, h) * 0.1;\n const gap = chairRadius * 0.4; // espacio entre mesa y sillas\n const tableRadius = Math.min(w, h) / 2 - chairRadius * 2 - gap;\n\n con.save();\n\n // ── Sillas (se dibujan primero para quedar detrás) ──────────────────────────\n if (totalCapacity > 0) {\n const orbitRadius = tableRadius + gap + chairRadius;\n\n for (let i = 0; i < totalCapacity; i++) {\n const seatState = seatsData?.[0]?.[i];\n if (seatState?.is_non_existent) {\n continue;\n }\n\n const angle = (2 * Math.PI * i) / totalCapacity - Math.PI / 2;\n const scx = cx + orbitRadius * Math.cos(angle);\n const scy = cy + orbitRadius * Math.sin(angle);\n\n if (seatState?.is_accessible) {\n drawWheelchairIcon(con, shape, scx, scy, chairRadius * 2);\n continue;\n }\n\n con.beginPath();\n con.arc(scx, scy, chairRadius, 0, Math.PI * 2);\n con.closePath();\n\n // Color de relleno de las sillas = stroke del shape\n con.fillStyle = strokeColor;\n con.fill();\n\n // Borde de las sillas = fill del shape\n con.strokeStyle = fillColor;\n con.lineWidth = Math.max(1, chairRadius * 0.15);\n con.stroke();\n }\n }\n\n // ── Mesa (círculo central) ──────────────────────────────────────────────────\n con.beginPath();\n con.arc(cx, cy, tableRadius, 0, Math.PI * 2);\n con.closePath();\n con.fillStrokeShape(shape); // usa fill y stroke propios del shape de Konva\n\n // ── Texto centrado ──────────────────────────────────────────────────────────\n const fontSize = tableRadius * 0.45;\n con.font = `${fontSize}px Arial`;\n con.fillStyle = strokeColor;\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n con.fillText(zoneText, cx, cy);\n\n con.restore();\n};\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\nimport { drawRoundedRect } from './draw-rounded-rect.helper';\n\nexport const generateUnavailableSpaceScene = (con: Context, shape: Shape) => {\n const w = shape.width();\n const h = shape.height();\n const padding = 4;\n\n con.save();\n\n const exitX = padding;\n const exitY = padding;\n const exitWidth = w - padding * 2;\n const exitHeight = h - padding * 2;\n const cornerRadius = Math.min(exitWidth, exitHeight) * 0.2;\n\n drawRoundedRect(con, shape, exitX, exitY, exitWidth, exitHeight, cornerRadius);\n\n // Stage text - check if parent has element_name, otherwise use \"ESCENARIO\"\n // const fontSize = Math.min(w, h) * 0.35;\n con.font = `11px Arial`;\n con.fillStyle = '#333333';\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n const centerX = w / 2;\n const centerY = h / 2;\n\n // Get parent element and check for element_name\n const stageText = '🚫 ' + (shape?.attrs?.element_name || 'No disponible');\n con.fillText(stageText, centerX, centerY);\n\n con.restore();\n};\n","import type { Context } from 'konva/lib/Context';\nimport type { Shape } from 'konva/lib/Shape';\nimport { drawRoundedRect } from './draw-rounded-rect.helper';\n\nexport const generateZoneScene = (con: Context, shape: Shape) => {\n const w = shape.width();\n const h = shape.height();\n const padding = 4;\n\n con.save();\n\n const zoneX = padding;\n const zoneY = padding;\n const zoneWidth = w - padding * 2;\n const zoneHeight = h - padding * 2;\n const cornerRadius = Math.min(zoneWidth, zoneHeight) * 0.05;\n\n drawRoundedRect(con, shape, zoneX, zoneY, zoneWidth, zoneHeight, cornerRadius);\n\n // Zone text - check if parent has element_name, otherwise use \"Zona\"\n con.font = `11px Arial`;\n con.fillStyle = shape.getAttr('stroke') as string;\n con.textAlign = 'center';\n con.textBaseline = 'middle';\n const centerX = w / 2;\n const centerY = h / 2;\n\n // Get parent element and check for element_name\n const zoneText = shape?.attrs?.element_name || '';\n con.fillText(zoneText, centerX, centerY);\n\n con.restore();\n};\n","import { RoomMapElementType } from '../enums';\nimport {\n generateExitScene,\n generateHallwayScene,\n generateProductionAreaScene,\n generateSeatBlockScene,\n generateStageScene,\n generateStairScene,\n generateTableScene,\n generateUnavailableSpaceScene,\n generateZoneScene,\n KonvaShapeConfig,\n} from '../helpers/scene-generators';\nimport { TICKET_MAP_GRID_SIZE } from './ticket-map';\n\nexport const KONVA_SHAPE_MAPPINGS: Record<RoomMapElementType, KonvaShapeConfig> = {\n [RoomMapElementType.STAGE]: {\n config: {\n width: TICKET_MAP_GRID_SIZE * 10,\n height: TICKET_MAP_GRID_SIZE * 2,\n fill: '#9C27B0',\n stroke: '#731d82',\n strokeWidth: 1,\n draggable: true,\n perfectDrawEnabled: false,\n sceneFunc: generateStageScene,\n },\n layer: 'background',\n },\n\n [RoomMapElementType.SEAT_BLOCK]: {\n config: {\n width: TICKET_MAP_GRID_SIZE * 5,\n height: TICKET_MAP_GRID_SIZE,\n fill: '#ffffff',\n stroke: '#909090',\n strokeWidth: 1,\n draggable: true,\n perfectDrawEnabled: false,\n sceneFunc: generateSeatBlockScene,\n },\n layer: 'elements',\n },\n\n [RoomMapElementType.TABLE]: {\n config: {\n width: TICKET_MAP_GRID_SIZE * 3,\n height: TICKET_MAP_GRID_SIZE * 2,\n fill: '#ffffff',\n stroke: '#909090',\n strokeWidth: 2,\n cornerRadius: 5,\n draggable: true,\n perfectDrawEnabled: false,\n sceneFunc: generateTableScene,\n },\n layer: 'elements',\n },\n\n [RoomMapElementType.ZONE]: {\n config: {\n width: TICKET_MAP_GRID_SIZE * 10,\n height: TICKET_MAP_GRID_SIZE * 3,\n fill: '#ffffff',\n stroke: '#909090',\n strokeWidth: 1,\n cornerRadius: 2,\n draggable: true,\n opacity: 1,\n perfectDrawEnabled: false,\n sceneFunc: generateZoneScene,\n },\n layer: 'background',\n },\n\n [RoomMapElementType.EXIT]: {\n config: {\n width: TICKET_MAP_GRID_SIZE * 3,\n height: TICKET_MAP_GRID_SIZE,\n fill: '#efefef',\n stroke: '#aaaaaa',\n strokeWidth: 1,\n draggable: true,\n perfectDrawEnabled: false,\n sceneFunc: generateExitScene,\n },\n layer: 'foreground',\n },\n\n [RoomMapElementType.PRODUCTION_AREA]: {\n config: {\n width: TICKET_MAP_GRID_SIZE * 4,\n height: TICKET_MAP_GRID_SIZE,\n fill: '#efefef',\n stroke: '#aaaaaa',\n strokeWidth: 1,\n draggable: true,\n perfectDrawEnabled: false,\n sceneFunc: generateProductionAreaScene,\n },\n layer: 'background',\n },\n\n [RoomMapElementType.UNAVAILABLE_SPACE]: {\n config: {\n width: TICKET_MAP_GRID_SIZE * 4,\n height: TICKET_MAP_GRID_SIZE,\n fill: '#efefef',\n stroke: '#aaaaaa',\n strokeWidth: 1,\n draggable: true,\n perfectDrawEnabled: false,\n sceneFunc: generateUnavailableSpaceScene,\n },\n layer: 'background',\n },\n\n [RoomMapElementType.STAIR]: {\n config: {\n width: TICKET_MAP_GRID_SIZE * 3,\n height: TICKET_MAP_GRID_SIZE,\n fill: '#efefef',\n stroke: '#aaaaaa',\n strokeWidth: 1,\n draggable: true,\n perfectDrawEnabled: false,\n sceneFunc: generateStairScene,\n },\n layer: 'background',\n },\n\n [RoomMapElementType.HALLWAY]: {\n config: {\n width: TICKET_MAP_GRID_SIZE * 3,\n height: TICKET_MAP_GRID_SIZE,\n fill: '#efefef',\n stroke: '#aaaaaa',\n strokeWidth: 1,\n draggable: true,\n perfectDrawEnabled: false,\n sceneFunc: generateHallwayScene,\n },\n layer: 'background',\n },\n};\n","export enum SelectedDiscountCardType {\n COUPON = 'COUPON',\n CORPORATE_BOND = 'CORPORATE_BOND',\n GIFT_BOND = 'GIFT_BOND',\n VIP = 'VIP',\n SUBSCRIPTION = 'SUBSCRIPTION',\n}\n","import { Customer } from '../interfaces/customers/customer.interface';\n\nexport const getCustomerFullname = (customer: Customer) => {\n return `${customer.first_name || ''} ${customer.last_name || ''}`.trim();\n};\n","import { Admin } from '../interfaces/admins/admin.interface';\n\nexport const getAdminFullname = (admin: Admin) => {\n return `${admin.first_name || ''} ${admin.last_name || ''}`.trim();\n};\n","import { CouponDiscountType } from '../enums';\nimport { Order } from '../interfaces';\n\nexport type OrderDiscountType = 'coupon' | 'corporate_bond' | 'gift_bond' | 'vip' | 'subscription';\n\nexport interface OrderDiscountInfo {\n type: OrderDiscountType | null;\n code: string | null;\n name: string | null;\n value: number;\n discountType: 'percentage' | 'fixed' | null;\n icon: string;\n /**\n * true cuando esta fuente de descuento tambien exonero la tarifa de\n * servicio de la orden (VIP/Abono con `service_fee_exempt`).\n */\n serviceFeeExempt: boolean;\n}\n\nconst DISCOUNT_ICONS: Record<OrderDiscountType, string> = {\n coupon: 'ri-coupon-3-line',\n corporate_bond: 'ri-building-line',\n gift_bond: 'ri-gift-2-line',\n vip: 'ri-vip-crown-2-line',\n subscription: 'ri-repeat-2-line',\n};\n\nexport function getOrderDiscount(order: Order): OrderDiscountInfo {\n // El descuento de una orden puede provenir de una fuente que exonera\n // ademas la tarifa de servicio (VIP/Abono) sin necesariamente descontar\n // el valor de la boleta (p. ej. una Tarjeta VIP con 0% de descuento pero\n // `service_fee_exempt: true`), asi que no se puede filtrar solo por\n // `discount_amount > 0`.\n const hasTicketDiscount = !!order.discount_amount && order.discount_amount > 0;\n\n if (order.vip_snapshot) {\n return {\n type: 'vip',\n code: null,\n name: order.vip_snapshot['name'] ?? 'Tarjeta VIP',\n value: order.discount_amount ?? 0,\n discountType: 'percentage',\n icon: DISCOUNT_ICONS.vip,\n serviceFeeExempt: !!order.vip_snapshot['service_fee_exempt'],\n };\n }\n\n if (order.subscription_snapshot) {\n return {\n type: 'subscription',\n code: null,\n name: 'Abono',\n value: order.discount_amount ?? 0,\n discountType: 'percentage',\n icon: DISCOUNT_ICONS.subscription,\n serviceFeeExempt: !!order.subscription_snapshot['service_fee_exempt'],\n };\n }\n\n if (!hasTicketDiscount) {\n return noDiscount();\n }\n\n if (order.coupon || order.coupon_snapshot) {\n const snap = order.coupon_snapshot;\n return {\n type: 'coupon',\n code: snap?.['code'] ?? order.coupon?.code ?? null,\n name: snap?.['code'] ?? order.coupon?.code ?? null,\n value: order.discount_amount!,\n discountType:\n snap?.['discount_type'] === CouponDiscountType.PERCENTAGE ? 'percentage' : 'fixed',\n icon: DISCOUNT_ICONS.coupon,\n serviceFeeExempt: false,\n };\n }\n\n if (order.corporate_bond_code || order.corporate_bond_code_snapshot) {\n const snap = order.corporate_bond_code_snapshot;\n return {\n type: 'corporate_bond',\n code: snap?.['code'] ?? order.corporate_bond_code?.code ?? null,\n name:\n snap?.['corporate_bond']?.['name'] ??\n order.corporate_bond_code?.corporate_bond?.name ??\n null,\n value: order.discount_amount!,\n discountType: 'fixed',\n icon: DISCOUNT_ICONS.corporate_bond,\n serviceFeeExempt: false,\n };\n }\n\n if (order.gift_bond || order.gift_bond_snapshot) {\n const snap = order.gift_bond_snapshot;\n return {\n type: 'gift_bond',\n code: null,\n name: snap?.['name'] ?? order.gift_bond?.name ?? null,\n value: order.discount_amount!,\n discountType: 'fixed',\n icon: DISCOUNT_ICONS.gift_bond,\n serviceFeeExempt: false,\n };\n }\n\n return noDiscount();\n}\n\nfunction noDiscount(): OrderDiscountInfo {\n return {\n type: null,\n code: null,\n name: null,\n value: 0,\n discountType: null,\n icon: '',\n serviceFeeExempt: false,\n };\n}\n","export function parseJsonToFormDataAdvanced(imageGallery: any[]): FormData {\n const formData = new FormData();\n\n if (!Array.isArray(imageGallery)) {\n throw new Error('imageGallery debe ser un array');\n }\n\n if (imageGallery.length === 0) {\n throw new Error('No hay imágenes para procesar');\n }\n\n if (imageGallery.length > 10) {\n throw new Error('El backend acepta máximo 10 archivos por petición');\n }\n\n const processedFiles: any = [];\n\n imageGallery.forEach((image, index) => {\n try {\n if (!image.name) {\n throw new Error(`La imagen ${index + 1} no tiene nombre`);\n }\n\n if (!image.type || !image.type.startsWith('image/')) {\n throw new Error(`La imagen ${index + 1} no tiene un tipo MIME válido`);\n }\n\n if (!image.preview) {\n throw new Error(`La imagen ${index + 1} no tiene datos de preview`);\n }\n\n if (!image.preview.includes('data:image/') || !image.preview.includes('base64,')) {\n throw new Error(`La imagen ${index + 1} no tiene un formato base64 válido`);\n }\n\n const base64Data = image.preview.split(',')[1];\n const byteCharacters = atob(base64Data);\n const byteNumbers = new Array(byteCharacters.length);\n\n for (let i = 0; i < byteCharacters.length; i++) {\n byteNumbers[i] = byteCharacters.charCodeAt(i);\n }\n\n const byteArray = new Uint8Array(byteNumbers);\n const blob = new Blob([byteArray], { type: image.type });\n\n const file = new File([blob], image.name, {\n type: image.type,\n lastModified: Date.now(),\n });\n\n if (file.size === 0) {\n throw new Error(`El archivo ${image.name} está vacío`);\n }\n\n formData.append('files', file);\n processedFiles.push({\n name: image.name,\n size: file.size,\n type: file.type,\n });\n } catch (error: any) {\n console.error(`Error procesando imagen ${index + 1}:`, error);\n throw new Error(\n `Error procesando ${image.name || 'imagen ' + (index + 1)}: ${error?.message}`,\n );\n }\n });\n\n return formData;\n}\n","import { ShowImage } from '../interfaces/shows/show-image.interface';\nimport { VenueImage } from '../interfaces/venues/venue-image.interface';\nimport { UploadedFile } from '../interfaces/uploaded-file.interface';\n\nexport const transformImageToFile = (image: ShowImage | VenueImage): UploadedFile => {\n return {\n preview: image.full_url,\n name: image.original_name,\n size: image.size,\n type: image.mime_type,\n extension: image.extension,\n } as UploadedFile;\n};\n","export const transformUrlParams = (params: any) => {\n const queryParams = new URLSearchParams();\n\n Object.entries(params).forEach(([key, value]) => {\n if (typeof value === 'number') {\n queryParams.append(key, value.toString());\n } else if (Array.isArray(value)) {\n value.forEach((item: string | number) => {\n queryParams.append(key, typeof item === 'number' ? item?.toString() : item);\n });\n } else if (typeof value === 'string') {\n queryParams.append(key, value);\n }\n });\n\n return queryParams;\n};\n","import { CitiesResponse } from '../interfaces/cities/cities-response.interface';\n\nexport const formatCitiesResponseToSelect = (res: CitiesResponse) => {\n if (!res.data.cities || res.data.cities.length < 1) {\n return [];\n }\n\n return res.data.cities?.map(({ id, name, search_text }) => ({\n value: id,\n label: search_text ?? name,\n }));\n};\n","import { PerformanceTicketStatus } from '../../enums';\nimport { Order, PerformanceTicket } from '../../interfaces';\nimport { OrderStatus } from '../../types';\n\nexport const ticketCanOpenQr = (order: Order, ticket: PerformanceTicket): boolean => {\n const orderIsCompleted = order.status === OrderStatus.COMPLETED;\n const ticketIsSold = ticket.status === PerformanceTicketStatus.SOLD;\n const ticketIsCheckedIn = ticket.checked_in;\n\n return orderIsCompleted && ticketIsSold && !ticketIsCheckedIn;\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn, FormGroup } from '@angular/forms';\n\nexport function MinTodayValidator(controlName: string): ValidatorFn {\n return (formGroup: AbstractControl): ValidationErrors | null => {\n const group = formGroup as FormGroup;\n const control = group.get(controlName);\n\n if (!control || !control.value) {\n return null;\n }\n\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n\n let selectedDate: Date;\n\n if (control.value instanceof Date) {\n selectedDate = new Date(control.value);\n } else if (typeof control.value === 'string') {\n const [year, month, day] = control.value.split('-').map(Number);\n selectedDate = new Date(Date.UTC(year, month - 1, day));\n } else {\n return null;\n }\n\n selectedDate.setUTCHours(0, 0, 0, 0);\n\n if (selectedDate < today) {\n control.setErrors({ minToday: true });\n return { minToday: true };\n } else {\n const currentErrors = control.errors;\n if (currentErrors) {\n delete currentErrors['minToday'];\n control.setErrors(Object.keys(currentErrors).length > 0 ? currentErrors : null);\n }\n return null;\n }\n };\n}\n\nexport function EndDateGreaterThanStartValidator(\n startDateControlName: string,\n endDateControlName: string,\n): ValidatorFn {\n return (formGroup: AbstractControl): ValidationErrors | null => {\n const group = formGroup as FormGroup;\n const startDateControl = group.get(startDateControlName);\n const endDateControl = group.get(endDateControlName);\n\n if (!startDateControl || !endDateControl || !startDateControl.value || !endDateControl.value) {\n return null;\n }\n\n let startDate: Date;\n let endDate: Date;\n\n if (startDateControl.value instanceof Date) {\n startDate = new Date(startDateControl.value);\n } else if (typeof startDateControl.value === 'string') {\n const [startYear, startMonth, startDay] = startDateControl.value.split('-').map(Number);\n startDate = new Date(Date.UTC(startYear, startMonth - 1, startDay));\n } else {\n return null;\n }\n\n if (endDateControl.value instanceof Date) {\n endDate = new Date(endDateControl.value);\n } else if (typeof endDateControl.value === 'string') {\n const [endYear, endMonth, endDay] = endDateControl.value.split('-').map(Number);\n endDate = new Date(Date.UTC(endYear, endMonth - 1, endDay));\n } else {\n return null;\n }\n\n startDate.setUTCHours(0, 0, 0, 0);\n endDate.setUTCHours(0, 0, 0, 0);\n\n if (endDate <= startDate) {\n endDateControl.setErrors({ endDateGreaterThanStart: true });\n return { endDateGreaterThanStart: true };\n } else {\n const currentErrors = endDateControl.errors;\n if (currentErrors) {\n delete currentErrors['endDateGreaterThanStart'];\n endDateControl.setErrors(Object.keys(currentErrors).length > 0 ? currentErrors : null);\n }\n return null;\n }\n };\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn, FormGroup } from '@angular/forms';\n\nexport function MustMatchValidator(controlName: string, matchingControlName: string): ValidatorFn {\n return (formGroup: AbstractControl): ValidationErrors | null => {\n const group = formGroup as FormGroup;\n const control = group.get(controlName);\n const matchingControl = group.get(matchingControlName);\n\n if (!control || !matchingControl) {\n return null;\n }\n\n if (control.value !== matchingControl.value) {\n matchingControl.setErrors({ mustMatch: true });\n return { mustMatch: true };\n } else {\n matchingControl.setErrors(null);\n return null;\n }\n };\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport function emailValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (!value) {\n return null;\n }\n\n const pattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;\n\n return pattern.test(value) ? null : { email: true };\n };\n}\n","import { Inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { isPlatformBrowser } from '@angular/common';\nimport { TICKERA_COMPONENTS_CONFIG } from '../config/tickera-components.config';\nimport { TickeraComponentsConfig } from '../interfaces/tickera-components-config.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ApiService {\n private apiUrl: string;\n\n constructor(\n private http: HttpClient,\n @Inject(PLATFORM_ID) private platformId: Object,\n @Inject(TICKERA_COMPONENTS_CONFIG) private config: TickeraComponentsConfig,\n ) {\n this.apiUrl = config.apiUrl;\n }\n\n private getHeaders(contentType?: string): HttpHeaders {\n let headers = new HttpHeaders();\n\n if (contentType) {\n headers = headers.set('Content-Type', contentType);\n }\n\n return headers;\n }\n\n private validateContentType(body: any): string | undefined {\n if (body instanceof FormData) {\n return undefined;\n }\n return 'application/json';\n }\n\n private handleError(error: HttpErrorResponse): Observable<never> {\n if (error.status === 401 && isPlatformBrowser(this.platformId)) {\n const currentRoute = window.location.pathname;\n if (currentRoute.startsWith('/admin')) {\n localStorage.removeItem('access_token');\n window.location.href = '/';\n }\n }\n return throwError(() => error);\n }\n\n get<T>(path: string): Observable<T> {\n const headers = this.getHeaders(this.validateContentType(null));\n return this.http\n .get<T>(`${this.apiUrl}${path}`, { headers })\n .pipe(catchError(this.handleError.bind(this)));\n }\n\n getBlob(path: string): Observable<Blob> {\n const headers = this.getHeaders(undefined);\n return this.http\n .get(`${this.apiUrl}${path}`, { headers, responseType: 'blob' })\n .pipe(catchError(this.handleError.bind(this)));\n }\n\n post<T>(path: string, body: any): Observable<T> {\n const headers = this.getHeaders(this.validateContentType(body));\n return this.http\n .post<T>(`${this.apiUrl}${path}`, body, { headers })\n .pipe(catchError(this.handleError.bind(this)));\n }\n\n patch<T>(path: string, body: any): Observable<T> {\n const headers = this.getHeaders(this.validateContentType(body));\n return this.http\n .patch<T>(`${this.apiUrl}${path}`, body, { headers })\n .pipe(catchError(this.handleError.bind(this)));\n }\n\n put<T>(path: string, body: any): Observable<T> {\n const headers = this.getHeaders(this.validateContentType(body));\n return this.http\n .put<T>(`${this.apiUrl}${path}`, body, { headers })\n .pipe(catchError(this.handleError.bind(this)));\n }\n\n delete<T>(path: string, body?: any): Observable<T> {\n const headers = this.getHeaders(this.validateContentType(body));\n return this.http\n .request<T>('DELETE', `${this.apiUrl}${path}`, { headers, body })\n .pipe(catchError(this.handleError.bind(this)));\n }\n}\n","import { Injectable, WritableSignal, signal } from '@angular/core';\n\n/**\n * Shared open/close state for the mobile off-canvas sidebar.\n * On viewports >= lg the sidebar is always visible (see sidebar-menu.component.html),\n * so this state only has a visual effect below the `lg` breakpoint.\n */\n@Injectable({ providedIn: 'root' })\nexport class SidebarStateService {\n isMobileOpen: WritableSignal<boolean> = signal(false);\n\n open(): void {\n this.isMobileOpen.set(true);\n }\n\n close(): void {\n this.isMobileOpen.set(false);\n }\n\n toggle(): void {\n this.isMobileOpen.set(!this.isMobileOpen());\n }\n}\n","import { Injectable, Inject, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n/**\n * Deshabilita el zoom del NAVEGADOR (no el zoom interno del mapa de\n * asientos, que sigue funcionando igual). Se instancia una sola vez —\n * inyectarlo en el componente raíz de la app alcanza, porque es\n * `providedIn: 'root'` — y cubre las cuatro formas en que un navegador\n * deja hacer zoom:\n *\n * - Ctrl/Cmd + rueda del mouse (desktop, todos los navegadores).\n * - Ctrl/Cmd + \"+\"/\"-\"/\"0\" por teclado (desktop, todos los navegadores).\n * - Gesto de pellizco en trackpad en Safari, que no dispara `wheel` sino\n * sus propios eventos `gesture*` (no estándar, solo Safari/WebKit).\n * - Pellizco con dos dedos en pantallas táctiles, como respaldo además\n * del `user-scalable=no` del viewport (que ya lo bloquea en la mayoría\n * de los navegadores, pero no en todos de forma consistente).\n *\n * No toca el zoom interno de `TicketMapZoomService` (ese es zoom propio de\n * la app sobre el SVG del mapa, con sus propios botones +/-, y debe seguir\n * funcionando tal cual).\n */\n@Injectable({ providedIn: 'root' })\nexport class BrowserZoomLockService {\n constructor(@Inject(PLATFORM_ID) platformId: Object) {\n if (!isPlatformBrowser(platformId)) return;\n\n window.addEventListener('wheel', this.onWheel, { passive: false });\n window.addEventListener('keydown', this.onKeydown);\n window.addEventListener('touchmove', this.onTouchMove, { passive: false });\n\n // Eventos no estándar de Safari/WebKit para gestos de pellizco en\n // trackpad — no existen tipos oficiales en lib.dom.d.ts, de ahí el `any`.\n const win = window as any;\n win.addEventListener('gesturestart', this.onGesture);\n win.addEventListener('gesturechange', this.onGesture);\n win.addEventListener('gestureend', this.onGesture);\n }\n\n private onWheel = (event: WheelEvent): void => {\n if (event.ctrlKey) {\n event.preventDefault();\n }\n };\n\n private onKeydown = (event: KeyboardEvent): void => {\n const isZoomKey = ['+', '-', '_', '=', '0'].includes(event.key);\n if ((event.ctrlKey || event.metaKey) && isZoomKey) {\n event.preventDefault();\n }\n };\n\n private onTouchMove = (event: TouchEvent): void => {\n if (event.touches.length > 1) {\n event.preventDefault();\n }\n };\n\n private onGesture = (event: Event): void => {\n event.preventDefault();\n };\n}\n","import { Inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { toast } from 'ngx-sonner';\n\ntype ToastType = 'success' | 'error' | 'info';\n\n@Injectable({ providedIn: 'root' })\nexport class ToastService {\n constructor(@Inject(PLATFORM_ID) private platformId: Object) {}\n\n show(message: string, type: ToastType = 'info') {\n // ngx-sonner's toast items measure their own DOM node\n // (getBoundingClientRect) in ngAfterViewInit, which the SSR DOM doesn't\n // implement. Showing a toast to no one during server rendering is\n // meaningless anyway, so skip it there — it fires correctly client-side\n // once the browser (and the real user) is actually present.\n if (!isPlatformBrowser(this.platformId)) return;\n toast[type](message);\n }\n}\n","import { Injectable, signal, WritableSignal } from '@angular/core';\nimport { DeleteConfirmationOpen } from '../interfaces/delete-confirmation-open.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class DeleteConfirmationService {\n title: WritableSignal<string> = signal('Confirmar eliminación');\n resourceName: WritableSignal<string> = signal('');\n confirmationText: WritableSignal<string> = signal('');\n isOpen: WritableSignal<boolean> = signal(false);\n confirmDeleteCallback: (() => void) | null = null;\n\n get modalTitle(): WritableSignal<string> {\n return this.title;\n }\n\n get modalResourceName(): WritableSignal<string> {\n return this.resourceName;\n }\n\n get modalConfirmationText(): WritableSignal<string> {\n return this.confirmationText;\n }\n\n get modalIsOpen(): WritableSignal<boolean> {\n return this.isOpen;\n }\n\n open(\n { title, resourceName, confirmationText }: DeleteConfirmationOpen,\n confirmCallback?: () => void,\n ) {\n this.title.set(title);\n this.resourceName.set(resourceName);\n this.confirmationText.set(confirmationText);\n this.confirmDeleteCallback = confirmCallback || null;\n this.isOpen.set(true);\n }\n\n close() {\n this.title.set('Confirmar eliminación');\n this.resourceName.set('');\n this.confirmationText.set('');\n this.confirmDeleteCallback = null;\n this.isOpen.set(false);\n }\n\n getConfirmDeleteCallback(): (() => void) | null {\n return this.confirmDeleteCallback;\n }\n}\n","import { Injectable, signal, WritableSignal } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class ChangePasswordFormService {\n resourceId: WritableSignal<number> = signal(0);\n isCustomer: WritableSignal<boolean> = signal(false);\n isAdmin: WritableSignal<boolean> = signal(false);\n isOpen: WritableSignal<boolean> = signal(false);\n\n get modalIsOpen(): WritableSignal<boolean> {\n return this.isOpen;\n }\n\n get isCustomerMode(): WritableSignal<boolean> {\n return this.isCustomer;\n }\n\n get isAdminMode(): WritableSignal<boolean> {\n return this.isAdmin;\n }\n\n get resourceIdValue(): WritableSignal<number> {\n return this.resourceId;\n }\n\n open(resourceId: number, isAdmin: boolean = false) {\n this.resourceId.set(resourceId);\n this.isCustomer.set(!isAdmin);\n this.isAdmin.set(isAdmin);\n this.isOpen.set(true);\n }\n\n close() {\n this.isOpen.set(false);\n }\n}\n","import { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { formatDate } from '@angular/common';\n\n@Injectable({ providedIn: 'root' })\nexport class DateService {\n constructor(@Inject(LOCALE_ID) private locale: string) {}\n\n formatDate(date: Date, format: string = 'yyyy-MM-dd'): string {\n const formattedDate = formatDate(date, format, this.locale);\n return formattedDate;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ApiService } from './api.service';\nimport { AdminsResponse } from '../interfaces/admins/admins-response.interface';\nimport { ADMIN_API_ROUTES } from '../constants/api-routes/admin-api.routes';\nimport { FetchAdminsParams } from '../interfaces';\nimport { transformUrlParams } from '../helpers';\nimport { AdminResponse } from '../interfaces/admins/admin-response.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class AdminService {\n constructor(private apiService: ApiService) {}\n\n fetchAdmins(params: FetchAdminsParams): Observable<AdminsResponse> {\n const queryParams = transformUrlParams(params);\n const queryString = queryParams.toString();\n const apiRoute = `${ADMIN_API_ROUTES.FIND_ALL}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<AdminsResponse>(apiRoute);\n }\n\n fetchOneById(id: number): Observable<AdminResponse> {\n return this.apiService.get<AdminResponse>(ADMIN_API_ROUTES.findOne(id));\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(ADMIN_API_ROUTES.deleteOne(id));\n }\n\n createOne(data: any): Observable<AdminResponse> {\n return this.apiService.post<AdminResponse>(ADMIN_API_ROUTES.CREATE, data);\n }\n\n updateOne(id: number, data: any): Observable<any> {\n return this.apiService.patch<any>(ADMIN_API_ROUTES.updateOne(id), data);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ApiService } from './api.service';\nimport { CITY_API_ENDPOINTS } from '../constants/api-routes/cities-api.routes';\nimport { CitiesResponse } from '../interfaces/cities/cities-response.interface';\nimport { City } from '../interfaces/cities/city.interface';\nimport { CityResponse } from '../interfaces/cities/city-response.interface';\nimport { FetchCitiesParams } from '../interfaces/cities/fetch-cities-params.interface';\nimport { transformUrlParams } from '../helpers';\n\n@Injectable({ providedIn: 'root' })\nexport class CitiesService {\n constructor(private apiService: ApiService) {}\n\n fetchCities(params: FetchCitiesParams): Observable<CitiesResponse> {\n const queryParams = transformUrlParams(params);\n const queryString = queryParams.toString();\n const apiRoute = `${CITY_API_ENDPOINTS.findAll}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<CitiesResponse>(apiRoute);\n }\n\n createOne(data: City): Observable<CityResponse> {\n return this.apiService.post(CITY_API_ENDPOINTS.create, data);\n }\n\n updateOne(id: number, data: City): Observable<CityResponse> {\n return this.apiService.patch<CityResponse>(CITY_API_ENDPOINTS.update(id), data);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(CITY_API_ENDPOINTS.delete(id));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ApiService } from './api.service';\nimport { COUNTRY_API_ENDPOINTS } from '../constants/api-routes/countries-api.routes';\nimport { CountriesResponse } from '../interfaces/countries/countries-response.interface';\nimport { CountryResponse } from '../interfaces/countries/country-response.interface';\nimport { Country } from '../interfaces/countries/country.interface';\nimport { FetchCountriesParams } from '../interfaces/countries/fetch-countries-params.interface';\nimport { transformUrlParams } from '../helpers';\n\n@Injectable({ providedIn: 'root' })\nexport class CountryService {\n constructor(private apiService: ApiService) {}\n\n fetchCountries(params: FetchCountriesParams): Observable<CountriesResponse> {\n const queryParams = transformUrlParams(params);\n const queryString = queryParams.toString();\n const apiRoute = `${COUNTRY_API_ENDPOINTS.findAll}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<CountriesResponse>(apiRoute);\n }\n\n createOne(data: Country): Observable<CountryResponse> {\n return this.apiService.post(COUNTRY_API_ENDPOINTS.create, data);\n }\n\n updateOne(id: number, data: Country): Observable<CountryResponse> {\n return this.apiService.patch<CountryResponse>(COUNTRY_API_ENDPOINTS.update(id), data);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(COUNTRY_API_ENDPOINTS.delete(id));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ApiService } from './api.service';\nimport { STATE_API_ENDPOINTS } from '../constants/api-routes/states-api.routes';\nimport { StatesResponse } from '../interfaces/states/states-response.interface';\nimport { StateResponse } from '../interfaces/states/state-response.interface';\nimport { State } from '../interfaces/states/state.interface';\nimport { transformUrlParams } from '../helpers';\nimport { FetchStatesParams } from '../interfaces/states/fetch-states-params.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class StatesService {\n constructor(private apiService: ApiService) {}\n\n fetchStates(params: FetchStatesParams): Observable<StatesResponse> {\n const queryParams = transformUrlParams(params);\n const queryString = queryParams.toString();\n const apiRoute = `${STATE_API_ENDPOINTS.findAll}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<StatesResponse>(apiRoute);\n }\n\n fetchStatesByCountryId(countryId: number): Observable<StatesResponse> {\n const apiRoute = `${STATE_API_ENDPOINTS.findAll}?country_id=${countryId}`;\n return this.apiService.get<StatesResponse>(apiRoute);\n }\n\n createOne(data: State): Observable<StateResponse> {\n return this.apiService.post(STATE_API_ENDPOINTS.create, data);\n }\n\n updateOne(id: number, data: State): Observable<StateResponse> {\n return this.apiService.patch<StateResponse>(STATE_API_ENDPOINTS.update(id), data);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(STATE_API_ENDPOINTS.delete(id));\n }\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { PERFORMANCES_API_ROUTES } from '../constants/api-routes/performances-api.routes';\nimport { ApiService } from './api.service';\nimport { PerformancesResponseInterface } from '../interfaces/performances/performances-response.interface';\nimport { Performance } from '../interfaces/performances/performance.interface';\nimport { PerformanceResponse } from '../interfaces/performances/performance-response.interface';\nimport { PerformanceBookingDataResponse } from '../interfaces/performances/performance-booking-data.interface';\nimport { PerformancesAvailableDaysResponse } from '../interfaces/performances/performances-available-days-response.interface';\nimport { FetchDailyPerformancesParams } from '../interfaces/daily-performances/fetch-daily-performances-params.interface';\nimport { DailyPerformancesResponse } from '../interfaces/daily-performances/daily-performances-response.interface';\nimport { FindAllPerformancesParams } from '../interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class PerformanceService {\n private performancesSubject = new BehaviorSubject<Performance[]>([]);\n public performances$ = this.performancesSubject.asObservable();\n\n constructor(private apiService: ApiService) {}\n\n fetchPerformances({\n showId,\n roomMapId,\n hallId,\n search,\n page,\n limit,\n }: FindAllPerformancesParams): Observable<PerformancesResponseInterface> {\n const queryParams = new URLSearchParams();\n if (showId) queryParams.append('show_id', showId.toString());\n if (roomMapId) queryParams.append('room_map_id', roomMapId.toString());\n if (hallId) queryParams.append('hall_id', hallId.toString());\n if (search) queryParams.append('search', search);\n if (page) queryParams.append('page', page.toString());\n if (limit) queryParams.append('limit', limit.toString());\n\n const queryString = queryParams.toString();\n const apiRoute = `${PERFORMANCES_API_ROUTES.findAll}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<PerformancesResponseInterface>(apiRoute);\n }\n\n fetchDailyPerformances({\n show_id,\n search,\n limit,\n date,\n }: FetchDailyPerformancesParams): Observable<DailyPerformancesResponse> {\n const queryParams = new URLSearchParams();\n if (date) queryParams.append('date', date.toString());\n if (show_id) queryParams.append('show_id', show_id.toString());\n if (search) queryParams.append('search', search);\n queryParams.append('limit', limit?.toString() ?? '100');\n\n const queryString = queryParams.toString();\n const apiRoute = `${PERFORMANCES_API_ROUTES.publicAvailablePerformances}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<DailyPerformancesResponse>(apiRoute);\n }\n\n loadPerformances({ showId, search }: { showId?: number; search?: string } = {}): void {\n this.fetchPerformances({ showId, search }).subscribe({\n next: ({ data }) => {\n this.performancesSubject.next(data?.performances ?? []);\n },\n error: () => {\n this.performancesSubject.next([]);\n },\n });\n }\n\n getCurrentPerformances(): Performance[] {\n return this.performancesSubject.value;\n }\n\n fetchOneById(id: number): Observable<PerformanceResponse> {\n return this.apiService.get<PerformanceResponse>(PERFORMANCES_API_ROUTES.findOneById(id));\n }\n\n fetchOneBookingData(\n id: number,\n isAdmin: boolean = false,\n ): Observable<PerformanceBookingDataResponse> {\n const routeMethod = isAdmin ? 'findOneBookingDataAdmin' : 'findOneBookingData';\n const apiRoute = PERFORMANCES_API_ROUTES[routeMethod](id);\n\n return this.apiService.get<PerformanceBookingDataResponse>(apiRoute);\n }\n\n fetchAvailableDays(params?: { show_id?: number }): Observable<PerformancesAvailableDaysResponse> {\n const queryParams = new URLSearchParams();\n if (params?.show_id) queryParams.append('show_id', params.show_id.toString());\n const queryString = queryParams.toString();\n const apiRoute = `${PERFORMANCES_API_ROUTES.getAvailableDays}${queryString ? '?' + queryString : ''}`;\n\n return this.apiService.get<PerformancesAvailableDaysResponse>(apiRoute);\n }\n\n createOne(data: Performance): Observable<any> {\n return this.apiService.post(PERFORMANCES_API_ROUTES.create, data);\n }\n\n createMany(data: Partial<Performance>[]): Observable<any> {\n return this.apiService.post(PERFORMANCES_API_ROUTES.createBulk, { performances: data });\n }\n\n updateOne(id: number, data: any): Observable<PerformanceResponse> {\n return this.apiService.patch<PerformanceResponse>(PERFORMANCES_API_ROUTES.update(id), data);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(PERFORMANCES_API_ROUTES.delete(id));\n }\n\n deleteMany(ids: number[]): Observable<any> {\n return this.apiService.delete(PERFORMANCES_API_ROUTES.deleteMany, { ids });\n }\n\n updatePublishedBulk(\n ids: number[],\n published: boolean,\n ): Observable<{ statusCode: number; data: { updated: number[] }; message: string }> {\n const apiRoute = PERFORMANCES_API_ROUTES.bulkPublished;\n return this.apiService.patch<{\n statusCode: number;\n data: { updated: number[] };\n message: string;\n }>(apiRoute, { ids, published });\n }\n\n cancelPerformance(id: number, notifyUsers: boolean): Observable<any> {\n return this.apiService.patch(PERFORMANCES_API_ROUTES.cancel(id), { notify_users: notifyUsers });\n }\n\n publishInvenotry(id: number): Observable<any> {\n const apiRoute = PERFORMANCES_API_ROUTES.publishInventory(id);\n return this.apiService.post(apiRoute, {});\n }\n}\n","import { computed, Injectable, signal } from '@angular/core';\nimport { DailyPerformanceItem, PerformanceAvailableDay } from '../interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class PerformancesListEventsService {\n private _selectedDay = signal<PerformanceAvailableDay | null>(null);\n private _selectedPerformance = signal<DailyPerformanceItem | null>(null);\n private _filteredShowId = signal<number | null>(null);\n\n readonly selectedDay = computed(() => this._selectedDay());\n readonly selectedDayDate = computed(() => this._selectedDay()?.date);\n readonly selectedPerformance = computed(() => this._selectedPerformance());\n readonly filteredShowId = computed(() => this._filteredShowId());\n\n setSelectedDay(day: PerformanceAvailableDay | null): void {\n this._selectedDay.set(day);\n }\n\n setSelectedPerformance(performance: DailyPerformanceItem | null) {\n this._selectedPerformance.set(performance);\n }\n\n setFilteredShowId(id: number | null): void {\n this._filteredShowId.set(id);\n }\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { SHOWS_API_ROUTES } from '../constants/api-routes/shows-api.routes';\nimport { ApiService } from './api.service';\nimport { ShowsResponseInterface } from '../interfaces/shows/shows-response.interface';\nimport { Show } from '../interfaces/shows/show.interface';\nimport { ShowResponse } from '../interfaces/shows/show-response.interface';\nimport { ShowImage } from '../interfaces/shows/show-image.interface';\nimport { FetchShowsParams } from '../interfaces/shows/fetch-shows-params.interface';\nimport { transformUrlParams } from '../helpers';\n\n@Injectable({ providedIn: 'root' })\nexport class ShowService {\n private showsSubject = new BehaviorSubject<Show[]>([]);\n public shows$ = this.showsSubject.asObservable();\n\n constructor(private apiService: ApiService) {}\n\n loadShows({ page, search }: FetchShowsParams = {}): void {\n this.fetchShows({ page, search }).subscribe({\n next: ({ data }) => {\n this.showsSubject.next(data?.shows ?? []);\n },\n error: () => {\n this.showsSubject.next([]);\n },\n });\n }\n\n getCurrentShows(): Show[] {\n return this.showsSubject.value;\n }\n\n fetchShows(params: FetchShowsParams): Observable<ShowsResponseInterface> {\n const queryParams = transformUrlParams(params);\n const queryString = queryParams.toString();\n const apiRoute = `${SHOWS_API_ROUTES.findAll}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<ShowsResponseInterface>(apiRoute);\n }\n\n fetchAvailableShows({\n date,\n limit,\n page,\n search,\n }: FetchShowsParams): Observable<ShowsResponseInterface> {\n const queryParams = new URLSearchParams();\n if (date) queryParams.append('date', date);\n if (page) queryParams.append('page', page.toString());\n if (search) queryParams.append('search', search);\n if (limit) queryParams.append('limit', limit.toString());\n const queryString = queryParams.toString();\n\n const apiRoute = `${SHOWS_API_ROUTES.publicAvailablePerformances}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<ShowsResponseInterface>(apiRoute);\n }\n\n fetchOneById(id: number): Observable<ShowResponse> {\n return this.apiService.get<ShowResponse>(SHOWS_API_ROUTES.findOneById(id));\n }\n\n createOne(data: Show): Observable<ShowResponse> {\n return this.apiService.post(SHOWS_API_ROUTES.create, data);\n }\n\n updateOne(id: number, data: any): Observable<ShowResponse> {\n return this.apiService.patch<ShowResponse>(SHOWS_API_ROUTES.update(id), data);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(SHOWS_API_ROUTES.delete(id));\n }\n\n fetchImages(id: number): Observable<{ data: ShowImage[] }> {\n return this.apiService.get(SHOWS_API_ROUTES.getImages(id));\n }\n\n uploadImages(id: number, files?: FormData): Observable<{ data: ShowImage[] }> {\n return this.apiService.post(SHOWS_API_ROUTES.uploadGallery(id), files);\n }\n\n deleteOneImage(showId: number, imageId: number): Observable<any> {\n return this.apiService.delete(SHOWS_API_ROUTES.deleteOneImage(showId, imageId));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ApiService } from './api.service';\nimport { CustomersResponse } from '../interfaces/customers/customers-response.interface';\nimport { CustomerResponse } from '../interfaces/customers/customer-response.interface';\nimport { CUSTOMERS_API_ROUTES } from '../constants/api-routes/customers-api.routes';\nimport { Customer } from '../interfaces/customers/customer.interface';\nimport { transformUrlParams } from '../helpers';\nimport { FetchCustomersParams } from '../interfaces/customers';\n\n@Injectable({ providedIn: 'root' })\nexport class CustomerService {\n constructor(private apiService: ApiService) {}\n\n createOne(data: Customer): Observable<CustomerResponse> {\n return this.apiService.post<CustomerResponse>(CUSTOMERS_API_ROUTES.create, data);\n }\n\n fetchCustomers(params: FetchCustomersParams): Observable<CustomersResponse> {\n const queryParams = transformUrlParams(params);\n const queryString = queryParams.toString();\n const apiRoute = `${CUSTOMERS_API_ROUTES.findAll}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<CustomersResponse>(apiRoute);\n }\n\n fetchOneById(id: number): Observable<CustomerResponse> {\n return this.apiService.get<CustomerResponse>(CUSTOMERS_API_ROUTES.findOne(id));\n }\n\n updateOne(id: number, data: any): Observable<CustomerResponse> {\n return this.apiService.patch<CustomerResponse>(CUSTOMERS_API_ROUTES.update(id), data);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(CUSTOMERS_API_ROUTES.delete(id));\n }\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { PRICE_ZONES_API_ROUTES } from '../constants/api-routes/price-zones-api.routes';\nimport { ApiService } from './api.service';\nimport { PriceZonesResponseInterface } from '../interfaces/price-zones/price-zones-response.interface';\nimport { PriceZone } from '../interfaces/price-zones/price-zone.interface';\nimport { FindAllPriceZoneParams } from '../interfaces/price-zones/find-all-price-zone-params.interface';\nimport { PriceZoneResponse } from '../interfaces/price-zones/price-zone-response.interface';\nimport { PriceZoneUpdateResponse } from '../interfaces/price-zones/price-zone-update-response.interface';\nimport { transformUrlParams } from '../helpers';\n\n@Injectable({ providedIn: 'root' })\nexport class PriceZoneService {\n private priceZonesSubject = new BehaviorSubject<PriceZone[]>([]);\n public priceZones$ = this.priceZonesSubject.asObservable();\n\n constructor(private apiService: ApiService) {}\n\n fetchPriceZones(params: FindAllPriceZoneParams = {}): Observable<PriceZonesResponseInterface> {\n const queryParams = transformUrlParams(params);\n if (params.show_ids?.length) {\n params.show_ids.forEach((showId) => queryParams.append('show_ids', showId.toString()));\n }\n const queryString = queryParams.toString();\n const apiRoute = `${PRICE_ZONES_API_ROUTES.FIND_ALL}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<PriceZonesResponseInterface>(apiRoute);\n }\n\n loadPriceZones(params: FindAllPriceZoneParams = {}): void {\n this.fetchPriceZones(params).subscribe({\n next: ({ data }) => {\n this.priceZonesSubject.next(data?.price_zones ?? []);\n },\n error: () => {\n this.priceZonesSubject.next([]);\n },\n });\n }\n\n getCurrentPriceZones(): PriceZone[] {\n return this.priceZonesSubject.value;\n }\n\n fetchOneById(id: number): Observable<PriceZoneResponse> {\n return this.apiService.get<PriceZoneResponse>(PRICE_ZONES_API_ROUTES.findOneById(id));\n }\n\n createOne(data: PriceZone): Observable<any> {\n return this.apiService.post(PRICE_ZONES_API_ROUTES.CREATE, data);\n }\n\n duplicateOne(id: number, name: string): Observable<any> {\n return this.apiService.post(PRICE_ZONES_API_ROUTES.duplicate(id), { name });\n }\n\n updateOne(id: number, data: any): Observable<PriceZoneUpdateResponse> {\n return this.apiService.patch<PriceZoneUpdateResponse>(PRICE_ZONES_API_ROUTES.update(id), data);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(PRICE_ZONES_API_ROUTES.delete(id));\n }\n}\n","import { Injectable, signal, WritableSignal } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { Subject } from 'rxjs';\nimport { PriceZone } from '../interfaces/price-zones/price-zone.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class PriceZoneEventService {\n private priceZoneDeleted$ = new Subject<void>();\n private priceZoneSaved$ = new Subject<void>();\n\n private _selectedPriceZone: WritableSignal<PriceZone | null> = signal(null);\n readonly selectedPriceZone$ = toObservable(this._selectedPriceZone);\n\n onPriceZoneDeleted() {\n this.priceZoneDeleted$.next();\n }\n\n getPriceZoneDeleted() {\n return this.priceZoneDeleted$.asObservable();\n }\n\n onPriceZoneSaved() {\n this.priceZoneSaved$.next();\n }\n\n getPriceZoneSaved() {\n return this.priceZoneSaved$.asObservable();\n }\n\n setSelectedPriceZone(priceZone: PriceZone | null) {\n this._selectedPriceZone.set(priceZone);\n }\n}\n","import { Injectable, signal, WritableSignal } from '@angular/core';\nimport { PriceZone } from '../interfaces/price-zones/price-zone.interface';\nimport { PriceZoneEventService } from './price-zone-event.service';\n\n@Injectable({ providedIn: 'root' })\nexport class PriceZoneFormModalService {\n priceZone: WritableSignal<PriceZone | null> = signal(null);\n isOpen: WritableSignal<boolean> = signal(false);\n\n constructor(private priceZoneEventService: PriceZoneEventService) {}\n\n get modalIsOpen(): WritableSignal<boolean> {\n return this.isOpen;\n }\n\n get currentPriceZone(): WritableSignal<PriceZone | null> {\n return this.priceZone;\n }\n\n open(priceZone: PriceZone | null = null) {\n this.priceZone.set(priceZone);\n this.priceZoneEventService.setSelectedPriceZone(priceZone);\n this.isOpen.set(true);\n }\n\n close() {\n this.isOpen.set(false);\n this.priceZone.set(null);\n }\n}\n","import { Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport {\n FetchProductCategoriesParams,\n ProductCategoriesResponse,\n ProductCategory,\n ProductCategoryResponse,\n} from '../interfaces';\nimport { ApiService } from './api.service';\nimport { PRODUCT_CATEGORIES_API_ROUTES } from '../constants/api-routes';\nimport { transformUrlParams } from '../helpers';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProductCategoryService {\n constructor(private apiService: ApiService) {}\n\n fetchCategories(params: FetchProductCategoriesParams): Observable<ProductCategoriesResponse> {\n const queryParams = transformUrlParams(params);\n const queryString = queryParams.toString();\n const apiRoute = `${PRODUCT_CATEGORIES_API_ROUTES.FIND_ALL}${queryString ? '?' + queryString : ''}`;\n\n return this.apiService.get<ProductCategoriesResponse>(apiRoute);\n }\n\n fetchOneById(id: number): Observable<ProductCategoryResponse> {\n const apiRoute = PRODUCT_CATEGORIES_API_ROUTES.findById(id);\n return this.apiService.get<ProductCategoryResponse>(apiRoute);\n }\n\n createOne(data: ProductCategory): Observable<any> {\n const apiRoute = PRODUCT_CATEGORIES_API_ROUTES.CREATE;\n return this.apiService.post(apiRoute, data);\n }\n\n updateOne(id: number, data: ProductCategory): Observable<ProductCategoryResponse> {\n const apiRoute = PRODUCT_CATEGORIES_API_ROUTES.update(id);\n return this.apiService.patch<ProductCategoryResponse>(apiRoute, data);\n }\n\n deleteOne(id: number): Observable<any> {\n const apiRoute = PRODUCT_CATEGORIES_API_ROUTES.delete(id);\n return this.apiService.delete(apiRoute);\n }\n}\n","import { Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { ApiService } from './api.service';\nimport {\n FetchProductTagsParams,\n ProductTag,\n ProductTagResponse,\n ProductTagsResponse,\n} from '../interfaces';\nimport { PRODUCT_TAGS_API_ROUTES } from '../constants/api-routes';\nimport { transformUrlParams } from '../helpers';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProductTagService {\n constructor(private apiService: ApiService) {}\n\n fetchTags(params: FetchProductTagsParams): Observable<ProductTagsResponse> {\n const queryParams = transformUrlParams(params);\n const queryString = queryParams.toString();\n const apiRoute = `${PRODUCT_TAGS_API_ROUTES.FIND_ALL}${queryString ? '?' + queryString : ''}`;\n\n return this.apiService.get<ProductTagsResponse>(apiRoute);\n }\n\n fetchOneById(id: number): Observable<ProductTagResponse> {\n const apiRoute = PRODUCT_TAGS_API_ROUTES.findById(id);\n return this.apiService.get<ProductTagResponse>(apiRoute);\n }\n\n createOne(data: ProductTag): Observable<any> {\n const apiRoute = PRODUCT_TAGS_API_ROUTES.CREATE;\n return this.apiService.post(apiRoute, data);\n }\n\n updateOne(id: number, data: ProductTag): Observable<ProductTagResponse> {\n const apiRoute = PRODUCT_TAGS_API_ROUTES.update(id);\n return this.apiService.patch<ProductTagResponse>(apiRoute, data);\n }\n\n deleteOne(id: number): Observable<any> {\n const apiRoute = PRODUCT_TAGS_API_ROUTES.delete(id);\n return this.apiService.delete(apiRoute);\n }\n}\n","import { Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { ApiService } from './api.service';\nimport {\n FetchProductTypesParams,\n ProductType,\n ProductTypeResponse,\n ProductTypesResponse,\n} from '../interfaces';\nimport { PRODUCT_TYPES_API_ROUTES } from '../constants/api-routes/product-types-api.routes';\nimport { transformUrlParams } from '../helpers';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProductTypeService {\n constructor(private apiService: ApiService) {}\n\n fetchTypes(params: FetchProductTypesParams): Observable<ProductTypesResponse> {\n const queryParams = transformUrlParams(params);\n const queryString = queryParams.toString();\n const apiRoute = `${PRODUCT_TYPES_API_ROUTES.FIND_ALL}${queryString ? '?' + queryString : ''}`;\n\n return this.apiService.get<ProductTypesResponse>(apiRoute);\n }\n\n fetchOneById(id: number): Observable<ProductTypeResponse> {\n const apiRoute = PRODUCT_TYPES_API_ROUTES.findById(id);\n return this.apiService.get<ProductTypeResponse>(apiRoute);\n }\n\n createOne(data: ProductType): Observable<any> {\n const apiRoute = PRODUCT_TYPES_API_ROUTES.CREATE;\n return this.apiService.post(apiRoute, data);\n }\n\n updateOne(id: number, data: ProductType): Observable<ProductTypeResponse> {\n const apiRoute = PRODUCT_TYPES_API_ROUTES.update(id);\n return this.apiService.patch<ProductTypeResponse>(apiRoute, data);\n }\n\n deleteOne(id: number): Observable<any> {\n const apiRoute = PRODUCT_TYPES_API_ROUTES.delete(id);\n return this.apiService.delete(apiRoute);\n }\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { PRODUCTS_API_ROUTES } from '../constants/api-routes/products-api.routes';\nimport { ApiService } from './api.service';\nimport { ProductsResponseInterface } from '../interfaces/products/products-response.interface';\nimport { ProductResponse } from '../interfaces/products/product-response.interface';\nimport { Product } from '../interfaces/products/product.interface';\nimport { FetchProductsParams } from '../interfaces/products/fetch-products-params.interface';\nimport { ProductImage } from '../interfaces';\nimport { transformUrlParams } from '../helpers/transform-url-params.helper';\n\n@Injectable({ providedIn: 'root' })\nexport class ProductService {\n private productsSubject = new BehaviorSubject<Product[]>([]);\n public products$ = this.productsSubject.asObservable();\n\n constructor(private apiService: ApiService) {}\n\n fetchProducts(params: FetchProductsParams): Observable<ProductsResponseInterface> {\n const queryParams = transformUrlParams(params);\n const queryString = queryParams.toString();\n const apiRoute = `${PRODUCTS_API_ROUTES.FIND_ALL}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<ProductsResponseInterface>(apiRoute);\n }\n\n loadProducts(params: FetchProductsParams): void {\n this.fetchProducts(params).subscribe({\n next: ({ data }) => {\n this.productsSubject.next(data?.products ?? []);\n },\n error: () => {\n this.productsSubject.next([]);\n },\n });\n }\n\n getCurrentProducts(): Product[] {\n return this.productsSubject.value;\n }\n\n fetchOneById(id: number): Observable<ProductResponse> {\n return this.apiService.get<ProductResponse>(PRODUCTS_API_ROUTES.findOneById(id));\n }\n\n createOne(data: Product): Observable<any> {\n return this.apiService.post(PRODUCTS_API_ROUTES.CREATE, data);\n }\n\n updateOne(id: number, data: any): Observable<ProductResponse> {\n return this.apiService.patch<ProductResponse>(PRODUCTS_API_ROUTES.update(id), data);\n }\n\n deleteOne(id: number): Observable<any> {\n return this.apiService.delete(PRODUCTS_API_ROUTES.delete(id));\n }\n\n fetchImages(id: number): Observable<{ data: ProductImage[] }> {\n const apiRoute = PRODUCTS_API_ROUTES.fetchImages(id);\n return this.apiService.get<{ data: ProductImage[] }>(apiRoute);\n }\n\n uploadImages(id: number, files?: FormData): Observable<{ data: ProductImage[] }> {\n const apiRoute = PRODUCTS_API_ROUTES.uploadImages(id);\n return this.apiService.post<{ data: ProductImage[] }>(apiRoute, files);\n }\n\n deleteOneImage(productId: number, imageId: number): Observable<any> {\n const apiRoute = PRODUCTS_API_ROUTES.deleteOneImage(productId, imageId);\n return this.apiService.delete(apiRoute);\n }\n}\n","import { signal, WritableSignal } from '@angular/core';\n\nexport class BaseModalService {\n readonly isOpen: WritableSignal<boolean> = signal(false);\n\n get modalIsOpen(): WritableSignal<boolean> {\n return this.isOpen;\n }\n\n open() {\n this.isOpen.set(true);\n }\n\n close() {\n this.isOpen.set(false);\n }\n}\n","import { Injectable, computed, signal } from '@angular/core';\nimport { FeedbackModalElement } from '../interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class FeedbackModalService {\n private _modals = signal<Map<string, FeedbackModalElement>>(new Map());\n\n readonly modals = computed(() => Array.from(this._modals().values()));\n\n addModal(modal: FeedbackModalElement): void {\n this._modals.update((modals) => {\n const newModals = new Map(modals);\n newModals.set(modal.id, modal);\n return newModals;\n });\n }\n\n removeModal(id: string): void {\n this._modals.update((modals) => {\n const newModals = new Map(modals);\n newModals.delete(id);\n return newModals;\n });\n }\n\n removeAllModals(): void {\n this._modals.set(new Map());\n }\n}\n","import { Injectable, signal } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map, tap } from 'rxjs/operators';\nimport { ApiService } from './api.service';\n\nconst MAX_TICKETS_SETTING_KEY = 'max_tickets_per_purchase';\n\ninterface SettingRecord {\n key: string;\n value: string;\n}\n\n/**\n * Tope de entradas por selección/compra. Por defecto es `null` (sin límite),\n * que es lo que necesita el backoffice (admin puede seleccionar todo).\n * El ecommerce, que sí debe limitar, llama a `load()` una vez al iniciar la\n * app para traer el valor configurado en el formulario de personalización.\n */\n@Injectable({ providedIn: 'root' })\nexport class PurchaseLimitService {\n private _maxTicketsPerSelection = signal<number | null>(null);\n\n readonly maxTicketsPerSelection = this._maxTicketsPerSelection.asReadonly();\n\n constructor(private apiService: ApiService) {}\n\n setMaxTicketsPerSelection(max: number | null): void {\n this._maxTicketsPerSelection.set(max && max > 0 ? max : null);\n }\n\n load(): Observable<number | null> {\n return this.apiService.get<{ data: SettingRecord[] }>('/settings?category=personalization').pipe(\n map(({ data }) => {\n const setting = data?.find((s) => s.key === MAX_TICKETS_SETTING_KEY);\n const parsed = setting?.value ? parseInt(setting.value, 10) : NaN;\n return Number.isFinite(parsed) && parsed > 0 ? parsed : null;\n }),\n tap((max) => this.setMaxTicketsPerSelection(max)),\n catchError(() => {\n // Si falla la carga, no bloqueamos la compra: queda sin límite hasta\n // que se pueda leer el setting correctamente.\n this.setMaxTicketsPerSelection(null);\n return of(null);\n }),\n );\n }\n}\n","import { Injectable, signal, WritableSignal } from '@angular/core';\nimport { Transaction } from '../interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class OrderTransactionDetailsModalService {\n readonly isOpen: WritableSignal<boolean> = signal(false);\n transaction: WritableSignal<Transaction | null> = signal(null);\n\n get modalIsOpen(): WritableSignal<boolean> {\n return this.isOpen;\n }\n\n open(transaction: Transaction) {\n this.transaction.set(transaction);\n }\n\n close() {\n this.isOpen.set(false);\n this.transaction.set(null);\n }\n}\n","import { Injectable, signal, computed } from '@angular/core';\nimport { DEFAULT_STAGE_CONFIG } from '../../constants/ticket-map';\nimport { processElementsToRenderData } from '../../helpers';\nimport {\n ElementRenderData,\n HallFloor,\n Performance,\n PerformanceBookingDataResponse,\n PerformanceTicket,\n RoomMap,\n SeatStatusUpdate,\n Show,\n} from '../../interfaces';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PerformanceBookingDataService {\n private _show = signal<Show | null>(null);\n private _performance = signal<Performance | null>(null);\n private _roomMap = signal<RoomMap | null>(null);\n private _hallFloors = signal<HallFloor[]>([]);\n private _selectedHallFloor = signal<HallFloor | null>(null);\n private _allRenderData = signal<ElementRenderData[]>([]);\n private _visibleFloorIds = signal<Set<number>>(new Set());\n private _hoveredFloorId = signal<number | null>(null);\n private _stageConfig = signal(DEFAULT_STAGE_CONFIG);\n\n // Snapshot de tickets tal como llegó del último `setPerformanceBookingData`,\n // más los parches aplicados por `applySeatStatusUpdates` (SSE). Se guarda\n // aparte de `_allRenderData` porque hace falta la lista completa de\n // tickets para poder recalcular el render data con `processElementsToRenderData`.\n private _lastTickets: PerformanceTicket[] = [];\n\n readonly show = computed(() => this._show());\n\n readonly hallFloors = computed(() => this._hallFloors());\n\n readonly selectedHallFloor = computed(() => this._selectedHallFloor());\n\n readonly performance = computed(() => this._performance());\n\n readonly stageConfig = computed(() => this._stageConfig());\n\n readonly roomMap = computed(() => this._roomMap());\n\n readonly visibleFloorIds = computed(() => this._visibleFloorIds());\n\n readonly hoveredFloorId = computed(() => this._hoveredFloorId());\n\n readonly availableFloors = computed(() => {\n const allData = this._allRenderData();\n const floors = this._hallFloors();\n const floorIdsWithElements = new Set(allData.map((el) => el.hallFloorId).filter(Boolean));\n return floors.filter((f) => floorIdsWithElements.has(f.id));\n });\n\n // Orden de los pisos visibles de \"atrás hacia adelante\": el orden natural\n // es el mismo que usa el selector de pisos (availableFloors), y el piso\n // que está en hover siempre se manda al final (= arriba del todo).\n readonly floorZOrder = computed(() => {\n const visible = this._visibleFloorIds();\n const order = this.availableFloors()\n .map((floor) => floor.id)\n .filter((id) => visible.has(id));\n\n const hovered = this._hoveredFloorId();\n if (hovered != null && visible.has(hovered)) {\n const withoutHovered = order.filter((id) => id !== hovered);\n withoutHovered.push(hovered);\n return withoutHovered;\n }\n\n return order;\n });\n\n // Agrupado por piso según floorZOrder, para que tanto el hit-test\n // (findElementAtPosition, que asume \"último = más arriba\") como el\n // render por capas (una <ko-layer> por piso) usen el mismo z-order.\n readonly renderData = computed(() => {\n const visible = this._visibleFloorIds();\n const order = this.floorZOrder();\n\n const byFloor = new Map<number, ElementRenderData[]>();\n for (const el of this._allRenderData()) {\n if (el.hallFloorId == null || !visible.has(el.hallFloorId)) continue;\n const arr = byFloor.get(el.hallFloorId) ?? [];\n arr.push(el);\n byFloor.set(el.hallFloorId, arr);\n }\n\n return order.flatMap((floorId) => byFloor.get(floorId) ?? []);\n });\n\n setPerformanceBookingData({ data }: PerformanceBookingDataResponse): void {\n this._performance.set(data.performance);\n this._show.set(data.show);\n\n const roomMap = data.room_map;\n this._roomMap.set(roomMap);\n\n this._lastTickets = data.tickets ?? [];\n\n const hallFloors = data.room_map?.hall?.hall_floors ?? [];\n const selectedHallFloor = hallFloors.length > 0 ? hallFloors[0] : null;\n this._hallFloors.set(hallFloors);\n this._selectedHallFloor.set(selectedHallFloor);\n\n const renderData = processElementsToRenderData(\n roomMap.elements,\n data.tickets,\n roomMap.price_zones,\n );\n this._allRenderData.set(renderData);\n\n const floorIdsWithElements = new Set(\n renderData.map((el) => el.hallFloorId).filter(Boolean) as number[],\n );\n this._visibleFloorIds.set(new Set(floorIdsWithElements));\n\n const canvasSettings = roomMap.canvas_settings || {};\n this._stageConfig.set({\n ...DEFAULT_STAGE_CONFIG,\n width: canvasSettings.width || 800,\n height: canvasSettings.height || 600,\n });\n }\n\n /** Aplica actualizaciones de estado de tickets recibidas por SSE (ver\n * SeatAvailabilitySseService) sin volver a pedir todo el booking-data:\n * parcha `_lastTickets` y vuelve a calcular el render data del mapa con\n * los mismos `elements`/`price_zones` (que no cambian en vivo). */\n applySeatStatusUpdates(updates: SeatStatusUpdate[]): void {\n if (!updates.length || !this._lastTickets.length) return;\n\n const roomMap = this._roomMap();\n if (!roomMap) return;\n\n const updatesById = new Map(updates.map((u) => [u.id, u]));\n let changed = false;\n\n for (const ticket of this._lastTickets) {\n const update = updatesById.get(ticket.id);\n if (!update) continue;\n if (ticket.status !== update.status || ticket.reserved_until !== update.reserved_until) {\n ticket.status = update.status;\n ticket.reserved_until = update.reserved_until;\n changed = true;\n }\n }\n\n if (!changed) return;\n\n const renderData = processElementsToRenderData(\n roomMap.elements,\n this._lastTickets,\n roomMap.price_zones,\n );\n this._allRenderData.set(renderData);\n }\n\n setRoomMap(roomMap: RoomMap | null): void {\n this._roomMap.set(roomMap);\n }\n\n setAllRenderData(data: ElementRenderData[]) {\n this._allRenderData.set(data);\n }\n\n setPerformance(performance: Performance | null): void {\n this._performance.set(performance);\n }\n\n setShow(show: Show | null): void {\n this._show.set(show);\n }\n\n setHallFloors(data: HallFloor[]) {\n const selectedHallFloor = data.length > 0 ? data[0] : null;\n this._hallFloors.set(data);\n this._selectedHallFloor.set(selectedHallFloor);\n\n const allData = this._allRenderData();\n const floorIdsWithElements = new Set(\n allData.map((el) => el.hallFloorId).filter(Boolean) as number[],\n );\n const floorIds = data.filter((f) => floorIdsWithElements.has(f.id)).map((f) => f.id);\n this._visibleFloorIds.set(new Set(floorIds));\n }\n\n setSelectedHallFloor(id: number): void {\n const hallFloor = this._hallFloors().find((hallFloor) => hallFloor.id === id);\n this._selectedHallFloor.set(hallFloor ?? null);\n }\n\n setHoveredFloor(floorId: number | null): void {\n if (this._hoveredFloorId() === floorId) return;\n this._hoveredFloorId.set(floorId);\n }\n\n toggleFloorVisibility(floorId: number): void {\n const current = new Set(this._visibleFloorIds());\n if (current.has(floorId)) {\n if (current.size <= 1) return;\n current.delete(floorId);\n } else {\n current.add(floorId);\n }\n this._visibleFloorIds.set(current);\n }\n\n isFloorVisible(floorId: number): boolean {\n return this._visibleFloorIds().has(floorId);\n }\n\n updateStageConfig(data: { [x: string]: any }) {\n this._stageConfig.set({\n ...this._stageConfig(),\n ...data,\n });\n }\n}\n","import { Injectable, signal, computed, WritableSignal } from '@angular/core';\nimport { Customer } from '../../interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class TicketSelectionDetailsService {\n private _customerEmail = signal<string | null>(null);\n private _customerId = signal<number | null>(null);\n private _paymentMethod = signal<string | null>(null);\n private _billingInformation: WritableSignal<Customer | null> = signal(null);\n\n readonly customerEmail = computed(() => this._customerEmail());\n\n readonly customerId = computed(() => this._customerId());\n\n readonly paymentMethod = computed(() => this._paymentMethod());\n\n readonly billingInformation = computed(() => this._billingInformation());\n\n setCustomerEmail(email: string | null): void {\n this._customerEmail.set(email);\n }\n\n setCustomerId(id: number | null): void {\n this._customerId.set(id);\n }\n\n setPaymentMethod(method: string | null): void {\n this._paymentMethod.set(method);\n }\n\n setBillingInformation(values: Customer) {\n this._billingInformation.set(values);\n }\n\n clearSelection(): void {\n this._customerEmail.set(null);\n this._customerId.set(null);\n this._paymentMethod.set(null);\n this._billingInformation.set(null);\n }\n}\n","import { Injectable, signal, computed, Signal } from '@angular/core';\nimport {\n CorporateBond,\n Coupon,\n GiftBondPurchase,\n SelectedDiscountCard,\n SelectedDiscountCardType,\n VipCard,\n} from '../../interfaces';\nimport { CouponDiscountType } from '../../enums';\n\n@Injectable({ providedIn: 'root' })\nexport class TicketSelectionDiscountService {\n private _coupon = signal<Coupon | null>(null);\n private _corporateBond = signal<CorporateBond | null>(null);\n private _corporateBondCode = signal<string | null>(null);\n private _giftBond = signal<GiftBondPurchase | null>(null);\n private _giftBondCode = signal<string | null>(null);\n private _vipCard = signal<VipCard | null>(null);\n /**\n * Abono (subscription) como metodo de pago. Solo se usa el campo\n * `service_fee_exempt`: el valor del descuento es siempre 100% (una obra\n * del abono cubre el ticket por completo), igual que un cupon del 100%.\n */\n private _subscription = signal<{ service_fee_exempt: boolean } | null>(null);\n\n readonly coupon = computed(() => this._coupon());\n\n readonly corporateBond = computed(() => this._corporateBond());\n\n readonly corporateBondCode = computed(() => this._corporateBondCode());\n\n readonly giftBond = computed(() => this._giftBond());\n\n readonly giftBondCode = computed(() => this._giftBondCode());\n\n readonly vipCard = computed(() => this._vipCard());\n\n readonly subscription = computed(() => this._subscription());\n\n readonly selectedDiscount: Signal<SelectedDiscountCard | null> = computed(() => {\n const coupon = this.coupon();\n if (!!coupon) {\n return {\n name: coupon.code,\n value: coupon.discount_value,\n type: SelectedDiscountCardType.COUPON,\n discountType:\n coupon.discount_type === CouponDiscountType.PERCENTAGE ? 'percentage' : 'fixed',\n };\n }\n\n const giftBond = this.giftBond();\n if (!!giftBond) {\n return {\n name: 'Bono de regalo',\n value: giftBond.original_value,\n type: SelectedDiscountCardType.GIFT_BOND,\n discountType: 'fixed',\n };\n }\n\n const [corporateBond, corporateBondCode] = [this.corporateBond(), this.corporateBondCode()];\n if (!!corporateBond && !!corporateBondCode) {\n return {\n name: corporateBondCode,\n value: corporateBond.value,\n type: SelectedDiscountCardType.CORPORATE_BOND,\n discountType: 'fixed',\n };\n }\n\n const vipCard = this.vipCard();\n if (!!vipCard) {\n return {\n name: vipCard.category_snapshot?.name ?? 'Tarjeta VIP',\n value: Number(vipCard.category_snapshot?.discount_percentage ?? 0),\n type: SelectedDiscountCardType.VIP,\n discountType: 'percentage',\n serviceFeeExempt: !!vipCard.category_snapshot?.service_fee_exempt,\n };\n }\n\n const subscription = this.subscription();\n if (!!subscription) {\n return {\n name: 'Abono',\n value: 100,\n type: SelectedDiscountCardType.SUBSCRIPTION,\n discountType: 'percentage',\n serviceFeeExempt: !!subscription.service_fee_exempt,\n };\n }\n\n return null;\n });\n\n readonly selectedDiscountType = computed(() => {\n return this.selectedDiscount()?.type;\n });\n\n readonly selectedDiscountValue = computed(() => {\n return this.selectedDiscount()?.value ?? undefined;\n });\n\n setCoupon(coupon: Coupon | null): void {\n this._coupon.set(coupon);\n }\n\n setCorporateBond(corporateBond: CorporateBond | null): void {\n this._corporateBond.set(corporateBond);\n }\n\n setCorporateBondCode(code: string | null): void {\n this._corporateBondCode.set(code);\n }\n\n setGiftBond(giftBond: GiftBondPurchase | null): void {\n this._giftBond.set(giftBond);\n }\n\n setGiftBondCode(code: string | null): void {\n this._giftBondCode.set(code);\n }\n\n /**\n * Saldo VIP como método de pago (VIP-HU-04). Solo debe contar como\n * descuento \"seleccionado\" mientras el cliente efectivamente eligió\n * pagar con su saldo VIP, no solo por tener una tarjeta activa —\n * llamar con `null` en cuanto deje de ser el método de pago elegido.\n */\n setVipCard(card: VipCard | null): void {\n this._vipCard.set(card);\n }\n\n /**\n * Abono como metodo de pago (paralelo a `setVipCard`). Llamar con `null`\n * en cuanto deje de ser el metodo de pago elegido.\n */\n setSubscription(subscription: { service_fee_exempt: boolean } | null): void {\n this._subscription.set(subscription);\n }\n\n clearSelection(): void {\n this._coupon.set(null);\n this._corporateBond.set(null);\n this._corporateBondCode.set(null);\n this._giftBond.set(null);\n this._giftBondCode.set(null);\n this._vipCard.set(null);\n this._subscription.set(null);\n }\n}\n","import { Injectable, signal, computed, WritableSignal, inject } from '@angular/core';\nimport { PerformanceBookingDataService } from './performance-booking-data.service';\nimport { TicketSelectionDiscountService } from './ticket-selection-discount.service';\nimport { TicketSelectionDetailsService } from './ticket-selection-details.service';\nimport {\n PerformanceTicket,\n Product,\n ReservePerformanceDto,\n SeatStatusUpdate,\n TicketMapTooltipData,\n TicketMapZoneQuantityState,\n} from '../../interfaces';\nimport { TICKET_STATUS_COLORS, TICKET_STATUS_LABELS } from '../../constants/ticket-map';\nimport { PerformanceTicketStatus, RoomMapElementType } from '../../enums';\nimport { FeedbackModalService } from '../feedback-modal.service';\nimport { PurchaseLimitService } from '../purchase-limit.service';\n\n@Injectable({ providedIn: 'root' })\nexport class TicketSelectionService {\n private bookingDataService = inject(PerformanceBookingDataService);\n private feedbackModalService = inject(FeedbackModalService);\n private purchaseLimitService = inject(PurchaseLimitService);\n private selectionDetailsService = inject(TicketSelectionDetailsService);\n private selectionDiscountService = inject(TicketSelectionDiscountService);\n private _zoneQuantities = signal<Map<number, TicketMapZoneQuantityState>>(new Map());\n private _allTickets = signal<PerformanceTicket[]>([]);\n private _selectedTickets: WritableSignal<Set<PerformanceTicket>> = signal(new Set());\n private _selectedBlockedTickets: WritableSignal<Set<PerformanceTicket>> = signal(new Set());\n private _products: WritableSignal<Product[]> = signal([]);\n private _productQuantities: WritableSignal<Map<number, number>> = signal(new Map());\n\n readonly selectedTickets = computed<PerformanceTicket[]>(() => {\n const ids = this._selectedTickets();\n return this._allTickets().filter((t) => ids.has(t));\n });\n\n readonly selectedBlockedTickets = computed<PerformanceTicket[]>(() => {\n const ids = this._selectedBlockedTickets();\n return this._allTickets().filter((t) => ids.has(t));\n });\n\n readonly selectedCount = computed(() => this._selectedTickets().size);\n\n readonly blockedSelectedCount = computed(() => this._selectedBlockedTickets().size);\n\n readonly selectedTicketIds = computed<Set<PerformanceTicket>>(() => this._selectedTickets());\n\n readonly selectedBlockedTicketIds = computed<number[]>(() =>\n this.selectedBlockedTickets().map((t) => t.id),\n );\n\n readonly selectedTicketIdList = computed<number[]>(() => this.selectedTickets().map((t) => t.id));\n\n // Agrupa los tickets seleccionados de una \"Zona de público\" en un solo item\n // (con element_qty) para el resumen de selección; asientos y mesas se listan\n // individualmente, igual que antes.\n readonly summaryItems = computed<PerformanceTicket[]>(() => {\n const zoneGroups = new Map<number, PerformanceTicket[]>();\n const result: PerformanceTicket[] = [];\n\n for (const ticket of this.selectedTickets()) {\n if (ticket.element_type === RoomMapElementType.ZONE) {\n const group = zoneGroups.get(ticket.room_map_element_id) ?? [];\n group.push(ticket);\n zoneGroups.set(ticket.room_map_element_id, group);\n } else {\n result.push(ticket);\n }\n }\n\n for (const group of zoneGroups.values()) {\n result.push({ ...group[0], element_qty: group.length });\n }\n\n return result;\n });\n\n readonly products = computed(() => this._products());\n\n readonly productQuantities = computed(() => this._productQuantities());\n\n readonly selectedProductEntries = computed<{ id: number; quantity: number }[]>(() => {\n const entries: { id: number; quantity: number }[] = [];\n this._productQuantities().forEach((quantity, id) => {\n if (quantity > 0) {\n entries.push({ id, quantity });\n }\n });\n return entries;\n });\n\n readonly selectedProductCount = computed(() => this.selectedProductEntries().length);\n\n readonly serviceFee = computed(() => {\n return Number(this.bookingDataService.show()?.service_fee ?? '0');\n });\n\n setTickets(tickets: PerformanceTicket[]): void {\n this._allTickets.set(tickets);\n }\n\n /** Aplica actualizaciones de estado recibidas por SSE (ver\n * SeatAvailabilitySseService). Muta los tickets existentes EN VEZ de\n * reemplazarlos por objetos nuevos: `_selectedTickets`/\n * `_selectedBlockedTickets` son Sets de referencias de objeto, no de ids,\n * así que reemplazar el array rompería la selección activa del usuario. */\n applySeatStatusUpdates(updates: SeatStatusUpdate[]): void {\n if (!updates.length) return;\n\n const updatesById = new Map(updates.map((u) => [u.id, u]));\n const current = this._allTickets();\n let changed = false;\n\n for (const ticket of current) {\n const update = updatesById.get(ticket.id);\n if (!update) continue;\n if (ticket.status !== update.status || ticket.reserved_until !== update.reserved_until) {\n ticket.status = update.status;\n ticket.reserved_until = update.reserved_until;\n changed = true;\n }\n }\n\n if (changed) {\n // Misma referencia de cada ticket, solo un array nuevo para disparar\n // la señal (Angular signals compara por referencia del array, no\n // hace deep-diff de su contenido).\n this._allTickets.set([...current]);\n }\n }\n\n setProducts(products: Product[]): void {\n this._products.set(products);\n }\n\n updateProductQuantity(productId: number, delta: number): void {\n this._productQuantities.update((map) => {\n const next = new Map(map);\n const current = next.get(productId) ?? 0;\n const newQty = Math.max(0, current + delta);\n if (newQty === 0) {\n next.delete(productId);\n } else {\n next.set(productId, newQty);\n }\n return next;\n });\n }\n\n getProductQuantity(productId: number): number {\n return this._productQuantities().get(productId) ?? 0;\n }\n\n private getListByStatus(\n ticket: PerformanceTicket,\n ): WritableSignal<Set<PerformanceTicket>> | null {\n const lists: { [x: string]: WritableSignal<Set<PerformanceTicket>> } = {\n [PerformanceTicketStatus.BLOCKED]: this._selectedBlockedTickets,\n [PerformanceTicketStatus.AVAILABLE]: this._selectedTickets,\n };\n\n return lists[ticket.status] ?? null;\n }\n\n setSelectedTickets(tickets: PerformanceTicket[]): void {\n this._selectedTickets.set(new Set(tickets));\n }\n\n toggle(ticket: PerformanceTicket): void {\n const list = this.getListByStatus(ticket);\n if (!list) return;\n\n const willAdd = !list().has(ticket);\n if (list === this._selectedTickets && willAdd && !this.canAddMoreToSelection(1)) {\n this.notifyPurchaseLimitReached();\n return;\n }\n\n list.update((ids) => {\n const next = new Set(ids);\n if (next.has(ticket)) {\n next.delete(ticket);\n } else {\n next.add(ticket);\n }\n return next;\n });\n }\n\n select(ticket: PerformanceTicket): void {\n const list = this.getListByStatus(ticket);\n if (!list) return;\n\n if (\n list === this._selectedTickets &&\n !list().has(ticket) &&\n !this.canAddMoreToSelection(1)\n ) {\n this.notifyPurchaseLimitReached();\n return;\n }\n\n list.update((ids) => {\n const next = new Set(ids);\n next.add(ticket);\n return next;\n });\n }\n\n deselect(ticket: PerformanceTicket): void {\n const list = this.getListByStatus(ticket);\n\n if (list) {\n list.update((ids) => {\n const next = new Set(ids);\n next.delete(ticket);\n return next;\n });\n }\n }\n\n clearBlockedSelection(): void {\n this._selectedBlockedTickets.set(new Set());\n }\n\n clearSelection(): void {\n this._selectedTickets.set(new Set());\n this._zoneQuantities.set(new Map());\n this._productQuantities.set(new Map());\n this.selectionDetailsService.clearSelection();\n this.selectionDiscountService.clearSelection();\n }\n\n isSelected(ticket: PerformanceTicket): boolean {\n return this._selectedTickets().has(ticket);\n }\n\n // Se llama tanto al hacer click en el mapa como al pintar el resumen, así que\n // sincroniza siempre el tope con la disponibilidad más reciente, preservando\n // la cantidad ya seleccionada.\n initZoneQuantity(elementId: number, maxCapacity: number): void {\n this._zoneQuantities.update((map) => {\n const next = new Map(map);\n const existing = next.get(elementId);\n next.set(elementId, {\n elementId,\n selectedCount: existing?.selectedCount ?? 0,\n maxCapacity,\n });\n return next;\n });\n }\n\n getZoneMax(elementId: number): number {\n return this._zoneQuantities().get(elementId)?.maxCapacity ?? 0;\n }\n\n getZoneSelectedCount(elementId: number): number {\n return this._zoneQuantities().get(elementId)?.selectedCount ?? 0;\n }\n\n // Fija la cantidad seleccionada de una zona a un valor absoluto (lo que emite\n // el number-input del resumen), reutilizando el clamp/validación de disponibilidad\n // que ya hace adjustZoneQuantity en vez de duplicar esa lógica.\n setZoneQuantity(elementId: number, target: number): void {\n const current = this.getZoneSelectedCount(elementId);\n const delta = Math.max(0, Math.trunc(target)) - current;\n if (delta !== 0) {\n this.adjustZoneQuantity(elementId, delta);\n }\n }\n\n adjustZoneQuantity(elementId: number, delta: number): void {\n if (delta > 0) {\n const allowance = this.remainingSelectionAllowance();\n if (allowance <= 0) {\n this.notifyPurchaseLimitReached();\n return;\n }\n delta = Math.min(delta, allowance);\n }\n\n const zoneTickets = this._allTickets()\n .filter((t) => t.room_map_element_id === elementId)\n .sort((a, b) => ((a.seat_label || '') < (b.seat_label || '') ? -1 : 1));\n\n this._zoneQuantities.update((map) => {\n const next = new Map(map);\n const current = next.get(elementId);\n if (!current) return next;\n\n const newCount = Math.max(0, Math.min(current.maxCapacity, current.selectedCount + delta));\n next.set(elementId, { ...current, selectedCount: newCount });\n return next;\n });\n\n const state = this._zoneQuantities().get(elementId);\n const currentCount = state ? state.selectedCount : 0;\n\n this._selectedTickets.update((ids) => {\n const next = new Set(ids);\n const nowSelected = zoneTickets.filter((t) => next.has(t));\n\n if (delta > 0) {\n const toSelect = zoneTickets.find((t) => !next.has(t) && t.status === 'available');\n if (toSelect) next.add(toSelect);\n } else if (delta < 0 && nowSelected.length > 0) {\n const lastSelected = nowSelected[nowSelected.length - 1];\n next.delete(lastSelected);\n }\n\n return next;\n });\n }\n\n // --- Tope de entradas por compra (solo activo si PurchaseLimitService tiene\n // un máximo cargado; el backoffice nunca lo carga, así que queda ilimitado) ---\n\n private remainingSelectionAllowance(): number {\n const max = this.purchaseLimitService.maxTicketsPerSelection();\n if (max === null) return Infinity;\n return Math.max(0, max - this.selectedCount());\n }\n\n private canAddMoreToSelection(additional: number): boolean {\n return additional <= this.remainingSelectionAllowance();\n }\n\n private notifyPurchaseLimitReached(): void {\n const max = this.purchaseLimitService.maxTicketsPerSelection();\n this.feedbackModalService.addModal({\n id: 'purchase-limit-reached',\n type: 'warning',\n title: 'Límite de entradas por compra',\n message:\n max != null\n ? `Puedes seleccionar hasta ${max} entradas por compra. Si necesitas más, contáctanos para coordinar tu compra directamente con el teatro.`\n : 'Has alcanzado el máximo de entradas permitido para esta compra.',\n showCloseButton: true,\n isOpen: signal(true),\n });\n }\n\n getZoneTickets(elementId: number): PerformanceTicket[] {\n return this._allTickets()\n .filter((t) => t.room_map_element_id === elementId)\n .sort((a, b) => ((a.seat_label || '') < (b.seat_label || '') ? -1 : 1));\n }\n\n buildTooltipData(\n ticket: PerformanceTicket,\n elementName: string,\n seatLabel: string | null,\n x: number,\n y: number,\n ): TicketMapTooltipData {\n return {\n x,\n y,\n elementName,\n seatLabel,\n price: Number(ticket.normal_price ?? '0'),\n status: ticket.status,\n statusLabel: TICKET_STATUS_LABELS[ticket.status] || ticket.status,\n statusColor: TICKET_STATUS_COLORS[ticket.status] || '#999',\n isSelected: this.isSelected(ticket),\n ticketId: ticket.id,\n };\n }\n\n buildReservePerformanceDto(\n paymentMethod = 'cash',\n termsAccepted = true,\n dataProcessingAccepted = true,\n ): ReservePerformanceDto {\n const billing = this.selectionDetailsService.billingInformation();\n\n return {\n ticket_ids: this.selectedTicketIdList(),\n coupon_code: this.selectionDiscountService.coupon()?.code ?? undefined,\n gift_bond_code: this.selectionDiscountService.giftBondCode() ?? undefined,\n corporate_bond_code: this.selectionDiscountService.corporateBondCode() ?? undefined,\n payment_method: paymentMethod,\n billing: {\n first_name: billing?.first_name ?? '',\n last_name: billing?.last_name ?? '',\n email: billing?.email ?? '',\n mobile: billing?.mobile ?? '',\n document_type: billing?.document_type ?? '',\n document_number: String(billing?.document_number ?? ''),\n address: billing?.address ?? '',\n city_id: billing?.city_id ?? 0,\n postal_code: billing?.postal_code ?? undefined,\n address_notes: undefined,\n terms_accepted: termsAccepted,\n data_processing_accepted: dataProcessingAccepted,\n comments: undefined,\n },\n };\n }\n}\n","import { Injectable, computed, inject } from '@angular/core';\nimport { PerformanceBookingDataService } from './performance-booking-data.service';\nimport { TicketSelectionService } from './ticket-selection.service';\nimport { TicketSelectionDiscountService } from './ticket-selection-discount.service';\n\n@Injectable({ providedIn: 'root' })\nexport class TicketSelectionTotalsService {\n private bookingDataService = inject(PerformanceBookingDataService);\n private selectionService = inject(TicketSelectionService);\n private selectionDiscountService = inject(TicketSelectionDiscountService);\n\n readonly selectedProductEntries = computed<{ id: number; quantity: number }[]>(() => {\n const entries: { id: number; quantity: number }[] = [];\n this.selectionService.productQuantities().forEach((quantity, id) => {\n if (quantity > 0) {\n entries.push({ id, quantity });\n }\n });\n return entries;\n });\n\n readonly selectedProductCount = computed(() => this.selectedProductEntries().length);\n\n readonly productSubtotal = computed(() => {\n let total = 0;\n const products = this.selectionService.products();\n this.selectionService.productQuantities().forEach((quantity, id) => {\n if (quantity > 0) {\n const product = products.find((p) => p.id === id);\n if (product) {\n total += product.price * quantity;\n }\n }\n });\n return total;\n });\n\n readonly ticketSubtotal = computed(() => {\n return this.selectionService.selectedTickets().reduce((sum, ticket) => {\n return sum + Number(ticket?.normal_price || '0');\n }, 0);\n });\n\n /**\n * Tarifa de servicio del Show cobrada una vez por cada boleta seleccionada\n * (no un monto fijo por orden), igual que el backend\n * (`create-pending-order.service.ts`): 2 boletas x $10.000 = $20.000.\n * Ya refleja la exoneración de VIP/Abono (retorna 0 en ese caso).\n */\n readonly serviceFee = computed(() => {\n if (this.selectionDiscountService.selectedDiscount()?.serviceFeeExempt) {\n return 0;\n }\n return this.rawServiceFee();\n });\n\n /**\n * Valor \"crudo\" de la tarifa de servicio (sin exonerar), para poder\n * mostrar explícitamente en la UI el \"antes\" cuando una membresía o\n * abono la exonera (en vez de perder el dato mostrando solo $0).\n */\n readonly rawServiceFee = computed(() => {\n const feePerTicket = Number(this.bookingDataService.show()?.service_fee ?? '0');\n return feePerTicket * this.selectionService.selectedCount();\n });\n\n readonly isServiceFeeExempt = computed(() => {\n return !!this.selectionDiscountService.selectedDiscount()?.serviceFeeExempt;\n });\n\n /**\n * El descuento (cupón, bono corporativo, bono de regalo, VIP, abono) se\n * calcula UNICAMENTE sobre el valor de las boletas: los productos nunca\n * reciben descuento (ver orders-discounts-applications.md).\n */\n readonly discountAmount = computed<number | null>(() => {\n const discount = this.selectionDiscountService.selectedDiscount();\n if (!discount) {\n return null;\n }\n\n const ticketSubtotal = this.ticketSubtotal();\n\n if (discount.discountType === 'percentage') {\n return (ticketSubtotal * discount.value) / 100;\n }\n\n return Math.min(discount.value, ticketSubtotal);\n });\n\n subtotalValue(): number {\n return this.ticketSubtotal() + this.productSubtotal();\n }\n\n totalValue(): number {\n if (this.subtotalValue() < 1) {\n return 0;\n }\n\n return this.subtotalValue() + this.rawServiceFee();\n }\n\n totalDiscounted(): number | null {\n if (this.subtotalValue() < 1) {\n return null;\n }\n\n const discountAmount = this.discountAmount();\n const isServiceFeeExempt = this.isServiceFeeExempt();\n\n if (!discountAmount && !isServiceFeeExempt) {\n return null;\n }\n\n // Los productos siempre se cobran a precio de lista: el descuento solo\n // reduce el valor de las boletas.\n const ticketSubtotalDiscounted = Math.max(this.ticketSubtotal() - (discountAmount ?? 0), 0);\n\n let total = ticketSubtotalDiscounted + this.productSubtotal() + this.serviceFee();\n\n if (total < 0) {\n total = 0;\n }\n\n return total;\n }\n}\n","import { Injectable, signal, inject } from '@angular/core';\nimport { Stage } from 'konva/lib/Stage';\nimport { PerformanceBookingDataService } from './performance-booking-data.service';\nimport { TicketMapZoomConfig } from '../../interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class TicketMapZoomService {\n readonly currentZoom = signal<number>(1);\n private stage?: Stage;\n private bookingDataService = inject(PerformanceBookingDataService);\n\n private readonly defaultConfig: TicketMapZoomConfig = {\n minZoom: 0.3,\n maxZoom: 5,\n zoomStep: 0.1,\n scaleBy: 1.1,\n };\n\n constructor() {}\n\n /**\n * Set the Konva stage instance\n */\n setStage(stage: Stage): void {\n this.stage = stage;\n }\n\n /**\n * Zoom in by one step\n */\n zoomIn(): void {\n if (!this.stage) return;\n\n const newScale = Math.min(\n this.defaultConfig.maxZoom,\n this.currentZoom() + this.defaultConfig.zoomStep,\n );\n this.applyZoom(newScale);\n }\n\n /**\n * Zoom out by one step\n */\n zoomOut(): void {\n if (!this.stage) return;\n\n const newScale = Math.max(\n this.defaultConfig.minZoom,\n this.currentZoom() - this.defaultConfig.zoomStep,\n );\n this.applyZoom(newScale);\n }\n\n /**\n * Reset zoom to 100%\n */\n resetZoom(): void {\n if (!this.stage) return;\n this.applyZoom(1);\n }\n\n /**\n * Get current zoom as percentage string\n */\n getZoomPercentage(): string {\n return Math.round(this.currentZoom() * 100) + '%';\n }\n\n /**\n * Get current zoom value\n */\n getCurrentZoom(): number {\n return this.currentZoom();\n }\n\n /**\n * Apply zoom with center point\n */\n private applyZoom(newScale: number): void {\n if (!this.stage) return;\n\n const oldScale = this.stage.scaleX();\n const stageCenter = {\n x: this.stage.width() / 2,\n y: this.stage.height() / 2,\n };\n\n const mousePointTo = {\n x: (stageCenter.x - this.stage.x()) / oldScale,\n y: (stageCenter.y - this.stage.y()) / oldScale,\n };\n\n this.applyZoomScale(newScale, stageCenter, mousePointTo);\n }\n\n /**\n * Apply zoom scale with specific center point\n */\n private applyZoomScale(\n newScale: number,\n centerPoint: { x: number; y: number },\n mousePointTo: { x: number; y: number },\n ): void {\n if (!this.stage) return;\n\n this.stage.scaleX(newScale);\n this.stage.scaleY(newScale);\n\n const newPos = {\n x: centerPoint.x - mousePointTo.x * newScale,\n y: centerPoint.y - mousePointTo.y * newScale,\n };\n\n this.stage.position(newPos);\n this.stage.batchDraw();\n\n this.currentZoom.set(newScale);\n this.bookingDataService.updateStageConfig({\n scaleX: newScale,\n scaleY: newScale,\n x: this.stage.x(),\n y: this.stage.y(),\n });\n }\n\n /**\n * Handle mouse wheel zoom toward the cursor position\n */\n handleWheelZoom(deltaY: number): void {\n if (!this.stage) return;\n\n const oldScale = this.currentZoom();\n const pointer = this.stage.getPointerPosition();\n if (!pointer) return;\n\n const scaleBy = this.defaultConfig.scaleBy;\n const direction = deltaY > 0 ? -1 : 1;\n const newScale = direction > 0 ? oldScale * scaleBy : oldScale / scaleBy;\n\n if (newScale < this.defaultConfig.minZoom || newScale > this.defaultConfig.maxZoom) return;\n\n const mousePointTo = {\n x: (pointer.x - this.stage.x()) / oldScale,\n y: (pointer.y - this.stage.y()) / oldScale,\n };\n\n this.applyZoomScale(newScale, pointer, mousePointTo);\n }\n\n /**\n * Fit the content bounds to fill the stage container\n */\n fitToContainer(padding: number = 24): void {\n if (!this.stage) return;\n\n const containerEl = this.stage.container().parentElement;\n if (!containerEl) return;\n\n const containerWidth = containerEl.offsetWidth;\n const containerHeight = containerEl.offsetHeight;\n if (containerWidth === 0 || containerHeight === 0) return;\n\n const renderData = this.bookingDataService.renderData();\n if (renderData.length === 0) return;\n\n let minX = Infinity,\n minY = Infinity;\n let maxX = -Infinity,\n maxY = -Infinity;\n\n for (const el of renderData) {\n const c = el.shapeConfig;\n if (c['x'] !== undefined) {\n minX = Math.min(minX, c['x']);\n maxX = Math.max(maxX, c['x'] + (c['width'] || 0));\n }\n if (c['y'] !== undefined) {\n minY = Math.min(minY, c['y']);\n maxY = Math.max(maxY, c['y'] + (c['height'] || 0));\n }\n }\n\n if (!isFinite(minX)) return;\n\n const contentW = maxX - minX;\n const contentH = maxY - minY;\n if (contentW <= 0 || contentH <= 0) return;\n\n setTimeout(() => {\n if (this.stage) {\n this.fitToBounds(\n { x: minX, y: minY, width: contentW, height: contentH },\n containerWidth,\n containerHeight,\n padding,\n );\n }\n });\n }\n\n /**\n * Get current stage position\n */\n getStagePosition(): { x: number; y: number } {\n if (!this.stage) return { x: 0, y: 0 };\n return this.stage.position();\n }\n\n /**\n * Set stage position (useful for programmatic panning)\n */\n setStagePosition(position: { x: number; y: number }): void {\n if (!this.stage) return;\n this.stage.position(position);\n this.stage.batchDraw();\n }\n\n /**\n * Fit the stage content bounds to the container, centering and scaling\n * to show the full content with optional padding.\n */\n fitToBounds(\n contentBounds: { x: number; y: number; width: number; height: number },\n containerWidth: number,\n containerHeight: number,\n padding: number = 24,\n ): void {\n if (!this.stage) return;\n\n const { x, y, width, height } = contentBounds;\n const contentW = Math.max(width, 1);\n const contentH = Math.max(height, 1);\n\n const scaleX = (containerWidth - padding * 2) / contentW;\n const scaleY = (containerHeight - padding * 2) / contentH;\n const newScale = Math.min(scaleX, scaleY);\n\n const offsetX = (containerWidth - contentW * newScale) / 2;\n const offsetY = (containerHeight - contentH * newScale) / 2;\n\n this.stage.scaleX(newScale);\n this.stage.scaleY(newScale);\n this.stage.position({\n x: offsetX - x * newScale,\n y: offsetY - y * newScale,\n });\n this.stage.batchDraw();\n\n this.currentZoom.set(newScale);\n this.bookingDataService.updateStageConfig({\n scaleX: newScale,\n scaleY: newScale,\n x: this.stage.x(),\n y: this.stage.y(),\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BaseModalService } from '../base-modal.service';\n\n@Injectable({ providedIn: 'root' })\nexport class ConfirmationOrderModalService extends BaseModalService {}\n","import { Inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { ApiService } from '../api.service';\nimport { PerformanceBookingDataService } from './performance-booking-data.service';\nimport { TicketSelectionService } from './ticket-selection.service';\nimport { TICKERA_COMPONENTS_CONFIG } from '../../config/tickera-components.config';\nimport { TickeraComponentsConfig } from '../../interfaces/tickera-components-config.interface';\nimport { PERFORMANCES_API_ROUTES } from '../../constants/api-routes/performances-api.routes';\nimport { SeatEventMessage } from '../../interfaces';\n\nconst RECONNECT_BASE_DELAY_MS = 1000;\nconst RECONNECT_MAX_DELAY_MS = 15000;\n\n/**\n * Transporte SSE del estado de asientos en vivo. Es el único punto de la\n * librería que sabe de EventSource/HTTP para esto — aplica cada snapshot\n * recibido sobre PerformanceBookingDataService (repinta el mapa) y\n * TicketSelectionService (mantiene la disponibilidad al día para\n * validaciones de zona/límite de compra).\n *\n * Cada intento de reconexión pide un ticket NUEVO (el anterior es de un\n * solo uso y expira a los ~30s), con backoff exponencial acotado.\n */\n@Injectable({ providedIn: 'root' })\nexport class SeatAvailabilitySseService {\n private eventSource: EventSource | null = null;\n private reconnectTimer: ReturnType<typeof setTimeout> | null = null;\n private reconnectAttempts = 0;\n private currentPerformanceId: number | null = null;\n private currentIsAdmin = false;\n private stopped = true;\n\n constructor(\n private apiService: ApiService,\n private bookingDataService: PerformanceBookingDataService,\n private ticketSelectionService: TicketSelectionService,\n @Inject(PLATFORM_ID) private platformId: Object,\n @Inject(TICKERA_COMPONENTS_CONFIG) private config: TickeraComponentsConfig,\n ) {}\n\n connect(performanceId: number, opts: { isAdmin?: boolean } = {}): void {\n if (!isPlatformBrowser(this.platformId) || !performanceId) return;\n\n this.disconnect();\n this.stopped = false;\n this.currentPerformanceId = performanceId;\n this.currentIsAdmin = !!opts.isAdmin;\n this.reconnectAttempts = 0;\n this.openConnection();\n }\n\n disconnect(): void {\n this.stopped = true;\n this.currentPerformanceId = null;\n if (this.reconnectTimer) {\n clearTimeout(this.reconnectTimer);\n this.reconnectTimer = null;\n }\n this.eventSource?.close();\n this.eventSource = null;\n }\n\n private openConnection(): void {\n const performanceId = this.currentPerformanceId;\n if (!performanceId || this.stopped) return;\n\n const ticketRoute = this.currentIsAdmin\n ? PERFORMANCES_API_ROUTES.seatEventsTicketAdmin(performanceId)\n : PERFORMANCES_API_ROUTES.seatEventsTicket(performanceId);\n\n this.apiService\n .post<{ data: { ticket: string; expires_in: number } }>(ticketRoute, {})\n .subscribe({\n next: (res) => this.startStream(performanceId, res?.data?.ticket),\n error: () => this.scheduleReconnect(),\n });\n }\n\n private startStream(performanceId: number, ticket: string | undefined): void {\n if (!ticket || this.stopped || this.currentPerformanceId !== performanceId) return;\n\n const route = PERFORMANCES_API_ROUTES.seatEvents(performanceId);\n const url = `${this.config.apiUrl}${route}?ticket=${encodeURIComponent(ticket)}`;\n const eventSource = new EventSource(url);\n this.eventSource = eventSource;\n\n eventSource.onmessage = (event: MessageEvent<string>) => {\n this.reconnectAttempts = 0;\n try {\n const message = JSON.parse(event.data) as SeatEventMessage;\n if (message.type === 'snapshot') {\n this.bookingDataService.applySeatStatusUpdates(message.tickets);\n this.ticketSelectionService.applySeatStatusUpdates(message.tickets);\n }\n // 'heartbeat' solo mantiene viva la conexión a través de proxies, se ignora.\n } catch {\n // Mensaje inválido: se ignora, el próximo snapshot vuelve a sincronizar todo.\n }\n };\n\n eventSource.onerror = () => {\n eventSource.close();\n if (this.eventSource === eventSource) this.eventSource = null;\n this.scheduleReconnect();\n };\n }\n\n private scheduleReconnect(): void {\n if (this.stopped || !this.currentPerformanceId) return;\n\n const delay = Math.min(\n RECONNECT_BASE_DELAY_MS * Math.pow(2, this.reconnectAttempts),\n RECONNECT_MAX_DELAY_MS,\n );\n this.reconnectAttempts++;\n\n this.reconnectTimer = setTimeout(() => {\n this.reconnectTimer = null;\n this.openConnection();\n }, delay);\n }\n}\n","import { Inject, Injectable, PLATFORM_ID, signal } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { ApiService } from '../api.service';\nimport { FeedbackModalService } from '../feedback-modal.service';\nimport { TICKERA_COMPONENTS_CONFIG } from '../../config/tickera-components.config';\nimport { TickeraComponentsConfig } from '../../interfaces/tickera-components-config.interface';\nimport { ADMISSION_API_ROUTES } from '../../constants/api-routes/admission-api.routes';\nimport { AdmissionEventMessage, AdmissionJoinResponse } from '../../interfaces';\n\nconst ADMISSION_MODAL_ID = 'admission-queue';\nconst RECONNECT_BASE_DELAY_MS = 1000;\nconst RECONNECT_MAX_DELAY_MS = 15000;\n\n/**\n * Cliente de la cola adaptativa (fase 4). No decide CUÁNDO se activa la\n * cola — eso es enteramente responsabilidad del backend (AdmissionGuard +\n * LoadBasedAdmissionPolicy) — este servicio solo sabe reaccionar al 429\n * `ADMISSION_QUEUE_REQUIRED` que ese guard puede devolver en\n * /carts/reserve y /orders/checkout.\n *\n * Uso típico en el punto de llamada (ver reservation-confirmation y\n * checkout-form): reintentar la request original dentro de un catchError:\n *\n * this.cartService.reserve(dto).pipe(\n * catchError((err) => {\n * if (!this.admissionQueueService.isAdmissionRequired(err)) return throwError(() => err);\n * const performanceId = this.admissionQueueService.getPerformanceId(err)!;\n * return this.admissionQueueService.waitForAdmission(performanceId).pipe(\n * switchMap(() => this.cartService.reserve(dto)),\n * );\n * }),\n * )\n *\n * Reutiliza el mismo transporte SSE con ticket de un solo uso de la fase 3\n * (ver SeatAvailabilitySseService) — acá el ticket llega directo en la\n * respuesta de /join, así que no hace falta un endpoint de ticket aparte;\n * cada reintento de conexión vuelve a hacer /join (el ticket anterior es\n * de un solo uso y expira a los ~30s).\n */\n@Injectable({ providedIn: 'root' })\nexport class AdmissionQueueService {\n constructor(\n private apiService: ApiService,\n private feedbackModalService: FeedbackModalService,\n @Inject(PLATFORM_ID) private platformId: Object,\n @Inject(TICKERA_COMPONENTS_CONFIG) private config: TickeraComponentsConfig,\n ) {}\n\n /** True si el error es el 429 específico de \"alta demanda, únete a la fila\". */\n isAdmissionRequired(error: unknown): error is HttpErrorResponse {\n return (\n error instanceof HttpErrorResponse &&\n error.status === 429 &&\n (error.error as any)?.error?.code === 'ADMISSION_QUEUE_REQUIRED'\n );\n }\n\n getPerformanceId(error: HttpErrorResponse): number | null {\n const id = (error.error as any)?.error?.performance_id;\n return typeof id === 'number' ? id : null;\n }\n\n /**\n * Se une a la fila de `performanceId` y completa (emite una vez y cierra)\n * en cuanto el usuario queda admitido. Mientras espera, muestra un modal\n * ligero con la posición vigente, actualizado por SSE. Si quien se\n * suscribió se desuscribe antes de ser admitido (el usuario navega a\n * otro lado, cierra el modal, o el componente se destruye), libera el\n * lugar en la fila con /leave.\n */\n waitForAdmission(performanceId: number): Observable<void> {\n return new Observable<void>((subscriber) => {\n if (!isPlatformBrowser(this.platformId)) {\n subscriber.complete();\n return;\n }\n\n let eventSource: EventSource | null = null;\n let reconnectTimer: ReturnType<typeof setTimeout> | null = null;\n let reconnectAttempts = 0;\n let settled = false;\n let joined = false;\n\n const closeStream = (): void => {\n if (reconnectTimer) {\n clearTimeout(reconnectTimer);\n reconnectTimer = null;\n }\n eventSource?.close();\n eventSource = null;\n };\n\n const showWaitingModal = (position: number | null): void => {\n this.feedbackModalService.addModal({\n id: ADMISSION_MODAL_ID,\n type: 'loading',\n title: 'Hay mucha demanda en este momento',\n message:\n position && position > 0\n ? `Estás en la fila, posición ${position}. Te avisamos apenas te toque.`\n : 'Estamos verificando tu turno, espera un momento…',\n isOpen: signal(true),\n showCloseButton: false,\n showHeader: false,\n });\n };\n\n const finish = (): void => {\n if (settled) return;\n settled = true;\n closeStream();\n this.feedbackModalService.removeModal(ADMISSION_MODAL_ID);\n subscriber.next();\n subscriber.complete();\n };\n\n const scheduleReconnect = (): void => {\n if (settled) return;\n const delay = Math.min(\n RECONNECT_BASE_DELAY_MS * Math.pow(2, reconnectAttempts),\n RECONNECT_MAX_DELAY_MS,\n );\n reconnectAttempts++;\n reconnectTimer = setTimeout(() => {\n reconnectTimer = null;\n doJoin();\n }, delay);\n };\n\n const startStream = (ticket: string): void => {\n if (settled) return;\n const route = ADMISSION_API_ROUTES.events(performanceId);\n const url = `${this.config.apiUrl}${route}?ticket=${encodeURIComponent(ticket)}`;\n const es = new EventSource(url);\n eventSource = es;\n\n es.onmessage = (event: MessageEvent<string>) => {\n reconnectAttempts = 0;\n try {\n const message = JSON.parse(event.data) as AdmissionEventMessage;\n if (message.type !== 'status') return;\n if (message.active) {\n finish();\n return;\n }\n showWaitingModal(message.position);\n } catch {\n // Mensaje inválido: se ignora, el próximo evento vuelve a sincronizar.\n }\n };\n\n es.onerror = () => {\n es.close();\n if (eventSource === es) eventSource = null;\n scheduleReconnect();\n };\n };\n\n const doJoin = (): void => {\n this.apiService\n .post<AdmissionJoinResponse>(ADMISSION_API_ROUTES.join(performanceId), {})\n .subscribe({\n next: (res) => {\n joined = true;\n if (res.active) {\n finish();\n return;\n }\n showWaitingModal(res.position);\n startStream(res.ticket);\n },\n error: () => scheduleReconnect(),\n });\n };\n\n doJoin();\n\n return () => {\n if (settled) return;\n closeStream();\n this.feedbackModalService.removeModal(ADMISSION_MODAL_ID);\n if (joined) {\n this.apiService.post(ADMISSION_API_ROUTES.leave(performanceId), {}).subscribe({ error: () => {} });\n }\n };\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { PERFORMANCES_API_ROUTES } from '../../constants';\nimport { QrTokenResponse } from '../../interfaces';\nimport { ApiService } from '../api.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TicketQrService {\n constructor(private apiService: ApiService) {}\n\n fetchQrToken(ticketUuid: string): Observable<QrTokenResponse> {\n return this.apiService.get<QrTokenResponse>(PERFORMANCES_API_ROUTES.ticketQrToken(ticketUuid));\n }\n\n fetchMyQrToken(ticketUuid: string): Observable<QrTokenResponse> {\n return this.apiService.get<QrTokenResponse>(PERFORMANCES_API_ROUTES.myQrToken(ticketUuid));\n }\n\n downloadTicketPdf(ticketUuid: string): Observable<Blob> {\n return this.apiService.getBlob(PERFORMANCES_API_ROUTES.ticketPdf(ticketUuid));\n }\n\n downloadMyTicketPdf(ticketUuid: string): Observable<Blob> {\n return this.apiService.getBlob(PERFORMANCES_API_ROUTES.myTicketPdf(ticketUuid));\n }\n}\n","import { Injectable, signal, WritableSignal } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class TicketQrModalService {\n isOpen: WritableSignal<boolean> = signal(false);\n ticketUuid: WritableSignal<string | null> = signal(null);\n ticketDescription: WritableSignal<string | null> = signal(null);\n\n open(ticketUuid: string, description?: string) {\n this.ticketUuid.set(ticketUuid);\n this.ticketDescription.set(description ?? null);\n this.isOpen.set(true);\n }\n\n close() {\n this.isOpen.set(false);\n this.ticketUuid.set(null);\n this.ticketDescription.set(null);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ApiService } from './api.service';\nimport {\n VipCardResponse,\n VipCardsResponse,\n VipOrderResponse,\n VipTransactionsResponse,\n} from '../interfaces/vip-cards/vip-cards-response.interface';\nimport { VipCard } from '../interfaces/vip-cards/vip-card.interface';\nimport { VIP_CARDS_API_ROUTES } from '../constants/api-routes/vip-cards-api.routes';\nimport { VipCardStatus } from '../enums/vip-cards/vip-card-status.enum';\nimport { FetchVipCardsParams } from '../interfaces';\nimport { ActivateVipCardParams } from '../interfaces/memberships/activate-vip-params.interface';\nimport { transformUrlParams } from '../helpers/transform-url-params.helper';\n\n@Injectable({ providedIn: 'root' })\nexport class VipCardService {\n constructor(private apiService: ApiService) {}\n\n findMy(): Observable<{ data: VipCard | null }> {\n return this.apiService.get<{ data: VipCard | null }>(VIP_CARDS_API_ROUTES.findMy);\n }\n\n activate(data: any): Observable<VipOrderResponse> {\n return this.apiService.post<VipOrderResponse>(VIP_CARDS_API_ROUTES.activate, data);\n }\n\n recharge(data: any): Observable<VipOrderResponse> {\n return this.apiService.post<VipOrderResponse>(VIP_CARDS_API_ROUTES.recharge, data);\n }\n\n fetchAll(params: FetchVipCardsParams = {}): Observable<VipCardsResponse> {\n const queryParams = transformUrlParams(params);\n const queryString = queryParams.toString();\n const route = `${VIP_CARDS_API_ROUTES.findAll}${queryString ? '?' + queryString : ''}`;\n return this.apiService.get<VipCardsResponse>(route);\n }\n\n fetchOneById(id: number): Observable<VipCardResponse> {\n return this.apiService.get<VipCardResponse>(VIP_CARDS_API_ROUTES.findOne(id));\n }\n\n activateAdmin(data: ActivateVipCardParams): Observable<VipOrderResponse> {\n return this.apiService.post<VipOrderResponse>(VIP_CARDS_API_ROUTES.activateAdmin, data);\n }\n\n rechargeAdmin(id: number, data: any): Observable<VipOrderResponse> {\n return this.apiService.post<VipOrderResponse>(VIP_CARDS_API_ROUTES.rechargeAdmin(id), data);\n }\n\n updateStatus(id: number, status: VipCardStatus): Observable<VipCardResponse> {\n return this.apiService.patch<VipCardResponse>(VIP_CARDS_API_ROUTES.updateStatus(id), {\n status,\n });\n }\n\n updateTerms(id: number): Observable<VipCardResponse> {\n return this.apiService.patch<VipCardResponse>(VIP_CARDS_API_ROUTES.updateTerms(id), {});\n }\n\n fetchTransactions(id: number, page = 1, limit = 20): Observable<VipTransactionsResponse> {\n return this.apiService.get<VipTransactionsResponse>(\n `${VIP_CARDS_API_ROUTES.transactions(id)}?page=${page}&limit=${limit}`,\n );\n }\n}\n","import { Injectable, Signal, WritableSignal, computed, signal } from '@angular/core';\n\n/**\n * Servicio genérico de \"cambios pendientes\" para tablas con edición rápida\n * + guardado masivo (QTN-49, primer consumidor: Bonos de Regalo en\n * tickera-backoffice-frontend).\n *\n * IMPORTANTE: proveerlo a nivel de componente/página\n * (`providers: [PendingChangesService]` en el `@Component` que lo usa),\n * NUNCA en `providedIn: 'root'` — si no, dos tablas con edición rápida\n * abiertas al mismo tiempo (dos pestañas, o dos listados en la misma\n * sesión) compartirían el mismo estado de cambios pendientes. Mismo\n * criterio que ya sigue este repo con GiftBondService, provisto a nivel de\n * GiftBondDetailsComponent en vez de en 'root'.\n */\n@Injectable()\nexport class PendingChangesService<TValue = any> {\n private readonly changesSignal: WritableSignal<Map<number, TValue>> = signal(new Map());\n private readonly originalValues = new Map<number, TValue>();\n\n readonly changes: Signal<Map<number, TValue>> = this.changesSignal.asReadonly();\n readonly changeCount: Signal<number> = computed(() => this.changesSignal().size);\n readonly hasChanges: Signal<boolean> = computed(() => this.changesSignal().size > 0);\n\n /**\n * Registra (o actualiza) el cambio pendiente de `id`. `originalValue` es\n * el valor que tenía la fila antes de cualquier edición en esta sesión de\n * la tabla — solo se guarda la primera vez que se llama para ese id, así\n * que no importa pasarlo en cada llamada subsiguiente.\n *\n * Si `newValue` termina siendo igual al valor original, el id se\n * elimina automáticamente de los cambios pendientes (evita que quede\n * marcado como \"modificado\" un valor que el usuario cambió y luego\n * revirtió a mano).\n */\n setChange(id: number, originalValue: TValue, newValue: TValue): void {\n if (!this.originalValues.has(id)) {\n this.originalValues.set(id, originalValue);\n }\n\n const next = new Map(this.changesSignal());\n\n if (newValue === this.originalValues.get(id)) {\n next.delete(id);\n this.originalValues.delete(id);\n } else {\n next.set(id, newValue);\n }\n\n this.changesSignal.set(next);\n }\n\n getPendingValue(id: number): TValue | undefined {\n return this.changesSignal().get(id);\n }\n\n /** Descarta el cambio pendiente de una fila puntual (botón \"Deshacer\" por fila, si aplica). */\n discard(id: number): void {\n const next = new Map(this.changesSignal());\n next.delete(id);\n this.changesSignal.set(next);\n this.originalValues.delete(id);\n }\n\n /** Descarta todos los cambios pendientes sin guardar nada (botón \"Deshacer\" de la barra flotante). */\n discardAll(): void {\n this.changesSignal.set(new Map());\n this.originalValues.clear();\n }\n\n /** Llamar después de que el guardado en lote fue exitoso, para limpiar el estado. */\n clearAfterSave(): void {\n this.discardAll();\n }\n}\n","import { HttpInterceptorFn } from '@angular/common/http';\nimport { inject, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { TICKERA_COMPONENTS_CONFIG } from '../config/tickera-components.config';\nimport { TickeraComponentsConfig } from '../interfaces/tickera-components-config.interface';\n\nexport const authInterceptor: HttpInterceptorFn = (req, next) => {\n const platformId = inject(PLATFORM_ID);\n const config = inject(TICKERA_COMPONENTS_CONFIG) as TickeraComponentsConfig;\n\n if (isPlatformBrowser(platformId)) {\n const key = config.accessTokenKey ?? 'access_token';\n const token = localStorage.getItem(key);\n if (token) {\n req = req.clone({\n setHeaders: { Authorization: `Bearer ${token}` },\n });\n }\n }\n\n return next(req);\n};\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TippyDirective } from '@ngneat/helipopper';\n\n@Component({\n selector: 'app-button',\n standalone: true,\n imports: [CommonModule, TippyDirective],\n templateUrl: './app-button.component.html',\n styleUrl: './app-button.component.scss',\n})\nexport class AppButtonComponent {\n @Output() clicked = new EventEmitter<void>();\n @Input() disabled: boolean = false;\n @Input() loading: boolean = false;\n @Input() type: 'button' | 'submit' = 'button';\n @Input() variant: 'primary' | 'secondary' | 'tertiary' | 'success' | 'transparent' = 'primary';\n @Input() text: string = '';\n @Input() size: 'xs' | 'sm' | 'md' | 'lg' = 'md';\n @Input() loadingText: string = '';\n @Input() icon: string = '';\n @Input() tooltip: string = '';\n\n handleClick() {\n this.clicked.emit();\n }\n\n get buttonClasses(): string {\n return [\n 'btn',\n `btn-${this.variant}`,\n `btn-${this.size}`,\n this.disabled ? 'btn-disabled' : '',\n this.loading ? 'btn-loading' : '',\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n","<button\n [type]=\"type\"\n [disabled]=\"loading || disabled\"\n [class]=\"buttonClasses\"\n [tp]=\"tooltip\"\n [tpIsEnabled]=\"!!tooltip\"\n (click)=\"handleClick()\"\n>\n @if (icon && !loading) {\n <i class=\"btn-icon\" [ngClass]=\"icon\"></i>\n }\n\n @if (loading) {\n <i class=\"btn-icon btn-icon-spin ri-refresh-line\"></i>\n }\n\n {{ loading ? loadingText : text }}\n</button>\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslocoModule } from '@jsverse/transloco';\nimport { RouterLink, RouterModule } from '@angular/router';\nimport { TippyDirective } from '@ngneat/helipopper';\n\n@Component({\n selector: 'app-link-button',\n standalone: true,\n imports: [CommonModule, RouterLink, RouterModule, TranslocoModule, TippyDirective],\n templateUrl: './app-link-button.component.html',\n styleUrls: ['../app-button/app-button.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class AppLinkButtonComponent {\n @Input() disabled: boolean = false;\n @Input() loading: boolean = false;\n @Input() target: '_blank' | '_self' | '_parent' | '_top' = '_self';\n @Input() text: string = '';\n @Input() icon: string = '';\n @Input() loadingText: string = '';\n @Input() route: string = '';\n @Input() queryParams: Record<string, any> = {};\n @Input() size: 'xs' | 'sm' | 'md' | 'lg' = 'md';\n @Input() variant: 'primary' | 'secondary' | 'tertiary' | 'success' | 'transparent' = 'primary';\n @Input() tooltip: string = '';\n\n get buttonClasses(): string {\n return [\n 'btn',\n `btn-${this.variant}`,\n `btn-${this.size}`,\n this.disabled ? 'btn-disabled' : '',\n this.loading ? 'btn-loading' : '',\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n","<a\n class=\"{{ buttonClasses }}\"\n [routerLink]=\"!disabled ? route : null\"\n [queryParams]=\"queryParams\"\n [target]=\"target\"\n [tp]=\"tooltip\"\n [tpIsEnabled]=\"!!tooltip\"\n>\n @if (icon) {\n <i [class]=\"icon\"></i>\n }\n\n {{ loading ? loadingText : text }}\n</a>\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ALERT_ICONS } from '../../../constants/alerts';\n\n@Component({\n selector: 'app-alert',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './app-alert.component.html',\n styleUrls: ['./app-alert.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class AppAlertComponent {\n @Input() type: 'success' | 'error' | 'warning' | 'info' = 'success';\n @Input() text: string = '';\n @Input() closeable: boolean = false;\n @Input() size: 'xs' | 'sm' | 'md' | 'lg' = 'md';\n\n get alertIcon(): string {\n return ALERT_ICONS[this.type] ?? ALERT_ICONS.info;\n }\n}\n","<div class=\"alert\" [class]=\"'alert--' + type + ' alert--' + size\" role=\"alert\">\n <div class=\"alert-content\">\n <i class=\"{{ alertIcon }}\"></i>\n <span>{{ text }}</span>\n </div>\n\n @if (closeable) {\n <span class=\"alert-close\">\n <i class=\"ri-close-line\"></i>\n </span>\n }\n</div>\n","import {\n Component,\n ViewEncapsulation,\n Input,\n Output,\n EventEmitter,\n WritableSignal,\n signal,\n HostListener,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ModalSize } from '../../../types/modals/modal-size.type';\n\n@Component({\n selector: 'app-modal',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './app-modal.component.html',\n styleUrls: ['./app-modal.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class AppModalComponent {\n @Input() title: string = '';\n @Input() disableClose: boolean = false;\n @Input() showHeader: boolean = true;\n @Input() showCloseButton: boolean = true;\n @Input() showTitle: boolean = true;\n @Input() interactiveClose: boolean = true;\n @Input() isOpen: WritableSignal<boolean> = signal(false);\n @Input() size: ModalSize = 'md';\n @Output() closeModal = new EventEmitter<void>();\n\n onCloseModal(): void {\n if (this.disableClose) return;\n this.closeModal.emit();\n }\n\n onInteractiveClose(): void {\n if (!this.interactiveClose || this.disableClose) return;\n this.closeModal.emit();\n }\n\n @HostListener('document:keydown.escape')\n onKeydownEscape(): void {\n if (this.isOpen()) {\n this.onInteractiveClose();\n }\n }\n}\n","@if (isOpen()) {\n <div class=\"modal-overlay\">\n <div class=\"modal-backdrop\" (click)=\"onInteractiveClose()\"></div>\n\n <div class=\"modal-dialog\" [class]=\"'modal-dialog--' + size\">\n @if (showHeader && ((showTitle && !!title) || (showCloseButton && !disableClose))) {\n <div class=\"modal-header\">\n @if (showTitle && !!title) {\n <h3 class=\"modal-title\">{{ title }}</h3>\n }\n\n @if (showCloseButton && !disableClose) {\n <button class=\"modal-close-button\" (click)=\"onCloseModal()\">×</button>\n }\n </div>\n }\n\n <div class=\"modal-body\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n WritableSignal,\n signal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AppModalComponent } from '../app-modal/app-modal.component';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\nimport { FeedbackModalType } from '../../../types';\n\n@Component({\n selector: 'feedback-modal',\n standalone: true,\n imports: [CommonModule, AppModalComponent, AppButtonComponent],\n templateUrl: './feedback-modal.component.html',\n styleUrls: ['./feedback-modal.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class FeedbackModalComponent implements OnChanges, OnDestroy {\n @Input() isOpen: WritableSignal<boolean> = signal(false);\n @Input() type: FeedbackModalType = 'info';\n @Input() title: string = '';\n @Input() message: string = '';\n @Input() showHeader: boolean = false;\n @Input() showCloseButton: boolean = false;\n @Input() showTitle: boolean = false;\n @Input() autoClose: boolean = false;\n @Input() autoCloseDuration: number = 3000;\n @Input() buttonText: string = '';\n\n @Output() closed = new EventEmitter<void>();\n\n private autoCloseTimeout: ReturnType<typeof setTimeout> | null = null;\n\n get defaultButtonText(): string {\n return this.type === 'loading' ? 'Cancelar' : 'Cerrar';\n }\n\n get resolvedButtonText(): string {\n return this.buttonText || this.defaultButtonText;\n }\n\n get buttonVariant(): 'primary' | 'secondary' {\n return this.type === 'loading' ? 'secondary' : 'primary';\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.autoClose && this.isOpen()) {\n this.scheduleAutoClose();\n }\n }\n\n ngOnDestroy(): void {\n this.clearAutoClose();\n }\n\n closeModal(): void {\n this.clearAutoClose();\n this.isOpen.set(false);\n this.closed.emit();\n }\n\n private scheduleAutoClose(): void {\n this.clearAutoClose();\n this.autoCloseTimeout = setTimeout(() => {\n this.closeModal();\n }, this.autoCloseDuration);\n }\n\n private clearAutoClose(): void {\n if (this.autoCloseTimeout) {\n clearTimeout(this.autoCloseTimeout);\n this.autoCloseTimeout = null;\n }\n }\n}\n","<app-modal\n [showHeader]=\"showHeader\"\n [showCloseButton]=\"showCloseButton\"\n [showTitle]=\"showTitle\"\n [isOpen]=\"isOpen\"\n size=\"sm\"\n (closeModal)=\"closeModal()\"\n>\n <div class=\"feedback-modal-body\" [ngClass]=\"'feedback-modal-body--' + type\">\n <div class=\"feedback-modal-icon-wrapper\">\n @switch (type) {\n @case ('loading') {\n <div class=\"feedback-modal-spinner\"></div>\n }\n @case ('success') {\n <i class=\"ri-check-line feedback-modal-icon feedback-modal-icon--success\"></i>\n }\n @case ('error') {\n <i class=\"ri-error-warning-line feedback-modal-icon feedback-modal-icon--error\"></i>\n }\n @case ('warning') {\n <i class=\"ri-alert-line feedback-modal-icon feedback-modal-icon--warning\"></i>\n }\n @case ('info') {\n <i class=\"ri-info-i feedback-modal-icon feedback-modal-icon--info\"></i>\n }\n }\n </div>\n\n <h3 class=\"feedback-modal-title\">{{ title }}</h3>\n\n @if (message) {\n <p class=\"feedback-modal-message\">{{ message }}</p>\n }\n\n @if (resolvedButtonText && showCloseButton) {\n <app-button [text]=\"resolvedButtonText\" [variant]=\"buttonVariant\" (clicked)=\"closeModal()\" />\n }\n </div>\n</app-modal>\n","import { Component, Input, Self, Optional } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { BASE_INPUT_CLASSES, ERROR_INPUT_CLASSES } from '../../../constants/form-fields';\n\n@Component({\n selector: 'form-input',\n standalone: true,\n imports: [FormsModule, CommonModule, ReactiveFormsModule],\n templateUrl: './form-input.component.html',\n styleUrls: ['./form-input.component.scss'],\n})\nexport class FormInputComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() type = 'text';\n @Input() name = '';\n @Input() id = '';\n @Input() placeholder = '';\n @Input() required = false;\n @Input() readonly = false;\n @Input() maxlength: number | null = null;\n @Input() minlength: number | null = null;\n @Input() max: number | null = null;\n @Input() min: number | null = null;\n @Input() step: number | null = 1;\n @Input() pattern: string | null = null;\n @Input() fieldGroupClass: string = '';\n @Input() autocomplete: string = 'on';\n\n value: any = '';\n disabled = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Self() @Optional() public ngControl: NgControl,\n private transloco: TranslocoService,\n ) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInput(value: any): void {\n this.value = value;\n this.onChange(value);\n this.onTouched();\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n const dirty = control.dirty;\n const touched = control.touched;\n return control.invalid ? dirty || touched : false;\n }\n\n get errorMessage(): string {\n if (!this.ngControl?.errors) return '';\n\n const errors = this.ngControl.errors;\n const errorKey = Object.keys(errors)[0];\n\n if (errorKey === 'minlength') {\n return this.transloco.translate('formErrors.minlength', {\n length: errors[errorKey].requiredLength,\n });\n }\n\n if (errorKey === 'maxlength') {\n return this.transloco.translate('formErrors.maxlength', {\n length: errors[errorKey].requiredLength,\n });\n }\n\n if (errorKey === 'email') {\n return this.transloco.translate('formErrors.email');\n }\n\n return this.transloco.translate(`formErrors.${errorKey}`);\n }\n\n get inputClasses(): string {\n return this.showError ? ERROR_INPUT_CLASSES : BASE_INPUT_CLASSES;\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' w-full';\n }\n\n return baseClasses;\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"form-input-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"form-input-required\">*</span>\n }\n </label>\n }\n\n <div class=\"relative\">\n <input\n [type]=\"type\"\n [id]=\"inputId\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [minlength]=\"minlength\"\n [maxlength]=\"maxlength\"\n [pattern]=\"pattern || ''\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [class.disabled]=\"readonly\"\n [class.error]=\"showError\"\n class=\"form-input\"\n [autocomplete]=\"autocomplete\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n />\n </div>\n\n @if (showError) {\n <div class=\"form-input-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n","import { Component, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { TranslocoModule, TranslocoService } from '@jsverse/transloco';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\nimport { FormInputComponent } from '../../forms/form-input/form-input.component';\nimport { AppModalComponent } from '../../modals/app-modal/app-modal.component';\nimport { AppAlertComponent } from '../app-alert/app-alert.component';\nimport { DeleteConfirmationService } from '../../../services/delete-confirmation.service';\n\ntype DeleteConfirmationStep = 'input' | 'final';\n\n@Component({\n selector: 'delete-confirmation',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n TranslocoModule,\n AppButtonComponent,\n FormInputComponent,\n AppModalComponent,\n AppAlertComponent,\n ],\n templateUrl: './delete-confirmation.component.html',\n styleUrls: ['./delete-confirmation.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class DeleteConfirmationComponent {\n deleteConfirmationForm: FormGroup;\n\n /**\n * Two-step flow:\n * 1. 'input' -> the user must type the resource name to unlock the delete action.\n * 2. 'final' -> a last feedback/confirmation step is shown before the delete\n * callback actually runs, so a slip of the mouse on the first\n * step can never trigger a real deletion by itself.\n */\n step: DeleteConfirmationStep = 'input';\n\n constructor(\n private fb: FormBuilder,\n private deleteConfirmationService: DeleteConfirmationService,\n protected transloco: TranslocoService,\n ) {\n this.deleteConfirmationForm = this.fb.group({\n confirmationText: ['', [Validators.required]],\n });\n }\n\n get title() {\n return this.deleteConfirmationService.modalTitle();\n }\n\n get resourceName() {\n return this.deleteConfirmationService.modalResourceName();\n }\n\n get confirmationText() {\n return this.deleteConfirmationService.modalConfirmationText();\n }\n\n get isOpen() {\n return this.deleteConfirmationService.modalIsOpen;\n }\n\n get isConfirmationValid(): boolean {\n const value = this.deleteConfirmationForm.value.confirmationText;\n const confirmation = this.confirmationText;\n return value === confirmation;\n }\n\n get isFinalStep(): boolean {\n return this.step === 'final';\n }\n\n /** Cancels the whole flow (from either step) without deleting anything. */\n onCloseModal(): void {\n this.resetState();\n this.deleteConfirmationService.close();\n }\n\n /** Step 1 submit: only advances to the final confirmation, never deletes. */\n onConfirmDelete(): void {\n if (!this.isConfirmationValid) return;\n this.step = 'final';\n }\n\n /**\n * Step 2 cancel: goes back to the input step without touching what the\n * user typed, so they don't have to retype it if they just want to\n * double-check before deleting.\n */\n onBackToInput(): void {\n this.step = 'input';\n }\n\n /** Step 2 submit: this is the only place that actually triggers deletion. */\n onFinalConfirm(): void {\n const callback = this.deleteConfirmationService.getConfirmDeleteCallback();\n if (callback) {\n callback();\n }\n this.resetState();\n this.deleteConfirmationService.close();\n }\n\n private resetState(): void {\n this.deleteConfirmationForm.reset();\n this.step = 'input';\n }\n}\n","@if (isOpen()) {\n <app-modal\n [title]=\"title\"\n [isOpen]=\"isOpen\"\n (closeModal)=\"onCloseModal()\"\n [interactiveClose]=\"false\"\n >\n @if (!isFinalStep) {\n <form\n [formGroup]=\"deleteConfirmationForm\"\n method=\"POST\"\n class=\"delete-confirmation-content\"\n (ngSubmit)=\"onConfirmDelete()\"\n >\n <app-alert\n type=\"warning\"\n [text]=\"'deleteConfirmation.warning' | transloco\"\n size=\"sm\"\n [closeable]=\"false\"\n />\n\n <p class=\"delete-confirmation-instructions\">\n {{ 'deleteConfirmation.instructions' | transloco }}\n\n <span class=\"delete-confirmation-highlight\">\n {{ confirmationText }}\n </span>\n </p>\n\n <form-input\n name=\"confirmationText\"\n type=\"text\"\n class=\"delete-confirmation-field\"\n [required]=\"true\"\n autocomplete=\"off\"\n formControlName=\"confirmationText\"\n [placeholder]=\"\n transloco.translate('deleteConfirmation.placeholder', { text: confirmationText })\n \"\n />\n\n <div class=\"delete-confirmation-actions\">\n <app-button\n variant=\"tertiary\"\n [text]=\"'deleteConfirmation.cancel' | transloco\"\n (click)=\"onCloseModal()\"\n size=\"sm\"\n />\n\n <app-button\n type=\"submit\"\n variant=\"primary\"\n [text]=\"'deleteConfirmation.delete' | transloco\"\n [disabled]=\"!isConfirmationValid\"\n size=\"sm\"\n />\n </div>\n </form>\n } @else {\n <div class=\"delete-confirmation-content\" data-testid=\"delete-confirmation-final-step\">\n <app-alert\n type=\"warning\"\n [text]=\"'deleteConfirmation.finalWarning' | transloco\"\n size=\"sm\"\n [closeable]=\"false\"\n />\n\n <p class=\"delete-confirmation-instructions\">\n {{ transloco.translate('deleteConfirmation.finalMessage', { resource: resourceName }) }}\n </p>\n\n <div class=\"delete-confirmation-actions\">\n <app-button\n type=\"button\"\n variant=\"tertiary\"\n [text]=\"'deleteConfirmation.cancel' | transloco\"\n (click)=\"onBackToInput()\"\n size=\"sm\"\n />\n\n <app-button\n type=\"button\"\n variant=\"primary\"\n [text]=\"'deleteConfirmation.finalConfirm' | transloco\"\n (click)=\"onFinalConfirm()\"\n size=\"sm\"\n />\n </div>\n </div>\n }\n </app-modal>\n}\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BadgeSize } from '../../../types/badges/badge-size.type';\nimport { BadgeColor } from '../../../types';\n\n@Component({\n selector: 'app-badge',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './app-badge.component.html',\n styleUrl: './app-badge.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class AppBadgeComponent {\n @Input() text: string = '';\n @Input() color: BadgeColor = 'primary';\n @Input() size: BadgeSize = 'md';\n @Input() bordered: boolean = true;\n @Input() backgroundColor: string = '';\n @Input() textColor: string = '';\n}\n","<span\n class=\"badge\"\n [class]=\"'badge--' + color + ' badge--' + size\"\n [class.badge--bordered]=\"bordered\"\n [style.background-color]=\"backgroundColor || null\"\n [style.color]=\"textColor || null\"\n [style.border-color]=\"textColor || null\"\n>\n {{ text }}\n</span>\n","import { Component, Input } from '@angular/core';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { Auditable } from '../../../interfaces/auditable.interface';\n\n@Component({\n selector: 'app-audit-information',\n standalone: true,\n imports: [CommonModule, DatePipe],\n templateUrl: './audit-information.component.html',\n styleUrls: ['./audit-information.component.scss'],\n})\nexport class AuditInformationComponent {\n @Input() data: Auditable | null = null;\n}\n","@if (data) {\n <div class=\"audit-information\">\n <div class=\"audit-information-section\">\n <div class=\"audit-information-header\">\n <p class=\"audit-information-header-title\">Información de auditoria</p>\n </div>\n\n <div class=\"audit-information-body\">\n <ul class=\"audit-information-list\">\n <li class=\"audit-information-item\">\n <span class=\"audit-information-label\">Fecha de creación:</span>\n <span>{{ data.created_at | date: 'medium' }}</span>\n </li>\n\n @if (data.created_by_admin) {\n <li class=\"audit-information-item\">\n <span class=\"audit-information-label\">Creado por:</span>\n <span>\n {{ data.created_by_admin.first_name }} - {{ data.created_by_admin.email }}\n </span>\n </li>\n }\n\n @if (data.updated_at) {\n <li class=\"audit-information-item\">\n <span class=\"audit-information-label\">Última actualización:</span>\n <span>{{ data.updated_at | date: 'medium' }}</span>\n </li>\n }\n\n @if (data.updated_by_admin) {\n <li class=\"audit-information-item\">\n <span class=\"audit-information-label\">Actualizado por:</span>\n <span>\n {{ data.updated_by_admin.first_name }} - {{ data.updated_by_admin.email }}\n </span>\n </li>\n }\n\n @if (data.is_published && data.published_at) {\n <li class=\"audit-information-item\">\n <span class=\"audit-information-label\">Fecha de publicación:</span>\n <span>{{ data.published_at | date: 'medium' }}</span>\n </li>\n }\n\n @if (data.is_published && data.published_by_admin) {\n <li class=\"audit-information-item\">\n <span class=\"audit-information-label\">Publicado por:</span>\n <span>\n {{ data.published_by_admin.first_name }} - {{ data.published_by_admin.email }}\n </span>\n </li>\n }\n </ul>\n </div>\n </div>\n </div>\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n Type,\n Injector,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'dynamic-table',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './dynamic-table.component.html',\n styleUrls: ['./dynamic-table.component.scss', '../../forms/form-input/form-input.component.scss'],\n})\nexport class DynamicTableComponent implements OnChanges {\n constructor(private injector: Injector) {}\n\n @Input() title: string = '';\n @Input() data: any[] = [];\n @Input() headers: any[] = [];\n @Input() searcherPlaceholder: string = 'Buscar...';\n @Input() columnComponents: { [key: string]: Type<any> } = {};\n\n // Inputs necesarios para la paginación remota\n @Input() isLoading: boolean = true;\n @Input() totalItems: number = 0;\n @Input() itemsPerPage: number = 10;\n @Input() currentPage: number = 1;\n @Input() searchValue: string = '';\n\n // Eventos para avisar al Backend\n @Output() pageChange = new EventEmitter<number>();\n @Output() searchChange = new EventEmitter<string>();\n @Output() pageSizeChange = new EventEmitter<number>();\n\n pageSizeOptions: number[] = [5, 10, 25, 50];\n\n // Visualización de paginación\n @Input() showPagination: boolean = true;\n\n // Visualización de búsqueda\n @Input() showSearch: boolean = true;\n\n // Visualización de título\n @Input() showTitle: boolean = true;\n\n get totalPages(): number {\n return Math.ceil(this.totalItems / this.itemsPerPage) || 1;\n }\n\n onSearch(event: any) {\n this.data = [];\n const value = event.target.value;\n this.searchValue = value;\n this.searchChange.emit(value); // El padre recibe el término y hace el fetch\n }\n\n changePage(delta: number) {\n const newPage = this.currentPage + delta;\n if (newPage > 0 && newPage <= this.totalPages) {\n this.pageChange.emit(newPage); // El padre recibe la nueva página\n }\n }\n\n changePageSize(event: any) {\n const newSize = +event.target.value;\n if (newSize !== this.itemsPerPage) {\n this.currentPage = 1;\n this.pageSizeChange.emit(newSize); // El padre recibe el nuevo tamaño y refetch desde la página 1\n }\n }\n\n private rowInjectors = new Map<any, Injector>();\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['data']) {\n this.rowInjectors.clear();\n }\n }\n\n createInjector(row: any): Injector {\n let rowInjector = this.rowInjectors.get(row);\n if (!rowInjector) {\n rowInjector = Injector.create({\n providers: [{ provide: 'ROW_DATA', useValue: row }],\n parent: this.injector,\n });\n this.rowInjectors.set(row, rowInjector);\n }\n return rowInjector;\n }\n}\n","<div class=\"dynamic-table\">\n @if (showTitle || showSearch) {\n <div class=\"dynamic-table-toolbar\">\n @if (showTitle) {\n <h2 class=\"dynamic-table-title\">{{ title }}</h2>\n }\n\n @if (showSearch) {\n <input\n [placeholder]=\"searcherPlaceholder\"\n (input)=\"onSearch($event)\"\n type=\"search\"\n class=\"dynamic-table-search form-input\"\n />\n }\n </div>\n }\n\n <div class=\"dynamic-table-scroll\">\n <table class=\"dynamic-table-table\">\n <thead class=\"dynamic-table-head\">\n <tr>\n @for (header of headers; track header.key) {\n <th class=\"dynamic-table-head-cell\">\n {{ header.label }}\n </th>\n }\n </tr>\n </thead>\n\n <tbody class=\"dynamic-table-body\">\n @if (isLoading) {\n <tr class=\"dynamic-table-row\">\n @for (header of headers; track header.key) {\n <td class=\"dynamic-table-cell\">\n <div class=\"dynamic-table-skeleton\"></div>\n </td>\n }\n </tr>\n }\n\n @for (row of data; track row) {\n <tr class=\"dynamic-table-row\">\n @for (header of headers; track header.key) {\n <td class=\"dynamic-table-cell dynamic-table-cell--nowrap\">\n @if (columnComponents[header.key]) {\n <ng-container\n *ngComponentOutlet=\"columnComponents[header.key]; injector: createInjector(row)\"\n ></ng-container>\n } @else {\n <span class=\"dynamic-table-cell--text\" [title]=\"row[header.key]\">\n {{ row[header.key] || '---' }}\n </span>\n }\n </td>\n }\n </tr>\n }\n\n @if ((!data || data.length < 1) && !isLoading) {\n <tr>\n <td [attr.colspan]=\"headers.length\" class=\"dynamic-table-empty\">\n @if (searchValue.length > 0) {\n No se encontraron sedes que coincidan con <q>{{ searchValue }}</q>\n <br />\n Revisa la ortografía o limpia la búsqueda\n } @else {\n No se encontraron aún registros almacenados en base de datos.\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n @if (showPagination) {\n <div class=\"dynamic-table-pagination\">\n <div class=\"dynamic-table-pagination-size\">\n <label for=\"page-size-select\" class=\"dynamic-table-pagination-size-label\">\n Items por página\n </label>\n <select\n id=\"page-size-select\"\n class=\"dynamic-table-pagination-size-select\"\n [value]=\"itemsPerPage\"\n (change)=\"changePageSize($event)\"\n >\n @for (option of pageSizeOptions; track option) {\n <option [value]=\"option\" [selected]=\"option === itemsPerPage\">{{ option }}</option>\n }\n </select>\n </div>\n\n <div class=\"dynamic-table-pagination-info\">\n Mostrando página\n <span class=\"dynamic-table-pagination-strong\">{{ currentPage }}</span> de\n <span class=\"dynamic-table-pagination-strong\">{{ totalPages }}</span>\n <span class=\"dynamic-table-pagination-total\">({{ totalItems }} registros totales)</span>\n </div>\n\n <div class=\"dynamic-table-pagination-actions\">\n <button\n (click)=\"changePage(-1)\"\n [disabled]=\"totalPages <= 1 || currentPage === 1\"\n class=\"dynamic-table-pagination-button\"\n >\n Anterior\n </button>\n\n <button\n (click)=\"changePage(1)\"\n [disabled]=\"totalPages <= 1 || currentPage >= totalPages\"\n class=\"dynamic-table-pagination-button\"\n >\n Siguiente\n </button>\n </div>\n </div>\n }\n</div>\n","import { Component, Input, OnChanges } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslocoModule } from '@jsverse/transloco';\nimport { TextFontSize } from '../../../types/text-font-size/text-font-size.type';\n\nconst CHARS_PER_LINE = 80;\n\n@Component({\n selector: 'text-expandable',\n standalone: true,\n imports: [CommonModule, TranslocoModule],\n templateUrl: './text-expandable.component.html',\n styleUrl: './text-expandable.component.scss',\n})\nexport class TextExpandableComponent implements OnChanges {\n @Input({ required: true }) text!: string;\n @Input() maxLength: number = 200;\n @Input() fontSize: TextFontSize = 'base';\n @Input() allowHtml: boolean = false;\n @Input() maxLines?: number;\n\n protected expanded: boolean = false;\n\n ngOnChanges(): void {\n this.expanded = false;\n }\n\n get plainText(): string {\n return this.text\n .replace(/<[^>]*>/g, ' ')\n .replace(/\\s+/g, ' ')\n .trim();\n }\n\n get truncated(): boolean {\n return this.plainText.length > this.maxLength;\n }\n\n get visibleText(): string {\n if (!this.truncated || this.expanded) {\n return this.text;\n }\n\n return this.text.slice(0, this.maxLength).trimEnd() + '…';\n }\n\n get lines(): number {\n return this.maxLines ?? Math.max(1, Math.ceil(this.maxLength / CHARS_PER_LINE));\n }\n\n toggleExpanded() {\n this.expanded = !this.expanded;\n }\n}\n","@if (allowHtml) {\n <div class=\"text-expandable__html\" [ngClass]=\"`text-expandable__html--font-size-${fontSize}`\">\n <div\n class=\"text-expandable__html__content\"\n [class.text-expandable__html__content--clamped]=\"truncated && !expanded\"\n [style.--text-expandable-lines]=\"lines\"\n [innerHTML]=\"text\"\n ></div>\n\n @if (truncated) {\n <button type=\"button\" class=\"text-expandable__toggle\" (click)=\"toggleExpanded()\">\n {{ (expanded ? 'common.showLess' : 'common.showMore') | transloco }}\n </button>\n }\n </div>\n} @else {\n <p\n class=\"text-expandable__paragraph\"\n [ngClass]=\"`text-expandable__paragraph--font-size-${fontSize}`\"\n >\n {{ visibleText }}\n\n @if (truncated) {\n <button type=\"button\" class=\"text-expandable__toggle\" (click)=\"toggleExpanded()\">\n {{ (expanded ? 'common.showLess' : 'common.showMore') | transloco }}\n </button>\n }\n </p>\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\n\n/**\n * Select genérico para editar un campo (típicamente \"estado\") directamente\n * en una celda de tabla, sin guardar de inmediato (QTN-49).\n *\n * Este componente es deliberadamente \"tonto\": no sabe a qué recurso\n * pertenece la fila ni cómo guardarla — solo muestra `options`, refleja\n * `value`, y emite `valueChange` cuando el usuario elige otra opción.\n * El componente que lo envuelve (p. ej. gift-bond-table-status en\n * tickera-backoffice-frontend) es quien conoce el id de la fila y decide\n * si guarda de inmediato o acumula el cambio en un\n * PendingChangesService + bulk-save-bar para guardado masivo.\n */\n@Component({\n selector: 'quick-status-edit',\n standalone: true,\n imports: [CommonModule, FormsModule],\n templateUrl: './quick-status-edit.component.html',\n styleUrls: ['./quick-status-edit.component.scss'],\n})\nexport class QuickStatusEditComponent {\n @Input({ required: true }) options: SelectOption[] = [];\n @Input() value: any;\n /** Resalta visualmente la celda como \"modificada, sin guardar\". */\n @Input() dirty = false;\n @Input() disabled = false;\n\n @Output() valueChange = new EventEmitter<any>();\n\n onChange(newValue: any): void {\n this.value = newValue;\n this.valueChange.emit(newValue);\n }\n}\n","<select\n class=\"quick-status-edit-select\"\n [class.quick-status-edit-select--dirty]=\"dirty\"\n [ngModel]=\"value\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"onChange($event)\"\n>\n @for (option of options; track option.value) {\n <option [value]=\"option.value\" [disabled]=\"option.disabled\">{{ option.label }}</option>\n }\n</select>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Barra flotante \"Guardar cambios\" para guardado masivo (QTN-49).\n *\n * No conoce el recurso concreto ni cómo persistir los cambios — el\n * componente que la usa le pasa `[count]` (típicamente\n * `pendingChangesService.changeCount()`) y escucha `(save)`/`(discard)`\n * para llamar al endpoint bulk correspondiente.\n */\n@Component({\n selector: 'bulk-save-bar',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './bulk-save-bar.component.html',\n styleUrls: ['./bulk-save-bar.component.scss'],\n})\nexport class BulkSaveBarComponent {\n @Input() count = 0;\n @Input() loading = false;\n @Input() saveLabel = 'Guardar cambios';\n @Input() discardLabel = 'Deshacer';\n\n @Output() save = new EventEmitter<void>();\n @Output() discard = new EventEmitter<void>();\n}\n","@if (count > 0) {\n <div class=\"bulk-save-bar\">\n <span class=\"bulk-save-bar__badge\">{{ count }}</span>\n <span class=\"bulk-save-bar__label\">\n {{ count === 1 ? '1 cambio sin guardar' : count + ' cambios sin guardar' }}\n </span>\n <button\n type=\"button\"\n class=\"bulk-save-bar__discard\"\n [disabled]=\"loading\"\n (click)=\"discard.emit()\"\n >\n {{ discardLabel }}\n </button>\n <button\n type=\"button\"\n class=\"bulk-save-bar__save\"\n [disabled]=\"loading\"\n (click)=\"save.emit()\"\n >\n {{ loading ? 'Guardando...' : saveLabel }}\n </button>\n </div>\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, Input } from '@angular/core';\nimport { Show } from '../../../interfaces';\nimport { TranslocoModule, TranslocoService } from '@jsverse/transloco';\nimport { AppBadgeComponent } from '../../data-display/app-badge/app-badge.component';\nimport { BadgeSize } from '../../../types';\n\n@Component({\n selector: 'show-type-badge',\n standalone: true,\n imports: [CommonModule, AppBadgeComponent, TranslocoModule],\n templateUrl: './show-type-badge.component.html',\n styleUrls: ['./show-type-badge.component.scss'],\n})\nexport class ShowTypeBadgeComponent {\n @Input({ required: true }) show!: Show;\n @Input() size: BadgeSize = 'xs';\n\n transloco = inject(TranslocoService);\n}\n","@if (show.show_type; as showType) {\n <app-badge [text]=\"showType.name\" size=\"xs\" class=\"show-card__badge\" />\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, Input } from '@angular/core';\nimport { AppLinkButtonComponent } from '../../buttons/app-link-button/app-link-button.component';\nimport { Show } from '../../../interfaces';\nimport { TranslocoModule, TranslocoService } from '@jsverse/transloco';\nimport { DateService } from '../../../services';\nimport { AppBadgeComponent } from '../../data-display/app-badge/app-badge.component';\nimport { ShowTypeBadgeComponent } from '../show-type-badge/show-type-badge.component';\n\n@Component({\n selector: 'show-card',\n standalone: true,\n imports: [\n CommonModule,\n AppLinkButtonComponent,\n AppBadgeComponent,\n TranslocoModule,\n ShowTypeBadgeComponent,\n ],\n templateUrl: './show-card.component.html',\n styleUrls: ['./show-card.component.scss'],\n})\nexport class ShowCardComponent {\n @Input({ required: true }) show!: Show;\n @Input() linkText: string = 'Ver funciones';\n @Input() linkUrlFn?: (show: Show) => string;\n @Input() linkQueryParams?: Record<string, any>;\n\n transloco = inject(TranslocoService);\n dateService = inject(DateService);\n\n formatTimeDate(date: string): Date {\n return new Date(date);\n }\n}\n","<div class=\"show-card\">\n <div class=\"show-card__image\">\n <show-type-badge [show]=\"show\" class=\"show-card__badge\" />\n\n @if (show.images && show.images.length > 0) {\n <img [src]=\"show.images[0].full_url\" class=\"show-card__image-img\" />\n } @else {\n <img\n [src]=\"`https://placehold.co/400x400/1f2937/737373?text=${show.title}`\"\n class=\"show-card__image-placeholder\"\n />\n }\n </div>\n\n <div class=\"show-card__info\">\n <p class=\"show-card__title\">\n {{ show.title }}\n </p>\n\n @if (show.next_performance) {\n <div class=\"show-card__datetime\">\n <span class=\"show-card__datetime-title\">\n {{ 'show.next_performance' | transloco }}\n </span>\n\n <br />\n\n <span class=\"show-card__date\">\n {{ show.next_performance.start_time | date: `EEEE` | titlecase }}\n {{ show.next_performance.start_time | date: `dd 'de' MMMM, hh:mm a` }}\n </span>\n </div>\n }\n\n @if (show.days_of_week && show.days_of_week.length > 0) {\n <div class=\"show-card__days\">\n @for (day of show.days_of_week; track $index) {\n <app-badge\n [text]=\"`common.daysOfWeekByNumber.${day}` | transloco\"\n [bordered]=\"false\"\n size=\"xs\"\n backgroundColor=\"#525252\"\n textColor=\"#e5e5e5\"\n />\n }\n </div>\n }\n\n @if (show.unique_start_times && show.unique_start_times.length > 0) {\n <div class=\"show-card__times\">\n @for (time of show.unique_start_times; track $index) {\n <app-badge\n [text]=\"dateService.formatDate(formatTimeDate(time), 'hh:mm a')\"\n [bordered]=\"false\"\n size=\"xs\"\n backgroundColor=\"#525252\"\n textColor=\"#e5e5e5\"\n />\n }\n </div>\n }\n\n <app-link-button\n class=\"show-card__link\"\n [route]=\"linkUrlFn ? linkUrlFn(show) : '#'\"\n [queryParams]=\"linkQueryParams ?? {}\"\n [text]=\"linkText\"\n icon=\"ri-calendar-line\"\n variant=\"primary\"\n size=\"sm\"\n />\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'show-card-skeleton',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './show-card-skeleton.component.html',\n styleUrls: ['./show-card-skeleton.component.scss'],\n})\nexport class ShowCardSkeletonComponent {}\n","<div class=\"show-card-skeleton\">\n <div class=\"show-card-skeleton__image\">\n <div class=\"show-card-skeleton__badge\"></div>\n </div>\n\n <div class=\"show-card-skeleton__info\">\n <div class=\"show-card-skeleton__title\"></div>\n\n <div class=\"show-card-skeleton__text\"></div>\n <div class=\"show-card-skeleton__text-sm\"></div>\n\n <div class=\"show-card-skeleton__tags\">\n <div class=\"show-card-skeleton__tag\"></div>\n <div class=\"show-card-skeleton__tag\"></div>\n <div class=\"show-card-skeleton__tag\"></div>\n </div>\n\n <div class=\"show-card-skeleton__tags\">\n <div class=\"show-card-skeleton__tag\"></div>\n <div class=\"show-card-skeleton__tag\"></div>\n </div>\n\n <div class=\"show-card-skeleton__button\"></div>\n </div>\n</div>\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BreadcrumbStep } from '../../../interfaces';\nimport { BreadcrumbTheme } from '../../../types';\n\n@Component({\n selector: 'app-breadcrumb',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './app-breadcrumb.component.html',\n styleUrl: './app-breadcrumb.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class AppBreadcumbComponent {\n @Input() homeUrl: string | undefined = undefined;\n @Input() steps: BreadcrumbStep[] = [];\n @Input() theme: BreadcrumbTheme = 'light';\n}\n","<div class=\"breadcrumb\" [class.breadcrumb--dark]=\"theme === 'dark'\">\n <nav class=\"breadcrumb__nav\" aria-label=\"Breadcrumb\">\n <ol class=\"breadcrumb__list\">\n <li class=\"breadcrumb__item\">\n @if (!!homeUrl) {\n <a [href]=\"homeUrl\" class=\"breadcrumb__link\"> <i class=\"ri-home-2-line\"></i> Inicio </a>\n } @else {\n <span class=\"breadcrumb__link\"><i class=\"ri-home-2-line\"></i> Inicio</span>\n }\n </li>\n\n @for (step of steps; track step.label) {\n <li class=\"breadcrumb__item\">\n <i class=\"ri-arrow-right-s-line breadcrumb__separator\"></i>\n\n @if (!!step.href) {\n <a [href]=\"step.href\" class=\"breadcrumb__link\">\n @if (step.icon; as icon) {\n <i [class]=\"icon\"></i>\n }\n\n {{ step.label }}\n </a>\n } @else {\n <span class=\"breadcrumb__current\">\n @if (step.icon; as icon) {\n <i [class]=\"icon\"></i>\n }\n\n {{ step.label }}\n </span>\n }\n </li>\n }\n </ol>\n </nav>\n</div>\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslocoService, TranslocoModule } from '@jsverse/transloco';\nimport { setStoredLanguage } from '../../../i18n/language.utils';\n\n@Component({\n selector: 'language-switcher',\n standalone: true,\n imports: [CommonModule, TranslocoModule],\n templateUrl: './language-switcher.component.html',\n styleUrls: ['./language-switcher.component.scss'],\n})\nexport class LanguageSwitcherComponent {\n availableLangs = ['es', 'en'];\n\n constructor(protected transloco: TranslocoService) {}\n\n get activeLang(): string {\n return this.transloco.getActiveLang();\n }\n\n switchLang(lang: string): void {\n this.transloco.setActiveLang(lang);\n setStoredLanguage(lang);\n }\n}\n","<div class=\"lang-switcher\">\n @for (lang of availableLangs; track lang) {\n <button\n (click)=\"switchLang(lang)\"\n class=\"lang-switcher-btn\"\n [class.active]=\"activeLang === lang\"\n [class.inactive]=\"activeLang !== lang\"\n >\n {{ lang | uppercase }}\n </button>\n }\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Router, NavigationEnd, IsActiveMatchOptions, RouterModule } from '@angular/router';\nimport { filter } from 'rxjs';\nimport { TranslocoModule } from '@jsverse/transloco';\nimport { SidebarMenuItem } from '../../../interfaces/sidebar-menu-item.interface';\nimport { SidebarStateService } from '../../../services/sidebar-state.service';\n\n@Component({\n selector: 'sidebar-menu',\n standalone: true,\n imports: [CommonModule, RouterModule, TranslocoModule],\n templateUrl: './sidebar-menu.component.html',\n styleUrls: ['./sidebar-menu.component.scss'],\n})\nexport class SidebarMenuComponent implements OnInit {\n /** Menu items to render. Each app owns its own routes/roles and passes them in here. */\n @Input({ required: true }) items: SidebarMenuItem[] = [];\n\n /** Route the brand/logo link should navigate to (e.g. the dashboard). */\n @Input({ required: true }) homePath = '';\n\n /** Optional brand logo shown in the sidebar header. Omit to render no logo. */\n @Input() logoUrl = '';\n @Input() logoAlt = '';\n\n private readonly IS_ACTIVE_MATCH_OPTIONS: IsActiveMatchOptions = {\n paths: 'subset',\n queryParams: 'subset',\n matrixParams: 'ignored',\n fragment: 'ignored',\n };\n\n constructor(\n private router: Router,\n protected sidebarState: SidebarStateService,\n ) {}\n\n ngOnInit(): void {\n this.updateSubmenuState();\n\n this.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe(() => {\n this.updateSubmenuState();\n this.sidebarState.close();\n });\n }\n\n private updateSubmenuState(): void {\n this.items.forEach((item) => {\n if (item.submenu) {\n item.isOpen = this.isSubmenuActive(item);\n }\n });\n }\n\n isSubmenuActive(item: SidebarMenuItem): boolean {\n if (!item.submenu) return false;\n\n return item.submenu.some(\n (subItem) => !!subItem.path && this.router.isActive(subItem.path, this.IS_ACTIVE_MATCH_OPTIONS),\n );\n }\n\n toggleSubmenu(item: SidebarMenuItem): void {\n item.isOpen = !item.isOpen;\n }\n}\n","<!-- Mobile overlay -->\n<div\n class=\"sidebar-overlay\"\n [class.is-open]=\"sidebarState.isMobileOpen()\"\n (click)=\"sidebarState.close()\"\n aria-hidden=\"true\"\n></div>\n\n<!-- Sidebar -->\n<div\n id=\"admin-sidebar\"\n class=\"sidebar\"\n [class.is-open]=\"sidebarState.isMobileOpen()\"\n aria-label=\"Sidebar\"\n>\n <div class=\"sidebar-inner\">\n <!-- Header -->\n <header class=\"sidebar-header\">\n <a class=\"sidebar-brand\" [routerLink]=\"homePath\" aria-label=\"Brand\">\n @if (logoUrl) {\n <img [src]=\"logoUrl\" [alt]=\"logoAlt\" class=\"sidebar-logo\" />\n }\n </a>\n\n <button\n type=\"button\"\n class=\"sidebar-close-btn\"\n (click)=\"sidebarState.close()\"\n aria-label=\"{{ 'navbar.closeMenu' | transloco }}\"\n >\n <i class=\"ri-close-line\"></i>\n </button>\n </header>\n <!-- End Header -->\n\n <!-- Body -->\n <nav class=\"sidebar-nav\">\n <ul class=\"sidebar-menu-list\">\n @for (item of items; track $index) {\n <li>\n @if (!item.submenu) {\n <a\n class=\"sidebar-menu-item\"\n [routerLink]=\"item.path\"\n routerLinkActive=\"is-active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n >\n <i [class]=\"item.icon\"></i>\n {{ item.labelKey | transloco }}\n </a>\n }\n\n @if (item.submenu) {\n <button\n type=\"button\"\n class=\"sidebar-menu-item sidebar-menu-item--parent\"\n [class.is-active]=\"isSubmenuActive(item) || item.isOpen\"\n (click)=\"toggleSubmenu(item)\"\n >\n <i [class]=\"item.icon\"></i>\n {{ item.labelKey | transloco }}\n\n <i class=\"ri-arrow-down-s-line sidebar-menu-item__chevron\" [class.rotated]=\"item.isOpen\"></i>\n </button>\n }\n\n @if (item.submenu) {\n <ul class=\"sidebar-submenu\" [class.hidden]=\"!item.isOpen\">\n @for (subItem of item.submenu; track $index) {\n <li>\n <a\n class=\"sidebar-submenu-item\"\n [routerLink]=\"subItem.path\"\n routerLinkActive=\"is-active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n >\n <i [class]=\"subItem.icon\"></i>\n {{ subItem.labelKey | transloco }}\n </a>\n </li>\n }\n </ul>\n }\n </li>\n }\n </ul>\n </nav>\n <!-- End Body -->\n </div>\n</div>\n<!-- End Sidebar -->\n","import { Component, EventEmitter, HostListener, Input, Output, signal, WritableSignal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslocoModule } from '@jsverse/transloco';\nimport { Admin } from '../../../interfaces/admins/admin.interface';\nimport { SidebarStateService } from '../../../services/sidebar-state.service';\n\n@Component({\n selector: 'admin-navbar',\n standalone: true,\n imports: [CommonModule, TranslocoModule],\n templateUrl: './admin-navbar.component.html',\n styleUrls: ['./admin-navbar.component.scss'],\n})\nexport class AdminNavbarComponent {\n /** Currently logged-in admin, or null while it hasn't loaded yet. */\n @Input() admin: Admin | null = null;\n\n /** Route the \"my account\" menu item should link to. */\n @Input() myAccountPath = '';\n\n /** Emitted when the admin clicks \"log out\" in the profile menu. */\n @Output() logout = new EventEmitter<void>();\n\n isProfileMenuOpen: WritableSignal<boolean> = signal(false);\n\n constructor(protected sidebarState: SidebarStateService) {}\n\n toggleProfileMenu(): void {\n this.isProfileMenuOpen.set(!this.isProfileMenuOpen());\n }\n\n onLogout(): void {\n this.logout.emit();\n }\n\n @HostListener('document:click', ['$event'])\n clickout(event: Event): void {\n const target = event.target as HTMLElement | null;\n if (!target?.closest('.admin-navbar__profile')) {\n this.isProfileMenuOpen.set(false);\n }\n }\n}\n","<nav class=\"admin-navbar\">\n <div class=\"admin-navbar__left\">\n <button\n type=\"button\"\n class=\"admin-navbar__menu-btn\"\n (click)=\"sidebarState.toggle()\"\n aria-controls=\"admin-sidebar\"\n [attr.aria-expanded]=\"sidebarState.isMobileOpen()\"\n aria-label=\"{{ 'navbar.toggleMenu' | transloco }}\"\n >\n <i class=\"ri-menu-line\"></i>\n </button>\n\n <h1 class=\"admin-navbar__title\">\n {{ 'navbar.title' | transloco }}\n </h1>\n </div>\n\n <div class=\"admin-navbar__right\">\n @if (!!admin) {\n <div class=\"admin-navbar__profile\">\n <button\n (click)=\"toggleProfileMenu()\"\n type=\"button\"\n class=\"admin-navbar__profile-btn\"\n >\n <img\n class=\"admin-navbar__avatar\"\n [src]=\"\n 'https://ui-avatars.com/api/?name=' +\n (admin?.fullname || admin?.email) +\n '&background=0D8ABC&color=fff'\n \"\n alt=\"{{ 'navbar.avatarAlt' | transloco }}\"\n />\n\n <div class=\"admin-navbar__profile-info\">\n <p class=\"admin-navbar__profile-name\">\n {{ admin?.fullname || admin?.email }}\n </p>\n <p class=\"admin-navbar__profile-email\">{{ admin?.email }}</p>\n </div>\n\n <i class=\"ri-arrow-down-s-line admin-navbar__chevron\" [class.is-open]=\"isProfileMenuOpen()\"></i>\n </button>\n\n <div class=\"admin-navbar__dropdown\" [hidden]=\"!isProfileMenuOpen()\">\n <a [href]=\"myAccountPath\" class=\"admin-navbar__dropdown-item\">\n <i class=\"ri-account-circle-line\"></i> {{ 'navbar.myAccount' | transloco }}\n </a>\n\n <hr class=\"admin-navbar__divider\" />\n\n <button (click)=\"onLogout()\" class=\"admin-navbar__dropdown-item admin-navbar__dropdown-item--danger\">\n <i class=\"ri-logout-box-line\"></i>\n\n {{ 'navbar.logout' | transloco }}\n </button>\n </div>\n </div>\n }\n </div>\n</nav>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterOutlet } from '@angular/router';\nimport { NgxSonnerToaster } from 'ngx-sonner';\nimport { SidebarMenuComponent } from '../../sidebar-menu/sidebar-menu.component';\nimport { AdminNavbarComponent } from '../../admin-navbar/admin-navbar.component';\nimport { DeleteConfirmationComponent } from '../../../feedback/delete-confirmation/delete-confirmation.component';\nimport { SidebarMenuItem } from '../../../../interfaces/sidebar-menu-item.interface';\nimport { Admin } from '../../../../interfaces/admins/admin.interface';\n\n/**\n * Reusable admin shell: sidebar + navbar + router-outlet.\n *\n * This component is intentionally free of any auth/session logic — that stays\n * in the consuming app. Project app-specific global UI (e.g. a session-timeout\n * modal) through the default content slot.\n */\n@Component({\n selector: 'admin-layout',\n standalone: true,\n imports: [\n CommonModule,\n RouterOutlet,\n NgxSonnerToaster,\n AdminNavbarComponent,\n SidebarMenuComponent,\n DeleteConfirmationComponent,\n ],\n templateUrl: './admin-layout.component.html',\n styleUrls: ['./admin-layout.component.scss'],\n})\nexport class AdminLayoutComponent {\n @Input({ required: true }) items: SidebarMenuItem[] = [];\n @Input({ required: true }) homePath = '';\n @Input() admin: Admin | null = null;\n @Input() myAccountPath = '';\n @Input() logoUrl = '';\n @Input() logoAlt = '';\n\n @Output() logout = new EventEmitter<void>();\n}\n","<div class=\"admin-layout\">\n <sidebar-menu [items]=\"items\" [homePath]=\"homePath\" [logoUrl]=\"logoUrl\" [logoAlt]=\"logoAlt\"></sidebar-menu>\n\n <main class=\"admin-layout__main\">\n <admin-navbar [admin]=\"admin\" [myAccountPath]=\"myAccountPath\" (logout)=\"logout.emit()\"></admin-navbar>\n\n <div class=\"admin-layout__content\">\n <router-outlet></router-outlet>\n </div>\n\n <delete-confirmation />\n <ng-content></ng-content>\n <ngx-sonner-toaster richColors [expand]=\"true\" />\n </main>\n</div>\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterOutlet } from '@angular/router';\nimport { NgxSonnerToaster } from 'ngx-sonner';\n\n@Component({\n selector: 'app-public-layout',\n standalone: true,\n imports: [CommonModule, RouterOutlet, NgxSonnerToaster],\n templateUrl: './public-layout.component.html',\n styleUrls: ['./public-layout.component.scss'],\n})\nexport class PublicLayoutComponent {}\n","<div class=\"public-layout\">\n <router-outlet></router-outlet>\n <ngx-sonner-toaster richColors [expand]=\"true\" />\n</div>\n","import {\n Component,\n Input,\n Injector,\n ElementRef,\n forwardRef,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NgControl,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n ReactiveFormsModule,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { TranslocoService } from '@jsverse/transloco';\n\nexport type IdentityDocumentType = 'CC' | 'CE' | 'PA' | 'NIT' | 'TI' | 'RC';\n\ninterface IdentityDocumentRule {\n digitsOnly: boolean;\n minLength: number | null;\n maxLength: number | null;\n}\n\n// Reglas de formato/longitud por tipo de documento de identidad colombiano (QTN-44).\nconst IDENTITY_DOCUMENT_RULES: Record<IdentityDocumentType, IdentityDocumentRule> = {\n CC: { digitsOnly: true, minLength: 6, maxLength: 10 },\n TI: { digitsOnly: true, minLength: 10, maxLength: 11 },\n RC: { digitsOnly: true, minLength: 10, maxLength: 11 },\n NIT: { digitsOnly: true, minLength: 9, maxLength: 10 },\n CE: { digitsOnly: false, minLength: null, maxLength: 15 },\n PA: { digitsOnly: false, minLength: null, maxLength: 12 },\n};\n\n// Pesos primos y tabla de conversión del algoritmo de dígito de verificación (DV)\n// del NIT, según el módulo 11 de la DIAN.\nconst NIT_CHECK_DIGIT_WEIGHTS = [3, 7, 13, 17, 19, 23, 29, 37, 41, 43, 47, 53, 59, 67, 71];\nconst NIT_CHECK_DIGIT_TABLE: Record<number, number> = {\n 0: 0,\n 1: 1,\n 2: 9,\n 3: 8,\n 4: 7,\n 5: 6,\n 6: 5,\n 7: 4,\n 8: 3,\n 9: 2,\n 10: 1,\n};\n\n/**\n * Campo de documento de identidad (QTN-44).\n *\n * Componente compartido que, dado un `documentType` (CC, CE, PA, NIT, TI, RC),\n * aplica automáticamente el formato y las validaciones correspondientes a los\n * lineamientos de documentos de identidad de Colombia: solo dígitos y rango de\n * longitud para CC/TI/RC/NIT, alfanumérico con longitud máxima para CE/PA, y\n * validación opcional del dígito de verificación (DV) para NIT.\n *\n * Sigue el mismo patrón que `NumberInputComponent`: standalone,\n * `ControlValueAccessor` + `Validator` vía `NG_VALUE_ACCESSOR`/`NG_VALIDATORS`.\n */\n@Component({\n selector: 'identity-document-input',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule],\n templateUrl: './identity-document-input.component.html',\n styleUrls: ['./identity-document-input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => IdentityDocumentInputComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => IdentityDocumentInputComponent),\n multi: true,\n },\n ],\n})\nexport class IdentityDocumentInputComponent implements ControlValueAccessor, Validator, OnChanges {\n @Input() label = '';\n @Input() name = '';\n @Input() id = '';\n @Input() placeholder = '';\n @Input() required = false;\n @Input() readonly = false;\n @Input() fieldGroupClass: string = '';\n @Input() documentType: IdentityDocumentType | '' = '';\n // Solo aplica cuando documentType === 'NIT'. Ver validateNitWithCheckDigit().\n @Input() validateCheckDigit = false;\n\n value: string | null = null;\n disabled = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n private _ngControl: NgControl | null | undefined;\n\n constructor(\n public transloco: TranslocoService,\n private injector: Injector,\n private elementRef: ElementRef,\n ) {}\n\n get ngControl(): NgControl | null {\n if (this._ngControl === undefined) {\n this._ngControl = this.injector.get(NgControl, null, { self: true });\n }\n return this._ngControl;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['documentType'] || changes['validateCheckDigit']) {\n this.ngControl?.control?.updateValueAndValidity();\n }\n }\n\n private get rule(): IdentityDocumentRule | null {\n return this.documentType ? IDENTITY_DOCUMENT_RULES[this.documentType] : null;\n }\n\n get isDigitsOnly(): boolean {\n return this.rule?.digitsOnly ?? false;\n }\n\n get inputMode(): string {\n return this.isDigitsOnly ? 'numeric' : 'text';\n }\n\n // Longitud máxima permitida en el input. Para NIT con validateCheckDigit\n // habilitado, se reserva un carácter adicional para el DV.\n get maxLength(): number | null {\n const baseMax = this.rule?.maxLength ?? null;\n if (baseMax === null) return null;\n if (this.documentType === 'NIT' && this.validateCheckDigit) {\n return baseMax + 1;\n }\n return baseMax;\n }\n\n writeValue(value: any): void {\n this.value = value === null || value === undefined ? null : String(value);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n // Bloquea a nivel de tecleo cualquier carácter no numérico cuando el tipo\n // de documento exige solo dígitos (CC, TI, RC, NIT). El saneo real (por si\n // llega texto vía pegado) ocurre en onInput().\n onKeyDown(event: KeyboardEvent): void {\n if (!this.isDigitsOnly) return;\n if (event.ctrlKey || event.metaKey || event.altKey) return;\n if (event.key.length > 1) return; // Backspace, Delete, Tab, ArrowLeft, etc.\n if (!/^[0-9]$/.test(event.key)) {\n event.preventDefault();\n }\n }\n\n onInput(rawValue: string): void {\n let next = rawValue ?? '';\n\n if (this.isDigitsOnly) {\n next = next.replace(/[^0-9]/g, '');\n } else {\n next = next.replace(/[^A-Za-z0-9]/g, '');\n }\n\n if (this.maxLength !== null) {\n next = next.slice(0, this.maxLength);\n }\n\n this.value = next;\n this.onChange(next);\n this.onTouched();\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n const rawValue = control.value;\n if (rawValue === null || rawValue === undefined || rawValue === '') return null;\n if (!this.documentType || !this.rule) return null;\n\n const value = String(rawValue);\n\n if (this.isDigitsOnly && !/^[0-9]+$/.test(value)) {\n return { pattern: true };\n }\n\n if (!this.isDigitsOnly && !/^[A-Za-z0-9]+$/.test(value)) {\n return { pattern: true };\n }\n\n if (this.documentType === 'NIT' && this.validateCheckDigit) {\n return this.validateNitWithCheckDigit(value);\n }\n\n return this.validateLength(value, this.rule.minLength, this.rule.maxLength);\n }\n\n private validateLength(\n value: string,\n minLength: number | null,\n maxLength: number | null,\n ): ValidationErrors | null {\n if (minLength !== null && value.length < minLength) {\n return { minlength: { requiredLength: minLength, actualLength: value.length } };\n }\n if (maxLength !== null && value.length > maxLength) {\n return { maxlength: { requiredLength: maxLength, actualLength: value.length } };\n }\n return null;\n }\n\n private validateNitWithCheckDigit(value: string): ValidationErrors | null {\n if (value.length < 2) {\n return { pattern: true };\n }\n\n const base = value.slice(0, -1);\n const dv = value.slice(-1);\n\n const lengthError = this.validateLength(base, this.rule?.minLength ?? null, this.rule?.maxLength ?? null);\n if (lengthError) return lengthError;\n\n const expectedDv = IdentityDocumentInputComponent.computeNitCheckDigit(base);\n if (String(expectedDv) !== dv) {\n return { invalidCheckDigit: { expected: expectedDv, actual: dv } };\n }\n\n return null;\n }\n\n // Algoritmo del dígito de verificación (DV) del NIT — DIAN, módulo 11.\n static computeNitCheckDigit(nit: string): number {\n const digits = nit.split('').reverse();\n let sum = 0;\n for (let i = 0; i < digits.length; i++) {\n const weight = NIT_CHECK_DIGIT_WEIGHTS[i] ?? 0;\n sum += Number(digits[i]) * weight;\n }\n const remainder = sum % 11;\n return NIT_CHECK_DIGIT_TABLE[remainder];\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n const dirty = control.dirty;\n const touched = control.touched;\n return control.invalid ? dirty || touched : false;\n }\n\n get errorMessage(): string {\n if (!this.ngControl?.errors) return '';\n\n const errors = this.ngControl.errors;\n const errorKey = Object.keys(errors)[0];\n\n if (errorKey === 'minlength') {\n return this.transloco.translate('formErrors.minlength', {\n length: errors[errorKey].requiredLength,\n });\n }\n\n if (errorKey === 'maxlength') {\n return this.transloco.translate('formErrors.maxlength', {\n length: errors[errorKey].requiredLength,\n });\n }\n\n if (errorKey === 'invalidCheckDigit') {\n return this.transloco.translate('formErrors.invalidCheckDigit');\n }\n\n return this.transloco.translate(`formErrors.${errorKey}`);\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' w-full';\n }\n\n return baseClasses;\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"identity-document-input-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"identity-document-input-required\">*</span>\n }\n </label>\n }\n\n <input\n type=\"text\"\n [id]=\"inputId\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [inputMode]=\"inputMode\"\n [attr.maxlength]=\"maxLength\"\n [value]=\"value ?? ''\"\n (input)=\"onInput($event.target.value)\"\n (keydown)=\"onKeyDown($event)\"\n (blur)=\"onTouched()\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [class.disabled]=\"readonly\"\n [class.error]=\"showError\"\n class=\"identity-document-input\"\n />\n\n @if (showError) {\n <div class=\"identity-document-input-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n","import { Component, Input, Self, Optional } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { TranslocoModule, TranslocoService } from '@jsverse/transloco';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\n\n@Component({\n selector: 'form-select',\n standalone: true,\n imports: [FormsModule, CommonModule, ReactiveFormsModule, TranslocoModule],\n templateUrl: './form-select.component.html',\n styleUrls: ['./form-select.component.scss'],\n})\nexport class FormSelectComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() name = '';\n @Input() id = '';\n @Input() placeholder = 'Seleccione una opción';\n @Input() required = false;\n @Input() disabled = false;\n @Input() readonly = false;\n @Input() options: SelectOption[] = [];\n @Input() fieldGroupClass: string = '';\n @Input() showDefaultOption: boolean = true;\n @Input() defaultOptionLabel: string = '';\n\n value: any = '';\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Self() @Optional() public ngControl: NgControl,\n protected transloco: TranslocoService,\n ) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onSelectChange(value: any): void {\n this.value = value;\n this.onChange(value);\n this.onTouched();\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n const dirty = control.dirty;\n const touched = control.touched;\n return control.invalid ? dirty || touched : false;\n }\n\n get errorMessage(): string {\n if (!this.ngControl?.errors) return '';\n\n const errors = this.ngControl.errors;\n const errorKey = Object.keys(errors)[0];\n\n return this.transloco.translate(\n `formErrors.${errorKey}`,\n {},\n this.transloco.translate('formErrors.invalidSelection'),\n );\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' w-full';\n }\n\n return baseClasses;\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"form-select-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"form-select-required\">*</span>\n }\n </label>\n }\n\n <div class=\"relative\">\n <select\n [id]=\"inputId\"\n [name]=\"name\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onSelectChange($event)\"\n (blur)=\"onTouched()\"\n class=\"form-select\"\n [class.disabled]=\"readonly\"\n [class.error]=\"showError\"\n >\n @if (showDefaultOption && this.defaultOptionLabel) {\n <option [value]=\"null\" disabled selected>{{ this.defaultOptionLabel }}</option>\n } @else if (showDefaultOption) {\n <option [value]=\"null\" disabled selected>{{ 'common.selectOption' | transloco }}</option>\n }\n\n @for (option of options; track option.value) {\n <option [value]=\"option.value\" [disabled]=\"option.disabled\">\n {{ option.label }}\n </option>\n }\n </select>\n </div>\n\n @if (showError) {\n <div class=\"form-select-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n","import { Component, Input, Self, Optional } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { TranslocoService } from '@jsverse/transloco';\n\n@Component({\n selector: 'form-textarea',\n standalone: true,\n imports: [FormsModule, CommonModule, ReactiveFormsModule],\n templateUrl: './form-textarea.component.html',\n styleUrls: ['./form-textarea.component.scss'],\n})\nexport class FormTextareaComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() name = '';\n @Input() id = '';\n @Input() placeholder = '';\n @Input() required = false;\n @Input() readonly = false;\n @Input() minlength: number | null = null;\n @Input() maxlength: number | null = null;\n @Input() rows: number = 4;\n @Input() cols: number | null = null;\n @Input() fieldGroupClass: string = '';\n\n value: any = '';\n disabled = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Self() @Optional() public ngControl: NgControl,\n private transloco: TranslocoService,\n ) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInput(value: any): void {\n this.value = value;\n this.onChange(value);\n this.onTouched();\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n const dirty = control.dirty;\n const touched = control.touched;\n return control.invalid ? dirty || touched : false;\n }\n\n get errorMessage(): string {\n if (!this.ngControl?.errors) return '';\n\n const errors = this.ngControl.errors;\n const errorKey = Object.keys(errors)[0];\n\n if (errorKey === 'minlength') {\n return this.transloco.translate('formErrors.minlength', {\n length: errors[errorKey].requiredLength,\n });\n }\n\n if (errorKey === 'maxlength') {\n return this.transloco.translate('formErrors.maxlength', {\n length: errors[errorKey].requiredLength,\n });\n }\n\n return this.transloco.translate(`formErrors.${errorKey}`);\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' w-full';\n }\n\n return baseClasses;\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"form-textarea-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"form-textarea-required\">*</span>\n }\n </label>\n }\n\n <div class=\"relative\">\n <textarea\n [id]=\"inputId\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [minlength]=\"minlength\"\n [maxlength]=\"maxlength\"\n [rows]=\"rows\"\n [cols]=\"cols\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n class=\"form-textarea\"\n [class.disabled]=\"readonly\"\n [class.error]=\"showError\"\n ></textarea>\n </div>\n\n @if (showError) {\n <div class=\"form-textarea-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n","import {\n Component,\n Input,\n Injector,\n ElementRef,\n forwardRef,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NgControl,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n ReactiveFormsModule,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { TranslocoService } from '@jsverse/transloco';\n\n@Component({\n selector: 'number-input',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule],\n templateUrl: './number-input.component.html',\n styleUrls: ['./number-input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NumberInputComponent),\n multi: true,\n },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => NumberInputComponent), multi: true },\n ],\n})\nexport class NumberInputComponent implements ControlValueAccessor, Validator, OnChanges {\n @Input() label = '';\n @Input() name = '';\n @Input() id = '';\n @Input() placeholder = '';\n @Input() required = false;\n @Input() readonly = false;\n @Input() min: number | null = null;\n @Input() max: number | null = null;\n @Input() step: number = 1;\n @Input() fieldGroupClass: string = '';\n\n value: number | null = null;\n disabled = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n private _ngControl: NgControl | null | undefined;\n\n constructor(\n public transloco: TranslocoService,\n private injector: Injector,\n private elementRef: ElementRef,\n ) {}\n\n get ngControl(): NgControl | null {\n if (this._ngControl === undefined) {\n this._ngControl = this.injector.get(NgControl, null, { self: true });\n }\n return this._ngControl;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['min'] || changes['max']) {\n this.ngControl?.control?.updateValueAndValidity();\n }\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n const errors: ValidationErrors = {};\n const minError = this.minValidator(control);\n const maxError = this.maxValidator(control);\n if (minError) Object.assign(errors, minError);\n if (maxError) Object.assign(errors, maxError);\n return Object.keys(errors).length ? errors : null;\n }\n\n writeValue(value: any): void {\n this.value = value === null || value === undefined || value === '' ? null : Number(value);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInput(value: any): void {\n const parsed = value === '' || value === null || value === undefined ? null : Number(value);\n this.value = isNaN(parsed as number) ? null : parsed;\n this.onChange(this.value);\n this.onTouched();\n }\n\n increment(): void {\n if (!this.canIncrement) return;\n const current = this.value ?? this.min ?? 0;\n const step = this.step ?? 1;\n const next = this.round(this.clamp(current + step));\n this.value = next;\n this.onChange(next);\n this.onTouched();\n this.emitNativeChange();\n }\n\n decrement(): void {\n if (!this.canDecrement) return;\n const current = this.value ?? this.min ?? 0;\n const step = this.step ?? 1;\n const next = this.round(this.clamp(current - step));\n this.value = next;\n this.onChange(next);\n this.onTouched();\n this.emitNativeChange();\n }\n\n get canIncrement(): boolean {\n if (this.disabled || this.readonly) return false;\n const current = this.value ?? this.min ?? 0;\n return this.max === null || current < this.max;\n }\n\n get canDecrement(): boolean {\n if (this.disabled || this.readonly) return false;\n const current = this.value ?? this.min ?? 0;\n return this.min === null || current > this.min;\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n const dirty = control.dirty;\n const touched = control.touched;\n return control.invalid ? dirty || touched : false;\n }\n\n get errorMessage(): string {\n if (!this.ngControl?.errors) return '';\n\n const errors = this.ngControl.errors;\n const errorKey = Object.keys(errors)[0];\n\n if (errorKey === 'min') {\n return this.transloco.translate('formErrors.min', { min: errors[errorKey].min });\n }\n\n if (errorKey === 'max') {\n return this.transloco.translate('formErrors.max', { max: errors[errorKey].max });\n }\n\n return this.transloco.translate(`formErrors.${errorKey}`);\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' w-full';\n }\n\n return baseClasses;\n }\n\n private clamp(value: number): number {\n if (this.min !== null && value < this.min) return this.min;\n if (this.max !== null && value > this.max) return this.max;\n return value;\n }\n\n private round(value: number): number {\n return Math.round(value * 1e8) / 1e8;\n }\n\n private emitNativeChange(): void {\n const inputEl = this.elementRef.nativeElement.querySelector('input');\n if (inputEl) {\n inputEl.dispatchEvent(new Event('change', { bubbles: true }));\n }\n }\n\n private minValidator(control: AbstractControl): ValidationErrors | null {\n if (this.min === null) return null;\n const value = control.value;\n if (value === null || value === undefined || value === '') return null;\n const num = Number(value);\n if (isNaN(num)) return null;\n return num < this.min ? { min: { min: this.min, actual: num } } : null;\n }\n\n private maxValidator(control: AbstractControl): ValidationErrors | null {\n if (this.max === null) return null;\n const value = control.value;\n if (value === null || value === undefined || value === '') return null;\n const num = Number(value);\n if (isNaN(num)) return null;\n return num > this.max ? { max: { max: this.max, actual: num } } : null;\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"number-input-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"number-input-required\">*</span>\n }\n </label>\n }\n\n <div class=\"number-input-group\" [class.error]=\"showError\">\n <button\n type=\"button\"\n class=\"number-input-button\"\n [attr.aria-label]=\"transloco.translate('numberInput.decrement')\"\n [disabled]=\"!canDecrement\"\n (click)=\"decrement()\"\n >\n <i class=\"ri-subtract-line\"></i>\n </button>\n\n <input\n type=\"number\"\n [id]=\"inputId\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [value]=\"value ?? ''\"\n (input)=\"onInput($event.target.value)\"\n (blur)=\"onTouched()\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [class.disabled]=\"readonly\"\n class=\"number-input\"\n />\n\n <button\n type=\"button\"\n class=\"number-input-button\"\n [attr.aria-label]=\"transloco.translate('numberInput.increment')\"\n [disabled]=\"!canIncrement\"\n (click)=\"increment()\"\n >\n <i class=\"ri-add-line\"></i>\n </button>\n </div>\n\n @if (showError) {\n <div class=\"number-input-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n","import {\n Component,\n Input,\n Injector,\n forwardRef,\n OnChanges,\n SimpleChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormsModule,\n NgControl,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { PHONE_COUNTRIES, phoneCountryFlag } from '../../../constants/phone-countries';\n\n@Component({\n selector: 'phone-input',\n standalone: true,\n imports: [CommonModule, FormsModule, NgSelectModule],\n templateUrl: './phone-input.component.html',\n styleUrls: ['./phone-input.component.scss', '../form-input/form-input.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PhoneInputComponent),\n multi: true,\n },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => PhoneInputComponent), multi: true },\n ],\n})\nexport class PhoneInputComponent implements ControlValueAccessor, Validator, OnChanges {\n @Input() label = '';\n @Input() name = '';\n @Input() id = '';\n @Input() placeholder = '';\n @Input() required = false;\n @Input() readonly = false;\n @Input() maxNationalDigits: number | null = null;\n @Input() minNationalDigits: number | null = null;\n @Input() defaultCountry = 'CO';\n @Input() fieldGroupClass = '';\n\n readonly countries = PHONE_COUNTRIES;\n readonly phoneOptions = PHONE_COUNTRIES.map((country) => ({\n ...country,\n search: `${phoneCountryFlag(country.isoCode)} ${country.name} (${country.dialCode})`,\n }));\n\n selectedIso = this.defaultCountry;\n nationalNumber = '';\n disabled = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n onValidatorChange: () => void = () => {};\n private _ngControl: NgControl | null | undefined;\n\n constructor(\n private transloco: TranslocoService,\n private injector: Injector,\n ) {}\n\n get ngControl(): NgControl | null {\n if (this._ngControl === undefined) {\n this._ngControl = this.injector.get(NgControl, null, { self: true });\n }\n return this._ngControl;\n }\n\n get selectedCountry() {\n return (\n this.countries.find((country) => country.isoCode === this.selectedIso) ?? this.countries[0]\n );\n }\n\n get dialCode(): string {\n return this.selectedCountry?.dialCode ?? '';\n }\n\n dialCodeOf(isoCode: string): string {\n return this.countries.find((country) => country.isoCode === isoCode)?.dialCode ?? '';\n }\n\n get value(): string {\n return this.nationalNumber ? `${this.dialCode}${this.nationalNumber}` : '';\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n changes['required'] ||\n changes['defaultCountry'] ||\n changes['minNationalDigits'] ||\n changes['maxNationalDigits']\n ) {\n this.onValidatorChange();\n }\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this.onValidatorChange = fn;\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n if (this.required && !control.value) {\n return { required: true };\n }\n if (!control.value) {\n return null;\n }\n const length = this.nationalDigits(control.value).length;\n const errors: ValidationErrors = {};\n if (this.minNationalDigits !== null && length < this.minNationalDigits) {\n errors['minlength'] = { requiredLength: this.minNationalDigits, actualLength: length };\n }\n if (this.maxNationalDigits !== null && length > this.maxNationalDigits) {\n errors['maxlength'] = { requiredLength: this.maxNationalDigits, actualLength: length };\n }\n return Object.keys(errors).length ? errors : null;\n }\n\n writeValue(value: string | null | undefined): void {\n if (!value) {\n this.selectedIso = this.defaultCountry;\n this.nationalNumber = '';\n return;\n }\n const parsed = value.replace(/\\D/g, '');\n const matched = this.countries.find((country) =>\n parsed.startsWith(country.dialCode.replace('+', '')),\n );\n if (matched) {\n this.selectedIso = matched.isoCode;\n this.nationalNumber = parsed.slice(matched.dialCode.replace('+', '').length);\n } else {\n this.selectedIso = this.defaultCountry;\n this.nationalNumber = parsed;\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const sanitized = this.sanitize(input.value);\n input.value = sanitized;\n this.nationalNumber = sanitized;\n this.onChange(this.value);\n this.onTouched();\n }\n\n onCountryChange(isoCode: string): void {\n this.selectedIso = isoCode;\n this.onChange(this.value);\n this.onTouched();\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n const dirty = control.dirty;\n const touched = control.touched;\n return control.invalid ? dirty || touched : false;\n }\n\n get errorMessage(): string {\n if (!this.ngControl?.errors) return '';\n const errors = this.ngControl.errors;\n const errorKey = Object.keys(errors)[0];\n if (errorKey === 'minlength' || errorKey === 'maxlength') {\n return this.transloco.translate(`formErrors.${errorKey}`, {\n length: errors[errorKey].requiredLength,\n });\n }\n return this.transloco.translate(`formErrors.${errorKey}`);\n }\n\n get effectivePlaceholder(): string {\n return this.placeholder || this.transloco.translate('phoneInput.placeholder');\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' phone-input-group';\n }\n return baseClasses;\n }\n\n flag(isoCode: string): string {\n return phoneCountryFlag(isoCode);\n }\n\n private sanitize(value: string): string {\n const digits = value.replace(/\\D/g, '');\n return this.maxNationalDigits !== null ? digits.slice(0, this.maxNationalDigits) : digits;\n }\n\n private nationalDigits(value: any): string {\n const digits = String(value ?? '').replace(/\\D/g, '');\n const dialDigits = this.dialCode.replace('+', '');\n return digits.startsWith(dialDigits) ? digits.slice(dialDigits.length) : digits;\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"phone-input-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"phone-input-required\">*</span>\n }\n </label>\n }\n\n <div class=\"phone-input-field\">\n <div class=\"phone-prefix-wrapper\">\n <ng-select\n class=\"phone-prefix-select\"\n [items]=\"phoneOptions\"\n bindValue=\"isoCode\"\n bindLabel=\"search\"\n [searchable]=\"true\"\n [clearable]=\"false\"\n [virtualScroll]=\"true\"\n placeholder=\"\"\n [disabled]=\"disabled || readonly\"\n [ngModel]=\"selectedIso\"\n (ngModelChange)=\"onCountryChange($event)\"\n >\n <ng-template ng-label-tmp let-item=\"item\">\n {{ flag(item.isoCode) }} {{ item.dialCode }}\n </ng-template>\n <ng-template ng-option-tmp let-item=\"item\">\n {{ flag(item.isoCode) }} {{ item.name }} ({{ item.dialCode }})\n </ng-template>\n </ng-select>\n </div>\n\n <input\n [id]=\"inputId\"\n [name]=\"name\"\n [placeholder]=\"effectivePlaceholder\"\n [required]=\"required\"\n [attr.minlength]=\"minNationalDigits\"\n [attr.maxlength]=\"maxNationalDigits\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [value]=\"nationalNumber\"\n [class.error]=\"showError\"\n [class.disabled]=\"disabled || readonly\"\n [attr.inputmode]=\"'numeric'\"\n [autocomplete]=\"'tel-national'\"\n (input)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n class=\"phone-input form-input\"\n />\n </div>\n\n @if (showError) {\n <div class=\"phone-input-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n","import {\n Component,\n Input,\n Self,\n Optional,\n OnInit,\n OnDestroy,\n Inject,\n PLATFORM_ID,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { TranslocoService } from '@jsverse/transloco';\nimport {\n Editor,\n NgxEditorComponent,\n NgxEditorMenuComponent,\n DEFAULT_TOOLBAR,\n Toolbar,\n toHTML,\n} from 'ngx-editor';\n\n@Component({\n selector: 'form-editor',\n standalone: true,\n imports: [\n FormsModule,\n CommonModule,\n ReactiveFormsModule,\n NgxEditorComponent,\n NgxEditorMenuComponent,\n ],\n templateUrl: './form-editor.component.html',\n styleUrls: ['./form-editor.component.scss'],\n host: { ngSkipHydration: 'true' },\n})\nexport class FormEditorComponent implements ControlValueAccessor, OnInit, OnDestroy {\n @Input() label = '';\n @Input() name = '';\n @Input() id = '';\n @Input() placeholder = '';\n @Input() required = false;\n @Input() readonly = false;\n @Input() toolbar: Toolbar = DEFAULT_TOOLBAR;\n @Input() fieldGroupClass = '';\n\n editor!: Editor;\n value: string = '';\n disabled = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n private subscription: Subscription | null = null;\n isBrowser: boolean;\n\n constructor(\n @Self() @Optional() public ngControl: NgControl,\n private transloco: TranslocoService,\n @Inject(PLATFORM_ID) platformId: object,\n ) {\n this.isBrowser = isPlatformBrowser(platformId);\n\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n ngOnInit(): void {\n if (this.isBrowser) {\n this.editor = new Editor();\n\n if (this.value) {\n this.editor.setContent(this.value);\n }\n\n this.subscription = this.editor.valueChanges\n .pipe(distinctUntilChanged())\n .subscribe((doc: Record<string, unknown>) => {\n this.value = toHTML(doc);\n this.onChange(this.value);\n this.onTouched();\n });\n }\n }\n\n ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n this.editor?.destroy();\n }\n\n writeValue(value: any): void {\n this.value = value ?? '';\n\n if (this.editor) {\n this.editor.setContent(value ?? null);\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n return control.invalid ? control.dirty || control.touched : false;\n }\n\n get errorMessage(): string {\n if (!this.ngControl?.errors) return '';\n\n const errors = this.ngControl.errors;\n const errorKey = Object.keys(errors)[0];\n\n if (errorKey === 'minlength') {\n return this.transloco.translate('formErrors.minlength', {\n length: errors[errorKey].requiredLength,\n });\n }\n\n if (errorKey === 'maxlength') {\n return this.transloco.translate('formErrors.maxlength', {\n length: errors[errorKey].requiredLength,\n });\n }\n\n return this.transloco.translate(\n `formErrors.${errorKey}`,\n {},\n this.transloco.translate('formErrors.invalidField'),\n );\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' w-full';\n }\n\n return baseClasses;\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"form-editor-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"form-editor-required\">*</span>\n }\n </label>\n }\n\n @if (isBrowser) {\n <div class=\"form-editor-wrapper\" [class.disabled]=\"disabled\">\n <ngx-editor [editor]=\"editor\" outputFormat=\"html\" [placeholder]=\"placeholder\">\n <ngx-editor-menu\n [editor]=\"editor\"\n [toolbar]=\"toolbar\"\n [disabled]=\"disabled\"\n ></ngx-editor-menu>\n </ngx-editor>\n </div>\n }\n\n @if (showError) {\n <div class=\"form-editor-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n","import {\n Component,\n Input,\n Self,\n Optional,\n ElementRef,\n HostListener,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n selector: 'color-picker',\n standalone: true,\n imports: [FormsModule, CommonModule, ReactiveFormsModule],\n templateUrl: './color-picker.component.html',\n styleUrls: ['./color-picker.component.scss'],\n})\nexport class ColorPickerComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() name = '';\n @Input() id = '';\n @Input() placeholder = '#000000';\n @Input() required = false;\n @Input() readonly = false;\n @Input() fieldGroupClass: string = '';\n @Input() showPreview = true;\n @Input() presetColors: string[] = [\n '#000000',\n '#FFFFFF',\n '#EF4444',\n '#F97316',\n '#F59E0B',\n '#EAB308',\n '#84CC16',\n '#22C55E',\n '#10B981',\n '#14B8A6',\n '#06B6D4',\n '#0EA5E9',\n '#3B82F6',\n '#6366F1',\n '#8B5CF6',\n '#A855F7',\n '#D946EF',\n '#EC4899',\n '#F43F5E',\n '#6B7280',\n ];\n @Output() colorChange = new EventEmitter<string>();\n\n value: string = '#000000';\n disabled = false;\n isDropdownOpen = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Self() @Optional() public ngControl: NgControl,\n private elementRef: ElementRef,\n ) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n const clickedInside = this.elementRef.nativeElement.contains(event.target);\n if (!clickedInside && this.isDropdownOpen) {\n this.isDropdownOpen = false;\n }\n }\n\n // Control value accessor methods\n writeValue(value: string): void {\n if (value) {\n this.value = value;\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onColorChange(color: string): void {\n this.value = color;\n this.onChange(color);\n this.onTouched();\n }\n\n onInputColorChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n this.value = input.value;\n this.onChange(input.value);\n this.onTouched();\n this.colorChange.emit(input.value);\n }\n\n toggleDropdown(): void {\n if (this.disabled || this.readonly) return;\n this.isDropdownOpen = !this.isDropdownOpen;\n }\n\n selectPresetColor(color: string): void {\n this.onColorChange(color);\n this.colorChange.emit(color);\n this.isDropdownOpen = false;\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n const dirty = control.dirty;\n const touched = control.touched;\n return control.invalid ? dirty || touched : false;\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' w-full';\n }\n\n return baseClasses;\n }\n\n isValidHexColor(color: string): boolean {\n return /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(color);\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"color-picker-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"color-picker-required\">*</span>\n }\n </label>\n }\n\n <div class=\"relative\">\n <div class=\"color-picker-row\">\n <!-- Color Input -->\n <div class=\"color-picker-input-wrapper\">\n <input\n type=\"text\"\n [id]=\"inputId\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onInputColorChange($event)\"\n (blur)=\"onTouched()\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n class=\"color-picker-input\"\n [class.disabled]=\"readonly\"\n [class.error]=\"showError\"\n pattern=\"^#[0-9A-Fa-f]{6}$\"\n />\n\n <!-- Native Color Picker (Hidden) -->\n <input\n type=\"color\"\n class=\"color-picker-native-input\"\n [disabled]=\"disabled || readonly\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onColorChange($event)\"\n />\n </div>\n\n <!-- Color Preview -->\n @if (showPreview) {\n <div class=\"color-picker-preview-wrapper\">\n <div\n class=\"color-picker-swatch\"\n [style.background-color]=\"value\"\n (click)=\"toggleDropdown()\"\n [class.disabled]=\"disabled || readonly\"\n ></div>\n </div>\n }\n </div>\n\n <!-- Color Presets Dropdown -->\n @if (isDropdownOpen && !disabled && !readonly) {\n <div class=\"color-picker-dropdown\">\n <div class=\"color-picker-presets\">\n @for (color of presetColors; track color) {\n <button\n type=\"button\"\n class=\"color-picker-preset-button\"\n [style.background-color]=\"color\"\n (click)=\"selectPresetColor(color)\"\n [attr.aria-label]=\"`Select color ${color}`\"\n ></button>\n }\n </div>\n\n <!-- Custom Color Input -->\n <div class=\"color-picker-custom\">\n <label class=\"color-picker-custom-label\">Custom color:</label>\n <input\n type=\"color\"\n class=\"color-picker-custom-input\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onColorChange($event)\"\n />\n </div>\n </div>\n }\n </div>\n\n @if (showError) {\n <div class=\"color-picker-error-message\">Please enter a valid hex color (e.g., #FF5733)</div>\n }\n</div>\n","import { Component, Input, Self, Optional } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { TranslocoService } from '@jsverse/transloco';\n\n@Component({\n selector: 'date-input',\n standalone: true,\n imports: [FormsModule, CommonModule, ReactiveFormsModule],\n templateUrl: './date-input.component.html',\n styleUrls: ['./date-input.component.scss'],\n})\nexport class DateInputComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() type = 'date';\n @Input() includeTime = false;\n @Input() name = '';\n @Input() id = '';\n @Input() placeholder = '';\n @Input() required = false;\n @Input() readonly = false;\n @Input() min: string | null = null;\n @Input() max: string | null = null;\n @Input() fieldGroupClass: string = '';\n @Input() dateFormat: string = 'yyyy-MM-dd';\n\n value: any = '';\n disabled = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Self() @Optional() public ngControl: NgControl,\n private transloco: TranslocoService,\n ) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n writeValue(value: any): void {\n if (value) {\n if (value instanceof Date) {\n this.value = this.formatDateForInput(value);\n } else if (typeof value === 'string') {\n this.value = value;\n } else {\n this.value = '';\n }\n } else {\n this.value = '';\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInput(value: any): void {\n this.value = value;\n const dateValue = value ? new Date(value) : null;\n this.onChange(dateValue);\n this.onTouched();\n }\n\n private formatDateForInput(date: Date): string {\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n\n if (this.includeTime) {\n const hours = String(date.getHours()).padStart(2, '0');\n const minutes = String(date.getMinutes()).padStart(2, '0');\n return `${year}-${month}-${day}T${hours}:${minutes}`;\n }\n\n return `${year}-${month}-${day}`;\n }\n\n private parseDateFromString(dateString: string): Date | null {\n if (!dateString) return null;\n const date = new Date(dateString);\n return isNaN(date.getTime()) ? null : date;\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n const dirty = control.dirty;\n const touched = control.touched;\n return control.invalid ? dirty || touched : false;\n }\n\n get errorMessage(): string {\n if (!this.ngControl?.errors) return '';\n\n const errors = this.ngControl.errors;\n const errorKey = Object.keys(errors)[0];\n\n if (errorKey === 'minlength') {\n return this.transloco.translate('formErrors.minlength', {\n length: errors[errorKey].requiredLength,\n });\n }\n\n return this.transloco.translate(\n `formErrors.${errorKey}`,\n {},\n this.transloco.translate('formErrors.invalidField'),\n );\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' w-full';\n }\n\n return baseClasses;\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"date-input-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"date-input-required\">*</span>\n }\n </label>\n }\n\n <div class=\"relative\">\n <input\n [type]=\"includeTime ? 'datetime-local' : type\"\n [id]=\"inputId\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [min]=\"min\"\n [max]=\"max\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n [disabled]=\"disabled\"\n class=\"date-input\"\n [class.disabled]=\"readonly\"\n [class.error]=\"showError\"\n [readonly]=\"readonly\"\n />\n </div>\n\n @if (showError) {\n <div class=\"date-input-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n","import { Component, Input, Self, Optional, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n selector: 'toggle-switch',\n standalone: true,\n imports: [FormsModule, CommonModule, ReactiveFormsModule],\n templateUrl: './toggle-switch.component.html',\n styleUrls: ['./toggle-switch.component.scss'],\n})\nexport class ToggleSwitchComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() name = '';\n @Input() id = '';\n @Input() required = false;\n @Input() disabled = false;\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\n @Input() fieldGroupClass: string = '';\n @Input() description = '';\n @Output() toggleClick = new EventEmitter<boolean>();\n\n value: boolean = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(@Self() @Optional() public ngControl: NgControl) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n // Control value accessor methods\n writeValue(value: any): void {\n this.value = value ?? false;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onToggle(): void {\n this.value = !this.value;\n this.onChange(this.value);\n this.onTouched();\n this.toggleClick.emit(this.value);\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' w-full';\n }\n\n return baseClasses;\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"toggle-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"toggle-required\">*</span>\n }\n </label>\n }\n\n <div class=\"toggle-container\">\n <button\n type=\"button\"\n role=\"switch\"\n [id]=\"inputId\"\n [name]=\"name\"\n [attr.aria-checked]=\"value\"\n [attr.aria-required]=\"required\"\n [disabled]=\"disabled\"\n [class]=\"\n 'toggle-switch ' +\n size +\n (value ? ' checked' : ' unchecked') +\n (disabled ? ' disabled' : '')\n \"\n (click)=\"onToggle()\"\n >\n <span\n [class]=\"\n 'toggle-thumb ' +\n size +\n (value ? ' checked' : ' unchecked') +\n (disabled ? ' disabled' : '')\n \"\n ></span>\n </button>\n\n @if (description) {\n <span class=\"toggle-description\">{{ description }}</span>\n }\n </div>\n\n <!-- Hidden checkbox for form submission and accessibility -->\n <input\n type=\"checkbox\"\n [id]=\"inputId + '-hidden'\"\n [name]=\"name\"\n [checked]=\"value\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n class=\"toggle-hidden\"\n (change)=\"onToggle()\"\n />\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FileType } from '../../../enums/file-type.enum';\nimport { UploadedFile } from '../../../interfaces/uploaded-file.interface';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\n\n@Component({\n selector: 'file-upload-preview',\n standalone: true,\n imports: [FormsModule, CommonModule, ReactiveFormsModule, AppButtonComponent],\n templateUrl: './file-upload-preview.component.html',\n styleUrls: ['./file-upload-preview.component.scss'],\n})\nexport class FileUploadPreviewComponent {\n @Input({ required: true }) file: UploadedFile = {} as UploadedFile;\n @Output() remove = new EventEmitter<UploadedFile>();\n\n removeFile(): void {\n this.remove.emit(this.file);\n }\n\n getFileType(file: UploadedFile): FileType {\n if (file.type.startsWith('image/')) return FileType.IMAGE;\n if (file.type === 'application/pdf') return FileType.PDF;\n if (\n file.type.includes('spreadsheet') ||\n file.type.includes('excel') ||\n file.extension === 'xlsx' ||\n file.extension === 'xls' ||\n file.extension === 'csv'\n ) {\n return FileType.EXCEL;\n }\n if (\n file.type.includes('word') ||\n file.type.includes('document') ||\n file.extension === 'docx' ||\n file.extension === 'doc'\n ) {\n return FileType.WORD;\n }\n if (file.type.startsWith('text/') || file.extension === 'txt') {\n return FileType.TEXT;\n }\n return FileType.DEFAULT;\n }\n\n getFileIcon(fileType: FileType): string {\n switch (fileType) {\n case FileType.IMAGE:\n return 'ri-image-line';\n case FileType.PDF:\n return 'ri-file-pdf-line';\n case FileType.EXCEL:\n return 'ri-file-excel-line';\n case FileType.WORD:\n return 'ri-file-word-line';\n case FileType.TEXT:\n return 'ri-file-text-line';\n default:\n return 'ri-file-line';\n }\n }\n\n getFileTypeIcon(file: UploadedFile): string {\n return this.getFileIcon(this.getFileType(file));\n }\n\n formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 Bytes';\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n }\n}\n","<div class=\"file-preview-item\">\n <div class=\"file-preview-content\">\n <!-- File Preview/Icon -->\n <div class=\"file-preview-icon-wrapper\">\n @if (file.preview) {\n <img [src]=\"file.preview\" [alt]=\"file.name\" class=\"file-preview-image\" />\n } @else {\n <div class=\"file-preview-icon-placeholder\">\n <i [class]=\"getFileTypeIcon(file) + ' file-preview-icon'\"></i>\n </div>\n }\n </div>\n\n <!-- File Info -->\n <div class=\"file-preview-info\">\n <p class=\"file-preview-name\">\n {{ file.name }}\n </p>\n <p class=\"file-preview-meta\">\n @if (!!file.size) {\n {{ formatFileSize(file.size) }}\n }\n @if (file.extension) {\n • {{ file.extension.toUpperCase() }}\n }\n </p>\n </div>\n </div>\n\n <!-- Actions -->\n <div class=\"file-preview-actions\">\n <app-button\n icon=\"ri-delete-bin-line\"\n (clicked)=\"removeFile()\"\n variant=\"primary\"\n size=\"xs\"\n title=\"Eliminar archivo\"\n />\n </div>\n</div>\n","import { Component, Input, Self, Optional, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { TranslocoService, TranslocoModule } from '@jsverse/transloco';\nimport { FileUploadConfig } from '../../../interfaces/file-upload-config.interface';\nimport { UploadedFile } from '../../../interfaces/uploaded-file.interface';\nimport { FileType } from '../../../enums/file-type.enum';\nimport { FileUploadPreviewComponent } from '../file-upload-preview/file-upload-preview.component';\n\n@Component({\n selector: 'file-upload',\n standalone: true,\n imports: [\n FormsModule,\n CommonModule,\n ReactiveFormsModule,\n TranslocoModule,\n FileUploadPreviewComponent,\n ],\n templateUrl: './file-upload.component.html',\n styleUrls: ['./file-upload.component.scss'],\n})\nexport class FileUploadComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() name = '';\n @Input() id = '';\n @Input() required = false;\n @Input() readonly = false;\n @Input() fieldGroupClass: string = '';\n @Input() config: FileUploadConfig = {};\n @Input() accept: string = '*/*';\n\n @Output() fileSelected = new EventEmitter<UploadedFile[]>();\n @Output() fileRemoved = new EventEmitter<UploadedFile>();\n @Output() validationError = new EventEmitter<string>();\n\n files: UploadedFile[] = [];\n disabled = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n dragOver = false;\n\n constructor(\n @Self() @Optional() public ngControl: NgControl,\n private transloco: TranslocoService,\n ) {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n writeValue(value: UploadedFile[] | null): void {\n this.files = value || [];\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onFileSelect(event: Event): void {\n const input = event.target as HTMLInputElement;\n if (input.files && input.files.length > 0) {\n this.handleFiles(Array.from(input.files));\n }\n input.value = '';\n }\n\n onDrop(event: DragEvent): void {\n event.preventDefault();\n this.dragOver = false;\n\n if (event.dataTransfer?.files && event.dataTransfer.files.length > 0) {\n this.handleFiles(Array.from(event.dataTransfer.files));\n }\n }\n\n onDragOver(event: DragEvent): void {\n event.preventDefault();\n this.dragOver = true;\n }\n\n onDragLeave(event: DragEvent): void {\n event.preventDefault();\n this.dragOver = false;\n }\n\n private async handleFiles(fileList: File[]): Promise<void> {\n const newFiles: UploadedFile[] = [];\n\n for (const file of fileList) {\n const validationError = this.validateFile(file);\n if (validationError) {\n this.validationError.emit(validationError);\n continue;\n }\n\n const uploadedFile: UploadedFile = {\n file,\n name: file.name,\n size: file.size,\n type: file.type,\n extension: this.getFileExtension(file.name),\n };\n\n if (this.isImage(file)) {\n uploadedFile.preview = await this.generateImagePreview(file);\n }\n\n newFiles.push(uploadedFile);\n }\n\n if (this.config.multiple) {\n const maxFiles = this.config.maxFiles || 10;\n const totalFiles = [...this.files, ...newFiles].slice(0, maxFiles);\n this.files = totalFiles;\n } else {\n this.files = newFiles.slice(0, 1);\n }\n\n this.onChange(this.files);\n this.onTouched();\n this.fileSelected.emit(this.files);\n }\n\n private validateFile(file: File): string | null {\n if (this.config.maxFileSize && file.size > this.config.maxFileSize) {\n const maxSizeMB = this.config.maxFileSize / (1024 * 1024);\n return this.transloco.translate('fileUpload.sizeError', {\n fileName: file.name,\n maxSize: maxSizeMB.toFixed(2),\n });\n }\n\n if (this.config.allowedExtensions && this.config.allowedExtensions.length > 0) {\n const extension = this.getFileExtension(file.name);\n if (!this.config.allowedExtensions.includes(extension)) {\n return this.transloco.translate('fileUpload.extensionError', {\n fileName: file.name,\n extensions: this.config.allowedExtensions.join(', '),\n });\n }\n }\n\n return null;\n }\n\n private getFileExtension(filename: string): string {\n return filename.split('.').pop()?.toLowerCase() || '';\n }\n\n private isImage(file: File): boolean {\n return file.type.startsWith('image/');\n }\n\n private async generateImagePreview(file: File): Promise<string> {\n return new Promise((resolve) => {\n const reader = new FileReader();\n reader.onload = (e) => {\n resolve(e.target?.result as string);\n };\n reader.readAsDataURL(file);\n });\n }\n\n removeFile(index: number): void {\n const removedFile = this.files[index];\n this.files.splice(index, 1);\n this.onChange(this.files);\n this.onTouched();\n this.fileRemoved.emit(removedFile);\n }\n\n getFileType(file: UploadedFile): FileType {\n if (file.type.startsWith('image/')) return FileType.IMAGE;\n if (file.type === 'application/pdf') return FileType.PDF;\n if (\n file.type.includes('spreadsheet') ||\n file.type.includes('excel') ||\n file.extension === 'xlsx' ||\n file.extension === 'xls' ||\n file.extension === 'csv'\n ) {\n return FileType.EXCEL;\n }\n if (\n file.type.includes('word') ||\n file.type.includes('document') ||\n file.extension === 'docx' ||\n file.extension === 'doc'\n ) {\n return FileType.WORD;\n }\n if (file.type.startsWith('text/') || file.extension === 'txt') {\n return FileType.TEXT;\n }\n return FileType.DEFAULT;\n }\n\n getFileIcon(fileType: FileType): string {\n switch (fileType) {\n case FileType.IMAGE:\n return 'ri-image-line';\n case FileType.PDF:\n return 'ri-file-pdf-line';\n case FileType.EXCEL:\n return 'ri-file-excel-line';\n case FileType.WORD:\n return 'ri-file-word-line';\n case FileType.TEXT:\n return 'ri-file-text-line';\n default:\n return 'ri-file-line';\n }\n }\n\n getFileTypeIcon(file: UploadedFile): string {\n return this.getFileIcon(this.getFileType(file));\n }\n\n triggerFileInput(): void {\n const inputElement = document.getElementById(this.inputId) as HTMLInputElement;\n if (inputElement) {\n inputElement.click();\n }\n }\n\n formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 Bytes';\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n }\n\n get inputId(): string {\n return this.id || this.name;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n const dirty = control.dirty;\n const touched = control.touched;\n return control.invalid ? dirty || touched : false;\n }\n\n get errorMessage(): string {\n if (!this.ngControl?.errors) return '';\n\n const errors = this.ngControl.errors;\n const errorKey = Object.keys(errors)[0];\n\n return this.transloco.translate(\n `formErrors.${errorKey}`,\n {},\n this.transloco.translate('formErrors.invalidField'),\n );\n }\n\n get fieldGroupClasses(): string {\n let baseClasses = '';\n\n if (this.fieldGroupClass) {\n baseClasses += ` ${this.fieldGroupClass}`;\n } else {\n baseClasses += ' w-full';\n }\n\n return baseClasses;\n }\n\n get uploadAreaClasses(): string {\n const baseClasses = 'file-upload-area';\n\n if (this.disabled) {\n return `${baseClasses} disabled`;\n }\n\n if (this.dragOver) {\n return `${baseClasses} drag-over`;\n }\n\n return baseClasses;\n }\n}\n","<div [class]=\"fieldGroupClasses\">\n @if (label) {\n <label [for]=\"inputId\" class=\"file-upload-label\">\n {{ label }}\n\n @if (required) {\n <span class=\"file-upload-required\">*</span>\n }\n </label>\n }\n\n <!-- Upload Area -->\n <div\n class=\"file-upload-container\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n >\n <div [class]=\"uploadAreaClasses\" (click)=\"!disabled && triggerFileInput()\">\n <input\n [id]=\"inputId\"\n [name]=\"name\"\n type=\"file\"\n [accept]=\"accept\"\n [multiple]=\"config.multiple\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n (change)=\"onFileSelect($event)\"\n (blur)=\"onTouched()\"\n class=\"file-upload-hidden\"\n />\n\n <div class=\"file-upload-content\">\n <i class=\"ri-upload-cloud-2-line file-upload-icon\"></i>\n <div class=\"file-upload-text\">\n <p class=\"file-upload-primary-text\">\n @if (config.multiple) {\n {{ 'fileUpload.dropMultiple' | transloco }}\n } @else {\n {{ 'fileUpload.dropSingle' | transloco }}\n }\n </p>\n <p class=\"file-upload-secondary-text\">\n @if (config.allowedExtensions && config.allowedExtensions.length > 0) {\n {{ 'fileUpload.allowedExtensions' | transloco }}\n {{ config.allowedExtensions.join(', ') }}\n }\n @if (config.maxFileSize) {\n • {{ 'fileUpload.maxSize' | transloco }} {{ formatFileSize(config.maxFileSize) }}\n }\n </p>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Files Preview -->\n @if (files.length > 0) {\n <div class=\"file-upload-list\">\n @for (file of files; track file; let i = $index) {\n <file-upload-preview [file]=\"file\" (remove)=\"removeFile(i)\" />\n }\n </div>\n }\n\n <!-- Validation Error -->\n @if (showError) {\n <div class=\"file-upload-error\">\n {{ errorMessage }}\n </div>\n }\n\n <!-- File Type Legend -->\n @if (files.length === 0) {\n <div class=\"file-upload-legend\">\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-image-line file-upload-legend-icon-blue\"></i>\n <span>{{ 'fileUpload.fileTypeImages' | transloco }}</span>\n </div>\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-file-pdf-line file-upload-legend-icon-red\"></i>\n <span>PDF</span>\n </div>\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-file-excel-line file-upload-legend-icon-green\"></i>\n <span>{{ 'fileUpload.fileTypeExcel' | transloco }}</span>\n </div>\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-file-word-line file-upload-legend-icon-word\"></i>\n <span>{{ 'fileUpload.fileTypeWord' | transloco }}</span>\n </div>\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-file-text-line file-upload-legend-icon-gray\"></i>\n <span>{{ 'fileUpload.fileTypeText' | transloco }}</span>\n </div>\n <div class=\"file-upload-legend-item\">\n <i class=\"ri-file-line file-upload-legend-icon-muted\"></i>\n <span>{{ 'fileUpload.fileTypeOther' | transloco }}</span>\n </div>\n </div>\n }\n</div>\n","import {\n Component,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n OnChanges,\n SimpleChanges,\n ViewEncapsulation,\n forwardRef,\n inject,\n signal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, NgControl, NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { Subject, Observable, of } from 'rxjs';\nimport {\n debounceTime,\n distinctUntilChanged,\n switchMap,\n takeUntil,\n catchError,\n map,\n} from 'rxjs/operators';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\n\nexport interface AsyncSelectConfig<T = any> {\n load: (params?: { search?: string; parentId?: number | number[] }) => Observable<T>;\n map: (response: T) => SelectOption[];\n}\n\n@Component({\n selector: 'async-select',\n standalone: true,\n imports: [CommonModule, FormsModule, NgSelectModule],\n templateUrl: './async-select.component.html',\n styleUrls: ['./async-select.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AsyncSelectComponent),\n multi: true,\n },\n ],\n})\nexport class AsyncSelectComponent implements OnInit, OnDestroy, OnChanges, ControlValueAccessor {\n @Input() config?: AsyncSelectConfig<any>;\n @Input() items: SelectOption[] = [];\n @Input() parentId?: number | number[] | null;\n @Input() label = '';\n @Input() placeholder = 'Seleccione...';\n @Input() name = '';\n @Input() required = false;\n @Input() multiple = false;\n @Input() clearable = true;\n @Input() searchable = true;\n @Input() loading = false;\n @Input() virtualScroll = false;\n @Input() notFoundText = 'No se encontraron resultados';\n @Input() bindLabel = 'label';\n @Input() bindValue = 'value';\n @Input() disabled = false;\n\n value: any = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n displayItems: SelectOption[] = [];\n loadingSignal = signal(false);\n private searchTerm$ = new Subject<string>();\n private destroy$ = new Subject<void>();\n private injector = inject(Injector);\n private _ngControl: NgControl | null = null;\n\n constructor() {}\n\n private get ngControl(): NgControl | null {\n if (!this._ngControl) {\n this._ngControl = this.injector.get(NgControl, null);\n }\n return this._ngControl;\n }\n\n ngOnInit() {\n this.setupSearch();\n if (this.config) {\n this.loadAndMap();\n } else {\n this.displayItems = this.items;\n this.searchMode();\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['parentId'] && !changes['parentId'].firstChange) {\n this.handleParentIdChange();\n }\n if (changes['items'] && !changes['items'].firstChange && !this.config) {\n this.displayItems = this.items;\n }\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private setupSearch() {\n this.searchTerm$\n .pipe(\n debounceTime(400),\n distinctUntilChanged(),\n switchMap((term) => {\n if (this.config) {\n this.loadingSignal.set(true);\n return this.fetchData({ search: term });\n }\n return of(this.displayItems);\n }),\n takeUntil(this.destroy$),\n )\n .subscribe((options) => {\n this.displayItems = options;\n this.loadingSignal.set(false);\n });\n }\n\n private searchMode() {\n this.searchTerm$\n .pipe(\n debounceTime(400),\n distinctUntilChanged(),\n switchMap((term) => {\n this.loadingSignal.set(true);\n setTimeout(() => this.loadingSignal.set(false), 150);\n return of(\n this.items.filter((item) => item.label.toLowerCase().includes(term.toLowerCase())),\n );\n }),\n takeUntil(this.destroy$),\n )\n .subscribe((options) => {\n this.displayItems = options;\n });\n }\n\n private loadAndMap(params?: { search?: string; parentId?: number | number[] }) {\n if (!this.config) return;\n this.loadingSignal.set(true);\n this.fetchData(params)\n .pipe(takeUntil(this.destroy$))\n .subscribe((options) => {\n this.displayItems = options;\n this.loadingSignal.set(false);\n });\n }\n\n private fetchData(params?: {\n search?: string;\n parentId?: number | number[];\n }): Observable<SelectOption[]> {\n if (!this.config) return of([]);\n\n const mergedParams = { ...params };\n if (this.hasParentId() && mergedParams.parentId == null) {\n mergedParams.parentId = this.parentId!;\n }\n\n return this.config.load(mergedParams).pipe(\n map((res) => this.config!.map(res)),\n catchError(() => of([])),\n );\n }\n\n private hasParentId(): boolean {\n if (this.parentId == null) return false;\n return Array.isArray(this.parentId) ? this.parentId.length > 0 : true;\n }\n\n private handleParentIdChange() {\n this.value = this.multiple ? [] : null;\n this.onChange(this.value);\n\n if (this.hasParentId() && this.config) {\n this.loadAndMap({ parentId: this.parentId! });\n } else if (this.config) {\n this.displayItems = [];\n this.loadingSignal.set(false);\n }\n }\n\n onSearch(event: any) {\n const term = event?.term || '';\n this.searchTerm$.next(term);\n }\n\n onSelectChange(value: any) {\n this.value = value;\n this.onChange(value);\n this.onTouched();\n }\n\n get typeahead$(): Subject<string> {\n return this.searchTerm$;\n }\n\n get showError(): boolean {\n if (!this.ngControl || !this.ngControl.control) return false;\n const control = this.ngControl.control;\n return control.invalid ? control.dirty || control.touched : false;\n }\n\n get errorMessage(): string {\n if (!this.ngControl?.errors) return '';\n const errorKey = Object.keys(this.ngControl.errors)[0];\n return 'Campo inválido';\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","<div class=\"async-select-wrapper\">\n @if (label) {\n <label class=\"async-select-label\">\n {{ label }}\n @if (required) {\n <span class=\"async-select-required\">*</span>\n }\n </label>\n }\n\n <ng-select\n [items]=\"displayItems\"\n [multiple]=\"multiple\"\n [searchable]=\"searchable\"\n [clearable]=\"clearable\"\n [placeholder]=\"placeholder\"\n [loading]=\"loading || loadingSignal()\"\n [virtualScroll]=\"virtualScroll\"\n [notFoundText]=\"notFoundText\"\n [bindLabel]=\"bindLabel\"\n [bindValue]=\"bindValue\"\n [ngModel]=\"value\"\n [typeahead]=\"typeahead$\"\n [closeOnSelect]=\"!multiple\"\n [disabled]=\"disabled\"\n [class.error]=\"showError\"\n (ngModelChange)=\"onSelectChange($event)\"\n (blur)=\"onTouched()\"\n (search)=\"onSearch($event)\"\n />\n\n @if (showError) {\n <div class=\"async-select-error-message\">\n {{ errorMessage }}\n </div>\n }\n</div>\n","import { Component, signal, ViewEncapsulation, WritableSignal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { TranslocoModule, TranslocoService } from '@jsverse/transloco';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\nimport { FormInputComponent } from '../../forms/form-input/form-input.component';\nimport { AppModalComponent } from '../../modals/app-modal/app-modal.component';\nimport { ChangePasswordFormService } from '../../../services/change-password-form.service';\nimport { MustMatchValidator } from '../../../validators/must-match.validator';\nimport { CustomerService } from '../../../services/customer.service';\nimport { AdminService } from '../../../services/admin.service';\nimport { ToastService } from '../../../services/toast.service';\n\n@Component({\n selector: 'change-password-form',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n TranslocoModule,\n AppButtonComponent,\n FormInputComponent,\n AppModalComponent,\n ],\n providers: [AdminService, CustomerService],\n templateUrl: './change-password-form.component.html',\n styleUrls: ['./change-password-form.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class ChangePasswordFormComponent {\n changePasswordForm: FormGroup;\n loading: WritableSignal<boolean> = signal(false);\n\n constructor(\n private fb: FormBuilder,\n private changePasswordFormService: ChangePasswordFormService,\n private customerService: CustomerService,\n private adminService: AdminService,\n private toastService: ToastService,\n private transloco: TranslocoService,\n ) {\n this.changePasswordForm = this.fb.group(\n {\n password: ['', [Validators.required, Validators.minLength(6)]],\n confirm_password: ['', [Validators.required, Validators.minLength(6)]],\n },\n {\n validators: MustMatchValidator('password', 'confirm_password'),\n },\n );\n }\n\n get isOpen() {\n return this.changePasswordFormService.modalIsOpen;\n }\n\n get resourceId() {\n return this.changePasswordFormService.resourceId;\n }\n\n onCloseModal(): void {\n this.changePasswordForm.reset();\n this.changePasswordFormService.close();\n }\n\n onConfirmDelete(): void {\n this.loading.set(true);\n\n const service = this.changePasswordFormService.isAdminMode()\n ? this.adminService\n : this.customerService;\n\n const isAdmin = this.changePasswordFormService.isAdminMode();\n const successKey = isAdmin ? 'changePassword.adminSuccess' : 'changePassword.customerSuccess';\n const errorKey = isAdmin ? 'changePassword.adminError' : 'changePassword.customerError';\n\n service.updateOne(this.resourceId(), this.changePasswordForm.value).subscribe({\n next: () => {\n this.toastService.show(this.transloco.translate(successKey), 'success');\n this.changePasswordForm.reset();\n this.changePasswordFormService.close();\n this.loading.set(false);\n },\n error: (error: any) => {\n console.error('Error al actualizar contraseña:', error);\n this.toastService.show(this.transloco.translate(errorKey), 'error');\n this.loading.set(false);\n },\n });\n }\n}\n","@if (isOpen()) {\n <app-modal\n [title]=\"'changePassword.title' | transloco\"\n [isOpen]=\"isOpen\"\n (closeModal)=\"onCloseModal()\"\n >\n <form\n [formGroup]=\"changePasswordForm\"\n method=\"POST\"\n class=\"change-password-form-body\"\n (ngSubmit)=\"onConfirmDelete()\"\n >\n <form-input\n [label]=\"'changePassword.newPasswordLabel' | transloco\"\n [placeholder]=\"'changePassword.newPasswordPlaceholder' | transloco\"\n name=\"password\"\n type=\"password\"\n class=\"change-password-form-field\"\n [required]=\"true\"\n autocomplete=\"off\"\n formControlName=\"password\"\n />\n\n <form-input\n [label]=\"'changePassword.confirmPasswordLabel' | transloco\"\n [placeholder]=\"'changePassword.confirmPasswordPlaceholder' | transloco\"\n name=\"confirm_password\"\n type=\"password\"\n class=\"change-password-form-field\"\n [required]=\"true\"\n autocomplete=\"off\"\n formControlName=\"confirm_password\"\n />\n\n <div class=\"change-password-form-actions\">\n <app-button\n variant=\"tertiary\"\n [text]=\"'changePassword.cancel' | transloco\"\n (click)=\"onCloseModal()\"\n size=\"sm\"\n />\n\n <app-button\n [disabled]=\"loading() || changePasswordForm.invalid || changePasswordForm.pristine\"\n [loading]=\"loading()\"\n type=\"submit\"\n variant=\"primary\"\n [text]=\"'changePassword.save' | transloco\"\n [loadingText]=\"'changePassword.saving' | transloco\"\n size=\"sm\"\n />\n </div>\n </form>\n </app-modal>\n}\n","import { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n EventEmitter,\n Output,\n WritableSignal,\n signal,\n PLATFORM_ID,\n Inject,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { AbstractControl, FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { ControlValueAccessor, Validator } from '@angular/forms';\nimport { FormSelectComponent } from '../../../components/forms/form-select/form-select.component';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { AdminService } from '../../../services/admin.service';\nimport { Admin } from '../../../interfaces/admins/admin.interface';\n\n@Component({\n selector: 'admin-select',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormSelectComponent],\n templateUrl: './admin-select.component.html',\n styleUrls: ['./admin-select.component.scss'],\n})\nexport class AdminSelectComponent implements OnInit, OnDestroy, ControlValueAccessor, Validator {\n @Input() label: string = 'Equipo de trabajo';\n @Input() placeholder: string = 'Selecciona un equipo de trabajo';\n @Input() name: string = 'admin_id';\n @Input() required: boolean = false;\n @Input() readonly: boolean = false;\n @Input() showError: boolean = true;\n @Input() customClass: string = '';\n @Input() control?: AbstractControl | null = null;\n\n @Output() adminChange = new EventEmitter<number | null>();\n\n admins: WritableSignal<SelectOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(false);\n private destroy$ = new Subject<void>();\n\n // ControlValueAccessor properties\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private adminService: AdminService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.loadAdmins();\n }\n }\n\n // Update the formControl getter to handle the AbstractControl\n get formControl(): FormControl {\n return this.control as FormControl;\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n loadAdmins() {\n this.loading.set(true);\n this.adminService\n .fetchAdmins({})\n .pipe(takeUntil(this.destroy$))\n .subscribe({\n next: ({ data: { admins } }: { data: { admins: Admin[] } }) => {\n this.admins.set(\n admins?.map((admin) => ({\n value: admin.id,\n label: `${admin.first_name} ${admin.last_name} - ${admin.email}`,\n })) || [],\n );\n this.loading.set(false);\n },\n error: () => {\n this.admins.set([]);\n this.loading.set(false);\n },\n });\n }\n\n // In admin-select.component.ts\n onAdminSelected(event: Event) {\n const select = event.target as HTMLSelectElement;\n const value = select.value ? Number(select.value) : null;\n\n // Update the local value\n this.value = value;\n\n // Update the form control if it exists\n if (this.control) {\n this.control.setValue(value);\n this.control.markAsTouched();\n }\n\n // Emit the change event\n this.adminChange.emit(value);\n }\n\n // ControlValueAccessor methods\n writeValue(value: number | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n // Validator method\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n\n // Helper method to check if control is invalid\n get isInvalid(): boolean {\n return false;\n }\n}\n","<form-select\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name || 'country_id'\"\n [class]=\"customClass\"\n [options]=\"admins()\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [formControl]=\"formControl\"\n (change)=\"onAdminSelected($event)\"\n/>\n","import {\n Component,\n OnInit,\n OnDestroy,\n forwardRef,\n Input,\n Output,\n EventEmitter,\n ViewEncapsulation,\n OnChanges,\n SimpleChanges,\n WritableSignal,\n signal,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n FormControl,\n NG_VALIDATORS,\n Validator,\n AbstractControl,\n} from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { CitiesService } from '../../../services/cities.service';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FormSelectComponent } from '../../../components/forms/form-select/form-select.component';\nimport { CitiesResponse } from '../../../interfaces/cities/cities-response.interface';\nimport { formatCitiesResponseToSelect } from '../../../helpers/format-cities-response-to-select.helper';\n\n@Component({\n selector: 'city-select',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormSelectComponent],\n templateUrl: './city-select.component.html',\n styleUrls: ['./city-select.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CitySelectComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => CitySelectComponent),\n multi: true,\n },\n ],\n})\nexport class CitySelectComponent\n implements OnInit, OnDestroy, OnChanges, ControlValueAccessor, Validator\n{\n @Input() label: string = 'Ciudad';\n @Input() name: string = 'city_id';\n @Input() placeholder: string = 'Selecciona una ciudad';\n @Input() required: boolean = false;\n @Input() disabled: boolean = false;\n @Input() readonly: boolean = false;\n @Input() stateId: number | null = null;\n @Input() showError: boolean = true;\n @Input() customClass: string = '';\n @Input() control?: AbstractControl | null = null;\n\n @Output() cityChange = new EventEmitter<number | null>();\n\n cities: WritableSignal<SelectOption[]> = signal([]);\n loading: boolean = false;\n private destroy$ = new Subject<void>();\n\n // ControlValueAccessor properties\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(private citiesService: CitiesService) {}\n\n // Update the formControl getter to handle the AbstractControl\n get formControl(): FormControl {\n return this.control as FormControl;\n }\n\n ngOnInit() {\n this.loadCities();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['stateId'] && !changes['stateId'].firstChange) {\n this.value = null;\n this.onChange(null);\n this.cityChange.emit(null);\n\n if (this.stateId) {\n this.loadCities();\n } else {\n this.cities.set([]);\n }\n }\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n loadCities() {\n this.loading = true;\n this.citiesService\n .fetchCities({ state_id: this.stateId ?? undefined })\n .pipe(takeUntil(this.destroy$))\n .subscribe({\n next: (response: CitiesResponse) => {\n this.cities.set(formatCitiesResponseToSelect(response));\n this.loading = false;\n },\n error: () => {\n this.cities.set([]);\n this.loading = false;\n },\n });\n }\n\n onCitySelected(event: Event) {\n const select = event.target as HTMLSelectElement;\n const value = select.value ? Number(select.value) : null;\n this.value = value;\n this.onChange(value);\n this.onTouched();\n this.cityChange.emit(value);\n }\n\n // ControlValueAccessor methods\n writeValue(value: number | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n // Validator method\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n\n get isInvalid(): boolean {\n return false;\n }\n\n get isDisabled(): boolean {\n return this.disabled || this.readonly || !this.stateId || this.loading;\n }\n}\n","<form-select\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name\"\n [class]=\"customClass\"\n [required]=\"required\"\n [options]=\"cities()\"\n [readonly]=\"readonly\"\n [formControl]=\"formControl\"\n (change)=\"onCitySelected($event)\"\n/>\n","import { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n EventEmitter,\n Output,\n WritableSignal,\n signal,\n PLATFORM_ID,\n Inject,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { AbstractControl, FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { ControlValueAccessor, Validator } from '@angular/forms';\nimport { FormSelectComponent } from '../../../components/forms/form-select/form-select.component';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { CountryService } from '../../../services/country.service';\n\n@Component({\n selector: 'country-select',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormSelectComponent],\n templateUrl: './country-select.component.html',\n styleUrls: ['./country-select.component.scss'],\n})\nexport class CountrySelectComponent implements OnInit, OnDestroy, ControlValueAccessor, Validator {\n @Input() label: string = 'País';\n @Input() placeholder: string = 'Selecciona un país';\n @Input() name: string = 'country_id';\n @Input() required: boolean = false;\n @Input() readonly: boolean = false;\n @Input() showError: boolean = true;\n @Input() customClass: string = '';\n @Input() control?: AbstractControl | null = null;\n\n @Output() countryChange = new EventEmitter<number | null>();\n\n countries: WritableSignal<SelectOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(false);\n private destroy$ = new Subject<void>();\n\n // ControlValueAccessor properties\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private countryService: CountryService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.loadCountries();\n }\n }\n\n // Update the formControl getter to handle the AbstractControl\n get formControl(): FormControl {\n return this.control as FormControl;\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n loadCountries() {\n this.loading.set(true);\n this.countryService\n .fetchCountries({})\n .pipe(takeUntil(this.destroy$))\n .subscribe({\n next: ({ data: { countries } }: { data: { countries: any[] } }) => {\n this.countries.set(\n countries?.map((country) => ({\n value: country.id,\n label: country.name,\n })) || [],\n );\n this.loading.set(false);\n },\n error: () => {\n this.countries.set([]);\n this.loading.set(false);\n },\n });\n }\n\n // In country-select.component.ts\n onCountrySelected(event: Event) {\n const select = event.target as HTMLSelectElement;\n const value = select.value ? Number(select.value) : null;\n\n // Update the local value\n this.value = value;\n\n // Update the form control if it exists\n if (this.control) {\n this.control.setValue(value);\n this.control.markAsTouched();\n }\n\n // Emit the change event\n this.countryChange.emit(value);\n }\n\n // ControlValueAccessor methods\n writeValue(value: number | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n // Validator method\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n\n // Helper method to check if control is invalid\n get isInvalid(): boolean {\n return false;\n }\n}\n","<form-select\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name || 'country_id'\"\n [class]=\"customClass\"\n [options]=\"countries()\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [formControl]=\"formControl\"\n (change)=\"onCountrySelected($event)\"\n></form-select>\n","import {\n Component,\n OnInit,\n OnDestroy,\n forwardRef,\n Input,\n Output,\n EventEmitter,\n ViewEncapsulation,\n OnChanges,\n SimpleChanges,\n WritableSignal,\n signal,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n FormControl,\n NG_VALIDATORS,\n Validator,\n AbstractControl,\n} from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { StatesService } from '../../../services/states.service';\nimport { FormSelectComponent } from '../../../components/forms/form-select/form-select.component';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\n\n@Component({\n selector: 'state-select',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormSelectComponent],\n templateUrl: './state-select.component.html',\n styleUrls: ['./state-select.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => StateSelectComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => StateSelectComponent),\n multi: true,\n },\n ],\n})\nexport class StateSelectComponent\n implements OnInit, OnDestroy, OnChanges, ControlValueAccessor, Validator\n{\n @Input() label: string = 'Departamento';\n @Input() name: string = 'state_id';\n @Input() placeholder: string = 'Selecciona un departamento';\n @Input() required: boolean = false;\n @Input() readonly: boolean = false;\n @Input() countryId: number | null = null;\n @Input() showError: boolean = true;\n @Input() customClass: string = '';\n @Input() control?: AbstractControl | null = null;\n\n @Output() stateChange = new EventEmitter<number | null>();\n\n states: WritableSignal<SelectOption[]> = signal([]);\n loading: boolean = false;\n private destroy$ = new Subject<void>();\n\n // ControlValueAccessor properties\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(private statesService: StatesService) {}\n\n ngOnInit() {\n this.loadStates();\n }\n\n // Update the formControl getter to handle the AbstractControl\n get formControl(): FormControl {\n return this.control as FormControl;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['countryId'] && !changes['countryId'].firstChange) {\n this.value = null;\n this.onChange(null);\n this.stateChange.emit(null);\n\n if (this.countryId) {\n this.loadStates();\n } else {\n this.states.set([]);\n }\n }\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n loadStates() {\n this.loading = true;\n this.statesService\n .fetchStates({ country_id: this.countryId! })\n .pipe(takeUntil(this.destroy$))\n .subscribe({\n next: ({ data: { states } }: { data: { states: any[] } }) => {\n this.states.set(states?.map(({ id, name }) => ({ value: id, label: name })) || []);\n this.loading = false;\n },\n error: () => {\n this.states.set([]);\n this.loading = false;\n },\n });\n }\n\n onStateSelected(event: Event) {\n const select = event.target as HTMLSelectElement;\n const value = select.value ? Number(select.value) : null;\n this.value = value;\n this.onChange(value);\n this.onTouched();\n this.stateChange.emit(value);\n }\n\n writeValue(value: number | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n\n get isInvalid(): boolean {\n return false;\n }\n\n get isDisabled(): boolean {\n return this.readonly || !this.countryId || this.loading;\n }\n}\n","<form-select\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name || 'state_id'\"\n [class]=\"customClass\"\n [options]=\"states()\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [formControl]=\"formControl\"\n (change)=\"onStateSelected($event)\"\n></form-select>\n","import { Component, Input, EventEmitter, Output, forwardRef } from '@angular/core';\nimport {\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n ControlValueAccessor,\n Validator,\n FormControl,\n FormsModule,\n} from '@angular/forms';\nimport {\n AsyncSelectComponent,\n AsyncSelectConfig,\n} from '../../../components/forms/async-select/async-select.component';\nimport { CustomerService } from '../../../services/customer.service';\nimport { Customer } from '../../../interfaces/customers/customer.interface';\nimport { getCustomerFullname } from '../../../helpers/get-formatted-customer.helper';\n\n@Component({\n selector: 'customer-select',\n standalone: true,\n imports: [AsyncSelectComponent, FormsModule],\n templateUrl: './customer-select.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CustomerSelectComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => CustomerSelectComponent),\n multi: true,\n },\n ],\n})\nexport class CustomerSelectComponent implements ControlValueAccessor, Validator {\n @Input() label: string = 'Cliente';\n @Input() placeholder: string = 'Selecciona un cliente';\n @Input() name: string = 'customer_id';\n @Input() required: boolean = false;\n @Input() readonly: boolean = false;\n @Input() multiple = false;\n\n @Output() customerChange = new EventEmitter<number | null>();\n\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n config: AsyncSelectConfig = {\n load: (params) => this.customerService.fetchCustomers({ search: params?.search || '' }),\n map: (res) =>\n res.data.customers?.map((customer: Customer) => ({\n value: customer.id,\n label: `${getCustomerFullname(customer)} - ${customer.email}`.trim(),\n })) || [],\n };\n\n constructor(private customerService: CustomerService) {}\n\n onInternalChange(value: any) {\n this.value = value;\n this.onChange(value);\n this.onTouched();\n this.customerChange.emit(value);\n }\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n}\n","<async-select\n [config]=\"config\"\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name || 'customer_id'\"\n [required]=\"required\"\n [multiple]=\"multiple\"\n [clearable]=\"true\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onInternalChange($event)\"\n/>\n","import { Subject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n EventEmitter,\n Output,\n WritableSignal,\n signal,\n PLATFORM_ID,\n Inject,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n AbstractControl,\n FormControl,\n ReactiveFormsModule,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n ControlValueAccessor,\n Validator,\n} from '@angular/forms';\nimport { FormSelectComponent } from '../../../components/forms/form-select/form-select.component';\nimport { PerformanceService } from '../../../services/performance.service';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { Performance } from '../../../interfaces/performances/performance.interface';\n\n@Component({\n selector: 'performance-select',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormSelectComponent],\n templateUrl: './performance-select.component.html',\n styleUrls: [],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PerformanceSelectComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PerformanceSelectComponent),\n multi: true,\n },\n ],\n})\nexport class PerformanceSelectComponent\n implements OnInit, OnDestroy, ControlValueAccessor, Validator\n{\n @Input() label: string = 'Función';\n @Input() placeholder: string = 'Selecciona una función';\n @Input() name: string = 'performance_id';\n @Input() required: boolean = false;\n @Input() readonly: boolean = false;\n @Input() showError: boolean = true;\n @Input() customClass: string = '';\n @Input() control?: AbstractControl | null = null;\n\n @Output() performanceChange = new EventEmitter<number | null>();\n\n performances: WritableSignal<SelectOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(false);\n searchTerm: string = '';\n private searchSubject = new Subject<string>();\n private destroy$ = new Subject<void>();\n\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private performanceService: PerformanceService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.performanceService.loadPerformances({ search: this.searchTerm });\n\n this.performanceService.performances$\n .pipe(takeUntil(this.destroy$))\n .subscribe((performances: Performance[]) => {\n this.performances.set(\n performances?.map((p) => ({\n value: p.id,\n label: `${p.show?.title || `Show #${p.show_id}`} - ${new Date(p.start_time).toLocaleDateString()}`,\n })) || [],\n );\n this.loading.set(false);\n });\n\n this.searchSubject\n .pipe(debounceTime(400), distinctUntilChanged(), takeUntil(this.destroy$))\n .subscribe((search) => {\n this.searchTerm = search;\n this.performanceService.loadPerformances({ search: this.searchTerm });\n });\n }\n }\n\n get formControl(): FormControl {\n return this.control as FormControl;\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n onSearchChange(search: string) {\n this.searchSubject.next(search);\n }\n\n onPerformanceSelected(event: Event) {\n const select = event.target as HTMLSelectElement;\n const value = select.value ? Number(select.value) : null;\n\n this.value = value;\n\n if (this.control) {\n this.control.setValue(value);\n this.control.markAsTouched();\n }\n\n this.performanceChange.emit(value);\n }\n\n writeValue(value: number | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n\n get isInvalid(): boolean {\n return false;\n }\n}\n","<form-select\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name || 'performance_id'\"\n [class]=\"customClass\"\n [options]=\"performances()\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [formControl]=\"formControl\"\n (change)=\"onPerformanceSelected($event)\"\n></form-select>\n","import { Subject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n forwardRef,\n signal,\n WritableSignal,\n Inject,\n PLATFORM_ID,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { PerformanceService } from '../../../services/performance.service';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { Performance } from '../../../interfaces/performances/performance.interface';\n\n@Component({\n selector: 'performance-multi-select',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './performance-multi-select.component.html',\n styleUrls: ['./performance-multi-select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PerformanceMultiSelectComponent),\n multi: true,\n },\n ],\n})\nexport class PerformanceMultiSelectComponent implements OnInit, OnDestroy, ControlValueAccessor {\n @Input() label: string = 'Funciones';\n @Input() placeholder: string = 'Buscar funciones...';\n\n allPerformances: WritableSignal<SelectOption[]> = signal([]);\n filteredPerformances: WritableSignal<SelectOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(true);\n\n selectedIds: number[] = [];\n searchTerm: string = '';\n\n private searchSubject = new Subject<string>();\n private destroy$ = new Subject<void>();\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private performanceService: PerformanceService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.performanceService.loadPerformances({});\n\n this.performanceService.performances$\n .pipe(takeUntil(this.destroy$))\n .subscribe((performances: Performance[]) => {\n this.allPerformances.set(\n performances?.map((p) => ({\n value: p.id,\n label: `${p.show?.title || `Show #${p.show_id}`} - ${new Date(p.start_time).toLocaleString()}`,\n })) || [],\n );\n this.applyFilter();\n this.loading.set(false);\n });\n\n this.searchSubject\n .pipe(debounceTime(400), distinctUntilChanged(), takeUntil(this.destroy$))\n .subscribe((search) => {\n this.searchTerm = search;\n this.performanceService.loadPerformances({ search: this.searchTerm });\n });\n }\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private applyFilter() {\n if (this.searchTerm) {\n const term = this.searchTerm.toLowerCase();\n this.filteredPerformances.set(\n this.allPerformances().filter((p) => p.label.toLowerCase().includes(term)),\n );\n } else {\n this.filteredPerformances.set([...this.allPerformances()]);\n }\n }\n\n onSearchChange(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.searchSubject.next(value);\n }\n\n isSelected(id: number): boolean {\n return this.selectedIds.includes(id);\n }\n\n togglePerformance(id: number) {\n const index = this.selectedIds.indexOf(id);\n if (index > -1) {\n this.selectedIds = this.selectedIds.filter((v) => v !== id);\n } else {\n this.selectedIds = [...this.selectedIds, id];\n }\n this.onChange(this.selectedIds);\n this.onTouched();\n }\n\n removePerformance(id: number) {\n this.togglePerformance(id);\n }\n\n getPerformanceLabel(id: number): string {\n return this.allPerformances().find((p) => p.value === id)?.label || '';\n }\n\n writeValue(value: number[] | null): void {\n this.selectedIds = value || [];\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n}\n","<div class=\"performance-multi-select\">\n @if (label) {\n <label class=\"performance-multi-select-label\">\n {{ label }}\n </label>\n }\n\n @if (selectedIds.length > 0) {\n <div class=\"performance-multi-select-tags\">\n @for (id of selectedIds; track id) {\n <span class=\"performance-multi-select-tag\">\n {{ getPerformanceLabel(id) }}\n <button\n type=\"button\"\n class=\"performance-multi-select-tag-remove\"\n (click)=\"removePerformance(id)\"\n >\n ×\n </button>\n </span>\n }\n </div>\n }\n\n <input\n type=\"text\"\n [placeholder]=\"placeholder\"\n class=\"performance-multi-select-search\"\n (input)=\"onSearchChange($event)\"\n />\n\n @if (loading()) {\n <div class=\"performance-multi-select-loading\">\n <div class=\"performance-multi-select-spinner\"></div>\n Cargando funciones...\n </div>\n }\n\n @if (!loading() && filteredPerformances().length > 0) {\n <div class=\"performance-multi-select-list\">\n @for (p of filteredPerformances(); track p.value) {\n <label class=\"performance-multi-select-option\">\n <input\n type=\"checkbox\"\n [checked]=\"isSelected(p.value)\"\n (change)=\"togglePerformance(p.value)\"\n class=\"performance-multi-select-checkbox\"\n />\n <span class=\"performance-multi-select-option-label\">{{ p.label }}</span>\n </label>\n }\n </div>\n }\n\n @if (!loading() && filteredPerformances().length === 0) {\n <p class=\"performance-multi-select-empty\">No se encontraron funciones</p>\n }\n</div>\n","import { Subject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n EventEmitter,\n Output,\n WritableSignal,\n signal,\n PLATFORM_ID,\n Inject,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n AbstractControl,\n FormControl,\n ReactiveFormsModule,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n ControlValueAccessor,\n Validator,\n} from '@angular/forms';\nimport { FormSelectComponent } from '../../../components/forms/form-select/form-select.component';\nimport { ProductService } from '../../../services/product.service';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { Product } from '../../../interfaces/products/product.interface';\n\n@Component({\n selector: 'product-select',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormSelectComponent],\n templateUrl: './product-select.component.html',\n styleUrls: [],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ProductSelectComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => ProductSelectComponent),\n multi: true,\n },\n ],\n})\nexport class ProductSelectComponent implements OnInit, OnDestroy, ControlValueAccessor, Validator {\n @Input() label: string = 'Producto';\n @Input() placeholder: string = 'Selecciona un producto';\n @Input() name: string = 'product_id';\n @Input() required: boolean = false;\n @Input() readonly: boolean = false;\n @Input() showError: boolean = true;\n @Input() customClass: string = '';\n @Input() control?: AbstractControl | null = null;\n\n @Output() productChange = new EventEmitter<number | null>();\n\n products: WritableSignal<SelectOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(false);\n searchTerm: string = '';\n private searchSubject = new Subject<string>();\n private destroy$ = new Subject<void>();\n\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private productService: ProductService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.productService.loadProducts({ search: this.searchTerm });\n\n this.productService.products$\n .pipe(takeUntil(this.destroy$))\n .subscribe((products: Product[]) => {\n this.products.set(\n products?.map((product) => ({\n value: product.id,\n label: product.name,\n })) || [],\n );\n this.loading.set(false);\n });\n\n this.searchSubject\n .pipe(debounceTime(400), distinctUntilChanged(), takeUntil(this.destroy$))\n .subscribe((search) => {\n this.searchTerm = search;\n this.productService.loadProducts({ search: this.searchTerm });\n });\n }\n }\n\n get formControl(): FormControl {\n return this.control as FormControl;\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n onSearchChange(search: string) {\n this.searchSubject.next(search);\n }\n\n onProductSelected(event: Event) {\n const select = event.target as HTMLSelectElement;\n const value = select.value ? Number(select.value) : null;\n\n this.value = value;\n\n if (this.control) {\n this.control.setValue(value);\n this.control.markAsTouched();\n }\n\n this.productChange.emit(value);\n }\n\n writeValue(value: number | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n\n get isInvalid(): boolean {\n return false;\n }\n}\n","<form-select\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name || 'product_id'\"\n [class]=\"customClass\"\n [options]=\"products()\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [formControl]=\"formControl\"\n (change)=\"onProductSelected($event)\"\n></form-select>\n","import { Subject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n Output,\n EventEmitter,\n forwardRef,\n signal,\n WritableSignal,\n Inject,\n PLATFORM_ID,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { ProductService } from '../../../services/product.service';\nimport { Product } from '../../../interfaces/products/product.interface';\n\ninterface ProductOption {\n value: number;\n label: string;\n imageUrl: string | null;\n}\n\n@Component({\n selector: 'product-multi-select',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './product-multi-select.component.html',\n styleUrls: ['./product-multi-select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ProductMultiSelectComponent),\n multi: true,\n },\n ],\n})\nexport class ProductMultiSelectComponent implements OnInit, OnDestroy, ControlValueAccessor {\n @Input() label: string = 'Productos';\n @Input() placeholder: string = 'Buscar productos...';\n @Input() set initialSelection(ids: number[] | null) {\n this.selectedIds = ids ?? [];\n }\n @Output() selectionChange = new EventEmitter<number[]>();\n\n allProducts: WritableSignal<ProductOption[]> = signal([]);\n filteredProducts: WritableSignal<ProductOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(true);\n\n selectedIds: number[] = [];\n searchTerm: string = '';\n\n private searchSubject = new Subject<string>();\n private destroy$ = new Subject<void>();\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private productService: ProductService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.productService.loadProducts({ search: this.searchTerm });\n\n this.productService.products$\n .pipe(takeUntil(this.destroy$))\n .subscribe((products: Product[]) => {\n this.allProducts.set(\n products?.map((p) => ({\n value: p.id,\n label: p.name,\n imageUrl: p.images?.[0]?.full_url ?? null,\n })) || [],\n );\n this.applyFilter();\n this.loading.set(false);\n });\n\n this.searchSubject\n .pipe(debounceTime(400), distinctUntilChanged(), takeUntil(this.destroy$))\n .subscribe((search) => {\n this.searchTerm = search;\n this.productService.loadProducts({ search: this.searchTerm });\n });\n }\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private applyFilter() {\n if (this.searchTerm) {\n const term = this.searchTerm.toLowerCase();\n this.filteredProducts.set(\n this.allProducts().filter((p) => p.label.toLowerCase().includes(term)),\n );\n } else {\n this.filteredProducts.set([...this.allProducts()]);\n }\n }\n\n onSearchChange(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.searchSubject.next(value);\n }\n\n isSelected(id: number): boolean {\n return this.selectedIds.includes(id);\n }\n\n toggleProduct(id: number) {\n const index = this.selectedIds.indexOf(id);\n if (index > -1) {\n this.selectedIds = this.selectedIds.filter((v) => v !== id);\n } else {\n this.selectedIds = [...this.selectedIds, id];\n }\n this.onChange(this.selectedIds);\n this.onTouched();\n this.selectionChange.emit(this.selectedIds);\n }\n\n removeProduct(id: number) {\n this.toggleProduct(id);\n }\n\n getProductOption(id: number): ProductOption | undefined {\n return this.allProducts().find((p) => p.value === id);\n }\n\n writeValue(value: number[] | null): void {\n this.selectedIds = value || [];\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n}\n","<div class=\"product-multi-select\">\n @if (label) {\n <label class=\"product-multi-select-label\">\n {{ label }}\n </label>\n }\n\n @if (selectedIds.length > 0) {\n <div class=\"product-multi-select-tags\">\n @for (id of selectedIds; track id) {\n @let product = getProductOption(id);\n <span class=\"product-multi-select-tag\">\n @if (product?.imageUrl) {\n <img [src]=\"product!.imageUrl\" alt=\"\" class=\"product-multi-select-tag-image\" />\n }\n {{ product?.label ?? id }}\n <button type=\"button\" class=\"product-multi-select-tag-remove\" (click)=\"removeProduct(id)\">\n ×\n </button>\n </span>\n }\n </div>\n }\n\n <input\n type=\"text\"\n [placeholder]=\"placeholder\"\n class=\"product-multi-select-search\"\n (input)=\"onSearchChange($event)\"\n />\n\n @if (loading()) {\n <div class=\"product-multi-select-loading\">\n <div class=\"product-multi-select-spinner\"></div>\n Cargando productos...\n </div>\n }\n\n @if (!loading() && filteredProducts().length > 0) {\n <div class=\"product-multi-select-list\">\n @for (p of filteredProducts(); track p.value) {\n <label class=\"product-multi-select-option\">\n <input\n type=\"checkbox\"\n [checked]=\"isSelected(p.value)\"\n (change)=\"toggleProduct(p.value)\"\n class=\"product-multi-select-checkbox\"\n />\n @if (p.imageUrl) {\n <img [src]=\"p.imageUrl\" alt=\"\" class=\"product-multi-select-option-image\" />\n } @else {\n <div class=\"product-multi-select-option-image-placeholder\">\n <i class=\"ri-image-line\"></i>\n </div>\n }\n <span class=\"product-multi-select-option-label\">{{ p.label }}</span>\n </label>\n }\n </div>\n }\n\n @if (!loading() && filteredProducts().length === 0) {\n <p class=\"product-multi-select-empty\">No se encontraron productos</p>\n }\n</div>\n","import { Subject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n EventEmitter,\n Output,\n WritableSignal,\n signal,\n PLATFORM_ID,\n Inject,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n AbstractControl,\n FormControl,\n ReactiveFormsModule,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n ControlValueAccessor,\n Validator,\n} from '@angular/forms';\nimport { FormSelectComponent } from '../../../components/forms/form-select/form-select.component';\nimport { ShowService } from '../../../services/show.service';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { Show } from '../../../interfaces/shows/show.interface';\n\n@Component({\n selector: 'show-select',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormSelectComponent],\n templateUrl: './show-select.component.html',\n styleUrls: [],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ShowSelectComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => ShowSelectComponent),\n multi: true,\n },\n ],\n})\nexport class ShowSelectComponent implements OnInit, OnDestroy, ControlValueAccessor, Validator {\n @Input() label: string = 'Función';\n @Input() placeholder: string = 'Selecciona una función';\n @Input() name: string = 'show_id';\n @Input() required: boolean = false;\n @Input() readonly: boolean = false;\n @Input() showError: boolean = true;\n @Input() customClass: string = '';\n @Input() control?: AbstractControl | null = null;\n\n @Output() showChange = new EventEmitter<number | null>();\n\n shows: WritableSignal<SelectOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(false);\n searchTerm: string = '';\n private searchSubject = new Subject<string>();\n private destroy$ = new Subject<void>();\n\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private showService: ShowService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.showService.loadShows({ search: this.searchTerm });\n\n this.showService.shows$.pipe(takeUntil(this.destroy$)).subscribe((shows: Show[]) => {\n const formatted = shows?.map((show) => ({ value: show.id, label: show.title })) || [];\n this.shows.set(formatted);\n this.loading.set(false);\n });\n\n this.searchSubject\n .pipe(debounceTime(400), distinctUntilChanged(), takeUntil(this.destroy$))\n .subscribe((search) => {\n this.searchTerm = search;\n this.showService.loadShows({ search: this.searchTerm });\n });\n }\n }\n\n get formControl(): FormControl {\n return this.control as FormControl;\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n onSearchChange(search: string) {\n this.searchSubject.next(search);\n }\n\n onShowSelected(event: Event) {\n const select = event.target as HTMLSelectElement;\n const value = select.value ? Number(select.value) : null;\n\n this.value = value;\n\n if (this.control) {\n this.control.setValue(value);\n this.control.markAsTouched();\n }\n\n this.showChange.emit(value);\n }\n\n writeValue(value: number | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n\n get isInvalid(): boolean {\n return false;\n }\n}\n","<form-select\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name || 'show_id'\"\n [class]=\"customClass\"\n [options]=\"shows()\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [formControl]=\"formControl\"\n (change)=\"onShowSelected($event)\"\n></form-select>\n","import { Subject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnDestroy,\n Input,\n forwardRef,\n signal,\n WritableSignal,\n Inject,\n PLATFORM_ID,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { ShowService } from '../../../services/show.service';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { Show } from '../../../interfaces/shows/show.interface';\n\n@Component({\n selector: 'show-multi-select',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './show-multi-select.component.html',\n styleUrls: ['./show-multi-select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ShowMultiSelectComponent),\n multi: true,\n },\n ],\n})\nexport class ShowMultiSelectComponent implements OnInit, OnDestroy, ControlValueAccessor {\n @Input() label: string = 'Funciones';\n @Input() placeholder: string = 'Buscar funciones...';\n\n allShows: WritableSignal<SelectOption[]> = signal([]);\n filteredShows: WritableSignal<SelectOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(true);\n\n selectedIds: number[] = [];\n searchTerm: string = '';\n\n private searchSubject = new Subject<string>();\n private destroy$ = new Subject<void>();\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private showService: ShowService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.showService.loadShows({});\n\n this.showService.shows$.pipe(takeUntil(this.destroy$)).subscribe((shows: Show[]) => {\n this.allShows.set(\n shows?.map((show) => ({\n value: show.id,\n label: show.title,\n })) || [],\n );\n this.applyFilter();\n this.loading.set(false);\n });\n\n this.searchSubject\n .pipe(debounceTime(400), distinctUntilChanged(), takeUntil(this.destroy$))\n .subscribe((search) => {\n this.searchTerm = search;\n this.showService.loadShows({ search: this.searchTerm });\n });\n }\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private applyFilter() {\n if (this.searchTerm) {\n const term = this.searchTerm.toLowerCase();\n this.filteredShows.set(this.allShows().filter((s) => s.label.toLowerCase().includes(term)));\n } else {\n this.filteredShows.set([...this.allShows()]);\n }\n }\n\n onSearchChange(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.searchSubject.next(value);\n }\n\n isSelected(id: number): boolean {\n return this.selectedIds.includes(id);\n }\n\n toggleShow(id: number) {\n const index = this.selectedIds.indexOf(id);\n if (index > -1) {\n this.selectedIds = this.selectedIds.filter((v) => v !== id);\n } else {\n this.selectedIds = [...this.selectedIds, id];\n }\n this.onChange(this.selectedIds);\n this.onTouched();\n }\n\n removeShow(id: number) {\n this.toggleShow(id);\n }\n\n getShowLabel(id: number): string {\n return this.allShows().find((s) => s.value === id)?.label || '';\n }\n\n writeValue(value: number[] | null): void {\n this.selectedIds = value || [];\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n}\n","<div class=\"show-multi-select\">\n @if (label) {\n <label class=\"show-multi-select-label\">\n {{ label }}\n </label>\n }\n\n @if (selectedIds.length > 0) {\n <div class=\"show-multi-select-tags\">\n @for (id of selectedIds; track id) {\n <span class=\"show-multi-select-tag\">\n {{ getShowLabel(id) }}\n <button type=\"button\" class=\"show-multi-select-tag-remove\" (click)=\"removeShow(id)\">\n ×\n </button>\n </span>\n }\n </div>\n }\n\n <input\n type=\"text\"\n [placeholder]=\"placeholder\"\n class=\"show-multi-select-search\"\n (input)=\"onSearchChange($event)\"\n />\n\n @if (loading()) {\n <div class=\"show-multi-select-loading\">\n <div class=\"show-multi-select-spinner\"></div>\n Cargando funciones...\n </div>\n }\n\n @if (!loading() && filteredShows().length > 0) {\n <div class=\"show-multi-select-list\">\n @for (show of filteredShows(); track show.value) {\n <label class=\"show-multi-select-option\">\n <input\n type=\"checkbox\"\n [checked]=\"isSelected(show.value)\"\n (change)=\"toggleShow(show.value)\"\n class=\"show-multi-select-checkbox\"\n />\n <span class=\"show-multi-select-option-label\">{{ show.label }}</span>\n </label>\n }\n </div>\n }\n\n @if (!loading() && filteredShows().length === 0) {\n <p class=\"show-multi-select-empty\">No se encontraron funciones</p>\n }\n</div>\n","import { Subject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport {\n Component,\n OnInit,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n Input,\n EventEmitter,\n Output,\n WritableSignal,\n signal,\n PLATFORM_ID,\n Inject,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n AbstractControl,\n FormControl,\n ReactiveFormsModule,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n ControlValueAccessor,\n Validator,\n} from '@angular/forms';\nimport { FormSelectComponent } from '../../../components/forms/form-select/form-select.component';\nimport { PriceZoneService } from '../../../services/price-zone.service';\nimport { SelectOption } from '../../../interfaces/select-option.interface';\nimport { PriceZone } from '../../../interfaces/price-zones/price-zone.interface';\n\n@Component({\n selector: 'price-zone-select',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormSelectComponent],\n templateUrl: './price-zone-select.component.html',\n styleUrls: [],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PriceZoneSelectComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PriceZoneSelectComponent),\n multi: true,\n },\n ],\n})\nexport class PriceZoneSelectComponent\n implements OnInit, OnChanges, OnDestroy, ControlValueAccessor, Validator\n{\n @Input() label: string = 'Categoría';\n @Input() placeholder: string = 'Selecciona una categoría';\n @Input() name: string = 'price_zone_id';\n @Input() required: boolean = false;\n @Input() readonly: boolean = false;\n @Input() showError: boolean = true;\n @Input() customClass: string = '';\n @Input() control?: AbstractControl | null = null;\n @Input() showIds: number[] = [];\n\n @Output() priceZoneChange = new EventEmitter<number | null>();\n\n priceZones: WritableSignal<SelectOption[]> = signal([]);\n loading: WritableSignal<boolean> = signal(false);\n searchTerm: string = '';\n private searchSubject = new Subject<string>();\n private destroy$ = new Subject<void>();\n\n value: number | null = null;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n private priceZoneService: PriceZoneService,\n ) {}\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.priceZoneService.loadPriceZones({\n search: this.searchTerm,\n show_ids: this.showIds,\n });\n\n this.priceZoneService.priceZones$\n .pipe(takeUntil(this.destroy$))\n .subscribe((priceZones: PriceZone[]) => {\n this.priceZones.set(\n priceZones?.map((pz) => ({\n value: pz.id,\n label: pz.name,\n })) || [],\n );\n this.loading.set(false);\n });\n\n this.searchSubject\n .pipe(debounceTime(400), distinctUntilChanged(), takeUntil(this.destroy$))\n .subscribe((search) => {\n this.searchTerm = search;\n this.priceZoneService.loadPriceZones({\n search: this.searchTerm,\n show_ids: this.showIds,\n });\n });\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (\n changes['showIds'] &&\n !changes['showIds'].firstChange &&\n isPlatformBrowser(this.platformId)\n ) {\n this.priceZoneService.loadPriceZones({\n search: this.searchTerm,\n show_ids: this.showIds,\n });\n }\n }\n\n get formControl(): FormControl {\n return this.control as FormControl;\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n onSearchChange(search: string) {\n this.searchSubject.next(search);\n }\n\n onPriceZoneSelected(event: Event) {\n const select = event.target as HTMLSelectElement;\n const value = select.value ? Number(select.value) : null;\n\n this.value = value;\n\n if (this.control) {\n this.control.setValue(value);\n this.control.markAsTouched();\n }\n\n this.priceZoneChange.emit(value);\n }\n\n writeValue(value: number | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n validate(control: FormControl) {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n\n get isInvalid(): boolean {\n return false;\n }\n}\n","<form-select\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [name]=\"name || 'price_zone_id'\"\n [class]=\"customClass\"\n [options]=\"priceZones()\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [formControl]=\"formControl\"\n (change)=\"onPriceZoneSelected($event)\"\n></form-select>\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslocoModule } from '@jsverse/transloco';\nimport { PerformanceTicket } from '../../../interfaces';\nimport { PERFORMANCE_TICKET_STATUS_COLORS } from '../../../constants';\nimport { BadgeSize } from '../../../types/badges/badge-size.type';\nimport { AppBadgeComponent } from '../../data-display/app-badge/app-badge.component';\n\n@Component({\n selector: 'performance-ticket-status-badge',\n standalone: true,\n imports: [CommonModule, TranslocoModule, AppBadgeComponent],\n templateUrl: './performance-ticket-status-badge.component.html',\n})\nexport class PerformanceTicketStatusBadgeComponent {\n @Input({ required: true }) ticket!: PerformanceTicket;\n @Input() size: BadgeSize = 'sm';\n\n protected get statusColors() {\n return PERFORMANCE_TICKET_STATUS_COLORS[this.ticket.status];\n }\n}\n","<app-badge\n [text]=\"`performance.ticketStatus.${ticket.status}` | transloco\"\n [backgroundColor]=\"statusColors.bg\"\n [textColor]=\"statusColors.text\"\n [size]=\"size\"\n/>\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslocoModule } from '@jsverse/transloco';\nimport { Performance } from '../../../interfaces';\nimport { PERFORMANCE_STATUS_COLORS } from '../../../constants';\nimport { BadgeSize } from '../../../types/badges/badge-size.type';\nimport { AppBadgeComponent } from '../../data-display/app-badge/app-badge.component';\n\n@Component({\n selector: 'performance-status-badge',\n standalone: true,\n imports: [CommonModule, TranslocoModule, AppBadgeComponent],\n templateUrl: './performance-status-badge.component.html',\n})\nexport class PerformanceStatusBadgeComponent {\n @Input({ required: true }) performance!: Performance;\n @Input() size: BadgeSize = 'sm';\n\n protected get statusColors() {\n return PERFORMANCE_STATUS_COLORS[this.performance.status];\n }\n}\n","<app-badge\n [text]=\"`performance.status.${performance.status}` | transloco\"\n [backgroundColor]=\"statusColors.bg\"\n [textColor]=\"statusColors.text\"\n [size]=\"size\"\n/>\n","import {\n Component,\n effect,\n ElementRef,\n Inject,\n Input,\n PLATFORM_ID,\n signal,\n untracked,\n ViewChild,\n WritableSignal,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { PerformancesListEventsService } from '../../../services/performances-list-events.service';\nimport { AppAlertComponent } from '../../feedback/app-alert/app-alert.component';\nimport { PerformanceAvailableDay } from '../../../interfaces';\nimport { PerformanceService, ToastService } from '../../../services';\n\n@Component({\n selector: 'day-selector-grid',\n standalone: true,\n imports: [CommonModule, AppAlertComponent],\n templateUrl: './day-selector-grid.component.html',\n styleUrls: ['./day-selector-grid.component.scss'],\n})\nexport class DaySelectorGridComponent {\n @Input() displayMode: 'grid' | 'carousel' = 'grid';\n loadingData: WritableSignal<boolean> = signal(true);\n days: WritableSignal<PerformanceAvailableDay[]> = signal([]);\n @ViewChild('carouselTrack') carouselTrack?: ElementRef<HTMLElement>;\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: object,\n protected performanceService: PerformanceService,\n protected listEventService: PerformancesListEventsService,\n protected toastService: ToastService,\n ) {\n effect(() => {\n if (isPlatformBrowser(this.platformId)) {\n this.days.set([]);\n this.listEventService.setSelectedDay(null);\n this.loadData();\n }\n });\n }\n\n private loadData(): void {\n this.loadingData.set(true);\n const showId = this.listEventService.filteredShowId() ?? undefined;\n\n this.performanceService.fetchAvailableDays({ show_id: showId }).subscribe({\n next: (response) => {\n const days = response?.data?.days ?? [];\n this.days.set(days);\n if (days.length > 0 && !untracked(() => this.listEventService.selectedDay())) {\n this.listEventService.setSelectedDay(days[0]);\n }\n this.loadingData.set(false);\n },\n error: () => {\n this.toastService.show('Error al cargar los datos de la función.', 'error');\n this.loadingData.set(false);\n },\n });\n }\n\n isDayActive(day: PerformanceAvailableDay): boolean {\n return day.date === this.listEventService.selectedDay()?.date;\n }\n\n onToggle(day: PerformanceAvailableDay): void {\n if (this.isDayActive(day)) return;\n this.listEventService.setSelectedPerformance(null);\n this.listEventService.setSelectedDay(day);\n }\n\n scrollCarousel(direction: 1 | -1): void {\n const track = this.carouselTrack?.nativeElement;\n if (!track) return;\n const item = track.children[0] as HTMLElement | undefined;\n const itemWidth = item?.offsetWidth ?? 112;\n track.scrollBy({ left: direction * (itemWidth + 8), behavior: 'smooth' });\n }\n}\n","@if (loadingData()) {\n <div class=\"day-selector-grid\">\n @for (i of [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; track $index) {\n <div class=\"day-selector-grid-skeleton-item\"></div>\n }\n </div>\n}\n\n@if (!loadingData() && days().length < 1) {\n <app-alert\n type=\"error\"\n text=\"No se encontraron funciones disponibles\"\n size=\"md\"\n [closeable]=\"false\"\n />\n}\n\n@if (days().length > 0) {\n <p class=\"day-selector-heading\">Selecciona un día</p>\n}\n\n@if (displayMode === 'carousel' && days().length > 0) {\n <div class=\"day-selector-carousel\">\n <button\n type=\"button\"\n (click)=\"scrollCarousel(-1)\"\n class=\"day-selector-carousel-arrow day-selector-carousel-arrow--left\"\n aria-label=\"Anterior\"\n >\n <i class=\"ri-arrow-left-s-line\"></i>\n </button>\n <div #carouselTrack class=\"day-selector-carousel-track\">\n @for (item of days(); track $index) {\n <button\n (click)=\"onToggle(item)\"\n class=\"day-selector-carousel-item\"\n [class.day-selector-item--active]=\"isDayActive(item)\"\n >\n <span class=\"day-selector-item-weekday\">\n {{ item.date | date: 'EEE' | uppercase }}\n </span>\n <span class=\"day-selector-item-day\">\n {{ item.date | date: 'dd' }}\n </span>\n <span class=\"day-selector-item-month\">\n {{ item.date | date: 'MMM' }}\n </span>\n <span class=\"day-selector-item-count\">\n {{ item.count | number: '1.0-2' }}\n </span>\n </button>\n }\n </div>\n <button\n type=\"button\"\n (click)=\"scrollCarousel(1)\"\n class=\"day-selector-carousel-arrow day-selector-carousel-arrow--right\"\n aria-label=\"Siguiente\"\n >\n <i class=\"ri-arrow-right-s-line\"></i>\n </button>\n </div>\n} @else {\n <div class=\"day-selector-grid\">\n @for (item of days(); track $index) {\n <button\n (click)=\"onToggle(item)\"\n class=\"day-selector-grid-item\"\n [class.day-selector-item--active]=\"isDayActive(item)\"\n >\n <span class=\"day-selector-item-weekday\">\n {{ item.date | date: 'EEE' | uppercase }}\n </span>\n <span class=\"day-selector-item-day\">\n {{ item.date | date: 'dd' }}\n </span>\n <span class=\"day-selector-item-month\">\n {{ item.date | date: 'MMM' }}\n </span>\n <span class=\"day-selector-item-count\">\n {{ item.count | number: '1.0-2' }}\n </span>\n </button>\n }\n </div>\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { PerformancesListEventsService } from '../../../services/performances-list-events.service';\nimport { AppLinkButtonComponent } from '../../buttons/app-link-button/app-link-button.component';\nimport { DailyPerformanceItem } from '../../../interfaces';\nimport { AppBadgeComponent } from '../../data-display/app-badge/app-badge.component';\nimport { TICKET_MAP_LAST_TICKETS_LIMIT } from '../../../constants';\n\n@Component({\n selector: 'performance-card',\n standalone: true,\n imports: [CommonModule, AppLinkButtonComponent, AppBadgeComponent],\n templateUrl: './performance-card.component.html',\n styleUrls: ['./performance-card.component.scss'],\n})\nexport class PerformanceCardComponent {\n @Input({ required: true }) card!: DailyPerformanceItem;\n @Input() linkText: string = 'Comprar entradas';\n @Input() linkUrlFn?: (card: DailyPerformanceItem) => string;\n @Input() linkQueryParams?: Record<string, any>;\n\n constructor(protected listEventService: PerformancesListEventsService) {}\n\n get badgeColor(): 'success' | 'error' {\n return this.card.available_tickets_count > TICKET_MAP_LAST_TICKETS_LIMIT ? 'success' : 'error';\n }\n\n onSelect(): void {\n this.listEventService.setSelectedPerformance(this.card);\n }\n\n isSelected(): boolean {\n return this.listEventService.selectedPerformance()?.id === this.card.id;\n }\n}\n","<div class=\"performance-card\" [class.performance-card--selected]=\"isSelected()\">\n <div class=\"performance-card-image\">\n @if (card.show.images && card.show.images.length > 0) {\n <img [src]=\"card.show.images[0].full_url\" class=\"performance-card-image-img\" />\n } @else {\n <img\n [src]=\"`https://placehold.co/400x400/1f2937/737373?text=${card.show.title}`\"\n class=\"performance-card-image-placeholder\"\n />\n }\n </div>\n\n <div class=\"performance-card-info\">\n <div class=\"performance-card-title\">\n {{ card.show.title }}\n </div>\n\n <div class=\"performance-card-datetime\">\n <span class=\"performance-card-date\">\n {{ card.start_time | date: `EEEE` | titlecase }}\n {{ card.start_time | date: `dd 'de' MMMM,` }}\n </span>\n\n <span class=\"performance-card-time\">\n {{ card.start_time | date: `hh:mm` }}\n </span>\n\n <span class=\"performance-card-meridiem\">\n {{ card.start_time | date: 'a' }}\n </span>\n </div>\n\n <ul class=\"performance-card-location\">\n @if (card.hall) {\n <li class=\"performance-card-location__item\">\n <i class=\"ri-armchair-line\"></i>\n <strong>Sala:</strong>\n <span>{{ card.hall.name }}</span>\n </li>\n }\n\n @if (card.venue) {\n <li class=\"performance-card-location__item\">\n <i class=\"ri-building-4-line\"></i>\n <strong>Teatro:</strong>\n <span>{{ card.venue.name }}</span>\n </li>\n }\n </ul>\n </div>\n\n <div class=\"performance-card-actions\">\n <app-badge\n [text]=\"`${card.available_tickets_count} entrada(s) disponible(s)`\"\n size=\"xs\"\n [color]=\"badgeColor\"\n />\n\n <div class=\"performance-card-price\">\n Desde\n\n <span class=\"performance-card-price-value\">\n ${{ card.zone_price_cheapest | number: '1.0-2' }}\n </span>\n </div>\n\n <app-link-button\n [style.width]=\"'100%'\"\n [route]=\"linkUrlFn ? linkUrlFn(card) : '#'\"\n [queryParams]=\"linkQueryParams ?? {}\"\n [text]=\"linkText\"\n icon=\"ri-coupon-line\"\n variant=\"primary\"\n size=\"xs\"\n />\n </div>\n</div>\n","import {\n Component,\n effect,\n Inject,\n Input,\n PLATFORM_ID,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { PerformanceCardComponent } from '../performance-card/performance-card.component';\nimport { PerformancesListEventsService } from '../../../services/performances-list-events.service';\nimport { DailyPerformanceItem } from '../../../interfaces';\nimport { PerformanceService, ToastService } from '../../../services';\n\n@Component({\n selector: 'performance-card-list',\n standalone: true,\n imports: [PerformanceCardComponent, CommonModule],\n templateUrl: './performance-card-list.component.html',\n styleUrls: ['./performance-card-list.component.scss'],\n})\nexport class PerformanceCardListComponent {\n @Input() linkText: string = 'Comprar entradas';\n @Input() linkUrlFn?: (card: DailyPerformanceItem) => string;\n @Input() linkQueryParams?: Record<string, any>;\n loadingData: WritableSignal<boolean> = signal(true);\n performances: WritableSignal<DailyPerformanceItem[]> = signal([]);\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: object,\n protected performanceService: PerformanceService,\n protected listEventService: PerformancesListEventsService,\n protected toastService: ToastService,\n ) {\n effect(() => {\n const date = this.listEventService.selectedDayDate();\n if (date) {\n this.loadData();\n }\n });\n\n effect(() => {\n this.listEventService.filteredShowId();\n this.performances.set([]);\n const date = this.listEventService.selectedDayDate();\n if (date) {\n this.loadData();\n }\n });\n }\n\n ngOnInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.loadData();\n }\n }\n\n private loadData(): void {\n this.loadingData.set(true);\n const date = this.listEventService.selectedDayDate();\n const showId = this.listEventService.filteredShowId() ?? undefined;\n if (!date) {\n this.loadingData.set(false);\n return;\n }\n\n this.performanceService.fetchDailyPerformances({ date, show_id: showId }).subscribe({\n next: (response) => {\n this.performances.set(response?.data?.performances ?? []);\n this.loadingData.set(false);\n },\n error: () => {\n this.toastService.show('Error al cargar los datos de la función.', 'error');\n this.loadingData.set(false);\n },\n });\n }\n\n get selectedDayDate(): string | null {\n return this.listEventService.selectedDay()?.date ?? null;\n }\n}\n","@if (selectedDayDate) {\n <p class=\"performance-card-list-heading\">\n <span>Funciones disponibles:</span>\n <span class=\"performance-card-list-heading-date\">\n el {{ selectedDayDate | date: \"EEEE d 'de' MMMM\" }}\n </span>\n </p>\n}\n\n<div class=\"performance-card-list\">\n @if (loadingData()) {\n @for (i of [1, 2]; track $index) {\n <div class=\"performance-card-list-skeleton\"></div>\n }\n }\n\n @for (card of performances(); track $index) {\n <performance-card\n [card]=\"card\"\n [linkQueryParams]=\"linkQueryParams\"\n [linkText]=\"linkText\"\n [linkUrlFn]=\"linkUrlFn\"\n />\n }\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'performance-stepper',\n standalone: true,\n templateUrl: './performance-stepper.component.html',\n styleUrls: ['./performance-stepper.component.scss'],\n})\nexport class PerformanceStepperComponent {\n @Input({ required: true }) stepLabel!: string;\n @Input({ required: true }) title!: string;\n @Input({ required: true }) highlight!: string;\n}\n","<div class=\"performance-stepper-label\">\n <span class=\"performance-stepper-label-bar\"></span>\n {{ stepLabel }}\n</div>\n\n<h1 class=\"performance-stepper-title\">\n <span class=\"performance-stepper-title-main\">{{ title }} </span\n ><span class=\"performance-stepper-title-highlight\">{{ highlight }}</span>\n</h1>\n","import { Component, Inject, PLATFORM_ID, signal, WritableSignal } from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { PerformancesListEventsService } from '../../../services/performances-list-events.service';\nimport { Router } from '@angular/router';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\nimport { Show } from '../../../interfaces';\nimport { ShowService, ToastService } from '../../../services';\nimport { AppAlertComponent } from '../../feedback/app-alert/app-alert.component';\n\n@Component({\n selector: 'shows-filter',\n standalone: true,\n imports: [AppButtonComponent, CommonModule, AppAlertComponent],\n templateUrl: './shows-filter.component.html',\n styleUrls: ['./shows-filter.component.scss'],\n})\nexport class ShowsFilterComponent {\n loadingData: WritableSignal<boolean> = signal(true);\n shows: WritableSignal<Show[]> = signal([]);\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: object,\n protected showService: ShowService,\n protected listEventService: PerformancesListEventsService,\n protected toastService: ToastService,\n private router: Router,\n ) {}\n\n ngOnInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.loadData();\n }\n }\n\n private loadData(): void {\n this.loadingData.set(true);\n\n this.showService.fetchAvailableShows({}).subscribe({\n next: (response) => {\n this.shows.set(response?.data?.shows ?? []);\n this.loadingData.set(false);\n },\n error: () => {\n this.toastService.show('Error al cargar shows del filtro.', 'error');\n this.loadingData.set(false);\n },\n });\n }\n\n isActive(showId: number): boolean {\n return this.listEventService.filteredShowId() === showId;\n }\n\n onFilter(show: Show): void {\n const isCurrentlyActive = this.isActive(show.id);\n if (isCurrentlyActive) {\n this.listEventService.setFilteredShowId(null);\n this.router.navigate([], {\n queryParams: { show_id: null },\n queryParamsHandling: 'merge',\n });\n } else {\n this.listEventService.setFilteredShowId(show.id);\n this.router.navigate([], {\n queryParams: { show_id: show.id },\n queryParamsHandling: 'merge',\n });\n }\n this.listEventService.setSelectedDay(null);\n this.listEventService.setSelectedPerformance(null);\n }\n}\n","<div class=\"shows-filter\">\n <p class=\"shows-filter-heading\">Filtrar por evento</p>\n\n @if (loadingData()) {\n @for (i of [1, 2, 3]; track $index) {\n <div class=\"shows-filter-skeleton\"></div>\n }\n }\n\n @if (!loadingData() && shows().length < 1) {\n <app-alert text=\"No hay shows disponibles para filtrar\" size=\"xs\" type=\"error\" />\n }\n\n @for (show of shows(); track $index) {\n <div class=\"shows-filter-item\" [class.shows-filter-item--active]=\"isActive(show.id)\">\n <div class=\"shows-filter-item-info\">\n <span class=\"shows-filter-item-image\">\n @if (show.images.length > 0) {\n <img [src]=\"show.images[0].full_url\" class=\"shows-filter-item-image-img\" />\n } @else {\n <span class=\"shows-filter-item-image-placeholder\"></span>\n }\n </span>\n\n <div>\n <div class=\"shows-filter-item-title\">{{ show.title }}</div>\n @if (show.performances_quantity && show.performances_quantity > 0) {\n <div class=\"shows-filter-item-count\">{{ show.performances_quantity }} funciones</div>\n }\n </div>\n </div>\n\n <div class=\"shows-filter-item-actions\">\n @if (isActive(show.id)) {\n <app-button\n variant=\"tertiary\"\n icon=\"ri-close-line\"\n size=\"xs\"\n (clicked)=\"onFilter(show)\"\n />\n } @else {\n <app-button variant=\"primary\" text=\"Filtrar\" size=\"xs\" (clicked)=\"onFilter(show)\" />\n }\n </div>\n </div>\n }\n</div>\n","import { Component, Input } from '@angular/core';\nimport { PriceZoneItem } from '../../../interfaces/price-zones/price-zone-item.interface';\n\n@Component({\n selector: 'zone-price-item',\n standalone: true,\n templateUrl: './zone-price-item.component.html',\n styleUrls: ['./zone-price-item.component.scss'],\n imports: [],\n})\nexport class ZonePriceItemComponent {\n @Input({ required: true }) zone!: PriceZoneItem;\n}\n","<div class=\"zone-price-item\">\n <div class=\"zone-price-item__info\">\n <span class=\"zone-price-item__swatch\" [style.background-color]=\"zone.color || null\"></span>\n <div class=\"zone-price-item__texts\">\n <div class=\"zone-price-item__name\">\n {{ zone.name }}\n </div>\n <div class=\"zone-price-item__seats\">{{ zone.available_seats }} sillas disponibles</div>\n </div>\n </div>\n <div class=\"zone-price-item__price\">{{ zone.price }}</div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { ZonePriceItemComponent } from '../zone-price-item/zone-price-item.component';\nimport { PriceZoneItem } from '../../../interfaces/price-zones/price-zone-item.interface';\n\n@Component({\n selector: 'zone-price-list',\n standalone: true,\n imports: [ZonePriceItemComponent],\n templateUrl: './zone-price-list.component.html',\n styleUrls: ['./zone-price-list.component.scss'],\n})\nexport class ZonePriceListComponent {\n @Input({ required: true }) zones!: PriceZoneItem[];\n}\n","<p class=\"zone-price-list-title\">ZONAS Y PRECIOS</p>\n\n<div class=\"zone-price-list\">\n @for (zone of zones; track $index) {\n <zone-price-item [zone]=\"zone\" />\n }\n</div>\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'ticket-map-widget',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './ticket-map-widget.component.html',\n styleUrl: './ticket-map-widget.component.scss',\n})\nexport class TicketMapWidgetComponent {}\n","<div class=\"ticket-map-widget\">\n <ng-content></ng-content>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'ticket-map-widget-header',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './ticket-map-widget-header.component.html',\n styleUrl: './ticket-map-widget-header.component.scss',\n})\nexport class TicketMapWidgetHeaderComponent {\n @Input() title: string = '';\n @Input() subtitle: string = '';\n}\n","<div class=\"ticket-map-widget-header\">\n <div class=\"ticket-map-widget-header__texts\">\n @if (title) {\n <p class=\"ticket-map-widget-header__title\">{{ title }}</p>\n }\n\n @if (subtitle) {\n <p class=\"ticket-map-widget-header__subtitle\">{{ subtitle }}</p>\n }\n </div>\n\n <div class=\"ticket-map-widget-header__content\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { Component, computed } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TicketMapZoomService } from '../../../services';\n\n@Component({\n selector: 'ticket-map-zoom-controls',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './ticket-map-zoom-controls.component.html',\n styleUrl: './ticket-map-zoom-controls.component.scss',\n})\nexport class TicketMapZoomControlsComponent {\n readonly currentZoom = computed(() => this.zoomService.currentZoom());\n readonly zoomPercentage = computed(() => this.zoomService.getZoomPercentage());\n\n constructor(private zoomService: TicketMapZoomService) {}\n\n zoomIn(): void {\n this.zoomService.zoomIn();\n }\n\n zoomOut(): void {\n this.zoomService.zoomOut();\n }\n\n resetZoom(): void {\n this.zoomService.resetZoom();\n }\n\n fitToContainer(): void {\n this.zoomService.fitToContainer();\n }\n\n handleZoomAction(action: string): void {\n switch (action) {\n case 'ZOOM_IN':\n this.zoomIn();\n break;\n case 'ZOOM_OUT':\n this.zoomOut();\n break;\n case 'ZOOM_RESET':\n this.resetZoom();\n break;\n }\n }\n}\n","<div class=\"ticket-map-zoom-controls\">\n <button (click)=\"zoomOut()\" class=\"canvas-button\" title=\"Zoom -\">\n <i class=\"ri-zoom-out-line text-sm\"></i>\n </button>\n\n <span class=\"zoom-percentage\">{{ zoomPercentage() }}</span>\n\n <button (click)=\"zoomIn()\" class=\"canvas-button\" title=\"Zoom +\">\n <i class=\"ri-zoom-in-line\"></i>\n </button>\n\n <button (click)=\"resetZoom()\" class=\"canvas-button\" title=\"Reset\">\n <i class=\"ri-refresh-line\"></i>\n </button>\n\n <button (click)=\"fitToContainer()\" class=\"canvas-button\" title=\"Ajustar al espacio\">\n <i class=\"ri-fullscreen-line\"></i>\n </button>\n</div>\n","import { Component, computed } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PerformanceBookingDataService } from '../../../services';\n\n@Component({\n selector: 'ticket-map-floor-selector',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './ticket-map-floor-selector.component.html',\n styleUrl: './ticket-map-floor-selector.component.scss',\n})\nexport class TicketMapFloorSelectorComponent {\n readonly availableFloors = computed(() => this.bookingDataService.availableFloors());\n readonly visibleFloorIds = computed(() => this.bookingDataService.visibleFloorIds());\n readonly hasMultipleVisible = computed(() => this.visibleFloorIds().size > 1);\n\n constructor(private bookingDataService: PerformanceBookingDataService) {}\n\n isFloorVisible(floorId: number): boolean {\n return this.visibleFloorIds().has(floorId);\n }\n\n canToggleOff(floorId: number): boolean {\n return this.isFloorVisible(floorId) && this.hasMultipleVisible();\n }\n\n toggleFloor(floorId: number): void {\n this.bookingDataService.toggleFloorVisibility(floorId);\n }\n}\n","@if (availableFloors().length > 1) {\n <div class=\"ticket-map-floor-selector\">\n @for (floor of availableFloors(); track floor.id) {\n <button\n class=\"floor-button\"\n [class.floor-button-active]=\"isFloorVisible(floor.id)\"\n [class.floor-button-locked]=\"isFloorVisible(floor.id) && !canToggleOff(floor.id)\"\n [disabled]=\"isFloorVisible(floor.id) && !canToggleOff(floor.id)\"\n (click)=\"toggleFloor(floor.id)\"\n [title]=\"floor.name\"\n >\n {{ floor.name }}\n </button>\n }\n </div>\n}\n","import {\n Component,\n Inject,\n Input,\n Output,\n EventEmitter,\n OnDestroy,\n AfterViewInit,\n ViewChild,\n PLATFORM_ID,\n signal,\n computed,\n effect,\n viewChildren,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { StageComponent, CoreShapeComponent } from 'ng2-konva';\nimport {\n ElementRenderData,\n HallFloorOption,\n PerformanceTicket,\n TicketMapTooltipData,\n} from '../../../interfaces';\nimport {\n FeedbackModalService,\n PerformanceBookingDataService,\n TicketMapZoomService,\n TicketSelectionService,\n} from '../../../services';\nimport { RoomMapElementType } from '../../../enums';\nimport { findElementAtPosition, findTicketAtPosition } from '../../../helpers';\nimport {\n TICKET_MAP_FLOOR_HOVER_FADE_MS,\n TICKET_MAP_FLOOR_HOVER_OPACITY,\n} from '../../../constants/ticket-map';\n\nconst FLOOR_LAYER_NAME_PREFIX = 'ticket-map-floor-layer-';\n\n@Component({\n selector: 'performance-ticket-map',\n standalone: true,\n imports: [CommonModule, StageComponent, CoreShapeComponent],\n templateUrl: './performance-ticket-map.component.html',\n styleUrl: './performance-ticket-map.component.scss',\n})\nexport class PerformanceTicketMapComponent implements OnDestroy, AfterViewInit {\n @Output() selectionChange = new EventEmitter<PerformanceTicket[]>();\n @Output() needsLoginError = new EventEmitter();\n @Input() readOnly = false;\n @Input() needsLogin = false;\n @Input() isLoggedIn = true;\n\n @ViewChild(StageComponent) stageComponent?: StageComponent;\n\n protected tooltipData = signal<TicketMapTooltipData | null>(null);\n\n protected renderData = computed(() => {\n const selected = this.selectionService.selectedTickets();\n const selByElem = new Map<number, Set<string>>();\n for (const ticket of selected) {\n if (ticket.seat_numeration == null) continue;\n let set = selByElem.get(ticket.room_map_element_id);\n if (!set) {\n set = new Set<string>();\n selByElem.set(ticket.room_map_element_id, set);\n }\n set.add(ticket.seat_numeration);\n }\n\n return this.bookingDataService.renderData().map((el) => {\n const isSeatLike =\n el.type === RoomMapElementType.SEAT_BLOCK || el.type === RoomMapElementType.TABLE;\n return isSeatLike\n ? {\n ...el,\n shapeConfig: {\n ...el.shapeConfig,\n selectedNumerations: selByElem.get(el.elementId) ?? new Set<string>(),\n },\n }\n : el;\n });\n });\n\n private stageReady = signal(false);\n private autoFitDone = false;\n private resizeObserver?: ResizeObserver;\n\n // Una <ko-layer #floorLayer> por piso (ver template). No asumimos que su\n // orden coincida con floorGroups(); cada capa se identifica por su `name`\n // de Konva (ver FLOOR_LAYER_NAME_PREFIX).\n protected floorLayerRefs = viewChildren('floorLayer', { read: CoreShapeComponent });\n\n protected floorLayerName(floorId: number): string {\n return `${FLOOR_LAYER_NAME_PREFIX}${floorId}`;\n }\n\n protected floorGroups = computed(() => {\n const order = this.bookingDataService.floorZOrder();\n const elements = this.renderData();\n\n const byFloor = new Map<number, ElementRenderData[]>();\n for (const el of elements) {\n if (el.hallFloorId == null) continue;\n const arr = byFloor.get(el.hallFloorId) ?? [];\n arr.push(el);\n byFloor.set(el.hallFloorId, arr);\n }\n\n return order.map((floorId) => ({\n floorId,\n elements: byFloor.get(floorId) ?? [],\n }));\n });\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: object,\n protected bookingDataService: PerformanceBookingDataService,\n protected feedbackModalService: FeedbackModalService,\n protected selectionService: TicketSelectionService,\n protected zoomService: TicketMapZoomService,\n ) {\n effect(() => {\n const dataReady = this.bookingDataService.renderData().length > 0;\n const stageOk = this.stageReady();\n if (dataReady && stageOk && !this.autoFitDone) {\n this.autoFitDone = true;\n this.zoomService.fitToContainer();\n }\n });\n\n // Trae al frente y atenúa/resalta cada capa (piso) según el hover.\n // Todo esto se hace de forma 100% imperativa sobre el nodo Konva real\n // (moveToTop + .to() para el fade), en vez de reordenar el @for y\n // esperar a que el MutationObserver de ng2-konva sincronice el zIndex:\n // ese camino depende de que Angular vuelva a renderizar la plantilla.\n // Así el cambio es instantáneo pase lo que pase con el ciclo de detección\n // de cambios.\n effect(() => {\n const hoveredFloorId = this.bookingDataService.hoveredFloorId();\n const order = this.bookingDataService.floorZOrder();\n const layerRefs = this.floorLayerRefs();\n\n const layerNodeByFloorId = new Map<number, any>();\n for (const layerComponent of layerRefs) {\n const layerNode = layerComponent.getStage() as any;\n const name: string = layerNode?.name?.() ?? '';\n if (!name.startsWith(FLOOR_LAYER_NAME_PREFIX)) continue;\n\n const floorId = Number(name.slice(FLOOR_LAYER_NAME_PREFIX.length));\n if (Number.isFinite(floorId)) {\n layerNodeByFloorId.set(floorId, layerNode);\n }\n }\n\n let needsRedraw = false;\n\n for (const floorId of order) {\n const layerNode = layerNodeByFloorId.get(floorId);\n if (!layerNode) continue;\n\n layerNode.moveToTop();\n needsRedraw = true;\n\n const targetOpacity =\n hoveredFloorId == null || hoveredFloorId === floorId ? 1 : TICKET_MAP_FLOOR_HOVER_OPACITY;\n\n if (layerNode.opacity() !== targetOpacity) {\n layerNode.to({\n opacity: targetOpacity,\n duration: TICKET_MAP_FLOOR_HOVER_FADE_MS / 1000,\n });\n }\n }\n\n if (needsRedraw) {\n (this.stageComponent?.getStage() as any)?.batchDraw();\n }\n });\n }\n\n protected get isBrowser(): boolean {\n return isPlatformBrowser(this.platformId);\n }\n\n ngAfterViewInit(): void {\n if (this.stageComponent) {\n const stage = this.stageComponent.getStage();\n if (stage) {\n this.feedbackModalService.removeAllModals();\n this.zoomService.setStage(stage);\n this.stageReady.set(true);\n this.syncStageToContainer();\n this.setupResizeObserver(stage);\n }\n }\n }\n\n private setupResizeObserver(stage: any): void {\n const container = stage.container().parentElement;\n if (!container) return;\n\n this.resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const { width, height } = entry.contentRect;\n if (width > 0 && height > 0) {\n const current = this.bookingDataService.stageConfig();\n if (current['width'] !== width || current['height'] !== height) {\n this.bookingDataService.updateStageConfig({ width, height });\n }\n }\n }\n });\n\n this.resizeObserver.observe(container);\n }\n\n private syncStageToContainer(): void {\n const stage = this.stageComponent?.getStage();\n if (!stage) return;\n const containerEl = stage.container().parentElement;\n if (!containerEl) return;\n const { width, height } = containerEl.getBoundingClientRect();\n if (width > 0 && height > 0) {\n this.bookingDataService.updateStageConfig({ width, height });\n }\n }\n\n ngOnDestroy(): void {\n this.resizeObserver?.disconnect();\n this.selectionService.clearSelection();\n }\n\n private getInternalPointer(stage: any): { x: number; y: number } {\n const pointer = stage.getPointerPosition();\n if (!pointer) return { x: 0, y: 0 };\n return {\n x: (pointer.x - stage.x()) / stage.scaleX(),\n y: (pointer.y - stage.y()) / stage.scaleY(),\n };\n }\n\n protected selectHallFloor(floorId: number): void {\n this.bookingDataService.setSelectedHallFloor(floorId);\n }\n\n protected handleStageClick(konvaEvent: any): void {\n if (this.readOnly) return;\n\n const stage =\n konvaEvent.angularComponent?.getStage?.() ?? konvaEvent.event?.target?.getStage?.();\n if (!stage) return;\n\n const internalPos = this.getInternalPointer(stage);\n const hit = findElementAtPosition(\n this.bookingDataService.renderData(),\n internalPos.x,\n internalPos.y,\n );\n if (!hit) return;\n\n const emitNeedsLoginError = this.needsLogin && !this.isLoggedIn;\n\n if (hit.element.type === RoomMapElementType.ZONE) {\n if (emitNeedsLoginError) {\n this.needsLoginError.emit();\n return;\n }\n\n const zoneId = hit.element.elementId;\n const zoneTickets = this.selectionService.getZoneTickets(zoneId);\n const selectedTickets = zoneTickets.filter((t) => this.selectionService.isSelected(t));\n\n this.selectionService.initZoneQuantity(zoneId, hit.element.zoneCapacity || 0);\n\n if (selectedTickets.length > 0) {\n this.selectionService.adjustZoneQuantity(zoneId, -1);\n } else {\n this.selectionService.adjustZoneQuantity(zoneId, 1);\n }\n\n this.selectionChange.emit(this.selectionService.selectedTickets());\n return;\n }\n\n const ticket = findTicketAtPosition(hit.element, hit.relX, hit.relY);\n if (ticket) {\n if (emitNeedsLoginError) {\n this.needsLoginError.emit();\n return;\n }\n\n this.selectionService.toggle(ticket);\n this.selectionChange.emit(this.selectionService.selectedTickets());\n }\n }\n\n protected handleStageMouseMove(konvaEvent: any): void {\n const stage =\n konvaEvent.angularComponent?.getStage?.() ?? konvaEvent.event?.target?.getStage?.();\n if (!stage) return;\n\n const internalPos = this.getInternalPointer(stage);\n const hit = findElementAtPosition(\n this.bookingDataService.renderData(),\n internalPos.x,\n internalPos.y,\n );\n\n this.bookingDataService.setHoveredFloor(hit?.element.hallFloorId ?? null);\n\n if (!hit) {\n this.tooltipData.set(null);\n return;\n }\n\n let ticket: PerformanceTicket | null = null;\n let seatLabel: string | null = null;\n\n if (hit.element.type === RoomMapElementType.ZONE) {\n ticket = hit.element.tickets[0] || null;\n } else {\n ticket = findTicketAtPosition(hit.element, hit.relX, hit.relY);\n\n if (ticket) {\n seatLabel = ticket.seat_label;\n }\n }\n\n if (ticket) {\n const pointer = stage.getPointerPosition();\n const tooltip = this.selectionService.buildTooltipData(\n ticket,\n hit.element.elementName,\n seatLabel,\n (pointer?.x || 0) + 15,\n (pointer?.y || 0) + 15,\n );\n this.tooltipData.set(tooltip);\n } else {\n this.tooltipData.set(null);\n }\n }\n\n protected handleStageMouseLeave(): void {\n this.tooltipData.set(null);\n this.bookingDataService.setHoveredFloor(null);\n }\n\n protected handleWheel(konvaEvent: any): void {\n const nativeEvent = konvaEvent.event?.evt;\n if (!nativeEvent) return;\n nativeEvent.preventDefault();\n this.zoomService.handleWheelZoom(nativeEvent.deltaY);\n }\n\n protected trackByElementId(_index: number, item: ElementRenderData): number {\n return item.elementId;\n }\n\n protected trackByFloorId(_index: number, floor: HallFloorOption): HallFloorOption {\n return floor;\n }\n}\n","<div class=\"ticket-map-canvas-container\">\n @if (isBrowser) {\n <ko-stage\n [config]=\"bookingDataService.stageConfig()\"\n (click)=\"handleStageClick($event)\"\n (mousemove)=\"handleStageMouseMove($event)\"\n (mouseleave)=\"handleStageMouseLeave()\"\n (wheel)=\"handleWheel($event)\"\n >\n @for (group of floorGroups(); track group.floorId) {\n <ko-layer #floorLayer [config]=\"{ name: floorLayerName(group.floorId) }\">\n @for (element of group.elements; track trackByElementId($index, element)) {\n <ko-shape [config]=\"element.shapeConfig\" />\n }\n </ko-layer>\n }\n </ko-stage>\n\n @if (tooltipData(); as tooltip) {\n <div class=\"ticket-tooltip\" [style.left.px]=\"tooltip.x\" [style.top.px]=\"tooltip.y\">\n <div class=\"tooltip-header\">{{ tooltip.elementName }}</div>\n @if (tooltip.seatLabel) {\n <div class=\"tooltip-row\">\n <span class=\"tooltip-label\">Asiento:</span>\n <span class=\"tooltip-value\">{{ tooltip.seatLabel }}</span>\n </div>\n }\n <div class=\"tooltip-row\">\n <span class=\"tooltip-label\">Precio:</span>\n <span class=\"tooltip-value\">${{ tooltip.price | number: '1.0-0' }}</span>\n </div>\n <div class=\"tooltip-row\">\n <span class=\"tooltip-label\">Estado:</span>\n <span class=\"tooltip-status\">\n <span class=\"status-dot\" [style.background]=\"tooltip.statusColor\"></span>\n {{ tooltip.statusLabel }}\n </span>\n </div>\n @if (tooltip.isSelected) {\n <div class=\"tooltip-selected-badge\">Seleccionado</div>\n }\n </div>\n }\n }\n</div>\n","import { Component, inject, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TicketMapWidgetComponent } from '../ticket-map-widget/ticket-map-widget.component';\nimport { TicketMapWidgetHeaderComponent } from '../ticket-map-widget-header/ticket-map-widget-header.component';\nimport { PerformanceBookingDataService } from '../../../services';\n\n@Component({\n selector: 'ticket-map-price-zones',\n imports: [CommonModule, TicketMapWidgetComponent, TicketMapWidgetHeaderComponent],\n templateUrl: './ticket-map-price-zones.component.html',\n styleUrl: './ticket-map-price-zones.component.scss',\n})\nexport class TicketMapPriceZonesComponent {\n @Input() title: string = 'Precios por zona';\n protected bookingDataService = inject(PerformanceBookingDataService);\n}\n","<ticket-map-widget>\n <ticket-map-widget-header [title]=\"title\" />\n\n <div class=\"ticket-map-price-zones\">\n @for (zone of bookingDataService.roomMap()?.price_zones ?? []; track zone.id) {\n <div class=\"ticket-map-price-zones__item\">\n <span\n class=\"ticket-map-price-zones__item-color\"\n [style.background-color]=\"zone.color\"\n ></span>\n <p class=\"ticket-map-price-zones__item-name\">{{ zone.name }}</p>\n <p class=\"ticket-map-price-zones__item-price\">${{ zone.normal_price | number: '1.0-2' }}</p>\n </div>\n }\n </div>\n</ticket-map-widget>\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Product } from '../../../interfaces';\nimport { TicketSelectionService } from '../../../services';\n\n@Component({\n selector: 'ticket-map-product-selection-item',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './ticket-map-product-selection-item.component.html',\n styleUrl: './ticket-map-product-selection-item.component.scss',\n})\nexport class TicketMapProductSelectionItemComponent {\n @Input({ required: true }) product!: Product;\n\n constructor(protected selectionService: TicketSelectionService) {}\n\n get quantity(): number {\n return this.selectionService.getProductQuantity(this.product.id);\n }\n\n get firstImage(): string | undefined {\n return this.product.images?.[0]?.full_url;\n }\n\n increment(): void {\n this.selectionService.updateProductQuantity(this.product.id, 1);\n }\n\n decrement(): void {\n this.selectionService.updateProductQuantity(this.product.id, -1);\n }\n}\n","<div class=\"ticket-map-product-selection-item\">\n <div class=\"ticket-map-product-selection-item__image\">\n @if (firstImage) {\n <img\n [src]=\"firstImage\"\n [alt]=\"product.name\"\n class=\"ticket-map-product-selection-item__image-img\"\n />\n } @else {\n <i class=\"ri-shopping-bag-line ticket-map-product-selection-item__image-icon\"></i>\n }\n </div>\n\n <div class=\"ticket-map-product-selection-item__content\">\n <div class=\"ticket-map-product-selection-item__content-name\">{{ product.name }}</div>\n\n @if (product.sku) {\n <div class=\"ticket-map-product-selection-item__content-sku\">SKU: {{ product.sku }}</div>\n }\n\n <div class=\"ticket-map-product-selection-item__content-price\">\n ${{ product.price | number: '1.0' }}\n </div>\n </div>\n\n <div class=\"ticket-map-product-selection-item__quantity\">\n <button\n type=\"button\"\n class=\"ticket-map-product-selection-item__quantity-button\"\n [disabled]=\"quantity <= 0\"\n (click)=\"decrement()\"\n >\n <i class=\"ri-subtract-line\"></i>\n </button>\n\n <input\n type=\"number\"\n class=\"ticket-map-product-selection-item__quantity-input\"\n [value]=\"quantity\"\n readonly\n />\n\n <button\n type=\"button\"\n class=\"ticket-map-product-selection-item__quantity-button\"\n (click)=\"increment()\"\n >\n <i class=\"ri-add-line\"></i>\n </button>\n </div>\n</div>\n","import { Component, computed, inject, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TicketMapProductSelectionItemComponent } from '../ticket-map-product-selection-item/ticket-map-product-selection-item.component';\nimport { TicketMapWidgetComponent } from '../ticket-map-widget/ticket-map-widget.component';\nimport { TicketMapWidgetHeaderComponent } from '../ticket-map-widget-header/ticket-map-widget-header.component';\nimport { PerformanceBookingDataService } from '../../../services';\n\n@Component({\n selector: 'ticket-map-product-selection',\n standalone: true,\n imports: [\n CommonModule,\n TicketMapWidgetComponent,\n TicketMapWidgetHeaderComponent,\n TicketMapProductSelectionItemComponent,\n ],\n templateUrl: './ticket-map-product-selection.component.html',\n styleUrl: './ticket-map-product-selection.component.scss',\n})\nexport class TIcketMapProductSelectionComponent {\n @Input() title: string = 'Productos relacionados';\n @Input() subtitle: string = '';\n\n private bookingDataService = inject(PerformanceBookingDataService);\n\n readonly products = computed(() => this.bookingDataService.roomMap()?.products ?? []);\n}\n","@if (products().length > 0) {\n <ticket-map-widget>\n <ticket-map-widget-header [title]=\"title\" [subtitle]=\"subtitle\" />\n\n <div class=\"products-list\">\n @for (product of products(); track product.id) {\n <ticket-map-product-selection-item [product]=\"product\" />\n }\n </div>\n </ticket-map-widget>\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ActivatedRoute } from '@angular/router';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\nimport { TicketMapWidgetHeaderComponent } from '../ticket-map-widget-header/ticket-map-widget-header.component';\nimport { TicketMapWidgetComponent } from '../ticket-map-widget/ticket-map-widget.component';\nimport {\n PerformanceBookingDataService,\n TicketSelectionDetailsService,\n TicketSelectionDiscountService,\n TicketSelectionService,\n TicketSelectionTotalsService,\n} from '../../../services';\n\n@Component({\n selector: 'ticket-map-totals',\n standalone: true,\n imports: [\n CommonModule,\n AppButtonComponent,\n TicketMapWidgetHeaderComponent,\n TicketMapWidgetComponent,\n ],\n templateUrl: './ticket-map-totals.component.html',\n styleUrl: './ticket-map-totals.component.scss',\n})\nexport class TicketMapTotalsComponent {\n @Input() title: string = 'Totales de la selección';\n @Input() buttonText: string = 'Generar orden de compra';\n @Input() loadingButtonText: string = 'Generando orden de compra...';\n @Input() isLoading: boolean = false;\n @Output() onPurchaseClick = new EventEmitter<void>();\n\n constructor(\n protected bookingDataService: PerformanceBookingDataService,\n protected selectionDetailsService: TicketSelectionDetailsService,\n protected selectionDiscountService: TicketSelectionDiscountService,\n protected selectionTotalsService: TicketSelectionTotalsService,\n protected selectionService: TicketSelectionService,\n private activatedRoute: ActivatedRoute,\n ) {}\n\n get serviceFee(): number {\n return this.selectionTotalsService.serviceFee();\n }\n\n get performanceId(): number {\n return Number(this.activatedRoute.snapshot.paramMap.get('id'));\n }\n\n get selectedTicketIds(): number[] {\n return this.selectionService.selectedTicketIdList();\n }\n}\n","<ticket-map-widget class=\"w-full\">\n <ticket-map-widget-header [title]=\"title\" />\n\n <div class=\"ticket-map-totals\">\n <p class=\"ticket-map-totals__item\">\n <span>Entradas ({{ selectionService.selectedCount() | number: '1.0-2' }}):</span>\n <span> ${{ selectionTotalsService.ticketSubtotal() | number: '1.0-2' }} </span>\n </p>\n\n @if (selectionService.selectedProductCount() > 0) {\n <p class=\"ticket-map-totals__item\">\n <span>Productos ({{ selectionService.selectedProductCount() | number: '1.0-2' }}):</span>\n <span>${{ selectionTotalsService.productSubtotal() | number: '1.0-2' }}</span>\n </p>\n }\n\n @if (selectionTotalsService.rawServiceFee() > 0) {\n <p class=\"ticket-map-totals__item\">\n <span>\n Tarifa de servicio ({{ selectionService.selectedCount() | number: '1.0-2' }}):\n </span>\n @if (selectionTotalsService.isServiceFeeExempt()) {\n <span class=\"line-through\">\n <s>${{ selectionTotalsService.rawServiceFee() | number: '1.0-2' }}</s>\n $0 (exonerada)\n </span>\n } @else {\n <span>${{ selectionTotalsService.rawServiceFee() | number: '1.0-2' }}</span>\n }\n </p>\n }\n\n @if (!!selectionDiscountService.coupon() && selectionTotalsService.discountAmount()) {\n <p class=\"ticket-map-totals__item\">\n <span>Cupón de descuento (solo entradas):</span>\n <span class=\"line-through\">\n -${{ selectionTotalsService.discountAmount() | number: '1.0-2' }}\n @if (selectionDiscountService.selectedDiscount()?.discountType === 'percentage') {\n ({{ selectionDiscountService.coupon()?.discount_value }}%)\n }\n </span>\n </p>\n }\n\n @if (!!selectionDiscountService.corporateBond()) {\n <p class=\"ticket-map-totals__item\">\n <span>Bono corporativo (solo entradas):</span>\n <span class=\"line-through\">\n ${{ selectionDiscountService.corporateBond()?.value ?? '0' | number: '1.0-2' }}\n </span>\n </p>\n }\n\n @if (!!selectionDiscountService.giftBond()) {\n <p class=\"ticket-map-totals__item\">\n <span>Bono de regalo (solo entradas):</span>\n <span class=\"line-through\">\n ${{ selectionDiscountService.giftBond()?.original_value ?? '0' | number: '1.0-2' }}\n </span>\n </p>\n }\n\n @if (!!selectionDiscountService.vipCard() && selectionTotalsService.discountAmount()) {\n <p class=\"ticket-map-totals__item\">\n <span>Tarjeta VIP (solo entradas):</span>\n <span class=\"line-through\">\n -${{ selectionTotalsService.discountAmount() | number: '1.0-2' }} ({{\n selectionDiscountService.vipCard()?.category_snapshot?.discount_percentage\n }}%)\n </span>\n </p>\n }\n\n @if (!!selectionDiscountService.subscription()) {\n <p class=\"ticket-map-totals__item\">\n <span>Abono:</span>\n <span class=\"line-through\">\n -${{ selectionTotalsService.discountAmount() | number: '1.0-2' }} (100%)\n </span>\n </p>\n }\n\n <hr class=\"ticket-map-totals__divider\" />\n\n <div class=\"ticket-map-totals__calculated\">\n <span class=\"ticket-map-totals__calculated-title\">Total:</span>\n\n @if (\n selectionTotalsService.totalDiscounted() || selectionTotalsService.totalDiscounted() === 0\n ) {\n <span class=\"ticket-map-totals__calculated-inline\">\n <span class=\"ticket-map-totals__calculated-discount\">\n ${{ selectionTotalsService.totalValue() | currency: 'COP' : 'symbol' : '1.0-2' }}\n </span>\n <span class=\"ticket-map-totals__calculated-total\">\n ${{ selectionTotalsService.totalDiscounted() | currency: 'COP' : 'symbol' : '1.0-2' }}\n </span>\n </span>\n } @else {\n <span class=\"ticket-map-totals__calculated-total\">\n ${{ selectionTotalsService.totalValue() | number: '1.0-2' }}\n </span>\n }\n </div>\n\n @if (selectionService.selectedCount() > 0 || selectionService.selectedProductCount() > 0) {\n <div class=\"flex flex-col gap-2\">\n <app-button\n (click)=\"onPurchaseClick.emit()\"\n size=\"sm\"\n icon=\"ri-dashboard-3-line\"\n [text]=\"buttonText\"\n [loadingText]=\"loadingButtonText\"\n [loading]=\"isLoading\"\n variant=\"primary\"\n />\n </div>\n }\n </div>\n</ticket-map-widget>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TicketMapWidgetComponent } from '../ticket-map-widget/ticket-map-widget.component';\nimport { TicketMapWidgetHeaderComponent } from '../ticket-map-widget-header/ticket-map-widget-header.component';\nimport { TicketMapFloorSelectorComponent } from '../ticket-map-floor-selector/ticket-map-floor-selector.component';\nimport { TicketMapZoomControlsComponent } from '../ticket-map-zoom-controls/ticket-map-zoom-controls.component';\nimport { PerformanceTicketMapComponent } from '../performance-ticket-map/performance-ticket-map.component';\nimport { PerformanceTicket } from '../../../interfaces';\n\n@Component({\n selector: 'ticket-map-wrapper',\n standalone: true,\n imports: [\n CommonModule,\n TicketMapWidgetComponent,\n TicketMapWidgetHeaderComponent,\n TicketMapFloorSelectorComponent,\n TicketMapZoomControlsComponent,\n PerformanceTicketMapComponent,\n ],\n templateUrl: './ticket-map-wrapper.component.html',\n styleUrls: ['./ticket-map-wrapper.component.scss'],\n})\nexport class TicketMapWrapperComponent {\n @Output() selectionChange = new EventEmitter<PerformanceTicket[]>();\n @Output() needsLoginError = new EventEmitter();\n @Input() readOnly = false;\n @Input() needsLogin = false;\n @Input() isLoggedIn = true;\n}\n","<ticket-map-widget>\n <ticket-map-widget-header title=\"Plano de la sala\">\n <ticket-map-floor-selector />\n <div class=\"zoom-controls-wrapper\">\n <ticket-map-zoom-controls />\n </div>\n </ticket-map-widget-header>\n\n <div class=\"seat-map-wrapper\" #wrapper>\n <performance-ticket-map\n [readOnly]=\"readOnly\"\n [needsLogin]=\"needsLogin\"\n [isLoggedIn]=\"isLoggedIn\"\n (needsLoginError)=\"needsLoginError.emit()\"\n (selectionChange)=\"selectionChange.emit()\"\n />\n </div>\n</ticket-map-widget>\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'seat-selection-empty-summary',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './seat-selection-empty-summary.component.html',\n styleUrl: './seat-selection-empty-summary.component.scss',\n})\nexport class SeatSelectionEmptySummaryComponent {}\n","<div class=\"seat-selection-empty-summary\">\n <div class=\"seat-selection-empty-summary__icon\">\n <i class=\"ri-armchair-line seat-selection-empty-summary__icon--size\"></i>\n </div>\n <p class=\"seat-selection-empty-summary__title\">No has seleccionado asientos</p>\n <p class=\"seat-selection-empty-summary__subtitle\">\n Haz clic en el mapa para seleccionar los asientos\n </p>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TicketSelectionService } from '../../../services';\nimport { PerformanceTicket } from '../../../interfaces';\nimport { RoomMapElementType } from '../../../enums';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\nimport { NumberInputComponent } from '../../forms/number-input/number-input.component';\nimport { getItemTypeIcon } from '../../../helpers';\n\n@Component({\n selector: 'seat-selection-summary-item',\n standalone: true,\n imports: [CommonModule, FormsModule, AppButtonComponent, NumberInputComponent],\n templateUrl: './seat-selection-summary-item.component.html',\n styleUrl: './seat-selection-summary-item.component.scss',\n})\nexport class SeatSelectionSummaryItemComponent {\n @Input({ required: true }) item!: PerformanceTicket;\n\n constructor(protected selectionService: TicketSelectionService) {}\n\n getItemTypeIcon = getItemTypeIcon;\n\n // Las \"Zonas de público\" se compran por cantidad (varios tickets agrupados en\n // un solo item con element_qty); asientos y mesas siguen siendo selección 1:1.\n get isZone(): boolean {\n return this.item.element_type === RoomMapElementType.ZONE;\n }\n\n get zoneMax(): number {\n return this.selectionService.getZoneMax(this.item.room_map_element_id);\n }\n\n onZoneQuantityChange(value: number | null): void {\n if (value === null) return;\n this.selectionService.setZoneQuantity(this.item.room_map_element_id, value);\n }\n\n removeItem(ticket: PerformanceTicket): void {\n if (this.isZone) {\n this.selectionService.setZoneQuantity(ticket.room_map_element_id, 0);\n return;\n }\n this.selectionService.deselect(ticket);\n }\n}\n","<div class=\"seat-selection-summary-item\">\n <div class=\"seat-selection-summary-item__icon\">\n {{ getItemTypeIcon(item) }}\n </div>\n\n <div class=\"seat-selection-summary-item__content\">\n <div class=\"seat-selection-summary-item__content-label\">{{ item.seat_label }}</div>\n\n <div class=\"seat-selection-summary-item__content-price\">\n ${{ item.normal_price | number: '1.0' }}\n </div>\n </div>\n\n <div class=\"seat-selection-summary-item__actions\">\n @if (isZone) {\n <number-input\n name=\"zone-quantity\"\n [ngModel]=\"item.element_qty ?? 1\"\n (ngModelChange)=\"onZoneQuantityChange($event)\"\n [min]=\"0\"\n [max]=\"zoneMax\"\n [step]=\"1\"\n fieldGroupClass=\"seat-selection-summary-item__qty-input\"\n />\n } @else {\n <app-button\n variant=\"transparent\"\n size=\"xs\"\n text=\"\"\n icon=\"ri-close-line\"\n (clicked)=\"removeItem(item)\"\n />\n }\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SeatSelectionEmptySummaryComponent } from '../seat-selection-empty-summary/seat-selection-empty-summary.component';\nimport { SeatSelectionSummaryItemComponent } from '../seat-selection-summary-item/seat-selection-summary-item.component';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\nimport { TicketMapWidgetComponent } from '../ticket-map-widget/ticket-map-widget.component';\nimport { TicketMapWidgetHeaderComponent } from '../ticket-map-widget-header/ticket-map-widget-header.component';\nimport { TicketSelectionService } from '../../../services';\nimport { PerformanceTicket } from '../../../interfaces';\nimport { RoomMapElementType } from '../../../enums';\n\n@Component({\n selector: 'seat-selection-summary',\n standalone: true,\n imports: [\n CommonModule,\n AppButtonComponent,\n SeatSelectionEmptySummaryComponent,\n SeatSelectionSummaryItemComponent,\n TicketMapWidgetComponent,\n TicketMapWidgetHeaderComponent,\n ],\n templateUrl: './seat-selection-summary.component.html',\n})\nexport class SeatSelectionSummaryComponent {\n @Input() title: string = 'Resumen de la selección';\n @Input() clearButtonText: string = 'Limpiar todo';\n\n constructor(protected selectionService: TicketSelectionService) {}\n\n // Un item de zona representa un grupo (puede cambiar de ticket representante\n // al variar la cantidad), así que se trackea por elemento y no por ticket.id.\n trackByItem(item: PerformanceTicket): string | number {\n return item.element_type === RoomMapElementType.ZONE\n ? `zone-${item.room_map_element_id}`\n : item.id;\n }\n}\n","<ticket-map-widget>\n <ticket-map-widget-header [title]=\"title\" />\n\n @if (selectionService.selectedCount() > 0) {\n <div class=\"tickets-list\">\n @for (item of selectionService.summaryItems(); track trackByItem(item)) {\n <seat-selection-summary-item [item]=\"item\" />\n }\n </div>\n\n @if (selectionService.selectedCount() > 0) {\n <div class=\"tickets-actions\">\n <app-button\n size=\"xs\"\n [text]=\"clearButtonText\"\n icon=\"ri-delete-bin-line\"\n (clicked)=\"selectionService.clearSelection()\"\n />\n </div>\n }\n } @else {\n <seat-selection-empty-summary />\n }\n</ticket-map-widget>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ConfirmationOrderModalService } from '../../../services/ticket-selection/confirmation-order-modal.service';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\nimport { AppModalComponent } from '../../modals/app-modal/app-modal.component';\nimport { PerformanceBookingDataService } from '../../../services/ticket-selection/performance-booking-data.service';\nimport { TicketSelectionDiscountService } from '../../../services/ticket-selection/ticket-selection-discount.service';\nimport { TicketSelectionService } from '../../../services/ticket-selection/ticket-selection.service';\nimport { TicketSelectionTotalsService } from '../../../services/ticket-selection/ticket-selection-totals.service';\nimport { PerformanceTicket, Product } from '../../../interfaces';\nimport { RoomMapElementType } from '../../../enums';\n\n@Component({\n selector: 'confirmation-order-modal',\n standalone: true,\n imports: [CommonModule, AppButtonComponent, AppModalComponent],\n templateUrl: './confirmation-order-modal.component.html',\n styleUrls: ['./confirmation-order-modal.component.scss'],\n})\nexport class ConfirmationOrderModalComponent {\n @Input() modalTitle: string = 'Confirmación de compra';\n @Input() confirmButtonText: string = 'Confirmar compra';\n @Input() confirmButtonTextLoading: string = 'Confirmando compra...';\n @Input() loading: boolean = false;\n @Output() onConfirm = new EventEmitter();\n\n constructor(\n private confirmationOrderModalService: ConfirmationOrderModalService,\n private selectionDiscountService: TicketSelectionDiscountService,\n private selectionTotalsService: TicketSelectionTotalsService,\n private selectionService: TicketSelectionService,\n private bookingDataService: PerformanceBookingDataService,\n ) {}\n\n get isOpen() {\n return this.confirmationOrderModalService.modalIsOpen;\n }\n\n get showTitle(): string | null {\n return this.bookingDataService.show()?.title ?? null;\n }\n\n get performanceStartTime(): Date | string | null {\n return this.bookingDataService.performance()?.start_time ?? null;\n }\n\n get hallName(): string | null {\n const roomMap = this.bookingDataService.performance()?.room_map;\n return roomMap?.hall_name ?? roomMap?.hall?.name ?? null;\n }\n\n get venueName(): string | null {\n const roomMap = this.bookingDataService.performance()?.room_map;\n return roomMap?.venue_name ?? roomMap?.hall?.venue?.name ?? null;\n }\n\n get ticketItems(): PerformanceTicket[] {\n return this.selectionService.summaryItems();\n }\n\n get selectedProducts(): { product: Product; quantity: number }[] {\n const products = this.selectionService.products();\n const result: { product: Product; quantity: number }[] = [];\n this.selectionService.productQuantities().forEach((quantity, id) => {\n if (quantity <= 0) return;\n const product = products.find((p) => p.id === id);\n if (product) result.push({ product, quantity });\n });\n return result;\n }\n\n ticketItemLabel(ticket: PerformanceTicket): string {\n const base =\n ticket.seat_label || ticket.seat_numeration || this.elementTypeLabel(ticket.element_type);\n return ticket.element_qty && ticket.element_qty > 1 ? `${base} (x${ticket.element_qty})` : base;\n }\n\n ticketItemPrice(ticket: PerformanceTicket): number {\n const unitPrice = Number(ticket.normal_price || 0);\n return ticket.element_qty ? unitPrice * ticket.element_qty : unitPrice;\n }\n\n private elementTypeLabel(type: RoomMapElementType): string {\n switch (type) {\n case RoomMapElementType.TABLE:\n return 'Mesa';\n case RoomMapElementType.ZONE:\n return 'Zona general';\n default:\n return 'Entrada';\n }\n }\n\n get selectedCount(): number {\n return this.selectionService.selectedCount();\n }\n\n get serviceFee(): number {\n return this.selectionTotalsService.serviceFee();\n }\n\n get subtotalValue(): number {\n return this.selectionTotalsService.subtotalValue();\n }\n\n get ticketSubtotal(): number {\n return (\n this.selectionTotalsService.subtotalValue() - this.selectionTotalsService.productSubtotal()\n );\n }\n\n get productSubtotal(): number {\n return this.selectionTotalsService.productSubtotal();\n }\n\n get productCount(): number {\n return this.selectionService.selectedProductCount();\n }\n\n get totalValue(): number {\n return this.selectionTotalsService.totalValue();\n }\n\n get totalDiscounted(): number | null {\n return this.selectionTotalsService.totalDiscounted();\n }\n\n get coupon() {\n return this.selectionDiscountService.coupon();\n }\n\n get corporateBond() {\n return this.selectionDiscountService.corporateBond();\n }\n\n get giftBond() {\n return this.selectionDiscountService.giftBond();\n }\n\n get vipCard() {\n return this.selectionDiscountService.vipCard();\n }\n\n get subscription() {\n return this.selectionDiscountService.subscription();\n }\n\n /**\n * A diferencia de coupon/corporateBond/giftBond (que aquí muestran su\n * valor crudo sin pasar por `discountAmount()`), para VIP y Abono sí se\n * calcula el monto real en pesos, ya que el descuento es un porcentaje.\n */\n get vipDiscountAmount(): number {\n return this.selectionTotalsService.discountAmount() ?? 0;\n }\n\n get rawServiceFee(): number {\n return this.selectionTotalsService.rawServiceFee();\n }\n\n get isServiceFeeExempt(): boolean {\n return this.selectionTotalsService.isServiceFeeExempt();\n }\n\n onClose() {\n if (this.loading) return;\n this.confirmationOrderModalService.close();\n }\n\n confirmOrder() {\n this.onConfirm && this.onConfirm.emit();\n }\n}\n","<app-modal\n [title]=\"modalTitle\"\n [isOpen]=\"isOpen\"\n [interactiveClose]=\"false\"\n (closeModal)=\"onClose()\"\n size=\"md\"\n>\n <div class=\"confirmation-modal\">\n <p class=\"confirmation-modal__description\">\n Revise los detalles de la compra antes de confirmar.\n </p>\n\n @if (showTitle) {\n <div class=\"confirmation-modal__event\">\n <p class=\"confirmation-modal__event-title\">{{ showTitle }}</p>\n @if (performanceStartTime) {\n <p class=\"confirmation-modal__event-meta\">\n {{ performanceStartTime | date: 'EEEE d MMMM, yyyy hh:mm a' }}\n </p>\n }\n @if (hallName || venueName) {\n <p class=\"confirmation-modal__event-meta\">\n <i class=\"ri-map-pin-line\"></i>\n {{ hallName }}{{ hallName && venueName ? ' · ' : '' }}{{ venueName }}\n </p>\n }\n </div>\n }\n\n @if (ticketItems.length > 0) {\n <div class=\"confirmation-modal__list\">\n @for (ticket of ticketItems; track ticket.id) {\n <p class=\"confirmation-modal__list-item\">\n <span>{{ ticketItemLabel(ticket) }}</span>\n <span>${{ ticketItemPrice(ticket) | number: '1.0' }}</span>\n </p>\n }\n </div>\n }\n\n @if (selectedProducts.length > 0) {\n <div class=\"confirmation-modal__list\">\n @for (entry of selectedProducts; track entry.product.id) {\n <p class=\"confirmation-modal__list-item\">\n <span>{{ entry.product.name }} (x{{ entry.quantity }})</span>\n <span>${{ entry.product.price * entry.quantity | number: '1.0' }}</span>\n </p>\n }\n </div>\n }\n\n <hr class=\"confirmation-modal__divider\" />\n\n <p class=\"confirmation-modal__item\">\n <span>Entradas ({{ selectedCount | number: '1.0-0' }}):</span>\n <span>${{ ticketSubtotal | number: '1.0' }}</span>\n </p>\n\n @if (productCount > 0) {\n <p class=\"confirmation-modal__item\">\n <span>Productos ({{ productCount | number: '1.0-0' }}):</span>\n <span>${{ productSubtotal | number: '1.0' }}</span>\n </p>\n }\n\n @if (rawServiceFee > 0) {\n <p class=\"confirmation-modal__item\">\n <span>Tarifa de servicio:</span>\n @if (isServiceFeeExempt) {\n <span>\n <s>${{ rawServiceFee | number: '1.0' }}</s>\n $0 (exonerada)\n </span>\n } @else {\n <span>${{ rawServiceFee | number: '1.0' }}</span>\n }\n </p>\n }\n\n @if (coupon) {\n <p class=\"confirmation-modal__item\">\n <span>Cupón de descuento (solo entradas):</span>\n <span class=\"confirmation-modal__discount\">\n ${{ coupon.discount_value | number: '1.0-2' }}\n </span>\n </p>\n }\n\n @if (corporateBond) {\n <p class=\"confirmation-modal__item\">\n <span>Bono corporativo (solo entradas):</span>\n <span class=\"confirmation-modal__discount\">\n ${{ corporateBond.value | number: '1.0-2' }}\n </span>\n </p>\n }\n\n @if (giftBond) {\n <p class=\"confirmation-modal__item\">\n <span>Bono de regalo (solo entradas):</span>\n <span class=\"confirmation-modal__discount\">\n ${{ giftBond.original_value | number: '1.0-2' }}\n </span>\n </p>\n }\n\n @if (vipCard) {\n <p class=\"confirmation-modal__item\">\n <span>Tarjeta VIP (solo entradas):</span>\n <span class=\"confirmation-modal__discount\">\n -${{ vipDiscountAmount | number: '1.0-2' }} ({{\n vipCard.category_snapshot.discount_percentage\n }}%)\n </span>\n </p>\n }\n\n @if (subscription) {\n <p class=\"confirmation-modal__item\">\n <span>Abono:</span>\n <span class=\"confirmation-modal__discount\">\n -${{ vipDiscountAmount | number: '1.0-2' }} (100%)\n </span>\n </p>\n }\n\n <hr class=\"confirmation-modal__divider\" />\n\n <p class=\"confirmation-modal__totals\">\n <span class=\"confirmation-modal__totals-title\">Total:</span>\n\n @if (totalDiscounted || totalDiscounted === 0) {\n <span class=\"confirmation-modal__totals-discounted\">\n <span class=\"confirmation-modal__discount\">\n ${{ totalValue | currency: 'COP' : 'symbol' : '1.0' }}\n </span>\n <span class=\"confirmation-modal__price\">\n ${{ totalDiscounted | currency: 'COP' : 'symbol' : '1.0' }}\n </span>\n </span>\n } @else {\n <span class=\"confirmation-modal__price\">${{ totalValue | number: '1.0' }}</span>\n }\n </p>\n </div>\n\n <div class=\"confirmation-modal__actions\">\n <app-button\n size=\"sm\"\n variant=\"tertiary\"\n text=\"Cancelar\"\n (click)=\"onClose()\"\n [disabled]=\"loading\"\n />\n\n <app-button\n size=\"sm\"\n variant=\"primary\"\n [text]=\"confirmButtonText\"\n [loadingText]=\"confirmButtonTextLoading\"\n [loading]=\"loading\"\n [disabled]=\"loading\"\n (click)=\"confirmOrder()\"\n />\n </div>\n</app-modal>\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslocoModule, TranslocoService } from '@jsverse/transloco';\nimport { Order, RecentOrder } from '../../../interfaces';\nimport { ORDER_STATUS_COLORS } from '../../../constants';\nimport { BadgeSize } from '../../../types/badges/badge-size.type';\nimport { AppBadgeComponent } from '../../data-display/app-badge/app-badge.component';\nimport { OrderStatus } from '../../../types';\n\n@Component({\n selector: 'order-status-badge',\n standalone: true,\n imports: [CommonModule, TranslocoModule, AppBadgeComponent],\n templateUrl: './order-status-badge.component.html',\n})\nexport class OrderStatusBadgeComponent {\n @Input({ required: true }) order!: Order | RecentOrder;\n @Input() size: BadgeSize = 'sm';\n\n constructor(protected transloco: TranslocoService) {}\n\n protected get statusColors() {\n return ORDER_STATUS_COLORS[this.order.status as OrderStatus] ?? null;\n }\n}\n","<app-badge\n [text]=\"`order.status.${order.status}` | transloco\"\n [backgroundColor]=\"statusColors.bg\"\n [textColor]=\"statusColors.text\"\n [size]=\"size\"\n/>\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Observable } from 'rxjs';\nimport { TranslocoModule, TranslocoService } from '@jsverse/transloco';\nimport { OrderStatusBadgeComponent } from '../order-status-badge/order-status-badge.component';\nimport { Order } from '../../../interfaces';\nimport { AppBadgeComponent } from '../../data-display/app-badge/app-badge.component';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\nimport { ToastService } from '../../../services/toast.service';\nimport { PaymentMethod, OrderStatus } from '../../../types';\nimport { MercadoPagoPreference } from '../../../interfaces';\n\n@Component({\n selector: 'order-information',\n standalone: true,\n imports: [\n CommonModule,\n OrderStatusBadgeComponent,\n TranslocoModule,\n AppBadgeComponent,\n AppButtonComponent,\n ],\n templateUrl: './order-information.component.html',\n styleUrls: ['./order-information.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class OrderInformationComponent {\n @Input({ required: true }) order!: Order;\n @Input() showPayButton = true;\n @Input() createMpPreference?: (order: Order) => Observable<MercadoPagoPreference>;\n @Output() paymentLinkCreated = new EventEmitter<MercadoPagoPreference>();\n\n isLoading = false;\n\n constructor(\n readonly transloco: TranslocoService,\n private readonly toastService: ToastService,\n ) {}\n\n get hasServiceFeeExemption(): boolean {\n return (\n this.order.service_fee_discounted !== null && this.order.service_fee_discounted !== undefined\n );\n }\n\n get showMpButton(): boolean {\n if (!this.showPayButton || !this.createMpPreference) {\n return false;\n }\n\n return (\n this.order.payment_method === PaymentMethod.MERCADO_PAGO &&\n (this.order.status === OrderStatus.PENDING_PAYMENT ||\n this.order.status === OrderStatus.ON_HOLD)\n );\n }\n\n payWithMercadoPago(): void {\n if (this.isLoading || !this.createMpPreference) {\n return;\n }\n\n this.isLoading = true;\n\n this.createMpPreference(this.order).subscribe({\n next: (preference) => {\n this.isLoading = false;\n this.paymentLinkCreated.emit(preference);\n },\n error: (error) => {\n this.isLoading = false;\n const message = error?.error?.message || this.transloco.translate('order.mpPayButtonError');\n this.toastService.show(message, 'error');\n },\n });\n }\n}\n","@if (!!order) {\n <div class=\"order-information\">\n <div class=\"order-information__header\">\n <div>\n <p class=\"order-information__header-id\">Orden #{{ order.id }}</p>\n <p class=\"order-information__header-uuid\">{{ order.uuid }}</p>\n </div>\n\n <div class=\"order-information__header-actions\">\n <order-status-badge [order]=\"order\" size=\"xs\" />\n\n @if (showMpButton) {\n <app-button\n [text]=\"'order.mpPayButton' | transloco\"\n [loadingText]=\"'order.mpPayButtonLoading' | transloco\"\n [loading]=\"isLoading\"\n variant=\"secondary\"\n size=\"xs\"\n icon=\"ri-wallet-3-line\"\n (clicked)=\"payWithMercadoPago()\"\n />\n }\n </div>\n </div>\n\n <div class=\"order-information__content\">\n @if (order.show_snapshot && order.show_snapshot['title']) {\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Evento</p>\n <p class=\"order-information__content-item-value\">\n {{ order.show_snapshot['title'] }}\n </p>\n </div>\n }\n\n @if (order.performance_snapshot && order.performance_snapshot['start_time']) {\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Fecha de la función</p>\n <p class=\"order-information__content-item-value\">\n {{ order.performance_snapshot['start_time'] | date: 'dd/MM/yyyy hh:mm a' }}\n </p>\n </div>\n }\n\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Fecha de la compra</p>\n <p class=\"order-information__content-item-value\">\n {{ order.created_at | date: 'dd/MM/yyyy hh:mm a' }}\n </p>\n </div>\n\n @if (order.payment_method) {\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Método de pago</p>\n <p class=\"order-information__content-item-value\">\n {{ `order.paymentMethods.${order.payment_method}` | transloco }}\n </p>\n </div>\n }\n\n @if (order.service_fee && order.service_fee > 0) {\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Tarifa de servicio</p>\n <p class=\"order-information__content-item-value\">\n @if (hasServiceFeeExemption) {\n <s>${{ order.service_fee | currency: 'COP' : '' : '1.0-2' }}</s>\n ${{ order.service_fee_discounted | currency: 'COP' : '' : '1.0-2' }} (exonerada)\n } @else {\n ${{ order.service_fee | currency: 'COP' : '' : '1.0-2' }}\n }\n </p>\n </div>\n }\n\n @if (!!order.discount_amount && order.discount_amount > 0) {\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Descuento (solo entradas)</p>\n <p class=\"order-information__content-item-value\">\n ${{ order.discount_amount | currency: 'COP' : '' : '1.0-2' }}\n </p>\n </div>\n }\n\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Total</p>\n @if (order.total_discounted && order.total_discounted >= 0) {\n <p class=\"order-information__content-item-total_discounted\">\n <span class=\"discounted\">\n ${{ order.total_discounted | currency: 'COP' : '' : '1.0-2' }}\n </span>\n <span class=\"order-information__content-item-value total\">\n ${{ order.total | currency: 'COP' : '' : '1.0-2' }}\n </span>\n </p>\n } @else {\n <p class=\"order-information__content-item-value total\">\n ${{ order.total | currency: 'COP' : '' : '1.0-2' }}\n </p>\n }\n </div>\n\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Términos aceptados</p>\n <app-badge\n [text]=\"order.terms_accepted ? 'Aceptado' : 'No aceptado'\"\n [backgroundColor]=\"order.terms_accepted ? '#dcfce7' : '#fee2e2'\"\n [textColor]=\"order.terms_accepted ? '#16a34a' : '#dc2626'\"\n size=\"xs\"\n />\n </div>\n\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Procesamiento de datos aceptado</p>\n <app-badge\n [text]=\"order.data_processing_accepted ? 'Aceptado' : 'No aceptado'\"\n [backgroundColor]=\"order.data_processing_accepted ? '#dcfce7' : '#fee2e2'\"\n [textColor]=\"order.data_processing_accepted ? '#16a34a' : '#dc2626'\"\n size=\"xs\"\n />\n </div>\n\n @if (order.comments) {\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Comentarios</p>\n <p class=\"order-information__content-item-value\">{{ order.comments }}</p>\n </div>\n }\n\n @if (order.address_notes) {\n <div class=\"order-information__content-item\">\n <p class=\"order-information__content-item-title\">Notas de dirección</p>\n <p class=\"order-information__content-item-value\">{{ order.address_notes }}</p>\n </div>\n }\n </div>\n </div>\n}\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslocoModule, TranslocoService } from '@jsverse/transloco';\nimport { OrderItem } from '../../../interfaces';\nimport { ORDER_ITEM_TYPES_COLORS } from '../../../constants';\nimport { BadgeSize } from '../../../types/badges/badge-size.type';\nimport { AppBadgeComponent } from '../../data-display/app-badge/app-badge.component';\nimport { OrderItemType } from '../../../types';\n\n@Component({\n selector: 'order-item-type-badge',\n standalone: true,\n imports: [CommonModule, TranslocoModule, AppBadgeComponent],\n templateUrl: './order-item-type-badge.component.html',\n})\nexport class OrderItemTypeBadgeComponent {\n @Input({ required: true }) item!: OrderItem;\n @Input() size: BadgeSize = 'sm';\n\n constructor(protected transloco: TranslocoService) {}\n\n protected get statusColors() {\n return ORDER_ITEM_TYPES_COLORS[this.item.item_type as OrderItemType] ?? null;\n }\n}\n","<app-badge\n [text]=\"`order.itemType.${item.item_type}` | transloco\"\n [backgroundColor]=\"statusColors.bg\"\n [textColor]=\"statusColors.text\"\n [size]=\"size\"\n/>\n","import {\n Component,\n Input,\n OnInit,\n OnDestroy,\n signal,\n ElementRef,\n ViewChild,\n PLATFORM_ID,\n Inject,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { Subject, takeUntil } from 'rxjs';\nimport QRCode from 'qrcode';\nimport { TicketQrService } from '../../../services/tickets';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\nimport { AppAlertComponent } from '../../feedback/app-alert/app-alert.component';\n\n@Component({\n selector: 'performance-ticket-qr',\n standalone: true,\n imports: [CommonModule, AppButtonComponent, AppAlertComponent],\n templateUrl: './ticket-qr.component.html',\n styleUrl: './ticket-qr.component.scss',\n})\nexport class TicketQrComponent implements OnInit, OnDestroy {\n @Input({ required: true }) ticketUuid!: string;\n @Input() isCustomer: boolean = false;\n\n @ViewChild('qrCanvas', { static: true }) qrCanvas!: ElementRef<HTMLCanvasElement>;\n\n loading = signal(true);\n error = signal(false);\n refreshing = signal(false);\n countdown = signal(0);\n downloading = signal(false);\n\n private destroy$ = new Subject<void>();\n private refreshTimeout: ReturnType<typeof setTimeout> | null = null;\n private countdownInterval: ReturnType<typeof setInterval> | null = null;\n private isFetching = false;\n\n constructor(\n private ticketQrService: TicketQrService,\n @Inject(PLATFORM_ID) private platformId: Object,\n ) {}\n\n ngOnInit() {\n this.fetchAndRender();\n if (isPlatformBrowser(this.platformId)) {\n document.addEventListener('visibilitychange', this.onVisibilityChange);\n window.addEventListener('focus', this.onFocus);\n }\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n this.clearTimers();\n if (isPlatformBrowser(this.platformId)) {\n document.removeEventListener('visibilitychange', this.onVisibilityChange);\n window.removeEventListener('focus', this.onFocus);\n }\n }\n\n private onVisibilityChange = () => {\n if (document.visibilityState === 'visible') {\n this.refreshFromReenter();\n }\n };\n\n private onFocus = () => {\n this.refreshFromReenter();\n };\n\n private refreshFromReenter() {\n if (this.isFetching) return;\n this.clearTimers();\n this.fetchAndRender();\n }\n\n retry() {\n this.error.set(false);\n this.loading.set(true);\n this.clearTimers();\n this.fetchAndRender();\n }\n\n downloadPdf() {\n if (!isPlatformBrowser(this.platformId) || this.downloading()) return;\n this.downloading.set(true);\n\n const request = this.isCustomer\n ? this.ticketQrService.downloadMyTicketPdf(this.ticketUuid)\n : this.ticketQrService.downloadTicketPdf(this.ticketUuid);\n\n request.pipe(takeUntil(this.destroy$)).subscribe({\n next: (blob) => {\n this.downloading.set(false);\n const url = URL.createObjectURL(blob);\n const anchor = document.createElement('a');\n anchor.href = url;\n anchor.download = `boleta-${this.ticketUuid}.pdf`;\n document.body.appendChild(anchor);\n anchor.click();\n anchor.remove();\n URL.revokeObjectURL(url);\n },\n error: () => this.downloading.set(false),\n });\n }\n\n private clearTimers() {\n if (this.refreshTimeout) {\n clearTimeout(this.refreshTimeout);\n this.refreshTimeout = null;\n }\n if (this.countdownInterval) {\n clearInterval(this.countdownInterval);\n this.countdownInterval = null;\n }\n }\n\n private fetchAndRender() {\n if (this.isFetching) return;\n this.isFetching = true;\n\n const request = this.isCustomer\n ? this.ticketQrService.fetchMyQrToken(this.ticketUuid)\n : this.ticketQrService.fetchQrToken(this.ticketUuid);\n\n request.pipe(takeUntil(this.destroy$)).subscribe({\n next: (res) => {\n this.isFetching = false;\n this.loading.set(false);\n this.error.set(false);\n this.renderQr(res.data.token);\n this.startCountdown(res.data.refresh_in);\n this.scheduleRefresh(res.data.refresh_in);\n },\n error: () => {\n this.isFetching = false;\n this.loading.set(false);\n this.error.set(true);\n },\n });\n }\n\n private scheduleRefresh(seconds: number) {\n this.refreshTimeout = setTimeout(() => {\n if (this.isFetching) return;\n this.refreshing.set(true);\n this.isFetching = true;\n\n const refreshRequest = this.isCustomer\n ? this.ticketQrService.fetchMyQrToken(this.ticketUuid)\n : this.ticketQrService.fetchQrToken(this.ticketUuid);\n\n refreshRequest.pipe(takeUntil(this.destroy$)).subscribe({\n next: (res) => {\n this.isFetching = false;\n this.renderQr(res.data.token);\n this.error.set(false);\n this.startCountdown(res.data.refresh_in);\n setTimeout(() => {\n this.refreshing.set(false);\n this.scheduleRefresh(res.data.refresh_in);\n }, 300);\n },\n error: () => {\n this.isFetching = false;\n this.refreshing.set(false);\n this.error.set(true);\n },\n });\n }, seconds * 1000);\n }\n\n private startCountdown(seconds: number) {\n if (this.countdownInterval) {\n clearInterval(this.countdownInterval);\n }\n this.countdown.set(seconds);\n this.countdownInterval = setInterval(() => {\n this.countdown.update((v) => Math.max(0, v - 1));\n }, 1000);\n }\n\n private renderQr(token: string) {\n const canvas = this.qrCanvas.nativeElement;\n QRCode.toCanvas(canvas, token, { width: 256, margin: 2 }, (err) => {\n if (err) console.error('Error rendering QR:', err);\n });\n }\n}\n","<div class=\"ticket-qr\">\n @if (loading()) {\n <div class=\"ticket-qr__loader\">\n <span class=\"ticket-qr__loader-text\">Cargando QR...</span>\n </div>\n }\n\n @if (error()) {\n <div class=\"ticket-qr__container\">\n <app-alert text=\"Error al cargar el código QR\" type=\"error\" />\n <app-button text=\"Reintentar\" (clicked)=\"retry()\" [disabled]=\"loading()\" />\n </div>\n }\n\n <div [class.hidden]=\"loading() || error()\" class=\"ticket-qr__container\">\n <div class=\"transition-opacity duration-300\" [class.opacity-50]=\"refreshing()\">\n <canvas #qrCanvas class=\"ticket-qr__canvas\" width=\"256\" height=\"256\"></canvas>\n </div>\n <span class=\"ticket-qr__updating-text\">\n {{ countdown() > 0 ? `Actualizando en ${countdown()}` : '0s' }}\n </span>\n <app-button\n text=\"Descargar QR en PDF\"\n [disabled]=\"loading() || downloading()\"\n (clicked)=\"downloadPdf()\"\n />\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TicketQrComponent } from '../ticket-qr/ticket-qr.component';\nimport { TicketQrModalService } from '../../../services/tickets/ticket-qr-modal.service';\nimport { AppModalComponent } from '../../modals/app-modal/app-modal.component';\n\n@Component({\n selector: 'ticket-qr-modal',\n standalone: true,\n imports: [CommonModule, AppModalComponent, TicketQrComponent],\n templateUrl: './ticket-qr-modal.component.html',\n styleUrls: ['./ticket-qr-modal.component.scss'],\n})\nexport class TicketQrModalComponent {\n @Input() isCustomer: boolean = false;\n\n constructor(private ticketQrModalService: TicketQrModalService) {}\n\n get isOpen() {\n return this.ticketQrModalService.isOpen;\n }\n\n get ticketUuid() {\n return this.ticketQrModalService.ticketUuid;\n }\n\n get ticketDescription() {\n return this.ticketQrModalService.ticketDescription;\n }\n\n onClose() {\n this.ticketQrModalService.close();\n }\n}\n","<app-modal title=\"Código QR del ticket\" [isOpen]=\"isOpen\" (closeModal)=\"onClose()\" size=\"md\">\n <div class=\"ticket-qr-modal\">\n @if (ticketDescription(); as desc) {\n <p class=\"ticket-qr-modal__description\">{{ desc }}</p>\n }\n\n @if (ticketUuid(); as uuid) {\n <performance-ticket-qr [ticketUuid]=\"uuid\" [isCustomer]=\"isCustomer\" />\n }\n </div>\n</app-modal>\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TicketQrModalService } from '../../../services/tickets/ticket-qr-modal.service';\nimport { TicketQrModalComponent } from '../ticket-qr-modal/ticket-qr-modal.component';\nimport { OrderItemTypeBadgeComponent } from '../order-item-type-badge/order-item-type-badge.component';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\nimport { Order, OrderItem } from '../../../interfaces';\nimport { OrderItemType } from '../../../types';\nimport { ticketCanOpenQr } from '../../../helpers/tickets/ticket-can-open-qr.helper';\nimport { AppBadgeComponent } from '../../data-display/app-badge/app-badge.component';\n\n@Component({\n selector: 'order-items',\n standalone: true,\n imports: [\n CommonModule,\n AppButtonComponent,\n TicketQrModalComponent,\n OrderItemTypeBadgeComponent,\n AppBadgeComponent,\n ],\n templateUrl: './order-items.component.html',\n styleUrls: ['./order-items.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class OrderItemsComponent {\n @Input({ required: true }) order!: Order;\n @Input() isCustomer: boolean = false;\n\n ticketCanOpenQr = ticketCanOpenQr;\n\n constructor(private ticketQrModalService: TicketQrModalService) {}\n\n protected get orderItems(): Order['order_items'] {\n return this.order.order_items ?? [];\n }\n\n protected get products(): Order['order_items'] {\n return this.orderItems?.filter(({ item_type }) => item_type === OrderItemType.PRODUCT) ?? [];\n }\n\n protected get tickets(): Order['order_items'] {\n return this.orderItems?.filter(({ item_type }) => item_type === OrderItemType.TICKET) ?? [];\n }\n\n protected get giftBonds(): Order['order_items'] {\n return this.orderItems?.filter(({ item_type }) => item_type === OrderItemType.GIFT_BOND) ?? [];\n }\n\n protected get corporateBonds(): Order['order_items'] {\n return (\n this.orderItems?.filter(({ item_type }) => item_type === OrderItemType.CORPORATE_BOND) ?? []\n );\n }\n\n protected get vipRecharges(): Order['order_items'] {\n return (\n this.orderItems?.filter(({ item_type }) => item_type === OrderItemType.VIP_RECHARGE) ?? []\n );\n }\n\n protected get showActionColumn(): boolean {\n return this.order.status === 'completed' && this.tickets.length > 0;\n }\n\n protected itemTotal(quantity: number, price: number | null): number {\n return quantity * Number(price ?? 0);\n }\n\n protected hasDiscount(): boolean {\n return !!this.order.discount_amount && this.order.discount_amount > 0;\n }\n\n protected hasServiceFeeExemption(): boolean {\n return (\n this.order.service_fee_discounted !== null && this.order.service_fee_discounted !== undefined\n );\n }\n\n protected hasTicketDiscount(item: OrderItem): boolean {\n return (\n item.item_type === OrderItemType.TICKET &&\n item.discounted_price !== null &&\n item.discounted_price !== undefined\n );\n }\n\n protected get totals(): {\n giftBonds: number;\n corporateBonds: number;\n products: number;\n tickets: number;\n vipRecharges: number;\n } {\n const products: number = this.products?.reduce((accumulator, currentProduct) => {\n return accumulator + currentProduct?.normal_price;\n }, 0);\n\n const tickets: number = this.tickets?.reduce((accumulator, currentTicket) => {\n return accumulator + currentTicket?.normal_price;\n }, 0);\n\n const giftBonds: number = this.giftBonds?.reduce((accumulator, currentTicket) => {\n return accumulator + currentTicket?.normal_price;\n }, 0);\n\n const corporateBonds: number = this.corporateBonds?.reduce((accumulator, currentTicket) => {\n return accumulator + currentTicket?.normal_price;\n }, 0);\n\n const vipRecharges: number = this.vipRecharges?.reduce((accumulator, currentTicket) => {\n return accumulator + currentTicket?.normal_price;\n }, 0);\n\n return { products, tickets, giftBonds, corporateBonds, vipRecharges };\n }\n\n openTicketQr(ticketUuid: string, description: string) {\n this.ticketQrModalService.open(ticketUuid, description);\n }\n}\n","@if (!!order) {\n <div class=\"order-items\">\n <div class=\"order-items__header\">\n <p class=\"order-items__header-title\">\n Información de los artículos comprados ({{ order.order_items.length | number: '1.0' }})\n </p>\n </div>\n <div class=\"order-items__table-container\">\n <table class=\"order-items__table\">\n <thead class=\"order-items__table-head\">\n <tr class=\"order-items__table-head-row\">\n <th class=\"order-items__table-head-cell\">Tipo</th>\n <th class=\"order-items__table-head-cell\">Descripción</th>\n\n <th class=\"order-items__table-head-cell text-right\">Cant.</th>\n <th class=\"order-items__table-head-cell text-right\">Precio</th>\n <th class=\"order-items__table-head-cell text-right\">Total</th>\n @if (showActionColumn) {\n <th class=\"order-items__table-head-cell\">Acciones</th>\n }\n </tr>\n </thead>\n <tbody class=\"order-items__table-body\">\n @for (item of order.order_items; track $index) {\n <tr class=\"order-items__table-body-row\">\n <td class=\"order-items__table-body-cell\">\n <order-item-type-badge [item]=\"item\" size=\"xs\" />\n </td>\n\n <td class=\"order-items__table-body-cell\">\n {{ item.description }}\n </td>\n\n <td class=\"order-items__table-body-cell text-right\">\n {{ item.quantity }}\n </td>\n\n <td class=\"order-items__table-body-cell text-right\">\n @if (hasTicketDiscount(item)) {\n <s class=\"text-gray-400\">${{ item.normal_price | number: '1.0-2' }}</s>\n ${{ item.discounted_price | number: '1.0-2' }}\n } @else {\n ${{ item.normal_price | number: '1.0-2' }}\n }\n </td>\n\n <td class=\"order-items__table-body-cell text-right\">\n <strong>\n @if (hasTicketDiscount(item)) {\n ${{ itemTotal(item.quantity, item.discounted_price) | number: '1.0-2' }}\n } @else {\n ${{ itemTotal(item.quantity, item.normal_price) | number: '1.0-2' }}\n }\n </strong>\n </td>\n\n @if (showActionColumn) {\n <td class=\"order-items__table-body-cell actions\">\n @if (item.ticket && ticketCanOpenQr(order, item.ticket)) {\n <app-button\n text=\"Ver ticket\"\n size=\"xs\"\n icon=\"ri-eye-line\"\n (clicked)=\"openTicketQr(item.ticket_uuid!, item.description)\"\n />\n }\n\n @if (item.ticket && item.ticket.checked_in) {\n <app-badge text=\"Usado\" color=\"error\" size=\"xs\" />\n }\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n <div class=\"order-items__totals\">\n <dl class=\"order-items__totals-container\">\n @if (giftBonds.length > 0 && totals.giftBonds > 0) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Bonos de regalo ({{ giftBonds.length }})</dt>\n <dd class=\"order-items__totals-item-value\">\n @if (totals.giftBonds > 0) {\n <span class=\"text-gray-900\"> ${{ totals.giftBonds | number: '1.0-2' }} </span>\n }\n </dd>\n </div>\n }\n\n @if (corporateBonds.length > 0 && totals.corporateBonds > 0) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">\n Bonos corporativos ({{ corporateBonds.length }})\n </dt>\n <dd class=\"order-items__totals-item-value\">\n @if (totals.corporateBonds > 0) {\n <span class=\"text-gray-900\"> ${{ totals.corporateBonds | number: '1.0-2' }} </span>\n }\n </dd>\n </div>\n }\n\n @if (vipRecharges.length > 0 && totals.vipRecharges > 0) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">\n Recargas de tarjeta VIP ({{ vipRecharges.length }})\n </dt>\n <dd class=\"order-items__totals-item-value\">\n @if (totals.vipRecharges > 0) {\n <span class=\"text-gray-900\"> ${{ totals.vipRecharges | number: '1.0-2' }} </span>\n }\n </dd>\n </div>\n }\n\n @if (tickets.length > 0 && totals.tickets > 0) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Entradas ({{ tickets.length }})</dt>\n <dd class=\"order-items__totals-item-value\">\n @if (totals.tickets > 0) {\n <span class=\"text-gray-900\"> ${{ totals.tickets | number: '1.0-2' }} </span>\n }\n </dd>\n </div>\n }\n\n @if (products.length > 0 && totals.products > 0) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Productos</dt>\n <dd class=\"order-items__totals-item-value\">\n @if (totals.products > 0) {\n <span class=\"text-gray-900\"> ${{ totals.products | number: '1.0-2' }} </span>\n }\n </dd>\n </div>\n }\n\n @if (order.service_fee && order.service_fee > 0) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Tarifa de servicio</dt>\n <dd class=\"order-items__totals-item-value\">\n @if (hasServiceFeeExemption()) {\n <span class=\"text-gray-400\">\n <s>${{ order.service_fee | number: '1.0-2' }}</s>\n </span>\n <span class=\"text-gray-900\">\n ${{ order.service_fee_discounted | number: '1.0-2' }} (exonerada)\n </span>\n } @else {\n <span class=\"text-gray-900\"> ${{ order.service_fee | number: '1.0-2' }} </span>\n }\n </dd>\n </div>\n }\n\n @if (hasDiscount()) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Descuento (solo entradas)</dt>\n <dd class=\"order-items__totals-item-title\">\n $-{{ order.discount_amount | number: '1.0-2' }}\n </dd>\n </div>\n }\n\n <div class=\"order-items__totals-item total-item\">\n <dt class=\"order-items__totals-item-total\">Total</dt>\n <dd class=\"order-items__totals-item-value\">\n @if (!hasDiscount()) {\n <span class=\"order-items__totals-item-total\">\n ${{ order.total | number: '1.0-2' }}\n </span>\n }\n @if (hasDiscount()) {\n <span class=\"order-items__totals-item-discount-wrapper\">\n <span class=\"order-items__totals-item-discount\">\n ${{ order.total | number: '1.0-2' }}\n </span>\n <span class=\"order-items__totals-item-total\">\n ${{ order.total_discounted | number: '1.0-2' }}\n </span>\n </span>\n }\n </dd>\n </div>\n </dl>\n </div>\n </div>\n\n <ticket-qr-modal [isCustomer]=\"isCustomer\" />\n}\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslocoModule } from '@jsverse/transloco';\nimport { Order } from '../../../interfaces';\nimport { AppBadgeComponent } from '../../data-display/app-badge/app-badge.component';\nimport { ORDER_DISCOUNT_COLORS } from '../../../constants';\nimport { getOrderDiscount, OrderDiscountInfo } from '../../../helpers';\n\n@Component({\n selector: 'order-discount-applied',\n standalone: true,\n imports: [CommonModule, TranslocoModule, AppBadgeComponent],\n templateUrl: './order-discount-applied.component.html',\n styleUrls: ['./order-discount-applied.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class OrderDiscountAppliedComponent {\n @Input({ required: true }) order!: Order;\n\n protected get discountInfo(): OrderDiscountInfo {\n return getOrderDiscount(this.order);\n }\n\n // Se muestra el bloque si hubo descuento sobre las boletas O si la tarifa\n // de servicio fue exonerada (una Tarjeta VIP de 0% con exoneracion de\n // tarifa, por ejemplo, no debe quedar sin ningun rastro visible).\n protected get hasDiscount(): boolean {\n return (\n this.discountInfo.type !== null &&\n (this.discountInfo.value > 0 || this.discountInfo.serviceFeeExempt)\n );\n }\n\n protected get discountPercentage(): number | null {\n if (this.discountInfo.discountType !== 'percentage') return null;\n\n switch (this.discountInfo.type) {\n case 'coupon':\n return this.order.coupon_snapshot?.['discount_value'] ?? null;\n case 'vip':\n return this.order.vip_snapshot?.['discount_percentage'] ?? null;\n case 'subscription':\n return 100;\n default:\n return null;\n }\n }\n\n protected get serviceFeeExemptValue(): number {\n // Cuando la tarifa fue exonerada, `service_fee` conserva el valor\n // original y `service_fee_discounted` queda en 0: el \"ahorro\" es el\n // valor original completo.\n if (!this.discountInfo.serviceFeeExempt) return 0;\n return Number(this.order.service_fee ?? 0);\n }\n\n protected get badgeColors(): { text: string; bg: string } {\n if (!this.discountInfo.type) return { text: '', bg: '' };\n return ORDER_DISCOUNT_COLORS[this.discountInfo.type] ?? { text: '', bg: '' };\n }\n}\n","@if (hasDiscount) {\n <div class=\"order-discount-applied\">\n <div class=\"order-discount-applied__content\">\n <div class=\"order-discount-applied__content-item discount-icon\">\n <div class=\"order-discount-applied__content-item-icon-wrapper\">\n <i class=\"order-discount-applied__content-item-icon\" [class]=\"discountInfo.icon\"></i>\n </div>\n </div>\n\n <div class=\"order-discount-applied__content-item\">\n <p class=\"order-discount-applied__content-item-title\">Tipo de descuento</p>\n <app-badge\n [text]=\"'order.discountTypes.' + discountInfo.type | transloco\"\n [backgroundColor]=\"badgeColors.bg\"\n [textColor]=\"badgeColors.text\"\n size=\"xs\"\n />\n </div>\n\n @if (discountInfo.code) {\n <div class=\"order-discount-applied__content-item\">\n <p class=\"order-discount-applied__content-item-title\">Código</p>\n <p class=\"order-discount-applied__content-item-value\">{{ discountInfo.code }}</p>\n </div>\n }\n\n @if (discountInfo.name && discountInfo.name !== discountInfo.code) {\n <div class=\"order-discount-applied__content-item\">\n <p class=\"order-discount-applied__content-item-title\">Nombre</p>\n <p class=\"order-discount-applied__content-item-value\">{{ discountInfo.name }}</p>\n </div>\n }\n\n @if (discountInfo.value > 0) {\n <div class=\"order-discount-applied__content-item\">\n <p class=\"order-discount-applied__content-item-title\">\n Valor del descuento (solo entradas)\n @if (discountPercentage) {\n ({{ discountPercentage }}%)\n }\n </p>\n <p class=\"order-discount-applied__content-item-value\">\n ${{ discountInfo.value | currency: 'COP' : '' : '1.0-2' }}\n </p>\n </div>\n }\n\n @if (discountInfo.serviceFeeExempt) {\n <div class=\"order-discount-applied__content-item\">\n <p class=\"order-discount-applied__content-item-title\">Tarifa de servicio</p>\n <p class=\"order-discount-applied__content-item-value\">\n <s>${{ serviceFeeExemptValue | currency: 'COP' : '' : '1.0-2' }}</s>\n $0 (exonerada)\n </p>\n </div>\n }\n </div>\n </div>\n}\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Order } from '../../../interfaces';\nimport { getCustomerFullname } from '../../../helpers';\n\ninterface BillingField {\n label: string;\n value: string | number | null;\n}\n\n@Component({\n selector: 'order-billing-info',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './order-billing-info.component.html',\n styleUrls: ['./order-billing-info.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class OrderBillingInfoComponent {\n @Input({ required: true }) order!: Order;\n\n protected get fields(): BillingField[] {\n if (!this.order) return [];\n\n const billing = this.order.billing_info;\n const customer = this.order.customer;\n const hasBilling = billing && !!(billing.first_name || billing.document_type || billing.email);\n\n if (hasBilling) {\n const result: BillingField[] = [];\n\n const fullName = `${billing.first_name || ''} ${billing.last_name || ''}`.trim();\n if (fullName) result.push({ label: 'Nombre / Razón social', value: fullName });\n if (billing.document_type)\n result.push({ label: 'Tipo de documento', value: billing.document_type });\n if (billing.document_number)\n result.push({ label: 'Número de documento', value: billing.document_number });\n if (billing.address) result.push({ label: 'Dirección', value: billing.address });\n if (billing.email) result.push({ label: 'Correo electrónico', value: billing.email });\n if (billing.mobile) result.push({ label: 'Teléfono', value: billing.mobile });\n if (billing.city_id) result.push({ label: 'Ciudad', value: billing.city_id });\n if (billing.postal_code) result.push({ label: 'Código postal', value: billing.postal_code });\n if (billing.address_notes)\n result.push({ label: 'Notas de dirección', value: billing.address_notes });\n\n return result;\n }\n\n const fields: BillingField[] = [];\n\n const fullName = customer ? getCustomerFullname(customer) : this.order.customer_name || null;\n if (fullName) fields.push({ label: 'Nombre', value: fullName });\n\n if (customer?.document_type)\n fields.push({ label: 'Tipo de documento', value: customer.document_type });\n if (customer?.document_number)\n fields.push({ label: 'Número de documento', value: customer.document_number });\n if (customer?.address) fields.push({ label: 'Dirección', value: customer.address });\n\n const email = customer?.email || this.order.customer_email || null;\n if (email) fields.push({ label: 'Correo electrónico', value: email });\n\n const phone = customer?.phone || customer?.mobile || null;\n if (phone) fields.push({ label: 'Teléfono', value: phone });\n\n return fields;\n }\n\n protected get hasFields(): boolean {\n return this.fields.length > 0;\n }\n}\n","@if (hasFields) {\n <div class=\"order-billing-info\">\n <div class=\"order-billing-info__header\">\n <p class=\"order-billing-info__header-title\">Información de facturación</p>\n </div>\n <div class=\"order-billing-info__content\">\n @for (field of fields; track field.label) {\n <div class=\"order-billing-info__content-item\">\n <p class=\"order-billing-info__content-item-title\">{{ field.label }}</p>\n <p class=\"order-billing-info__content-item-value\">{{ field.value }}</p>\n </div>\n }\n </div>\n </div>\n}\n","import { Component, Input, WritableSignal, inject, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslocoModule } from '@jsverse/transloco';\nimport { AppModalComponent } from '../../modals/app-modal/app-modal.component';\nimport { AppBadgeComponent } from '../../data-display/app-badge/app-badge.component';\nimport { OrderTransactionDetailsModalService } from '../../../services/order-transaction-details-modal.service';\nimport { TRANSACTION_STATUS_COLORS } from '../../../constants';\nimport { Transaction } from '../../../interfaces';\nimport { TransactionStatus } from '../../../enums';\n\n@Component({\n selector: 'order-transaction-details-modal',\n standalone: true,\n imports: [CommonModule, TranslocoModule, AppModalComponent, AppBadgeComponent],\n templateUrl: './order-transaction-details-modal.component.html',\n styleUrls: ['./order-transaction-details-modal.component.scss'],\n})\nexport class OrderTransactionDetailsModalComponent {\n private modalService = inject(OrderTransactionDetailsModalService);\n\n @Input() isOpen: WritableSignal<boolean> | null = null;\n @Input() transaction: Transaction | null = null;\n\n get modalIsOpen(): WritableSignal<boolean> {\n return this.isOpen ?? this.modalService.isOpen;\n }\n\n get selectedTransaction(): WritableSignal<Transaction | null> {\n return this.transaction ? signal(this.transaction) : this.modalService.transaction;\n }\n\n protected get txColors(): Record<TransactionStatus, { text: string; bg: string }> {\n return TRANSACTION_STATUS_COLORS;\n }\n\n protected get gatewayResponse(): string {\n const response = this.selectedTransaction()?.gateway_response;\n if (response == null) return '';\n return typeof response === 'string' ? response : JSON.stringify(response, null, 2);\n }\n\n onClose(): void {\n if (this.isOpen) {\n this.isOpen.set(false);\n return;\n }\n this.modalService.close();\n }\n}\n","<app-modal\n [isOpen]=\"modalIsOpen\"\n (closeModal)=\"onClose()\"\n [title]=\"'order.transactionDetails.title' | transloco\"\n size=\"lg\"\n>\n @if (selectedTransaction(); as tx) {\n <div class=\"order-transaction-details\">\n <div class=\"order-transaction-details__grid\">\n <div class=\"order-transaction-details__item\">\n <span class=\"order-transaction-details__label\">\n {{ 'order.transactionDetails.labels.id' | transloco }}\n </span>\n <span class=\"order-transaction-details__value\">{{ tx.id }}</span>\n </div>\n\n <div class=\"order-transaction-details__item\">\n <span class=\"order-transaction-details__label\">\n {{ 'order.transactionDetails.labels.paymentMethod' | transloco }}\n </span>\n <span class=\"order-transaction-details__value\">\n {{ 'order.paymentMethods.' + tx.payment_gateway | transloco }}\n </span>\n </div>\n\n <div class=\"order-transaction-details__item\">\n <span class=\"order-transaction-details__label\">\n {{ 'order.transactionDetails.labels.status' | transloco }}\n </span>\n <span class=\"order-transaction-details__value\">\n <app-badge\n [text]=\"'order.transactionStatus.' + tx.status | transloco\"\n [backgroundColor]=\"txColors[tx.status].bg\"\n [textColor]=\"txColors[tx.status].text\"\n size=\"xs\"\n />\n </span>\n </div>\n\n <div class=\"order-transaction-details__item\">\n <span class=\"order-transaction-details__label\">\n {{ 'order.transactionDetails.labels.amount' | transloco }}\n </span>\n <span class=\"order-transaction-details__value\">\n ${{ tx.amount | number: '1.0-2' }} {{ tx.currency }}\n </span>\n </div>\n\n <div class=\"order-transaction-details__item\">\n <span class=\"order-transaction-details__label\">\n {{ 'order.transactionDetails.labels.currency' | transloco }}\n </span>\n <span class=\"order-transaction-details__value\">{{ tx.currency }}</span>\n </div>\n\n <div class=\"order-transaction-details__item\">\n <span class=\"order-transaction-details__label\">\n {{ 'order.transactionDetails.labels.gatewayId' | transloco }}\n </span>\n <span class=\"order-transaction-details__value gateway-id\">\n {{ tx.gateway_transaction_id }}\n </span>\n </div>\n\n <div class=\"order-transaction-details__item\">\n <span class=\"order-transaction-details__label\">\n {{ 'order.transactionDetails.labels.createdAt' | transloco }}\n </span>\n <span class=\"order-transaction-details__value\">{{ tx.created_at | date: 'medium' }}</span>\n </div>\n\n <div class=\"order-transaction-details__item\">\n <span class=\"order-transaction-details__label\">\n {{ 'order.transactionDetails.labels.updatedAt' | transloco }}\n </span>\n <span class=\"order-transaction-details__value\">{{ tx.updated_at | date: 'medium' }}</span>\n </div>\n </div>\n\n <div class=\"order-transaction-details__item\">\n <span class=\"order-transaction-details__label\">\n {{ 'order.transactionDetails.labels.gatewayResponse' | transloco }}\n </span>\n @if (gatewayResponse) {\n <pre class=\"order-transaction-details__json\">{{ gatewayResponse }}</pre>\n } @else {\n <span class=\"order-transaction-details__value\">—</span>\n }\n </div>\n </div>\n }\n</app-modal>\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslocoModule } from '@jsverse/transloco';\nimport { Order } from '../../../interfaces';\nimport { Transaction } from '../../../interfaces/transactions/transaction.interface';\nimport { TRANSACTION_STATUS_COLORS } from '../../../constants';\nimport { AppBadgeComponent } from '../../data-display/app-badge/app-badge.component';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\nimport { OrderTransactionDetailsModalComponent } from '../order-transaction-details-modal/order-transaction-details-modal.component';\nimport { OrderTransactionDetailsModalService } from '../../../services/order-transaction-details-modal.service';\n\n@Component({\n selector: 'order-transactions',\n standalone: true,\n imports: [\n CommonModule,\n TranslocoModule,\n AppBadgeComponent,\n AppButtonComponent,\n OrderTransactionDetailsModalComponent,\n ],\n templateUrl: './order-transactions.component.html',\n styleUrls: ['./order-transactions.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class OrderTransactionsComponent {\n @Input({ required: true }) order!: Order;\n\n constructor(private transactionDetailsModalService: OrderTransactionDetailsModalService) {}\n\n protected get transactions(): Transaction[] {\n return this.order.transactions ?? [];\n }\n\n protected get hasTransactions(): boolean {\n return this.transactions.length > 0;\n }\n\n protected get txColors(): Record<string, { text: string; bg: string }> {\n return TRANSACTION_STATUS_COLORS as unknown as Record<string, { text: string; bg: string }>;\n }\n\n protected openTransaction(transaction: Transaction): void {\n this.transactionDetailsModalService.open(transaction);\n }\n}\n","@if (hasTransactions) {\n <div class=\"order-transactions\">\n <div class=\"order-transactions__header\">\n <p class=\"order-transactions__header-title\">\n Transacciones ({{ transactions.length | number: '1.0' }})\n </p>\n </div>\n <div class=\"order-transactions__table-container\">\n <table class=\"order-transactions__table\">\n <thead class=\"order-transactions__table-head\">\n <tr class=\"order-transactions__table-head-row\">\n <th class=\"order-transactions__table-head-cell\">Medio de pago</th>\n <th class=\"order-transactions__table-head-cell\">Estado</th>\n <th class=\"order-transactions__table-head-cell text-right\">Valor</th>\n <th class=\"order-transactions__table-head-cell\">ID transacción</th>\n <th class=\"order-transactions__table-head-cell text-right\">Acciones</th>\n </tr>\n </thead>\n <tbody class=\"order-transactions__table-body\">\n @for (tx of transactions; track tx.id) {\n <tr class=\"order-transactions__table-body-row\">\n <td class=\"order-transactions__table-body-cell\">\n {{ 'order.paymentMethods.' + tx.payment_gateway | transloco }}\n </td>\n <td class=\"order-transactions__table-body-cell\">\n <app-badge\n [text]=\"'order.transactionStatus.' + tx.status | transloco\"\n [backgroundColor]=\"txColors[tx.status].bg\"\n [textColor]=\"txColors[tx.status].text\"\n size=\"xs\"\n />\n </td>\n <td class=\"order-transactions__table-body-cell text-right\">\n ${{ tx.amount | number: '1.0-2' }}\n </td>\n <td class=\"order-transactions__table-body-cell\">\n {{ tx.gateway_transaction_id }}\n </td>\n <td class=\"order-transactions__table-body-cell text-right\">\n <app-button\n icon=\"ri-eye-line\"\n variant=\"tertiary\"\n size=\"xs\"\n (clicked)=\"openTransaction(tx)\"\n [title]=\"'order.transactionDetails.actions.view' | transloco\"\n />\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n </div>\n\n <order-transaction-details-modal />\n}\n","import { Component, inject, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VipCard } from '../../../interfaces/vip-cards/vip-card.interface';\nimport { VipCardStatus } from '../../../enums/vip-cards/vip-card-status.enum';\nimport { AppBadgeComponent } from '../../data-display/app-badge/app-badge.component';\nimport { BadgeColor } from '../../../types/badges/badge-color.type';\nimport { TranslocoModule, TranslocoService } from '@jsverse/transloco';\n\n@Component({\n selector: 'vip-card-status-badge',\n standalone: true,\n imports: [CommonModule, AppBadgeComponent, TranslocoModule],\n templateUrl: './vip-card-status-badge.component.html',\n styleUrls: ['./vip-card-status-badge.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class VipCardStatusBadgeComponent {\n protected readonly tranloco = inject(TranslocoService);\n @Input({ required: true }) card!: VipCard;\n\n get statusColor(): BadgeColor {\n if (!this.card) return 'primary';\n switch (this.card.status) {\n case VipCardStatus.ACTIVE:\n return 'success';\n case VipCardStatus.INACTIVE:\n return 'warning';\n case VipCardStatus.EXPIRED:\n return 'error';\n default:\n return 'primary';\n }\n }\n\n get statusTranslationKey(): string {\n return `vipCard.status.${this.card.status}`;\n }\n}\n","<app-badge [text]=\"statusTranslationKey | transloco\" [color]=\"statusColor\" size=\"xs\" />\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { VipCard } from '../../../interfaces/vip-cards/vip-card.interface';\nimport { VipCardStatusBadgeComponent } from '../vip-card-status-badge/vip-card-status-badge.component';\n\n@Component({\n selector: 'vip-balance-card',\n standalone: true,\n imports: [CommonModule, DatePipe, VipCardStatusBadgeComponent],\n templateUrl: './vip-balance-card.component.html',\n styleUrls: ['./vip-balance-card.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class VipBalanceCardComponent {\n @Input() card: VipCard | null = null;\n}\n","<div class=\"vip-balance-card\">\n @if (card) {\n <div class=\"vip-balance-card__header\">\n <p class=\"vip-balance-card__category\">{{ card.category_snapshot.name }}</p>\n <vip-card-status-badge [card]=\"card\" />\n </div>\n\n <div class=\"vip-balance-card__body\">\n <div class=\"vip-balance-card__balance\">\n <p class=\"vip-balance-card__balance-value\">\n {{ card.balance | currency: 'COP' : 'symbol-narrow' : '1.0-0' }}\n </p>\n\n <p class=\"vip-balance-card__balance-label\">Saldo disponible</p>\n </div>\n\n <div class=\"vip-balance-card__details\">\n <div class=\"vip-balance-card__detail\">\n <span class=\"vip-balance-card__detail-label\">Descuento</span>\n <span class=\"vip-balance-card__detail-value\">\n {{ card.category_snapshot.discount_percentage }}%\n </span>\n </div>\n\n <div class=\"vip-balance-card__detail\">\n <span class=\"vip-balance-card__detail-label\">Exención tarifa</span>\n <span class=\"vip-balance-card__detail-value\">\n {{ card.category_snapshot.service_fee_exempt ? 'Sí' : 'No' }}\n </span>\n </div>\n\n <div class=\"vip-balance-card__detail\">\n <span class=\"vip-balance-card__detail-label\">Vence</span>\n <span class=\"vip-balance-card__detail-value\">\n {{ card.expires_at ? (card.expires_at | date: ' d MMMM, yyyy hh:mm a') : '—' }}\n </span>\n </div>\n\n <div class=\"vip-balance-card__detail\">\n <span class=\"vip-balance-card__detail-label\">Última actividad</span>\n <span class=\"vip-balance-card__detail-value\">\n {{\n card.last_activity_at ? (card.last_activity_at | date: ' d MMMM, yyyy hh:mm a') : '—'\n }}\n </span>\n </div>\n </div>\n </div>\n } @else {\n <p class=\"vip-balance-card__empty\">No tienes una Tarjeta VIP activa.</p>\n }\n</div>\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n SimpleChanges,\n ViewEncapsulation,\n WritableSignal,\n signal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { AppModalComponent } from '../../modals/app-modal/app-modal.component';\nimport { NumberInputComponent } from '../../forms/number-input/number-input.component';\nimport { AppButtonComponent } from '../../buttons/app-button/app-button.component';\nimport { AsyncSelectComponent } from '../../forms/async-select/async-select.component';\nimport { ToggleSwitchComponent } from '../../forms/toggle-switch/toggle-switch.component';\nimport { PaymentMethod } from '../../../types';\nimport { VipRechargeConfirmPayload } from '../../../interfaces';\n\n@Component({\n selector: 'vip-recharge-modal',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n AppModalComponent,\n NumberInputComponent,\n AppButtonComponent,\n AsyncSelectComponent,\n ToggleSwitchComponent,\n ],\n templateUrl: './vip-recharge-modal.component.html',\n styleUrls: ['./vip-recharge-modal.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class VipRechargeModalComponent implements OnChanges {\n @Input() title = 'Recargar tarjeta VIP';\n @Input() submitLabel = 'Recargar';\n @Input() loading = false;\n @Input() amountStep = 1000;\n @Input() minAmount = 100000;\n @Input() maxAmount = 10000000;\n @Input() isOpen: WritableSignal<boolean> = signal(false);\n /**\n * Cuando es true (uso desde el ecommerce/cliente), el método de pago queda\n * fijo en Mercado Pago y no se muestra el selector: desde el lado del\n * cliente no se pueden elegir métodos de pago administrativos (efectivo,\n * datáfono, nómina, cambios internos, etc.), esos son exclusivos del\n * backoffice.\n */\n @Input() restrictToMercadoPago = false;\n @Output() closeModal = new EventEmitter<void>();\n @Output() confirm = new EventEmitter<VipRechargeConfirmPayload>();\n\n rechargeForm: FormGroup;\n\n paymentMethodOptions: { label: string; value: string }[] = [];\n\n constructor(\n private fb: FormBuilder,\n protected transloco: TranslocoService,\n ) {\n this.rechargeForm = this.fb.group({\n payment_method: ['', [Validators.required]],\n amount: ['', [Validators.required, Validators.min(this.minAmount)]],\n terms_accepted: [false, [Validators.requiredTrue]],\n data_processing_accepted: [false, [Validators.requiredTrue]],\n order_notice_accepted: [false, [Validators.requiredTrue]],\n });\n\n this.paymentMethodOptions = [\n {\n label: this.transloco.translate('order.paymentMethods.mercado_pago'),\n value: PaymentMethod.MERCADO_PAGO,\n },\n {\n label: this.transloco.translate('order.paymentMethods.payroll'),\n value: PaymentMethod.PAYROLL,\n },\n { label: this.transloco.translate('order.paymentMethods.cash'), value: PaymentMethod.CASH },\n {\n label: this.transloco.translate('order.paymentMethods.datafono'),\n value: PaymentMethod.DATAFONO,\n },\n {\n label: this.transloco.translate('order.paymentMethods.internal_exchange'),\n value: PaymentMethod.INTERNAL_EXCHANGE,\n },\n {\n label: this.transloco.translate('order.paymentMethods.customer_exchange'),\n value: PaymentMethod.CLIENT_EXCHANGE,\n },\n ];\n\n this.applyPaymentMethodRestriction();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['restrictToMercadoPago']) {\n this.applyPaymentMethodRestriction();\n }\n }\n\n private applyPaymentMethodRestriction(): void {\n const paymentMethodControl = this.rechargeForm.get('payment_method');\n if (!paymentMethodControl) return;\n\n if (this.restrictToMercadoPago) {\n paymentMethodControl.setValue(PaymentMethod.MERCADO_PAGO);\n paymentMethodControl.disable();\n } else {\n paymentMethodControl.enable();\n }\n }\n\n onClose(): void {\n this.rechargeForm.reset();\n this.applyPaymentMethodRestriction();\n this.closeModal.emit();\n }\n\n onSubmit(): void {\n if (this.rechargeForm.invalid) return;\n\n const value = this.rechargeForm.getRawValue();\n this.confirm.emit({\n payment_method: this.restrictToMercadoPago\n ? PaymentMethod.MERCADO_PAGO\n : value.payment_method,\n amount: Number(value.amount),\n terms_accepted: !!value.terms_accepted,\n data_processing_accepted: !!value.data_processing_accepted,\n });\n }\n}\n","<app-modal [isOpen]=\"isOpen\" [title]=\"title\" size=\"md\" (closeModal)=\"onClose()\">\n <form [formGroup]=\"rechargeForm\" (ngSubmit)=\"onSubmit()\">\n <div class=\"vip-recharge-modal\">\n @if (restrictToMercadoPago) {\n <div class=\"vip-recharge-modal-payment-locked\">\n <span class=\"vip-recharge-modal-payment-locked-label\">Método de pago</span>\n <span class=\"vip-recharge-modal-payment-locked-value\">Mercado Pago</span>\n </div>\n } @else {\n <async-select\n label=\"Método de pago\"\n placeholder=\"Selecciona un método de pago\"\n name=\"payment_method\"\n class=\"flex-1\"\n [required]=\"true\"\n [items]=\"paymentMethodOptions\"\n formControlName=\"payment_method\"\n />\n }\n\n <div>\n <number-input\n formControlName=\"amount\"\n label=\"Monto\"\n type=\"number\"\n [min]=\"minAmount\"\n [max]=\"maxAmount\"\n [step]=\"amountStep\"\n [required]=\"true\"\n placeholder=\"Ingresa el monto a recargar\"\n />\n\n <p class=\"vip-recharge-modal-hint\">\n Monto mínimo: {{ minAmount | currency: 'COP' : 'symbol-narrow' : '1.0-0' }}\n </p>\n </div>\n\n <div class=\"vip-recharge-modal-notice\">\n Esta acción generará una orden de compra por el monto indicado. El saldo solo se acreditará\n a la Tarjeta VIP una vez se confirme el pago de esa orden.\n </div>\n\n <div class=\"vip-recharge-modal-terms\">\n <div class=\"vip-recharge-modal-terms-row\">\n <toggle-switch\n size=\"sm\"\n id=\"vip_recharge_terms_accepted\"\n formControlName=\"terms_accepted\"\n />\n <label for=\"vip_recharge_terms_accepted\" class=\"vip-recharge-modal-terms-label\">\n Acepto los términos y condiciones y la política de privacidad\n </label>\n </div>\n\n <div class=\"vip-recharge-modal-terms-row\">\n <toggle-switch\n size=\"sm\"\n id=\"vip_recharge_data_processing_accepted\"\n formControlName=\"data_processing_accepted\"\n />\n <label for=\"vip_recharge_data_processing_accepted\" class=\"vip-recharge-modal-terms-label\">\n Autorizo el tratamiento de mis datos personales\n </label>\n </div>\n\n <div class=\"vip-recharge-modal-terms-row\">\n <toggle-switch\n size=\"sm\"\n id=\"vip_recharge_order_notice_accepted\"\n formControlName=\"order_notice_accepted\"\n />\n <label for=\"vip_recharge_order_notice_accepted\" class=\"vip-recharge-modal-terms-label\">\n Entiendo que esto generará una orden de compra y que el saldo se activará solo cuando se\n confirme el pago\n </label>\n </div>\n </div>\n </div>\n\n <div class=\"vip-recharge-modal-actions\">\n <app-button\n type=\"button\"\n variant=\"tertiary\"\n text=\"Cancelar\"\n size=\"sm\"\n (clicked)=\"onClose()\"\n />\n\n <app-button\n type=\"submit\"\n size=\"sm\"\n variant=\"primary\"\n [text]=\"submitLabel\"\n [loading]=\"loading\"\n [disabled]=\"rechargeForm.invalid\"\n />\n </div>\n </form>\n</app-modal>\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { VipTransaction } from '../../../interfaces/vip-cards/vip-transaction.interface';\nimport { VipTransactionType } from '../../../enums/vip-cards/vip-transaction-type.enum';\n\n@Component({\n selector: 'vip-transactions-table',\n standalone: true,\n imports: [CommonModule, DatePipe],\n templateUrl: './vip-transactions-table.component.html',\n styleUrls: ['./vip-transactions-table.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class VipTransactionsTableComponent {\n @Input() transactions: VipTransaction[] = [];\n @Input() loading = false;\n\n typeLabel(type: VipTransactionType): string {\n switch (type) {\n case VipTransactionType.INITIAL_RECHARGE:\n return 'Activación';\n case VipTransactionType.RECHARGE:\n return 'Recarga';\n case VipTransactionType.PURCHASE_PAYMENT:\n return 'Compra';\n default:\n return type;\n }\n }\n}\n","<div class=\"vip-transactions-table\">\n <table>\n <thead>\n <tr>\n <th>Fecha</th>\n <th>Tipo</th>\n <th>Descripción</th>\n <th>Monto</th>\n <th>Saldo</th>\n </tr>\n </thead>\n <tbody>\n @if (loading) {\n <tr>\n <td colspan=\"5\" class=\"vip-transactions-table-empty\">Cargando…</td>\n </tr>\n } @else if (transactions.length === 0) {\n <tr>\n <td colspan=\"5\" class=\"vip-transactions-table-empty\">Sin transacciones.</td>\n </tr>\n } @else {\n @for (tx of transactions; track tx.id) {\n <tr>\n <td>{{ tx.created_at | date: 'short' }}</td>\n <td>\n <span\n [class.vip-transactions-table-positive]=\"tx.amount > 0\"\n [class.vip-transactions-table-negative]=\"tx.amount < 0\"\n >\n {{ typeLabel(tx.type) }}\n </span>\n </td>\n <td>{{ tx.description ?? '—' }}</td>\n <td [class.vip-transactions-table-negative]=\"tx.amount < 0\">\n {{ tx.amount | currency: 'COP' : 'symbol-narrow' : '1.0-0' }}\n </td>\n <td>{{ tx.balance_after | currency: 'COP' : 'symbol-narrow' : '1.0-0' }}</td>\n </tr>\n }\n }\n </tbody>\n </table>\n</div>\n","// Config\nexport * from './lib/config/index';\n\n// Tooltips (Helipopper)\nexport { TippyDirective } from '@ngneat/helipopper';\nexport * from '@ngneat/helipopper/config';\n\n// i18n\nexport * from './lib/i18n/index';\n\n// Constants\nexport * from './lib/constants/index';\nexport * from './lib/constants/api-routes/index';\n\n// Enums\nexport * from './lib/enums/index';\n\n// Types\nexport * from './lib/types/index';\n\n// Interfaces\nexport * from './lib/interfaces/index';\n\n// Helpers\nexport * from './lib/helpers/index';\n\n// Validators\nexport * from './lib/validators/index';\n\n// Services\nexport * from './lib/services/index';\n\n// Interceptors\nexport * from './lib/interceptors/index';\n\n// Components - Buttons\nexport * from './lib/components/buttons/app-button/app-button.component';\nexport * from './lib/components/buttons/app-link-button/app-link-button.component';\n\n// Components - Feedback\nexport * from './lib/components/feedback/app-alert/app-alert.component';\nexport * from './lib/components/modals/feedback-modal/feedback-modal.component';\nexport * from './lib/components/feedback/delete-confirmation/delete-confirmation.component';\n\n// Components - Modals\nexport * from './lib/components/modals/app-modal/app-modal.component';\n\n// Components - Data Display\nexport * from './lib/components/data-display/app-badge/app-badge.component';\nexport * from './lib/components/data-display/audit-information/audit-information.component';\nexport * from './lib/components/data-display/dynamic-table/dynamic-table.component';\nexport * from './lib/components/data-display/text-expandable/text-expandable.component';\n\n// Components - Data Editing (QTN-49: edición rápida en tabla + guardado masivo)\nexport * from './lib/components/data-editing/quick-status-edit/quick-status-edit.component';\nexport * from './lib/components/data-editing/bulk-save-bar/bulk-save-bar.component';\n\n// Components - Shows selection\nexport * from './lib/components/shows-selection/show-card/show-card.component';\nexport * from './lib/components/shows-selection/show-type-badge/show-type-badge.component';\nexport * from './lib/components/shows-selection/show-card-skeleton/show-card-skeleton.component';\n\n// Components - Navigation\nexport * from './lib/components/navigation/app-breadcrumb/app-breadcrumb.component';\nexport * from './lib/components/navigation/language-switcher/language-switcher.component';\nexport * from './lib/components/navigation/sidebar-menu/sidebar-menu.component';\nexport * from './lib/components/navigation/admin-navbar/admin-navbar.component';\n\n// Components - Layouts\nexport * from './lib/components/navigation/layouts/admin-layout/admin-layout.component';\nexport * from './lib/components/navigation/layouts/public-layout/public-layout.component';\n\n// Components - Forms\nexport * from './lib/components/forms/form-input/form-input.component';\nexport * from './lib/components/forms/identity-document-input/identity-document-input.component';\nexport * from './lib/components/forms/form-select/form-select.component';\nexport * from './lib/components/forms/form-textarea/form-textarea.component';\nexport * from './lib/components/forms/number-input/number-input.component';\nexport * from './lib/components/forms/phone-input/phone-input.component';\nexport * from './lib/components/forms/form-editor/form-editor.component';\nexport * from './lib/components/forms/color-picker/color-picker.component';\nexport * from './lib/components/forms/date-input/date-input.component';\nexport * from './lib/components/forms/toggle-switch/toggle-switch.component';\nexport * from './lib/components/forms/file-upload/file-upload.component';\nexport * from './lib/components/forms/file-upload-preview/file-upload-preview.component';\nexport * from './lib/components/forms/async-select/async-select.component';\nexport * from './lib/components/forms/change-password-form/change-password-form.component';\n\n// Components - Select Integrations\nexport * from './lib/components/select-integrations/admin-select/admin-select.component';\nexport * from './lib/components/select-integrations/city-select/city-select.component';\nexport * from './lib/components/select-integrations/country-select/country-select.component';\nexport * from './lib/components/select-integrations/state-select/state-select.component';\nexport * from './lib/components/select-integrations/customer-select/customer-select.component';\nexport * from './lib/components/select-integrations/performance-select/performance-select.component';\nexport * from './lib/components/select-integrations/performance-multi-select/performance-multi-select.component';\nexport * from './lib/components/select-integrations/product-select/product-select.component';\nexport * from './lib/components/select-integrations/product-multi-select/product-multi-select.component';\nexport * from './lib/components/select-integrations/show-select/show-select.component';\nexport * from './lib/components/select-integrations/show-multi-select/show-multi-select.component';\nexport * from './lib/components/select-integrations/price-zone-select/price-zone-select.component';\n\n// Performance selection\nexport * from './lib/components/performances/index';\nexport * from './lib/components/performances-selection/performance-status-badge/performance-status-badge.component';\nexport * from './lib/components/performances-selection/day-selector-grid/day-selector-grid.component';\nexport * from './lib/components/performances-selection/performance-card/performance-card.component';\nexport * from './lib/components/performances-selection/performance-card-list/performance-card-list.component';\nexport * from './lib/components/performances-selection/performance-stepper/performance-stepper.component';\nexport * from './lib/components/performances-selection/shows-filter/shows-filter.component';\nexport * from './lib/components/performances-selection/zone-price-item/zone-price-item.component';\nexport * from './lib/components/performances-selection/zone-price-list/zone-price-list.component';\n\n// Ticket Map\nexport * from './lib/components/ticket-map/index';\n\n// Orders information\nexport * from './lib/components/orders-information/index';\n\n// VIP\nexport * from './lib/components/vip/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["drawChairIcon","numberToLetter","i1.ApiService","i1.PriceZoneEventService","RECONNECT_BASE_DELAY_MS","RECONNECT_MAX_DELAY_MS","i2.PerformanceBookingDataService","i3.TicketSelectionService","i2.FeedbackModalService","i1","i2.DeleteConfirmationService","i3","i2","i2.SidebarStateService","i1.SidebarStateService","i2.ChangePasswordFormService","i3.CustomerService","i4.AdminService","i5.ToastService","i6","i1.AdminService","i1.CitiesService","i1.CountryService","i1.StatesService","i1.CustomerService","i1.PerformanceService","i1.ProductService","i1.ShowService","i1.PriceZoneService","i2.PerformancesListEventsService","i1.ToastService","i1.PerformancesListEventsService","i1.TicketMapZoomService","i1.PerformanceBookingDataService","i1.FeedbackModalService","i1.TicketSelectionService","i1.TicketSelectionDetailsService","i1.TicketSelectionDiscountService","i1.TicketSelectionTotalsService","i1.ConfirmationOrderModalService","i2.TicketSelectionDiscountService","i3.TicketSelectionTotalsService","i4.TicketSelectionService","i5.PerformanceBookingDataService","i2.ToastService","takeUntil","i1.TicketQrModalService","i1.OrderTransactionDetailsModalService"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAM,YAAY,GAA4C;IAC5D,EAAE;IACF,EAAE;CACH;MAEY,sBAAsB,CAAA;AACjC,IAAA,cAAc,CAAC,IAAY,EAAA;QACzB,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC;QAC5D,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3C;AACD;;AChBD,MAAM,WAAW,GAAG,cAAc;AAClC,MAAM,YAAY,GAAG,IAAI;AACzB,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;SAEpB,iBAAiB,GAAA;AAC/B,IAAA,IAAI;QACF,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC;QAChD,IAAI,MAAM,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC9C,YAAA,OAAO,MAAM;QACf;IACF;AAAE,IAAA,MAAM;;IAER;AACA,IAAA,OAAO,EAAE;AACX;AAEM,SAAU,iBAAiB,CAAC,IAAY,EAAA;AAC5C,IAAA,IAAI;AACF,QAAA,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC;IACzC;AAAE,IAAA,MAAM;;IAER;AACF;SAEgB,kBAAkB,GAAA;AAChC,IAAA,MAAM,GAAG,GAAG,OAAO,SAAS,KAAK,WAAW,GAAG,SAAS,GAAG,IAAI;AAC/D,IAAA,IAAI,CAAC,GAAG;AAAE,QAAA,OAAO,YAAY;;IAG7B,MAAM,YAAY,GAAG,GAAG,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;AAEpD,IAAA,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE;AAC/B,QAAA,IAAI,CAAC,IAAI;YAAE;;AAGX,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;AAClD,QAAA,IAAI,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AACvC,YAAA,OAAO,SAAS;QAClB;IACF;AAEA,IAAA,OAAO,YAAY;AACrB;SAEgB,eAAe,GAAA;;AAE7B,IAAA,MAAM,MAAM,GAAG,iBAAiB,EAAE;AAClC,IAAA,IAAI,MAAM;AAAE,QAAA,OAAO,MAAM;;IAGzB,OAAO,kBAAkB,EAAE;AAC7B;;MCjCa,yBAAyB,GAAG,IAAI,cAAc,CACzD,2BAA2B;AAGvB,SAAU,wBAAwB,CAAC,MAA+B,EAAA;AACtE,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,IAAI;IAC9C,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;AAC5D,IAAA,MAAM,YAAY,GAAG,eAAe,EAAE;AAEtC,IAAA,OAAO,wBAAwB,CAAC;AAC9B,QAAA,EAAE,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,MAAM,EAAE;QACxD,EAAE,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAAE;AAChF,QAAA,GAAG,gBAAgB,CAAC;AAClB,YAAA,MAAM,EAAE;AACN,gBAAA,WAAW,EAAE,YAAY;gBACzB,cAAc;AACd,gBAAA,oBAAoB,EAAE,IAAI;AAC1B,gBAAA,YAAY,EAAE,WAAW;AACP,aAAA;AACpB,YAAA,MAAM,EAAE,sBAAsB;SAC/B,CAAC;QACF,kBAAkB,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAC5C,QAAA,kBAAkB,CAAC;AACjB,YAAA,gBAAgB,EAAE,SAAS;AAC3B,YAAA,UAAU,EAAE;AACV,gBAAA,OAAO,EAAE,gBAAgB;AACzB,gBAAA,MAAM,EAAE,eAAe;AACxB,aAAA;SACF,CAAC;AACH,KAAA,CAAC;AACJ;;AChDO,MAAM,WAAW,GAAG;AACzB,IAAA,OAAO,EAAE,eAAe;AACxB,IAAA,KAAK,EAAE,uBAAuB;AAC9B,IAAA,OAAO,EAAE,eAAe;AACxB,IAAA,IAAI,EAAE,cAAc;;;ACJf,MAAM,gBAAgB,GAAG;AAC9B,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,MAAM,EAAE,uBAAuB;IAC/B,OAAO,EAAE,CAAC,EAAU,KAAK,CAAA,QAAA,EAAW,EAAE,CAAA,CAAE;IACxC,SAAS,EAAE,CAAC,EAAU,KAAK,CAAA,QAAA,EAAW,EAAE,CAAA,CAAE;IAC1C,SAAS,EAAE,CAAC,EAAU,KAAK,CAAA,QAAA,EAAW,EAAE,CAAA,CAAE;;;ACLrC,MAAM,oBAAoB,GAAG;IAClC,IAAI,EAAE,CAAC,aAAqB,KAAK,CAAA,WAAA,EAAc,aAAa,CAAA,KAAA,CAAO;IACnE,KAAK,EAAE,CAAC,aAAqB,KAAK,CAAA,WAAA,EAAc,aAAa,CAAA,MAAA,CAAQ;IACrE,MAAM,EAAE,CAAC,aAAqB,KAAK,CAAA,WAAA,EAAc,aAAa,CAAA,OAAA,CAAS;IACvE,MAAM,EAAE,CAAC,aAAqB,KAAK,CAAA,WAAA,EAAc,aAAa,CAAA,OAAA,CAAS;;;ACJlE,MAAM,kBAAkB,GAAG;AAChC,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,MAAM,EAAE,SAAS;IACjB,QAAQ,EAAE,CAAC,EAAU,KAAK,CAAA,QAAA,EAAW,EAAE,CAAA,CAAE;IACzC,MAAM,EAAE,CAAC,EAAU,KAAK,CAAA,QAAA,EAAW,EAAE,CAAA,CAAE;IACvC,MAAM,EAAE,CAAC,EAAU,KAAK,CAAA,QAAA,EAAW,EAAE,CAAA,CAAE;;;ACLlC,MAAM,qBAAqB,GAAG;AACnC,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,MAAM,EAAE,YAAY;IACpB,QAAQ,EAAE,CAAC,EAAU,KAAK,CAAA,WAAA,EAAc,EAAE,CAAA,CAAE;IAC5C,MAAM,EAAE,CAAC,EAAU,KAAK,CAAA,WAAA,EAAc,EAAE,CAAA,CAAE;IAC1C,MAAM,EAAE,CAAC,EAAU,KAAK,CAAA,WAAA,EAAc,EAAE,CAAA,CAAE;;;ACLrC,MAAM,oBAAoB,GAAG;AAClC,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,MAAM,EAAE,0BAA0B;IAClC,OAAO,EAAE,CAAC,EAAU,KAAK,CAAA,WAAA,EAAc,EAAE,CAAA,CAAE;IAC3C,MAAM,EAAE,CAAC,EAAU,KAAK,CAAA,WAAA,EAAc,EAAE,CAAA,CAAE;IAC1C,MAAM,EAAE,CAAC,EAAU,KAAK,CAAA,WAAA,EAAc,EAAE,CAAA,CAAE;;;ACLrC,MAAM,uBAAuB,GAAG;AACrC,IAAA,OAAO,EAAE,eAAe;AACxB,IAAA,MAAM,EAAE,eAAe;AACvB,IAAA,UAAU,EAAE,oBAAoB;IAChC,WAAW,EAAE,CAAC,EAAU,KAAK,CAAA,cAAA,EAAiB,EAAE,CAAA,CAAE;IAClD,kBAAkB,EAAE,CAAC,EAAU,KAAK,CAAA,cAAA,EAAiB,EAAE,CAAA,aAAA,CAAe;IACtE,uBAAuB,EAAE,CAAC,EAAU,KAAK,CAAA,cAAA,EAAiB,EAAE,CAAA,mBAAA,CAAqB;IACjF,MAAM,EAAE,CAAC,EAAU,KAAK,CAAA,cAAA,EAAiB,EAAE,CAAA,CAAE;IAC7C,MAAM,EAAE,CAAC,EAAU,KAAK,CAAA,cAAA,EAAiB,EAAE,CAAA,CAAE;AAC7C,IAAA,UAAU,EAAE,oBAAoB;AAChC,IAAA,aAAa,EAAE,8BAA8B;IAC7C,MAAM,EAAE,CAAC,EAAU,KAAK,CAAA,cAAA,EAAiB,EAAE,CAAA,OAAA,CAAS;IACpD,gBAAgB,EAAE,CAAC,EAAU,KAAK,CAAA,cAAA,EAAiB,EAAE,CAAA,kBAAA,CAAoB;IACzE,OAAO,EAAE,CAAC,EAAU,KAAK,CAAA,cAAA,EAAiB,EAAE,CAAA,QAAA,CAAU;IACtD,aAAa,EAAE,CAAC,IAAY,KAAK,CAAA,sBAAA,EAAyB,IAAI,CAAA,SAAA,CAAW;AACzE,IAAA,gBAAgB,EAAE,8BAA8B;AAChD,IAAA,2BAA2B,EAAE,4BAA4B;IACzD,gBAAgB,EAAE,CAAC,EAAU,KAAK,CAAA,cAAA,EAAiB,EAAE,CAAA,mBAAA,CAAqB;IAC1E,qBAAqB,EAAE,CAAC,EAAU,KAAK,CAAA,cAAA,EAAiB,EAAE,CAAA,yBAAA,CAA2B;IACrF,UAAU,EAAE,CAAC,EAAU,KAAK,CAAA,cAAA,EAAiB,EAAE,CAAA,YAAA,CAAc;IAC7D,SAAS,EAAE,CAAC,UAAkB,KAAK,CAAA,sBAAA,EAAyB,UAAU,CAAA,YAAA,CAAc;IACpF,SAAS,EAAE,CAAC,UAAkB,KAAK,CAAA,sBAAA,EAAyB,UAAU,CAAA,IAAA,CAAM;IAC5E,WAAW,EAAE,CAAC,UAAkB,KAAK,CAAA,sBAAA,EAAyB,UAAU,CAAA,OAAA,CAAS;;;ACtB5E,MAAM,sBAAsB,GAAG;AACpC,IAAA,QAAQ,EAAE,cAAc;AACxB,IAAA,MAAM,EAAE,cAAc;IACtB,WAAW,EAAE,CAAC,EAAU,KAAK,CAAA,aAAA,EAAgB,EAAE,CAAA,CAAE;IACjD,MAAM,EAAE,CAAC,EAAU,KAAK,CAAA,aAAA,EAAgB,EAAE,CAAA,CAAE;IAC5C,MAAM,EAAE,CAAC,EAAU,KAAK,CAAA,aAAA,EAAgB,EAAE,CAAA,CAAE;IAC5C,cAAc,EAAE,CAAC,EAAU,KAAK,CAAA,aAAA,EAAgB,EAAE,CAAA,SAAA,CAAW;IAC7D,SAAS,EAAE,CAAC,EAAU,KAAK,CAAA,aAAA,EAAgB,EAAE,CAAA,UAAA,CAAY;;;ACPpD,MAAM,6BAA6B,GAAG;AAC3C,IAAA,QAAQ,EAAE,qBAAqB;AAC/B,IAAA,MAAM,EAAE,qBAAqB;IAC7B,QAAQ,EAAE,CAAC,EAAU,KAAK,CAAA,oBAAA,EAAuB,EAAE,CAAA,CAAE;IACrD,MAAM,EAAE,CAAC,EAAU,KAAK,CAAA,oBAAA,EAAuB,EAAE,CAAA,CAAE;IACnD,MAAM,EAAE,CAAC,EAAU,KAAK,CAAA,oBAAA,EAAuB,EAAE,CAAA,CAAE;;;ACL9C,MAAM,uBAAuB,GAAG;AACrC,IAAA,QAAQ,EAAE,eAAe;AACzB,IAAA,MAAM,EAAE,eAAe;IACvB,QAAQ,EAAE,CAAC,EAAU,KAAK,CAAA,cAAA,EAAiB,EAAE,CAAA,CAAE;IAC/C,MAAM,EAAE,CAAC,EAAU,KAAK,CAAA,cAAA,EAAiB,EAAE,CAAA,CAAE;IAC7C,MAAM,EAAE,CAAC,EAAU,KAAK,CAAA,cAAA,EAAiB,EAAE,CAAA,CAAE;;;ACLxC,MAAM,wBAAwB,GAAG;AACtC,IAAA,QAAQ,EAAE,gBAAgB;AAC1B,IAAA,MAAM,EAAE,gBAAgB;IACxB,QAAQ,EAAE,CAAC,EAAU,KAAK,CAAA,eAAA,EAAkB,EAAE,CAAA,CAAE;IAChD,MAAM,EAAE,CAAC,EAAU,KAAK,CAAA,eAAA,EAAkB,EAAE,CAAA,CAAE;IAC9C,MAAM,EAAE,CAAC,EAAU,KAAK,CAAA,eAAA,EAAkB,EAAE,CAAA,CAAE;;;ACLzC,MAAM,mBAAmB,GAAG;AACjC,IAAA,QAAQ,EAAE,WAAW;AACrB,IAAA,MAAM,EAAE,WAAW;IACnB,WAAW,EAAE,CAAC,EAAU,KAAK,CAAA,UAAA,EAAa,EAAE,CAAA,CAAE;IAC9C,MAAM,EAAE,CAAC,EAAU,KAAK,CAAA,UAAA,EAAa,EAAE,CAAA,CAAE;IACzC,MAAM,EAAE,CAAC,EAAU,KAAK,CAAA,UAAA,EAAa,EAAE,CAAA,CAAE;IACzC,WAAW,EAAE,CAAC,EAAU,KAAK,CAAA,UAAA,EAAa,EAAE,CAAA,OAAA,CAAS;IACrD,YAAY,EAAE,CAAC,EAAU,KAAK,CAAA,UAAA,EAAa,EAAE,CAAA,OAAA,CAAS;AACtD,IAAA,cAAc,EAAE,CAAC,SAAiB,EAAE,OAAe,KACjD,CAAA,UAAA,EAAa,SAAS,CAAA,QAAA,EAAW,OAAO,CAAA,CAAE;;;ACTvC,MAAM,gBAAgB,GAAG;AAC9B,IAAA,OAAO,EAAE,QAAQ;AACjB,IAAA,MAAM,EAAE,QAAQ;IAChB,WAAW,EAAE,CAAC,EAAU,KAAK,CAAA,OAAA,EAAU,EAAE,CAAA,CAAE;IAC3C,MAAM,EAAE,CAAC,EAAU,KAAK,CAAA,OAAA,EAAU,EAAE,CAAA,CAAE;IACtC,MAAM,EAAE,CAAC,EAAU,KAAK,CAAA,OAAA,EAAU,EAAE,CAAA,CAAE;IACtC,SAAS,EAAE,CAAC,EAAU,KAAK,CAAA,OAAA,EAAU,EAAE,CAAA,OAAA,CAAS;IAChD,aAAa,EAAE,CAAC,EAAU,KAAK,CAAA,OAAA,EAAU,EAAE,CAAA,OAAA,CAAS;AACpD,IAAA,cAAc,EAAE,CAAC,MAAc,EAAE,OAAe,KAAK,CAAA,OAAA,EAAU,MAAM,CAAA,QAAA,EAAW,OAAO,CAAA,CAAE;AACzF,IAAA,2BAA2B,EAAE,yBAAyB;;;ACTjD,MAAM,mBAAmB,GAAG;AACjC,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,MAAM,EAAE,SAAS;IACjB,QAAQ,EAAE,CAAC,EAAU,KAAK,CAAA,QAAA,EAAW,EAAE,CAAA,CAAE;IACzC,MAAM,EAAE,CAAC,EAAU,KAAK,CAAA,QAAA,EAAW,EAAE,CAAA,CAAE;IACvC,MAAM,EAAE,CAAC,EAAU,KAAK,CAAA,QAAA,EAAW,EAAE,CAAA,CAAE;;;ACLlC,MAAM,iBAAiB,GAAG;AAC/B,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,MAAM,EAAE,SAAS;IACjB,WAAW,EAAE,CAAC,EAAU,KAAK,UAAU,GAAG,EAAE;IAC5C,MAAM,EAAE,CAAC,EAAU,KAAK,UAAU,GAAG,EAAE;IACvC,MAAM,EAAE,CAAC,EAAU,KAAK,UAAU,GAAG,EAAE;IACvC,UAAU,EAAE,CAAC,EAAU,KAAK,UAAU,GAAG,EAAE,GAAG,SAAS;IACvD,aAAa,EAAE,CAAC,EAAU,KAAK,UAAU,GAAG,EAAE,GAAG,SAAS;AAC1D,IAAA,cAAc,EAAE,CAAC,OAAe,EAAE,OAAe,KAAK,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO;;;ACR5F,MAAM,oBAAoB,GAAG;AAClC,IAAA,OAAO,EAAE,kBAAkB;IAC3B,OAAO,EAAE,CAAC,EAAU,KAAK,CAAA,iBAAA,EAAoB,EAAE,CAAA,CAAE;AACjD,IAAA,aAAa,EAAE,2BAA2B;IAC1C,aAAa,EAAE,CAAC,EAAU,KAAK,CAAA,iBAAA,EAAoB,EAAE,CAAA,SAAA,CAAW;IAChE,YAAY,EAAE,CAAC,EAAU,KAAK,CAAA,iBAAA,EAAoB,EAAE,CAAA,OAAA,CAAS;IAC7D,WAAW,EAAE,CAAC,EAAU,KAAK,CAAA,iBAAA,EAAoB,EAAE,CAAA,MAAA,CAAQ;IAC3D,YAAY,EAAE,CAAC,EAAU,KAAK,CAAA,iBAAA,EAAoB,EAAE,CAAA,aAAA,CAAe;AACnE,IAAA,MAAM,EAAE,eAAe;AACvB,IAAA,QAAQ,EAAE,qBAAqB;AAC/B,IAAA,QAAQ,EAAE,qBAAqB;;;ACV1B,MAAM,sBAAsB,GAA2B;AAC5D,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,SAAS,EAAE,eAAe;AAC1B,IAAA,QAAQ,EAAE,cAAc;AACxB,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,WAAW,EAAE,iBAAiB;;AAGzB,MAAM,mBAAmB,GAAG;AAE5B,MAAM,oBAAoB,GAA2B;AAC1D,IAAA,EAAE,EAAE,QAAQ;AACZ,IAAA,EAAE,EAAE,QAAQ;AACZ,IAAA,EAAE,EAAE,QAAQ;AACZ,IAAA,EAAE,EAAE,QAAQ;;;ACdP,MAAM,mBAAmB,GAA2B;AACzD,IAAA,QAAQ,EAAE,yBAAyB;AACnC,IAAA,SAAS,EAAE,gCAAgC;AAC3C,IAAA,SAAS,EAAE,gCAAgC;AAC3C,IAAA,OAAO,EAAE,yBAAyB;AAClC,IAAA,KAAK,EAAE,yBAAyB;AAChC,IAAA,SAAS,EAAE,8BAA8B;AACzC,IAAA,gBAAgB,EAAE,4DAA4D;AAC9E,IAAA,gBAAgB,EAAE,6DAA6D;;;ACR1E,MAAM,kBAAkB,GAAG;IAChC,OAAO;IACP,QAAQ;IACR,YAAY;IACZ,MAAM;IACN,QAAQ;IACR,WAAW;IACX,eAAe;IACf,WAAW;IACX,mBAAmB;IACnB,kBAAkB;IAClB,2BAA2B;IAC3B,iBAAiB;IACjB,yBAAyB;IACzB,0BAA0B;IAC1B,cAAc;AACf,CAAA,CAAC,IAAI,CAAC,GAAG;AAEH,MAAM,mBAAmB,GAAG,kBAAkB,GAAG;;AChBlD,SAAU,gBAAgB,CAAC,OAAe,EAAA;AAC9C,IAAA,OAAO;AACJ,SAAA,WAAW;SACX,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E;AAEO,MAAM,eAAe,GAAmB;IAC7C,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACtD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACpD,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACpD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACpD,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACnD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IAClD,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC5D,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC3D,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACpD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACrD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACpD,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAClD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACrD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACnD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACvD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IAClD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACtD,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IACnD,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACnD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACnD,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACnD,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAClD,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IACnD,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACxD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACpD,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACjE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACrD,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IAClD,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACnD,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACrD,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACzD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACpD,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAClD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACvD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACpD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACpD,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IACjD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACjD,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACjD,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACjD,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACnD,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACpD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACpD,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAClD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC5D,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACzD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC5D,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACvD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACpD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IAChD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACpD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACrD,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IACnD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACpD,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IAClD,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACxD,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACnE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACpD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACvD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACtD,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IAClD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IACzD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACpD,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACrD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACpD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACrD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACtD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACjD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACnD,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAClD,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACnD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACpD,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAClD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACtD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IAClD,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IAClD,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACxD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACtD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC/C,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACtD,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC7D,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACnD,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACzD,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC9D,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACnD,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAClD,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACrD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACtD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACnD,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACjD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACrD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACjD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IAChD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACpD,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACrD,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IACvD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACvD,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACxD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC3D,EAAE,IAAI,EAAE,0BAA0B,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IACnE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC3D,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC1D,EAAE,IAAI,EAAE,2BAA2B,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IACpE,EAAE,IAAI,EAAE,2BAA2B,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IACpE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACnD,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IAClD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IAClD,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACjD,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACrD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IACrD,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAClD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACvD,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACrD,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACnD,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACnD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACjD,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACnD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACpD,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACnD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACpD,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAClD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC1D,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACrD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACvD,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAClD,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAChE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACvD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACnD,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACnD,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACrD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACjD,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAClD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACtD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACtD,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACrD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACvD,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IAClD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACvD,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACrD,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACnD,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACrD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACvD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IACrD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACvD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACnD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACpD,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAClD,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAClD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACtD,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAClD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACpD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACjD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACnD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC5D,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACzD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACjD,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACxD,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACpD,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACnD,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACnD,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC/D,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACrD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IAChD,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC/D,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACnD,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACrD,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IACtD,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAClD,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACvD,EAAE,IAAI,EAAE,0BAA0B,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACrE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC5D,EAAE,IAAI,EAAE,iCAAiC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC5E,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC/D,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACpD,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACnD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACnD,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IAChD,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAClD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC1D,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IACjE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACvD,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACjE,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACjE,EAAE,IAAI,EAAE,8BAA8B,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IACvE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACxD,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IACtD,EAAE,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAClE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACpD,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACnD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACvD,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACzD,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACpD,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAClD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACpD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACrD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACrD,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAClD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC1D,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IAClD,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACjD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACpD,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IAChE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACrD,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACnD,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACrD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACvD,EAAE,IAAI,EAAE,wCAAwC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACnF,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC3D,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACjD,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAClD,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC5D,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAClD,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACzD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACnD,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACnD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACpD,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACnD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACpD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACvD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACpD,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACpD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACrD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACnD,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IAClD,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACnD,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;IACnD,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;;;ACzOhD,MAAM,sBAAsB,GAAmB;AACpD,IAAA,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,yBAAyB,EAAE;AACjD,IAAA,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,yBAAyB,EAAE;AACjD,IAAA,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,0BAA0B,EAAE;AACnD,IAAA,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,yBAAyB,EAAE;AACjD,IAAA,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,yBAAyB,EAAE;;;ICPvC;AAAZ,CAAA,UAAY,QAAQ,EAAA;AAClB,IAAA,QAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,QAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,QAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,QAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,QAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACrB,CAAC,EAPW,QAAQ,KAAR,QAAQ,GAAA,EAAA,CAAA,CAAA;;ICAR;AAAZ,CAAA,UAAY,mBAAmB,EAAA;AAC7B,IAAA,mBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,mBAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC;AACjC,IAAA,mBAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC;AACnC,IAAA,mBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,mBAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC/B,CAAC,EANW,mBAAmB,KAAnB,mBAAmB,GAAA,EAAA,CAAA,CAAA;;ICAnB;AAAZ,CAAA,UAAY,kBAAkB,EAAA;AAC5B,IAAA,kBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,kBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACjB,CAAC,EAHW,kBAAkB,KAAlB,kBAAkB,GAAA,EAAA,CAAA,CAAA;;ICAlB;AAAZ,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,YAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,YAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACvB,CAAC,EALW,YAAY,KAAZ,YAAY,GAAA,EAAA,CAAA,CAAA;;ICAZ;AAAZ,CAAA,UAAY,mBAAmB,EAAA;AAC7B,IAAA,mBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,mBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,mBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,mBAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC;AACjC,IAAA,mBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,mBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACvB,CAAC,EAPW,mBAAmB,KAAnB,mBAAmB,GAAA,EAAA,CAAA,CAAA;;ICAnB;AAAZ,CAAA,UAAY,iBAAiB,EAAA;AAC3B,IAAA,iBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,iBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,iBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,iBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,iBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACzB,CAAC,EAPW,iBAAiB,KAAjB,iBAAiB,GAAA,EAAA,CAAA,CAAA;;ICAjB;AAAZ,CAAA,UAAY,uBAAuB,EAAA;AACjC,IAAA,uBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,uBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,uBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,uBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACrB,CAAC,EALW,uBAAuB,KAAvB,uBAAuB,GAAA,EAAA,CAAA,CAAA;;ICAvB;AAAZ,CAAA,UAAY,yBAAyB,EAAA;AACnC,IAAA,yBAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,yBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,yBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,yBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,yBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACnB,CAAC,EANW,yBAAyB,KAAzB,yBAAyB,GAAA,EAAA,CAAA,CAAA;;ICAzB;AAAZ,CAAA,UAAY,kBAAkB,EAAA;AAC5B,IAAA,kBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,kBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,kBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,kBAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC;AACnC,IAAA,kBAAA,CAAA,mBAAA,CAAA,GAAA,mBAAuC;AACvC,IAAA,kBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,kBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACrB,CAAC,EAVW,kBAAkB,KAAlB,kBAAkB,GAAA,EAAA,CAAA,CAAA;;ICAlB;AAAZ,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,cAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACvB,CAAC,EAHW,cAAc,KAAd,cAAc,GAAA,EAAA,CAAA,CAAA;;ICAd;AAAZ,CAAA,UAAY,sBAAsB,EAAA;AAChC,IAAA,sBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,sBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,sBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,sBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACzB,CAAC,EALW,sBAAsB,KAAtB,sBAAsB,GAAA,EAAA,CAAA,CAAA;;ICAtB;AAAZ,CAAA,UAAY,iBAAiB,EAAA;AAC3B,IAAA,iBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,iBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,iBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,iBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACjB,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,GAAA,EAAA,CAAA,CAAA;;ICAjB;AAAZ,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,aAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,aAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,aAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC;AACjC,IAAA,aAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC/B,CAAC,EANW,aAAa,KAAb,aAAa,GAAA,EAAA,CAAA,CAAA;;ICAb;AAAZ,CAAA,UAAY,WAAW,EAAA;AACrB,IAAA,WAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,WAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC;AACnC,IAAA,WAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,WAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,WAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,WAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,WAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACvB,CAAC,EARW,WAAW,KAAX,WAAW,GAAA,EAAA,CAAA,CAAA;;ICAX;AAAZ,CAAA,UAAY,WAAW,EAAA;AACrB,IAAA,WAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,WAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACvB,CAAC,EAHW,WAAW,KAAX,WAAW,GAAA,EAAA,CAAA,CAAA;;ICAX;AAAZ,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,aAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,aAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,aAAA,CAAA,mBAAA,CAAA,GAAA,mBAAuC;AACvC,IAAA,aAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC;AACnC,IAAA,aAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC/B,CAAC,EAPW,aAAa,KAAb,aAAa,GAAA,EAAA,CAAA,CAAA;;ICAb;AAAZ,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,aAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,aAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACrB,CAAC,EAJW,aAAa,KAAb,aAAa,GAAA,EAAA,CAAA,CAAA;;ICAb;AAAZ,CAAA,UAAY,kBAAkB,EAAA;AAC5B,IAAA,kBAAA,CAAA,kBAAA,CAAA,GAAA,kBAAqC;AACrC,IAAA,kBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,kBAAA,CAAA,kBAAA,CAAA,GAAA,kBAAqC;AACvC,CAAC,EAJW,kBAAkB,KAAlB,kBAAkB,GAAA,EAAA,CAAA,CAAA;;ICAlB;AAAZ,CAAA,UAAY,gBAAgB,EAAA;AAC1B,IAAA,gBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,gBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACvB,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,GAAA,EAAA,CAAA,CAAA;;ACIrB,MAAM,uBAAuB,GAAmB;AACrD,IAAA,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,0BAA0B,EAAE;AAC3D,IAAA,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,yBAAyB,EAAE;AACzD,IAAA,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE;AAC5C,IAAA,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,EAAE;AAC9C,IAAA,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,4BAA4B,EAAE;;AAG1D,MAAM,mBAAmB,GAAsD;IACpF,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;IAC7C,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;IAC9C,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;IAC5C,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;IAC1C,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;IAC7C,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;IAC7C,iBAAiB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;;AAGhD,MAAM,uBAAuB,GAAwD;IAC1F,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;IAC1C,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;IAC3C,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;IAC7C,cAAc,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;IAClD,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;;AAG3C,MAAM,qBAAqB,GAAiD;IACjF,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;IAC1C,cAAc,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;IAClD,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;IAC7C,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;IACvC,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;;AAG3C,MAAM,yBAAyB,GAA4D;AAChG,IAAA,CAAC,iBAAiB,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;AAC/D,IAAA,CAAC,iBAAiB,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;AAChE,IAAA,CAAC,iBAAiB,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;AAChE,IAAA,CAAC,iBAAiB,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;;;ACxCxD,MAAM,gCAAgC,GAGzC;AACF,IAAA,CAAC,uBAAuB,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;AACvE,IAAA,CAAC,uBAAuB,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;AACtE,IAAA,CAAC,uBAAuB,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;AAClE,IAAA,CAAC,uBAAuB,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;;AAGhE,MAAM,yBAAyB,GAA4D;IAChG,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;IAC7C,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;IACxC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;IAC1C,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;IAC7C,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;IAC7C,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;;;AChBxC,MAAM,6BAA6B,GAAG;AAEtC,MAAM,oBAAoB,GAAG;AAClC,IAAA,kBAAkB,CAAC,UAAU;AAC7B,IAAA,kBAAkB,CAAC,KAAK;AACxB,IAAA,kBAAkB,CAAC,IAAI;;AAGlB,MAAM,oBAAoB,GAAyB;AACxD,IAAA,KAAK,EAAE,GAAG;AACV,IAAA,MAAM,EAAE,GAAG;AACX,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,MAAM,EAAE,CAAC;AACT,IAAA,MAAM,EAAE,CAAC;AACT,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,CAAC,EAAE,CAAC;;AAGC,MAAM,oBAAoB,GAA4C;AAC3E,IAAA,CAAC,uBAAuB,CAAC,SAAS,GAAG,SAAS;AAC9C,IAAA,CAAC,uBAAuB,CAAC,QAAQ,GAAG,SAAS;AAC7C,IAAA,CAAC,uBAAuB,CAAC,IAAI,GAAG,SAAS;AACzC,IAAA,CAAC,uBAAuB,CAAC,OAAO,GAAG,SAAS;;AAGvC,MAAM,mBAAmB,GAA4C;AAC1E,IAAA,CAAC,uBAAuB,CAAC,SAAS,GAAG,SAAS;AAC9C,IAAA,CAAC,uBAAuB,CAAC,QAAQ,GAAG,SAAS;AAC7C,IAAA,CAAC,uBAAuB,CAAC,IAAI,GAAG,SAAS;AACzC,IAAA,CAAC,uBAAuB,CAAC,OAAO,GAAG,SAAS;;AAGvC,MAAM,oBAAoB,GAA4C;AAC3E,IAAA,CAAC,uBAAuB,CAAC,SAAS,GAAG,YAAY;AACjD,IAAA,CAAC,uBAAuB,CAAC,QAAQ,GAAG,WAAW;AAC/C,IAAA,CAAC,uBAAuB,CAAC,IAAI,GAAG,SAAS;AACzC,IAAA,CAAC,uBAAuB,CAAC,OAAO,GAAG,WAAW;;AAGzC,MAAM,oBAAoB,GAAG;AAE7B,MAAM,uBAAuB,GAAG;AAEvC;AACA;AACA;AACO,MAAM,8BAA8B,GAAG;AACvC,MAAM,8BAA8B,GAAG;;AC9CxC,SAAU,eAAe,CAC7B,GAAY,EACZ,KAAY,EACZ,CAAS,EACT,CAAS,EACT,KAAa,EACb,MAAc,EACd,YAAoB,EAAA;IAEpB,GAAG,CAAC,SAAS,EAAE;IACf,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,YAAY,EAAE,CAAC,CAAC;IAC/B,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,YAAY,EAAE,CAAC,CAAC;AACvC,IAAA,GAAG,CAAC,gBAAgB,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,YAAY,CAAC;AAC/D,IAAA,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,GAAG,YAAY,CAAC;IAChD,GAAG,CAAC,gBAAgB,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,KAAK,GAAG,YAAY,EAAE,CAAC,GAAG,MAAM,CAAC;IACjF,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,YAAY,EAAE,CAAC,GAAG,MAAM,CAAC;AACxC,IAAA,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,YAAY,CAAC;IACjE,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC;AAC/B,IAAA,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,CAAC;IAC/C,GAAG,CAAC,SAAS,EAAE;AACf,IAAA,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC;AAC5B;;MCpBa,iBAAiB,GAAG,CAAC,GAAY,EAAE,KAAY,KAAI;AAC9D,IAAA,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE;AACvB,IAAA,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE;IACxB,MAAM,OAAO,GAAG,CAAC;IAEjB,GAAG,CAAC,IAAI,EAAE;IAEV,MAAM,KAAK,GAAG,OAAO;IACrB,MAAM,KAAK,GAAG,OAAO;AACrB,IAAA,MAAM,SAAS,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC;AACjC,IAAA,MAAM,UAAU,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC;AAClC,IAAA,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,GAAG;AAE1D,IAAA,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,CAAC;;;AAI9E,IAAA,GAAG,CAAC,IAAI,GAAG,CAAA,UAAA,CAAY;AACvB,IAAA,GAAG,CAAC,SAAS,GAAG,SAAS;AACzB,IAAA,GAAG,CAAC,SAAS,GAAG,QAAQ;AACxB,IAAA,GAAG,CAAC,YAAY,GAAG,QAAQ;AAC3B,IAAA,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC;AACrB,IAAA,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC;;AAGrB,IAAA,MAAM,SAAS,GAAG,IAAI,IAAI,KAAK,EAAE,KAAK,EAAE,YAAY,IAAI,QAAQ,CAAC;IACjE,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC;IAEzC,GAAG,CAAC,OAAO,EAAE;AACf;;MC7Ba,oBAAoB,GAAG,CAAC,GAAY,EAAE,KAAY,KAAI;AACjE,IAAA,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE;AACvB,IAAA,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE;IACxB,MAAM,OAAO,GAAG,CAAC;IAEjB,GAAG,CAAC,IAAI,EAAE;IAEV,MAAM,KAAK,GAAG,OAAO;IACrB,MAAM,KAAK,GAAG,OAAO;AACrB,IAAA,MAAM,SAAS,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC;AACjC,IAAA,MAAM,UAAU,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC;AAClC,IAAA,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,GAAG;AAE1D,IAAA,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,CAAC;;;AAI9E,IAAA,GAAG,CAAC,IAAI,GAAG,CAAA,UAAA,CAAY;AACvB,IAAA,GAAG,CAAC,SAAS,GAAG,SAAS;AACzB,IAAA,GAAG,CAAC,SAAS,GAAG,QAAQ;AACxB,IAAA,GAAG,CAAC,YAAY,GAAG,QAAQ;AAC3B,IAAA,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC;AACrB,IAAA,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC;;AAGrB,IAAA,MAAM,SAAS,GAAG,MAAM,IAAI,KAAK,EAAE,KAAK,EAAE,YAAY,IAAI,SAAS,CAAC;IACpE,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC;IAEzC,GAAG,CAAC,OAAO,EAAE;AACf;;MC7Ba,2BAA2B,GAAG,CAAC,GAAY,EAAE,KAAY,KAAI;AACxE,IAAA,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE;AACvB,IAAA,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE;IACxB,MAAM,OAAO,GAAG,CAAC;IAEjB,GAAG,CAAC,IAAI,EAAE;IAEV,MAAM,KAAK,GAAG,OAAO;IACrB,MAAM,KAAK,GAAG,OAAO;AACrB,IAAA,MAAM,SAAS,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC;AACjC,IAAA,MAAM,UAAU,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC;AAClC,IAAA,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,GAAG;AAE1D,IAAA,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,CAAC;;;AAI9E,IAAA,GAAG,CAAC,IAAI,GAAG,CAAA,UAAA,CAAY;AACvB,IAAA,GAAG,CAAC,SAAS,GAAG,SAAS;AACzB,IAAA,GAAG,CAAC,SAAS,GAAG,QAAQ;AACxB,IAAA,GAAG,CAAC,YAAY,GAAG,QAAQ;AAC3B,IAAA,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC;AACrB,IAAA,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC;;AAGrB,IAAA,MAAM,SAAS,GAAG,KAAK,IAAI,KAAK,EAAE,KAAK,EAAE,YAAY,IAAI,oBAAoB,CAAC;IAC9E,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC;IAEzC,GAAG,CAAC,OAAO,EAAE;AACf;;SCjCgB,SAAS,CAAC,GAAW,EAAE,SAAiB,GAAG,EAAA;IACzD,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;AACrC,IAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AAChD,IAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AAChD,IAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AAEhD,IAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,MAAM,CAAC;AAClD,IAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,MAAM,CAAC;AAClD,IAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,MAAM,CAAC;AAElD,IAAA,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,EAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,EAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;AACpI;;ACTO,MAAMA,eAAa,GAAG,CAAC,GAAY,EAAE,EAAU,EAAE,EAAU,EAAE,IAAY,KAAI;IAClF,GAAG,CAAC,SAAS,EAAE;AAEf,IAAA,MAAM,SAAS,GAAG,IAAI,GAAG,GAAG;AAC5B,IAAA,MAAM,UAAU,GAAG,IAAI,GAAG,GAAG;AAC7B,IAAA,MAAM,KAAK,GAAG,EAAE,GAAG,SAAS,GAAG,CAAC;IAChC,MAAM,KAAK,GAAG,EAAE,GAAG,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG;IAE9C,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,SAAS,GAAG,GAAG,EAAE,KAAK,CAAC;IAC1C,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,SAAS,GAAG,GAAG,EAAE,KAAK,CAAC;AAC1C,IAAA,GAAG,CAAC,gBAAgB,CAAC,KAAK,GAAG,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,SAAS,EAAE,KAAK,GAAG,UAAU,GAAG,GAAG,CAAC;AAC3F,IAAA,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,SAAS,EAAE,KAAK,GAAG,UAAU,GAAG,GAAG,CAAC;IACvD,GAAG,CAAC,gBAAgB,CAClB,KAAK,GAAG,SAAS,EACjB,KAAK,GAAG,UAAU,EAClB,KAAK,GAAG,SAAS,GAAG,GAAG,EACvB,KAAK,GAAG,UAAU,CACnB;AACD,IAAA,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,SAAS,GAAG,GAAG,EAAE,KAAK,GAAG,UAAU,CAAC;AACvD,IAAA,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,UAAU,GAAG,GAAG,CAAC;IAChF,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU,GAAG,GAAG,CAAC;AAC3C,IAAA,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,GAAG,EAAE,KAAK,CAAC;AAElE,IAAA,MAAM,cAAc,GAAG,IAAI,GAAG,GAAG;AACjC,IAAA,MAAM,eAAe,GAAG,IAAI,GAAG,GAAG;AAClC,IAAA,MAAM,KAAK,GAAG,EAAE,GAAG,cAAc,GAAG,CAAC;AACrC,IAAA,MAAM,KAAK,GAAG,EAAE,GAAG,UAAU,GAAG,GAAG;AAEnC,IAAA,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;IACxB,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,EAAE,KAAK,CAAC;AACzC,IAAA,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,GAAG,GAAG,EAAE,KAAK,GAAG,eAAe,CAAC;AACjE,IAAA,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,GAAG,GAAG,EAAE,KAAK,GAAG,eAAe,CAAC;IACjE,GAAG,CAAC,SAAS,EAAE;AAEf,IAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,GAAG;AAC3B,IAAA,MAAM,SAAS,GAAG,IAAI,GAAG,GAAG;AAE5B,IAAA,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,GAAG,GAAG,EAAE,KAAK,GAAG,eAAe,CAAC;AACjE,IAAA,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,GAAG,GAAG,GAAG,QAAQ,EAAE,KAAK,GAAG,eAAe,CAAC;AAC5E,IAAA,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,GAAG,GAAG,GAAG,QAAQ,EAAE,KAAK,GAAG,eAAe,GAAG,SAAS,CAAC;AACxF,IAAA,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,GAAG,GAAG,EAAE,KAAK,GAAG,eAAe,GAAG,SAAS,CAAC;AAE7E,IAAA,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,GAAG,GAAG,GAAG,QAAQ,EAAE,KAAK,GAAG,eAAe,CAAC;AAC5E,IAAA,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,GAAG,GAAG,EAAE,KAAK,GAAG,eAAe,CAAC;AACjE,IAAA,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,GAAG,GAAG,EAAE,KAAK,GAAG,eAAe,GAAG,SAAS,CAAC;AAC7E,IAAA,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,GAAG,GAAG,GAAG,QAAQ,EAAE,KAAK,GAAG,eAAe,GAAG,SAAS,CAAC;IAExF,GAAG,CAAC,SAAS,EAAE;AACjB;;AChDO,MAAM,aAAa,GAAG,CAAC,GAAY,EAAE,EAAU,EAAE,EAAU,EAAE,IAAY,KAAI;AAClF,IAAA,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI;IAE1B,GAAG,CAAC,SAAS,EAAE;AACf,IAAA,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IACvC,GAAG,CAAC,SAAS,EAAE;AACf,IAAA,GAAG,CAAC,SAAS,GAAG,SAAS;IACzB,GAAG,CAAC,IAAI,EAAE;AACV,IAAA,GAAG,CAAC,WAAW,GAAG,SAAS;AAC3B,IAAA,GAAG,CAAC,SAAS,GAAG,CAAC;IACjB,GAAG,CAAC,MAAM,EAAE;AAEZ,IAAA,MAAM,IAAI,GAAG,MAAM,GAAG,IAAI;AAC1B,IAAA,MAAM,OAAO,GAAG,MAAM,GAAG,GAAG;AAC5B,IAAA,MAAM,OAAO,GAAG,MAAM,GAAG,IAAI;IAC7B,GAAG,CAAC,SAAS,EAAE;IACf,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IACzD,GAAG,CAAC,SAAS,EAAE;AACf,IAAA,GAAG,CAAC,SAAS,GAAG,SAAS;IACzB,GAAG,CAAC,IAAI,EAAE;IACV,GAAG,CAAC,SAAS,EAAE;IACf,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IACzD,GAAG,CAAC,SAAS,EAAE;IACf,GAAG,CAAC,IAAI,EAAE;IAEV,GAAG,CAAC,SAAS,EAAE;AACf,IAAA,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,IAAI,EAAE,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC;IAClD,GAAG,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,GAAG,GAAG,EAAE,EAAE,GAAG,MAAM,GAAG,IAAI,EAAE,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC;AACnF,IAAA,GAAG,CAAC,WAAW,GAAG,SAAS;AAC3B,IAAA,GAAG,CAAC,SAAS,GAAG,CAAC;IACjB,GAAG,CAAC,MAAM,EAAE;AACd;;MC9Ba,kBAAkB,GAAG,CAChC,GAAY,EACZ,KAAY,EACZ,EAAU,EACV,EAAU,EACV,IAAY,EACZ,SAAS,GAAG,SAAS,EACrB,WAAW,GAAG,SAAS,KACrB;AACF,IAAA,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI;IAC7B,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG;IACpC,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,MAAM;IAEvC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;IACtC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC1C,IAAA,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC;AAChC,IAAA,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC;IAEpC,GAAG,CAAC,SAAS,EAAE;IACf,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC;IACpC,GAAG,CAAC,SAAS,EAAE;AACf,IAAA,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC;AAE1B,IAAA,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;AAC/B,IAAA,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC;IAEnC,GAAG,CAAC,IAAI,GAAG,CAAA,EAAG,IAAI,GAAG,GAAG,UAAU;AAClC,IAAA,GAAG,CAAC,SAAS,GAAG,QAAQ;AACxB,IAAA,GAAG,CAAC,YAAY,GAAG,QAAQ;AAC3B,IAAA,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,GAAG,MAAM,EAAE,EAAE,GAAG,IAAI,GAAG,MAAM,CAAC;AAC3D;;ACjCO,MAAMC,gBAAc,GAAG,CAAC,GAAW,KAAY;IACpD,IAAI,GAAG,GAAG,CAAC;AAAE,QAAA,OAAO,GAAG;IACvB,IAAI,MAAM,GAAG,EAAE;IACf,IAAI,CAAC,GAAG,GAAG;AACX,IAAA,OAAO,CAAC,IAAI,CAAC,EAAE;AACb,QAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM;QACpD,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;IAC5B;AACA,IAAA,OAAO,MAAM;AACf;;ACNO,MAAM,eAAe,GAAG,CAAC,MAAyB,KAAY;AACnE,IAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;QAC3F,OAAO,MAAM,CAAC,aAAa,GAAG,IAAI,GAAG,IAAI;IAC3C;IAEA,IAAI,MAAM,CAAC,YAAY,KAAK,kBAAkB,CAAC,IAAI,EAAE;AACnD,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,OAAO,IAAI;AACb;;ACAO,MAAM,4BAA4B,GAAG,CAC1C,GAAY,EACZ,KAAY,EACZ,gBAKC,EACD,eAAsD,KACpD;AACF,IAAA,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE;AACvB,IAAA,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE;IACxB,MAAM,QAAQ,GAAG,oBAAoB;IACrC,MAAM,UAAU,GAAG,GAAG;IAEtB,MAAM,WAAW,GAAG,KAAK,EAAE,KAAK,EAAE,YAAY,IAAI,UAAU;IAC5D,MAAM,eAAe,GAAG,KAAK,EAAE,KAAK,EAAE,iBAAiB,IAAI,IAAI;AAC/D,IAAA,MAAM,SAAS,GAAG,KAAK,EAAE,KAAK,EAAE,KAC4D;IAC5F,MAAM,QAAQ,GAAG,CAAC,EAAE,WAAW,IAAI,eAAe,CAAC;IACnD,MAAM,YAAY,GAAG,QAAQ,GAAG,oBAAoB,GAAG,CAAC;IAExD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,QAAQ,CAAC;AACrC,IAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,YAAY,IAAI,QAAQ,CAAC;IAEtD,MAAM,MAAM,GAAG,gBAAgB,IAAI;AACjC,QAAA,gBAAgB,EAAE,GAAG;AACrB,QAAA,SAAS,EAAE,eAAwB;AACnC,QAAA,mBAAmB,EAAE,CAAC;AACtB,QAAA,YAAY,EAAE,eAAwB;KACvC;IAED,MAAM,cAAc,GAAG,MAAM,EAAE,gBAAgB,EAAE,WAAW,EAAE,IAAI,GAAG;IACrE,MAAM,WAAW,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE;IAErD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;IACtC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;IAE1C,IAAI,QAAQ,EAAE;QACZ,GAAG,CAAC,IAAI,EAAE;QAEV,MAAM,QAAQ,GAAG,CAAA,eAAA,CAAiB;AAClC,QAAA,GAAG,CAAC,IAAI,GAAG,QAAQ;QACnB,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,KAAK;QACpD,MAAM,QAAQ,GAAG,EAAE;QACnB,MAAM,eAAe,GAAG,EAAE;AAC1B,QAAA,MAAM,cAAc,GAAG,SAAS,GAAG,QAAQ,GAAG,CAAC;QAC/C,MAAM,UAAU,GAAG,CAAC,CAAC,GAAG,cAAc,IAAI,CAAC;QAC3C,MAAM,UAAU,GAAG,CAAC,oBAAoB,GAAG,eAAe,IAAI,CAAC;QAC/D,MAAM,KAAK,GAAG,oBAAoB;QAElC,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,MAAM;QAErD,GAAG,CAAC,SAAS,EAAE;AACf,QAAA,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC;AACpB,QAAA,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC;AACpB,QAAA,GAAG,CAAC,WAAW,GAAG,WAAW;AAC7B,QAAA,GAAG,CAAC,SAAS,GAAG,CAAC;QACjB,GAAG,CAAC,MAAM,EAAE;QAEZ,GAAG,CAAC,SAAS,EAAE;QACf,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE,UAAU,CAAC;QACtC,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,cAAc,GAAG,CAAC,EAAE,UAAU,CAAC;AACvD,QAAA,GAAG,CAAC,gBAAgB,CAClB,UAAU,GAAG,cAAc,EAC3B,UAAU,EACV,UAAU,GAAG,cAAc,EAC3B,UAAU,GAAG,CAAC,CACf;AACD,QAAA,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,cAAc,EAAE,UAAU,GAAG,eAAe,GAAG,CAAC,CAAC;QACzE,GAAG,CAAC,gBAAgB,CAClB,UAAU,GAAG,cAAc,EAC3B,UAAU,GAAG,eAAe,EAC5B,UAAU,GAAG,cAAc,GAAG,CAAC,EAC/B,UAAU,GAAG,eAAe,CAC7B;QACD,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,eAAe,CAAC;AACxD,QAAA,GAAG,CAAC,gBAAgB,CAClB,UAAU,EACV,UAAU,GAAG,eAAe,EAC5B,UAAU,EACV,UAAU,GAAG,eAAe,GAAG,CAAC,CACjC;QACD,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,CAAC,CAAC;AACtC,QAAA,GAAG,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,GAAG,CAAC,EAAE,UAAU,CAAC;QACxE,GAAG,CAAC,SAAS,EAAE;AACf,QAAA,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC;AAE1B,QAAA,GAAG,CAAC,IAAI,GAAG,QAAQ;AACnB,QAAA,GAAG,CAAC,SAAS,GAAG,WAAW;AAC3B,QAAA,GAAG,CAAC,SAAS,GAAG,QAAQ;AACxB,QAAA,GAAG,CAAC,YAAY,GAAG,QAAQ;AAC3B,QAAA,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG,eAAe,GAAG,CAAC,CAAC;QAElE,GAAG,CAAC,OAAO,EAAE;IACf;AAEA,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,QAAQ,EAAE;AACpC,QAAA,KAAK,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,QAAQ,EAAE;YAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,QAAQ,CAAC;AACzC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,YAAY,IAAI,QAAQ,CAAC;YAE1D,IAAI,cAAc,GAAG,QAAQ;AAC7B,YAAA,IAAI,MAAM,CAAC,SAAS,KAAK,eAAe,EAAE;AACxC,gBAAA,cAAc,GAAG,IAAI,GAAG,CAAC,GAAG,QAAQ;YACtC;YAEA,IAAI,cAAc,GAAG,QAAQ;AAC7B,YAAA,IAAI,MAAM,CAAC,YAAY,KAAK,eAAe,EAAE;AAC3C,gBAAA,cAAc,GAAG,IAAI,GAAG,CAAC,GAAG,QAAQ;YACtC;YAEA,MAAM,SAAS,GAAGA,gBAAc,CAAC,WAAW,GAAG,cAAc,CAAC;AAC9D,YAAA,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC;AAC7E,YAAA,MAAM,UAAU,GAAG,CAAA,EAAG,SAAS,CAAA,EAAG,SAAS,EAAE;YAC7C,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC;YACpC,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC;AACpC,YAAA,MAAM,IAAI,GAAG,QAAQ,GAAG,UAAU;YAElC,MAAM,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC;YACnD,IAAI,SAAS,EAAE,eAAe;gBAAE;YAEhC,GAAG,CAAC,IAAI,EAAE;YAEV,MAAM,mBAAmB,GAA4B,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC;YACzF,MAAM,UAAU,GAAG,mBAAmB,EAAE,GAAG,CAAC,UAAU,CAAC;YAEvD,MAAM,YAAY,GAAG,eAAe,EAAE,GAAG,CAAC,UAAU,CAAC;YACrD,MAAM,QAAQ,GAAG,YAAY,IAAI,IAAI,IAAI,YAAY,KAAK,uBAAuB,CAAC,SAAS;YAE3F,IAAI,UAAU,EAAE;AACd,gBAAA,aAAa,CAAC,GAAG,EAAE,CAAC,GAAG,QAAQ,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,GAAG,CAAC,EAAE,IAAI,CAAC;YAC9D;AAAO,iBAAA,IAAI,QAAQ,IAAI,SAAS,EAAE,aAAa,EAAE;gBAC/C,kBAAkB,CAChB,GAAG,EACH,KAAK,EACL,OAAO,EACP,OAAO,EACP,IAAI,EACJ,mBAAmB,CAAC,YAAa,CAAC,EAClC,oBAAoB,CAAC,YAAa,CAAC,CACpC;YACH;iBAAO,IAAI,QAAQ,EAAE;gBACnB,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,YAAa,CAAC,CAAC;gBACzD,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,oBAAoB,CAAC,YAAa,CAAC,CAAC;gBAC5DD,eAAa,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;AAC1C,gBAAA,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC;AAC1B,gBAAA,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;AAC/B,gBAAA,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC;AACnC,gBAAA,GAAG,CAAC,SAAS,GAAG,SAAS;gBACzB,GAAG,CAAC,IAAI,GAAG,CAAA,EAAG,IAAI,GAAG,GAAG,UAAU;AAClC,gBAAA,GAAG,CAAC,SAAS,GAAG,QAAQ;AACxB,gBAAA,GAAG,CAAC,YAAY,GAAG,QAAQ;gBAC3B,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,CAAC,CAAC;YAChD;AAAO,iBAAA,IAAI,SAAS,EAAE,aAAa,EAAE;gBACnC,kBAAkB,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;YACxD;iBAAO;gBACLA,eAAa,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;AAC1C,gBAAA,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC;AAE1B,gBAAA,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;AAC/B,gBAAA,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC;AAEnC,gBAAA,GAAG,CAAC,SAAS,GAAG,SAAS;gBACzB,GAAG,CAAC,IAAI,GAAG,CAAA,EAAG,IAAI,GAAG,GAAG,UAAU;AAClC,gBAAA,GAAG,CAAC,SAAS,GAAG,QAAQ;AACxB,gBAAA,GAAG,CAAC,YAAY,GAAG,QAAQ;gBAC3B,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,CAAC,CAAC;YAChD;YAEA,GAAG,CAAC,OAAO,EAAE;QACf;IACF;AAEA,IAAA,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;AAC/B,IAAA,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC;AACrC;;ACtLO,MAAM,wBAAwB,GAAG,CACtC,GAAY,EACZ,KAAY,EACZ,mBAA+C,EAC/C,UAAiC,KAC/B;AACF,IAAA,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE;AACvB,IAAA,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE;AAExB,IAAA,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,EAAE;AAC9B,IAAA,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,EAAE;IAClC,MAAM,aAAa,GAAW,KAAK,EAAE,KAAK,EAAE,cAAc,IAAI,CAAC;IAC/D,MAAM,QAAQ,GAAW,KAAK,EAAE,KAAK,EAAE,YAAY,IAAI,MAAM;AAE7D,IAAA,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC;AAChB,IAAA,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC;AAEhB,IAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG;AACxC,IAAA,MAAM,GAAG,GAAG,WAAW,GAAG,GAAG;AAC7B,IAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,WAAW,GAAG,CAAC,GAAG,GAAG;IAE9D,GAAG,CAAC,IAAI,EAAE;AAEV,IAAA,IAAI,aAAa,GAAG,CAAC,EAAE;AACrB,QAAA,MAAM,WAAW,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW;QACnD,MAAM,mBAAmB,GAA4B,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC;AAEzF,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE;YACtC,MAAM,SAAS,GAAG,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACtC,YAAA,IAAI,SAAS,EAAE,eAAe,EAAE;gBAC9B;YACF;AAEA,YAAA,MAAM,OAAO,GAAG,CAAA,CAAA,EAAI,CAAC,GAAG,CAAC,EAAE;YAC3B,MAAM,UAAU,GAAG,mBAAmB,EAAE,GAAG,CAAC,OAAO,CAAC;AAEpD,YAAA,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,aAAa,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC;AAC7D,YAAA,MAAM,GAAG,GAAG,EAAE,GAAG,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9C,YAAA,MAAM,GAAG,GAAG,EAAE,GAAG,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AAE9C,YAAA,MAAM,WAAW,GAAG,mBAAmB,GAAG,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,WAAW,IAAI,IAAI,IAAI,WAAW,KAAK,uBAAuB,CAAC,SAAS;YAEzF,IAAI,UAAU,EAAE;gBACd,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,GAAG,CAAC,CAAC;YAC/C;AAAO,iBAAA,IAAI,QAAQ,IAAI,SAAS,EAAE,aAAa,EAAE;gBAC/C,kBAAkB,CAChB,GAAG,EACH,KAAK,EACL,GAAG,EACH,GAAG,EACH,WAAW,GAAG,CAAC,EACf,mBAAmB,CAAC,WAAY,CAAC,EACjC,oBAAoB,CAAC,WAAY,CAAC,CACnC;YACH;iBAAO,IAAI,QAAQ,EAAE;gBACnB,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;gBACtC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC1C,gBAAA,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAC3E,gBAAA,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,oBAAoB,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;gBAC9E,GAAG,CAAC,SAAS,EAAE;AACf,gBAAA,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC9C,GAAG,CAAC,SAAS,EAAE;AACf,gBAAA,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;gBAC/C,GAAG,CAAC,MAAM,EAAE;AACZ,gBAAA,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC;AAC1B,gBAAA,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;AAC/B,gBAAA,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC;YACrC;AAAO,iBAAA,IAAI,SAAS,EAAE,aAAa,EAAE;AACnC,gBAAA,kBAAkB,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,GAAG,CAAC,CAAC;YAC3D;iBAAO;gBACL,GAAG,CAAC,SAAS,EAAE;AACf,gBAAA,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC9C,GAAG,CAAC,SAAS,EAAE;AAEf,gBAAA,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;gBAC/C,GAAG,CAAC,MAAM,EAAE;AACZ,gBAAA,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC;YAC5B;QACF;IACF;IAEA,GAAG,CAAC,SAAS,EAAE;AACf,IAAA,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5C,GAAG,CAAC,SAAS,EAAE;AACf,IAAA,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC;AAE1B,IAAA,MAAM,QAAQ,GAAG,WAAW,GAAG,IAAI;AACnC,IAAA,GAAG,CAAC,IAAI,GAAG,CAAA,EAAG,QAAQ,UAAU;AAChC,IAAA,GAAG,CAAC,SAAS,GAAG,WAAW;AAC3B,IAAA,GAAG,CAAC,SAAS,GAAG,QAAQ;AACxB,IAAA,GAAG,CAAC,YAAY,GAAG,QAAQ;IAC3B,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC;IAE9B,GAAG,CAAC,OAAO,EAAE;AACf;;ACvFA,SAAS,cAAc,CACrB,QAAgB,EAChB,QAAgB,EAChB,IAAY,EACZ,IAAY,EACZ,MAAwB,EAAA;IAExB,IAAI,cAAc,GAAG,QAAQ;AAC7B,IAAA,IAAI,MAAM,CAAC,SAAS,KAAK,eAAe,EAAE;AACxC,QAAA,cAAc,GAAG,IAAI,GAAG,CAAC,GAAG,QAAQ;IACtC;IAEA,IAAI,cAAc,GAAG,QAAQ;AAC7B,IAAA,IAAI,MAAM,CAAC,YAAY,KAAK,eAAe,EAAE;AAC3C,QAAA,cAAc,GAAG,IAAI,GAAG,CAAC,GAAG,QAAQ;IACtC;AAEA,IAAA,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,gBAAgB,EAAE,WAAW,EAAE,IAAI,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE;IACtF,MAAM,SAAS,GAAGC,gBAAc,CAAC,WAAW,GAAG,cAAc,CAAC;AAC9D,IAAA,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC;AAC7E,IAAA,OAAO,CAAA,EAAG,SAAS,CAAA,EAAG,SAAS,EAAE;AACnC;AAEA,SAAS,kBAAkB,CAAC,OAA+B,EAAA;AACzD,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,iBAAiB,IAAI;AAC1C,QAAA,gBAAgB,EAAE,GAAG;AACrB,QAAA,SAAS,EAAE,eAAwB;AACnC,QAAA,mBAAmB,EAAE,CAAC;AACtB,QAAA,YAAY,EAAE,eAAwB;KACvC;IAED,MAAM,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,IAAI,GAAG;IACnD,MAAM,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,IAAI,GAAG;AACpD,IAAA,MAAM,QAAQ,GAAG,CAAC,EAAE,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,iBAAiB,KAAK,KAAK,CAAC;IAChF,MAAM,YAAY,GAAG,QAAQ,GAAG,uBAAuB,GAAG,CAAC;IAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,oBAAoB,CAAC;AACjD,IAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,YAAY,IAAI,oBAAoB,CAAC;IAElE,MAAM,SAAS,GAA8B,EAAE;AAE/C,IAAA,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI,EAAE,QAAQ,EAAE,EAAE;QAClD,MAAM,GAAG,GAA4B,EAAE;AACvC,QAAA,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI,EAAE,QAAQ,EAAE,EAAE;AAClD,YAAA,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC;AAExE,YAAA,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC;AACvD,YAAA,IAAI,SAAS,EAAE,eAAe,EAAE;gBAC9B,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;gBAC3C;YACF;YAEA,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;QAC7C;AACA,QAAA,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;IACrB;AAEA,IAAA,OAAO,SAAS;AAClB;AAEA,SAAS,mBAAmB,CAAC,OAA+B,EAAA;IAC1D,MAAM,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,IAAI,GAAG;IACnD,MAAM,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,IAAI,GAAG;AACpD,IAAA,MAAM,aAAa,GAAG,OAAO,CAAC,cAAc,IAAI,CAAC;AAEjD,IAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG;AACxC,IAAA,MAAM,GAAG,GAAG,WAAW,GAAG,GAAG;AAC7B,IAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,WAAW,GAAG,CAAC,GAAG,GAAG;AAC9D,IAAA,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC;AAChB,IAAA,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC;IAEhB,MAAM,SAAS,GAAkC,EAAE;AAEnD,IAAA,IAAI,aAAa,GAAG,CAAC,EAAE;AACrB,QAAA,MAAM,WAAW,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW;AAEnD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE;AACtC,YAAA,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,aAAa,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC;AAC7D,YAAA,MAAM,GAAG,GAAG,EAAE,GAAG,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9C,YAAA,MAAM,GAAG,GAAG,EAAE,GAAG,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AAE9C,YAAA,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;QACrD;IACF;AAEA,IAAA,OAAO,SAAS;AAClB;SAEgB,2BAA2B,CACzC,QAAkC,EAClC,OAA4B,EAC5B,UAA4C,EAAA;AAE5C,IAAA,MAAM,eAAe,GAAG,IAAI,GAAG,EAA+B;AAC9D,IAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC5B,QAAA,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE;AACtE,QAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;QACrB,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,mBAAmB,EAAE,QAAQ,CAAC;IAC3D;IAEA,MAAM,MAAM,GAAwB,EAAE;AAEtC,IAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AAC9B,QAAA,IAAI,OAAO,CAAC,EAAE,IAAI,IAAI;YAAE;AAExB,QAAA,MAAM,cAAc,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE;QAC5D,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC;AAE5D,QAAA,IAAI,YAAgC;AACpC,QAAA,IAAI,cAAkC;QAEtC,IAAI,OAAO,CAAC,aAAa,IAAI,IAAI,IAAI,UAAU,EAAE;AAC/C,YAAA,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,aAAa,CAAC;AAC1E,YAAA,IAAI,SAAS,EAAE,KAAK,EAAE;AACpB,gBAAA,cAAc,GAAG,SAAS,CAAC,KAAK;AAChC,gBAAA,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC;YAC3C;QACF;AAEA,QAAA,IAAI,WAAW,GAAwB;AACrC,YAAA,GAAG,OAAO,EAAE,WAAW,EAAE,MAAM;AAC/B,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,IAAI,YAAY,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;AAC/C,YAAA,IAAI,cAAc,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC;AACrD,YAAA,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI;AAClD,YAAA,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,IAAI,IAAI;YACpD,cAAc,EAAE,OAAO,CAAC,cAAc;SACvC;AAED,QAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAA6B;AAC/D,QAAA,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE;AACnC,YAAA,IAAI,MAAM,CAAC,eAAe,IAAI,IAAI,EAAE;gBAClC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC;YACxD;QACF;AAEA,QAAA,IAAI,aAAoD;AACxD,QAAA,IAAI,cAAyD;QAE7D,IAAI,OAAO,CAAC,IAAI,KAAK,kBAAkB,CAAC,UAAU,EAAE;AAClD,YAAA,aAAa,GAAG,kBAAkB,CAAC,OAAO,CAAC;AAE3C,YAAA,MAAM,eAAe,GAAG,IAAI,GAAG,EAAmC;YAClE,KAAK,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,kBAAkB,EAAE;gBACrD,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC;YAChD;AAEA,YAAA,WAAW,GAAG;AACZ,gBAAA,GAAG,WAAW;AACd,gBAAA,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;AACxB,gBAAA,SAAS,EAAE,CAAC,GAAQ,EAAE,KAAU,KAAI;oBAClC,4BAA4B,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,iBAAiB,EAAE,eAAe,CAAC;gBACtF,CAAC;gBACD,KAAK,EAAE,OAAO,CAAC,KAAK;aACrB;QACH;QAEA,IAAI,OAAO,CAAC,IAAI,KAAK,kBAAkB,CAAC,KAAK,EAAE;AAC7C,YAAA,cAAc,GAAG,mBAAmB,CAAC,OAAO,CAAC;YAC7C,MAAM,aAAa,GAA8B,EAAE;AAEnD,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;AACtD,gBAAA,MAAM,GAAG,GAAG,CAAA,CAAA,EAAI,CAAC,GAAG,CAAC,EAAE;gBACvB,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC;gBAC1C,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,uBAAuB,CAAC,SAAS,CAAC;YACzE;AAEA,YAAA,WAAW,GAAG;AACZ,gBAAA,GAAG,WAAW;AACd,gBAAA,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;AACxB,gBAAA,SAAS,EAAE,CAAC,GAAQ,EAAE,KAAU,KAAI;oBAClC,wBAAwB,CAAC,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC;gBACpE,CAAC;gBACD,KAAK,EAAE,OAAO,CAAC,KAAK;aACrB;QACH;AAEA,QAAA,IAAI,CAAC,CAAC,kBAAkB,CAAC,UAAU,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACrF,YAAA,MAAM,gBAAgB,GAAG,iBAAiB,EAAE,MAAM,EAAE,SAAS;YAC7D,IAAI,gBAAgB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE;AACjD,gBAAA,WAAW,CAAC,WAAW,CAAC,GAAG,gBAAgB;YAC7C;QACF;AAEA,QAAA,IAAI,WAAW,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE;AACpC,QAAA,IAAI,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE;AAC1B,YAAA,WAAW,IAAI,CAAA,EAAA,EAAK,OAAO,CAAC,YAAY,EAAE;QAC5C;QAEA,MAAM,CAAC,IAAI,CAAC;YACV,SAAS,EAAE,OAAO,CAAC,EAAE;AACrB,YAAA,WAAW,EAAE,OAAO,CAAC,aAAa,IAAI,IAAI;YAC1C,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,WAAW;AACX,YAAA,OAAO,EAAE,cAAc;YACvB,kBAAkB;YAClB,WAAW;YACX,aAAa;YACb,cAAc;;;AAGd,YAAA,YAAY,EACV,OAAO,CAAC,IAAI,KAAK,kBAAkB,CAAC;AAClC,kBAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,uBAAuB,CAAC,SAAS,CAAC,CAAC;kBAC7E,OAAO,CAAC,cAAc;AAC7B,SAAA,CAAC;IACJ;AAEA,IAAA,OAAO,MAAM;AACf;SAEgB,oBAAoB,CAClC,UAA6B,EAC7B,IAAY,EACZ,IAAY,EAAA;AAEZ,IAAA,IAAI,UAAU,CAAC,IAAI,KAAK,kBAAkB,CAAC,UAAU,IAAI,UAAU,CAAC,aAAa,EAAE;AACjF,QAAA,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW;QACrC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG;AAChC,QAAA,MAAM,QAAQ,GAAG,CAAC,EAAE,UAAU,CAAC,WAAW,IAAI,MAAM,CAAC,mBAAmB,CAAC,KAAK,KAAK,CAAC;QACpF,MAAM,YAAY,GAAG,QAAQ,GAAG,uBAAuB,GAAG,CAAC;QAE3D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,oBAAoB,CAAC;AACnD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,YAAY,IAAI,oBAAoB,CAAC;QAEpE,IACE,GAAG,GAAG,CAAC;AACP,YAAA,GAAG,GAAG,CAAC;AACP,YAAA,GAAG,IAAI,UAAU,CAAC,aAAa,CAAC,MAAM;AACtC,YAAA,GAAG,KAAK,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,EACjD;AACA,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,IAAI,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AACjD,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,IAAI;AAEtB,QAAA,MAAM,SAAS,GAAI,UAAU,CAAC,WAAW,CAAC,OAAO,CAAS,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACxE,IAAI,SAAS,EAAE,eAAe;AAAE,YAAA,OAAO,IAAI;AAE3C,QAAA,OAAO,UAAU,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI;IAClE;AAEA,IAAA,IAAI,UAAU,CAAC,IAAI,KAAK,kBAAkB,CAAC,KAAK,IAAI,UAAU,CAAC,cAAc,EAAE;AAC7E,QAAA,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,cAAc,EAAE;AAC7C,YAAA,MAAM,SAAS,GAAI,UAAU,CAAC,WAAW,CAAC,OAAO,CAAS,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;YAC9E,IAAI,SAAS,EAAE,eAAe;gBAAE;AAEhC,YAAA,MAAM,EAAE,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC;AACzB,YAAA,MAAM,EAAE,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC;AACzB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;YAE7C,MAAM,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,GAAG;YAChD,MAAM,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,GAAG;AACjD,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG;AAExC,YAAA,IAAI,QAAQ,IAAI,WAAW,GAAG,CAAC,EAAE;gBAC/B,MAAM,GAAG,GAAG,CAAA,CAAA,EAAI,KAAK,CAAC,KAAK,GAAG,CAAC,CAAA,CAAE;gBACjC,OAAO,UAAU,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI;YACvD;QACF;AACA,QAAA,OAAO,IAAI;IACb;IAEA,IAAI,UAAU,CAAC,IAAI,KAAK,kBAAkB,CAAC,IAAI,EAAE;QAC/C,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,kBAAkB,CAAC,MAAM,EAAE,EAAE;AAC3D,YAAA,OAAO,MAAM;QACf;QACA,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI;IACtC;AAEA,IAAA,OAAO,IAAI;AACb;SAEgB,qBAAqB,CACnC,cAAmC,EACnC,MAAc,EACd,MAAc,EAAA;AAEd,IAAA,KAAK,IAAI,CAAC,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACnD,QAAA,MAAM,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC;AAC5B,QAAA,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW;QAC1B,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;QACxB,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;QACxB,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;QAC5B,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC7B,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;QAErC,IAAI,QAAQ,EAAE;YACZ,MAAM,GAAG,GAAG,QAAQ,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;YACtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;YAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;AAC1B,YAAA,MAAM,EAAE,GAAG,MAAM,GAAG,EAAE;AACtB,YAAA,MAAM,EAAE,GAAG,MAAM,GAAG,EAAE;YACtB,MAAM,MAAM,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG;YAClC,MAAM,MAAM,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG;AAElC,YAAA,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,IAAI,EAAE,EAAE;AAC9D,gBAAA,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;YACpD;QACF;aAAO;YACL,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,IAAI,EAAE,GAAG,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,IAAI,EAAE,GAAG,EAAE,EAAE;AAC1E,gBAAA,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,EAAE,EAAE;YAC9D;QACF;IACF;AACA,IAAA,OAAO,IAAI;AACb;;AC5TA;AACA,MAAM,cAAc,GAAG,CAAC,GAAW,KAAY;IAC7C,IAAI,GAAG,GAAG,CAAC;AAAE,QAAA,OAAO,GAAG;IACvB,IAAI,MAAM,GAAG,EAAE;IACf,IAAI,CAAC,GAAG,GAAG;AACX,IAAA,OAAO,CAAC,IAAI,CAAC,EAAE;AACb,QAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM;QACpD,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;IAC5B;AACA,IAAA,OAAO,MAAM;AACf,CAAC;AAED,MAAM,aAAa,GAAG,CAAC,GAAY,EAAE,EAAU,EAAE,EAAU,EAAE,IAAY,KAAI;IAC3E,GAAG,CAAC,SAAS,EAAE;AAEf,IAAA,MAAM,SAAS,GAAG,IAAI,GAAG,GAAG;AAC5B,IAAA,MAAM,UAAU,GAAG,IAAI,GAAG,GAAG;AAC7B,IAAA,MAAM,KAAK,GAAG,EAAE,GAAG,SAAS,GAAG,CAAC;IAChC,MAAM,KAAK,GAAG,EAAE,GAAG,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG;IAE9C,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,SAAS,GAAG,GAAG,EAAE,KAAK,CAAC;IAC1C,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,SAAS,GAAG,GAAG,EAAE,KAAK,CAAC;AAC1C,IAAA,GAAG,CAAC,gBAAgB,CAAC,KAAK,GAAG,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,SAAS,EAAE,KAAK,GAAG,UAAU,GAAG,GAAG,CAAC;AAC3F,IAAA,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,SAAS,EAAE,KAAK,GAAG,UAAU,GAAG,GAAG,CAAC;IACvD,GAAG,CAAC,gBAAgB,CAClB,KAAK,GAAG,SAAS,EACjB,KAAK,GAAG,UAAU,EAClB,KAAK,GAAG,SAAS,GAAG,GAAG,EACvB,KAAK,GAAG,UAAU,CACnB;AACD,IAAA,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,SAAS,GAAG,GAAG,EAAE,KAAK,GAAG,UAAU,CAAC;AACvD,IAAA,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,UAAU,GAAG,GAAG,CAAC;IAChF,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU,GAAG,GAAG,CAAC;AAC3C,IAAA,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,GAAG,EAAE,KAAK,CAAC;AAElE,IAAA,MAAM,cAAc,GAAG,IAAI,GAAG,GAAG;AACjC,IAAA,MAAM,eAAe,GAAG,IAAI,GAAG,GAAG;AAClC,IAAA,MAAM,KAAK,GAAG,EAAE,GAAG,cAAc,GAAG,CAAC;AACrC,IAAA,MAAM,KAAK,GAAG,EAAE,GAAG,UAAU,GAAG,GAAG;AAEnC,IAAA,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;IACxB,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,EAAE,KAAK,CAAC;AACzC,IAAA,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,GAAG,GAAG,EAAE,KAAK,GAAG,eAAe,CAAC;AACjE,IAAA,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,GAAG,GAAG,EAAE,KAAK,GAAG,eAAe,CAAC;IACjE,GAAG,CAAC,SAAS,EAAE;AAEf,IAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,GAAG;AAC3B,IAAA,MAAM,SAAS,GAAG,IAAI,GAAG,GAAG;AAE5B,IAAA,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,GAAG,GAAG,EAAE,KAAK,GAAG,eAAe,CAAC;AACjE,IAAA,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,GAAG,GAAG,GAAG,QAAQ,EAAE,KAAK,GAAG,eAAe,CAAC;AAC5E,IAAA,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,GAAG,GAAG,GAAG,QAAQ,EAAE,KAAK,GAAG,eAAe,GAAG,SAAS,CAAC;AACxF,IAAA,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,GAAG,GAAG,EAAE,KAAK,GAAG,eAAe,GAAG,SAAS,CAAC;AAE7E,IAAA,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,GAAG,GAAG,GAAG,QAAQ,EAAE,KAAK,GAAG,eAAe,CAAC;AAC5E,IAAA,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,GAAG,GAAG,EAAE,KAAK,GAAG,eAAe,CAAC;AACjE,IAAA,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,GAAG,GAAG,EAAE,KAAK,GAAG,eAAe,GAAG,SAAS,CAAC;AAC7E,IAAA,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,GAAG,GAAG,GAAG,QAAQ,EAAE,KAAK,GAAG,eAAe,GAAG,SAAS,CAAC;IAExF,GAAG,CAAC,SAAS,EAAE;AACjB,CAAC;AAEM,MAAM,sBAAsB,GAAG,CACpC,GAAY,EACZ,KAAY,EACZ,gBAKC,KACC;AACF,IAAA,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE;AACvB,IAAA,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE;IACxB,MAAM,QAAQ,GAAG,oBAAoB;IACrC,MAAM,UAAU,GAAG,GAAG;IAEtB,MAAM,WAAW,GAAG,KAAK,EAAE,KAAK,EAAE,YAAY,IAAI,UAAU;IAC5D,MAAM,eAAe,GAAG,KAAK,EAAE,KAAK,EAAE,iBAAiB,IAAI,IAAI;AAC/D,IAAA,MAAM,SAAS,GAAG,KAAK,EAAE,KAAK,EAAE,KAAyC;IACzE,MAAM,QAAQ,GAAG,CAAC,EAAE,WAAW,IAAI,eAAe,CAAC;IACnD,MAAM,WAAW,GAAG,QAAQ,GAAG,oBAAoB,GAAG,CAAC;IACvD,MAAM,YAAY,GAAG,WAAW;IAEhC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,QAAQ,CAAC;AACrC,IAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,YAAY,IAAI,QAAQ,CAAC;IAEtD,MAAM,MAAM,GAAG,gBAAgB,IAAI;AACjC,QAAA,gBAAgB,EAAE,GAAG;AACrB,QAAA,SAAS,EAAE,eAAe;AAC1B,QAAA,mBAAmB,EAAE,CAAC;AACtB,QAAA,YAAY,EAAE,eAAe;KAC9B;IAED,MAAM,cAAc,GAAG,MAAM,EAAE,gBAAgB,EAAE,WAAW,EAAE,IAAI,GAAG;IACrE,MAAM,WAAW,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE;IAErD,IAAI,QAAQ,EAAE;QACZ,GAAG,CAAC,IAAI,EAAE;QAEV,MAAM,QAAQ,GAAG,CAAA,eAAA,CAAiB;AAClC,QAAA,GAAG,CAAC,IAAI,GAAG,QAAQ;QACnB,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,KAAK;QACpD,MAAM,QAAQ,GAAG,EAAE;QACnB,MAAM,eAAe,GAAG,EAAE;AAC1B,QAAA,MAAM,cAAc,GAAG,SAAS,GAAG,QAAQ,GAAG,CAAC;QAC/C,MAAM,UAAU,GAAG,CAAC,CAAC,GAAG,cAAc,IAAI,CAAC;QAC3C,MAAM,UAAU,GAAG,CAAC,WAAW,GAAG,eAAe,IAAI,CAAC;QACtD,MAAM,YAAY,GAAG,CAAC;QACtB,MAAM,KAAK,GAAG,WAAW;QAEzB,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,MAAM;QAErD,GAAG,CAAC,SAAS,EAAE;AACf,QAAA,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC;AACpB,QAAA,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC;AACpB,QAAA,GAAG,CAAC,WAAW,GAAG,WAAW;AAC7B,QAAA,GAAG,CAAC,SAAS,GAAG,CAAC;QACjB,GAAG,CAAC,MAAM,EAAE;QAEZ,GAAG,CAAC,SAAS,EAAE;QACf,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,YAAY,EAAE,UAAU,CAAC;QACjD,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,cAAc,GAAG,YAAY,EAAE,UAAU,CAAC;AAClE,QAAA,GAAG,CAAC,gBAAgB,CAClB,UAAU,GAAG,cAAc,EAC3B,UAAU,EACV,UAAU,GAAG,cAAc,EAC3B,UAAU,GAAG,YAAY,CAC1B;AACD,QAAA,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,cAAc,EAAE,UAAU,GAAG,eAAe,GAAG,YAAY,CAAC;QACpF,GAAG,CAAC,gBAAgB,CAClB,UAAU,GAAG,cAAc,EAC3B,UAAU,GAAG,eAAe,EAC5B,UAAU,GAAG,cAAc,GAAG,YAAY,EAC1C,UAAU,GAAG,eAAe,CAC7B;QACD,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,YAAY,EAAE,UAAU,GAAG,eAAe,CAAC;AACnE,QAAA,GAAG,CAAC,gBAAgB,CAClB,UAAU,EACV,UAAU,GAAG,eAAe,EAC5B,UAAU,EACV,UAAU,GAAG,eAAe,GAAG,YAAY,CAC5C;QACD,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,YAAY,CAAC;AACjD,QAAA,GAAG,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,GAAG,YAAY,EAAE,UAAU,CAAC;QACnF,GAAG,CAAC,SAAS,EAAE;AACf,QAAA,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC;AAE1B,QAAA,GAAG,CAAC,IAAI,GAAG,QAAQ;AACnB,QAAA,GAAG,CAAC,SAAS,GAAG,WAAW;AAC3B,QAAA,GAAG,CAAC,SAAS,GAAG,QAAQ;AACxB,QAAA,GAAG,CAAC,YAAY,GAAG,QAAQ;AAC3B,QAAA,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG,eAAe,GAAG,CAAC,CAAC;QAElE,GAAG,CAAC,OAAO,EAAE;IACf;AAEA,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,QAAQ,EAAE;AACpC,QAAA,KAAK,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,QAAQ,EAAE;YAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,QAAQ,CAAC;AACzC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,YAAY,IAAI,QAAQ,CAAC;YAE1D,IAAI,cAAc,GAAG,QAAQ;AAC7B,YAAA,IAAI,MAAM,CAAC,SAAS,KAAK,eAAe,EAAE;AACxC,gBAAA,cAAc,GAAG,IAAI,GAAG,CAAC,GAAG,QAAQ;YACtC;YAEA,IAAI,cAAc,GAAG,QAAQ;AAC7B,YAAA,IAAI,MAAM,CAAC,YAAY,KAAK,eAAe,EAAE;AAC3C,gBAAA,cAAc,GAAG,IAAI,GAAG,CAAC,GAAG,QAAQ;YACtC;YAEA,MAAM,SAAS,GAAG,cAAc,CAAC,WAAW,GAAG,cAAc,CAAC;AAC9D,YAAA,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC;AAC7E,YAAA,MAAM,UAAU,GAAG,CAAA,EAAG,SAAS,CAAA,EAAG,SAAS,EAAE;YAC7C,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC;YACpC,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC;AACpC,YAAA,MAAM,IAAI,GAAG,QAAQ,GAAG,UAAU;;YAGlC,MAAM,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC;;AAGnD,YAAA,IAAI,SAAS,EAAE,eAAe,EAAE;gBAC9B;YACF;YAEA,GAAG,CAAC,IAAI,EAAE;AAEV,YAAA,IAAI,SAAS,EAAE,aAAa,EAAE;gBAC5B,kBAAkB,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;YACxD;iBAAO;gBACL,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;AAC1C,gBAAA,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC;;AAG1B,gBAAA,GAAG,CAAC,SAAS,GAAG,SAAS;gBACzB,GAAG,CAAC,IAAI,GAAG,CAAA,EAAG,IAAI,GAAG,GAAG,UAAU;AAClC,gBAAA,GAAG,CAAC,SAAS,GAAG,QAAQ;AACxB,gBAAA,GAAG,CAAC,YAAY,GAAG,QAAQ;gBAC3B,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,CAAC,CAAC;YAChD;YAEA,GAAG,CAAC,OAAO,EAAE;QACf;IACF;AACF;;MChNa,kBAAkB,GAAG,CAAC,GAAY,EAAE,KAAY,KAAI;AAC/D,IAAA,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE;AACvB,IAAA,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE;IACxB,MAAM,OAAO,GAAG,CAAC;IAEjB,GAAG,CAAC,IAAI,EAAE;;IAGV,MAAM,KAAK,GAAG,OAAO;IACrB,MAAM,KAAK,GAAG,OAAO;AACrB,IAAA,MAAM,SAAS,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC;AACjC,IAAA,MAAM,UAAU,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC;AAClC,IAAA,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,GAAG;IAE1D,GAAG,CAAC,SAAS,EAAE;IACf,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,YAAY,EAAE,KAAK,CAAC;IACvC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,SAAS,GAAG,YAAY,EAAE,KAAK,CAAC;AACnD,IAAA,GAAG,CAAC,gBAAgB,CAAC,KAAK,GAAG,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,SAAS,EAAE,KAAK,GAAG,YAAY,CAAC;IACvF,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,SAAS,EAAE,KAAK,GAAG,UAAU,CAAC;IACjD,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU,CAAC;IACrC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,YAAY,CAAC;AACvC,IAAA,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,YAAY,EAAE,KAAK,CAAC;IAC/D,GAAG,CAAC,SAAS,EAAE;AACf,IAAA,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC;;AAG1B,IAAA,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC;AACrB,IAAA,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC;AACrB,IAAA,GAAG,CAAC,IAAI,GAAG,CAAA,UAAA,CAAY;IACvB,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAW;AACjD,IAAA,GAAG,CAAC,SAAS,GAAG,QAAQ;AACxB,IAAA,GAAG,CAAC,YAAY,GAAG,QAAQ;IAE3B,MAAM,SAAS,GAAG,KAAK,EAAE,KAAK,EAAE,YAAY,IAAI,WAAW;IAC3D,MAAM,SAAS,GAAG,GAAG;IACrB,MAAM,MAAM,GAAG,EAAE;IACjB,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,KAAK;;IAGlD,GAAG,CAAC,SAAS,EAAE;IACf,GAAG,CAAC,GAAG,CAAC,OAAO,GAAG,SAAS,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IAC7E,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAW;IACjD,GAAG,CAAC,IAAI,EAAE;;IAGV,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC;;IAGzC,GAAG,CAAC,SAAS,EAAE;IACf,GAAG,CAAC,GAAG,CAAC,OAAO,GAAG,SAAS,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IAC7E,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAW;IACjD,GAAG,CAAC,IAAI,EAAE;;IAGV,MAAM,SAAS,GAAG,SAAS;AAC3B,IAAA,MAAM,aAAa,GAAG,CAAC,GAAG,oBAAoB,GAAG,CAAC;IAElD,GAAG,CAAC,SAAS,EAAE;AACf,IAAA,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,CAAC;AAC5B,IAAA,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,CAAC;AAC5B,IAAA,GAAG,CAAC,WAAW,GAAG,SAAS;AAC3B,IAAA,GAAG,CAAC,SAAS,GAAG,CAAC;IACjB,GAAG,CAAC,MAAM,EAAE;IAEZ,MAAM,SAAS,GAAG,qBAAqB;IACvC,MAAM,QAAQ,GAAG,CAAA,eAAA,CAAiB;AAClC,IAAA,GAAG,CAAC,IAAI,GAAG,QAAQ;IACnB,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,KAAK;IACnD,MAAM,QAAQ,GAAG,EAAE;IACnB,MAAM,eAAe,GAAG,EAAE;AAC1B,IAAA,MAAM,cAAc,GAAG,UAAU,GAAG,QAAQ,GAAG,CAAC;IAChD,MAAM,UAAU,GAAG,CAAC,CAAC,GAAG,cAAc,IAAI,CAAC;AAC3C,IAAA,MAAM,UAAU,GAAG,aAAa,GAAG,eAAe,GAAG,CAAC;IACtD,MAAM,YAAY,GAAG,CAAC;IAEtB,GAAG,CAAC,SAAS,EAAE;IACf,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,YAAY,EAAE,UAAU,CAAC;IACjD,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,cAAc,GAAG,YAAY,EAAE,UAAU,CAAC;AAClE,IAAA,GAAG,CAAC,gBAAgB,CAClB,UAAU,GAAG,cAAc,EAC3B,UAAU,EACV,UAAU,GAAG,cAAc,EAC3B,UAAU,GAAG,YAAY,CAC1B;AACD,IAAA,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,cAAc,EAAE,UAAU,GAAG,eAAe,GAAG,YAAY,CAAC;IACpF,GAAG,CAAC,gBAAgB,CAClB,UAAU,GAAG,cAAc,EAC3B,UAAU,GAAG,eAAe,EAC5B,UAAU,GAAG,cAAc,GAAG,YAAY,EAC1C,UAAU,GAAG,eAAe,CAC7B;IACD,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,YAAY,EAAE,UAAU,GAAG,eAAe,CAAC;AACnE,IAAA,GAAG,CAAC,gBAAgB,CAClB,UAAU,EACV,UAAU,GAAG,eAAe,EAC5B,UAAU,EACV,UAAU,GAAG,eAAe,GAAG,YAAY,CAC5C;IACD,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,YAAY,CAAC;AACjD,IAAA,GAAG,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,GAAG,YAAY,EAAE,UAAU,CAAC;IACnF,GAAG,CAAC,SAAS,EAAE;AACf,IAAA,GAAG,CAAC,SAAS,GAAG,SAAS;IACzB,GAAG,CAAC,IAAI,EAAE;AACV,IAAA,GAAG,CAAC,WAAW,GAAG,SAAS;AAC3B,IAAA,GAAG,CAAC,SAAS,GAAG,CAAC;IACjB,GAAG,CAAC,MAAM,EAAE;AAEZ,IAAA,GAAG,CAAC,IAAI,GAAG,QAAQ;AACnB,IAAA,GAAG,CAAC,SAAS,GAAG,SAAS;AACzB,IAAA,GAAG,CAAC,SAAS,GAAG,QAAQ;AACxB,IAAA,GAAG,CAAC,YAAY,GAAG,QAAQ;IAC3B,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC;IAE7C,GAAG,CAAC,OAAO,EAAE;AACf;;MClHa,kBAAkB,GAAG,CAAC,GAAY,EAAE,KAAY,KAAI;AAC/D,IAAA,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE;AACvB,IAAA,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE;IACxB,MAAM,OAAO,GAAG,CAAC;IAEjB,GAAG,CAAC,IAAI,EAAE;IAEV,MAAM,KAAK,GAAG,OAAO;IACrB,MAAM,KAAK,GAAG,OAAO;AACrB,IAAA,MAAM,SAAS,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC;AACjC,IAAA,MAAM,UAAU,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC;AAClC,IAAA,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,GAAG;AAE1D,IAAA,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,CAAC;;;AAI9E,IAAA,GAAG,CAAC,IAAI,GAAG,CAAA,UAAA,CAAY;AACvB,IAAA,GAAG,CAAC,SAAS,GAAG,SAAS;AACzB,IAAA,GAAG,CAAC,SAAS,GAAG,QAAQ;AACxB,IAAA,GAAG,CAAC,YAAY,GAAG,QAAQ;AAC3B,IAAA,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC;AACrB,IAAA,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC;;AAGrB,IAAA,MAAM,SAAS,GAAG,IAAI,IAAI,KAAK,EAAE,KAAK,EAAE,YAAY,IAAI,UAAU,CAAC;IACnE,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC;IAEzC,GAAG,CAAC,OAAO,EAAE;AACf;;MC5Ba,kBAAkB,GAAG,CAAC,GAAY,EAAE,KAAY,KAAI;AAC/D,IAAA,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE;AACvB,IAAA,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE;AAExB,IAAA,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,EAAE;AAC9B,IAAA,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,EAAE;IAClC,MAAM,aAAa,GAAW,KAAK,EAAE,KAAK,EAAE,cAAc,IAAI,CAAC;IAC/D,MAAM,QAAQ,GAAW,KAAK,EAAE,KAAK,EAAE,YAAY,IAAI,MAAM;AAC7D,IAAA,MAAM,SAAS,GAAG,KAAK,EAAE,KAAK,EAAE,KAAyC;AAEzE,IAAA,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC;AAChB,IAAA,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC;;;AAIhB,IAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG;AACxC,IAAA,MAAM,GAAG,GAAG,WAAW,GAAG,GAAG,CAAC;AAC9B,IAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,WAAW,GAAG,CAAC,GAAG,GAAG;IAE9D,GAAG,CAAC,IAAI,EAAE;;AAGV,IAAA,IAAI,aAAa,GAAG,CAAC,EAAE;AACrB,QAAA,MAAM,WAAW,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW;AAEnD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE;YACtC,MAAM,SAAS,GAAG,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACrC,YAAA,IAAI,SAAS,EAAE,eAAe,EAAE;gBAC9B;YACF;AAEA,YAAA,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,aAAa,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC;AAC7D,YAAA,MAAM,GAAG,GAAG,EAAE,GAAG,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9C,YAAA,MAAM,GAAG,GAAG,EAAE,GAAG,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AAE9C,YAAA,IAAI,SAAS,EAAE,aAAa,EAAE;AAC5B,gBAAA,kBAAkB,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,GAAG,CAAC,CAAC;gBACzD;YACF;YAEA,GAAG,CAAC,SAAS,EAAE;AACf,YAAA,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;YAC9C,GAAG,CAAC,SAAS,EAAE;;AAGf,YAAA,GAAG,CAAC,SAAS,GAAG,WAAW;YAC3B,GAAG,CAAC,IAAI,EAAE;;AAGV,YAAA,GAAG,CAAC,WAAW,GAAG,SAAS;AAC3B,YAAA,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;YAC/C,GAAG,CAAC,MAAM,EAAE;QACd;IACF;;IAGA,GAAG,CAAC,SAAS,EAAE;AACf,IAAA,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5C,GAAG,CAAC,SAAS,EAAE;AACf,IAAA,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;;AAG3B,IAAA,MAAM,QAAQ,GAAG,WAAW,GAAG,IAAI;AACnC,IAAA,GAAG,CAAC,IAAI,GAAG,CAAA,EAAG,QAAQ,UAAU;AAChC,IAAA,GAAG,CAAC,SAAS,GAAG,WAAW;AAC3B,IAAA,GAAG,CAAC,SAAS,GAAG,QAAQ;AACxB,IAAA,GAAG,CAAC,YAAY,GAAG,QAAQ;IAC3B,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC;IAE9B,GAAG,CAAC,OAAO,EAAE;AACf;;MCvEa,6BAA6B,GAAG,CAAC,GAAY,EAAE,KAAY,KAAI;AAC1E,IAAA,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE;AACvB,IAAA,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE;IACxB,MAAM,OAAO,GAAG,CAAC;IAEjB,GAAG,CAAC,IAAI,EAAE;IAEV,MAAM,KAAK,GAAG,OAAO;IACrB,MAAM,KAAK,GAAG,OAAO;AACrB,IAAA,MAAM,SAAS,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC;AACjC,IAAA,MAAM,UAAU,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC;AAClC,IAAA,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,GAAG;AAE1D,IAAA,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,CAAC;;;AAI9E,IAAA,GAAG,CAAC,IAAI,GAAG,CAAA,UAAA,CAAY;AACvB,IAAA,GAAG,CAAC,SAAS,GAAG,SAAS;AACzB,IAAA,GAAG,CAAC,SAAS,GAAG,QAAQ;AACxB,IAAA,GAAG,CAAC,YAAY,GAAG,QAAQ;AAC3B,IAAA,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC;AACrB,IAAA,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC;;AAGrB,IAAA,MAAM,SAAS,GAAG,KAAK,IAAI,KAAK,EAAE,KAAK,EAAE,YAAY,IAAI,eAAe,CAAC;IACzE,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC;IAEzC,GAAG,CAAC,OAAO,EAAE;AACf;;MC7Ba,iBAAiB,GAAG,CAAC,GAAY,EAAE,KAAY,KAAI;AAC9D,IAAA,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE;AACvB,IAAA,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE;IACxB,MAAM,OAAO,GAAG,CAAC;IAEjB,GAAG,CAAC,IAAI,EAAE;IAEV,MAAM,KAAK,GAAG,OAAO;IACrB,MAAM,KAAK,GAAG,OAAO;AACrB,IAAA,MAAM,SAAS,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC;AACjC,IAAA,MAAM,UAAU,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC;AAClC,IAAA,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,IAAI;AAE3D,IAAA,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,CAAC;;AAG9E,IAAA,GAAG,CAAC,IAAI,GAAG,CAAA,UAAA,CAAY;IACvB,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAW;AACjD,IAAA,GAAG,CAAC,SAAS,GAAG,QAAQ;AACxB,IAAA,GAAG,CAAC,YAAY,GAAG,QAAQ;AAC3B,IAAA,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC;AACrB,IAAA,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC;;IAGrB,MAAM,QAAQ,GAAG,KAAK,EAAE,KAAK,EAAE,YAAY,IAAI,EAAE;IACjD,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC;IAExC,GAAG,CAAC,OAAO,EAAE;AACf;;ACjBO,MAAM,oBAAoB,GAAiD;AAChF,IAAA,CAAC,kBAAkB,CAAC,KAAK,GAAG;AAC1B,QAAA,MAAM,EAAE;YACN,KAAK,EAAE,oBAAoB,GAAG,EAAE;YAChC,MAAM,EAAE,oBAAoB,GAAG,CAAC;AAChC,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,kBAAkB,EAAE,KAAK;AACzB,YAAA,SAAS,EAAE,kBAAkB;AAC9B,SAAA;AACD,QAAA,KAAK,EAAE,YAAY;AACpB,KAAA;AAED,IAAA,CAAC,kBAAkB,CAAC,UAAU,GAAG;AAC/B,QAAA,MAAM,EAAE;YACN,KAAK,EAAE,oBAAoB,GAAG,CAAC;AAC/B,YAAA,MAAM,EAAE,oBAAoB;AAC5B,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,kBAAkB,EAAE,KAAK;AACzB,YAAA,SAAS,EAAE,sBAAsB;AAClC,SAAA;AACD,QAAA,KAAK,EAAE,UAAU;AAClB,KAAA;AAED,IAAA,CAAC,kBAAkB,CAAC,KAAK,GAAG;AAC1B,QAAA,MAAM,EAAE;YACN,KAAK,EAAE,oBAAoB,GAAG,CAAC;YAC/B,MAAM,EAAE,oBAAoB,GAAG,CAAC;AAChC,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,YAAY,EAAE,CAAC;AACf,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,kBAAkB,EAAE,KAAK;AACzB,YAAA,SAAS,EAAE,kBAAkB;AAC9B,SAAA;AACD,QAAA,KAAK,EAAE,UAAU;AAClB,KAAA;AAED,IAAA,CAAC,kBAAkB,CAAC,IAAI,GAAG;AACzB,QAAA,MAAM,EAAE;YACN,KAAK,EAAE,oBAAoB,GAAG,EAAE;YAChC,MAAM,EAAE,oBAAoB,GAAG,CAAC;AAChC,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,YAAY,EAAE,CAAC;AACf,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,kBAAkB,EAAE,KAAK;AACzB,YAAA,SAAS,EAAE,iBAAiB;AAC7B,SAAA;AACD,QAAA,KAAK,EAAE,YAAY;AACpB,KAAA;AAED,IAAA,CAAC,kBAAkB,CAAC,IAAI,GAAG;AACzB,QAAA,MAAM,EAAE;YACN,KAAK,EAAE,oBAAoB,GAAG,CAAC;AAC/B,YAAA,MAAM,EAAE,oBAAoB;AAC5B,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,kBAAkB,EAAE,KAAK;AACzB,YAAA,SAAS,EAAE,iBAAiB;AAC7B,SAAA;AACD,QAAA,KAAK,EAAE,YAAY;AACpB,KAAA;AAED,IAAA,CAAC,kBAAkB,CAAC,eAAe,GAAG;AACpC,QAAA,MAAM,EAAE;YACN,KAAK,EAAE,oBAAoB,GAAG,CAAC;AAC/B,YAAA,MAAM,EAAE,oBAAoB;AAC5B,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,kBAAkB,EAAE,KAAK;AACzB,YAAA,SAAS,EAAE,2BAA2B;AACvC,SAAA;AACD,QAAA,KAAK,EAAE,YAAY;AACpB,KAAA;AAED,IAAA,CAAC,kBAAkB,CAAC,iBAAiB,GAAG;AACtC,QAAA,MAAM,EAAE;YACN,KAAK,EAAE,oBAAoB,GAAG,CAAC;AAC/B,YAAA,MAAM,EAAE,oBAAoB;AAC5B,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,kBAAkB,EAAE,KAAK;AACzB,YAAA,SAAS,EAAE,6BAA6B;AACzC,SAAA;AACD,QAAA,KAAK,EAAE,YAAY;AACpB,KAAA;AAED,IAAA,CAAC,kBAAkB,CAAC,KAAK,GAAG;AAC1B,QAAA,MAAM,EAAE;YACN,KAAK,EAAE,oBAAoB,GAAG,CAAC;AAC/B,YAAA,MAAM,EAAE,oBAAoB;AAC5B,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,kBAAkB,EAAE,KAAK;AACzB,YAAA,SAAS,EAAE,kBAAkB;AAC9B,SAAA;AACD,QAAA,KAAK,EAAE,YAAY;AACpB,KAAA;AAED,IAAA,CAAC,kBAAkB,CAAC,OAAO,GAAG;AAC5B,QAAA,MAAM,EAAE;YACN,KAAK,EAAE,oBAAoB,GAAG,CAAC;AAC/B,YAAA,MAAM,EAAE,oBAAoB;AAC5B,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,kBAAkB,EAAE,KAAK;AACzB,YAAA,SAAS,EAAE,oBAAoB;AAChC,SAAA;AACD,QAAA,KAAK,EAAE,YAAY;AACpB,KAAA;;;IC/IS;AAAZ,CAAA,UAAY,wBAAwB,EAAA;AAClC,IAAA,wBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,wBAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC;AACjC,IAAA,wBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,wBAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,wBAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC/B,CAAC,EANW,wBAAwB,KAAxB,wBAAwB,GAAA,EAAA,CAAA,CAAA;;ACE7B,MAAM,mBAAmB,GAAG,CAAC,QAAkB,KAAI;AACxD,IAAA,OAAO,GAAG,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAA,CAAA,EAAI,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAA,CAAE,CAAC,IAAI,EAAE;AAC1E;;ACFO,MAAM,gBAAgB,GAAG,CAAC,KAAY,KAAI;AAC/C,IAAA,OAAO,GAAG,KAAK,CAAC,UAAU,IAAI,EAAE,CAAA,CAAA,EAAI,KAAK,CAAC,SAAS,IAAI,EAAE,CAAA,CAAE,CAAC,IAAI,EAAE;AACpE;;ACeA,MAAM,cAAc,GAAsC;AACxD,IAAA,MAAM,EAAE,kBAAkB;AAC1B,IAAA,cAAc,EAAE,kBAAkB;AAClC,IAAA,SAAS,EAAE,gBAAgB;AAC3B,IAAA,GAAG,EAAE,qBAAqB;AAC1B,IAAA,YAAY,EAAE,kBAAkB;CACjC;AAEK,SAAU,gBAAgB,CAAC,KAAY,EAAA;;;;;;AAM3C,IAAA,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,eAAe,GAAG,CAAC;AAE9E,IAAA,IAAI,KAAK,CAAC,YAAY,EAAE;QACtB,OAAO;AACL,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,aAAa;AACjD,YAAA,KAAK,EAAE,KAAK,CAAC,eAAe,IAAI,CAAC;AACjC,YAAA,YAAY,EAAE,YAAY;YAC1B,IAAI,EAAE,cAAc,CAAC,GAAG;YACxB,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,oBAAoB,CAAC;SAC7D;IACH;AAEA,IAAA,IAAI,KAAK,CAAC,qBAAqB,EAAE;QAC/B,OAAO;AACL,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,KAAK,EAAE,KAAK,CAAC,eAAe,IAAI,CAAC;AACjC,YAAA,YAAY,EAAE,YAAY;YAC1B,IAAI,EAAE,cAAc,CAAC,YAAY;YACjC,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,oBAAoB,CAAC;SACtE;IACH;IAEA,IAAI,CAAC,iBAAiB,EAAE;QACtB,OAAO,UAAU,EAAE;IACrB;IAEA,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,eAAe,EAAE;AACzC,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,eAAe;QAClC,OAAO;AACL,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,IAAI,EAAE,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,IAAI,IAAI;AAClD,YAAA,IAAI,EAAE,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,IAAI,IAAI;YAClD,KAAK,EAAE,KAAK,CAAC,eAAgB;AAC7B,YAAA,YAAY,EACV,IAAI,GAAG,eAAe,CAAC,KAAK,kBAAkB,CAAC,UAAU,GAAG,YAAY,GAAG,OAAO;YACpF,IAAI,EAAE,cAAc,CAAC,MAAM;AAC3B,YAAA,gBAAgB,EAAE,KAAK;SACxB;IACH;IAEA,IAAI,KAAK,CAAC,mBAAmB,IAAI,KAAK,CAAC,4BAA4B,EAAE;AACnE,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,4BAA4B;QAC/C,OAAO;AACL,YAAA,IAAI,EAAE,gBAAgB;AACtB,YAAA,IAAI,EAAE,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,EAAE,IAAI,IAAI,IAAI;YAC/D,IAAI,EACF,IAAI,GAAG,gBAAgB,CAAC,GAAG,MAAM,CAAC;AAClC,gBAAA,KAAK,CAAC,mBAAmB,EAAE,cAAc,EAAE,IAAI;gBAC/C,IAAI;YACN,KAAK,EAAE,KAAK,CAAC,eAAgB;AAC7B,YAAA,YAAY,EAAE,OAAO;YACrB,IAAI,EAAE,cAAc,CAAC,cAAc;AACnC,YAAA,gBAAgB,EAAE,KAAK;SACxB;IACH;IAEA,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,kBAAkB,EAAE;AAC/C,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,kBAAkB;QACrC,OAAO;AACL,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,IAAI,EAAE,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE,IAAI,IAAI,IAAI;YACrD,KAAK,EAAE,KAAK,CAAC,eAAgB;AAC7B,YAAA,YAAY,EAAE,OAAO;YACrB,IAAI,EAAE,cAAc,CAAC,SAAS;AAC9B,YAAA,gBAAgB,EAAE,KAAK;SACxB;IACH;IAEA,OAAO,UAAU,EAAE;AACrB;AAEA,SAAS,UAAU,GAAA;IACjB,OAAO;AACL,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,gBAAgB,EAAE,KAAK;KACxB;AACH;;ACvHM,SAAU,2BAA2B,CAAC,YAAmB,EAAA;AAC7D,IAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE;IAE/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;AAChC,QAAA,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC;IACnD;AAEA,IAAA,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AAC7B,QAAA,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC;IAClD;AAEA,IAAA,IAAI,YAAY,CAAC,MAAM,GAAG,EAAE,EAAE;AAC5B,QAAA,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC;IACtE;IAEA,MAAM,cAAc,GAAQ,EAAE;IAE9B,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;AACpC,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;gBACf,MAAM,IAAI,KAAK,CAAC,CAAA,UAAA,EAAa,KAAK,GAAG,CAAC,CAAA,gBAAA,CAAkB,CAAC;YAC3D;AAEA,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;gBACnD,MAAM,IAAI,KAAK,CAAC,CAAA,UAAA,EAAa,KAAK,GAAG,CAAC,CAAA,6BAAA,CAA+B,CAAC;YACxE;AAEA,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,CAAA,UAAA,EAAa,KAAK,GAAG,CAAC,CAAA,0BAAA,CAA4B,CAAC;YACrE;YAEA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;gBAChF,MAAM,IAAI,KAAK,CAAC,CAAA,UAAA,EAAa,KAAK,GAAG,CAAC,CAAA,kCAAA,CAAoC,CAAC;YAC7E;AAEA,YAAA,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9C,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC;YACvC,MAAM,WAAW,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC;AAEpD,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC9C,WAAW,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;YAC/C;AAEA,YAAA,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC;AAC7C,YAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;AAExD,YAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE;gBACxC,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,gBAAA,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE;AACzB,aAAA,CAAC;AAEF,YAAA,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE;gBACnB,MAAM,IAAI,KAAK,CAAC,CAAA,WAAA,EAAc,KAAK,CAAC,IAAI,CAAA,WAAA,CAAa,CAAC;YACxD;AAEA,YAAA,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC;YAC9B,cAAc,CAAC,IAAI,CAAC;gBAClB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;AAChB,aAAA,CAAC;QACJ;QAAE,OAAO,KAAU,EAAE;YACnB,OAAO,CAAC,KAAK,CAAC,CAAA,wBAAA,EAA2B,KAAK,GAAG,CAAC,CAAA,CAAA,CAAG,EAAE,KAAK,CAAC;YAC7D,MAAM,IAAI,KAAK,CACb,CAAA,iBAAA,EAAoB,KAAK,CAAC,IAAI,IAAI,SAAS,IAAI,KAAK,GAAG,CAAC,CAAC,CAAA,EAAA,EAAK,KAAK,EAAE,OAAO,CAAA,CAAE,CAC/E;QACH;AACF,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,QAAQ;AACjB;;AClEO,MAAM,oBAAoB,GAAG,CAAC,KAA6B,KAAkB;IAClF,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,QAAQ;QACvB,IAAI,EAAE,KAAK,CAAC,aAAa;QACzB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,SAAS;QACrB,SAAS,EAAE,KAAK,CAAC,SAAS;KACX;AACnB;;ACZO,MAAM,kBAAkB,GAAG,CAAC,MAAW,KAAI;AAChD,IAAA,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE;AAEzC,IAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AAC9C,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC3C;AAAO,aAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC/B,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAqB,KAAI;gBACtC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;AAC7E,YAAA,CAAC,CAAC;QACJ;AAAO,aAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACpC,YAAA,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC;QAChC;AACF,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,WAAW;AACpB;;ACdO,MAAM,4BAA4B,GAAG,CAAC,GAAmB,KAAI;AAClE,IAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAClD,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM;AAC1D,QAAA,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,WAAW,IAAI,IAAI;AAC3B,KAAA,CAAC,CAAC;AACL;;MCPa,eAAe,GAAG,CAAC,KAAY,EAAE,MAAyB,KAAa;IAClF,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,SAAS;IAC/D,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,KAAK,uBAAuB,CAAC,IAAI;AACnE,IAAA,MAAM,iBAAiB,GAAG,MAAM,CAAC,UAAU;AAE3C,IAAA,OAAO,gBAAgB,IAAI,YAAY,IAAI,CAAC,iBAAiB;AAC/D;;ACRM,SAAU,iBAAiB,CAAC,WAAmB,EAAA;IACnD,OAAO,CAAC,SAA0B,KAA6B;QAC7D,MAAM,KAAK,GAAG,SAAsB;QACpC,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;QAEtC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AAC9B,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;QACxB,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAE1B,QAAA,IAAI,YAAkB;AAEtB,QAAA,IAAI,OAAO,CAAC,KAAK,YAAY,IAAI,EAAE;YACjC,YAAY,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACxC;AAAO,aAAA,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE;YAC5C,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;AAC/D,YAAA,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QACzD;aAAO;AACL,YAAA,OAAO,IAAI;QACb;QAEA,YAAY,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAEpC,QAAA,IAAI,YAAY,GAAG,KAAK,EAAE;YACxB,OAAO,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACrC,YAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC3B;aAAO;AACL,YAAA,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM;YACpC,IAAI,aAAa,EAAE;AACjB,gBAAA,OAAO,aAAa,CAAC,UAAU,CAAC;gBAChC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,aAAa,GAAG,IAAI,CAAC;YACjF;AACA,YAAA,OAAO,IAAI;QACb;AACF,IAAA,CAAC;AACH;AAEM,SAAU,gCAAgC,CAC9C,oBAA4B,EAC5B,kBAA0B,EAAA;IAE1B,OAAO,CAAC,SAA0B,KAA6B;QAC7D,MAAM,KAAK,GAAG,SAAsB;QACpC,MAAM,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC;QACxD,MAAM,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC;AAEpD,QAAA,IAAI,CAAC,gBAAgB,IAAI,CAAC,cAAc,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;AAC5F,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,SAAe;AACnB,QAAA,IAAI,OAAa;AAEjB,QAAA,IAAI,gBAAgB,CAAC,KAAK,YAAY,IAAI,EAAE;YAC1C,SAAS,GAAG,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;QAC9C;AAAO,aAAA,IAAI,OAAO,gBAAgB,CAAC,KAAK,KAAK,QAAQ,EAAE;YACrD,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;AACvF,YAAA,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;QACrE;aAAO;AACL,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,cAAc,CAAC,KAAK,YAAY,IAAI,EAAE;YACxC,OAAO,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QAC1C;AAAO,aAAA,IAAI,OAAO,cAAc,CAAC,KAAK,KAAK,QAAQ,EAAE;YACnD,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;AAC/E,YAAA,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;QAC7D;aAAO;AACL,YAAA,OAAO,IAAI;QACb;QAEA,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAE/B,QAAA,IAAI,OAAO,IAAI,SAAS,EAAE;YACxB,cAAc,CAAC,SAAS,CAAC,EAAE,uBAAuB,EAAE,IAAI,EAAE,CAAC;AAC3D,YAAA,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAE;QAC1C;aAAO;AACL,YAAA,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM;YAC3C,IAAI,aAAa,EAAE;AACjB,gBAAA,OAAO,aAAa,CAAC,yBAAyB,CAAC;gBAC/C,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,aAAa,GAAG,IAAI,CAAC;YACxF;AACA,YAAA,OAAO,IAAI;QACb;AACF,IAAA,CAAC;AACH;;ACxFM,SAAU,kBAAkB,CAAC,WAAmB,EAAE,mBAA2B,EAAA;IACjF,OAAO,CAAC,SAA0B,KAA6B;QAC7D,MAAM,KAAK,GAAG,SAAsB;QACpC,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;QACtC,MAAM,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC;AAEtD,QAAA,IAAI,CAAC,OAAO,IAAI,CAAC,eAAe,EAAE;AAChC,YAAA,OAAO,IAAI;QACb;QAEA,IAAI,OAAO,CAAC,KAAK,KAAK,eAAe,CAAC,KAAK,EAAE;YAC3C,eAAe,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC9C,YAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE;QAC5B;aAAO;AACL,YAAA,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC;AAC/B,YAAA,OAAO,IAAI;QACb;AACF,IAAA,CAAC;AACH;;SClBgB,cAAc,GAAA;IAC5B,OAAO,CAAC,OAAwB,KAA6B;AAC3D,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;QAC3B,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI;QACb;QAEA,MAAM,OAAO,GAAG,kDAAkD;AAElE,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE;AACrD,IAAA,CAAC;AACH;;MCFa,UAAU,CAAA;AAIX,IAAA,IAAA;AACqB,IAAA,UAAA;AACc,IAAA,MAAA;AALrC,IAAA,MAAM;AAEd,IAAA,WAAA,CACU,IAAgB,EACK,UAAkB,EACJ,MAA+B,EAAA;QAFlE,IAAA,CAAA,IAAI,GAAJ,IAAI;QACiB,IAAA,CAAA,UAAU,GAAV,UAAU;QACI,IAAA,CAAA,MAAM,GAAN,MAAM;AAEjD,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;IAC7B;AAEQ,IAAA,UAAU,CAAC,WAAoB,EAAA;AACrC,QAAA,IAAI,OAAO,GAAG,IAAI,WAAW,EAAE;QAE/B,IAAI,WAAW,EAAE;YACf,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC;QACpD;AAEA,QAAA,OAAO,OAAO;IAChB;AAEQ,IAAA,mBAAmB,CAAC,IAAS,EAAA;AACnC,QAAA,IAAI,IAAI,YAAY,QAAQ,EAAE;AAC5B,YAAA,OAAO,SAAS;QAClB;AACA,QAAA,OAAO,kBAAkB;IAC3B;AAEQ,IAAA,WAAW,CAAC,KAAwB,EAAA;AAC1C,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AAC9D,YAAA,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ;AAC7C,YAAA,IAAI,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AACrC,gBAAA,YAAY,CAAC,UAAU,CAAC,cAAc,CAAC;AACvC,gBAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG;YAC5B;QACF;AACA,QAAA,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC;IAChC;AAEA,IAAA,GAAG,CAAI,IAAY,EAAA;AACjB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAI,CAAA,EAAG,IAAI,CAAC,MAAM,CAAA,EAAG,IAAI,CAAA,CAAE,EAAE,EAAE,OAAO,EAAE;AAC3C,aAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAClD;AAEA,IAAA,OAAO,CAAC,IAAY,EAAA;QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAC1C,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA,CAAE,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE;AAC9D,aAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAClD;IAEA,IAAI,CAAI,IAAY,EAAE,IAAS,EAAA;AAC7B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;AACT,aAAA,IAAI,CAAI,CAAA,EAAG,IAAI,CAAC,MAAM,CAAA,EAAG,IAAI,CAAA,CAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE;AAClD,aAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAClD;IAEA,KAAK,CAAI,IAAY,EAAE,IAAS,EAAA;AAC9B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;AACT,aAAA,KAAK,CAAI,CAAA,EAAG,IAAI,CAAC,MAAM,CAAA,EAAG,IAAI,CAAA,CAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE;AACnD,aAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAClD;IAEA,GAAG,CAAI,IAAY,EAAE,IAAS,EAAA;AAC5B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAI,CAAA,EAAG,IAAI,CAAC,MAAM,CAAA,EAAG,IAAI,CAAA,CAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE;AACjD,aAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAClD;IAEA,MAAM,CAAI,IAAY,EAAE,IAAU,EAAA;AAChC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;AACT,aAAA,OAAO,CAAI,QAAQ,EAAE,CAAA,EAAG,IAAI,CAAC,MAAM,CAAA,EAAG,IAAI,CAAA,CAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AAC/D,aAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAClD;wGA/EW,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAKX,WAAW,EAAA,EAAA,EAAA,KAAA,EACX,yBAAyB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AANxB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,cAFT,MAAM,EAAA,CAAA;;4FAEP,UAAU,EAAA,UAAA,EAAA,CAAA;kBAHtB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;0BAMI,MAAM;2BAAC,WAAW;;0BAClB,MAAM;2BAAC,yBAAyB;;;ACfrC;;;;AAIG;MAEU,mBAAmB,CAAA;AAC9B,IAAA,YAAY,GAA4B,MAAM,CAAC,KAAK,wDAAC;IAErD,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;IAC7B;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;IAC9B;IAEA,MAAM,GAAA;QACJ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;IAC7C;wGAbW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cADN,MAAM,EAAA,CAAA;;4FACnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACJlC;;;;;;;;;;;;;;;;;;AAkBG;MAEU,sBAAsB,CAAA;AACjC,IAAA,WAAA,CAAiC,UAAkB,EAAA;AACjD,QAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;YAAE;AAEpC,QAAA,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAClE,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC;AAClD,QAAA,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;;;QAI1E,MAAM,GAAG,GAAG,MAAa;QACzB,GAAG,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC;QACpD,GAAG,CAAC,gBAAgB,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC;QACrD,GAAG,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC;IACpD;AAEQ,IAAA,OAAO,GAAG,CAAC,KAAiB,KAAU;AAC5C,QAAA,IAAI,KAAK,CAAC,OAAO,EAAE;YACjB,KAAK,CAAC,cAAc,EAAE;QACxB;AACF,IAAA,CAAC;AAEO,IAAA,SAAS,GAAG,CAAC,KAAoB,KAAU;QACjD,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;AAC/D,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE;YACjD,KAAK,CAAC,cAAc,EAAE;QACxB;AACF,IAAA,CAAC;AAEO,IAAA,WAAW,GAAG,CAAC,KAAiB,KAAU;QAChD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5B,KAAK,CAAC,cAAc,EAAE;QACxB;AACF,IAAA,CAAC;AAEO,IAAA,SAAS,GAAG,CAAC,KAAY,KAAU;QACzC,KAAK,CAAC,cAAc,EAAE;AACxB,IAAA,CAAC;AArCU,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,kBACb,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AADpB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cADT,MAAM,EAAA,CAAA;;4FACnB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;0BAEnB,MAAM;2BAAC,WAAW;;;MCjBpB,YAAY,CAAA;AACkB,IAAA,UAAA;AAAzC,IAAA,WAAA,CAAyC,UAAkB,EAAA;QAAlB,IAAA,CAAA,UAAU,GAAV,UAAU;IAAW;AAE9D,IAAA,IAAI,CAAC,OAAe,EAAE,IAAA,GAAkB,MAAM,EAAA;;;;;;AAM5C,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE;AACzC,QAAA,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;IACtB;AAXW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,kBACH,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AADpB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cADC,MAAM,EAAA,CAAA;;4FACnB,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;0BAEnB,MAAM;2BAAC,WAAW;;;MCJpB,yBAAyB,CAAA;AACpC,IAAA,KAAK,GAA2B,MAAM,CAAC,uBAAuB,iDAAC;AAC/D,IAAA,YAAY,GAA2B,MAAM,CAAC,EAAE,wDAAC;AACjD,IAAA,gBAAgB,GAA2B,MAAM,CAAC,EAAE,4DAAC;AACrD,IAAA,MAAM,GAA4B,MAAM,CAAC,KAAK,kDAAC;IAC/C,qBAAqB,GAAwB,IAAI;AAEjD,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,KAAK;IACnB;AAEA,IAAA,IAAI,iBAAiB,GAAA;QACnB,OAAO,IAAI,CAAC,YAAY;IAC1B;AAEA,IAAA,IAAI,qBAAqB,GAAA;QACvB,OAAO,IAAI,CAAC,gBAAgB;IAC9B;AAEA,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,MAAM;IACpB;IAEA,IAAI,CACF,EAAE,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAA0B,EACjE,eAA4B,EAAA;AAE5B,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC;AACnC,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,CAAC;AAC3C,QAAA,IAAI,CAAC,qBAAqB,GAAG,eAAe,IAAI,IAAI;AACpD,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;IACvB;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC;AACvC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;AAC7B,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI;AACjC,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;IACxB;IAEA,wBAAwB,GAAA;QACtB,OAAO,IAAI,CAAC,qBAAqB;IACnC;wGA5CW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,cADZ,MAAM,EAAA,CAAA;;4FACnB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCArB,yBAAyB,CAAA;AACpC,IAAA,UAAU,GAA2B,MAAM,CAAC,CAAC,sDAAC;AAC9C,IAAA,UAAU,GAA4B,MAAM,CAAC,KAAK,sDAAC;AACnD,IAAA,OAAO,GAA4B,MAAM,CAAC,KAAK,mDAAC;AAChD,IAAA,MAAM,GAA4B,MAAM,CAAC,KAAK,kDAAC;AAE/C,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,MAAM;IACpB;AAEA,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU;IACxB;AAEA,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,OAAO;IACrB;AAEA,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,UAAU;IACxB;AAEA,IAAA,IAAI,CAAC,UAAkB,EAAE,OAAA,GAAmB,KAAK,EAAA;AAC/C,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;QAC/B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;AAC7B,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;IACvB;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;IACxB;wGA/BW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,cADZ,MAAM,EAAA,CAAA;;4FACnB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCErB,WAAW,CAAA;AACiB,IAAA,MAAA;AAAvC,IAAA,WAAA,CAAuC,MAAc,EAAA;QAAd,IAAA,CAAA,MAAM,GAAN,MAAM;IAAW;AAExD,IAAA,UAAU,CAAC,IAAU,EAAE,MAAA,GAAiB,YAAY,EAAA;AAClD,QAAA,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;AAC3D,QAAA,OAAO,aAAa;IACtB;AANW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,kBACF,SAAS,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AADlB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cADE,MAAM,EAAA,CAAA;;4FACnB,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;0BAEnB,MAAM;2BAAC,SAAS;;;MCKlB,YAAY,CAAA;AACH,IAAA,UAAA;AAApB,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAA,CAAA,UAAU,GAAV,UAAU;IAAe;AAE7C,IAAA,WAAW,CAAC,MAAyB,EAAA;AACnC,QAAA,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC;AAC9C,QAAA,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,EAAE;AAC1C,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,gBAAgB,CAAC,QAAQ,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW,GAAG,EAAE,EAAE;QACtF,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAiB,QAAQ,CAAC;IACtD;AAEA,IAAA,YAAY,CAAC,EAAU,EAAA;AACrB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACzE;AAEA,IAAA,SAAS,CAAC,EAAU,EAAA;AAClB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC/D;AAEA,IAAA,SAAS,CAAC,IAAS,EAAA;AACjB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAgB,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC;IAC3E;IAEA,SAAS,CAAC,EAAU,EAAE,IAAS,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAM,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;IACzE;wGAxBW,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cADC,MAAM,EAAA,CAAA;;4FACnB,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCErB,aAAa,CAAA;AACJ,IAAA,UAAA;AAApB,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAA,CAAA,UAAU,GAAV,UAAU;IAAe;AAE7C,IAAA,WAAW,CAAC,MAAyB,EAAA;AACnC,QAAA,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC;AAC9C,QAAA,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,EAAE;AAC1C,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,kBAAkB,CAAC,OAAO,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW,GAAG,EAAE,EAAE;QACvF,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAiB,QAAQ,CAAC;IACtD;AAEA,IAAA,SAAS,CAAC,IAAU,EAAA;AAClB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC;IAC9D;IAEA,SAAS,CAAC,EAAU,EAAE,IAAU,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAe,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;IACjF;AAEA,IAAA,SAAS,CAAC,EAAU,EAAA;AAClB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9D;wGApBW,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAb,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cADA,MAAM,EAAA,CAAA;;4FACnB,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCCrB,cAAc,CAAA;AACL,IAAA,UAAA;AAApB,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAA,CAAA,UAAU,GAAV,UAAU;IAAe;AAE7C,IAAA,cAAc,CAAC,MAA4B,EAAA;AACzC,QAAA,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC;AAC9C,QAAA,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,EAAE;AAC1C,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,qBAAqB,CAAC,OAAO,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW,GAAG,EAAE,EAAE;QAC1F,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAoB,QAAQ,CAAC;IACzD;AAEA,IAAA,SAAS,CAAC,IAAa,EAAA;AACrB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC;IACjE;IAEA,SAAS,CAAC,EAAU,EAAE,IAAa,EAAA;AACjC,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAkB,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;IACvF;AAEA,IAAA,SAAS,CAAC,EAAU,EAAA;AAClB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjE;wGApBW,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cADD,MAAM,EAAA,CAAA;;4FACnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCCrB,aAAa,CAAA;AACJ,IAAA,UAAA;AAApB,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAA,CAAA,UAAU,GAAV,UAAU;IAAe;AAE7C,IAAA,WAAW,CAAC,MAAyB,EAAA;AACnC,QAAA,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC;AAC9C,QAAA,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,EAAE;AAC1C,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,mBAAmB,CAAC,OAAO,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW,GAAG,EAAE,EAAE;QACxF,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAiB,QAAQ,CAAC;IACtD;AAEA,IAAA,sBAAsB,CAAC,SAAiB,EAAA;QACtC,MAAM,QAAQ,GAAG,CAAA,EAAG,mBAAmB,CAAC,OAAO,CAAA,YAAA,EAAe,SAAS,CAAA,CAAE;QACzE,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAiB,QAAQ,CAAC;IACtD;AAEA,IAAA,SAAS,CAAC,IAAW,EAAA;AACnB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC;IAC/D;IAEA,SAAS,CAAC,EAAU,EAAE,IAAW,EAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;IACnF;AAEA,IAAA,SAAS,CAAC,EAAU,EAAA;AAClB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/D;wGAzBW,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAb,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cADA,MAAM,EAAA,CAAA;;4FACnB,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCIrB,kBAAkB,CAAA;AAIT,IAAA,UAAA;AAHZ,IAAA,mBAAmB,GAAG,IAAI,eAAe,CAAgB,EAAE,CAAC;AAC7D,IAAA,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE;AAE9D,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAA,CAAA,UAAU,GAAV,UAAU;IAAe;AAE7C,IAAA,iBAAiB,CAAC,EAChB,MAAM,EACN,SAAS,EACT,MAAM,EACN,MAAM,EACN,IAAI,EACJ,KAAK,GACqB,EAAA;AAC1B,QAAA,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE;AACzC,QAAA,IAAI,MAAM;YAAE,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC5D,QAAA,IAAI,SAAS;YAAE,WAAW,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC;AACtE,QAAA,IAAI,MAAM;YAAE,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC5D,QAAA,IAAI,MAAM;AAAE,YAAA,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;AAChD,QAAA,IAAI,IAAI;YAAE,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AACrD,QAAA,IAAI,KAAK;YAAE,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;AAExD,QAAA,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,EAAE;AAC1C,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,uBAAuB,CAAC,OAAO,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW,GAAG,EAAE,EAAE;QAC5F,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAgC,QAAQ,CAAC;IACrE;IAEA,sBAAsB,CAAC,EACrB,OAAO,EACP,MAAM,EACN,KAAK,EACL,IAAI,GACyB,EAAA;AAC7B,QAAA,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE;AACzC,QAAA,IAAI,IAAI;YAAE,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AACrD,QAAA,IAAI,OAAO;YAAE,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC9D,QAAA,IAAI,MAAM;AAAE,YAAA,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;AAChD,QAAA,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,KAAK,CAAC;AAEvD,QAAA,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,EAAE;AAC1C,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,uBAAuB,CAAC,2BAA2B,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW,GAAG,EAAE,EAAE;QAChH,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAA4B,QAAQ,CAAC;IACjE;AAEA,IAAA,gBAAgB,CAAC,EAAE,MAAM,EAAE,MAAM,KAA2C,EAAE,EAAA;QAC5E,IAAI,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC;AACnD,YAAA,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAI;gBACjB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,IAAI,EAAE,CAAC;YACzD,CAAC;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,CAAC;AACF,SAAA,CAAC;IACJ;IAEA,sBAAsB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK;IACvC;AAEA,IAAA,YAAY,CAAC,EAAU,EAAA;AACrB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAsB,uBAAuB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAC1F;AAEA,IAAA,mBAAmB,CACjB,EAAU,EACV,OAAA,GAAmB,KAAK,EAAA;QAExB,MAAM,WAAW,GAAG,OAAO,GAAG,yBAAyB,GAAG,oBAAoB;QAC9E,MAAM,QAAQ,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QAEzD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAiC,QAAQ,CAAC;IACtE;AAEA,IAAA,kBAAkB,CAAC,MAA6B,EAAA;AAC9C,QAAA,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE;QACzC,IAAI,MAAM,EAAE,OAAO;AAAE,YAAA,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC7E,QAAA,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,EAAE;AAC1C,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,uBAAuB,CAAC,gBAAgB,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW,GAAG,EAAE,EAAE;QAErG,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAoC,QAAQ,CAAC;IACzE;AAEA,IAAA,SAAS,CAAC,IAAiB,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC;IACnE;AAEA,IAAA,UAAU,CAAC,IAA4B,EAAA;AACrC,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACzF;IAEA,SAAS,CAAC,EAAU,EAAE,IAAS,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAsB,uBAAuB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;IAC7F;AAEA,IAAA,SAAS,CAAC,EAAU,EAAA;AAClB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACnE;AAEA,IAAA,UAAU,CAAC,GAAa,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,uBAAuB,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC;IAC5E;IAEA,mBAAmB,CACjB,GAAa,EACb,SAAkB,EAAA;AAElB,QAAA,MAAM,QAAQ,GAAG,uBAAuB,CAAC,aAAa;AACtD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAIzB,QAAQ,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;IAClC;IAEA,iBAAiB,CAAC,EAAU,EAAE,WAAoB,EAAA;AAChD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;IACjG;AAEA,IAAA,gBAAgB,CAAC,EAAU,EAAA;QACzB,MAAM,QAAQ,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC7D,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC3C;wGAzHW,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cADL,MAAM,EAAA,CAAA;;4FACnB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCTrB,6BAA6B,CAAA;AAChC,IAAA,YAAY,GAAG,MAAM,CAAiC,IAAI,wDAAC;AAC3D,IAAA,oBAAoB,GAAG,MAAM,CAA8B,IAAI,gEAAC;AAChE,IAAA,eAAe,GAAG,MAAM,CAAgB,IAAI,2DAAC;IAE5C,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AACjD,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,2DAAC;IAC3D,mBAAmB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,oBAAoB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IACjE,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEhE,IAAA,cAAc,CAAC,GAAmC,EAAA;AAChD,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;IAC5B;AAEA,IAAA,sBAAsB,CAAC,WAAwC,EAAA;AAC7D,QAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,WAAW,CAAC;IAC5C;AAEA,IAAA,iBAAiB,CAAC,EAAiB,EAAA;AACjC,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;IAC9B;wGApBW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,cADhB,MAAM,EAAA,CAAA;;4FACnB,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBADzC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCSrB,WAAW,CAAA;AAIF,IAAA,UAAA;AAHZ,IAAA,YAAY,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;AAC/C,IAAA,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;AAEhD,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAA,CAAA,UAAU,GAAV,UAAU;IAAe;AAE7C,IAAA,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,KAAuB,EAAE,EAAA;QAC/C,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC;AAC1C,YAAA,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAI;gBACjB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YAC3C,CAAC;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,CAAC;AACF,SAAA,CAAC;IACJ;IAEA,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK;IAChC;AAEA,IAAA,UAAU,CAAC,MAAwB,EAAA;AACjC,QAAA,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC;AAC9C,QAAA,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,EAAE;AAC1C,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,gBAAgB,CAAC,OAAO,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW,GAAG,EAAE,EAAE;QACrF,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAyB,QAAQ,CAAC;IAC9D;IAEA,mBAAmB,CAAC,EAClB,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,MAAM,GACW,EAAA;AACjB,QAAA,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE;AACzC,QAAA,IAAI,IAAI;AAAE,YAAA,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;AAC1C,QAAA,IAAI,IAAI;YAAE,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AACrD,QAAA,IAAI,MAAM;AAAE,YAAA,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;AAChD,QAAA,IAAI,KAAK;YAAE,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;AACxD,QAAA,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,EAAE;AAE1C,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,gBAAgB,CAAC,2BAA2B,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW,GAAG,EAAE,EAAE;QACzG,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAyB,QAAQ,CAAC;IAC9D;AAEA,IAAA,YAAY,CAAC,EAAU,EAAA;AACrB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAe,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAC5E;AAEA,IAAA,SAAS,CAAC,IAAU,EAAA;AAClB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC;IAC5D;IAEA,SAAS,CAAC,EAAU,EAAE,IAAS,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAe,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;IAC/E;AAEA,IAAA,SAAS,CAAC,EAAU,EAAA;AAClB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5D;AAEA,IAAA,WAAW,CAAC,EAAU,EAAA;AACpB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC5D;IAEA,YAAY,CAAC,EAAU,EAAE,KAAgB,EAAA;AACvC,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC;IACxE;IAEA,cAAc,CAAC,MAAc,EAAE,OAAe,EAAA;AAC5C,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjF;wGAvEW,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAX,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cADE,MAAM,EAAA,CAAA;;4FACnB,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCArB,eAAe,CAAA;AACN,IAAA,UAAA;AAApB,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAA,CAAA,UAAU,GAAV,UAAU;IAAe;AAE7C,IAAA,SAAS,CAAC,IAAc,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAmB,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC;IAClF;AAEA,IAAA,cAAc,CAAC,MAA4B,EAAA;AACzC,QAAA,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC;AAC9C,QAAA,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,EAAE;AAC1C,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,oBAAoB,CAAC,OAAO,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW,GAAG,EAAE,EAAE;QACzF,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAoB,QAAQ,CAAC;IACzD;AAEA,IAAA,YAAY,CAAC,EAAU,EAAA;AACrB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAmB,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAChF;IAEA,SAAS,CAAC,EAAU,EAAE,IAAS,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAmB,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;IACvF;AAEA,IAAA,SAAS,CAAC,EAAU,EAAA;AAClB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAChE;wGAxBW,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAf,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cADF,MAAM,EAAA,CAAA;;4FACnB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCErB,gBAAgB,CAAA;AAIP,IAAA,UAAA;AAHZ,IAAA,iBAAiB,GAAG,IAAI,eAAe,CAAc,EAAE,CAAC;AACzD,IAAA,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AAE1D,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAA,CAAA,UAAU,GAAV,UAAU;IAAe;IAE7C,eAAe,CAAC,SAAiC,EAAE,EAAA;AACjD,QAAA,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC;AAC9C,QAAA,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE;YAC3B,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxF;AACA,QAAA,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,EAAE;AAC1C,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,sBAAsB,CAAC,QAAQ,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW,GAAG,EAAE,EAAE;QAC5F,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAA8B,QAAQ,CAAC;IACnE;IAEA,cAAc,CAAC,SAAiC,EAAE,EAAA;AAChD,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC;AACrC,YAAA,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAI;gBACjB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,CAAC;YACtD,CAAC;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,CAAC;AACF,SAAA,CAAC;IACJ;IAEA,oBAAoB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK;IACrC;AAEA,IAAA,YAAY,CAAC,EAAU,EAAA;AACrB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAoB,sBAAsB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACvF;AAEA,IAAA,SAAS,CAAC,IAAe,EAAA;AACvB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC;IAClE;IAEA,YAAY,CAAC,EAAU,EAAE,IAAY,EAAA;AACnC,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC;IAC7E;IAEA,SAAS,CAAC,EAAU,EAAE,IAAS,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAA0B,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;IAChG;AAEA,IAAA,SAAS,CAAC,EAAU,EAAA;AAClB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAClE;wGAjDW,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cADH,MAAM,EAAA,CAAA;;4FACnB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCLrB,qBAAqB,CAAA;AACxB,IAAA,iBAAiB,GAAG,IAAI,OAAO,EAAQ;AACvC,IAAA,eAAe,GAAG,IAAI,OAAO,EAAQ;AAErC,IAAA,kBAAkB,GAAqC,MAAM,CAAC,IAAI,8DAAC;AAClE,IAAA,kBAAkB,GAAG,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC;IAEnE,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE;IAC/B;IAEA,mBAAmB,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;IAC9C;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;IAC7B;IAEA,iBAAiB,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IAC5C;AAEA,IAAA,oBAAoB,CAAC,SAA2B,EAAA;AAC9C,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC;IACxC;wGAzBW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAArB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cADR,MAAM,EAAA,CAAA;;4FACnB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCArB,yBAAyB,CAAA;AAIhB,IAAA,qBAAA;AAHpB,IAAA,SAAS,GAAqC,MAAM,CAAC,IAAI,qDAAC;AAC1D,IAAA,MAAM,GAA4B,MAAM,CAAC,KAAK,kDAAC;AAE/C,IAAA,WAAA,CAAoB,qBAA4C,EAAA;QAA5C,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;IAA0B;AAEnE,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,MAAM;IACpB;AAEA,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,SAAS;IACvB;IAEA,IAAI,CAAC,YAA8B,IAAI,EAAA;AACrC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;AAC7B,QAAA,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,SAAS,CAAC;AAC1D,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;IACvB;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;IAC1B;wGAvBW,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,cADZ,MAAM,EAAA,CAAA;;4FACnB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCWrB,sBAAsB,CAAA;AACb,IAAA,UAAA;AAApB,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAA,CAAA,UAAU,GAAV,UAAU;IAAe;AAE7C,IAAA,eAAe,CAAC,MAAoC,EAAA;AAClD,QAAA,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC;AAC9C,QAAA,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,EAAE;AAC1C,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,6BAA6B,CAAC,QAAQ,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW,GAAG,EAAE,EAAE;QAEnG,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAA4B,QAAQ,CAAC;IACjE;AAEA,IAAA,YAAY,CAAC,EAAU,EAAA;QACrB,MAAM,QAAQ,GAAG,6BAA6B,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3D,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAA0B,QAAQ,CAAC;IAC/D;AAEA,IAAA,SAAS,CAAC,IAAqB,EAAA;AAC7B,QAAA,MAAM,QAAQ,GAAG,6BAA6B,CAAC,MAAM;QACrD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;IAC7C;IAEA,SAAS,CAAC,EAAU,EAAE,IAAqB,EAAA;QACzC,MAAM,QAAQ,GAAG,6BAA6B,CAAC,MAAM,CAAC,EAAE,CAAC;QACzD,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAA0B,QAAQ,EAAE,IAAI,CAAC;IACvE;AAEA,IAAA,SAAS,CAAC,EAAU,EAAA;QAClB,MAAM,QAAQ,GAAG,6BAA6B,CAAC,MAAM,CAAC,EAAE,CAAC;QACzD,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC;IACzC;wGA7BW,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cAFrB,MAAM,EAAA,CAAA;;4FAEP,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCCY,iBAAiB,CAAA;AACR,IAAA,UAAA;AAApB,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAA,CAAA,UAAU,GAAV,UAAU;IAAe;AAE7C,IAAA,SAAS,CAAC,MAA8B,EAAA;AACtC,QAAA,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC;AAC9C,QAAA,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,EAAE;AAC1C,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,uBAAuB,CAAC,QAAQ,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW,GAAG,EAAE,EAAE;QAE7F,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAsB,QAAQ,CAAC;IAC3D;AAEA,IAAA,YAAY,CAAC,EAAU,EAAA;QACrB,MAAM,QAAQ,GAAG,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAqB,QAAQ,CAAC;IAC1D;AAEA,IAAA,SAAS,CAAC,IAAgB,EAAA;AACxB,QAAA,MAAM,QAAQ,GAAG,uBAAuB,CAAC,MAAM;QAC/C,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;IAC7C;IAEA,SAAS,CAAC,EAAU,EAAE,IAAgB,EAAA;QACpC,MAAM,QAAQ,GAAG,uBAAuB,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAqB,QAAQ,EAAE,IAAI,CAAC;IAClE;AAEA,IAAA,SAAS,CAAC,EAAU,EAAA;QAClB,MAAM,QAAQ,GAAG,uBAAuB,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC;IACzC;wGA7BW,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA;;4FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCCY,kBAAkB,CAAA;AACT,IAAA,UAAA;AAApB,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAA,CAAA,UAAU,GAAV,UAAU;IAAe;AAE7C,IAAA,UAAU,CAAC,MAA+B,EAAA;AACxC,QAAA,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC;AAC9C,QAAA,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,EAAE;AAC1C,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,wBAAwB,CAAC,QAAQ,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW,GAAG,EAAE,EAAE;QAE9F,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAuB,QAAQ,CAAC;IAC5D;AAEA,IAAA,YAAY,CAAC,EAAU,EAAA;QACrB,MAAM,QAAQ,GAAG,wBAAwB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAsB,QAAQ,CAAC;IAC3D;AAEA,IAAA,SAAS,CAAC,IAAiB,EAAA;AACzB,QAAA,MAAM,QAAQ,GAAG,wBAAwB,CAAC,MAAM;QAChD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;IAC7C;IAEA,SAAS,CAAC,EAAU,EAAE,IAAiB,EAAA;QACrC,MAAM,QAAQ,GAAG,wBAAwB,CAAC,MAAM,CAAC,EAAE,CAAC;QACpD,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAsB,QAAQ,EAAE,IAAI,CAAC;IACnE;AAEA,IAAA,SAAS,CAAC,EAAU,EAAA;QAClB,MAAM,QAAQ,GAAG,wBAAwB,CAAC,MAAM,CAAC,EAAE,CAAC;QACpD,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC;IACzC;wGA7BW,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA;;4FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCFY,cAAc,CAAA;AAIL,IAAA,UAAA;AAHZ,IAAA,eAAe,GAAG,IAAI,eAAe,CAAY,EAAE,CAAC;AACrD,IAAA,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;AAEtD,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAA,CAAA,UAAU,GAAV,UAAU;IAAe;AAE7C,IAAA,aAAa,CAAC,MAA2B,EAAA;AACvC,QAAA,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC;AAC9C,QAAA,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,EAAE;AAC1C,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,mBAAmB,CAAC,QAAQ,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW,GAAG,EAAE,EAAE;QACzF,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAA4B,QAAQ,CAAC;IACjE;AAEA,IAAA,YAAY,CAAC,MAA2B,EAAA;AACtC,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC;AACnC,YAAA,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAI;gBACjB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAC;YACjD,CAAC;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,CAAC;AACF,SAAA,CAAC;IACJ;IAEA,kBAAkB,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK;IACnC;AAEA,IAAA,YAAY,CAAC,EAAU,EAAA;AACrB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAkB,mBAAmB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAClF;AAEA,IAAA,SAAS,CAAC,IAAa,EAAA;AACrB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC;IAC/D;IAEA,SAAS,CAAC,EAAU,EAAE,IAAS,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAkB,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;IACrF;AAEA,IAAA,SAAS,CAAC,EAAU,EAAA;AAClB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/D;AAEA,IAAA,WAAW,CAAC,EAAU,EAAA;QACpB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,WAAW,CAAC,EAAE,CAAC;QACpD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAA2B,QAAQ,CAAC;IAChE;IAEA,YAAY,CAAC,EAAU,EAAE,KAAgB,EAAA;QACvC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,YAAY,CAAC,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAA2B,QAAQ,EAAE,KAAK,CAAC;IACxE;IAEA,cAAc,CAAC,SAAiB,EAAE,OAAe,EAAA;QAC/C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC;QACvE,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC;IACzC;wGAzDW,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cADD,MAAM,EAAA,CAAA;;4FACnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCTrB,gBAAgB,CAAA;AAClB,IAAA,MAAM,GAA4B,MAAM,CAAC,KAAK,kDAAC;AAExD,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,MAAM;IACpB;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;IACvB;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;IACxB;AACD;;MCZY,oBAAoB,CAAA;AACvB,IAAA,OAAO,GAAG,MAAM,CAAoC,IAAI,GAAG,EAAE,mDAAC;AAE7D,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,kDAAC;AAErE,IAAA,QAAQ,CAAC,KAA2B,EAAA;QAClC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAI;AAC7B,YAAA,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC;YACjC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC;AAC9B,YAAA,OAAO,SAAS;AAClB,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,WAAW,CAAC,EAAU,EAAA;QACpB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAI;AAC7B,YAAA,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC;AACjC,YAAA,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;AACpB,YAAA,OAAO,SAAS;AAClB,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;IAC7B;wGAvBW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAApB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cADP,MAAM,EAAA,CAAA;;4FACnB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACElC,MAAM,uBAAuB,GAAG,0BAA0B;AAO1D;;;;;AAKG;MAEU,oBAAoB,CAAA;AAKX,IAAA,UAAA;AAJZ,IAAA,uBAAuB,GAAG,MAAM,CAAgB,IAAI,mEAAC;AAEpD,IAAA,sBAAsB,GAAG,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE;AAE3E,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAA,CAAA,UAAU,GAAV,UAAU;IAAe;AAE7C,IAAA,yBAAyB,CAAC,GAAkB,EAAA;AAC1C,QAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;IAC/D;IAEA,IAAI,GAAA;AACF,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAA4B,oCAAoC,CAAC,CAAC,IAAI,CAC9F,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAI;AACf,YAAA,MAAM,OAAO,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,uBAAuB,CAAC;YACpE,MAAM,MAAM,GAAG,OAAO,EAAE,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG;AACjE,YAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI;QAC9D,CAAC,CAAC,EACF,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,EACjD,UAAU,CAAC,MAAK;;;AAGd,YAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC;AACpC,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC;QACjB,CAAC,CAAC,CACH;IACH;wGA1BW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAApB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cADP,MAAM,EAAA,CAAA;;4FACnB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCdrB,mCAAmC,CAAA;AACrC,IAAA,MAAM,GAA4B,MAAM,CAAC,KAAK,kDAAC;AACxD,IAAA,WAAW,GAAuC,MAAM,CAAC,IAAI,uDAAC;AAE9D,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,MAAM;IACpB;AAEA,IAAA,IAAI,CAAC,WAAwB,EAAA;AAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC;IACnC;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;IAC5B;wGAfW,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAnC,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mCAAmC,cADtB,MAAM,EAAA,CAAA;;4FACnB,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAD/C,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCcrB,6BAA6B,CAAA;AAChC,IAAA,KAAK,GAAG,MAAM,CAAc,IAAI,iDAAC;AACjC,IAAA,YAAY,GAAG,MAAM,CAAqB,IAAI,wDAAC;AAC/C,IAAA,QAAQ,GAAG,MAAM,CAAiB,IAAI,oDAAC;AACvC,IAAA,WAAW,GAAG,MAAM,CAAc,EAAE,uDAAC;AACrC,IAAA,kBAAkB,GAAG,MAAM,CAAmB,IAAI,8DAAC;AACnD,IAAA,cAAc,GAAG,MAAM,CAAsB,EAAE,0DAAC;AAChD,IAAA,gBAAgB,GAAG,MAAM,CAAc,IAAI,GAAG,EAAE,4DAAC;AACjD,IAAA,eAAe,GAAG,MAAM,CAAgB,IAAI,2DAAC;AAC7C,IAAA,YAAY,GAAG,MAAM,CAAC,oBAAoB,wDAAC;;;;;IAM3C,YAAY,GAAwB,EAAE;IAErC,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAEnC,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAE/C,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAE7D,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAEjD,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAEjD,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAEzC,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAEzD,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEvD,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE;AACrC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE;QACjC,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACzF,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7D,IAAA,CAAC,2DAAC;;;;AAKO,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACnC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACvC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe;aAC/B,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE;AACvB,aAAA,MAAM,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAElC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE;QACtC,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AAC3C,YAAA,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC;AAC3D,YAAA,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AAC5B,YAAA,OAAO,cAAc;QACvB;AAEA,QAAA,OAAO,KAAK;AACd,IAAA,CAAC,uDAAC;;;;AAKO,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAClC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACvC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AAEhC,QAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAA+B;QACtD,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AACtC,YAAA,IAAI,EAAE,CAAC,WAAW,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC;gBAAE;AAC5D,YAAA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE;AAC7C,YAAA,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC;QAClC;AAEA,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AAC/D,IAAA,CAAC,sDAAC;IAEF,yBAAyB,CAAC,EAAE,IAAI,EAAkC,EAAA;QAChE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;AAEzB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;QAE1B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE;QAEtC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,WAAW,IAAI,EAAE;AACzD,QAAA,MAAM,iBAAiB,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI;AACtE,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC;AAChC,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,iBAAiB,CAAC;AAE9C,QAAA,MAAM,UAAU,GAAG,2BAA2B,CAC5C,OAAO,CAAC,QAAQ,EAChB,IAAI,CAAC,OAAO,EACZ,OAAO,CAAC,WAAW,CACpB;AACD,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC;QAEnC,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAClC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAa,CACnE;QACD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAExD,QAAA,MAAM,cAAc,GAAG,OAAO,CAAC,eAAe,IAAI,EAAE;AACpD,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;AACpB,YAAA,GAAG,oBAAoB;AACvB,YAAA,KAAK,EAAE,cAAc,CAAC,KAAK,IAAI,GAAG;AAClC,YAAA,MAAM,EAAE,cAAc,CAAC,MAAM,IAAI,GAAG;AACrC,SAAA,CAAC;IACJ;AAEA;;;AAGmE;AACnE,IAAA,sBAAsB,CAAC,OAA2B,EAAA;QAChD,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM;YAAE;AAElD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC/B,QAAA,IAAI,CAAC,OAAO;YAAE;QAEd,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1D,IAAI,OAAO,GAAG,KAAK;AAEnB,QAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE;YACtC,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;AACzC,YAAA,IAAI,CAAC,MAAM;gBAAE;AACb,YAAA,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,cAAc,KAAK,MAAM,CAAC,cAAc,EAAE;AACtF,gBAAA,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;AAC7B,gBAAA,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc;gBAC7C,OAAO,GAAG,IAAI;YAChB;QACF;AAEA,QAAA,IAAI,CAAC,OAAO;YAAE;AAEd,QAAA,MAAM,UAAU,GAAG,2BAA2B,CAC5C,OAAO,CAAC,QAAQ,EAChB,IAAI,CAAC,YAAY,EACjB,OAAO,CAAC,WAAW,CACpB;AACD,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC;IACrC;AAEA,IAAA,UAAU,CAAC,OAAuB,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;IAC5B;AAEA,IAAA,gBAAgB,CAAC,IAAyB,EAAA;AACxC,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;IAC/B;AAEA,IAAA,cAAc,CAAC,WAA+B,EAAA;AAC5C,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC;IACpC;AAEA,IAAA,OAAO,CAAC,IAAiB,EAAA;AACvB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;IACtB;AAEA,IAAA,aAAa,CAAC,IAAiB,EAAA;AAC7B,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI;AAC1D,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,iBAAiB,CAAC;AAE9C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE;QACrC,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAClC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAa,CAChE;AACD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACpF,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9C;AAEA,IAAA,oBAAoB,CAAC,EAAU,EAAA;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;QAC7E,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC;IAChD;AAEA,IAAA,eAAe,CAAC,OAAsB,EAAA;AACpC,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE,KAAK,OAAO;YAAE;AACxC,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC;IACnC;AAEA,IAAA,qBAAqB,CAAC,OAAe,EAAA;QACnC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAChD,QAAA,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AACxB,YAAA,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC;gBAAE;AACvB,YAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;QACzB;aAAO;AACL,YAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;QACtB;AACA,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC;IACpC;AAEA,IAAA,cAAc,CAAC,OAAe,EAAA;QAC5B,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC;IAC7C;AAEA,IAAA,iBAAiB,CAAC,IAA0B,EAAA;AAC1C,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;YACpB,GAAG,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,GAAG,IAAI;AACR,SAAA,CAAC;IACJ;wGA3MW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,cAF5B,MAAM,EAAA,CAAA;;4FAEP,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAHzC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCZY,6BAA6B,CAAA;AAChC,IAAA,cAAc,GAAG,MAAM,CAAgB,IAAI,0DAAC;AAC5C,IAAA,WAAW,GAAG,MAAM,CAAgB,IAAI,uDAAC;AACzC,IAAA,cAAc,GAAG,MAAM,CAAgB,IAAI,0DAAC;AAC5C,IAAA,mBAAmB,GAAoC,MAAM,CAAC,IAAI,+DAAC;IAElE,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAErD,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAE/C,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAErD,kBAAkB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAExE,IAAA,gBAAgB,CAAC,KAAoB,EAAA;AACnC,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;IAChC;AAEA,IAAA,aAAa,CAAC,EAAiB,EAAA;AAC7B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;IAC1B;AAEA,IAAA,gBAAgB,CAAC,MAAqB,EAAA;AACpC,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC;IACjC;AAEA,IAAA,qBAAqB,CAAC,MAAgB,EAAA;AACpC,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC;IACtC;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC;IACpC;wGAnCW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,cADhB,MAAM,EAAA,CAAA;;4FACnB,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBADzC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCSrB,8BAA8B,CAAA;AACjC,IAAA,OAAO,GAAG,MAAM,CAAgB,IAAI,mDAAC;AACrC,IAAA,cAAc,GAAG,MAAM,CAAuB,IAAI,0DAAC;AACnD,IAAA,kBAAkB,GAAG,MAAM,CAAgB,IAAI,8DAAC;AAChD,IAAA,SAAS,GAAG,MAAM,CAA0B,IAAI,qDAAC;AACjD,IAAA,aAAa,GAAG,MAAM,CAAgB,IAAI,yDAAC;AAC3C,IAAA,QAAQ,GAAG,MAAM,CAAiB,IAAI,oDAAC;AAC/C;;;;AAIG;AACK,IAAA,aAAa,GAAG,MAAM,CAAyC,IAAI,yDAAC;IAEnE,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAEvC,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAErD,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAE7D,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAE3C,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAEnD,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAEzC,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEnD,IAAA,gBAAgB,GAAwC,QAAQ,CAAC,MAAK;AAC7E,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,QAAA,IAAI,CAAC,CAAC,MAAM,EAAE;YACZ,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,MAAM,CAAC,cAAc;gBAC5B,IAAI,EAAE,wBAAwB,CAAC,MAAM;AACrC,gBAAA,YAAY,EACV,MAAM,CAAC,aAAa,KAAK,kBAAkB,CAAC,UAAU,GAAG,YAAY,GAAG,OAAO;aAClF;QACH;AAEA,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,QAAA,IAAI,CAAC,CAAC,QAAQ,EAAE;YACd,OAAO;AACL,gBAAA,IAAI,EAAE,gBAAgB;gBACtB,KAAK,EAAE,QAAQ,CAAC,cAAc;gBAC9B,IAAI,EAAE,wBAAwB,CAAC,SAAS;AACxC,gBAAA,YAAY,EAAE,OAAO;aACtB;QACH;AAEA,QAAA,MAAM,CAAC,aAAa,EAAE,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3F,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,iBAAiB,EAAE;YAC1C,OAAO;AACL,gBAAA,IAAI,EAAE,iBAAiB;gBACvB,KAAK,EAAE,aAAa,CAAC,KAAK;gBAC1B,IAAI,EAAE,wBAAwB,CAAC,cAAc;AAC7C,gBAAA,YAAY,EAAE,OAAO;aACtB;QACH;AAEA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,IAAI,CAAC,CAAC,OAAO,EAAE;YACb,OAAO;AACL,gBAAA,IAAI,EAAE,OAAO,CAAC,iBAAiB,EAAE,IAAI,IAAI,aAAa;gBACtD,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,mBAAmB,IAAI,CAAC,CAAC;gBAClE,IAAI,EAAE,wBAAwB,CAAC,GAAG;AAClC,gBAAA,YAAY,EAAE,YAAY;AAC1B,gBAAA,gBAAgB,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,kBAAkB;aAClE;QACH;AAEA,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;AACxC,QAAA,IAAI,CAAC,CAAC,YAAY,EAAE;YAClB,OAAO;AACL,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,KAAK,EAAE,GAAG;gBACV,IAAI,EAAE,wBAAwB,CAAC,YAAY;AAC3C,gBAAA,YAAY,EAAE,YAAY;AAC1B,gBAAA,gBAAgB,EAAE,CAAC,CAAC,YAAY,CAAC,kBAAkB;aACpD;QACH;AAEA,QAAA,OAAO,IAAI;AACb,IAAA,CAAC,4DAAC;AAEO,IAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;AAC5C,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI;AACtC,IAAA,CAAC,gEAAC;AAEO,IAAA,qBAAqB,GAAG,QAAQ,CAAC,MAAK;QAC7C,OAAO,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK,IAAI,SAAS;AACpD,IAAA,CAAC,iEAAC;AAEF,IAAA,SAAS,CAAC,MAAqB,EAAA;AAC7B,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;IAC1B;AAEA,IAAA,gBAAgB,CAAC,aAAmC,EAAA;AAClD,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC;IACxC;AAEA,IAAA,oBAAoB,CAAC,IAAmB,EAAA;AACtC,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;IACnC;AAEA,IAAA,WAAW,CAAC,QAAiC,EAAA;AAC3C,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC9B;AAEA,IAAA,eAAe,CAAC,IAAmB,EAAA;AACjC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;IAC9B;AAEA;;;;;AAKG;AACH,IAAA,UAAU,CAAC,IAAoB,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;IACzB;AAEA;;;AAGG;AACH,IAAA,eAAe,CAAC,YAAoD,EAAA;AAClE,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC;IACtC;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;AACjC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;IAC9B;wGA3IW,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAA9B,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,8BAA8B,cADjB,MAAM,EAAA,CAAA;;4FACnB,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAD1C,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCOrB,sBAAsB,CAAA;AACzB,IAAA,kBAAkB,GAAG,MAAM,CAAC,6BAA6B,CAAC;AAC1D,IAAA,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AACnD,IAAA,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AACnD,IAAA,uBAAuB,GAAG,MAAM,CAAC,6BAA6B,CAAC;AAC/D,IAAA,wBAAwB,GAAG,MAAM,CAAC,8BAA8B,CAAC;AACjE,IAAA,eAAe,GAAG,MAAM,CAA0C,IAAI,GAAG,EAAE,2DAAC;AAC5E,IAAA,WAAW,GAAG,MAAM,CAAsB,EAAE,uDAAC;AAC7C,IAAA,gBAAgB,GAA2C,MAAM,CAAC,IAAI,GAAG,EAAE,4DAAC;AAC5E,IAAA,uBAAuB,GAA2C,MAAM,CAAC,IAAI,GAAG,EAAE,mEAAC;AACnF,IAAA,SAAS,GAA8B,MAAM,CAAC,EAAE,qDAAC;AACjD,IAAA,kBAAkB,GAAwC,MAAM,CAAC,IAAI,GAAG,EAAE,8DAAC;AAE1E,IAAA,eAAe,GAAG,QAAQ,CAAsB,MAAK;AAC5D,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACnC,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrD,IAAA,CAAC,2DAAC;AAEO,IAAA,sBAAsB,GAAG,QAAQ,CAAsB,MAAK;AACnE,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,uBAAuB,EAAE;AAC1C,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrD,IAAA,CAAC,kEAAC;AAEO,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,yDAAC;AAE5D,IAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC,IAAI,gEAAC;IAE1E,iBAAiB,GAAG,QAAQ,CAAyB,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAEnF,wBAAwB,GAAG,QAAQ,CAAW,MACrD,IAAI,CAAC,sBAAsB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,0BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAC/C;IAEQ,oBAAoB,GAAG,QAAQ,CAAW,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;;;AAKxF,IAAA,YAAY,GAAG,QAAQ,CAAsB,MAAK;AACzD,QAAA,MAAM,UAAU,GAAG,IAAI,GAAG,EAA+B;QACzD,MAAM,MAAM,GAAwB,EAAE;QAEtC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;YAC3C,IAAI,MAAM,CAAC,YAAY,KAAK,kBAAkB,CAAC,IAAI,EAAE;AACnD,gBAAA,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE;AAC9D,gBAAA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;gBAClB,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,mBAAmB,EAAE,KAAK,CAAC;YACnD;iBAAO;AACL,gBAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YACrB;QACF;QAEA,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,MAAM,EAAE,EAAE;AACvC,YAAA,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;QACzD;AAEA,QAAA,OAAO,MAAM;AACf,IAAA,CAAC,wDAAC;IAEO,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAE3C,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE7D,IAAA,sBAAsB,GAAG,QAAQ,CAAqC,MAAK;QAClF,MAAM,OAAO,GAAuC,EAAE;QACtD,IAAI,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAI;AACjD,YAAA,IAAI,QAAQ,GAAG,CAAC,EAAE;gBAChB,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;YAChC;AACF,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,OAAO;AAChB,IAAA,CAAC,kEAAC;AAEO,IAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC,MAAM,gEAAC;AAE3E,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAClC,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,WAAW,IAAI,GAAG,CAAC;AACnE,IAAA,CAAC,sDAAC;AAEF,IAAA,UAAU,CAAC,OAA4B,EAAA;AACrC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC;IAC/B;AAEA;;;;AAI2E;AAC3E,IAAA,sBAAsB,CAAC,OAA2B,EAAA;QAChD,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE;QAErB,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;QAClC,IAAI,OAAO,GAAG,KAAK;AAEnB,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC5B,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;AACzC,YAAA,IAAI,CAAC,MAAM;gBAAE;AACb,YAAA,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,cAAc,KAAK,MAAM,CAAC,cAAc,EAAE;AACtF,gBAAA,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;AAC7B,gBAAA,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc;gBAC7C,OAAO,GAAG,IAAI;YAChB;QACF;QAEA,IAAI,OAAO,EAAE;;;;YAIX,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;QACpC;IACF;AAEA,IAAA,WAAW,CAAC,QAAmB,EAAA;AAC7B,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC9B;IAEA,qBAAqB,CAAC,SAAiB,EAAE,KAAa,EAAA;QACpD,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,GAAG,KAAI;AACrC,YAAA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;AACxC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;AAC3C,YAAA,IAAI,MAAM,KAAK,CAAC,EAAE;AAChB,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YACxB;iBAAO;AACL,gBAAA,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC;YAC7B;AACA,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,kBAAkB,CAAC,SAAiB,EAAA;QAClC,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;IACtD;AAEQ,IAAA,eAAe,CACrB,MAAyB,EAAA;AAEzB,QAAA,MAAM,KAAK,GAA4D;AACrE,YAAA,CAAC,uBAAuB,CAAC,OAAO,GAAG,IAAI,CAAC,uBAAuB;AAC/D,YAAA,CAAC,uBAAuB,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB;SAC3D;QAED,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI;IACrC;AAEA,IAAA,kBAAkB,CAAC,OAA4B,EAAA;QAC7C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7C;AAEA,IAAA,MAAM,CAAC,MAAyB,EAAA;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;AACzC,QAAA,IAAI,CAAC,IAAI;YAAE;QAEX,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;AACnC,QAAA,IAAI,IAAI,KAAK,IAAI,CAAC,gBAAgB,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE;YAC/E,IAAI,CAAC,0BAA0B,EAAE;YACjC;QACF;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAI;AAClB,YAAA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;AACzB,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AACpB,gBAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACrB;iBAAO;AACL,gBAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;YAClB;AACA,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,MAAM,CAAC,MAAyB,EAAA;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;AACzC,QAAA,IAAI,CAAC,IAAI;YAAE;AAEX,QAAA,IACE,IAAI,KAAK,IAAI,CAAC,gBAAgB;AAC9B,YAAA,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;AACnB,YAAA,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAC9B;YACA,IAAI,CAAC,0BAA0B,EAAE;YACjC;QACF;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAI;AAClB,YAAA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;AACzB,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AAChB,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,QAAQ,CAAC,MAAyB,EAAA;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;QAEzC,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAI;AAClB,gBAAA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;AACzB,gBAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AACnB,gBAAA,OAAO,IAAI;AACb,YAAA,CAAC,CAAC;QACJ;IACF;IAEA,qBAAqB,GAAA;QACnB,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;IAC7C;IAEA,cAAc,GAAA;QACZ,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;QACpC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;QACnC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;AACtC,QAAA,IAAI,CAAC,uBAAuB,CAAC,cAAc,EAAE;AAC7C,QAAA,IAAI,CAAC,wBAAwB,CAAC,cAAc,EAAE;IAChD;AAEA,IAAA,UAAU,CAAC,MAAyB,EAAA;QAClC,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;IAC5C;;;;IAKA,gBAAgB,CAAC,SAAiB,EAAE,WAAmB,EAAA;QACrD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,KAAI;AAClC,YAAA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;AACpC,YAAA,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE;gBAClB,SAAS;AACT,gBAAA,aAAa,EAAE,QAAQ,EAAE,aAAa,IAAI,CAAC;gBAC3C,WAAW;AACZ,aAAA,CAAC;AACF,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,UAAU,CAAC,SAAiB,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,WAAW,IAAI,CAAC;IAChE;AAEA,IAAA,oBAAoB,CAAC,SAAiB,EAAA;AACpC,QAAA,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,aAAa,IAAI,CAAC;IAClE;;;;IAKA,eAAe,CAAC,SAAiB,EAAE,MAAc,EAAA;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC;AACpD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO;AACvD,QAAA,IAAI,KAAK,KAAK,CAAC,EAAE;AACf,YAAA,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC;QAC3C;IACF;IAEA,kBAAkB,CAAC,SAAiB,EAAE,KAAa,EAAA;AACjD,QAAA,IAAI,KAAK,GAAG,CAAC,EAAE;AACb,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,2BAA2B,EAAE;AACpD,YAAA,IAAI,SAAS,IAAI,CAAC,EAAE;gBAClB,IAAI,CAAC,0BAA0B,EAAE;gBACjC;YACF;YACA,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC;QACpC;AAEA,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW;aACjC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,mBAAmB,KAAK,SAAS;AACjD,aAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,KAAK,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAEzE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,KAAI;AAClC,YAAA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;AACnC,YAAA,IAAI,CAAC,OAAO;AAAE,gBAAA,OAAO,IAAI;YAEzB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC,CAAC;AAC1F,YAAA,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;AAC5D,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,CAAC;QAEF,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;AACnD,QAAA,MAAM,YAAY,GAAG,KAAK,GAAG,KAAK,CAAC,aAAa,GAAG,CAAC;QAEpD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,KAAI;AACnC,YAAA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;AACzB,YAAA,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAE1D,YAAA,IAAI,KAAK,GAAG,CAAC,EAAE;gBACb,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC;AAClF,gBAAA,IAAI,QAAQ;AAAE,oBAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClC;iBAAO,IAAI,KAAK,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC9C,MAAM,YAAY,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;AACxD,gBAAA,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YAC3B;AAEA,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,CAAC;IACJ;;;IAKQ,2BAA2B,GAAA;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,EAAE;QAC9D,IAAI,GAAG,KAAK,IAAI;AAAE,YAAA,OAAO,QAAQ;AACjC,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;IAChD;AAEQ,IAAA,qBAAqB,CAAC,UAAkB,EAAA;AAC9C,QAAA,OAAO,UAAU,IAAI,IAAI,CAAC,2BAA2B,EAAE;IACzD;IAEQ,0BAA0B,GAAA;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,EAAE;AAC9D,QAAA,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;AACjC,YAAA,EAAE,EAAE,wBAAwB;AAC5B,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,KAAK,EAAE,+BAA+B;YACtC,OAAO,EACL,GAAG,IAAI;kBACH,CAAA,yBAAA,EAA4B,GAAG,CAAA,wGAAA;AACjC,kBAAE,iEAAiE;AACvE,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;AACrB,SAAA,CAAC;IACJ;AAEA,IAAA,cAAc,CAAC,SAAiB,EAAA;QAC9B,OAAO,IAAI,CAAC,WAAW;aACpB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,mBAAmB,KAAK,SAAS;AACjD,aAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,KAAK,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3E;IAEA,gBAAgB,CACd,MAAyB,EACzB,WAAmB,EACnB,SAAwB,EACxB,CAAS,EACT,CAAS,EAAA;QAET,OAAO;YACL,CAAC;YACD,CAAC;YACD,WAAW;YACX,SAAS;YACT,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,IAAI,GAAG,CAAC;YACzC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,WAAW,EAAE,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM;YACjE,WAAW,EAAE,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM;AAC1D,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YACnC,QAAQ,EAAE,MAAM,CAAC,EAAE;SACpB;IACH;IAEA,0BAA0B,CACxB,aAAa,GAAG,MAAM,EACtB,aAAa,GAAG,IAAI,EACpB,sBAAsB,GAAG,IAAI,EAAA;QAE7B,MAAM,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,kBAAkB,EAAE;QAEjE,OAAO;AACL,YAAA,UAAU,EAAE,IAAI,CAAC,oBAAoB,EAAE;YACvC,WAAW,EAAE,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,EAAE,IAAI,IAAI,SAAS;YACtE,cAAc,EAAE,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE,IAAI,SAAS;YACzE,mBAAmB,EAAE,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,IAAI,SAAS;AACnF,YAAA,cAAc,EAAE,aAAa;AAC7B,YAAA,OAAO,EAAE;AACP,gBAAA,UAAU,EAAE,OAAO,EAAE,UAAU,IAAI,EAAE;AACrC,gBAAA,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,EAAE;AACnC,gBAAA,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;AAC3B,gBAAA,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,EAAE;AAC7B,gBAAA,aAAa,EAAE,OAAO,EAAE,aAAa,IAAI,EAAE;gBAC3C,eAAe,EAAE,MAAM,CAAC,OAAO,EAAE,eAAe,IAAI,EAAE,CAAC;AACvD,gBAAA,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE;AAC/B,gBAAA,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,CAAC;AAC9B,gBAAA,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,SAAS;AAC9C,gBAAA,aAAa,EAAE,SAAS;AACxB,gBAAA,cAAc,EAAE,aAAa;AAC7B,gBAAA,wBAAwB,EAAE,sBAAsB;AAChD,gBAAA,QAAQ,EAAE,SAAS;AACpB,aAAA;SACF;IACH;wGA7XW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cADT,MAAM,EAAA,CAAA;;4FACnB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCXrB,4BAA4B,CAAA;AAC/B,IAAA,kBAAkB,GAAG,MAAM,CAAC,6BAA6B,CAAC;AAC1D,IAAA,gBAAgB,GAAG,MAAM,CAAC,sBAAsB,CAAC;AACjD,IAAA,wBAAwB,GAAG,MAAM,CAAC,8BAA8B,CAAC;AAEhE,IAAA,sBAAsB,GAAG,QAAQ,CAAqC,MAAK;QAClF,MAAM,OAAO,GAAuC,EAAE;AACtD,QAAA,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAI;AACjE,YAAA,IAAI,QAAQ,GAAG,CAAC,EAAE;gBAChB,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;YAChC;AACF,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,OAAO;AAChB,IAAA,CAAC,kEAAC;AAEO,IAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC,MAAM,gEAAC;AAE3E,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;QACvC,IAAI,KAAK,GAAG,CAAC;QACb,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;AACjD,QAAA,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAI;AACjE,YAAA,IAAI,QAAQ,GAAG,CAAC,EAAE;AAChB,gBAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;gBACjD,IAAI,OAAO,EAAE;AACX,oBAAA,KAAK,IAAI,OAAO,CAAC,KAAK,GAAG,QAAQ;gBACnC;YACF;AACF,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,KAAK;AACd,IAAA,CAAC,2DAAC;AAEO,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,KAAI;YACpE,OAAO,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,IAAI,GAAG,CAAC;QAClD,CAAC,EAAE,CAAC,CAAC;AACP,IAAA,CAAC,0DAAC;AAEF;;;;;AAKG;AACM,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;QAClC,IAAI,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,EAAE,EAAE,gBAAgB,EAAE;AACtE,YAAA,OAAO,CAAC;QACV;AACA,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE;AAC7B,IAAA,CAAC,sDAAC;AAEF;;;;AAIG;AACM,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AACrC,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,WAAW,IAAI,GAAG,CAAC;QAC/E,OAAO,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE;AAC7D,IAAA,CAAC,yDAAC;AAEO,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAK;QAC1C,OAAO,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,EAAE,EAAE,gBAAgB;AAC7E,IAAA,CAAC,8DAAC;AAEF;;;;AAIG;AACM,IAAA,cAAc,GAAG,QAAQ,CAAgB,MAAK;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,EAAE;QACjE,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE;AAE5C,QAAA,IAAI,QAAQ,CAAC,YAAY,KAAK,YAAY,EAAE;YAC1C,OAAO,CAAC,cAAc,GAAG,QAAQ,CAAC,KAAK,IAAI,GAAG;QAChD;QAEA,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;AACjD,IAAA,CAAC,0DAAC;IAEF,aAAa,GAAA;QACX,OAAO,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE;IACvD;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE;AAC5B,YAAA,OAAO,CAAC;QACV;QAEA,OAAO,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE;IACpD;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE;AAC5B,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE;AAC5C,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,EAAE;AAEpD,QAAA,IAAI,CAAC,cAAc,IAAI,CAAC,kBAAkB,EAAE;AAC1C,YAAA,OAAO,IAAI;QACb;;;AAIA,QAAA,MAAM,wBAAwB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,cAAc,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AAE3F,QAAA,IAAI,KAAK,GAAG,wBAAwB,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;AAEjF,QAAA,IAAI,KAAK,GAAG,CAAC,EAAE;YACb,KAAK,GAAG,CAAC;QACX;AAEA,QAAA,OAAO,KAAK;IACd;wGAvHW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAA5B,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,cADf,MAAM,EAAA,CAAA;;4FACnB,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCCrB,oBAAoB,CAAA;AACtB,IAAA,WAAW,GAAG,MAAM,CAAS,CAAC,uDAAC;AAChC,IAAA,KAAK;AACL,IAAA,kBAAkB,GAAG,MAAM,CAAC,6BAA6B,CAAC;AAEjD,IAAA,aAAa,GAAwB;AACpD,QAAA,OAAO,EAAE,GAAG;AACZ,QAAA,OAAO,EAAE,CAAC;AACV,QAAA,QAAQ,EAAE,GAAG;AACb,QAAA,OAAO,EAAE,GAAG;KACb;AAED,IAAA,WAAA,GAAA,EAAe;AAEf;;AAEG;AACH,IAAA,QAAQ,CAAC,KAAY,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;IACpB;AAEA;;AAEG;IACH,MAAM,GAAA;QACJ,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE;QAEjB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CACvB,IAAI,CAAC,aAAa,CAAC,OAAO,EAC1B,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CACjD;AACD,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;IAC1B;AAEA;;AAEG;IACH,OAAO,GAAA;QACL,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE;QAEjB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CACvB,IAAI,CAAC,aAAa,CAAC,OAAO,EAC1B,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CACjD;AACD,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;IAC1B;AAEA;;AAEG;IACH,SAAS,GAAA;QACP,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE;AACjB,QAAA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACnB;AAEA;;AAEG;IACH,iBAAiB,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG;IACnD;AAEA;;AAEG;IACH,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE;IAC3B;AAEA;;AAEG;AACK,IAAA,SAAS,CAAC,QAAgB,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE;QAEjB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACpC,QAAA,MAAM,WAAW,GAAG;YAClB,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;YACzB,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC;SAC3B;AAED,QAAA,MAAM,YAAY,GAAG;AACnB,YAAA,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,QAAQ;AAC9C,YAAA,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,QAAQ;SAC/C;QAED,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC;IAC1D;AAEA;;AAEG;AACK,IAAA,cAAc,CACpB,QAAgB,EAChB,WAAqC,EACrC,YAAsC,EAAA;QAEtC,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE;AAEjB,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;AAE3B,QAAA,MAAM,MAAM,GAAG;YACb,CAAC,EAAE,WAAW,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,GAAG,QAAQ;YAC5C,CAAC,EAAE,WAAW,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,GAAG,QAAQ;SAC7C;AAED,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC3B,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AAEtB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC9B,QAAA,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC;AACxC,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AACjB,YAAA,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AAClB,SAAA,CAAC;IACJ;AAEA;;AAEG;AACH,IAAA,eAAe,CAAC,MAAc,EAAA;QAC5B,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE;AAEjB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE;AAC/C,QAAA,IAAI,CAAC,OAAO;YAAE;AAEd,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO;AAC1C,QAAA,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;AACrC,QAAA,MAAM,QAAQ,GAAG,SAAS,GAAG,CAAC,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO;AAExE,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,IAAI,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO;YAAE;AAEpF,QAAA,MAAM,YAAY,GAAG;AACnB,YAAA,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,QAAQ;AAC1C,YAAA,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,QAAQ;SAC3C;QAED,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,CAAC;IACtD;AAEA;;AAEG;IACH,cAAc,CAAC,UAAkB,EAAE,EAAA;QACjC,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE;QAEjB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,aAAa;AACxD,QAAA,IAAI,CAAC,WAAW;YAAE;AAElB,QAAA,MAAM,cAAc,GAAG,WAAW,CAAC,WAAW;AAC9C,QAAA,MAAM,eAAe,GAAG,WAAW,CAAC,YAAY;AAChD,QAAA,IAAI,cAAc,KAAK,CAAC,IAAI,eAAe,KAAK,CAAC;YAAE;QAEnD,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE;AACvD,QAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE;AAE7B,QAAA,IAAI,IAAI,GAAG,QAAQ,EACjB,IAAI,GAAG,QAAQ;QACjB,IAAI,IAAI,GAAG,CAAC,QAAQ,EAClB,IAAI,GAAG,CAAC,QAAQ;AAElB,QAAA,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE;AAC3B,YAAA,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW;AACxB,YAAA,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;AACxB,gBAAA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC7B,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YACnD;AACA,YAAA,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;AACxB,gBAAA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC7B,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACpD;QACF;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE;AAErB,QAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI;AAC5B,QAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI;AAC5B,QAAA,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,IAAI,CAAC;YAAE;QAEpC,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;gBACd,IAAI,CAAC,WAAW,CACd,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,EACvD,cAAc,EACd,eAAe,EACf,OAAO,CACR;YACH;AACF,QAAA,CAAC,CAAC;IACJ;AAEA;;AAEG;IACH,gBAAgB,GAAA;QACd,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACtC,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;IAC9B;AAEA;;AAEG;AACH,IAAA,gBAAgB,CAAC,QAAkC,EAAA;QACjD,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE;AACjB,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC7B,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;IACxB;AAEA;;;AAGG;IACH,WAAW,CACT,aAAsE,EACtE,cAAsB,EACtB,eAAuB,EACvB,UAAkB,EAAE,EAAA;QAEpB,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE;QAEjB,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QAEpC,MAAM,MAAM,GAAG,CAAC,cAAc,GAAG,OAAO,GAAG,CAAC,IAAI,QAAQ;QACxD,MAAM,MAAM,GAAG,CAAC,eAAe,GAAG,OAAO,GAAG,CAAC,IAAI,QAAQ;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;QAEzC,MAAM,OAAO,GAAG,CAAC,cAAc,GAAG,QAAQ,GAAG,QAAQ,IAAI,CAAC;QAC1D,MAAM,OAAO,GAAG,CAAC,eAAe,GAAG,QAAQ,GAAG,QAAQ,IAAI,CAAC;AAE3D,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AAClB,YAAA,CAAC,EAAE,OAAO,GAAG,CAAC,GAAG,QAAQ;AACzB,YAAA,CAAC,EAAE,OAAO,GAAG,CAAC,GAAG,QAAQ;AAC1B,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AAEtB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC9B,QAAA,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC;AACxC,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AACjB,YAAA,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AAClB,SAAA,CAAC;IACJ;wGAzPW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAApB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cADP,MAAM,EAAA,CAAA;;4FACnB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACD5B,MAAO,6BAA8B,SAAQ,gBAAgB,CAAA;wGAAtD,6BAA6B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,cADhB,MAAM,EAAA,CAAA;;4FACnB,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBADzC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACOlC,MAAME,yBAAuB,GAAG,IAAI;AACpC,MAAMC,wBAAsB,GAAG,KAAK;AAEpC;;;;;;;;;AASG;MAEU,0BAA0B,CAAA;AAS3B,IAAA,UAAA;AACA,IAAA,kBAAA;AACA,IAAA,sBAAA;AACqB,IAAA,UAAA;AACc,IAAA,MAAA;IAZrC,WAAW,GAAuB,IAAI;IACtC,cAAc,GAAyC,IAAI;IAC3D,iBAAiB,GAAG,CAAC;IACrB,oBAAoB,GAAkB,IAAI;IAC1C,cAAc,GAAG,KAAK;IACtB,OAAO,GAAG,IAAI;IAEtB,WAAA,CACU,UAAsB,EACtB,kBAAiD,EACjD,sBAA8C,EACzB,UAAkB,EACJ,MAA+B,EAAA;QAJlE,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,sBAAsB,GAAtB,sBAAsB;QACD,IAAA,CAAA,UAAU,GAAV,UAAU;QACI,IAAA,CAAA,MAAM,GAAN,MAAM;IAChD;AAEH,IAAA,OAAO,CAAC,aAAqB,EAAE,IAAA,GAA8B,EAAE,EAAA;QAC7D,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa;YAAE;QAE3D,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,IAAI,CAAC,oBAAoB,GAAG,aAAa;QACzC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO;AACpC,QAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC;QAC1B,IAAI,CAAC,cAAc,EAAE;IACvB;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;AAChC,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC;AACjC,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;QAC5B;AACA,QAAA,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE;AACzB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;IACzB;IAEQ,cAAc,GAAA;AACpB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB;AAC/C,QAAA,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO;YAAE;AAEpC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC;AACvB,cAAE,uBAAuB,CAAC,qBAAqB,CAAC,aAAa;AAC7D,cAAE,uBAAuB,CAAC,gBAAgB,CAAC,aAAa,CAAC;AAE3D,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CAAmD,WAAW,EAAE,EAAE;AACtE,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC;AACjE,YAAA,KAAK,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;AACtC,SAAA,CAAC;IACN;IAEQ,WAAW,CAAC,aAAqB,EAAE,MAA0B,EAAA;QACnE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,oBAAoB,KAAK,aAAa;YAAE;QAE5E,MAAM,KAAK,GAAG,uBAAuB,CAAC,UAAU,CAAC,aAAa,CAAC;AAC/D,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAA,EAAG,KAAK,WAAW,kBAAkB,CAAC,MAAM,CAAC,EAAE;AAChF,QAAA,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC;AACxC,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;AAE9B,QAAA,WAAW,CAAC,SAAS,GAAG,CAAC,KAA2B,KAAI;AACtD,YAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC;AAC1B,YAAA,IAAI;gBACF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAqB;AAC1D,gBAAA,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE;oBAC/B,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,OAAO,CAAC,OAAO,CAAC;oBAC/D,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,OAAO,CAAC,OAAO,CAAC;gBACrE;;YAEF;AAAE,YAAA,MAAM;;YAER;AACF,QAAA,CAAC;AAED,QAAA,WAAW,CAAC,OAAO,GAAG,MAAK;YACzB,WAAW,CAAC,KAAK,EAAE;AACnB,YAAA,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW;AAAE,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI;YAC7D,IAAI,CAAC,iBAAiB,EAAE;AAC1B,QAAA,CAAC;IACH;IAEQ,iBAAiB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,oBAAoB;YAAE;QAEhD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpBD,yBAAuB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAC7DC,wBAAsB,CACvB;QACD,IAAI,CAAC,iBAAiB,EAAE;AAExB,QAAA,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,MAAK;AACpC,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;YAC1B,IAAI,CAAC,cAAc,EAAE;QACvB,CAAC,EAAE,KAAK,CAAC;IACX;wGAhGW,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,6BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,EAAA,EAAA,KAAA,EAY3B,WAAW,EAAA,EAAA,EAAA,KAAA,EACX,yBAAyB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAbxB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,cADb,MAAM,EAAA,CAAA;;4FACnB,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;0BAa7B,MAAM;2BAAC,WAAW;;0BAClB,MAAM;2BAAC,yBAAyB;;;AC1BrC,MAAM,kBAAkB,GAAG,iBAAiB;AAC5C,MAAM,uBAAuB,GAAG,IAAI;AACpC,MAAM,sBAAsB,GAAG,KAAK;AAEpC;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;MAEU,qBAAqB,CAAA;AAEtB,IAAA,UAAA;AACA,IAAA,oBAAA;AACqB,IAAA,UAAA;AACc,IAAA,MAAA;AAJ7C,IAAA,WAAA,CACU,UAAsB,EACtB,oBAA0C,EACrB,UAAkB,EACJ,MAA+B,EAAA;QAHlE,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;QACC,IAAA,CAAA,UAAU,GAAV,UAAU;QACI,IAAA,CAAA,MAAM,GAAN,MAAM;IAChD;;AAGH,IAAA,mBAAmB,CAAC,KAAc,EAAA;QAChC,QACE,KAAK,YAAY,iBAAiB;YAClC,KAAK,CAAC,MAAM,KAAK,GAAG;YACnB,KAAK,CAAC,KAAa,EAAE,KAAK,EAAE,IAAI,KAAK,0BAA0B;IAEpE;AAEA,IAAA,gBAAgB,CAAC,KAAwB,EAAA;QACvC,MAAM,EAAE,GAAI,KAAK,CAAC,KAAa,EAAE,KAAK,EAAE,cAAc;AACtD,QAAA,OAAO,OAAO,EAAE,KAAK,QAAQ,GAAG,EAAE,GAAG,IAAI;IAC3C;AAEA;;;;;;;AAOG;AACH,IAAA,gBAAgB,CAAC,aAAqB,EAAA;AACpC,QAAA,OAAO,IAAI,UAAU,CAAO,CAAC,UAAU,KAAI;YACzC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;gBACvC,UAAU,CAAC,QAAQ,EAAE;gBACrB;YACF;YAEA,IAAI,WAAW,GAAuB,IAAI;YAC1C,IAAI,cAAc,GAAyC,IAAI;YAC/D,IAAI,iBAAiB,GAAG,CAAC;YACzB,IAAI,OAAO,GAAG,KAAK;YACnB,IAAI,MAAM,GAAG,KAAK;YAElB,MAAM,WAAW,GAAG,MAAW;gBAC7B,IAAI,cAAc,EAAE;oBAClB,YAAY,CAAC,cAAc,CAAC;oBAC5B,cAAc,GAAG,IAAI;gBACvB;gBACA,WAAW,EAAE,KAAK,EAAE;gBACpB,WAAW,GAAG,IAAI;AACpB,YAAA,CAAC;AAED,YAAA,MAAM,gBAAgB,GAAG,CAAC,QAAuB,KAAU;AACzD,gBAAA,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;AACjC,oBAAA,EAAE,EAAE,kBAAkB;AACtB,oBAAA,IAAI,EAAE,SAAS;AACf,oBAAA,KAAK,EAAE,mCAAmC;AAC1C,oBAAA,OAAO,EACL,QAAQ,IAAI,QAAQ,GAAG;0BACnB,CAAA,2BAAA,EAA8B,QAAQ,CAAA,8BAAA;AACxC,0BAAE,kDAAkD;AACxD,oBAAA,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;AACpB,oBAAA,eAAe,EAAE,KAAK;AACtB,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA,CAAC;AACJ,YAAA,CAAC;YAED,MAAM,MAAM,GAAG,MAAW;AACxB,gBAAA,IAAI,OAAO;oBAAE;gBACb,OAAO,GAAG,IAAI;AACd,gBAAA,WAAW,EAAE;AACb,gBAAA,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,kBAAkB,CAAC;gBACzD,UAAU,CAAC,IAAI,EAAE;gBACjB,UAAU,CAAC,QAAQ,EAAE;AACvB,YAAA,CAAC;YAED,MAAM,iBAAiB,GAAG,MAAW;AACnC,gBAAA,IAAI,OAAO;oBAAE;AACb,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,uBAAuB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,iBAAiB,CAAC,EACxD,sBAAsB,CACvB;AACD,gBAAA,iBAAiB,EAAE;AACnB,gBAAA,cAAc,GAAG,UAAU,CAAC,MAAK;oBAC/B,cAAc,GAAG,IAAI;AACrB,oBAAA,MAAM,EAAE;gBACV,CAAC,EAAE,KAAK,CAAC;AACX,YAAA,CAAC;AAED,YAAA,MAAM,WAAW,GAAG,CAAC,MAAc,KAAU;AAC3C,gBAAA,IAAI,OAAO;oBAAE;gBACb,MAAM,KAAK,GAAG,oBAAoB,CAAC,MAAM,CAAC,aAAa,CAAC;AACxD,gBAAA,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAA,EAAG,KAAK,WAAW,kBAAkB,CAAC,MAAM,CAAC,EAAE;AAChF,gBAAA,MAAM,EAAE,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC;gBAC/B,WAAW,GAAG,EAAE;AAEhB,gBAAA,EAAE,CAAC,SAAS,GAAG,CAAC,KAA2B,KAAI;oBAC7C,iBAAiB,GAAG,CAAC;AACrB,oBAAA,IAAI;wBACF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAA0B;AAC/D,wBAAA,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ;4BAAE;AAC/B,wBAAA,IAAI,OAAO,CAAC,MAAM,EAAE;AAClB,4BAAA,MAAM,EAAE;4BACR;wBACF;AACA,wBAAA,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC;oBACpC;AAAE,oBAAA,MAAM;;oBAER;AACF,gBAAA,CAAC;AAED,gBAAA,EAAE,CAAC,OAAO,GAAG,MAAK;oBAChB,EAAE,CAAC,KAAK,EAAE;oBACV,IAAI,WAAW,KAAK,EAAE;wBAAE,WAAW,GAAG,IAAI;AAC1C,oBAAA,iBAAiB,EAAE;AACrB,gBAAA,CAAC;AACH,YAAA,CAAC;YAED,MAAM,MAAM,GAAG,MAAW;AACxB,gBAAA,IAAI,CAAC;qBACF,IAAI,CAAwB,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE;AACxE,qBAAA,SAAS,CAAC;AACT,oBAAA,IAAI,EAAE,CAAC,GAAG,KAAI;wBACZ,MAAM,GAAG,IAAI;AACb,wBAAA,IAAI,GAAG,CAAC,MAAM,EAAE;AACd,4BAAA,MAAM,EAAE;4BACR;wBACF;AACA,wBAAA,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC9B,wBAAA,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;oBACzB,CAAC;AACD,oBAAA,KAAK,EAAE,MAAM,iBAAiB,EAAE;AACjC,iBAAA,CAAC;AACN,YAAA,CAAC;AAED,YAAA,MAAM,EAAE;AAER,YAAA,OAAO,MAAK;AACV,gBAAA,IAAI,OAAO;oBAAE;AACb,gBAAA,WAAW,EAAE;AACb,gBAAA,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,kBAAkB,CAAC;gBACzD,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAK,EAAE,CAAC,EAAE,CAAC;gBACpG;AACF,YAAA,CAAC;AACH,QAAA,CAAC,CAAC;IACJ;wGAlJW,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAL,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,oBAAA,EAAA,EAAA,EAAA,KAAA,EAItB,WAAW,EAAA,EAAA,EAAA,KAAA,EACX,yBAAyB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AALxB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cADR,MAAM,EAAA,CAAA;;4FACnB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;0BAK7B,MAAM;2BAAC,WAAW;;0BAClB,MAAM;2BAAC,yBAAyB;;;MCtCxB,eAAe,CAAA;AACN,IAAA,UAAA;AAApB,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAA,CAAA,UAAU,GAAV,UAAU;IAAe;AAE7C,IAAA,YAAY,CAAC,UAAkB,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAkB,uBAAuB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAChG;AAEA,IAAA,cAAc,CAAC,UAAkB,EAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAkB,uBAAuB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC5F;AAEA,IAAA,iBAAiB,CAAC,UAAkB,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,uBAAuB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC/E;AAEA,IAAA,mBAAmB,CAAC,UAAkB,EAAA;AACpC,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,uBAAuB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACjF;wGAjBW,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAN,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAf,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA;;4FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCLY,oBAAoB,CAAA;AAC/B,IAAA,MAAM,GAA4B,MAAM,CAAC,KAAK,kDAAC;AAC/C,IAAA,UAAU,GAAkC,MAAM,CAAC,IAAI,sDAAC;AACxD,IAAA,iBAAiB,GAAkC,MAAM,CAAC,IAAI,6DAAC;IAE/D,IAAI,CAAC,UAAkB,EAAE,WAAoB,EAAA;AAC3C,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;QAC/B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC;AAC/C,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;IACvB;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;IAClC;wGAfW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAApB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cADP,MAAM,EAAA,CAAA;;4FACnB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCerB,cAAc,CAAA;AACL,IAAA,UAAA;AAApB,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAA,CAAA,UAAU,GAAV,UAAU;IAAe;IAE7C,MAAM,GAAA;QACJ,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAA2B,oBAAoB,CAAC,MAAM,CAAC;IACnF;AAEA,IAAA,QAAQ,CAAC,IAAS,EAAA;AAChB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAmB,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC;IACpF;AAEA,IAAA,QAAQ,CAAC,IAAS,EAAA;AAChB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAmB,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC;IACpF;IAEA,QAAQ,CAAC,SAA8B,EAAE,EAAA;AACvC,QAAA,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC;AAC9C,QAAA,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,EAAE;AAC1C,QAAA,MAAM,KAAK,GAAG,CAAA,EAAG,oBAAoB,CAAC,OAAO,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW,GAAG,EAAE,EAAE;QACtF,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAmB,KAAK,CAAC;IACrD;AAEA,IAAA,YAAY,CAAC,EAAU,EAAA;AACrB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAkB,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/E;AAEA,IAAA,aAAa,CAAC,IAA2B,EAAA;AACvC,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAmB,oBAAoB,CAAC,aAAa,EAAE,IAAI,CAAC;IACzF;IAEA,aAAa,CAAC,EAAU,EAAE,IAAS,EAAA;AACjC,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAmB,oBAAoB,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;IAC7F;IAEA,YAAY,CAAC,EAAU,EAAE,MAAqB,EAAA;AAC5C,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAkB,oBAAoB,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE;YACnF,MAAM;AACP,SAAA,CAAC;IACJ;AAEA,IAAA,WAAW,CAAC,EAAU,EAAA;AACpB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAkB,oBAAoB,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACzF;IAEA,iBAAiB,CAAC,EAAU,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,EAAA;AAChD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CACxB,GAAG,oBAAoB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA,MAAA,EAAS,IAAI,UAAU,KAAK,CAAA,CAAE,CACvE;IACH;wGAhDW,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cADD,MAAM,EAAA,CAAA;;4FACnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACdlC;;;;;;;;;;;;AAYG;MAEU,qBAAqB,CAAA;AACf,IAAA,aAAa,GAAwC,MAAM,CAAC,IAAI,GAAG,EAAE,yDAAC;AACtE,IAAA,cAAc,GAAG,IAAI,GAAG,EAAkB;AAElD,IAAA,OAAO,GAAgC,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE;AACtE,IAAA,WAAW,GAAmB,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,uDAAC;AACvE,IAAA,UAAU,GAAoB,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,GAAG,CAAC,sDAAC;AAEpF;;;;;;;;;;AAUG;AACH,IAAA,SAAS,CAAC,EAAU,EAAE,aAAqB,EAAE,QAAgB,EAAA;QAC3D,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAChC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE,aAAa,CAAC;QAC5C;QAEA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QAE1C,IAAI,QAAQ,KAAK,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAC5C,YAAA,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;AACf,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC;aAAO;AACL,YAAA,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC;QACxB;AAEA,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;IAC9B;AAEA,IAAA,eAAe,CAAC,EAAU,EAAA;QACxB,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IACrC;;AAGA,IAAA,OAAO,CAAC,EAAU,EAAA;QAChB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;AAC1C,QAAA,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;AACf,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;IAChC;;IAGA,UAAU,GAAA;QACR,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;AACjC,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;IAC7B;;IAGA,cAAc,GAAA;QACZ,IAAI,CAAC,UAAU,EAAE;IACnB;wGAzDW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAArB,qBAAqB,EAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC;;;MCTY,eAAe,GAAsB,CAAC,GAAG,EAAE,IAAI,KAAI;AAC9D,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AACtC,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,yBAAyB,CAA4B;AAE3E,IAAA,IAAI,iBAAiB,CAAC,UAAU,CAAC,EAAE;AACjC,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,cAAc,IAAI,cAAc;QACnD,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;QACvC,IAAI,KAAK,EAAE;AACT,YAAA,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC;AACd,gBAAA,UAAU,EAAE,EAAE,aAAa,EAAE,CAAA,OAAA,EAAU,KAAK,EAAE,EAAE;AACjD,aAAA,CAAC;QACJ;IACF;AAEA,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC;AAClB;;MCVa,kBAAkB,CAAA;AACnB,IAAA,OAAO,GAAG,IAAI,YAAY,EAAQ;IACnC,QAAQ,GAAY,KAAK;IACzB,OAAO,GAAY,KAAK;IACxB,IAAI,GAAwB,QAAQ;IACpC,OAAO,GAAqE,SAAS;IACrF,IAAI,GAAW,EAAE;IACjB,IAAI,GAA8B,IAAI;IACtC,WAAW,GAAW,EAAE;IACxB,IAAI,GAAW,EAAE;IACjB,OAAO,GAAW,EAAE;IAE7B,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;IACrB;AAEA,IAAA,IAAI,aAAa,GAAA;QACf,OAAO;YACL,KAAK;YACL,CAAA,IAAA,EAAO,IAAI,CAAC,OAAO,CAAA,CAAE;YACrB,CAAA,IAAA,EAAO,IAAI,CAAC,IAAI,CAAA,CAAE;YAClB,IAAI,CAAC,QAAQ,GAAG,cAAc,GAAG,EAAE;YACnC,IAAI,CAAC,OAAO,GAAG,aAAa,GAAG,EAAE;AAClC;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;wGA1BW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECX/B,mZAkBA,EAAA,MAAA,EAAA,CAAA,k2CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDXY,YAAY,+HAAE,cAAc,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,SAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAI3B,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,cACV,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,cAAc,CAAC,EAAA,QAAA,EAAA,mZAAA,EAAA,MAAA,EAAA,CAAA,k2CAAA,CAAA,EAAA;;sBAKtC;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;MEPU,sBAAsB,CAAA;IACxB,QAAQ,GAAY,KAAK;IACzB,OAAO,GAAY,KAAK;IACxB,MAAM,GAA4C,OAAO;IACzD,IAAI,GAAW,EAAE;IACjB,IAAI,GAAW,EAAE;IACjB,WAAW,GAAW,EAAE;IACxB,KAAK,GAAW,EAAE;IAClB,WAAW,GAAwB,EAAE;IACrC,IAAI,GAA8B,IAAI;IACtC,OAAO,GAAqE,SAAS;IACrF,OAAO,GAAW,EAAE;AAE7B,IAAA,IAAI,aAAa,GAAA;QACf,OAAO;YACL,KAAK;YACL,CAAA,IAAA,EAAO,IAAI,CAAC,OAAO,CAAA,CAAE;YACrB,CAAA,IAAA,EAAO,IAAI,CAAC,IAAI,CAAA,CAAE;YAClB,IAAI,CAAC,QAAQ,GAAG,cAAc,GAAG,EAAE;YACnC,IAAI,CAAC,OAAO,GAAG,aAAa,GAAG,EAAE;AAClC;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;wGAvBW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdnC,mSAcA,EAAA,MAAA,EAAA,CAAA,k2CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDLY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,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,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,SAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAKtE,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBARlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cACf,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,CAAC,EAAA,aAAA,EAGnE,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,mSAAA,EAAA,MAAA,EAAA,CAAA,k2CAAA,CAAA,EAAA;;sBAGpC;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;MEbU,iBAAiB,CAAA;IACnB,IAAI,GAA6C,SAAS;IAC1D,IAAI,GAAW,EAAE;IACjB,SAAS,GAAY,KAAK;IAC1B,IAAI,GAA8B,IAAI;AAE/C,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI;IACnD;wGARW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZ9B,kUAYA,EAAA,MAAA,EAAA,CAAA,syBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDLY,YAAY,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAKX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAR7B,SAAS;+BACE,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,aAAA,EAGR,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,kUAAA,EAAA,MAAA,EAAA,CAAA,syBAAA,CAAA,EAAA;;sBAGpC;;sBACA;;sBACA;;sBACA;;;MEKU,iBAAiB,CAAA;IACnB,KAAK,GAAW,EAAE;IAClB,YAAY,GAAY,KAAK;IAC7B,UAAU,GAAY,IAAI;IAC1B,eAAe,GAAY,IAAI;IAC/B,SAAS,GAAY,IAAI;IACzB,gBAAgB,GAAY,IAAI;AAChC,IAAA,MAAM,GAA4B,MAAM,CAAC,KAAK,kDAAC;IAC/C,IAAI,GAAc,IAAI;AACrB,IAAA,UAAU,GAAG,IAAI,YAAY,EAAQ;IAE/C,YAAY,GAAA;QACV,IAAI,IAAI,CAAC,YAAY;YAAE;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;IACxB;IAEA,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,YAAY;YAAE;AACjD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;IACxB;IAGA,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACjB,IAAI,CAAC,kBAAkB,EAAE;QAC3B;IACF;wGA1BW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,yBAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrB9B,+tBAuBA,EAAA,MAAA,EAAA,CAAA,qrCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDPY,YAAY,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAKX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAR7B,SAAS;+BACE,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,aAAA,EAGR,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,+tBAAA,EAAA,MAAA,EAAA,CAAA,qrCAAA,CAAA,EAAA;;sBAGpC;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAYA,YAAY;uBAAC,yBAAyB;;;MEjB5B,sBAAsB,CAAA;AACxB,IAAA,MAAM,GAA4B,MAAM,CAAC,KAAK,kDAAC;IAC/C,IAAI,GAAsB,MAAM;IAChC,KAAK,GAAW,EAAE;IAClB,OAAO,GAAW,EAAE;IACpB,UAAU,GAAY,KAAK;IAC3B,eAAe,GAAY,KAAK;IAChC,SAAS,GAAY,KAAK;IAC1B,SAAS,GAAY,KAAK;IAC1B,iBAAiB,GAAW,IAAI;IAChC,UAAU,GAAW,EAAE;AAEtB,IAAA,MAAM,GAAG,IAAI,YAAY,EAAQ;IAEnC,gBAAgB,GAAyC,IAAI;AAErE,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,GAAG,UAAU,GAAG,QAAQ;IACxD;AAEA,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,iBAAiB;IAClD;AAEA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,GAAG,WAAW,GAAG,SAAS;IAC1D;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACnC,IAAI,CAAC,iBAAiB,EAAE;QAC1B;IACF;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,cAAc,EAAE;IACvB;IAEA,UAAU,GAAA;QACR,IAAI,CAAC,cAAc,EAAE;AACrB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpB;IAEQ,iBAAiB,GAAA;QACvB,IAAI,CAAC,cAAc,EAAE;AACrB,QAAA,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,MAAK;YACtC,IAAI,CAAC,UAAU,EAAE;AACnB,QAAA,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC;IAC5B;IAEQ,cAAc,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACnC,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;QAC9B;IACF;wGAxDW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,8XCzBnC,8yCAwCA,EAAA,MAAA,EAAA,CAAA,kuCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDpBY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,iBAAiB,sMAAE,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAKlD,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBARlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,EAAA,aAAA,EAG/C,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,8yCAAA,EAAA,MAAA,EAAA,CAAA,kuCAAA,CAAA,EAAA;;sBAGpC;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;;MExBU,kBAAkB,CAAA;AAuBA,IAAA,SAAA;AACnB,IAAA,SAAA;IAvBD,KAAK,GAAG,EAAE;IACV,IAAI,GAAG,MAAM;IACb,IAAI,GAAG,EAAE;IACT,EAAE,GAAG,EAAE;IACP,WAAW,GAAG,EAAE;IAChB,QAAQ,GAAG,KAAK;IAChB,QAAQ,GAAG,KAAK;IAChB,SAAS,GAAkB,IAAI;IAC/B,SAAS,GAAkB,IAAI;IAC/B,GAAG,GAAkB,IAAI;IACzB,GAAG,GAAkB,IAAI;IACzB,IAAI,GAAkB,CAAC;IACvB,OAAO,GAAkB,IAAI;IAC7B,eAAe,GAAW,EAAE;IAC5B,YAAY,GAAW,IAAI;IAEpC,KAAK,GAAQ,EAAE;IACf,QAAQ,GAAG,KAAK;AAChB,IAAA,QAAQ,GAAQ,MAAK,EAAE,CAAC;AACxB,IAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;IAEzB,WAAA,CAC6B,SAAoB,EACvC,SAA2B,EAAA;QADR,IAAA,CAAA,SAAS,GAAT,SAAS;QAC5B,IAAA,CAAA,SAAS,GAAT,SAAS;AAEjB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;QACrC;IACF;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;IACpB;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC5B;AAEA,IAAA,OAAO,CAAC,KAAU,EAAA;AAChB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACpB,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI;IAC7B;AAEA,IAAA,IAAI,SAAS,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO;AAAE,YAAA,OAAO,KAAK;AAC5D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO;AACtC,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAC3B,QAAA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO;AAC/B,QAAA,OAAO,OAAO,CAAC,OAAO,GAAG,KAAK,IAAI,OAAO,GAAG,KAAK;IACnD;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM;AAAE,YAAA,OAAO,EAAE;AAEtC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM;QACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAEvC,QAAA,IAAI,QAAQ,KAAK,WAAW,EAAE;AAC5B,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,sBAAsB,EAAE;AACtD,gBAAA,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc;AACxC,aAAA,CAAC;QACJ;AAEA,QAAA,IAAI,QAAQ,KAAK,WAAW,EAAE;AAC5B,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,sBAAsB,EAAE;AACtD,gBAAA,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc;AACxC,aAAA,CAAC;QACJ;AAEA,QAAA,IAAI,QAAQ,KAAK,OAAO,EAAE;YACxB,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,kBAAkB,CAAC;QACrD;QAEA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA,WAAA,EAAc,QAAQ,CAAA,CAAE,CAAC;IAC3D;AAEA,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,SAAS,GAAG,mBAAmB,GAAG,kBAAkB;IAClE;AAEA,IAAA,IAAI,iBAAiB,GAAA;QACnB,IAAI,WAAW,GAAG,EAAE;AAEpB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,WAAW,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,eAAe,EAAE;QAC3C;aAAO;YACL,WAAW,IAAI,SAAS;QAC1B;AAEA,QAAA,OAAO,WAAW;IACpB;wGAxGW,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,4XCb/B,ogCA0CA,EAAA,MAAA,EAAA,CAAA,83BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDjCY,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,sEAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,8BAAE,mBAAmB,EAAA,CAAA,EAAA,CAAA;;4FAI7C,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;+BACE,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,OAAA,EACP,CAAC,WAAW,EAAE,YAAY,EAAE,mBAAmB,CAAC,EAAA,QAAA,EAAA,ogCAAA,EAAA,MAAA,EAAA,CAAA,83BAAA,CAAA,EAAA;;0BA2BtD;;0BAAQ;;sBAtBV;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;MEAU,2BAA2B,CAAA;AAa5B,IAAA,EAAA;AACA,IAAA,yBAAA;AACE,IAAA,SAAA;AAdZ,IAAA,sBAAsB;AAEtB;;;;;;AAMG;IACH,IAAI,GAA2B,OAAO;AAEtC,IAAA,WAAA,CACU,EAAe,EACf,yBAAoD,EAClD,SAA2B,EAAA;QAF7B,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,yBAAyB,GAAzB,yBAAyB;QACvB,IAAA,CAAA,SAAS,GAAT,SAAS;QAEnB,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YAC1C,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC9C,SAAA,CAAC;IACJ;AAEA,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,UAAU,EAAE;IACpD;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,iBAAiB,EAAE;IAC3D;AAEA,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,qBAAqB,EAAE;IAC/D;AAEA,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,WAAW;IACnD;AAEA,IAAA,IAAI,mBAAmB,GAAA;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,gBAAgB;AAChE,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB;QAC1C,OAAO,KAAK,KAAK,YAAY;IAC/B;AAEA,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO;IAC9B;;IAGA,YAAY,GAAA;QACV,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE;IACxC;;IAGA,eAAe,GAAA;QACb,IAAI,CAAC,IAAI,CAAC,mBAAmB;YAAE;AAC/B,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO;IACrB;AAEA;;;;AAIG;IACH,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO;IACrB;;IAGA,cAAc,GAAA;QACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,yBAAyB,CAAC,wBAAwB,EAAE;QAC1E,IAAI,QAAQ,EAAE;AACZ,YAAA,QAAQ,EAAE;QACZ;QACA,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE;IACxC;IAEQ,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE;AACnC,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO;IACrB;wGAlFW,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,yBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5BxC,0sFA4FA,EAAA,MAAA,EAAA,CAAA,mvBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED5EI,YAAY,8BACZ,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,IAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,KAAA,EAAA,MAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,iBAAiB,sMACjB,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAMR,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAhBvC,SAAS;+BACE,qBAAqB,EAAA,UAAA,EACnB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,eAAe;wBACf,kBAAkB;wBAClB,kBAAkB;wBAClB,iBAAiB;wBACjB,iBAAiB;qBAClB,EAAA,aAAA,EAGc,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,0sFAAA,EAAA,MAAA,EAAA,CAAA,mvBAAA,CAAA,EAAA;;;MEb1B,iBAAiB,CAAA;IACnB,IAAI,GAAW,EAAE;IACjB,KAAK,GAAe,SAAS;IAC7B,IAAI,GAAc,IAAI;IACtB,QAAQ,GAAY,IAAI;IACxB,eAAe,GAAW,EAAE;IAC5B,SAAS,GAAW,EAAE;wGANpB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECb9B,gSAUA,EAAA,MAAA,EAAA,CAAA,yyBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDFY,YAAY,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAKX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAR7B,SAAS;+BACE,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,aAAA,EAGR,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,gSAAA,EAAA,MAAA,EAAA,CAAA,yyBAAA,CAAA,EAAA;;sBAGpC;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;MERU,yBAAyB,CAAA;IAC3B,IAAI,GAAqB,IAAI;wGAD3B,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXtC,isEA2DA,EAAA,MAAA,EAAA,CAAA,isCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDpDY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA;;4FAIX,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAPrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,cACrB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAA,QAAA,EAAA,isEAAA,EAAA,MAAA,EAAA,CAAA,isCAAA,CAAA,EAAA;;sBAKhC;;;MEOU,qBAAqB,CAAA;AACZ,IAAA,QAAA;AAApB,IAAA,WAAA,CAAoB,QAAkB,EAAA;QAAlB,IAAA,CAAA,QAAQ,GAAR,QAAQ;IAAa;IAEhC,KAAK,GAAW,EAAE;IAClB,IAAI,GAAU,EAAE;IAChB,OAAO,GAAU,EAAE;IACnB,mBAAmB,GAAW,WAAW;IACzC,gBAAgB,GAAiC,EAAE;;IAGnD,SAAS,GAAY,IAAI;IACzB,UAAU,GAAW,CAAC;IACtB,YAAY,GAAW,EAAE;IACzB,WAAW,GAAW,CAAC;IACvB,WAAW,GAAW,EAAE;;AAGvB,IAAA,UAAU,GAAG,IAAI,YAAY,EAAU;AACvC,IAAA,YAAY,GAAG,IAAI,YAAY,EAAU;AACzC,IAAA,cAAc,GAAG,IAAI,YAAY,EAAU;IAErD,eAAe,GAAa,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;;IAGlC,cAAc,GAAY,IAAI;;IAG9B,UAAU,GAAY,IAAI;;IAG1B,SAAS,GAAY,IAAI;AAElC,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;IAC5D;AAEA,IAAA,QAAQ,CAAC,KAAU,EAAA;AACjB,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE;AACd,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK;AAChC,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;QACxB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC;AAEA,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,GAAG,KAAK;QACxC,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE;YAC7C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC;IACF;AAEA,IAAA,cAAc,CAAC,KAAU,EAAA;QACvB,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK;AACnC,QAAA,IAAI,OAAO,KAAK,IAAI,CAAC,YAAY,EAAE;AACjC,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC;YACpB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpC;IACF;AAEQ,IAAA,YAAY,GAAG,IAAI,GAAG,EAAiB;AAE/C,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;QAC3B;IACF;AAEA,IAAA,cAAc,CAAC,GAAQ,EAAA;QACrB,IAAI,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;QAC5C,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC;gBAC5B,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;gBACnD,MAAM,EAAE,IAAI,CAAC,QAAQ;AACtB,aAAA,CAAC;YACF,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC;QACzC;AACA,QAAA,OAAO,WAAW;IACpB;wGA5EW,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnBlC,k+HAyHA,EAAA,MAAA,EAAA,CAAA,ywIAAA,EAAA,83BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED1GY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,sCAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,kCAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAIX,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,UAAA,EACb,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,k+HAAA,EAAA,MAAA,EAAA,CAAA,ywIAAA,EAAA,83BAAA,CAAA,EAAA;;sBAOtB;;sBACA;;sBACA;;sBACA;;sBACA;;sBAGA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAGA;;sBACA;;sBACA;;sBAKA;;sBAGA;;sBAGA;;;AE5CH,MAAM,cAAc,GAAG,EAAE;MASZ,uBAAuB,CAAA;AACP,IAAA,IAAI;IACtB,SAAS,GAAW,GAAG;IACvB,QAAQ,GAAiB,MAAM;IAC/B,SAAS,GAAY,KAAK;AAC1B,IAAA,QAAQ;IAEP,QAAQ,GAAY,KAAK;IAEnC,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;IACvB;AAEA,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC;AACT,aAAA,OAAO,CAAC,UAAU,EAAE,GAAG;AACvB,aAAA,OAAO,CAAC,MAAM,EAAE,GAAG;AACnB,aAAA,IAAI,EAAE;IACX;AAEA,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS;IAC/C;AAEA,IAAA,IAAI,WAAW,GAAA;QACb,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE;YACpC,OAAO,IAAI,CAAC,IAAI;QAClB;AAEA,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,GAAG;IAC3D;AAEA,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC,CAAC;IACjF;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ;IAChC;wGAtCW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdpC,g9BA6BA,EAAA,MAAA,EAAA,CAAA,unDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDnBY,YAAY,8HAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAI5B,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cACf,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,g9BAAA,EAAA,MAAA,EAAA,CAAA,unDAAA,CAAA,EAAA;;sBAKvC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;sBACA;;sBACA;;;AEdH;;;;;;;;;;;AAWG;MAQU,wBAAwB,CAAA;IACR,OAAO,GAAmB,EAAE;AAC9C,IAAA,KAAK;;IAEL,KAAK,GAAG,KAAK;IACb,QAAQ,GAAG,KAAK;AAEf,IAAA,WAAW,GAAG,IAAI,YAAY,EAAO;AAE/C,IAAA,QAAQ,CAAC,QAAa,EAAA;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,QAAQ;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;IACjC;wGAZW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxBrC,sWAWA,EAAA,MAAA,EAAA,CAAA,wSAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDSY,YAAY,8BAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAIxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,cACjB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,WAAW,CAAC,EAAA,QAAA,EAAA,sWAAA,EAAA,MAAA,EAAA,CAAA,wSAAA,CAAA,EAAA;;sBAKnC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBAEA;;sBACA;;sBAEA;;;AE5BH;;;;;;;AAOG;MAQU,oBAAoB,CAAA;IACtB,KAAK,GAAG,CAAC;IACT,OAAO,GAAG,KAAK;IACf,SAAS,GAAG,iBAAiB;IAC7B,YAAY,GAAG,UAAU;AAExB,IAAA,IAAI,GAAG,IAAI,YAAY,EAAQ;AAC/B,IAAA,OAAO,GAAG,IAAI,YAAY,EAAQ;wGAPjC,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClBjC,qpBAwBA,EAAA,MAAA,EAAA,CAAA,6gCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDVY,YAAY,EAAA,CAAA,EAAA,CAAA;;4FAIX,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,UAAA,EACb,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,qpBAAA,EAAA,MAAA,EAAA,CAAA,6gCAAA,CAAA,EAAA;;sBAKtB;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;;MEXU,sBAAsB,CAAA;AACN,IAAA,IAAI;IACtB,IAAI,GAAc,IAAI;AAE/B,IAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;wGAJzB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,mHCdnC,2HAGA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDOY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,iBAAiB,oIAAE,eAAe,EAAA,CAAA,EAAA,CAAA;;4FAI/C,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;+BACE,iBAAiB,EAAA,UAAA,EACf,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,iBAAiB,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,2HAAA,EAAA;;sBAK1D,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;;MEMU,iBAAiB,CAAA;AACD,IAAA,IAAI;IACtB,QAAQ,GAAW,eAAe;AAClC,IAAA,SAAS;AACT,IAAA,eAAe;AAExB,IAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACpC,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAEjC,IAAA,cAAc,CAAC,IAAY,EAAA;AACzB,QAAA,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC;IACvB;wGAXW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtB9B,+pEAyEA,EAAA,MAAA,EAAA,CAAA,o2CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED5DI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAKb,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAb7B,SAAS;+BACE,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,sBAAsB;wBACtB,iBAAiB;wBACjB,eAAe;wBACf,sBAAsB;AACvB,qBAAA,EAAA,QAAA,EAAA,+pEAAA,EAAA,MAAA,EAAA,CAAA,o2CAAA,CAAA,EAAA;;sBAKA,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;sBACA;;;MEhBU,yBAAyB,CAAA;wGAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECVtC,6yBAyBA,EAAA,MAAA,EAAA,CAAA,4lEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDnBY,YAAY,EAAA,CAAA,EAAA,CAAA;;4FAIX,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAPrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,UAAA,EAClB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,6yBAAA,EAAA,MAAA,EAAA,CAAA,4lEAAA,CAAA,EAAA;;;MEOZ,qBAAqB,CAAA;IACvB,OAAO,GAAuB,SAAS;IACvC,KAAK,GAAqB,EAAE;IAC5B,KAAK,GAAoB,OAAO;wGAH9B,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECblC,oqCAqCA,EAAA,MAAA,EAAA,CAAA,wpBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED7BY,YAAY,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAKX,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,aAAA,EAGR,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,oqCAAA,EAAA,MAAA,EAAA,CAAA,wpBAAA,CAAA,EAAA;;sBAGpC;;sBACA;;sBACA;;;MEJU,yBAAyB,CAAA;AAGd,IAAA,SAAA;AAFtB,IAAA,cAAc,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;AAE7B,IAAA,WAAA,CAAsB,SAA2B,EAAA;QAA3B,IAAA,CAAA,SAAS,GAAT,SAAS;IAAqB;AAEpD,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;IACvC;AAEA,IAAA,UAAU,CAAC,IAAY,EAAA;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC;QAClC,iBAAiB,CAAC,IAAI,CAAC;IACzB;wGAZW,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZtC,mUAYA,EAAA,MAAA,EAAA,CAAA,uiBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDJY,YAAY,8BAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAI5B,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAPrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,cACjB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,mUAAA,EAAA,MAAA,EAAA,CAAA,uiBAAA,CAAA,EAAA;;;MEO7B,oBAAoB,CAAA;AAmBrB,IAAA,MAAA;AACE,IAAA,YAAA;;IAlBe,KAAK,GAAsB,EAAE;;IAG7B,QAAQ,GAAG,EAAE;;IAG/B,OAAO,GAAG,EAAE;IACZ,OAAO,GAAG,EAAE;AAEJ,IAAA,uBAAuB,GAAyB;AAC/D,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,WAAW,EAAE,QAAQ;AACrB,QAAA,YAAY,EAAE,SAAS;AACvB,QAAA,QAAQ,EAAE,SAAS;KACpB;IAED,WAAA,CACU,MAAc,EACZ,YAAiC,EAAA;QADnC,IAAA,CAAA,MAAM,GAAN,MAAM;QACJ,IAAA,CAAA,YAAY,GAAZ,YAAY;IACrB;IAEH,QAAQ,GAAA;QACN,IAAI,CAAC,kBAAkB,EAAE;QAEzB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,YAAY,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YACxF,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AAC3B,QAAA,CAAC,CAAC;IACJ;IAEQ,kBAAkB,GAAA;QACxB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC1B,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;YAC1C;AACF,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,eAAe,CAAC,IAAqB,EAAA;QACnC,IAAI,CAAC,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,KAAK;AAE/B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CACtB,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAChG;IACH;AAEA,IAAA,aAAa,CAAC,IAAqB,EAAA;AACjC,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM;IAC5B;wGAlDW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,kKCfjC,qyFA2FA,EAAA,MAAA,EAAA,CAAA,+gHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDhFY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,ofAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAI1C,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;+BACE,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,YAAY,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,qyFAAA,EAAA,MAAA,EAAA,CAAA,+gHAAA,CAAA,EAAA;;sBAMrD,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBAGxB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBAGxB;;sBACA;;;MEXU,oBAAoB,CAAA;AAYT,IAAA,YAAA;;IAVb,KAAK,GAAiB,IAAI;;IAG1B,aAAa,GAAG,EAAE;;AAGjB,IAAA,MAAM,GAAG,IAAI,YAAY,EAAQ;AAE3C,IAAA,iBAAiB,GAA4B,MAAM,CAAC,KAAK,6DAAC;AAE1D,IAAA,WAAA,CAAsB,YAAiC,EAAA;QAAjC,IAAA,CAAA,YAAY,GAAZ,YAAY;IAAwB;IAE1D,iBAAiB,GAAA;QACf,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;IACvD;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpB;AAGA,IAAA,QAAQ,CAAC,KAAY,EAAA;AACnB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA4B;QACjD,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,wBAAwB,CAAC,EAAE;AAC9C,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC;QACnC;IACF;wGA5BW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAG,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbjC,yjEA+DA,EAAA,MAAA,EAAA,CAAA,unHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDtDY,YAAY,8BAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAI5B,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,cACZ,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,yjEAAA,EAAA,MAAA,EAAA,CAAA,unHAAA,CAAA,EAAA;;sBAMvC;;sBAGA;;sBAGA;;sBAcA,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;AEzB5C;;;;;;AAMG;MAeU,oBAAoB,CAAA;IACJ,KAAK,GAAsB,EAAE;IAC7B,QAAQ,GAAG,EAAE;IAC/B,KAAK,GAAiB,IAAI;IAC1B,aAAa,GAAG,EAAE;IAClB,OAAO,GAAG,EAAE;IACZ,OAAO,GAAG,EAAE;AAEX,IAAA,MAAM,GAAG,IAAI,YAAY,EAAQ;wGARhC,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,aAAA,EAAA,eAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/BjC,4hBAeA,EAAA,MAAA,EAAA,CAAA,iaAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDMI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,aAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,oBAAoB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,oBAAoB,8GACpB,2BAA2B,EAAA,QAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,CAAA;;4FAKlB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAdhC,SAAS;+BACE,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,YAAY;wBACZ,gBAAgB;wBAChB,oBAAoB;wBACpB,oBAAoB;wBACpB,2BAA2B;AAC5B,qBAAA,EAAA,QAAA,EAAA,4hBAAA,EAAA,MAAA,EAAA,CAAA,iaAAA,CAAA,EAAA;;sBAKA,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;sBACA;;sBACA;;sBAEA;;;ME3BU,qBAAqB,CAAA;wGAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,6ECZlC,mIAIA,EAAA,MAAA,EAAA,CAAA,2CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDIY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,YAAY,+KAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,aAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAI3C,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;+BACE,mBAAmB,EAAA,UAAA,EACjB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,YAAY,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,mIAAA,EAAA,MAAA,EAAA,CAAA,2CAAA,CAAA,EAAA;;;AEsBzD;AACA,MAAM,uBAAuB,GAAuD;AAClF,IAAA,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;AACrD,IAAA,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;AACtD,IAAA,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;AACtD,IAAA,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;AACtD,IAAA,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE;AACzD,IAAA,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE;CAC1D;AAED;AACA;AACA,MAAM,uBAAuB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC1F,MAAM,qBAAqB,GAA2B;AACpD,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,EAAE,EAAE,CAAC;CACN;AAED;;;;;;;;;;;AAWG;MAoBU,8BAA8B,CAAA;AAmBhC,IAAA,SAAA;AACC,IAAA,QAAA;AACA,IAAA,UAAA;IApBD,KAAK,GAAG,EAAE;IACV,IAAI,GAAG,EAAE;IACT,EAAE,GAAG,EAAE;IACP,WAAW,GAAG,EAAE;IAChB,QAAQ,GAAG,KAAK;IAChB,QAAQ,GAAG,KAAK;IAChB,eAAe,GAAW,EAAE;IAC5B,YAAY,GAA8B,EAAE;;IAE5C,kBAAkB,GAAG,KAAK;IAEnC,KAAK,GAAkB,IAAI;IAC3B,QAAQ,GAAG,KAAK;AAChB,IAAA,QAAQ,GAAQ,MAAK,EAAE,CAAC;AACxB,IAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;AACjB,IAAA,UAAU;AAElB,IAAA,WAAA,CACS,SAA2B,EAC1B,QAAkB,EAClB,UAAsB,EAAA;QAFvB,IAAA,CAAA,SAAS,GAAT,SAAS;QACR,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,UAAU,GAAV,UAAU;IACjB;AAEH,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;AACjC,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACtE;QACA,OAAO,IAAI,CAAC,UAAU;IACxB;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,oBAAoB,CAAC,EAAE;AAC5D,YAAA,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,sBAAsB,EAAE;QACnD;IACF;AAEA,IAAA,IAAY,IAAI,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,YAAY,GAAG,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI;IAC9E;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,UAAU,IAAI,KAAK;IACvC;AAEA,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,YAAY,GAAG,SAAS,GAAG,MAAM;IAC/C;;;AAIA,IAAA,IAAI,SAAS,GAAA;QACX,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,IAAI,IAAI;QAC5C,IAAI,OAAO,KAAK,IAAI;AAAE,YAAA,OAAO,IAAI;QACjC,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC1D,OAAO,OAAO,GAAG,CAAC;QACpB;AACA,QAAA,OAAO,OAAO;IAChB;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,GAAG,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;IAC3E;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC5B;;;;AAKA,IAAA,SAAS,CAAC,KAAoB,EAAA;QAC5B,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE;QACxB,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM;YAAE;AACpD,QAAA,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC;AAAE,YAAA,OAAO;QACjC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAC9B,KAAK,CAAC,cAAc,EAAE;QACxB;IACF;AAEA,IAAA,OAAO,CAAC,QAAgB,EAAA;AACtB,QAAA,IAAI,IAAI,GAAG,QAAQ,IAAI,EAAE;AAEzB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;QACpC;aAAO;YACL,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;QAC1C;AAEA,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE;YAC3B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;QACtC;AAEA,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACnB,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA,IAAA,QAAQ,CAAC,OAAwB,EAAA;AAC/B,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK;QAC9B,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,EAAE;AAAE,YAAA,OAAO,IAAI;QAC/E,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,IAAI;AAEjD,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;AAE9B,QAAA,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAChD,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;QAC1B;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACvD,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;QAC1B;QAEA,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC1D,YAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC;QAC9C;AAEA,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAC7E;AAEQ,IAAA,cAAc,CACpB,KAAa,EACb,SAAwB,EACxB,SAAwB,EAAA;QAExB,IAAI,SAAS,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS,EAAE;AAClD,YAAA,OAAO,EAAE,SAAS,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE;QACjF;QACA,IAAI,SAAS,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS,EAAE;AAClD,YAAA,OAAO,EAAE,SAAS,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE;QACjF;AACA,QAAA,OAAO,IAAI;IACb;AAEQ,IAAA,yBAAyB,CAAC,KAAa,EAAA;AAC7C,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;QAC1B;QAEA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/B,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAE1B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,IAAI,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,IAAI,IAAI,CAAC;AACzG,QAAA,IAAI,WAAW;AAAE,YAAA,OAAO,WAAW;QAEnC,MAAM,UAAU,GAAG,8BAA8B,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAC5E,QAAA,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE;AAC7B,YAAA,OAAO,EAAE,iBAAiB,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE;QACpE;AAEA,QAAA,OAAO,IAAI;IACb;;IAGA,OAAO,oBAAoB,CAAC,GAAW,EAAA;QACrC,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE;QACtC,IAAI,GAAG,GAAG,CAAC;AACX,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,MAAM,MAAM,GAAG,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9C,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM;QACnC;AACA,QAAA,MAAM,SAAS,GAAG,GAAG,GAAG,EAAE;AAC1B,QAAA,OAAO,qBAAqB,CAAC,SAAS,CAAC;IACzC;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI;IAC7B;AAEA,IAAA,IAAI,SAAS,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO;AAAE,YAAA,OAAO,KAAK;AAC5D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO;AACtC,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAC3B,QAAA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO;AAC/B,QAAA,OAAO,OAAO,CAAC,OAAO,GAAG,KAAK,IAAI,OAAO,GAAG,KAAK;IACnD;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM;AAAE,YAAA,OAAO,EAAE;AAEtC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM;QACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAEvC,QAAA,IAAI,QAAQ,KAAK,WAAW,EAAE;AAC5B,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,sBAAsB,EAAE;AACtD,gBAAA,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc;AACxC,aAAA,CAAC;QACJ;AAEA,QAAA,IAAI,QAAQ,KAAK,WAAW,EAAE;AAC5B,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,sBAAsB,EAAE;AACtD,gBAAA,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc;AACxC,aAAA,CAAC;QACJ;AAEA,QAAA,IAAI,QAAQ,KAAK,mBAAmB,EAAE;YACpC,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,8BAA8B,CAAC;QACjE;QAEA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA,WAAA,EAAc,QAAQ,CAAA,CAAE,CAAC;IAC3D;AAEA,IAAA,IAAI,iBAAiB,GAAA;QACnB,IAAI,WAAW,GAAG,EAAE;AAEpB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,WAAW,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,eAAe,EAAE;QAC3C;aAAO;YACL,WAAW,IAAI,SAAS;QAC1B;AAEA,QAAA,OAAO,WAAW;IACpB;wGA5NW,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAL,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA9B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,SAAA,EAb9B;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,8BAA8B,CAAC;AAC7D,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,8BAA8B,CAAC;AAC7D,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtFH,o5BAoCA,EAAA,MAAA,EAAA,CAAA,qsCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDoCY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,CAAA,EAAA,CAAA;;4FAgBhC,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAnB1C,SAAS;+BACE,yBAAyB,EAAA,UAAA,EACvB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,mBAAmB,CAAC,EAAA,SAAA,EAGjC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,oCAAoC,CAAC;AAC7D,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAAE,UAAU,CAAC,oCAAoC,CAAC;AAC7D,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,o5BAAA,EAAA,MAAA,EAAA,CAAA,qsCAAA,CAAA,EAAA;;sBAGA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;;MErFU,mBAAmB,CAAA;AAkBD,IAAA,SAAA;AACjB,IAAA,SAAA;IAlBH,KAAK,GAAG,EAAE;IACV,IAAI,GAAG,EAAE;IACT,EAAE,GAAG,EAAE;IACP,WAAW,GAAG,uBAAuB;IACrC,QAAQ,GAAG,KAAK;IAChB,QAAQ,GAAG,KAAK;IAChB,QAAQ,GAAG,KAAK;IAChB,OAAO,GAAmB,EAAE;IAC5B,eAAe,GAAW,EAAE;IAC5B,iBAAiB,GAAY,IAAI;IACjC,kBAAkB,GAAW,EAAE;IAExC,KAAK,GAAQ,EAAE;AACf,IAAA,QAAQ,GAAQ,MAAK,EAAE,CAAC;AACxB,IAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;IAEzB,WAAA,CAC6B,SAAoB,EACrC,SAA2B,EAAA;QADV,IAAA,CAAA,SAAS,GAAT,SAAS;QAC1B,IAAA,CAAA,SAAS,GAAT,SAAS;AAEnB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;QACrC;IACF;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;IACpB;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC5B;AAEA,IAAA,cAAc,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACpB,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI;IAC7B;AAEA,IAAA,IAAI,SAAS,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO;AAAE,YAAA,OAAO,KAAK;AAC5D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO;AACtC,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAC3B,QAAA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO;AAC/B,QAAA,OAAO,OAAO,CAAC,OAAO,GAAG,KAAK,IAAI,OAAO,GAAG,KAAK;IACnD;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM;AAAE,YAAA,OAAO,EAAE;AAEtC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM;QACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAEvC,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAC7B,CAAA,WAAA,EAAc,QAAQ,CAAA,CAAE,EACxB,EAAE,EACF,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,6BAA6B,CAAC,CACxD;IACH;AAEA,IAAA,IAAI,iBAAiB,GAAA;QACnB,IAAI,WAAW,GAAG,EAAE;AAEpB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,WAAW,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,eAAe,EAAE;QAC3C;aAAO;YACL,WAAW,IAAI,SAAS;QAC1B;AAEA,QAAA,OAAO,WAAW;IACpB;wGAnFW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbhC,+tCA4CA,EAAA,MAAA,EAAA,CAAA,8/CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDnCY,WAAW,k+BAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAI9D,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;+BACE,aAAa,EAAA,UAAA,EACX,IAAI,EAAA,OAAA,EACP,CAAC,WAAW,EAAE,YAAY,EAAE,mBAAmB,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,+tCAAA,EAAA,MAAA,EAAA,CAAA,8/CAAA,CAAA,EAAA;;0BAsBvE;;0BAAQ;;sBAjBV;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;MEZU,qBAAqB,CAAA;AAmBH,IAAA,SAAA;AACnB,IAAA,SAAA;IAnBD,KAAK,GAAG,EAAE;IACV,IAAI,GAAG,EAAE;IACT,EAAE,GAAG,EAAE;IACP,WAAW,GAAG,EAAE;IAChB,QAAQ,GAAG,KAAK;IAChB,QAAQ,GAAG,KAAK;IAChB,SAAS,GAAkB,IAAI;IAC/B,SAAS,GAAkB,IAAI;IAC/B,IAAI,GAAW,CAAC;IAChB,IAAI,GAAkB,IAAI;IAC1B,eAAe,GAAW,EAAE;IAErC,KAAK,GAAQ,EAAE;IACf,QAAQ,GAAG,KAAK;AAChB,IAAA,QAAQ,GAAQ,MAAK,EAAE,CAAC;AACxB,IAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;IAEzB,WAAA,CAC6B,SAAoB,EACvC,SAA2B,EAAA;QADR,IAAA,CAAA,SAAS,GAAT,SAAS;QAC5B,IAAA,CAAA,SAAS,GAAT,SAAS;AAEjB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;QACrC;IACF;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;IACpB;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC5B;AAEA,IAAA,OAAO,CAAC,KAAU,EAAA;AAChB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACpB,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI;IAC7B;AAEA,IAAA,IAAI,SAAS,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO;AAAE,YAAA,OAAO,KAAK;AAC5D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO;AACtC,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAC3B,QAAA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO;AAC/B,QAAA,OAAO,OAAO,CAAC,OAAO,GAAG,KAAK,IAAI,OAAO,GAAG,KAAK;IACnD;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM;AAAE,YAAA,OAAO,EAAE;AAEtC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM;QACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAEvC,QAAA,IAAI,QAAQ,KAAK,WAAW,EAAE;AAC5B,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,sBAAsB,EAAE;AACtD,gBAAA,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc;AACxC,aAAA,CAAC;QACJ;AAEA,QAAA,IAAI,QAAQ,KAAK,WAAW,EAAE;AAC5B,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,sBAAsB,EAAE;AACtD,gBAAA,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc;AACxC,aAAA,CAAC;QACJ;QAEA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA,WAAA,EAAc,QAAQ,CAAA,CAAE,CAAC;IAC3D;AAEA,IAAA,IAAI,iBAAiB,GAAA;QACnB,IAAI,WAAW,GAAG,EAAE;AAEpB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,WAAW,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,eAAe,EAAE;QAC3C;aAAO;YACL,WAAW,IAAI,SAAS;QAC1B;AAEA,QAAA,OAAO,WAAW;IACpB;wGA5FW,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,qTCZlC,y6BAsCA,EAAA,MAAA,EAAA,CAAA,49BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED9BY,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,8BAAE,mBAAmB,EAAA,CAAA,EAAA,CAAA;;4FAI7C,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,IAAI,EAAA,OAAA,EACP,CAAC,WAAW,EAAE,YAAY,EAAE,mBAAmB,CAAC,EAAA,QAAA,EAAA,y6BAAA,EAAA,MAAA,EAAA,CAAA,49BAAA,CAAA,EAAA;;0BAuBtD;;0BAAQ;;sBAlBV;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;MEcU,oBAAoB,CAAA;AAmBtB,IAAA,SAAA;AACC,IAAA,QAAA;AACA,IAAA,UAAA;IApBD,KAAK,GAAG,EAAE;IACV,IAAI,GAAG,EAAE;IACT,EAAE,GAAG,EAAE;IACP,WAAW,GAAG,EAAE;IAChB,QAAQ,GAAG,KAAK;IAChB,QAAQ,GAAG,KAAK;IAChB,GAAG,GAAkB,IAAI;IACzB,GAAG,GAAkB,IAAI;IACzB,IAAI,GAAW,CAAC;IAChB,eAAe,GAAW,EAAE;IAErC,KAAK,GAAkB,IAAI;IAC3B,QAAQ,GAAG,KAAK;AAChB,IAAA,QAAQ,GAAQ,MAAK,EAAE,CAAC;AACxB,IAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;AACjB,IAAA,UAAU;AAElB,IAAA,WAAA,CACS,SAA2B,EAC1B,QAAkB,EAClB,UAAsB,EAAA;QAFvB,IAAA,CAAA,SAAS,GAAT,SAAS;QACR,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,UAAU,GAAV,UAAU;IACjB;AAEH,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;AACjC,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACtE;QACA,OAAO,IAAI,CAAC,UAAU;IACxB;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,sBAAsB,EAAE;QACnD;IACF;AAEA,IAAA,QAAQ,CAAC,OAAwB,EAAA;QAC/B,MAAM,MAAM,GAAqB,EAAE;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;AAC3C,QAAA,IAAI,QAAQ;AAAE,YAAA,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;AAC7C,QAAA,IAAI,QAAQ;AAAE,YAAA,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;AAC7C,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI;IACnD;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,GAAG,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;IAC3F;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC5B;AAEA,IAAA,OAAO,CAAC,KAAU,EAAA;QAChB,MAAM,MAAM,GAAG,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,GAAG,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;AAC3F,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAgB,CAAC,GAAG,IAAI,GAAG,MAAM;AACpD,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,SAAS,EAAE;IAClB;IAEA,SAAS,GAAA;QACP,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;AAC3C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC;AAC3B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACnB,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEA,SAAS,GAAA;QACP,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;AAC3C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC;AAC3B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACnB,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,gBAAgB,EAAE;IACzB;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,KAAK;QAChD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;QAC3C,OAAO,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG;IAChD;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,KAAK;QAChD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;QAC3C,OAAO,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG;IAChD;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI;IAC7B;AAEA,IAAA,IAAI,SAAS,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO;AAAE,YAAA,OAAO,KAAK;AAC5D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO;AACtC,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAC3B,QAAA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO;AAC/B,QAAA,OAAO,OAAO,CAAC,OAAO,GAAG,KAAK,IAAI,OAAO,GAAG,KAAK;IACnD;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM;AAAE,YAAA,OAAO,EAAE;AAEtC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM;QACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAEvC,QAAA,IAAI,QAAQ,KAAK,KAAK,EAAE;AACtB,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,gBAAgB,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;QAClF;AAEA,QAAA,IAAI,QAAQ,KAAK,KAAK,EAAE;AACtB,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,gBAAgB,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;QAClF;QAEA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA,WAAA,EAAc,QAAQ,CAAA,CAAE,CAAC;IAC3D;AAEA,IAAA,IAAI,iBAAiB,GAAA;QACnB,IAAI,WAAW,GAAG,EAAE;AAEpB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,WAAW,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,eAAe,EAAE;QAC3C;aAAO;YACL,WAAW,IAAI,SAAS;QAC1B;AAEA,QAAA,OAAO,WAAW;IACpB;AAEQ,IAAA,KAAK,CAAC,KAAa,EAAA;QACzB,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC,GAAG;QAC1D,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC,GAAG;AAC1D,QAAA,OAAO,KAAK;IACd;AAEQ,IAAA,KAAK,CAAC,KAAa,EAAA;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG;IACtC;IAEQ,gBAAgB,GAAA;AACtB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC;QACpE,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D;IACF;AAEQ,IAAA,YAAY,CAAC,OAAwB,EAAA;AAC3C,QAAA,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI;AAAE,YAAA,OAAO,IAAI;AAClC,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;QAC3B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;AAAE,YAAA,OAAO,IAAI;AACtE,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC;QACzB,IAAI,KAAK,CAAC,GAAG,CAAC;AAAE,YAAA,OAAO,IAAI;QAC3B,OAAO,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI;IACxE;AAEQ,IAAA,YAAY,CAAC,OAAwB,EAAA;AAC3C,QAAA,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI;AAAE,YAAA,OAAO,IAAI;AAClC,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;QAC3B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;AAAE,YAAA,OAAO,IAAI;AACtE,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC;QACzB,IAAI,KAAK,CAAC,GAAG,CAAC;AAAE,YAAA,OAAO,IAAI;QAC3B,OAAO,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI;IACxE;wGAjLW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,IAAA,EAAA,MAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,SAAA,EATpB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC;AACnD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC7F,SAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnCH,q7CAyDA,EAAA,MAAA,EAAA,CAAA,66EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDhCY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,CAAA,EAAA,CAAA;;4FAYhC,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAfhC,SAAS;+BACE,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,mBAAmB,CAAC,EAAA,SAAA,EAGjC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,0BAA0B,CAAC;AACnD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,0BAA0B,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC7F,qBAAA,EAAA,QAAA,EAAA,q7CAAA,EAAA,MAAA,EAAA,CAAA,66EAAA,CAAA,EAAA;;sBAGA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;MEPU,mBAAmB,CAAA;AA2BpB,IAAA,SAAA;AACA,IAAA,QAAA;IA3BD,KAAK,GAAG,EAAE;IACV,IAAI,GAAG,EAAE;IACT,EAAE,GAAG,EAAE;IACP,WAAW,GAAG,EAAE;IAChB,QAAQ,GAAG,KAAK;IAChB,QAAQ,GAAG,KAAK;IAChB,iBAAiB,GAAkB,IAAI;IACvC,iBAAiB,GAAkB,IAAI;IACvC,cAAc,GAAG,IAAI;IACrB,eAAe,GAAG,EAAE;IAEpB,SAAS,GAAG,eAAe;IAC3B,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,OAAO,MAAM;AACxD,QAAA,GAAG,OAAO;AACV,QAAA,MAAM,EAAE,CAAA,EAAG,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA,CAAA,EAAI,OAAO,CAAC,IAAI,CAAA,EAAA,EAAK,OAAO,CAAC,QAAQ,CAAA,CAAA,CAAG;AACrF,KAAA,CAAC,CAAC;AAEH,IAAA,WAAW,GAAG,IAAI,CAAC,cAAc;IACjC,cAAc,GAAG,EAAE;IACnB,QAAQ,GAAG,KAAK;AAChB,IAAA,QAAQ,GAAQ,MAAK,EAAE,CAAC;AACxB,IAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;AACzB,IAAA,iBAAiB,GAAe,MAAK,EAAE,CAAC;AAChC,IAAA,UAAU;IAElB,WAAA,CACU,SAA2B,EAC3B,QAAkB,EAAA;QADlB,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,QAAQ,GAAR,QAAQ;IACf;AAEH,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;AACjC,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACtE;QACA,OAAO,IAAI,CAAC,UAAU;IACxB;AAEA,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,QACE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAE/F;AAEA,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,eAAe,EAAE,QAAQ,IAAI,EAAE;IAC7C;AAEA,IAAA,UAAU,CAAC,OAAe,EAAA;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,EAAE,QAAQ,IAAI,EAAE;IACtF;AAEA,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,cAAc,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAA,EAAG,IAAI,CAAC,cAAc,CAAA,CAAE,GAAG,EAAE;IAC5E;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IACE,OAAO,CAAC,UAAU,CAAC;YACnB,OAAO,CAAC,gBAAgB,CAAC;YACzB,OAAO,CAAC,mBAAmB,CAAC;AAC5B,YAAA,OAAO,CAAC,mBAAmB,CAAC,EAC5B;YACA,IAAI,CAAC,iBAAiB,EAAE;QAC1B;IACF;AAEA,IAAA,yBAAyB,CAAC,EAAc,EAAA;AACtC,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;IAC7B;AAEA,IAAA,QAAQ,CAAC,OAAwB,EAAA;QAC/B,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACnC,YAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC3B;AACA,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AAClB,YAAA,OAAO,IAAI;QACb;AACA,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM;QACxD,MAAM,MAAM,GAAqB,EAAE;AACnC,QAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACtE,YAAA,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,iBAAiB,EAAE,YAAY,EAAE,MAAM,EAAE;QACxF;AACA,QAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACtE,YAAA,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,iBAAiB,EAAE,YAAY,EAAE,MAAM,EAAE;QACxF;AACA,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI;IACnD;AAEA,IAAA,UAAU,CAAC,KAAgC,EAAA;QACzC,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc;AACtC,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE;YACxB;QACF;QACA,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AACvC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,KAC1C,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CACrD;QACD,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,OAAO;YAClC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC;QAC9E;aAAO;AACL,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc;AACtC,YAAA,IAAI,CAAC,cAAc,GAAG,MAAM;QAC9B;IACF;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC5B;AAEA,IAAA,OAAO,CAAC,KAAY,EAAA;AAClB,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;QAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;AAC5C,QAAA,KAAK,CAAC,KAAK,GAAG,SAAS;AACvB,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS;AAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA,IAAA,eAAe,CAAC,OAAe,EAAA;AAC7B,QAAA,IAAI,CAAC,WAAW,GAAG,OAAO;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI;IAC7B;AAEA,IAAA,IAAI,SAAS,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO;AAAE,YAAA,OAAO,KAAK;AAC5D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO;AACtC,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAC3B,QAAA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO;AAC/B,QAAA,OAAO,OAAO,CAAC,OAAO,GAAG,KAAK,IAAI,OAAO,GAAG,KAAK;IACnD;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM;AAAE,YAAA,OAAO,EAAE;AACtC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM;QACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvC,IAAI,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,WAAW,EAAE;YACxD,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA,WAAA,EAAc,QAAQ,CAAA,CAAE,EAAE;AACxD,gBAAA,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc;AACxC,aAAA,CAAC;QACJ;QACA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA,WAAA,EAAc,QAAQ,CAAA,CAAE,CAAC;IAC3D;AAEA,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,wBAAwB,CAAC;IAC/E;AAEA,IAAA,IAAI,iBAAiB,GAAA;QACnB,IAAI,WAAW,GAAG,EAAE;AACpB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,WAAW,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,eAAe,EAAE;QAC3C;aAAO;YACL,WAAW,IAAI,oBAAoB;QACrC;AACA,QAAA,OAAO,WAAW;IACpB;AAEA,IAAA,IAAI,CAAC,OAAe,EAAA;AAClB,QAAA,OAAO,gBAAgB,CAAC,OAAO,CAAC;IAClC;AAEQ,IAAA,QAAQ,CAAC,KAAa,EAAA;QAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC,iBAAiB,KAAK,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,GAAG,MAAM;IAC3F;AAEQ,IAAA,cAAc,CAAC,KAAU,EAAA;AAC/B,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AACrD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;QACjD,OAAO,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,MAAM;IACjF;wGA1LW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,SAAA,EATnB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC5F,SAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtCH,gwDA6DA,EAAA,MAAA,EAAA,CAAA,87OAAA,EAAA,83BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDlCY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,kWAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,2BAAA,EAAA,YAAA,EAAA,aAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,QAAA,EAAA,YAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,QAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAaxC,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAhB/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,UAAA,EACX,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,WAAW,EAAE,cAAc,CAAC,EAAA,aAAA,EAGrC,iBAAiB,CAAC,IAAI,EAAA,SAAA,EAC1B;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC;AAClD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC5F,qBAAA,EAAA,QAAA,EAAA,gwDAAA,EAAA,MAAA,EAAA,CAAA,87OAAA,EAAA,83BAAA,CAAA,EAAA;;sBAGA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;MEZU,mBAAmB,CAAA;AAmBD,IAAA,SAAA;AACnB,IAAA,SAAA;IAnBD,KAAK,GAAG,EAAE;IACV,IAAI,GAAG,EAAE;IACT,EAAE,GAAG,EAAE;IACP,WAAW,GAAG,EAAE;IAChB,QAAQ,GAAG,KAAK;IAChB,QAAQ,GAAG,KAAK;IAChB,OAAO,GAAY,eAAe;IAClC,eAAe,GAAG,EAAE;AAE7B,IAAA,MAAM;IACN,KAAK,GAAW,EAAE;IAClB,QAAQ,GAAG,KAAK;AAChB,IAAA,QAAQ,GAAQ,MAAK,EAAE,CAAC;AACxB,IAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;IACjB,YAAY,GAAwB,IAAI;AAChD,IAAA,SAAS;AAET,IAAA,WAAA,CAC6B,SAAoB,EACvC,SAA2B,EACd,UAAkB,EAAA;QAFZ,IAAA,CAAA,SAAS,GAAT,SAAS;QAC5B,IAAA,CAAA,SAAS,GAAT,SAAS;AAGjB,QAAA,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC,UAAU,CAAC;AAE9C,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;QACrC;IACF;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,EAAE;AAE1B,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;gBACd,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;YACpC;AAEA,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;iBAC7B,IAAI,CAAC,oBAAoB,EAAE;AAC3B,iBAAA,SAAS,CAAC,CAAC,GAA4B,KAAI;AAC1C,gBAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;AACxB,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;gBACzB,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,CAAC,CAAC;QACN;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE;AAChC,QAAA,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE;IACxB;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE;AAExB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,CAAC;QACvC;IACF;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC5B;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI;IAC7B;AAEA,IAAA,IAAI,SAAS,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO;AAAE,YAAA,OAAO,KAAK;AAC5D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO;AACtC,QAAA,OAAO,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,GAAG,KAAK;IACnE;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM;AAAE,YAAA,OAAO,EAAE;AAEtC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM;QACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAEvC,QAAA,IAAI,QAAQ,KAAK,WAAW,EAAE;AAC5B,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,sBAAsB,EAAE;AACtD,gBAAA,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc;AACxC,aAAA,CAAC;QACJ;AAEA,QAAA,IAAI,QAAQ,KAAK,WAAW,EAAE;AAC5B,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,sBAAsB,EAAE;AACtD,gBAAA,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc;AACxC,aAAA,CAAC;QACJ;QAEA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAC7B,CAAA,WAAA,EAAc,QAAQ,CAAA,CAAE,EACxB,EAAE,EACF,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,yBAAyB,CAAC,CACpD;IACH;AAEA,IAAA,IAAI,iBAAiB,GAAA;QACnB,IAAI,WAAW,GAAG,EAAE;AAEpB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,WAAW,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,eAAe,EAAE;QAC3C;aAAO;YACL,WAAW,IAAI,SAAS;QAC1B;AAEA,QAAA,OAAO,WAAW;IACpB;AAtHW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,yGAqBpB,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FArBV,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtChC,suBA6BA,EAAA,MAAA,EAAA,CAAA,qZAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDDI,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,cAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,UAAA,EAAA,QAAA,EAAA,eAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAMb,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAd/B,SAAS;+BACE,aAAa,EAAA,UAAA,EACX,IAAI,EAAA,OAAA,EACP;wBACP,WAAW;wBACX,YAAY;wBACZ,mBAAmB;wBACnB,kBAAkB;wBAClB,sBAAsB;AACvB,qBAAA,EAAA,IAAA,EAGK,EAAE,eAAe,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,suBAAA,EAAA,MAAA,EAAA,CAAA,qZAAA,CAAA,EAAA;;0BAqB9B;;0BAAQ;;0BAER,MAAM;2BAAC,WAAW;;sBApBpB;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;ME1BU,oBAAoB,CAAA;AAwCF,IAAA,SAAA;AACnB,IAAA,UAAA;IAxCD,KAAK,GAAG,EAAE;IACV,IAAI,GAAG,EAAE;IACT,EAAE,GAAG,EAAE;IACP,WAAW,GAAG,SAAS;IACvB,QAAQ,GAAG,KAAK;IAChB,QAAQ,GAAG,KAAK;IAChB,eAAe,GAAW,EAAE;IAC5B,WAAW,GAAG,IAAI;AAClB,IAAA,YAAY,GAAa;QAChC,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;KACV;AACS,IAAA,WAAW,GAAG,IAAI,YAAY,EAAU;IAElD,KAAK,GAAW,SAAS;IACzB,QAAQ,GAAG,KAAK;IAChB,cAAc,GAAG,KAAK;AACtB,IAAA,QAAQ,GAAQ,MAAK,EAAE,CAAC;AACxB,IAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;IAEzB,WAAA,CAC6B,SAAoB,EACvC,UAAsB,EAAA;QADH,IAAA,CAAA,SAAS,GAAT,SAAS;QAC5B,IAAA,CAAA,UAAU,GAAV,UAAU;AAElB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;QACrC;IACF;AAGA,IAAA,eAAe,CAAC,KAAiB,EAAA;AAC/B,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;AAC1E,QAAA,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,cAAc,EAAE;AACzC,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;QAC7B;IACF;;AAGA,IAAA,UAAU,CAAC,KAAa,EAAA;QACtB,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;QACpB;IACF;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC5B;AAEA,IAAA,aAAa,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACpB,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA,IAAA,kBAAkB,CAAC,KAAY,EAAA;AAC7B,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;AAC9C,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IACpC;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;YAAE;AACpC,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,cAAc;IAC5C;AAEA,IAAA,iBAAiB,CAAC,KAAa,EAAA;AAC7B,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;IAC7B;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI;IAC7B;AAEA,IAAA,IAAI,SAAS,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO;AAAE,YAAA,OAAO,KAAK;AAC5D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO;AACtC,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAC3B,QAAA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO;AAC/B,QAAA,OAAO,OAAO,CAAC,OAAO,GAAG,KAAK,IAAI,OAAO,GAAG,KAAK;IACnD;AAEA,IAAA,IAAI,iBAAiB,GAAA;QACnB,IAAI,WAAW,GAAG,EAAE;AAEpB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,WAAW,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,eAAe,EAAE;QAC3C;aAAO;YACL,WAAW,IAAI,SAAS;QAC1B;AAEA,QAAA,OAAO,WAAW;IACpB;AAEA,IAAA,eAAe,CAAC,KAAa,EAAA;AAC3B,QAAA,OAAO,oCAAoC,CAAC,IAAI,CAAC,KAAK,CAAC;IACzD;wGA9HW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,iZCpBjC,8oFAwFA,EAAA,MAAA,EAAA,CAAA,2rFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDxEY,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,sEAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,8BAAE,mBAAmB,EAAA,CAAA,EAAA,CAAA;;4FAI7C,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;+BACE,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,OAAA,EACP,CAAC,WAAW,EAAE,YAAY,EAAE,mBAAmB,CAAC,EAAA,QAAA,EAAA,8oFAAA,EAAA,MAAA,EAAA,CAAA,2rFAAA,CAAA,EAAA;;0BA4CtD;;0BAAQ;;sBAvCV;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAsBA;;sBAiBA,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;MExD/B,kBAAkB,CAAA;AAoBA,IAAA,SAAA;AACnB,IAAA,SAAA;IApBD,KAAK,GAAG,EAAE;IACV,IAAI,GAAG,MAAM;IACb,WAAW,GAAG,KAAK;IACnB,IAAI,GAAG,EAAE;IACT,EAAE,GAAG,EAAE;IACP,WAAW,GAAG,EAAE;IAChB,QAAQ,GAAG,KAAK;IAChB,QAAQ,GAAG,KAAK;IAChB,GAAG,GAAkB,IAAI;IACzB,GAAG,GAAkB,IAAI;IACzB,eAAe,GAAW,EAAE;IAC5B,UAAU,GAAW,YAAY;IAE1C,KAAK,GAAQ,EAAE;IACf,QAAQ,GAAG,KAAK;AAChB,IAAA,QAAQ,GAAQ,MAAK,EAAE,CAAC;AACxB,IAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;IAEzB,WAAA,CAC6B,SAAoB,EACvC,SAA2B,EAAA;QADR,IAAA,CAAA,SAAS,GAAT,SAAS;QAC5B,IAAA,CAAA,SAAS,GAAT,SAAS;AAEjB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;QACrC;IACF;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;QACnB,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,KAAK,YAAY,IAAI,EAAE;gBACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;YAC7C;AAAO,iBAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACpC,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAK;YACpB;iBAAO;AACL,gBAAA,IAAI,CAAC,KAAK,GAAG,EAAE;YACjB;QACF;aAAO;AACL,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE;QACjB;IACF;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC5B;AAEA,IAAA,OAAO,CAAC,KAAU,EAAA;AAChB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,MAAM,SAAS,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI;AAChD,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QACxB,IAAI,CAAC,SAAS,EAAE;IAClB;AAEQ,IAAA,kBAAkB,CAAC,IAAU,EAAA;AACnC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;AAC/B,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAC1D,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAEnD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACtD,YAAA,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;YAC1D,OAAO,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE;QACtD;AAEA,QAAA,OAAO,GAAG,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI,GAAG,EAAE;IAClC;AAEQ,IAAA,mBAAmB,CAAC,UAAkB,EAAA;AAC5C,QAAA,IAAI,CAAC,UAAU;AAAE,YAAA,OAAO,IAAI;AAC5B,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC;AACjC,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;IAC5C;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI;IAC7B;AAEA,IAAA,IAAI,SAAS,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO;AAAE,YAAA,OAAO,KAAK;AAC5D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO;AACtC,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAC3B,QAAA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO;AAC/B,QAAA,OAAO,OAAO,CAAC,OAAO,GAAG,KAAK,IAAI,OAAO,GAAG,KAAK;IACnD;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM;AAAE,YAAA,OAAO,EAAE;AAEtC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM;QACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAEvC,QAAA,IAAI,QAAQ,KAAK,WAAW,EAAE;AAC5B,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,sBAAsB,EAAE;AACtD,gBAAA,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc;AACxC,aAAA,CAAC;QACJ;QAEA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAC7B,CAAA,WAAA,EAAc,QAAQ,CAAA,CAAE,EACxB,EAAE,EACF,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,yBAAyB,CAAC,CACpD;IACH;AAEA,IAAA,IAAI,iBAAiB,GAAA;QACnB,IAAI,WAAW,GAAG,EAAE;AAEpB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,WAAW,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,eAAe,EAAE;QAC3C;aAAO;YACL,WAAW,IAAI,SAAS;QAC1B;AAEA,QAAA,OAAO,WAAW;IACpB;wGA1HW,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,kUCZ/B,k4BAqCA,EAAA,MAAA,EAAA,CAAA,w7BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED7BY,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,8BAAE,mBAAmB,EAAA,CAAA,EAAA,CAAA;;4FAI7C,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;+BACE,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,OAAA,EACP,CAAC,WAAW,EAAE,YAAY,EAAE,mBAAmB,CAAC,EAAA,QAAA,EAAA,k4BAAA,EAAA,MAAA,EAAA,CAAA,w7BAAA,CAAA,EAAA;;0BAwBtD;;0BAAQ;;sBAnBV;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;MEbU,qBAAqB,CAAA;AAeO,IAAA,SAAA;IAd9B,KAAK,GAAG,EAAE;IACV,IAAI,GAAG,EAAE;IACT,EAAE,GAAG,EAAE;IACP,QAAQ,GAAG,KAAK;IAChB,QAAQ,GAAG,KAAK;IAChB,IAAI,GAAuB,IAAI;IAC/B,eAAe,GAAW,EAAE;IAC5B,WAAW,GAAG,EAAE;AACf,IAAA,WAAW,GAAG,IAAI,YAAY,EAAW;IAEnD,KAAK,GAAY,KAAK;AACtB,IAAA,QAAQ,GAAQ,MAAK,EAAE,CAAC;AACxB,IAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;AAEzB,IAAA,WAAA,CAAuC,SAAoB,EAAA;QAApB,IAAA,CAAA,SAAS,GAAT,SAAS;AAC9C,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;QACrC;IACF;;AAGA,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,KAAK;IAC7B;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC5B;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACnC;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI;IAC7B;AAEA,IAAA,IAAI,iBAAiB,GAAA;QACnB,IAAI,WAAW,GAAG,EAAE;AAEpB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,WAAW,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,eAAe,EAAE;QAC3C;aAAO;YACL,WAAW,IAAI,SAAS;QAC1B;AAEA,QAAA,OAAO,WAAW;IACpB;wGA3DW,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,gSCXlC,oyCAuDA,EAAA,MAAA,EAAA,CAAA,ikEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDhDY,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,8BAAE,mBAAmB,EAAA,CAAA,EAAA,CAAA;;4FAI7C,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,IAAI,EAAA,OAAA,EACP,CAAC,WAAW,EAAE,YAAY,EAAE,mBAAmB,CAAC,EAAA,QAAA,EAAA,oyCAAA,EAAA,MAAA,EAAA,CAAA,ikEAAA,CAAA,EAAA;;0BAmB5C;;0BAAQ;;sBAdpB;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;MENU,0BAA0B,CAAA;IACV,IAAI,GAAiB,EAAkB;AACxD,IAAA,MAAM,GAAG,IAAI,YAAY,EAAgB;IAEnD,UAAU,GAAA;QACR,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IAC7B;AAEA,IAAA,WAAW,CAAC,IAAkB,EAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,QAAQ,CAAC,KAAK;AACzD,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB;YAAE,OAAO,QAAQ,CAAC,GAAG;AACxD,QAAA,IACE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;AACjC,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC3B,IAAI,CAAC,SAAS,KAAK,MAAM;YACzB,IAAI,CAAC,SAAS,KAAK,KAAK;AACxB,YAAA,IAAI,CAAC,SAAS,KAAK,KAAK,EACxB;YACA,OAAO,QAAQ,CAAC,KAAK;QACvB;AACA,QAAA,IACE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC1B,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC9B,IAAI,CAAC,SAAS,KAAK,MAAM;AACzB,YAAA,IAAI,CAAC,SAAS,KAAK,KAAK,EACxB;YACA,OAAO,QAAQ,CAAC,IAAI;QACtB;AACA,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;YAC7D,OAAO,QAAQ,CAAC,IAAI;QACtB;QACA,OAAO,QAAQ,CAAC,OAAO;IACzB;AAEA,IAAA,WAAW,CAAC,QAAkB,EAAA;QAC5B,QAAQ,QAAQ;YACd,KAAK,QAAQ,CAAC,KAAK;AACjB,gBAAA,OAAO,eAAe;YACxB,KAAK,QAAQ,CAAC,GAAG;AACf,gBAAA,OAAO,kBAAkB;YAC3B,KAAK,QAAQ,CAAC,KAAK;AACjB,gBAAA,OAAO,oBAAoB;YAC7B,KAAK,QAAQ,CAAC,IAAI;AAChB,gBAAA,OAAO,mBAAmB;YAC5B,KAAK,QAAQ,CAAC,IAAI;AAChB,gBAAA,OAAO,mBAAmB;AAC5B,YAAA;AACE,gBAAA,OAAO,cAAc;;IAE3B;AAEA,IAAA,eAAe,CAAC,IAAkB,EAAA;QAChC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACjD;AAEA,IAAA,cAAc,CAAC,KAAa,EAAA;QAC1B,IAAI,KAAK,KAAK,CAAC;AAAE,YAAA,OAAO,SAAS;QACjC,MAAM,CAAC,GAAG,IAAI;QACd,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;QACzC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACnD,OAAO,UAAU,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;IACzE;wGA7DW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdvC,ilCAwCA,EAAA,MAAA,EAAA,CAAA,kmDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED9BY,WAAW,8BAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAIjE,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAPtC,SAAS;+BACE,qBAAqB,EAAA,UAAA,EACnB,IAAI,EAAA,OAAA,EACP,CAAC,WAAW,EAAE,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,EAAA,QAAA,EAAA,ilCAAA,EAAA,MAAA,EAAA,CAAA,kmDAAA,CAAA,EAAA;;sBAK5E,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;;MEMU,mBAAmB,CAAA;AAqBD,IAAA,SAAA;AACnB,IAAA,SAAA;IArBD,KAAK,GAAG,EAAE;IACV,IAAI,GAAG,EAAE;IACT,EAAE,GAAG,EAAE;IACP,QAAQ,GAAG,KAAK;IAChB,QAAQ,GAAG,KAAK;IAChB,eAAe,GAAW,EAAE;IAC5B,MAAM,GAAqB,EAAE;IAC7B,MAAM,GAAW,KAAK;AAErB,IAAA,YAAY,GAAG,IAAI,YAAY,EAAkB;AACjD,IAAA,WAAW,GAAG,IAAI,YAAY,EAAgB;AAC9C,IAAA,eAAe,GAAG,IAAI,YAAY,EAAU;IAEtD,KAAK,GAAmB,EAAE;IAC1B,QAAQ,GAAG,KAAK;AAChB,IAAA,QAAQ,GAAQ,MAAK,EAAE,CAAC;AACxB,IAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;IACzB,QAAQ,GAAG,KAAK;IAEhB,WAAA,CAC6B,SAAoB,EACvC,SAA2B,EAAA;QADR,IAAA,CAAA,SAAS,GAAT,SAAS;QAC5B,IAAA,CAAA,SAAS,GAAT,SAAS;AAEjB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;QACrC;IACF;AAEA,IAAA,UAAU,CAAC,KAA4B,EAAA;AACrC,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE;IAC1B;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC5B;AAEA,IAAA,YAAY,CAAC,KAAY,EAAA;AACvB,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;AAC9C,QAAA,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACzC,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3C;AACA,QAAA,KAAK,CAAC,KAAK,GAAG,EAAE;IAClB;AAEA,IAAA,MAAM,CAAC,KAAgB,EAAA;QACrB,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AAErB,QAAA,IAAI,KAAK,CAAC,YAAY,EAAE,KAAK,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACpE,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACxD;IACF;AAEA,IAAA,UAAU,CAAC,KAAgB,EAAA;QACzB,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;IACtB;AAEA,IAAA,WAAW,CAAC,KAAgB,EAAA;QAC1B,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;IACvB;IAEQ,MAAM,WAAW,CAAC,QAAgB,EAAA;QACxC,MAAM,QAAQ,GAAmB,EAAE;AAEnC,QAAA,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE;YAC3B,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YAC/C,IAAI,eAAe,EAAE;AACnB,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC;gBAC1C;YACF;AAEA,YAAA,MAAM,YAAY,GAAiB;gBACjC,IAAI;gBACJ,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;aAC5C;AAED,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACtB,YAAY,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAC9D;AAEA,YAAA,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;QAC7B;AAEA,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;YACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE;AAC3C,YAAA,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC;AAClE,YAAA,IAAI,CAAC,KAAK,GAAG,UAAU;QACzB;aAAO;YACL,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACnC;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACpC;AAEQ,IAAA,YAAY,CAAC,IAAU,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AAClE,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,IAAI,GAAG,IAAI,CAAC;AACzD,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,sBAAsB,EAAE;gBACtD,QAAQ,EAAE,IAAI,CAAC,IAAI;AACnB,gBAAA,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9B,aAAA,CAAC;QACJ;AAEA,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7E,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;AAClD,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AACtD,gBAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,2BAA2B,EAAE;oBAC3D,QAAQ,EAAE,IAAI,CAAC,IAAI;oBACnB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;AACrD,iBAAA,CAAC;YACJ;QACF;AAEA,QAAA,OAAO,IAAI;IACb;AAEQ,IAAA,gBAAgB,CAAC,QAAgB,EAAA;AACvC,QAAA,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;IACvD;AAEQ,IAAA,OAAO,CAAC,IAAU,EAAA;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;IACvC;IAEQ,MAAM,oBAAoB,CAAC,IAAU,EAAA;AAC3C,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;AAC7B,YAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;AAC/B,YAAA,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAI;AACpB,gBAAA,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,MAAgB,CAAC;AACrC,YAAA,CAAC;AACD,YAAA,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;AAC5B,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,UAAU,CAAC,KAAa,EAAA;QACtB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;IACpC;AAEA,IAAA,WAAW,CAAC,IAAkB,EAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,QAAQ,CAAC,KAAK;AACzD,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB;YAAE,OAAO,QAAQ,CAAC,GAAG;AACxD,QAAA,IACE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;AACjC,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC3B,IAAI,CAAC,SAAS,KAAK,MAAM;YACzB,IAAI,CAAC,SAAS,KAAK,KAAK;AACxB,YAAA,IAAI,CAAC,SAAS,KAAK,KAAK,EACxB;YACA,OAAO,QAAQ,CAAC,KAAK;QACvB;AACA,QAAA,IACE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC1B,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC9B,IAAI,CAAC,SAAS,KAAK,MAAM;AACzB,YAAA,IAAI,CAAC,SAAS,KAAK,KAAK,EACxB;YACA,OAAO,QAAQ,CAAC,IAAI;QACtB;AACA,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;YAC7D,OAAO,QAAQ,CAAC,IAAI;QACtB;QACA,OAAO,QAAQ,CAAC,OAAO;IACzB;AAEA,IAAA,WAAW,CAAC,QAAkB,EAAA;QAC5B,QAAQ,QAAQ;YACd,KAAK,QAAQ,CAAC,KAAK;AACjB,gBAAA,OAAO,eAAe;YACxB,KAAK,QAAQ,CAAC,GAAG;AACf,gBAAA,OAAO,kBAAkB;YAC3B,KAAK,QAAQ,CAAC,KAAK;AACjB,gBAAA,OAAO,oBAAoB;YAC7B,KAAK,QAAQ,CAAC,IAAI;AAChB,gBAAA,OAAO,mBAAmB;YAC5B,KAAK,QAAQ,CAAC,IAAI;AAChB,gBAAA,OAAO,mBAAmB;AAC5B,YAAA;AACE,gBAAA,OAAO,cAAc;;IAE3B;AAEA,IAAA,eAAe,CAAC,IAAkB,EAAA;QAChC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACjD;IAEA,gBAAgB,GAAA;QACd,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAqB;QAC9E,IAAI,YAAY,EAAE;YAChB,YAAY,CAAC,KAAK,EAAE;QACtB;IACF;AAEA,IAAA,cAAc,CAAC,KAAa,EAAA;QAC1B,IAAI,KAAK,KAAK,CAAC;AAAE,YAAA,OAAO,SAAS;QACjC,MAAM,CAAC,GAAG,IAAI;QACd,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;QACzC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACnD,OAAO,UAAU,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;IACzE;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI;IAC7B;AAEA,IAAA,IAAI,SAAS,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO;AAAE,YAAA,OAAO,KAAK;AAC5D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO;AACtC,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAC3B,QAAA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO;AAC/B,QAAA,OAAO,OAAO,CAAC,OAAO,GAAG,KAAK,IAAI,OAAO,GAAG,KAAK;IACnD;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM;AAAE,YAAA,OAAO,EAAE;AAEtC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM;QACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAEvC,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAC7B,CAAA,WAAA,EAAc,QAAQ,CAAA,CAAE,EACxB,EAAE,EACF,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,yBAAyB,CAAC,CACpD;IACH;AAEA,IAAA,IAAI,iBAAiB,GAAA;QACnB,IAAI,WAAW,GAAG,EAAE;AAEpB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,WAAW,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,eAAe,EAAE;QAC3C;aAAO;YACL,WAAW,IAAI,SAAS;QAC1B;AAEA,QAAA,OAAO,WAAW;IACpB;AAEA,IAAA,IAAI,iBAAiB,GAAA;QACnB,MAAM,WAAW,GAAG,kBAAkB;AAEtC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,CAAA,EAAG,WAAW,CAAA,SAAA,CAAW;QAClC;AAEA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,CAAA,EAAG,WAAW,CAAA,UAAA,CAAY;QACnC;AAEA,QAAA,OAAO,WAAW;IACpB;wGA7QW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtBhC,s3GAsGA,EAAA,MAAA,EAAA,CAAA,86GAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDzFI,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,0BAA0B,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAKjB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAb/B,SAAS;+BACE,aAAa,EAAA,UAAA,EACX,IAAI,EAAA,OAAA,EACP;wBACP,WAAW;wBACX,YAAY;wBACZ,mBAAmB;wBACnB,eAAe;wBACf,0BAA0B;AAC3B,qBAAA,EAAA,QAAA,EAAA,s3GAAA,EAAA,MAAA,EAAA,CAAA,86GAAA,CAAA,EAAA;;0BAyBE;;0BAAQ;;sBApBV;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBACA;;;MEaU,oBAAoB,CAAA;AACtB,IAAA,MAAM;IACN,KAAK,GAAmB,EAAE;AAC1B,IAAA,QAAQ;IACR,KAAK,GAAG,EAAE;IACV,WAAW,GAAG,eAAe;IAC7B,IAAI,GAAG,EAAE;IACT,QAAQ,GAAG,KAAK;IAChB,QAAQ,GAAG,KAAK;IAChB,SAAS,GAAG,IAAI;IAChB,UAAU,GAAG,IAAI;IACjB,OAAO,GAAG,KAAK;IACf,aAAa,GAAG,KAAK;IACrB,YAAY,GAAG,8BAA8B;IAC7C,SAAS,GAAG,OAAO;IACnB,SAAS,GAAG,OAAO;IACnB,QAAQ,GAAG,KAAK;IAEzB,KAAK,GAAQ,IAAI;AACjB,IAAA,QAAQ,GAAQ,MAAK,EAAE,CAAC;AACxB,IAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;IAEzB,YAAY,GAAmB,EAAE;AACjC,IAAA,aAAa,GAAG,MAAM,CAAC,KAAK,yDAAC;AACrB,IAAA,WAAW,GAAG,IAAI,OAAO,EAAU;AACnC,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;AAC9B,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC3B,UAAU,GAAqB,IAAI;AAE3C,IAAA,WAAA,GAAA,EAAe;AAEf,IAAA,IAAY,SAAS,GAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC;QACtD;QACA,OAAO,IAAI,CAAC,UAAU;IACxB;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,UAAU,EAAE;QACnB;aAAO;AACL,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK;YAC9B,IAAI,CAAC,UAAU,EAAE;QACnB;IACF;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE;YAC3D,IAAI,CAAC,oBAAoB,EAAE;QAC7B;AACA,QAAA,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACrE,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK;QAChC;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IAC1B;IAEQ,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CACH,YAAY,CAAC,GAAG,CAAC,EACjB,oBAAoB,EAAE,EACtB,SAAS,CAAC,CAAC,IAAI,KAAI;AACjB,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YACzC;AACA,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC;QAC9B,CAAC,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEzB,aAAA,SAAS,CAAC,CAAC,OAAO,KAAI;AACrB,YAAA,IAAI,CAAC,YAAY,GAAG,OAAO;AAC3B,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;AAC/B,QAAA,CAAC,CAAC;IACN;IAEQ,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CACH,YAAY,CAAC,GAAG,CAAC,EACjB,oBAAoB,EAAE,EACtB,SAAS,CAAC,CAAC,IAAI,KAAI;AACjB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,YAAA,UAAU,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC;AACpD,YAAA,OAAO,EAAE,CACP,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CACnF;QACH,CAAC,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEzB,aAAA,SAAS,CAAC,CAAC,OAAO,KAAI;AACrB,YAAA,IAAI,CAAC,YAAY,GAAG,OAAO;AAC7B,QAAA,CAAC,CAAC;IACN;AAEQ,IAAA,UAAU,CAAC,MAA0D,EAAA;QAC3E,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE;AAClB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM;AAClB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,aAAA,SAAS,CAAC,CAAC,OAAO,KAAI;AACrB,YAAA,IAAI,CAAC,YAAY,GAAG,OAAO;AAC3B,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;AAC/B,QAAA,CAAC,CAAC;IACN;AAEQ,IAAA,SAAS,CAAC,MAGjB,EAAA;QACC,IAAI,CAAC,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,EAAE,CAAC,EAAE,CAAC;AAE/B,QAAA,MAAM,YAAY,GAAG,EAAE,GAAG,MAAM,EAAE;QAClC,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,YAAY,CAAC,QAAQ,IAAI,IAAI,EAAE;AACvD,YAAA,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAS;QACxC;AAEA,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CACxC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,MAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EACnC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CACzB;IACH;IAEQ,WAAW,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI;AAAE,YAAA,OAAO,KAAK;QACvC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI;IACvE;IAEQ,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI;AACtC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QAEzB,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE;YACrC,IAAI,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAS,EAAE,CAAC;QAC/C;AAAO,aAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACtB,YAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;QAC/B;IACF;AAEA,IAAA,QAAQ,CAAC,KAAU,EAAA;AACjB,QAAA,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,IAAI,EAAE;AAC9B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;IAC7B;AAEA,IAAA,cAAc,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACpB,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW;IACzB;AAEA,IAAA,IAAI,SAAS,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO;AAAE,YAAA,OAAO,KAAK;AAC5D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO;AACtC,QAAA,OAAO,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,GAAG,KAAK;IACnE;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM;AAAE,YAAA,OAAO,EAAE;AACtC,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtD,QAAA,OAAO,gBAAgB;IACzB;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;IACpB;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC5B;wGA3LW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EARpB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC;AACnD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7CH,i9BAqCA,EAAA,MAAA,EAAA,CAAA,gkMAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDFY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,kWAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,2BAAA,EAAA,YAAA,EAAA,aAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,QAAA,EAAA,YAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,QAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAYxC,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAfhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,WAAW,EAAE,cAAc,CAAC,EAAA,aAAA,EAGrC,iBAAiB,CAAC,IAAI,EAAA,SAAA,EAC1B;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,0BAA0B,CAAC;AACnD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,i9BAAA,EAAA,MAAA,EAAA,CAAA,gkMAAA,CAAA,EAAA;;sBAGA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;MElCU,2BAA2B,CAAA;AAK5B,IAAA,EAAA;AACA,IAAA,yBAAA;AACA,IAAA,eAAA;AACA,IAAA,YAAA;AACA,IAAA,YAAA;AACA,IAAA,SAAA;AATV,IAAA,kBAAkB;AAClB,IAAA,OAAO,GAA4B,MAAM,CAAC,KAAK,mDAAC;IAEhD,WAAA,CACU,EAAe,EACf,yBAAoD,EACpD,eAAgC,EAChC,YAA0B,EAC1B,YAA0B,EAC1B,SAA2B,EAAA;QAL3B,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,yBAAyB,GAAzB,yBAAyB;QACzB,IAAA,CAAA,eAAe,GAAf,eAAe;QACf,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,SAAS,GAAT,SAAS;QAEjB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CACrC;AACE,YAAA,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,YAAA,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;SACvE,EACD;AACE,YAAA,UAAU,EAAE,kBAAkB,CAAC,UAAU,EAAE,kBAAkB,CAAC;AAC/D,SAAA,CACF;IACH;AAEA,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,WAAW;IACnD;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,UAAU;IAClD;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE;AAC/B,QAAA,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE;IACxC;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AAEtB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,yBAAyB,CAAC,WAAW;cACtD,IAAI,CAAC;AACP,cAAE,IAAI,CAAC,eAAe;QAExB,MAAM,OAAO,GAAG,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE;QAC5D,MAAM,UAAU,GAAG,OAAO,GAAG,6BAA6B,GAAG,gCAAgC;QAC7F,MAAM,QAAQ,GAAG,OAAO,GAAG,2BAA2B,GAAG,8BAA8B;AAEvF,QAAA,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;YAC5E,IAAI,EAAE,MAAK;AACT,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC;AACvE,gBAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE;AAC/B,gBAAA,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE;AACtC,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YACzB,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,KAAU,KAAI;AACpB,gBAAA,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC;AACvD,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;AACnE,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YACzB,CAAC;AACF,SAAA,CAAC;IACJ;wGA5DW,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,yBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,mEAL3B,CAAC,YAAY,EAAE,eAAe,CAAC,0BCxB5C,8sDAuDA,EAAA,MAAA,EAAA,CAAA,oKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDtCI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,q6BACnB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,kBAAkB,qOAClB,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,cAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAOR,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAhBvC,SAAS;+BACE,sBAAsB,EAAA,UAAA,EACpB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,eAAe;wBACf,kBAAkB;wBAClB,kBAAkB;wBAClB,iBAAiB;qBAClB,EAAA,SAAA,EACU,CAAC,YAAY,EAAE,eAAe,CAAC,EAAA,aAAA,EAG3B,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,8sDAAA,EAAA,MAAA,EAAA,CAAA,oKAAA,CAAA,EAAA;;;MEE1B,oBAAoB,CAAA;AAsBA,IAAA,UAAA;AACrB,IAAA,YAAA;IAtBD,KAAK,GAAW,mBAAmB;IACnC,WAAW,GAAW,iCAAiC;IACvD,IAAI,GAAW,UAAU;IACzB,QAAQ,GAAY,KAAK;IACzB,QAAQ,GAAY,KAAK;IACzB,SAAS,GAAY,IAAI;IACzB,WAAW,GAAW,EAAE;IACxB,OAAO,GAA4B,IAAI;AAEtC,IAAA,WAAW,GAAG,IAAI,YAAY,EAAiB;AAEzD,IAAA,MAAM,GAAmC,MAAM,CAAC,EAAE,kDAAC;AACnD,IAAA,OAAO,GAA4B,MAAM,CAAC,KAAK,mDAAC;AACxC,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;;IAGtC,KAAK,GAAkB,IAAI;AAC3B,IAAA,QAAQ,GAAQ,MAAK,EAAE,CAAC;AACxB,IAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;IAEzB,WAAA,CAC+B,UAAkB,EACvC,YAA0B,EAAA;QADL,IAAA,CAAA,UAAU,GAAV,UAAU;QAC/B,IAAA,CAAA,YAAY,GAAZ,YAAY;IACnB;IAEH,QAAQ,GAAA;AACN,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtC,IAAI,CAAC,UAAU,EAAE;QACnB;IACF;;AAGA,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,OAAsB;IACpC;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IAC1B;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC;aACF,WAAW,CAAC,EAAE;AACd,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAiC,KAAI;AAC5D,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,MAAM;oBACtB,KAAK,EAAE,KAAK,CAAC,EAAE;AACf,oBAAA,KAAK,EAAE,CAAA,EAAG,KAAK,CAAC,UAAU,CAAA,CAAA,EAAI,KAAK,CAAC,SAAS,CAAA,GAAA,EAAM,KAAK,CAAC,KAAK,CAAA,CAAE;AACjE,iBAAA,CAAC,CAAC,IAAI,EAAE,CACV;AACD,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YACzB,CAAC;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;AACnB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YACzB,CAAC;AACF,SAAA,CAAC;IACN;;AAGA,IAAA,eAAe,CAAC,KAAY,EAAA;AAC1B,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA2B;AAChD,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI;;AAGxD,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;AAGlB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC5B,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;QAC9B;;AAGA,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;IAC9B;;AAGA,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC7B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;IACpB;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;;AAGA,IAAA,QAAQ,CAAC,OAAoB,EAAA;QAC3B,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACnC,YAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC3B;AACA,QAAA,OAAO,IAAI;IACb;;AAGA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,KAAK;IACd;AA1GW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,kBAsBrB,WAAW,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAtBV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,2SC7BjC,iSAWA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDcY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,6hBAAE,mBAAmB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,IAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAIrD,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;+BACE,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,CAAC,EAAA,QAAA,EAAA,iSAAA,EAAA;;0BA0B9D,MAAM;2BAAC,WAAW;;sBArBpB;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;;MEaU,mBAAmB,CAAA;AAyBV,IAAA,aAAA;IAtBX,KAAK,GAAW,QAAQ;IACxB,IAAI,GAAW,SAAS;IACxB,WAAW,GAAW,uBAAuB;IAC7C,QAAQ,GAAY,KAAK;IACzB,QAAQ,GAAY,KAAK;IACzB,QAAQ,GAAY,KAAK;IACzB,OAAO,GAAkB,IAAI;IAC7B,SAAS,GAAY,IAAI;IACzB,WAAW,GAAW,EAAE;IACxB,OAAO,GAA4B,IAAI;AAEtC,IAAA,UAAU,GAAG,IAAI,YAAY,EAAiB;AAExD,IAAA,MAAM,GAAmC,MAAM,CAAC,EAAE,kDAAC;IACnD,OAAO,GAAY,KAAK;AAChB,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;;IAGtC,KAAK,GAAkB,IAAI;AAC3B,IAAA,QAAQ,GAAQ,MAAK,EAAE,CAAC;AACxB,IAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;AAEzB,IAAA,WAAA,CAAoB,aAA4B,EAAA;QAA5B,IAAA,CAAA,aAAa,GAAb,aAAa;IAAkB;;AAGnD,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,OAAsB;IACpC;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,EAAE;IACnB;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;AACzD,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AAE1B,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,IAAI,CAAC,UAAU,EAAE;YACnB;iBAAO;AACL,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB;QACF;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IAC1B;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC;aACF,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,IAAI,SAAS,EAAE;AACnD,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,QAAwB,KAAI;gBACjC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC;AACvD,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;YACtB,CAAC;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;AACnB,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;YACtB,CAAC;AACF,SAAA,CAAC;IACN;AAEA,IAAA,cAAc,CAAC,KAAY,EAAA;AACzB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA2B;AAChD,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI;AACxD,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACpB,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;IAC7B;;AAGA,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC7B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;IACpB;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC5B;;AAGA,IAAA,QAAQ,CAAC,OAAoB,EAAA;QAC3B,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACnC,YAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC3B;AACA,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO;IACxE;wGAhHW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,SAAA,EAbnB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClDH,gRAWA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDwBY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,6hBAAE,mBAAmB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,IAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAiBrD,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBApB/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,UAAA,EACX,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,CAAC,EAAA,aAAA,EAGlD,iBAAiB,CAAC,IAAI,EAAA,SAAA,EAC1B;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC;AAClD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC;AAClD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,gRAAA,EAAA;;sBAKA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;;MEtCU,sBAAsB,CAAA;AAsBF,IAAA,UAAA;AACrB,IAAA,cAAA;IAtBD,KAAK,GAAW,MAAM;IACtB,WAAW,GAAW,oBAAoB;IAC1C,IAAI,GAAW,YAAY;IAC3B,QAAQ,GAAY,KAAK;IACzB,QAAQ,GAAY,KAAK;IACzB,SAAS,GAAY,IAAI;IACzB,WAAW,GAAW,EAAE;IACxB,OAAO,GAA4B,IAAI;AAEtC,IAAA,aAAa,GAAG,IAAI,YAAY,EAAiB;AAE3D,IAAA,SAAS,GAAmC,MAAM,CAAC,EAAE,qDAAC;AACtD,IAAA,OAAO,GAA4B,MAAM,CAAC,KAAK,mDAAC;AACxC,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;;IAGtC,KAAK,GAAkB,IAAI;AAC3B,IAAA,QAAQ,GAAQ,MAAK,EAAE,CAAC;AACxB,IAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;IAEzB,WAAA,CAC+B,UAAkB,EACvC,cAA8B,EAAA;QADT,IAAA,CAAA,UAAU,GAAV,UAAU;QAC/B,IAAA,CAAA,cAAc,GAAd,cAAc;IACrB;IAEH,QAAQ,GAAA;AACN,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtC,IAAI,CAAC,aAAa,EAAE;QACtB;IACF;;AAGA,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,OAAsB;IACpC;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IAC1B;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC;aACF,cAAc,CAAC,EAAE;AACjB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAkC,KAAI;AAChE,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAChB,SAAS,EAAE,GAAG,CAAC,CAAC,OAAO,MAAM;oBAC3B,KAAK,EAAE,OAAO,CAAC,EAAE;oBACjB,KAAK,EAAE,OAAO,CAAC,IAAI;AACpB,iBAAA,CAAC,CAAC,IAAI,EAAE,CACV;AACD,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YACzB,CAAC;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;AACtB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YACzB,CAAC;AACF,SAAA,CAAC;IACN;;AAGA,IAAA,iBAAiB,CAAC,KAAY,EAAA;AAC5B,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA2B;AAChD,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI;;AAGxD,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;AAGlB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC5B,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;QAC9B;;AAGA,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;IAChC;;AAGA,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC7B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;IACpB;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;;AAGA,IAAA,QAAQ,CAAC,OAAoB,EAAA;QAC3B,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACnC,YAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC3B;AACA,QAAA,OAAO,IAAI;IACb;;AAGA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,KAAK;IACd;AA1GW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,kBAsBvB,WAAW,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAtBV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,iTC5BnC,mTAWA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDaY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,6hBAAE,mBAAmB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,IAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAIrD,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,CAAC,EAAA,QAAA,EAAA,mTAAA,EAAA;;0BA0B9D,MAAM;2BAAC,WAAW;;sBArBpB;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;;MEYU,oBAAoB,CAAA;AAwBX,IAAA,aAAA;IArBX,KAAK,GAAW,cAAc;IAC9B,IAAI,GAAW,UAAU;IACzB,WAAW,GAAW,4BAA4B;IAClD,QAAQ,GAAY,KAAK;IACzB,QAAQ,GAAY,KAAK;IACzB,SAAS,GAAkB,IAAI;IAC/B,SAAS,GAAY,IAAI;IACzB,WAAW,GAAW,EAAE;IACxB,OAAO,GAA4B,IAAI;AAEtC,IAAA,WAAW,GAAG,IAAI,YAAY,EAAiB;AAEzD,IAAA,MAAM,GAAmC,MAAM,CAAC,EAAE,kDAAC;IACnD,OAAO,GAAY,KAAK;AAChB,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;;IAGtC,KAAK,GAAkB,IAAI;AAC3B,IAAA,QAAQ,GAAQ,MAAK,EAAE,CAAC;AACxB,IAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;AAEzB,IAAA,WAAA,CAAoB,aAA4B,EAAA;QAA5B,IAAA,CAAA,aAAa,GAAb,aAAa;IAAkB;IAEnD,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,EAAE;IACnB;;AAGA,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,OAAsB;IACpC;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE;AAC7D,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACnB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AAE3B,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,UAAU,EAAE;YACnB;iBAAO;AACL,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB;QACF;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IAC1B;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC;aACF,WAAW,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,SAAU,EAAE;AAC3C,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAA+B,KAAI;AAC1D,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAClF,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;YACtB,CAAC;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;AACnB,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;YACtB,CAAC;AACF,SAAA,CAAC;IACN;AAEA,IAAA,eAAe,CAAC,KAAY,EAAA;AAC1B,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA2B;AAChD,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI;AACxD,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACpB,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;IAC9B;AAEA,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC7B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;IACpB;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,QAAQ,CAAC,OAAoB,EAAA;QAC3B,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACnC,YAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC3B;AACA,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO;IACzD;wGAzGW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAbpB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC;AACnD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC;AACnD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChDH,4SAWA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDsBY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,6hBAAE,mBAAmB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,IAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAiBrD,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBApBhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,CAAC,EAAA,aAAA,EAGlD,iBAAiB,CAAC,IAAI,EAAA,SAAA,EAC1B;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,0BAA0B,CAAC;AACnD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAAE,UAAU,CAAC,0BAA0B,CAAC;AACnD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,4SAAA,EAAA;;sBAKA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;;ME5BU,uBAAuB,CAAA;AAuBd,IAAA,eAAA;IAtBX,KAAK,GAAW,SAAS;IACzB,WAAW,GAAW,uBAAuB;IAC7C,IAAI,GAAW,aAAa;IAC5B,QAAQ,GAAY,KAAK;IACzB,QAAQ,GAAY,KAAK;IACzB,QAAQ,GAAG,KAAK;AAEf,IAAA,cAAc,GAAG,IAAI,YAAY,EAAiB;IAE5D,KAAK,GAAkB,IAAI;AAC3B,IAAA,QAAQ,GAAQ,MAAK,EAAE,CAAC;AACxB,IAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;AAEzB,IAAA,MAAM,GAAsB;QAC1B,IAAI,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC;AACvF,QAAA,GAAG,EAAE,CAAC,GAAG,KACP,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,QAAkB,MAAM;YAC/C,KAAK,EAAE,QAAQ,CAAC,EAAE;AAClB,YAAA,KAAK,EAAE,CAAA,EAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAA,GAAA,EAAM,QAAQ,CAAC,KAAK,CAAA,CAAE,CAAC,IAAI,EAAE;SACrE,CAAC,CAAC,IAAI,EAAE;KACZ;AAED,IAAA,WAAA,CAAoB,eAAgC,EAAA;QAAhC,IAAA,CAAA,eAAe,GAAf,eAAe;IAAoB;AAEvD,IAAA,gBAAgB,CAAC,KAAU,EAAA;AACzB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACpB,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;IACjC;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;IACpB;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,QAAQ,CAAC,OAAoB,EAAA;QAC3B,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACnC,YAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC3B;AACA,QAAA,OAAO,IAAI;IACb;wGAjDW,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,SAAA,EAbvB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC;AACtD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC;AACtD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjCH,yUAaA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDOY,oBAAoB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAehC,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAlBnC,SAAS;+BACE,iBAAiB,EAAA,UAAA,EACf,IAAI,EAAA,OAAA,EACP,CAAC,oBAAoB,EAAE,WAAW,CAAC,EAAA,SAAA,EAEjC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,6BAA6B,CAAC;AACtD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAAE,UAAU,CAAC,6BAA6B,CAAC;AACtD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,yUAAA,EAAA;;sBAGA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;;MEMU,0BAA0B,CAAA;AAyBN,IAAA,UAAA;AACrB,IAAA,kBAAA;IAvBD,KAAK,GAAW,SAAS;IACzB,WAAW,GAAW,wBAAwB;IAC9C,IAAI,GAAW,gBAAgB;IAC/B,QAAQ,GAAY,KAAK;IACzB,QAAQ,GAAY,KAAK;IACzB,SAAS,GAAY,IAAI;IACzB,WAAW,GAAW,EAAE;IACxB,OAAO,GAA4B,IAAI;AAEtC,IAAA,iBAAiB,GAAG,IAAI,YAAY,EAAiB;AAE/D,IAAA,YAAY,GAAmC,MAAM,CAAC,EAAE,wDAAC;AACzD,IAAA,OAAO,GAA4B,MAAM,CAAC,KAAK,mDAAC;IAChD,UAAU,GAAW,EAAE;AACf,IAAA,aAAa,GAAG,IAAI,OAAO,EAAU;AACrC,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;IAEtC,KAAK,GAAkB,IAAI;AAC3B,IAAA,QAAQ,GAAQ,MAAK,EAAE,CAAC;AACxB,IAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;IAEzB,WAAA,CAC+B,UAAkB,EACvC,kBAAsC,EAAA;QADjB,IAAA,CAAA,UAAU,GAAV,UAAU;QAC/B,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;IACzB;IAEH,QAAQ,GAAA;AACN,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;YAErE,IAAI,CAAC,kBAAkB,CAAC;AACrB,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,iBAAA,SAAS,CAAC,CAAC,YAA2B,KAAI;AACzC,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CACnB,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM;oBACxB,KAAK,EAAE,CAAC,CAAC,EAAE;oBACX,KAAK,EAAE,CAAA,EAAG,CAAC,CAAC,IAAI,EAAE,KAAK,IAAI,CAAA,MAAA,EAAS,CAAC,CAAC,OAAO,EAAE,CAAA,GAAA,EAAM,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,kBAAkB,EAAE,CAAA,CAAE;AACnG,iBAAA,CAAC,CAAC,IAAI,EAAE,CACV;AACD,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,YAAA,CAAC,CAAC;AAEJ,YAAA,IAAI,CAAC;AACF,iBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,oBAAoB,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AACxE,iBAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AACpB,gBAAA,IAAI,CAAC,UAAU,GAAG,MAAM;AACxB,gBAAA,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACvE,YAAA,CAAC,CAAC;QACN;IACF;AAEA,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,OAAsB;IACpC;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IAC1B;AAEA,IAAA,cAAc,CAAC,MAAc,EAAA;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;IACjC;AAEA,IAAA,qBAAqB,CAAC,KAAY,EAAA;AAChC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA2B;AAChD,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI;AAExD,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAElB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC5B,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;QAC9B;AAEA,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;IACpC;AAEA,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC7B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;IACpB;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,QAAQ,CAAC,OAAoB,EAAA;QAC3B,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACnC,YAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC3B;AACA,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,KAAK;IACd;AAtGW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,kBAyB3B,WAAW,EAAA,EAAA,EAAA,KAAA,EAAAa,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAzBV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,SAAA,EAb1B;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,0BAA0B,CAAC;AACzD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,0BAA0B,CAAC;AACzD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/CH,8TAWA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDsBY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,6hBAAE,mBAAmB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,IAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAgBrD,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAnBtC,SAAS;+BACE,oBAAoB,EAAA,UAAA,EAClB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,CAAC,EAAA,SAAA,EAGtD;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,gCAAgC,CAAC;AACzD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAAE,UAAU,CAAC,gCAAgC,CAAC;AACzD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,8TAAA,EAAA;;0BA2BE,MAAM;2BAAC,WAAW;;sBAtBpB;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;;ME5BU,+BAA+B,CAAA;AAkBX,IAAA,UAAA;AACrB,IAAA,kBAAA;IAlBD,KAAK,GAAW,WAAW;IAC3B,WAAW,GAAW,qBAAqB;AAEpD,IAAA,eAAe,GAAmC,MAAM,CAAC,EAAE,2DAAC;AAC5D,IAAA,oBAAoB,GAAmC,MAAM,CAAC,EAAE,gEAAC;AACjE,IAAA,OAAO,GAA4B,MAAM,CAAC,IAAI,mDAAC;IAE/C,WAAW,GAAa,EAAE;IAC1B,UAAU,GAAW,EAAE;AAEf,IAAA,aAAa,GAAG,IAAI,OAAO,EAAU;AACrC,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;AAEtC,IAAA,QAAQ,GAAQ,MAAK,EAAE,CAAC;AACxB,IAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;IAEzB,WAAA,CAC+B,UAAkB,EACvC,kBAAsC,EAAA;QADjB,IAAA,CAAA,UAAU,GAAV,UAAU;QAC/B,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;IACzB;IAEH,QAAQ,GAAA;AACN,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAE5C,IAAI,CAAC,kBAAkB,CAAC;AACrB,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,iBAAA,SAAS,CAAC,CAAC,YAA2B,KAAI;AACzC,gBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CACtB,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM;oBACxB,KAAK,EAAE,CAAC,CAAC,EAAE;oBACX,KAAK,EAAE,CAAA,EAAG,CAAC,CAAC,IAAI,EAAE,KAAK,IAAI,CAAA,MAAA,EAAS,CAAC,CAAC,OAAO,EAAE,CAAA,GAAA,EAAM,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,cAAc,EAAE,CAAA,CAAE;AAC/F,iBAAA,CAAC,CAAC,IAAI,EAAE,CACV;gBACD,IAAI,CAAC,WAAW,EAAE;AAClB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,YAAA,CAAC,CAAC;AAEJ,YAAA,IAAI,CAAC;AACF,iBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,oBAAoB,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AACxE,iBAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AACpB,gBAAA,IAAI,CAAC,UAAU,GAAG,MAAM;AACxB,gBAAA,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACvE,YAAA,CAAC,CAAC;QACN;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IAC1B;IAEQ,WAAW,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;AAC1C,YAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAC3B,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAC3E;QACH;aAAO;AACL,YAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QAC5D;IACF;AAEA,IAAA,cAAc,CAAC,KAAY,EAAA;AACzB,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;AACtD,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;IAChC;AAEA,IAAA,UAAU,CAAC,EAAU,EAAA;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;IACtC;AAEA,IAAA,iBAAiB,CAAC,EAAU,EAAA;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;AAC1C,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACd,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAC7D;aAAO;YACL,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QAC9C;AACA,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;QAC/B,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA,IAAA,iBAAiB,CAAC,EAAU,EAAA;AAC1B,QAAA,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;IAC5B;AAEA,IAAA,mBAAmB,CAAC,EAAU,EAAA;QAC5B,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE;IACxE;AAEA,IAAA,UAAU,CAAC,KAAsB,EAAA;AAC/B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,IAAI,EAAE;IAChC;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAtGW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,+BAA+B,kBAkBhC,WAAW,EAAA,EAAA,EAAA,KAAA,EAAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAlBV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAR/B;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,+BAA+B,CAAC;AAC9D,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;SACF,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/BH,irDA0DA,27DDpCY,YAAY,EAAA,CAAA,EAAA,CAAA;;4FAWX,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAd3C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,cACxB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,SAAA,EAGZ;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,qCAAqC,CAAC;AAC9D,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,irDAAA,EAAA,MAAA,EAAA,CAAA,o4DAAA,CAAA,EAAA;;0BAoBE,MAAM;2BAAC,WAAW;;sBAjBpB;;sBACA;;;MEcU,sBAAsB,CAAA;AAuBF,IAAA,UAAA;AACrB,IAAA,cAAA;IAvBD,KAAK,GAAW,UAAU;IAC1B,WAAW,GAAW,wBAAwB;IAC9C,IAAI,GAAW,YAAY;IAC3B,QAAQ,GAAY,KAAK;IACzB,QAAQ,GAAY,KAAK;IACzB,SAAS,GAAY,IAAI;IACzB,WAAW,GAAW,EAAE;IACxB,OAAO,GAA4B,IAAI;AAEtC,IAAA,aAAa,GAAG,IAAI,YAAY,EAAiB;AAE3D,IAAA,QAAQ,GAAmC,MAAM,CAAC,EAAE,oDAAC;AACrD,IAAA,OAAO,GAA4B,MAAM,CAAC,KAAK,mDAAC;IAChD,UAAU,GAAW,EAAE;AACf,IAAA,aAAa,GAAG,IAAI,OAAO,EAAU;AACrC,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;IAEtC,KAAK,GAAkB,IAAI;AAC3B,IAAA,QAAQ,GAAQ,MAAK,EAAE,CAAC;AACxB,IAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;IAEzB,WAAA,CAC+B,UAAkB,EACvC,cAA8B,EAAA;QADT,IAAA,CAAA,UAAU,GAAV,UAAU;QAC/B,IAAA,CAAA,cAAc,GAAd,cAAc;IACrB;IAEH,QAAQ,GAAA;AACN,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;YAE7D,IAAI,CAAC,cAAc,CAAC;AACjB,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,iBAAA,SAAS,CAAC,CAAC,QAAmB,KAAI;AACjC,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CACf,QAAQ,EAAE,GAAG,CAAC,CAAC,OAAO,MAAM;oBAC1B,KAAK,EAAE,OAAO,CAAC,EAAE;oBACjB,KAAK,EAAE,OAAO,CAAC,IAAI;AACpB,iBAAA,CAAC,CAAC,IAAI,EAAE,CACV;AACD,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,YAAA,CAAC,CAAC;AAEJ,YAAA,IAAI,CAAC;AACF,iBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,oBAAoB,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AACxE,iBAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AACpB,gBAAA,IAAI,CAAC,UAAU,GAAG,MAAM;AACxB,gBAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AAC/D,YAAA,CAAC,CAAC;QACN;IACF;AAEA,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,OAAsB;IACpC;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IAC1B;AAEA,IAAA,cAAc,CAAC,MAAc,EAAA;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;IACjC;AAEA,IAAA,iBAAiB,CAAC,KAAY,EAAA;AAC5B,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA2B;AAChD,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI;AAExD,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAElB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC5B,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;QAC9B;AAEA,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;IAChC;AAEA,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC7B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;IACpB;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,QAAQ,CAAC,OAAoB,EAAA;QAC3B,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACnC,YAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC3B;AACA,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,KAAK;IACd;AApGW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,kBAuBvB,WAAW,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAvBV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAbtB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,sBAAsB,CAAC;AACrD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,sBAAsB,CAAC;AACrD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/CH,kTAWA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDsBY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,6hBAAE,mBAAmB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,IAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAgBrD,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAnBlC,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,CAAC,EAAA,SAAA,EAGtD;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,4BAA4B,CAAC;AACrD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAAE,UAAU,CAAC,4BAA4B,CAAC;AACrD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,kTAAA,EAAA;;0BAyBE,MAAM;2BAAC,WAAW;;sBAtBpB;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;;MEnBU,2BAA2B,CAAA;AAsBP,IAAA,UAAA;AACrB,IAAA,cAAA;IAtBD,KAAK,GAAW,WAAW;IAC3B,WAAW,GAAW,qBAAqB;IACpD,IAAa,gBAAgB,CAAC,GAAoB,EAAA;AAChD,QAAA,IAAI,CAAC,WAAW,GAAG,GAAG,IAAI,EAAE;IAC9B;AACU,IAAA,eAAe,GAAG,IAAI,YAAY,EAAY;AAExD,IAAA,WAAW,GAAoC,MAAM,CAAC,EAAE,uDAAC;AACzD,IAAA,gBAAgB,GAAoC,MAAM,CAAC,EAAE,4DAAC;AAC9D,IAAA,OAAO,GAA4B,MAAM,CAAC,IAAI,mDAAC;IAE/C,WAAW,GAAa,EAAE;IAC1B,UAAU,GAAW,EAAE;AAEf,IAAA,aAAa,GAAG,IAAI,OAAO,EAAU;AACrC,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;AAEtC,IAAA,QAAQ,GAAQ,MAAK,EAAE,CAAC;AACxB,IAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;IAEzB,WAAA,CAC+B,UAAkB,EACvC,cAA8B,EAAA;QADT,IAAA,CAAA,UAAU,GAAV,UAAU;QAC/B,IAAA,CAAA,cAAc,GAAd,cAAc;IACrB;IAEH,QAAQ,GAAA;AACN,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;YAE7D,IAAI,CAAC,cAAc,CAAC;AACjB,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,iBAAA,SAAS,CAAC,CAAC,QAAmB,KAAI;AACjC,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAClB,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM;oBACpB,KAAK,EAAE,CAAC,CAAC,EAAE;oBACX,KAAK,EAAE,CAAC,CAAC,IAAI;oBACb,QAAQ,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,QAAQ,IAAI,IAAI;AAC1C,iBAAA,CAAC,CAAC,IAAI,EAAE,CACV;gBACD,IAAI,CAAC,WAAW,EAAE;AAClB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,YAAA,CAAC,CAAC;AAEJ,YAAA,IAAI,CAAC;AACF,iBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,oBAAoB,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AACxE,iBAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AACpB,gBAAA,IAAI,CAAC,UAAU,GAAG,MAAM;AACxB,gBAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AAC/D,YAAA,CAAC,CAAC;QACN;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IAC1B;IAEQ,WAAW,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;AAC1C,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CACvB,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CACvE;QACH;aAAO;AACL,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACpD;IACF;AAEA,IAAA,cAAc,CAAC,KAAY,EAAA;AACzB,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;AACtD,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;IAChC;AAEA,IAAA,UAAU,CAAC,EAAU,EAAA;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;IACtC;AAEA,IAAA,aAAa,CAAC,EAAU,EAAA;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;AAC1C,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACd,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAC7D;aAAO;YACL,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QAC9C;AACA,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;QAC/B,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;IAC7C;AAEA,IAAA,aAAa,CAAC,EAAU,EAAA;AACtB,QAAA,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;IACxB;AAEA,IAAA,gBAAgB,CAAC,EAAU,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;IACvD;AAEA,IAAA,UAAU,CAAC,KAAsB,EAAA;AAC/B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,IAAI,EAAE;IAChC;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AA5GW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,kBAsB5B,WAAW,EAAA,EAAA,EAAA,KAAA,EAAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAtBV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,SAAA,EAR3B;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,2BAA2B,CAAC;AAC1D,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;SACF,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtCH,miEAiEA,6yEDpCY,YAAY,EAAA,CAAA,EAAA,CAAA;;4FAWX,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAdvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,cACpB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,SAAA,EAGZ;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,iCAAiC,CAAC;AAC1D,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,miEAAA,EAAA,MAAA,EAAA,CAAA,svEAAA,CAAA,EAAA;;0BAwBE,MAAM;2BAAC,WAAW;;sBArBpB;;sBACA;;sBACA;;sBAGA;;;MEGU,mBAAmB,CAAA;AAuBC,IAAA,UAAA;AACrB,IAAA,WAAA;IAvBD,KAAK,GAAW,SAAS;IACzB,WAAW,GAAW,wBAAwB;IAC9C,IAAI,GAAW,SAAS;IACxB,QAAQ,GAAY,KAAK;IACzB,QAAQ,GAAY,KAAK;IACzB,SAAS,GAAY,IAAI;IACzB,WAAW,GAAW,EAAE;IACxB,OAAO,GAA4B,IAAI;AAEtC,IAAA,UAAU,GAAG,IAAI,YAAY,EAAiB;AAExD,IAAA,KAAK,GAAmC,MAAM,CAAC,EAAE,iDAAC;AAClD,IAAA,OAAO,GAA4B,MAAM,CAAC,KAAK,mDAAC;IAChD,UAAU,GAAW,EAAE;AACf,IAAA,aAAa,GAAG,IAAI,OAAO,EAAU;AACrC,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;IAEtC,KAAK,GAAkB,IAAI;AAC3B,IAAA,QAAQ,GAAQ,MAAK,EAAE,CAAC;AACxB,IAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;IAEzB,WAAA,CAC+B,UAAkB,EACvC,WAAwB,EAAA;QADH,IAAA,CAAA,UAAU,GAAV,UAAU;QAC/B,IAAA,CAAA,WAAW,GAAX,WAAW;IAClB;IAEH,QAAQ,GAAA;AACN,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;YAEvD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAa,KAAI;AACjF,gBAAA,MAAM,SAAS,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE;AACrF,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;AACzB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,YAAA,CAAC,CAAC;AAEF,YAAA,IAAI,CAAC;AACF,iBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,oBAAoB,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AACxE,iBAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AACpB,gBAAA,IAAI,CAAC,UAAU,GAAG,MAAM;AACxB,gBAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACzD,YAAA,CAAC,CAAC;QACN;IACF;AAEA,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,OAAsB;IACpC;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IAC1B;AAEA,IAAA,cAAc,CAAC,MAAc,EAAA;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;IACjC;AAEA,IAAA,cAAc,CAAC,KAAY,EAAA;AACzB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA2B;AAChD,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI;AAExD,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAElB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC5B,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;QAC9B;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;IAC7B;AAEA,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC7B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;IACpB;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,QAAQ,CAAC,OAAoB,EAAA;QAC3B,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACnC,YAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC3B;AACA,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,KAAK;IACd;AA9FW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,kBAuBpB,WAAW,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAvBV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,SAAA,EAbnB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/CH,ySAWA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDsBY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,6hBAAE,mBAAmB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,IAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAgBrD,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAnB/B,SAAS;+BACE,aAAa,EAAA,UAAA,EACX,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,CAAC,EAAA,SAAA,EAGtD;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC;AAClD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC;AAClD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,ySAAA,EAAA;;0BAyBE,MAAM;2BAAC,WAAW;;sBAtBpB;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;;ME1BU,wBAAwB,CAAA;AAkBJ,IAAA,UAAA;AACrB,IAAA,WAAA;IAlBD,KAAK,GAAW,WAAW;IAC3B,WAAW,GAAW,qBAAqB;AAEpD,IAAA,QAAQ,GAAmC,MAAM,CAAC,EAAE,oDAAC;AACrD,IAAA,aAAa,GAAmC,MAAM,CAAC,EAAE,yDAAC;AAC1D,IAAA,OAAO,GAA4B,MAAM,CAAC,IAAI,mDAAC;IAE/C,WAAW,GAAa,EAAE;IAC1B,UAAU,GAAW,EAAE;AAEf,IAAA,aAAa,GAAG,IAAI,OAAO,EAAU;AACrC,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;AAEtC,IAAA,QAAQ,GAAQ,MAAK,EAAE,CAAC;AACxB,IAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;IAEzB,WAAA,CAC+B,UAAkB,EACvC,WAAwB,EAAA;QADH,IAAA,CAAA,UAAU,GAAV,UAAU;QAC/B,IAAA,CAAA,WAAW,GAAX,WAAW;IAClB;IAEH,QAAQ,GAAA;AACN,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;YAE9B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAa,KAAI;AACjF,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CACf,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,MAAM;oBACpB,KAAK,EAAE,IAAI,CAAC,EAAE;oBACd,KAAK,EAAE,IAAI,CAAC,KAAK;AAClB,iBAAA,CAAC,CAAC,IAAI,EAAE,CACV;gBACD,IAAI,CAAC,WAAW,EAAE;AAClB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,YAAA,CAAC,CAAC;AAEF,YAAA,IAAI,CAAC;AACF,iBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,oBAAoB,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AACxE,iBAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AACpB,gBAAA,IAAI,CAAC,UAAU,GAAG,MAAM;AACxB,gBAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACzD,YAAA,CAAC,CAAC;QACN;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IAC1B;IAEQ,WAAW,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;AAC1C,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7F;aAAO;AACL,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9C;IACF;AAEA,IAAA,cAAc,CAAC,KAAY,EAAA;AACzB,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;AACtD,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;IAChC;AAEA,IAAA,UAAU,CAAC,EAAU,EAAA;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;IACtC;AAEA,IAAA,UAAU,CAAC,EAAU,EAAA;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;AAC1C,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACd,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAC7D;aAAO;YACL,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QAC9C;AACA,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;QAC/B,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA,IAAA,UAAU,CAAC,EAAU,EAAA;AACnB,QAAA,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;IACrB;AAEA,IAAA,YAAY,CAAC,EAAU,EAAA;QACrB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE;IACjE;AAEA,IAAA,UAAU,CAAC,KAAsB,EAAA;AAC/B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,IAAI,EAAE;IAChC;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAlGW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,kBAkBzB,WAAW,EAAA,EAAA,EAAA,KAAA,EAAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAlBV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EARxB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,wBAAwB,CAAC;AACvD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;SACF,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/BH,wgDAsDA,+yDDhCY,YAAY,EAAA,CAAA,EAAA,CAAA;;4FAWX,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAdpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,cACjB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,SAAA,EAGZ;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,8BAA8B,CAAC;AACvD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,wgDAAA,EAAA,MAAA,EAAA,CAAA,wvDAAA,CAAA,EAAA;;0BAoBE,MAAM;2BAAC,WAAW;;sBAjBpB;;sBACA;;;MEgBU,wBAAwB,CAAA;AA0BJ,IAAA,UAAA;AACrB,IAAA,gBAAA;IAxBD,KAAK,GAAW,WAAW;IAC3B,WAAW,GAAW,0BAA0B;IAChD,IAAI,GAAW,eAAe;IAC9B,QAAQ,GAAY,KAAK;IACzB,QAAQ,GAAY,KAAK;IACzB,SAAS,GAAY,IAAI;IACzB,WAAW,GAAW,EAAE;IACxB,OAAO,GAA4B,IAAI;IACvC,OAAO,GAAa,EAAE;AAErB,IAAA,eAAe,GAAG,IAAI,YAAY,EAAiB;AAE7D,IAAA,UAAU,GAAmC,MAAM,CAAC,EAAE,sDAAC;AACvD,IAAA,OAAO,GAA4B,MAAM,CAAC,KAAK,mDAAC;IAChD,UAAU,GAAW,EAAE;AACf,IAAA,aAAa,GAAG,IAAI,OAAO,EAAU;AACrC,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;IAEtC,KAAK,GAAkB,IAAI;AAC3B,IAAA,QAAQ,GAAQ,MAAK,EAAE,CAAC;AACxB,IAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;IAEzB,WAAA,CAC+B,UAAkB,EACvC,gBAAkC,EAAA;QADb,IAAA,CAAA,UAAU,GAAV,UAAU;QAC/B,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;IACvB;IAEH,QAAQ,GAAA;AACN,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC;gBACnC,MAAM,EAAE,IAAI,CAAC,UAAU;gBACvB,QAAQ,EAAE,IAAI,CAAC,OAAO;AACvB,aAAA,CAAC;YAEF,IAAI,CAAC,gBAAgB,CAAC;AACnB,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,iBAAA,SAAS,CAAC,CAAC,UAAuB,KAAI;AACrC,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACjB,UAAU,EAAE,GAAG,CAAC,CAAC,EAAE,MAAM;oBACvB,KAAK,EAAE,EAAE,CAAC,EAAE;oBACZ,KAAK,EAAE,EAAE,CAAC,IAAI;AACf,iBAAA,CAAC,CAAC,IAAI,EAAE,CACV;AACD,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,YAAA,CAAC,CAAC;AAEJ,YAAA,IAAI,CAAC;AACF,iBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,oBAAoB,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AACxE,iBAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AACpB,gBAAA,IAAI,CAAC,UAAU,GAAG,MAAM;AACxB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC;oBACnC,MAAM,EAAE,IAAI,CAAC,UAAU;oBACvB,QAAQ,EAAE,IAAI,CAAC,OAAO;AACvB,iBAAA,CAAC;AACJ,YAAA,CAAC,CAAC;QACN;IACF;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IACE,OAAO,CAAC,SAAS,CAAC;AAClB,YAAA,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW;AAC/B,YAAA,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAClC;AACA,YAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC;gBACnC,MAAM,EAAE,IAAI,CAAC,UAAU;gBACvB,QAAQ,EAAE,IAAI,CAAC,OAAO;AACvB,aAAA,CAAC;QACJ;IACF;AAEA,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,OAAsB;IACpC;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IAC1B;AAEA,IAAA,cAAc,CAAC,MAAc,EAAA;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;IACjC;AAEA,IAAA,mBAAmB,CAAC,KAAY,EAAA;AAC9B,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA2B;AAChD,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI;AAExD,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAElB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC5B,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;QAC9B;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;IAClC;AAEA,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC7B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;IACpB;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,QAAQ,CAAC,OAAoB,EAAA;QAC3B,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACnC,YAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC3B;AACA,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,KAAK;IACd;AA1HW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,kBA0BzB,WAAW,EAAA,EAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AA1BV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,SAAA,EAbxB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,wBAAwB,CAAC;AACvD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,wBAAwB,CAAC;AACvD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjDH,yTAWA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDwBY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,6hBAAE,mBAAmB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,IAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAgBrD,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAnBpC,SAAS;+BACE,mBAAmB,EAAA,UAAA,EACjB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,CAAC,EAAA,SAAA,EAGtD;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,8BAA8B,CAAC;AACvD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAAE,UAAU,CAAC,8BAA8B,CAAC;AACvD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,yTAAA,EAAA;;0BA4BE,MAAM;2BAAC,WAAW;;sBAvBpB;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;;MElDU,qCAAqC,CAAA;AACrB,IAAA,MAAM;IACxB,IAAI,GAAc,IAAI;AAE/B,IAAA,IAAc,YAAY,GAAA;QACxB,OAAO,gCAAgC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC7D;wGANW,qCAAqC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qCAAqC,uICdlD,yLAMA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDKY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,+BAAE,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAnB,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAG/C,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBANjD,SAAS;+BACE,iCAAiC,EAAA,UAAA,EAC/B,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,eAAe,EAAE,iBAAiB,CAAC,EAAA,QAAA,EAAA,yLAAA,EAAA;;sBAI1D,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;;MEFU,+BAA+B,CAAA;AACf,IAAA,WAAW;IAC7B,IAAI,GAAc,IAAI;AAE/B,IAAA,IAAc,YAAY,GAAA;QACxB,OAAO,yBAAyB,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;IAC3D;wGANW,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA/B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,0ICd5C,wLAMA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDKY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,+BAAE,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAG/C,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAN3C,SAAS;+BACE,0BAA0B,EAAA,UAAA,EACxB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,eAAe,EAAE,iBAAiB,CAAC,EAAA,QAAA,EAAA,wLAAA,EAAA;;sBAI1D,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;;MESU,wBAAwB,CAAA;AAOJ,IAAA,UAAA;AACnB,IAAA,kBAAA;AACA,IAAA,gBAAA;AACA,IAAA,YAAA;IATH,WAAW,GAAwB,MAAM;AAClD,IAAA,WAAW,GAA4B,MAAM,CAAC,IAAI,uDAAC;AACnD,IAAA,IAAI,GAA8C,MAAM,CAAC,EAAE,gDAAC;AAChC,IAAA,aAAa;AAEzC,IAAA,WAAA,CAC+B,UAAkB,EACrC,kBAAsC,EACtC,gBAA+C,EAC/C,YAA0B,EAAA;QAHP,IAAA,CAAA,UAAU,GAAV,UAAU;QAC7B,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,YAAY,GAAZ,YAAY;QAEtB,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtC,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AACjB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC;gBAC1C,IAAI,CAAC,QAAQ,EAAE;YACjB;AACF,QAAA,CAAC,CAAC;IACJ;IAEQ,QAAQ,GAAA;AACd,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,SAAS;AAElE,QAAA,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC;AACxE,YAAA,IAAI,EAAE,CAAC,QAAQ,KAAI;gBACjB,MAAM,IAAI,GAAG,QAAQ,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE;AACvC,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBACnB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,EAAE;oBAC5E,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC/C;AACA,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;YAC7B,CAAC;YACD,KAAK,EAAE,MAAK;gBACV,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,0CAA0C,EAAE,OAAO,CAAC;AAC3E,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;YAC7B,CAAC;AACF,SAAA,CAAC;IACJ;AAEA,IAAA,WAAW,CAAC,GAA4B,EAAA;AACtC,QAAA,OAAO,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,EAAE,IAAI;IAC/D;AAEA,IAAA,QAAQ,CAAC,GAA4B,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;YAAE;AAC3B,QAAA,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CAAC;AAClD,QAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,GAAG,CAAC;IAC3C;AAEA,IAAA,cAAc,CAAC,SAAiB,EAAA;AAC9B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,aAAa;AAC/C,QAAA,IAAI,CAAC,KAAK;YAAE;QACZ,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAA4B;AACzD,QAAA,MAAM,SAAS,GAAG,IAAI,EAAE,WAAW,IAAI,GAAG;AAC1C,QAAA,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,IAAI,SAAS,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAC3E;AAzDW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,kBAOzB,WAAW,EAAA,EAAA,EAAA,KAAA,EAAAgB,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,6BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAPV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzBrC,6lFAsFA,EAAA,MAAA,EAAA,CAAA,0hFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDjEY,YAAY,+BAAE,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAnB,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA;;4FAI9B,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,cACjB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,iBAAiB,CAAC,EAAA,QAAA,EAAA,6lFAAA,EAAA,MAAA,EAAA,CAAA,0hFAAA,CAAA,EAAA;;0BAWvC,MAAM;2BAAC,WAAW;;sBANpB;;sBAGA,SAAS;uBAAC,eAAe;;;MEdf,wBAAwB,CAAA;AAMb,IAAA,gBAAA;AALK,IAAA,IAAI;IACtB,QAAQ,GAAW,kBAAkB;AACrC,IAAA,SAAS;AACT,IAAA,eAAe;AAExB,IAAA,WAAA,CAAsB,gBAA+C,EAAA;QAA/C,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;IAAkC;AAExE,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,uBAAuB,GAAG,6BAA6B,GAAG,SAAS,GAAG,OAAO;IAChG;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;IACzD;IAEA,UAAU,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE;IACzE;wGAlBW,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAoB,6BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,wLCfrC,wuEA6EA,EAAA,MAAA,EAAA,CAAA,0hEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDlEY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,sBAAsB,4LAAE,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAnB,IAAA,CAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA;;4FAItD,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,sBAAsB,EAAE,iBAAiB,CAAC,EAAA,QAAA,EAAA,wuEAAA,EAAA,MAAA,EAAA,CAAA,0hEAAA,CAAA,EAAA;;sBAKjE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;sBACA;;;MEGU,4BAA4B,CAAA;AAQR,IAAA,UAAA;AACnB,IAAA,kBAAA;AACA,IAAA,gBAAA;AACA,IAAA,YAAA;IAVH,QAAQ,GAAW,kBAAkB;AACrC,IAAA,SAAS;AACT,IAAA,eAAe;AACxB,IAAA,WAAW,GAA4B,MAAM,CAAC,IAAI,uDAAC;AACnD,IAAA,YAAY,GAA2C,MAAM,CAAC,EAAE,wDAAC;AAEjE,IAAA,WAAA,CAC+B,UAAkB,EACrC,kBAAsC,EACtC,gBAA+C,EAC/C,YAA0B,EAAA;QAHP,IAAA,CAAA,UAAU,GAAV,UAAU;QAC7B,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,YAAY,GAAZ,YAAY;QAEtB,MAAM,CAAC,MAAK;YACV,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE;YACpD,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,QAAQ,EAAE;YACjB;AACF,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE;AACtC,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE;YACpD,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,QAAQ,EAAE;YACjB;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtC,IAAI,CAAC,QAAQ,EAAE;QACjB;IACF;IAEQ,QAAQ,GAAA;AACd,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,SAAS;QAClE,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;YAC3B;QACF;AAEA,QAAA,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC;AAClF,YAAA,IAAI,EAAE,CAAC,QAAQ,KAAI;AACjB,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,IAAI,EAAE,CAAC;AACzD,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;YAC7B,CAAC;YACD,KAAK,EAAE,MAAK;gBACV,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,0CAA0C,EAAE,OAAO,CAAC;AAC3E,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;YAC7B,CAAC;AACF,SAAA,CAAC;IACJ;AAEA,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,EAAE,IAAI,IAAI,IAAI;IAC1D;AA3DW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,kBAQ7B,WAAW,EAAA,EAAA,EAAA,KAAA,EAAAa,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,6BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AARV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtBzC,spBAyBA,EAAA,MAAA,EAAA,CAAA,wuBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDPY,wBAAwB,0HAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAnB,IAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA;;4FAIrC,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAPxC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,cACrB,IAAI,EAAA,OAAA,EACP,CAAC,wBAAwB,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,spBAAA,EAAA,MAAA,EAAA,CAAA,wuBAAA,CAAA,EAAA;;0BAY9C,MAAM;2BAAC,WAAW;;sBAPpB;;sBACA;;sBACA;;;MEjBU,2BAA2B,CAAA;AACX,IAAA,SAAS;AACT,IAAA,KAAK;AACL,IAAA,SAAS;wGAHzB,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,2JCRxC,wUASA,EAAA,MAAA,EAAA,CAAA,ikBAAA,CAAA,EAAA,CAAA;;4FDDa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,cACnB,IAAI,EAAA,QAAA,EAAA,wUAAA,EAAA,MAAA,EAAA,CAAA,ikBAAA,CAAA,EAAA;;sBAKf,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;MEKd,oBAAoB,CAAA;AAKA,IAAA,UAAA;AACnB,IAAA,WAAA;AACA,IAAA,gBAAA;AACA,IAAA,YAAA;AACF,IAAA,MAAA;AARV,IAAA,WAAW,GAA4B,MAAM,CAAC,IAAI,uDAAC;AACnD,IAAA,KAAK,GAA2B,MAAM,CAAC,EAAE,iDAAC;IAE1C,WAAA,CAC+B,UAAkB,EACrC,WAAwB,EACxB,gBAA+C,EAC/C,YAA0B,EAC5B,MAAc,EAAA;QAJO,IAAA,CAAA,UAAU,GAAV,UAAU;QAC7B,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,YAAY,GAAZ,YAAY;QACd,IAAA,CAAA,MAAM,GAAN,MAAM;IACb;IAEH,QAAQ,GAAA;AACN,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtC,IAAI,CAAC,QAAQ,EAAE;QACjB;IACF;IAEQ,QAAQ,GAAA;AACd,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QAE1B,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;AACjD,YAAA,IAAI,EAAE,CAAC,QAAQ,KAAI;AACjB,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;AAC3C,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;YAC7B,CAAC;YACD,KAAK,EAAE,MAAK;gBACV,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,mCAAmC,EAAE,OAAO,CAAC;AACpE,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;YAC7B,CAAC;AACF,SAAA,CAAC;IACJ;AAEA,IAAA,QAAQ,CAAC,MAAc,EAAA;QACrB,OAAO,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,KAAK,MAAM;IAC1D;AAEA,IAAA,QAAQ,CAAC,IAAU,EAAA;QACjB,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,IAAI,iBAAiB,EAAE;AACrB,YAAA,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAC7C,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE;AACvB,gBAAA,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AAC9B,gBAAA,mBAAmB,EAAE,OAAO;AAC7B,aAAA,CAAC;QACJ;aAAO;YACL,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;AAChD,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE;AACvB,gBAAA,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE;AACjC,gBAAA,mBAAmB,EAAE,OAAO;AAC7B,aAAA,CAAC;QACJ;AACA,QAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC;AAC1C,QAAA,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CAAC;IACpD;AAtDW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,kBAKrB,WAAW,EAAA,EAAA,EAAA,KAAA,EAAAgB,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,6BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAnB,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AALV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,wEChBjC,8kDA+CA,EAAA,MAAA,EAAA,CAAA,msCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDnCY,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,+BAAE,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAIlD,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;+BACE,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,OAAA,EACP,CAAC,kBAAkB,EAAE,YAAY,EAAE,iBAAiB,CAAC,EAAA,QAAA,EAAA,8kDAAA,EAAA,MAAA,EAAA,CAAA,msCAAA,CAAA,EAAA;;0BAS3D,MAAM;2BAAC,WAAW;;;MEXV,sBAAsB,CAAA;AACN,IAAA,IAAI;wGADpB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,qGCVnC,gfAYA,EAAA,MAAA,EAAA,CAAA,+lBAAA,CAAA,EAAA,CAAA;;4FDFa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;+BACE,iBAAiB,EAAA,UAAA,EACf,IAAI,EAAA,OAAA,EAGP,EAAE,EAAA,QAAA,EAAA,gfAAA,EAAA,MAAA,EAAA,CAAA,+lBAAA,CAAA,EAAA;;sBAGV,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;MEAd,sBAAsB,CAAA;AACN,IAAA,KAAK;wGADrB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXnC,2LAOA,EAAA,MAAA,EAAA,CAAA,sLAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDAY,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAIrB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,UAAA,EACf,IAAI,EAAA,OAAA,EACP,CAAC,sBAAsB,CAAC,EAAA,QAAA,EAAA,2LAAA,EAAA,MAAA,EAAA,CAAA,sLAAA,CAAA,EAAA;;sBAKhC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;MEFd,wBAAwB,CAAA;wGAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECVrC,0EAGA,EAAA,MAAA,EAAA,CAAA,8JAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDGY,YAAY,EAAA,CAAA,EAAA,CAAA;;4FAIX,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,UAAA,EACjB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,0EAAA,EAAA,MAAA,EAAA,CAAA,8JAAA,CAAA,EAAA;;;MEIZ,8BAA8B,CAAA;IAChC,KAAK,GAAW,EAAE;IAClB,QAAQ,GAAW,EAAE;wGAFnB,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECV3C,wZAeA,EAAA,MAAA,EAAA,CAAA,2gBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDTY,YAAY,EAAA,CAAA,EAAA,CAAA;;4FAIX,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAP1C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,EAAA,UAAA,EACxB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,wZAAA,EAAA,MAAA,EAAA,CAAA,2gBAAA,CAAA,EAAA;;sBAKtB;;sBACA;;;MEDU,8BAA8B,CAAA;AAIrB,IAAA,WAAA;AAHX,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,uDAAC;AAC5D,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,0DAAC;AAE9E,IAAA,WAAA,CAAoB,WAAiC,EAAA;QAAjC,IAAA,CAAA,WAAW,GAAX,WAAW;IAAyB;IAExD,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;IAC3B;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;IAC5B;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;IAC9B;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE;IACnC;AAEA,IAAA,gBAAgB,CAAC,MAAc,EAAA;QAC7B,QAAQ,MAAM;AACZ,YAAA,KAAK,SAAS;gBACZ,IAAI,CAAC,MAAM,EAAE;gBACb;AACF,YAAA,KAAK,UAAU;gBACb,IAAI,CAAC,OAAO,EAAE;gBACd;AACF,YAAA,KAAK,YAAY;gBACf,IAAI,CAAC,SAAS,EAAE;gBAChB;;IAEN;wGAlCW,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAqB,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECX3C,wpBAmBA,EAAA,MAAA,EAAA,CAAA,ogBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDZY,YAAY,EAAA,CAAA,EAAA,CAAA;;4FAIX,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAP1C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,EAAA,UAAA,EACxB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,wpBAAA,EAAA,MAAA,EAAA,CAAA,ogBAAA,CAAA,EAAA;;;MEIZ,+BAA+B,CAAA;AAKtB,IAAA,kBAAA;AAJX,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,2DAAC;AAC3E,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,2DAAC;AAC3E,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,GAAG,CAAC,8DAAC;AAE7E,IAAA,WAAA,CAAoB,kBAAiD,EAAA;QAAjD,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;IAAkC;AAExE,IAAA,cAAc,CAAC,OAAe,EAAA;QAC5B,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC;IAC5C;AAEA,IAAA,YAAY,CAAC,OAAe,EAAA;QAC1B,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAE;IAClE;AAEA,IAAA,WAAW,CAAC,OAAe,EAAA;AACzB,QAAA,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,OAAO,CAAC;IACxD;wGAjBW,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,6BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA/B,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECX5C,2jBAgBA,EAAA,MAAA,EAAA,CAAA,s7BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDTY,YAAY,EAAA,CAAA,EAAA,CAAA;;4FAIX,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAP3C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,EAAA,UAAA,EACzB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,2jBAAA,EAAA,MAAA,EAAA,CAAA,s7BAAA,CAAA,EAAA;;;AE6BzB,MAAM,uBAAuB,GAAG,yBAAyB;MAS5C,6BAA6B,CAAA;AAuET,IAAA,UAAA;AACnB,IAAA,kBAAA;AACA,IAAA,oBAAA;AACA,IAAA,gBAAA;AACA,IAAA,WAAA;AA1EF,IAAA,eAAe,GAAG,IAAI,YAAY,EAAuB;AACzD,IAAA,eAAe,GAAG,IAAI,YAAY,EAAE;IACrC,QAAQ,GAAG,KAAK;IAChB,UAAU,GAAG,KAAK;IAClB,UAAU,GAAG,IAAI;AAEC,IAAA,cAAc;AAE/B,IAAA,WAAW,GAAG,MAAM,CAA8B,IAAI,uDAAC;AAEvD,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE;AACxD,QAAA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAuB;AAChD,QAAA,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE;AAC7B,YAAA,IAAI,MAAM,CAAC,eAAe,IAAI,IAAI;gBAAE;YACpC,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,mBAAmB,CAAC;YACnD,IAAI,CAAC,GAAG,EAAE;AACR,gBAAA,GAAG,GAAG,IAAI,GAAG,EAAU;gBACvB,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,mBAAmB,EAAE,GAAG,CAAC;YAChD;AACA,YAAA,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC;QACjC;AAEA,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAI;AACrD,YAAA,MAAM,UAAU,GACd,EAAE,CAAC,IAAI,KAAK,kBAAkB,CAAC,UAAU,IAAI,EAAE,CAAC,IAAI,KAAK,kBAAkB,CAAC,KAAK;AACnF,YAAA,OAAO;AACL,kBAAE;AACE,oBAAA,GAAG,EAAE;AACL,oBAAA,WAAW,EAAE;wBACX,GAAG,EAAE,CAAC,WAAW;AACjB,wBAAA,mBAAmB,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,EAAU;AACtE,qBAAA;AACF;kBACD,EAAE;AACR,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,sDAAC;AAEM,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,sDAAC;IAC1B,WAAW,GAAG,KAAK;AACnB,IAAA,cAAc;;;;AAKZ,IAAA,cAAc,GAAG,YAAY,CAAC,YAAY,kDAAI,IAAI,EAAE,kBAAkB,EAAA,CAAA,GAAA,CAA1B,EAAE,IAAI,EAAE,kBAAkB,EAAE,GAAC;AAEzE,IAAA,cAAc,CAAC,OAAe,EAAA;AACtC,QAAA,OAAO,CAAA,EAAG,uBAAuB,CAAA,EAAG,OAAO,EAAE;IAC/C;AAEU,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE;AACnD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE;AAElC,QAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAA+B;AACtD,QAAA,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE;AACzB,YAAA,IAAI,EAAE,CAAC,WAAW,IAAI,IAAI;gBAAE;AAC5B,YAAA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE;AAC7C,YAAA,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC;QAClC;QAEA,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,MAAM;YAC7B,OAAO;YACP,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE;AACrC,SAAA,CAAC,CAAC;AACL,IAAA,CAAC,uDAAC;IAEF,WAAA,CAC+B,UAAkB,EACrC,kBAAiD,EACjD,oBAA0C,EAC1C,gBAAwC,EACxC,WAAiC,EAAA;QAJd,IAAA,CAAA,UAAU,GAAV,UAAU;QAC7B,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;QACpB,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,WAAW,GAAX,WAAW;QAErB,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC,MAAM,GAAG,CAAC;AACjE,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;YACjC,IAAI,SAAS,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAC7C,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,gBAAA,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE;YACnC;AACF,QAAA,CAAC,CAAC;;;;;;;;QASF,MAAM,CAAC,MAAK;YACV,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE;YAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE;AACnD,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE;AAEvC,YAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAe;AACjD,YAAA,KAAK,MAAM,cAAc,IAAI,SAAS,EAAE;AACtC,gBAAA,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,EAAS;gBAClD,MAAM,IAAI,GAAW,SAAS,EAAE,IAAI,IAAI,IAAI,EAAE;AAC9C,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC;oBAAE;AAE/C,gBAAA,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAClE,gBAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC5B,oBAAA,kBAAkB,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC;gBAC5C;YACF;YAEA,IAAI,WAAW,GAAG,KAAK;AAEvB,YAAA,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE;gBAC3B,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC;AACjD,gBAAA,IAAI,CAAC,SAAS;oBAAE;gBAEhB,SAAS,CAAC,SAAS,EAAE;gBACrB,WAAW,GAAG,IAAI;AAElB,gBAAA,MAAM,aAAa,GACjB,cAAc,IAAI,IAAI,IAAI,cAAc,KAAK,OAAO,GAAG,CAAC,GAAG,8BAA8B;AAE3F,gBAAA,IAAI,SAAS,CAAC,OAAO,EAAE,KAAK,aAAa,EAAE;oBACzC,SAAS,CAAC,EAAE,CAAC;AACX,wBAAA,OAAO,EAAE,aAAa;wBACtB,QAAQ,EAAE,8BAA8B,GAAG,IAAI;AAChD,qBAAA,CAAC;gBACJ;YACF;YAEA,IAAI,WAAW,EAAE;gBACd,IAAI,CAAC,cAAc,EAAE,QAAQ,EAAU,EAAE,SAAS,EAAE;YACvD;AACF,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,IAAc,SAAS,GAAA;AACrB,QAAA,OAAO,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;IAC3C;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;YAC5C,IAAI,KAAK,EAAE;AACT,gBAAA,IAAI,CAAC,oBAAoB,CAAC,eAAe,EAAE;AAC3C,gBAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC;AAChC,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;gBACzB,IAAI,CAAC,oBAAoB,EAAE;AAC3B,gBAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;YACjC;QACF;IACF;AAEQ,IAAA,mBAAmB,CAAC,KAAU,EAAA;QACpC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,aAAa;AACjD,QAAA,IAAI,CAAC,SAAS;YAAE;QAEhB,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,CAAC,OAAO,KAAI;AACnD,YAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;gBAC3B,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,WAAW;gBAC3C,IAAI,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE;oBAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE;AACrD,oBAAA,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,MAAM,EAAE;wBAC9D,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;oBAC9D;gBACF;YACF;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC;IACxC;IAEQ,oBAAoB,GAAA;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,QAAQ,EAAE;AAC7C,QAAA,IAAI,CAAC,KAAK;YAAE;QACZ,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,aAAa;AACnD,QAAA,IAAI,CAAC,WAAW;YAAE;QAClB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,qBAAqB,EAAE;QAC7D,IAAI,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE;YAC3B,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAC9D;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE;AACjC,QAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE;IACxC;AAEQ,IAAA,kBAAkB,CAAC,KAAU,EAAA;AACnC,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,kBAAkB,EAAE;AAC1C,QAAA,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;QACnC,OAAO;AACL,YAAA,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,MAAM,EAAE;AAC3C,YAAA,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,MAAM,EAAE;SAC5C;IACH;AAEU,IAAA,eAAe,CAAC,OAAe,EAAA;AACvC,QAAA,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,OAAO,CAAC;IACvD;AAEU,IAAA,gBAAgB,CAAC,UAAe,EAAA;QACxC,IAAI,IAAI,CAAC,QAAQ;YAAE;AAEnB,QAAA,MAAM,KAAK,GACT,UAAU,CAAC,gBAAgB,EAAE,QAAQ,IAAI,IAAI,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,IAAI;AACrF,QAAA,IAAI,CAAC,KAAK;YAAE;QAEZ,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAClD,QAAA,MAAM,GAAG,GAAG,qBAAqB,CAC/B,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,EACpC,WAAW,CAAC,CAAC,EACb,WAAW,CAAC,CAAC,CACd;AACD,QAAA,IAAI,CAAC,GAAG;YAAE;QAEV,MAAM,mBAAmB,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU;QAE/D,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,kBAAkB,CAAC,IAAI,EAAE;YAChD,IAAI,mBAAmB,EAAE;AACvB,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;gBAC3B;YACF;AAEA,YAAA,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS;YACpC,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,MAAM,CAAC;YAChE,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAEtF,YAAA,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,CAAC;AAE7E,YAAA,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC9B,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACtD;iBAAO;gBACL,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC;YACrD;AAEA,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC;YAClE;QACF;AAEA,QAAA,MAAM,MAAM,GAAG,oBAAoB,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC;QACpE,IAAI,MAAM,EAAE;YACV,IAAI,mBAAmB,EAAE;AACvB,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;gBAC3B;YACF;AAEA,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC;AACpC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC;QACpE;IACF;AAEU,IAAA,oBAAoB,CAAC,UAAe,EAAA;AAC5C,QAAA,MAAM,KAAK,GACT,UAAU,CAAC,gBAAgB,EAAE,QAAQ,IAAI,IAAI,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,IAAI;AACrF,QAAA,IAAI,CAAC,KAAK;YAAE;QAEZ,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAClD,QAAA,MAAM,GAAG,GAAG,qBAAqB,CAC/B,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,EACpC,WAAW,CAAC,CAAC,EACb,WAAW,CAAC,CAAC,CACd;AAED,QAAA,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC;QAEzE,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;YAC1B;QACF;QAEA,IAAI,MAAM,GAA6B,IAAI;QAC3C,IAAI,SAAS,GAAkB,IAAI;QAEnC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,kBAAkB,CAAC,IAAI,EAAE;YAChD,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI;QACzC;aAAO;AACL,YAAA,MAAM,GAAG,oBAAoB,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC;YAE9D,IAAI,MAAM,EAAE;AACV,gBAAA,SAAS,GAAG,MAAM,CAAC,UAAU;YAC/B;QACF;QAEA,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,OAAO,GAAG,KAAK,CAAC,kBAAkB,EAAE;AAC1C,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CACpD,MAAM,EACN,GAAG,CAAC,OAAO,CAAC,WAAW,EACvB,SAAS,EACT,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EACtB,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CACvB;AACD,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC;QAC/B;aAAO;AACL,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QAC5B;IACF;IAEU,qBAAqB,GAAA;AAC7B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,IAAI,CAAC;IAC/C;AAEU,IAAA,WAAW,CAAC,UAAe,EAAA;AACnC,QAAA,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,EAAE,GAAG;AACzC,QAAA,IAAI,CAAC,WAAW;YAAE;QAClB,WAAW,CAAC,cAAc,EAAE;QAC5B,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,WAAW,CAAC,MAAM,CAAC;IACtD;IAEU,gBAAgB,CAAC,MAAc,EAAE,IAAuB,EAAA;QAChE,OAAO,IAAI,CAAC,SAAS;IACvB;IAEU,cAAc,CAAC,MAAc,EAAE,KAAsB,EAAA;AAC7D,QAAA,OAAO,KAAK;IACd;AA7TW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,kBAuE9B,WAAW,EAAA,EAAA,EAAA,KAAA,EAAAA,6BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAH,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAvEV,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EA8CsB,kBAAkB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAvCrE,cAAc,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpD3B,wuDA6CA,EAAA,MAAA,EAAA,CAAA,m4CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDJY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAAA,OAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,QAAA,EAAA,8OAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAAA,OAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAApB,IAAA,CAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA;;4FAI/C,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAPzC,SAAS;+BACE,wBAAwB,EAAA,UAAA,EACtB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,cAAc,EAAE,kBAAkB,CAAC,EAAA,QAAA,EAAA,wuDAAA,EAAA,MAAA,EAAA,CAAA,m4CAAA,CAAA,EAAA;;0BA2ExD,MAAM;2BAAC,WAAW;;sBAtEpB;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA,SAAS;uBAAC,cAAc;AAuCe,aAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,YAAY,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ME/EvE,4BAA4B,CAAA;IAC9B,KAAK,GAAW,kBAAkB;AACjC,IAAA,kBAAkB,GAAG,MAAM,CAAC,6BAA6B,CAAC;wGAFzD,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,8GCZzC,mnBAgBA,EAAA,MAAA,EAAA,CAAA,sjBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDRY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,wBAAwB,8DAAE,8BAA8B,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA;;4FAIrE,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBANxC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,WACzB,CAAC,YAAY,EAAE,wBAAwB,EAAE,8BAA8B,CAAC,EAAA,QAAA,EAAA,mnBAAA,EAAA,MAAA,EAAA,CAAA,sjBAAA,CAAA,EAAA;;sBAKhF;;;MEDU,sCAAsC,CAAA;AAG3B,IAAA,gBAAA;AAFK,IAAA,OAAO;AAElC,IAAA,WAAA,CAAsB,gBAAwC,EAAA;QAAxC,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;IAA2B;AAEjE,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IAClE;AAEA,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,QAAQ;IAC3C;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IACjE;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAClE;wGAnBW,sCAAsC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA0B,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAtC,sCAAsC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZnD,k+CAmDA,EAAA,MAAA,EAAA,CAAA,wwEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED3CY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAvB,IAAA,CAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA;;4FAIX,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBAPlD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mCAAmC,EAAA,UAAA,EACjC,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,k+CAAA,EAAA,MAAA,EAAA,CAAA,wwEAAA,CAAA,EAAA;;sBAKtB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;MEMd,kCAAkC,CAAA;IACpC,KAAK,GAAW,wBAAwB;IACxC,QAAQ,GAAW,EAAE;AAEtB,IAAA,kBAAkB,GAAG,MAAM,CAAC,6BAA6B,CAAC;AAEzD,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,QAAQ,IAAI,EAAE,oDAAC;wGAN1E,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAlC,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnB/C,sVAWA,EAAA,MAAA,EAAA,CAAA,mEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDAI,YAAY,+BACZ,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,8BAA8B,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC9B,sCAAsC,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAK7B,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAZ9C,SAAS;+BACE,8BAA8B,EAAA,UAAA,EAC5B,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,wBAAwB;wBACxB,8BAA8B;wBAC9B,sCAAsC;AACvC,qBAAA,EAAA,QAAA,EAAA,sVAAA,EAAA,MAAA,EAAA,CAAA,mEAAA,CAAA,EAAA;;sBAKA;;sBACA;;;MEKU,wBAAwB,CAAA;AAQvB,IAAA,kBAAA;AACA,IAAA,uBAAA;AACA,IAAA,wBAAA;AACA,IAAA,sBAAA;AACA,IAAA,gBAAA;AACF,IAAA,cAAA;IAZD,KAAK,GAAW,yBAAyB;IACzC,UAAU,GAAW,yBAAyB;IAC9C,iBAAiB,GAAW,8BAA8B;IAC1D,SAAS,GAAY,KAAK;AACzB,IAAA,eAAe,GAAG,IAAI,YAAY,EAAQ;IAEpD,WAAA,CACY,kBAAiD,EACjD,uBAAsD,EACtD,wBAAwD,EACxD,sBAAoD,EACpD,gBAAwC,EAC1C,cAA8B,EAAA;QAL5B,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,uBAAuB,GAAvB,uBAAuB;QACvB,IAAA,CAAA,wBAAwB,GAAxB,wBAAwB;QACxB,IAAA,CAAA,sBAAsB,GAAtB,sBAAsB;QACtB,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAClB,IAAA,CAAA,cAAc,GAAd,cAAc;IACrB;AAEH,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE;IACjD;AAEA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChE;AAEA,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE;IACrD;wGA1BW,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAqB,6BAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,6BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,8BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,4BAAA,EAAA,EAAA,EAAA,KAAA,EAAAH,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAvB,IAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1BrC,4/IAwHA,EAAA,MAAA,EAAA,CAAA,iyBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDtGI,YAAY,+BACZ,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,8BAA8B,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC9B,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA;;4FAKf,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAZpC,SAAS;+BACE,mBAAmB,EAAA,UAAA,EACjB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,kBAAkB;wBAClB,8BAA8B;wBAC9B,wBAAwB;AACzB,qBAAA,EAAA,QAAA,EAAA,4/IAAA,EAAA,MAAA,EAAA,CAAA,iyBAAA,CAAA,EAAA;;sBAKA;;sBACA;;sBACA;;sBACA;;sBACA;;;MERU,yBAAyB,CAAA;AAC1B,IAAA,eAAe,GAAG,IAAI,YAAY,EAAuB;AACzD,IAAA,eAAe,GAAG,IAAI,YAAY,EAAE;IACrC,QAAQ,GAAG,KAAK;IAChB,UAAU,GAAG,KAAK;IAClB,UAAU,GAAG,IAAI;wGALf,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvBtC,8iBAkBA,EAAA,MAAA,EAAA,CAAA,oIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDLI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,8BAA8B,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC9B,+BAA+B,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC/B,8BAA8B,qEAC9B,6BAA6B,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAKpB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAdrC,SAAS;+BACE,oBAAoB,EAAA,UAAA,EAClB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,wBAAwB;wBACxB,8BAA8B;wBAC9B,+BAA+B;wBAC/B,8BAA8B;wBAC9B,6BAA6B;AAC9B,qBAAA,EAAA,QAAA,EAAA,8iBAAA,EAAA,MAAA,EAAA,CAAA,oIAAA,CAAA,EAAA;;sBAKA;;sBACA;;sBACA;;sBACA;;sBACA;;;MElBU,kCAAkC,CAAA;wGAAlC,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAlC,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECV/C,qZASA,EAAA,MAAA,EAAA,CAAA,qhBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDHY,YAAY,EAAA,CAAA,EAAA,CAAA;;4FAIX,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAP9C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8BAA8B,EAAA,UAAA,EAC5B,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,qZAAA,EAAA,MAAA,EAAA,CAAA,qhBAAA,CAAA,EAAA;;;MEWZ,iCAAiC,CAAA;AAGtB,IAAA,gBAAA;AAFK,IAAA,IAAI;AAE/B,IAAA,WAAA,CAAsB,gBAAwC,EAAA;QAAxC,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;IAA2B;IAEjE,eAAe,GAAG,eAAe;;;AAIjC,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,kBAAkB,CAAC,IAAI;IAC3D;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC;IACxE;AAEA,IAAA,oBAAoB,CAAC,KAAoB,EAAA;QACvC,IAAI,KAAK,KAAK,IAAI;YAAE;AACpB,QAAA,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC;IAC7E;AAEA,IAAA,UAAU,CAAC,MAAyB,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC,CAAC;YACpE;QACF;AACA,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC;IACxC;wGA5BW,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAwB,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAjC,iCAAiC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjB9C,ggCAmCA,EAAA,MAAA,EAAA,CAAA,2gCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDtBY,YAAY,8BAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAvB,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,oBAAoB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,IAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,KAAA,EAAA,KAAA,EAAA,MAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA;;4FAIlE,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAP7C,SAAS;+BACE,6BAA6B,EAAA,UAAA,EAC3B,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,oBAAoB,CAAC,EAAA,QAAA,EAAA,ggCAAA,EAAA,MAAA,EAAA,CAAA,2gCAAA,CAAA,EAAA;;sBAK7E,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;MEMd,6BAA6B,CAAA;AAIlB,IAAA,gBAAA;IAHb,KAAK,GAAW,yBAAyB;IACzC,eAAe,GAAW,cAAc;AAEjD,IAAA,WAAA,CAAsB,gBAAwC,EAAA;QAAxC,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;IAA2B;;;AAIjE,IAAA,WAAW,CAAC,IAAuB,EAAA;AACjC,QAAA,OAAO,IAAI,CAAC,YAAY,KAAK,kBAAkB,CAAC;AAC9C,cAAE,CAAA,KAAA,EAAQ,IAAI,CAAC,mBAAmB,CAAA;AAClC,cAAE,IAAI,CAAC,EAAE;IACb;wGAZW,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAwB,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxB1C,0rBAwBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDTI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,kCAAkC,EAAA,QAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClC,iCAAiC,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjC,wBAAwB,8DACxB,8BAA8B,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAIrB,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAbzC,SAAS;+BACE,wBAAwB,EAAA,UAAA,EACtB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,kBAAkB;wBAClB,kCAAkC;wBAClC,iCAAiC;wBACjC,wBAAwB;wBACxB,8BAA8B;AAC/B,qBAAA,EAAA,QAAA,EAAA,0rBAAA,EAAA;;sBAIA;;sBACA;;;MEPU,+BAA+B,CAAA;AAQhC,IAAA,6BAAA;AACA,IAAA,wBAAA;AACA,IAAA,sBAAA;AACA,IAAA,gBAAA;AACA,IAAA,kBAAA;IAXD,UAAU,GAAW,wBAAwB;IAC7C,iBAAiB,GAAW,kBAAkB;IAC9C,wBAAwB,GAAW,uBAAuB;IAC1D,OAAO,GAAY,KAAK;AACvB,IAAA,SAAS,GAAG,IAAI,YAAY,EAAE;IAExC,WAAA,CACU,6BAA4D,EAC5D,wBAAwD,EACxD,sBAAoD,EACpD,gBAAwC,EACxC,kBAAiD,EAAA;QAJjD,IAAA,CAAA,6BAA6B,GAA7B,6BAA6B;QAC7B,IAAA,CAAA,wBAAwB,GAAxB,wBAAwB;QACxB,IAAA,CAAA,sBAAsB,GAAtB,sBAAsB;QACtB,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;IACzB;AAEH,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,6BAA6B,CAAC,WAAW;IACvD;AAEA,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,KAAK,IAAI,IAAI;IACtD;AAEA,IAAA,IAAI,oBAAoB,GAAA;QACtB,OAAO,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,EAAE,UAAU,IAAI,IAAI;IAClE;AAEA,IAAA,IAAI,QAAQ,GAAA;QACV,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,EAAE,QAAQ;QAC/D,OAAO,OAAO,EAAE,SAAS,IAAI,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI;IAC1D;AAEA,IAAA,IAAI,SAAS,GAAA;QACX,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,EAAE,QAAQ;AAC/D,QAAA,OAAO,OAAO,EAAE,UAAU,IAAI,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,IAAI;IAClE;AAEA,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;IAC7C;AAEA,IAAA,IAAI,gBAAgB,GAAA;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;QACjD,MAAM,MAAM,GAA6C,EAAE;AAC3D,QAAA,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAI;YACjE,IAAI,QAAQ,IAAI,CAAC;gBAAE;AACnB,YAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;AACjD,YAAA,IAAI,OAAO;gBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AACjD,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,MAAM;IACf;AAEA,IAAA,eAAe,CAAC,MAAyB,EAAA;AACvC,QAAA,MAAM,IAAI,GACR,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,eAAe,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,YAAY,CAAC;QAC3F,OAAO,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC,GAAG,CAAA,EAAG,IAAI,CAAA,GAAA,EAAM,MAAM,CAAC,WAAW,GAAG,GAAG,IAAI;IACjG;AAEA,IAAA,eAAe,CAAC,MAAyB,EAAA;QACvC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC;AAClD,QAAA,OAAO,MAAM,CAAC,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC,WAAW,GAAG,SAAS;IACxE;AAEQ,IAAA,gBAAgB,CAAC,IAAwB,EAAA;QAC/C,QAAQ,IAAI;YACV,KAAK,kBAAkB,CAAC,KAAK;AAC3B,gBAAA,OAAO,MAAM;YACf,KAAK,kBAAkB,CAAC,IAAI;AAC1B,gBAAA,OAAO,cAAc;AACvB,YAAA;AACE,gBAAA,OAAO,SAAS;;IAEtB;AAEA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE;IAC9C;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE;IACjD;AAEA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,aAAa,EAAE;IACpD;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,QACE,IAAI,CAAC,sBAAsB,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,sBAAsB,CAAC,eAAe,EAAE;IAE/F;AAEA,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,eAAe,EAAE;IACtD;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE;IACrD;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE;IACjD;AAEA,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,eAAe,EAAE;IACtD;AAEA,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE;IAC/C;AAEA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,aAAa,EAAE;IACtD;AAEA,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE;IACjD;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE;IAChD;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE;IACrD;AAEA;;;;AAIG;AACH,IAAA,IAAI,iBAAiB,GAAA;QACnB,OAAO,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE,IAAI,CAAC;IAC1D;AAEA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,aAAa,EAAE;IACpD;AAEA,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,EAAE;IACzD;IAEA,OAAO,GAAA;QACL,IAAI,IAAI,CAAC,OAAO;YAAE;AAClB,QAAA,IAAI,CAAC,6BAA6B,CAAC,KAAK,EAAE;IAC5C;IAEA,YAAY,GAAA;QACV,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;IACzC;wGAxJW,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAI,6BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,8BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,4BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,6BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA/B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,iRCnB5C,8mKAsKA,EAAA,MAAA,EAAA,CAAA,2xDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDvJY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,mLAAE,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,cAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAxB,IAAA,CAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA;;4FAIlD,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAP3C,SAAS;+BACE,0BAA0B,EAAA,UAAA,EACxB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,EAAA,QAAA,EAAA,8mKAAA,EAAA,MAAA,EAAA,CAAA,2xDAAA,CAAA,EAAA;;sBAK7D;;sBACA;;sBACA;;sBACA;;sBACA;;;METU,yBAAyB,CAAA;AAId,IAAA,SAAA;AAHK,IAAA,KAAK;IACvB,IAAI,GAAc,IAAI;AAE/B,IAAA,WAAA,CAAsB,SAA2B,EAAA;QAA3B,IAAA,CAAA,SAAS,GAAT,SAAS;IAAqB;AAEpD,IAAA,IAAc,YAAY,GAAA;QACxB,OAAO,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAqB,CAAC,IAAI,IAAI;IACtE;wGARW,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAV,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,wHCftC,4KAMA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDMY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,+BAAE,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAG/C,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;+BACE,oBAAoB,EAAA,UAAA,EAClB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,eAAe,EAAE,iBAAiB,CAAC,EAAA,QAAA,EAAA,4KAAA,EAAA;;sBAI1D,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;;MESU,yBAAyB,CAAA;AASzB,IAAA,SAAA;AACQ,IAAA,YAAA;AATQ,IAAA,KAAK;IACvB,aAAa,GAAG,IAAI;AACpB,IAAA,kBAAkB;AACjB,IAAA,kBAAkB,GAAG,IAAI,YAAY,EAAyB;IAExE,SAAS,GAAG,KAAK;IAEjB,WAAA,CACW,SAA2B,EACnB,YAA0B,EAAA;QADlC,IAAA,CAAA,SAAS,GAAT,SAAS;QACD,IAAA,CAAA,YAAY,GAAZ,YAAY;IAC5B;AAEH,IAAA,IAAI,sBAAsB,GAAA;AACxB,QAAA,QACE,IAAI,CAAC,KAAK,CAAC,sBAAsB,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,sBAAsB,KAAK,SAAS;IAEjG;AAEA,IAAA,IAAI,YAAY,GAAA;QACd,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AACnD,YAAA,OAAO,KAAK;QACd;QAEA,QACE,IAAI,CAAC,KAAK,CAAC,cAAc,KAAK,aAAa,CAAC,YAAY;aACvD,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,eAAe;gBAChD,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,OAAO,CAAC;IAEhD;IAEA,kBAAkB,GAAA;QAChB,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC9C;QACF;AAEA,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QAErB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;AAC5C,YAAA,IAAI,EAAE,CAAC,UAAU,KAAI;AACnB,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;YAC1C,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AACf,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,gBAAA,MAAM,OAAO,GAAG,KAAK,EAAE,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,wBAAwB,CAAC;gBAC3F,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;YAC1C,CAAC;AACF,SAAA,CAAC;IACJ;wGAjDW,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAmC,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,aAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1BtC,mgLAyIA,EAAA,MAAA,EAAA,CAAA,ykDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDzHI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACzB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAjC,IAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAMT,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAdrC,SAAS;+BACE,mBAAmB,EAAA,UAAA,EACjB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,yBAAyB;wBACzB,eAAe;wBACf,iBAAiB;wBACjB,kBAAkB;qBACnB,EAAA,aAAA,EAGc,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,mgLAAA,EAAA,MAAA,EAAA,CAAA,ykDAAA,CAAA,EAAA;;sBAGpC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;sBACA;;;MEfU,2BAA2B,CAAA;AAIhB,IAAA,SAAA;AAHK,IAAA,IAAI;IACtB,IAAI,GAAc,IAAI;AAE/B,IAAA,WAAA,CAAsB,SAA2B,EAAA;QAA3B,IAAA,CAAA,SAAS,GAAT,SAAS;IAAqB;AAEpD,IAAA,IAAc,YAAY,GAAA;QACxB,OAAO,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,SAA0B,CAAC,IAAI,IAAI;IAC9E;wGARW,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,yHCfxC,gLAMA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDMY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,+BAAE,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAG/C,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;+BACE,uBAAuB,EAAA,UAAA,EACrB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,eAAe,EAAE,iBAAiB,CAAC,EAAA,QAAA,EAAA,gLAAA,EAAA;;sBAI1D,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;;MEQU,iBAAiB,CAAA;AAkBlB,IAAA,eAAA;AACqB,IAAA,UAAA;AAlBJ,IAAA,UAAU;IAC5B,UAAU,GAAY,KAAK;AAEK,IAAA,QAAQ;AAEjD,IAAA,OAAO,GAAG,MAAM,CAAC,IAAI,mDAAC;AACtB,IAAA,KAAK,GAAG,MAAM,CAAC,KAAK,iDAAC;AACrB,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,sDAAC;AAC1B,IAAA,SAAS,GAAG,MAAM,CAAC,CAAC,qDAAC;AACrB,IAAA,WAAW,GAAG,MAAM,CAAC,KAAK,uDAAC;AAEnB,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;IAC9B,cAAc,GAAyC,IAAI;IAC3D,iBAAiB,GAA0C,IAAI;IAC/D,UAAU,GAAG,KAAK;IAE1B,WAAA,CACU,eAAgC,EACX,UAAkB,EAAA;QADvC,IAAA,CAAA,eAAe,GAAf,eAAe;QACM,IAAA,CAAA,UAAU,GAAV,UAAU;IACtC;IAEH,QAAQ,GAAA;QACN,IAAI,CAAC,cAAc,EAAE;AACrB,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtC,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,CAAC;YACtE,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;QAChD;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;QACxB,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtC,QAAQ,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,CAAC;YACzE,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;QACnD;IACF;IAEQ,kBAAkB,GAAG,MAAK;AAChC,QAAA,IAAI,QAAQ,CAAC,eAAe,KAAK,SAAS,EAAE;YAC1C,IAAI,CAAC,kBAAkB,EAAE;QAC3B;AACF,IAAA,CAAC;IAEO,OAAO,GAAG,MAAK;QACrB,IAAI,CAAC,kBAAkB,EAAE;AAC3B,IAAA,CAAC;IAEO,kBAAkB,GAAA;QACxB,IAAI,IAAI,CAAC,UAAU;YAAE;QACrB,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,cAAc,EAAE;IACvB;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,cAAc,EAAE;IACvB;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE;YAAE;AAC/D,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAE1B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC;cACjB,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU;cACxD,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;AAE3D,QAAA,OAAO,CAAC,IAAI,CAACoC,WAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/C,YAAA,IAAI,EAAE,CAAC,IAAI,KAAI;AACb,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;gBAC3B,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;gBACrC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AAC1C,gBAAA,MAAM,CAAC,IAAI,GAAG,GAAG;gBACjB,MAAM,CAAC,QAAQ,GAAG,CAAA,OAAA,EAAU,IAAI,CAAC,UAAU,MAAM;AACjD,gBAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBACjC,MAAM,CAAC,KAAK,EAAE;gBACd,MAAM,CAAC,MAAM,EAAE;AACf,gBAAA,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC;YAC1B,CAAC;YACD,KAAK,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AACzC,SAAA,CAAC;IACJ;IAEQ,WAAW,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC;AACjC,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;QAC5B;AACA,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC;AACrC,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;QAC/B;IACF;IAEQ,cAAc,GAAA;QACpB,IAAI,IAAI,CAAC,UAAU;YAAE;AACrB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AAEtB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC;cACjB,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU;cACnD,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;AAEtD,QAAA,OAAO,CAAC,IAAI,CAACA,WAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/C,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;gBACrB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC7B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;gBACxC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;YAC3C,CAAC;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;YACtB,CAAC;AACF,SAAA,CAAC;IACJ;AAEQ,IAAA,eAAe,CAAC,OAAe,EAAA;AACrC,QAAA,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,MAAK;YACpC,IAAI,IAAI,CAAC,UAAU;gBAAE;AACrB,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AACzB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AAEtB,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC;kBACxB,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU;kBACnD,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;AAEtD,YAAA,cAAc,CAAC,IAAI,CAACA,WAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AACtD,gBAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,oBAAA,IAAI,CAAC,UAAU,GAAG,KAAK;oBACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7B,oBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;oBACrB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;oBACxC,UAAU,CAAC,MAAK;AACd,wBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;wBAC1B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;oBAC3C,CAAC,EAAE,GAAG,CAAC;gBACT,CAAC;gBACD,KAAK,EAAE,MAAK;AACV,oBAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,oBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,oBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;gBACtB,CAAC;AACF,aAAA,CAAC;AACJ,QAAA,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACpB;AAEQ,IAAA,cAAc,CAAC,OAAe,EAAA;AACpC,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC;QACvC;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;AAC3B,QAAA,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC,MAAK;YACxC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAClD,CAAC,EAAE,IAAI,CAAC;IACV;AAEQ,IAAA,QAAQ,CAAC,KAAa,EAAA;AAC5B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa;QAC1C,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,KAAI;AAChE,YAAA,IAAI,GAAG;AAAE,gBAAA,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC;AACpD,QAAA,CAAC,CAAC;IACJ;AAxKW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,8CAmBlB,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAnBV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,qQCzB9B,+9BA4BA,EAAA,MAAA,EAAA,CAAA,+lBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDPY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,mLAAE,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAIlD,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;+BACE,uBAAuB,EAAA,UAAA,EACrB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,EAAA,QAAA,EAAA,+9BAAA,EAAA,MAAA,EAAA,CAAA,+lBAAA,CAAA,EAAA;;0BAuB3D,MAAM;2BAAC,WAAW;;sBAlBpB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBAEA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;MEhB5B,sBAAsB,CAAA;AAGb,IAAA,oBAAA;IAFX,UAAU,GAAY,KAAK;AAEpC,IAAA,WAAA,CAAoB,oBAA0C,EAAA;QAA1C,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;IAAyB;AAEjE,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM;IACzC;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,UAAU;IAC7C;AAEA,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,iBAAiB;IACpD;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE;IACnC;wGAnBW,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,iHCbnC,yZAWA,EAAA,MAAA,EAAA,CAAA,+HAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDFY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,iBAAiB,sMAAE,iBAAiB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAIjD,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;+BACE,iBAAiB,EAAA,UAAA,EACf,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,EAAA,QAAA,EAAA,yZAAA,EAAA,MAAA,EAAA,CAAA,+HAAA,CAAA,EAAA;;sBAK5D;;;MEWU,mBAAmB,CAAA;AAMV,IAAA,oBAAA;AALO,IAAA,KAAK;IACvB,UAAU,GAAY,KAAK;IAEpC,eAAe,GAAG,eAAe;AAEjC,IAAA,WAAA,CAAoB,oBAA0C,EAAA;QAA1C,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;IAAyB;AAEjE,IAAA,IAAc,UAAU,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE;IACrC;AAEA,IAAA,IAAc,QAAQ,GAAA;QACpB,OAAO,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,SAAS,KAAK,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE;IAC9F;AAEA,IAAA,IAAc,OAAO,GAAA;QACnB,OAAO,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,SAAS,KAAK,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE;IAC7F;AAEA,IAAA,IAAc,SAAS,GAAA;QACrB,OAAO,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,SAAS,KAAK,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE;IAChG;AAEA,IAAA,IAAc,cAAc,GAAA;QAC1B,QACE,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,SAAS,KAAK,aAAa,CAAC,cAAc,CAAC,IAAI,EAAE;IAEhG;AAEA,IAAA,IAAc,YAAY,GAAA;QACxB,QACE,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,SAAS,KAAK,aAAa,CAAC,YAAY,CAAC,IAAI,EAAE;IAE9F;AAEA,IAAA,IAAc,gBAAgB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;IACrE;IAEU,SAAS,CAAC,QAAgB,EAAE,KAAoB,EAAA;QACxD,OAAO,QAAQ,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;IACtC;IAEU,WAAW,GAAA;AACnB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,CAAC;IACvE;IAEU,sBAAsB,GAAA;AAC9B,QAAA,QACE,IAAI,CAAC,KAAK,CAAC,sBAAsB,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,sBAAsB,KAAK,SAAS;IAEjG;AAEU,IAAA,iBAAiB,CAAC,IAAe,EAAA;AACzC,QAAA,QACE,IAAI,CAAC,SAAS,KAAK,aAAa,CAAC,MAAM;YACvC,IAAI,CAAC,gBAAgB,KAAK,IAAI;AAC9B,YAAA,IAAI,CAAC,gBAAgB,KAAK,SAAS;IAEvC;AAEA,IAAA,IAAc,MAAM,GAAA;AAOlB,QAAA,MAAM,QAAQ,GAAW,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,WAAW,EAAE,cAAc,KAAI;AAC7E,YAAA,OAAO,WAAW,GAAG,cAAc,EAAE,YAAY;QACnD,CAAC,EAAE,CAAC,CAAC;AAEL,QAAA,MAAM,OAAO,GAAW,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,WAAW,EAAE,aAAa,KAAI;AAC1E,YAAA,OAAO,WAAW,GAAG,aAAa,EAAE,YAAY;QAClD,CAAC,EAAE,CAAC,CAAC;AAEL,QAAA,MAAM,SAAS,GAAW,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,WAAW,EAAE,aAAa,KAAI;AAC9E,YAAA,OAAO,WAAW,GAAG,aAAa,EAAE,YAAY;QAClD,CAAC,EAAE,CAAC,CAAC;AAEL,QAAA,MAAM,cAAc,GAAW,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,WAAW,EAAE,aAAa,KAAI;AACxF,YAAA,OAAO,WAAW,GAAG,aAAa,EAAE,YAAY;QAClD,CAAC,EAAE,CAAC,CAAC;AAEL,QAAA,MAAM,YAAY,GAAW,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,WAAW,EAAE,aAAa,KAAI;AACpF,YAAA,OAAO,WAAW,GAAG,aAAa,EAAE,YAAY;QAClD,CAAC,EAAE,CAAC,CAAC;QAEL,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE;IACvE;IAEA,YAAY,CAAC,UAAkB,EAAE,WAAmB,EAAA;QAClD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC;IACzD;wGA9FW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzBhC,4qPAgMA,EAAA,MAAA,EAAA,CAAA,uzDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDjLI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,2BAA2B,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC3B,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAlC,IAAA,CAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAMR,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAd/B,SAAS;+BACE,aAAa,EAAA,UAAA,EACX,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,kBAAkB;wBAClB,sBAAsB;wBACtB,2BAA2B;wBAC3B,iBAAiB;qBAClB,EAAA,aAAA,EAGc,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,4qPAAA,EAAA,MAAA,EAAA,CAAA,uzDAAA,CAAA,EAAA;;sBAGpC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;;MEXU,6BAA6B,CAAA;AACb,IAAA,KAAK;AAEhC,IAAA,IAAc,YAAY,GAAA;AACxB,QAAA,OAAO,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;IACrC;;;;AAKA,IAAA,IAAc,WAAW,GAAA;AACvB,QAAA,QACE,IAAI,CAAC,YAAY,CAAC,IAAI,KAAK,IAAI;AAC/B,aAAC,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC;IAEvE;AAEA,IAAA,IAAc,kBAAkB,GAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY,KAAK,YAAY;AAAE,YAAA,OAAO,IAAI;AAEhE,QAAA,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI;AAC5B,YAAA,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,gBAAgB,CAAC,IAAI,IAAI;AAC/D,YAAA,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,qBAAqB,CAAC,IAAI,IAAI;AACjE,YAAA,KAAK,cAAc;AACjB,gBAAA,OAAO,GAAG;AACZ,YAAA;AACE,gBAAA,OAAO,IAAI;;IAEjB;AAEA,IAAA,IAAc,qBAAqB,GAAA;;;;AAIjC,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB;AAAE,YAAA,OAAO,CAAC;QACjD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC;IAC5C;AAEA,IAAA,IAAc,WAAW,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI;YAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACxD,QAAA,OAAO,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC9E;wGA3CW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,8GChB1C,40EA2DA,EAAA,MAAA,EAAA,CAAA,6lCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDhDY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,+BAAE,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAK/C,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBARzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAAA,UAAA,EACtB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,eAAe,EAAE,iBAAiB,CAAC,EAAA,aAAA,EAG5C,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,40EAAA,EAAA,MAAA,EAAA,CAAA,6lCAAA,CAAA,EAAA;;sBAGpC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;MECd,yBAAyB,CAAA;AACT,IAAA,KAAK;AAEhC,IAAA,IAAc,MAAM,GAAA;QAClB,IAAI,CAAC,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,EAAE;AAE1B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY;AACvC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ;AACpC,QAAA,MAAM,UAAU,GAAG,OAAO,IAAI,CAAC,EAAE,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,KAAK,CAAC;QAE9F,IAAI,UAAU,EAAE;YACd,MAAM,MAAM,GAAmB,EAAE;AAEjC,YAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,OAAO,CAAC,UAAU,IAAI,EAAE,CAAA,CAAA,EAAI,OAAO,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE;AAChF,YAAA,IAAI,QAAQ;AAAE,gBAAA,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;YAC9E,IAAI,OAAO,CAAC,aAAa;AACvB,gBAAA,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC;YAC3E,IAAI,OAAO,CAAC,eAAe;AACzB,gBAAA,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC;YAC/E,IAAI,OAAO,CAAC,OAAO;AAAE,gBAAA,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;YAChF,IAAI,OAAO,CAAC,KAAK;AAAE,gBAAA,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;YACrF,IAAI,OAAO,CAAC,MAAM;AAAE,gBAAA,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;YAC7E,IAAI,OAAO,CAAC,OAAO;AAAE,gBAAA,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;YAC7E,IAAI,OAAO,CAAC,WAAW;AAAE,gBAAA,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;YAC5F,IAAI,OAAO,CAAC,aAAa;AACvB,gBAAA,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC;AAE5E,YAAA,OAAO,MAAM;QACf;QAEA,MAAM,MAAM,GAAmB,EAAE;QAEjC,MAAM,QAAQ,GAAG,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,IAAI;AAC5F,QAAA,IAAI,QAAQ;AAAE,YAAA,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QAE/D,IAAI,QAAQ,EAAE,aAAa;AACzB,YAAA,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC5E,IAAI,QAAQ,EAAE,eAAe;AAC3B,YAAA,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,QAAQ,CAAC,eAAe,EAAE,CAAC;QAChF,IAAI,QAAQ,EAAE,OAAO;AAAE,YAAA,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;AAEnF,QAAA,MAAM,KAAK,GAAG,QAAQ,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,IAAI;AAClE,QAAA,IAAI,KAAK;AAAE,YAAA,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAErE,MAAM,KAAK,GAAG,QAAQ,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,IAAI,IAAI;AACzD,QAAA,IAAI,KAAK;AAAE,YAAA,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAE3D,QAAA,OAAO,MAAM;IACf;AAEA,IAAA,IAAc,SAAS,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;IAC/B;wGApDW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClBtC,+kBAeA,EAAA,MAAA,EAAA,CAAA,o4BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDFY,YAAY,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAKX,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBARrC,SAAS;+BACE,oBAAoB,EAAA,UAAA,EAClB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,aAAA,EAGR,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,+kBAAA,EAAA,MAAA,EAAA,CAAA,o4BAAA,CAAA,EAAA;;sBAGpC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;MEFd,qCAAqC,CAAA;AACxC,IAAA,YAAY,GAAG,MAAM,CAAC,mCAAmC,CAAC;IAEzD,MAAM,GAAmC,IAAI;IAC7C,WAAW,GAAuB,IAAI;AAE/C,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM;IAChD;AAEA,IAAA,IAAI,mBAAmB,GAAA;QACrB,OAAO,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW;IACpF;AAEA,IAAA,IAAc,QAAQ,GAAA;AACpB,QAAA,OAAO,yBAAyB;IAClC;AAEA,IAAA,IAAc,eAAe,GAAA;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,EAAE,EAAE,gBAAgB;QAC7D,IAAI,QAAQ,IAAI,IAAI;AAAE,YAAA,OAAO,EAAE;QAC/B,OAAO,OAAO,QAAQ,KAAK,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACpF;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;YACtB;QACF;AACA,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;IAC3B;wGA9BW,qCAAqC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAArC,qCAAqC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjBlD,orHA4FA,EAAA,MAAA,EAAA,CAAA,0vCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED/EY,YAAY,8BAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,cAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FAIlE,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBAPjD,SAAS;+BACE,iCAAiC,EAAA,UAAA,EAC/B,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,EAAA,QAAA,EAAA,orHAAA,EAAA,MAAA,EAAA,CAAA,0vCAAA,CAAA,EAAA;;sBAO7E;;sBACA;;;MEIU,0BAA0B,CAAA;AAGjB,IAAA,8BAAA;AAFO,IAAA,KAAK;AAEhC,IAAA,WAAA,CAAoB,8BAAmE,EAAA;QAAnE,IAAA,CAAA,8BAA8B,GAA9B,8BAA8B;IAAwC;AAE1F,IAAA,IAAc,YAAY,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE;IACtC;AAEA,IAAA,IAAc,eAAe,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;IACrC;AAEA,IAAA,IAAc,QAAQ,GAAA;AACpB,QAAA,OAAO,yBAAoF;IAC7F;AAEU,IAAA,eAAe,CAAC,WAAwB,EAAA;AAChD,QAAA,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,WAAW,CAAC;IACvD;wGAnBW,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAsC,mCAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzBvC,65EAwDA,EAAA,MAAA,EAAA,CAAA,6uCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDzCI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,qCAAqC,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAnC,IAAA,CAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAM5B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAdtC,SAAS;+BACE,oBAAoB,EAAA,UAAA,EAClB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,eAAe;wBACf,iBAAiB;wBACjB,kBAAkB;wBAClB,qCAAqC;qBACtC,EAAA,aAAA,EAGc,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,65EAAA,EAAA,MAAA,EAAA,CAAA,6uCAAA,CAAA,EAAA;;sBAGpC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;MEVd,2BAA2B,CAAA;AACnB,IAAA,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3B,IAAA,IAAI;AAE/B,IAAA,IAAI,WAAW,GAAA;QACb,IAAI,CAAC,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,SAAS;AAChC,QAAA,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM;YACtB,KAAK,aAAa,CAAC,MAAM;AACvB,gBAAA,OAAO,SAAS;YAClB,KAAK,aAAa,CAAC,QAAQ;AACzB,gBAAA,OAAO,SAAS;YAClB,KAAK,aAAa,CAAC,OAAO;AACxB,gBAAA,OAAO,OAAO;AAChB,YAAA;AACE,gBAAA,OAAO,SAAS;;IAEtB;AAEA,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,OAAO,kBAAkB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;IAC7C;wGApBW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,2GChBxC,iGACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDUY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,iBAAiB,oIAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAK/C,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBARvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAAA,UAAA,EACrB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,iBAAiB,EAAE,eAAe,CAAC,EAAA,aAAA,EAG5C,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,iGAAA,EAAA;;sBAIpC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;MELd,uBAAuB,CAAA;IACzB,IAAI,GAAmB,IAAI;wGADzB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbpC,s/DAoDA,EAAA,MAAA,EAAA,CAAA,u7CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED5CY,YAAY,+BAAY,2BAA2B,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAKlD,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBARnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,QAAQ,EAAE,2BAA2B,CAAC,EAAA,aAAA,EAG/C,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,s/DAAA,EAAA,MAAA,EAAA,CAAA,u7CAAA,CAAA,EAAA;;sBAGpC;;;MEwBU,yBAAyB,CAAA;AAwB1B,IAAA,EAAA;AACE,IAAA,SAAA;IAxBH,KAAK,GAAG,sBAAsB;IAC9B,WAAW,GAAG,UAAU;IACxB,OAAO,GAAG,KAAK;IACf,UAAU,GAAG,IAAI;IACjB,SAAS,GAAG,MAAM;IAClB,SAAS,GAAG,QAAQ;AACpB,IAAA,MAAM,GAA4B,MAAM,CAAC,KAAK,kDAAC;AACxD;;;;;;AAMG;IACM,qBAAqB,GAAG,KAAK;AAC5B,IAAA,UAAU,GAAG,IAAI,YAAY,EAAQ;AACrC,IAAA,OAAO,GAAG,IAAI,YAAY,EAA6B;AAEjE,IAAA,YAAY;IAEZ,oBAAoB,GAAuC,EAAE;IAE7D,WAAA,CACU,EAAe,EACb,SAA2B,EAAA;QAD7B,IAAA,CAAA,EAAE,GAAF,EAAE;QACA,IAAA,CAAA,SAAS,GAAT,SAAS;QAEnB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YAChC,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC3C,YAAA,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACnE,cAAc,EAAE,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;YAClD,wBAAwB,EAAE,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;YAC5D,qBAAqB,EAAE,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AAC1D,SAAA,CAAC;QAEF,IAAI,CAAC,oBAAoB,GAAG;AAC1B,YAAA;gBACE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,mCAAmC,CAAC;gBACpE,KAAK,EAAE,aAAa,CAAC,YAAY;AAClC,aAAA;AACD,YAAA;gBACE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,8BAA8B,CAAC;gBAC/D,KAAK,EAAE,aAAa,CAAC,OAAO;AAC7B,aAAA;AACD,YAAA,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,2BAA2B,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,IAAI,EAAE;AAC3F,YAAA;gBACE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,+BAA+B,CAAC;gBAChE,KAAK,EAAE,aAAa,CAAC,QAAQ;AAC9B,aAAA;AACD,YAAA;gBACE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,wCAAwC,CAAC;gBACzE,KAAK,EAAE,aAAa,CAAC,iBAAiB;AACvC,aAAA;AACD,YAAA;gBACE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,wCAAwC,CAAC;gBACzE,KAAK,EAAE,aAAa,CAAC,eAAe;AACrC,aAAA;SACF;QAED,IAAI,CAAC,6BAA6B,EAAE;IACtC;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,uBAAuB,CAAC,EAAE;YACpC,IAAI,CAAC,6BAA6B,EAAE;QACtC;IACF;IAEQ,6BAA6B,GAAA;QACnC,MAAM,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC;AACpE,QAAA,IAAI,CAAC,oBAAoB;YAAE;AAE3B,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC9B,YAAA,oBAAoB,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC;YACzD,oBAAoB,CAAC,OAAO,EAAE;QAChC;aAAO;YACL,oBAAoB,CAAC,MAAM,EAAE;QAC/B;IACF;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;QACzB,IAAI,CAAC,6BAA6B,EAAE;AACpC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;IACxB;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO;YAAE;QAE/B,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;AAC7C,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAChB,cAAc,EAAE,IAAI,CAAC;kBACjB,aAAa,CAAC;kBACd,KAAK,CAAC,cAAc;AACxB,YAAA,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;AAC5B,YAAA,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc;AACtC,YAAA,wBAAwB,EAAE,CAAC,CAAC,KAAK,CAAC,wBAAwB;AAC3D,SAAA,CAAC;IACJ;wGAlGW,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtCtC,g7GAmGA,EAAA,MAAA,EAAA,CAAA,y1BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDzEI,YAAY,8BACZ,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,cAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,oBAAoB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,IAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,KAAA,EAAA,KAAA,EAAA,MAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,oBAAoB,uQACpB,qBAAqB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,IAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAMZ,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAhBrC,SAAS;+BACE,oBAAoB,EAAA,UAAA,EAClB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,iBAAiB;wBACjB,oBAAoB;wBACpB,kBAAkB;wBAClB,oBAAoB;wBACpB,qBAAqB;qBACtB,EAAA,aAAA,EAGc,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,g7GAAA,EAAA,MAAA,EAAA,CAAA,y1BAAA,CAAA,EAAA;;sBAGpC;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAQA;;sBACA;;sBACA;;;ME1CU,6BAA6B,CAAA;IAC/B,YAAY,GAAqB,EAAE;IACnC,OAAO,GAAG,KAAK;AAExB,IAAA,SAAS,CAAC,IAAwB,EAAA;QAChC,QAAQ,IAAI;YACV,KAAK,kBAAkB,CAAC,gBAAgB;AACtC,gBAAA,OAAO,YAAY;YACrB,KAAK,kBAAkB,CAAC,QAAQ;AAC9B,gBAAA,OAAO,SAAS;YAClB,KAAK,kBAAkB,CAAC,gBAAgB;AACtC,gBAAA,OAAO,QAAQ;AACjB,YAAA;AACE,gBAAA,OAAO,IAAI;;IAEjB;wGAfW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECb1C,i2CA2CA,EAAA,MAAA,EAAA,CAAA,wpBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDnCY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAKX,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBARzC,SAAS;+BACE,wBAAwB,EAAA,UAAA,EACtB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAA,aAAA,EAGlB,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,i2CAAA,EAAA,MAAA,EAAA,CAAA,wpBAAA,CAAA,EAAA;;sBAGpC;;sBACA;;;AEfH;;ACAA;;AAEG;;;;"}
|