UNPKG

285 kBSource Map (JSON)View Raw
1{"version":3,"file":"vendasta-store.js","sources":["ng://@vendasta/store/lib/assets/i18n/en.ts","ng://@vendasta/store/lib/pricing/pricing.component.ts","ng://@vendasta/store/lib/pricing/highlight-pricing/highlight-pricing.component.ts","ng://@vendasta/store/lib/pricing/table-pricing/table-pricing.component.ts","ng://@vendasta/store/lib/pricing/pricing.module.ts","ng://@vendasta/store/lib/store-card.component.ts","ng://@vendasta/store/lib/store-card.module.ts","ng://@vendasta/store/lib/store.component.ts","ng://@vendasta/store/lib/order-form/dropdown-form-section/dropdown-form-section.component.ts","ng://@vendasta/store/lib/order-form/fields/field.component.ts","ng://@vendasta/store/lib/order-form/fields/field.service.ts","ng://@vendasta/store/lib/header-container/header-container.component.ts","ng://@vendasta/store/lib/header-container/header-container.module.ts","ng://@vendasta/store/lib/order-form/order-form-section/order-form-section-data.ts","ng://@vendasta/store/lib/order-form/order-form-section/order-form-section.component.ts","ng://@vendasta/store/lib/order-form/dropdown-form-section/dropdown-form-section-data.ts","ng://@vendasta/store/lib/order-form/order-form/interface.ts","ng://@vendasta/store/lib/order-form/order-form/order-form.service.ts","ng://@vendasta/store/lib/order-form/order-form/order-form.component.ts","ng://@vendasta/store/lib/order-form/fields/field-base.ts","ng://@vendasta/store/lib/order-form/fields/field-builder/field-builder.component.ts","ng://@vendasta/store/lib/order-form/order-item-list/order-item-list.service.ts","ng://@vendasta/store/lib/order-form/order-item-list/order-item-list.component.ts","ng://@vendasta/store/lib/shared/pricing-pipes.ts","ng://@vendasta/store/lib/order-form/order-form.module.ts","ng://@vendasta/store/lib/store.service.ts","ng://@vendasta/store/lib/files/shared/file.model.ts","ng://@vendasta/store/lib/pricing/pricing.ts","ng://@vendasta/store/lib/shared/sellable.ts","ng://@vendasta/store/lib/shared/case-transform.ts","ng://@vendasta/store/lib/shared/product.ts","ng://@vendasta/store/lib/addon-details/addon-details.component.ts","ng://@vendasta/store/lib/files/files.component.ts","ng://@vendasta/store/lib/files/files.module.ts","ng://@vendasta/store/lib/faqs/faqs.component.ts","ng://@vendasta/store/lib/faqs/faqs.module.ts","ng://@vendasta/store/lib/selling-info/selling-info.component.ts","ng://@vendasta/store/lib/selling-info/selling-info.module.ts","ng://@vendasta/store/lib/restrictions/country/supported-countries.component.ts","ng://@vendasta/store/lib/restrictions/restrictions.module.ts","ng://@vendasta/store/lib/addon-details/addon.module.ts","ng://@vendasta/store/lib/stencils/details-stencil.component.ts","ng://@vendasta/store/lib/stencils/card-stencil.component.ts","ng://@vendasta/store/lib/stencils/card-list-stencil.component.ts","ng://@vendasta/store/lib/stencils/search-bar-stencil.component.ts","ng://@vendasta/store/lib/stencils/list-stencil.component.ts","ng://@vendasta/store/lib/stencils/stencils.module.ts","ng://@vendasta/store/lib/addon-list/addon-list.component.ts","ng://@vendasta/store/lib/addon-list/addon-list.module.ts","ng://@vendasta/store/lib/heimdall-client-token.ts","ng://@vendasta/store/lib/storefront/storefront.component.ts","ng://@vendasta/store/lib/store.module.ts","ng://@vendasta/store/lib/lmi-categories.ts","ng://@vendasta/store/lib/salesperson-details/salesperson-details.component.ts","ng://@vendasta/store/lib/salesperson-details/salesperson-details.module.ts","ng://@vendasta/store/lib/package-details/package.ts","ng://@vendasta/store/lib/package-details/utils.ts","ng://@vendasta/store/lib/package-details/package-details.component.ts","ng://@vendasta/store/lib/products-nav/products-nav.component.ts","ng://@vendasta/store/lib/products-nav/products-nav-v2/products-nav-v2.component.ts","ng://@vendasta/store/lib/products-nav/products-nav.module.ts","ng://@vendasta/store/lib/package-details/package-details.module.ts","ng://@vendasta/store/lib/package-details-v2/package.ts","ng://@vendasta/store/lib/package-details-v2/package-details-v2.component.ts","ng://@vendasta/store/lib/package-details-v2/package-details-v2.module.ts","ng://@vendasta/store/lib/package-dropdown/sales-package.ts","ng://@vendasta/store/lib/package-dropdown/package-dropdown-item/package-dropdown-item.component.ts","ng://@vendasta/store/lib/package-dropdown/package-dropdown.component.ts","ng://@vendasta/store/lib/package-dropdown/package-dropdown.module.ts","ng://@vendasta/store/lib/product-details/product-details.component.ts","ng://@vendasta/store/lib/product-details/product-details.module.ts","ng://@vendasta/store/lib/shared/reseller-item.ts","ng://@vendasta/store/lib/order-form/fields/field-checkbox.ts","ng://@vendasta/store/lib/order-form/fields/field-dropdown.ts","ng://@vendasta/store/lib/order-form/fields/field-fileuploadgroup.ts","ng://@vendasta/store/lib/order-form/fields/field-textarea.ts","ng://@vendasta/store/lib/order-form/fields/field-textbox.ts","ng://@vendasta/store/lib/order-form/fields/field-vbcuser.ts"],"sourcesContent":["/*tslint:disable*/\nexport class En {\n static readonly en = {\n \"FRONTEND.STORE\": {\n \"TOTAL\": \"Total\",\n \"CONTACT_SALES\": \"Contact Sales\",\n \"FREE\": \"Free\",\n \"STARTING_AT\": \"Starting at\",\n \"ENABLED_UPPER\": \"ENABLED\",\n \"ENABLE_UPPER\": \"ENABLE\",\n \"MIN_TO_MAX\": \"{{minRange}} to {{maxRange}}\",\n \"PRODUCT_PRICING_WITH_FREQUENCY\": \"{{pricingTier}} accounts {{frequency}}\",\n \"COMMITMENT_WITH_RENEWAL\": \"*{{initial}} {{frequencyString}} minimum, renews for {{recurring}} {{frequencyString}} periods\",\n \"COMMITMENT\": \"${{initial}} ${{frequencyString}} commitment\",\n \"PRICING_FREQUENCIES\": {\n \"MONTH\": \"month\",\n \"YEAR\": \"year\"\n },\n \"REQUIRES_DESCRIPTOR\": \"(Requires {{requirementName}})\",\n \"ADMINISTRATIVE_QUESTIONS\": \"Administrative Questions\",\n \"AUTO_TITLE_TEXT\": {\n \"SOME_FIELDS_INVALID\": \"* Some fields are invalid and/or required but empty\",\n \"OPTIONAL_FIELDS_UNANSWERED\": \"Optional fields unanswered\",\n \"COMPLETE\": \"Complete\"\n },\n \"REQUIRES\": \"Requires\",\n \"ENABLED_WITH_PREREQUISITE\": \"Enabled with {{prerequisite}}\",\n \"PRICE_APPLIES_PER_UNIT\": \"Price applies per unit within a range\",\n \"PRICE_APPLIES_TO_ALL_UNITS\": \"Price applies to all units once range is met\",\n \"PRICING\": \"Pricing\",\n \"FAQS\": \"FAQs\",\n \"GALLERY\": \"Gallery\",\n \"FILES\": \"Files\",\n \"GET_IT_NOW\": \"Get It Now\",\n \"CONTAINS_NUM_ITEMS\": \"Contains {{itemCount}} items\"\n }\n };\n}\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { BilledProduct, PricingTier } from '@vendasta/core/billing';\nimport { MarketplaceBillingFrequency, DisplayPriceService } from '@vendasta/core/shared';\nimport { Pricing, Price } from './pricing';\nimport { BehaviorSubject, combineLatest, Observable, of } from 'rxjs';\nimport { TranslateService } from '@ngx-translate/core';\nimport { En } from '../assets/i18n/en';\nimport { map, switchMap } from 'rxjs/operators';\n\n@Component({\n selector: 'va-pricing',\n templateUrl: './pricing.component.html',\n styleUrls: ['./pricing.component.scss']\n})\nexport class VaPricingComponent implements OnChanges {\n @Input() pricing: Pricing = null;\n @Input() billedProduct: BilledProduct;\n @Input() wrapFrequency = false;\n @Input() isAddon = false;\n @Input() hasVerifiedContract = false;\n @Input() highlightPrice = true;\n @Input() loaded = true;\n\n pricing$$ = new BehaviorSubject<Pricing>(null);\n billedProduct$$ = new BehaviorSubject<BilledProduct>(null);\n hasVerifiedContract$$ = new BehaviorSubject<boolean>(false);\n\n isFree$: Observable<boolean>;\n shouldContactSales$: Observable<boolean>;\n isFlatPrice$: Observable<boolean>;\n\n pricingTierData$: Observable<{\n isStartingPrice: boolean,\n pricingTierString: string,\n pricingTierForProduct: string,\n pricingTierForAddon: string,\n priceStringForTier: string,\n priceStringForTierWithoutFreq: string,\n }[]>;\n\n priceData$: Observable<{\n isStartingPrice: boolean,\n priceStringForPricingWithoutFrequency: string,\n priceStringForPricingWithFrequency: string,\n frequencyString: string,\n }[]>;\n\n commitmentMessage$: Observable<string>;\n\n get pricing$(): Observable<Pricing> {\n return this.pricing$$.asObservable();\n }\n\n get billedProduct$(): Observable<BilledProduct> {\n return this.billedProduct$$.asObservable();\n }\n\n get hasVerifiedContract$(): Observable<boolean> {\n return this.hasVerifiedContract$$.asObservable();\n }\n\n constructor(private translateService: TranslateService, private displayPriceService: DisplayPriceService) {\n this.translateService.setTranslation('en', En.en, true);\n this.isFree$ = combineLatest([this.pricing$, this.billedProduct$, this.hasVerifiedContract$]).pipe(\n map(([pricing, billedProduct, hasVerifiedContract]) => {\n const isFreeHelper = (prices: { price: number }[]): boolean => {\n return prices ? prices.some(p => p.price === 0 || p.price === undefined) : false;\n };\n\n if (hasVerifiedContract && billedProduct) {\n return billedProduct.pricingTiers.length === 1 ? isFreeHelper(billedProduct.pricingTiers) : false;\n }\n return !!pricing && isFreeHelper(pricing.prices);\n })\n );\n\n this.shouldContactSales$ = combineLatest([this.pricing$, this.billedProduct$, this.hasVerifiedContract$]).pipe(\n map(([pricing, billedProduct, hasVerifiedContract]) => {\n const nestedPricesIsContactSales = (prices: { price: number }[]) => {\n return prices && prices.length > 0 ? prices.some(p => p.price === null || p.price < 0) : true;\n };\n\n if (hasVerifiedContract && billedProduct) {\n return nestedPricesIsContactSales(billedProduct.pricingTiers);\n }\n if (!pricing) {\n return true;\n }\n return nestedPricesIsContactSales(pricing.prices);\n })\n );\n\n this.isFlatPrice$ = this.billedProduct$.pipe(map(billedProduct => billedProduct.pricingTiers.length === 1));\n this.pricingTierData$ = this.billedProduct$.pipe(\n switchMap(billedProduct => {\n const pricingTierObservables = billedProduct.pricingTiers.map(pricingTier => {\n return combineLatest(\n of(pricingTier.isStartingPrice),\n this.buildPricingTierString(pricingTier),\n this.buildPricingTierForProduct(pricingTier, billedProduct.billingFrequency),\n this.buildPricingTierForAddon(pricingTier),\n this.buildPriceStringForTier(pricingTier, billedProduct.billingFrequency, pricingTier.isStartingPrice),\n this.buildPriceStringForTier(pricingTier)\n ).pipe(\n map(([isStartingPrice, pricingTierString, pricingTierForProduct,\n pricingTierForAddon, priceStringForTier, priceStringForTierWithoutFreq]) => {\n return {\n isStartingPrice: isStartingPrice,\n pricingTierString: pricingTierString,\n pricingTierForProduct: pricingTierForProduct,\n pricingTierForAddon: pricingTierForAddon,\n priceStringForTier: priceStringForTier,\n priceStringForTierWithoutFreq: priceStringForTierWithoutFreq\n };\n })\n )\n });\n return combineLatest(...pricingTierObservables)\n })\n );\n\n this.priceData$ = this.pricing$.pipe(\n switchMap(pricing => {\n const priceObservables = pricing.prices.map(price => {\n return combineLatest(\n of(price.isStartingPrice),\n this.buildPriceStringForPricing(price, pricing.currency, true, false),\n this.buildPriceStringForPricing(price, pricing.currency, false, true),\n this.buildFrequencyString(price.frequency)\n ).pipe(\n map(([isStartingPrice, priceStringForPricingWithoutFrequency, priceStringForPricingWithFrequency, frequencyString]) => {\n return {\n isStartingPrice: isStartingPrice,\n priceStringForPricingWithoutFrequency: priceStringForPricingWithoutFrequency,\n priceStringForPricingWithFrequency: priceStringForPricingWithFrequency,\n frequencyString: frequencyString\n };\n })\n )\n });\n return combineLatest(...priceObservables);\n })\n );\n\n this.commitmentMessage$ = this.buildCommitmentMessage();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.hasOwnProperty('pricing')) {\n this.pricing$$.next(changes.pricing.currentValue);\n }\n if (changes.hasOwnProperty('billedProduct')) {\n this.billedProduct$$.next(changes.billedProduct.currentValue);\n }\n if (changes.hasOwnProperty('hasVerifiedContract')) {\n this.hasVerifiedContract$$.next(changes.hasVerifiedContract.currentValue);\n }\n }\n\n buildPricingTierString(tier: PricingTier): Observable<string> {\n let max = String(tier.rangeMax);\n if (tier.rangeMax === -1) {\n max = '∞';\n if (tier.rangeMin === 0 || tier.rangeMin === 1) {\n return of('');\n }\n }\n return this.translateService.stream('FRONTEND.STORE.MIN_TO_MAX', {minRange: String(tier.rangeMin), maxRange: max});\n }\n\n buildPricingTierForProduct(tier: PricingTier, frequency?: string): Observable<string> {\n return combineLatest(this.buildPricingTierString(tier), this.buildFrequencyString(frequency)).pipe(\n switchMap(([pricingTier, formattedFrequency]) => {\n if (pricingTier) {\n return this.translateService.stream('FRONTEND.STORE.PRODUCT_PRICING_WITH_FREQUENCY', {\n pricingTier: pricingTier,\n frequency: formattedFrequency\n });\n }\n return of(formattedFrequency);\n })\n );\n }\n\n buildPricingTierForAddon(tier: PricingTier): Observable<string> {\n return this.buildPricingTierString(tier).pipe(\n map(pricingRange => pricingRange ? pricingRange : '')\n );\n }\n\n buildPriceStringForPricing(price: Price, currency: string, excludeFrequency: boolean, canIncludeStartingAtPrefix: boolean):\n Observable<string> {\n return this.displayPriceService.formatDisplayPrice(\n price.price,\n currency,\n (excludeFrequency ? '' : price.frequency) as any,\n true,\n true,\n true,\n price.isStartingPrice && canIncludeStartingAtPrefix,\n )\n }\n\n buildPriceStringForTier(tier: PricingTier, frequency?: MarketplaceBillingFrequency, isStartingPrice?: boolean): Observable<string> {\n return this.displayPriceService.formatDisplayPrice(\n tier.price,\n this.billedProduct.currency,\n frequency as any,\n undefined,\n undefined,\n undefined,\n isStartingPrice);\n }\n\n buildFrequencyString(frequency?: string): Observable<string> {\n return this.displayPriceService.formatBillingFrequency(frequency);\n }\n\n buildCommitmentMessage(): Observable<string> {\n return combineLatest([\n this.translateService.stream('FRONTEND.STORE.PRICING_FREQUENCIES'),\n this.billedProduct$,\n this.pricing$,\n this.isFree$,\n this.shouldContactSales$\n ]).pipe(\n switchMap(([frequencyTranslations, billedProduct, pricing, isFree, shouldContactSales]) => {\n const frequency = billedProduct ? billedProduct.billingFrequency.toString().toLowerCase() :\n pricing && pricing.prices.length > 0 ? pricing.prices[0].frequency.toLowerCase() : '';\n let frequencyString = '';\n if (frequency === 'yearly') {\n frequencyString = frequencyTranslations.YEAR;\n } else if (frequency === 'monthly') {\n frequencyString = frequencyTranslations.MONTH;\n }\n if (!frequencyString || isFree || shouldContactSales) {\n return of('');\n }\n if (billedProduct && billedProduct.commitment) {\n const initial = billedProduct.commitment.initial;\n const recurring = billedProduct.commitment.recurring;\n return this.translateService.stream('FRONTEND.STORE.COMMITMENT_WITH_RENEWAL', {\n initial: initial,\n frequencyString: frequencyString,\n recurring: recurring,\n });\n }\n return of('');\n })\n )\n }\n}\n","import {Component} from '@angular/core';\nimport {VaPricingComponent} from '../pricing.component';\n\n@Component({\n selector: 'highlight-pricing',\n templateUrl: './highlight-pricing.component.html',\n styleUrls: ['./highlight-pricing.component.scss'],\n})\nexport class HighlightPricingComponent extends VaPricingComponent {\n}\n","import {Component} from '@angular/core';\nimport {VaPricingComponent} from '../pricing.component';\n\n@Component({\n selector: 'table-pricing',\n templateUrl: './table-pricing.component.html',\n styleUrls: ['./table-pricing.component.scss'],\n})\nexport class TablePricingComponent extends VaPricingComponent {\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {VaPricingComponent} from './pricing.component';\nimport {HighlightPricingComponent} from './highlight-pricing/highlight-pricing.component';\nimport {TablePricingComponent} from './table-pricing/table-pricing.component';\nimport {CoreSharedModule} from '@vendasta/core/shared';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@NgModule({\n imports: [\n CommonModule,\n CoreSharedModule,\n TranslateModule\n ],\n declarations: [VaPricingComponent, HighlightPricingComponent, TablePricingComponent],\n exports: [VaPricingComponent]\n})\nexport class VaPricingModule {}\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\n\nimport {StoreItem} from './store-item';\nimport {ImageTransformationService} from '@vendasta/core/image-transformation';\nimport { TranslateService } from '@ngx-translate/core';\nimport { En } from './assets/i18n/en';\n\n@Component({\n selector: 'va-store-card',\n template: `\n<mat-card class=\"hover-card\" *ngIf=\"item\" (click)=\"cardClicked.emit(item)\">\n<div class=\"hover-area\">\n <div class=\"product-banner\" (click)=\"bannerClicked.emit(item)\"\n [style.background-color]=\"item.headerImageUrl ? '': getBannerColorForName()\">\n <img class=\"img-container\" *ngIf=\"item.headerImageUrl\"\n [src]=\"item.headerImageUrl\" [srcset]=\"getSrcsetHeaderUrls(item.headerImageUrl)\">\n </div>\n\n <div class=\"description\" (click)=\"descriptionClicked.emit(item)\">\n <mat-card-header>\n <va-icon mat-card-avatar [diameter]=\"40\" [name]=\"item.name\" [iconUrl]=\"item.iconUrl\"></va-icon>\n <mat-card-title>{{item.name}}</mat-card-title>\n <mat-card-subtitle>\n <ng-container *ngIf=\"item.pricing; else formatted\">\n <va-pricing [pricing]=\"item.pricing\"\n [highlightPrice]=\"false\"></va-pricing>\n </ng-container>\n <ng-template #formatted>{{item.formattedPrice}}</ng-template>\n </mat-card-subtitle>\n </mat-card-header>\n <mat-card-content> {{ item.tagline }}\n </mat-card-content>\n </div>\n\n <button *ngIf=\"item.purchased !== undefined\"\n mat-button color=\"primary\" class=\"enabled-indicator\" (click)=\"purchasedClicked.emit(item)\" [disabled]=\"item.purchased\">\n <i *ngIf=\"!item.purchased\" class=\"material-icons\">add</i>\n <i *ngIf=\"item.purchased\" class=\"material-icons\" style=\"color: #39B74A\">check</i>\n <span>{{ (item.purchased ? 'FRONTEND.STORE.ENABLED_UPPER' : 'FRONTEND.STORE.ENABLE_UPPER') | translate }}</span>\n </button>\n </div>\n</mat-card>\n `,\n styleUrls: ['./store-card.component.scss']\n})\nexport class StoreCardComponent {\n @Input() item: StoreItem;\n @Output() purchasedClicked = new EventEmitter<StoreItem>();\n @Output() cardClicked = new EventEmitter<StoreItem>();\n @Output() descriptionClicked = new EventEmitter<StoreItem>();\n @Output() bannerClicked = new EventEmitter<StoreItem>();\n\n constructor(private imageTransformationService: ImageTransformationService, private translateService: TranslateService) {\n this.translateService.setTranslation('en', En.en, true);\n }\n\n getBannerColorForName(): string {\n // determine an icon color for a product with no icon by using the product name\n const COLOR_CODES = [\n '#EF5350', '#42A5F5', '#66BB6A', '#FFA726', '#AB47BC', '#FFCA28', '#EC407A', '#26C6DA',\n '#FF7B57'\n ];\n let nameSum = 0;\n const defaultColor = '#808080';\n if (!this.item.name) {\n return defaultColor;\n }\n for (let i = 0; i < this.item.name.length; i++) {\n nameSum += this.item.name[i].charCodeAt(0);\n }\n const index = nameSum % COLOR_CODES.length;\n return COLOR_CODES[index];\n }\n\n getSrcsetHeaderUrls(imageUrl: string): string {\n return this.imageTransformationService.getSrcSetForImage(imageUrl, [680, 1360, 2720]);\n }\n\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule, MatCardModule, MatIconModule, MatMenuModule } from '@angular/material';\nimport { ImageTransformationModule } from '@vendasta/core/image-transformation';\nimport { VaIconModule } from '@vendasta/uikit';\nimport { VaPricingModule } from './pricing/pricing.module';\nimport { StoreCardComponent } from './store-card.component';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@NgModule({\n imports: [\n CommonModule,\n VaIconModule,\n MatCardModule,\n MatButtonModule,\n MatIconModule,\n MatMenuModule,\n ImageTransformationModule,\n VaPricingModule,\n TranslateModule\n ],\n declarations: [StoreCardComponent],\n exports: [StoreCardComponent]\n})\nexport class StoreCardModule {}\n","import { Component, OnInit, Input, Output, EventEmitter} from '@angular/core';\n\nimport {StoreItem} from './store-item';\n\n@Component({\n selector: 'va-store',\n template: `\n <div class=\"toolbar\">\n <div *ngIf=\"searchable\" class=\"table-controls-row\">\n <va-search-box (update)=\"filterTerm = $event\"></va-search-box>\n </div>\n </div>\n <div class=\"row row-gutters\">\n <div *ngFor=\"let item of filteredItems\" class=\"col-flex\">\n <va-store-card [item]=\"item\" (cardClicked)=\"this.itemClicked.emit(item)\"></va-store-card>\n </div>\n </div>\n `,\n styleUrls: ['./store.component.scss']\n})\nexport class StoreComponent {\n @Input() items: StoreItem[] = [];\n @Input() searchable = true;\n @Output() itemClicked = new EventEmitter<StoreItem>();\n\n filterTerm: string;\n\n get filteredItems(): StoreItem[] {\n if (this.filterTerm) {\n return this.items.filter(pkg => pkg.name.toLowerCase().indexOf(this.filterTerm.toLowerCase()) !== -1);\n }\n return this.items;\n }\n}\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { FieldBase } from '../fields/field-base';\nimport { combineLatest, Subscription } from 'rxjs';\nimport { TranslateService } from '@ngx-translate/core';\nimport { En } from '../../assets/i18n/en';\n\n@Component({\n selector: 'va-dropdown-form-section',\n template: `\n <mat-expansion-panel *ngIf=\"expandable || expandable == undefined\" [expanded]=\"startOpen\">\n <mat-expansion-panel-header [collapsedHeight]=\"'*'\" [expandedHeight]=\"'*'\">\n <div class=\"dropdown-form-header\">\n <mat-icon\n [ngClass]=\"{invalid: iconName=='warning', valid: iconName=='check_circle', question: iconName=='help_outline'}\">\n {{ iconName }}\n </mat-icon>\n <mat-panel-title *ngIf=\"!displayAutoTitle\">\n {{ titleText }}\n </mat-panel-title>\n <mat-panel-title *ngIf=\"displayAutoTitle\"\n [ngClass]=\"{valid: iconName=='check_circle', invalid: iconName=='warning'}\">\n <div class=\"title\"> {{ titleText }}</div>\n <div *ngIf=\"titleText && autoTitleText\"> &nbsp;</div>\n <div><ng-container><i> {{autoTitleText}} </i></ng-container></div>\n </mat-panel-title>\n <mat-panel-description *ngIf=\"displayAutoDescription\" [ngClass]=\"{invalid: iconName=='warning'}\">\n {{ autoDescriptionText }}\n </mat-panel-description>\n <mat-panel-description *ngIf=\"!displayAutoDescription\" [ngClass]=\"{invalid: iconName=='warning'}\">\n <i> {{descriptionText}} </i>\n </mat-panel-description>\n </div>\n </mat-expansion-panel-header>\n <div class=\"expansion-panel-body\">\n <va-field *ngFor=\"let field of fields\" [field]=\"field\"\n [form]=\"parentForm.controls[titleText + uniqueIndex]\"\n ></va-field>\n <p *ngIf=\"editingHint != ''\" class=\"editing-hint\"><i>{{ editingHint }}</i></p>\n </div>\n </mat-expansion-panel>\n `,\n styleUrls: ['./dropdown-form-section.component.scss']\n})\nexport class DropDownFormSectionComponent implements OnInit, OnDestroy {\n @Input() prepopulatedData: {};\n @Input() startOpen = false;\n @Input() parentForm: FormGroup;\n @Input() displayAutoTitle = false;\n @Input() titleText = '';\n @Input() displayAutoDescription = true;\n @Input() descriptionText = '';\n @Input() fields: FieldBase<any>[];\n @Input() editingHint = '';\n @Input() expandable = true;\n autoDescriptionText = '';\n iconName = 'help_outline';\n subscriptions: Subscription[] = [];\n uniqueIndex = 1;\n autoTitleText = '';\n\n constructor(private translateService: TranslateService) {\n this.translateService.setTranslation('en', En.en, true);\n }\n\n ngOnInit(): void {\n const allFieldsHidden = this.fields.reduce((p, c, i, a) => p && c.hidden, true);\n if (allFieldsHidden) {\n this.expandable = false;\n }\n while (this.parentForm.controls.hasOwnProperty(this.titleText + this.uniqueIndex)) {\n this.uniqueIndex += 1;\n }\n this.parentForm.addControl(this.titleText + this.uniqueIndex, this.toFormGroup(this.fields));\n const form = this.parentForm.controls[this.titleText + this.uniqueIndex] as FormGroup;\n\n for (const key in form.controls) {\n if (form.controls.hasOwnProperty(key)) {\n if (this.prepopulatedData != null && this.prepopulatedData.hasOwnProperty(key)) {\n form.controls[key].setValue(this.prepopulatedData[key]);\n }\n }\n }\n this.subscriptions.push(\n combineLatest([\n form.statusChanges,\n this.translateService.stream('FRONTEND.STORE.AUTO_TITLE_TEXT')\n ]).subscribe(([change, autoTitleText]) => {\n let missingFields = false;\n for (const control in form.controls) {\n if (!form.controls[control].value || (form.controls[control].value.constructor === Array && !form.controls[control].value[0])) {\n this.iconName = 'help_outline';\n missingFields = true;\n if (change === 'INVALID') {\n this.autoTitleText = autoTitleText.SOME_FIELDS_INVALID;\n if (form.controls[control].dirty || form.controls[control].touched) {\n this.iconName = 'warning';\n break;\n }\n } else {\n this.autoTitleText = autoTitleText.OPTIONAL_FIELDS_UNANSWERED;\n }\n }\n }\n if (!missingFields) {\n this.iconName = 'check_circle';\n this.autoTitleText = autoTitleText.COMPLETE;\n }\n })\n );\n\n if (this.displayAutoDescription) {\n this.subscriptions.push(\n form.valueChanges.subscribe(changes => {\n let description = '';\n for (const key in changes) {\n if (changes.hasOwnProperty(key) && changes[key] != null && changes[key].length > 0) {\n if (changes[key][0].name) {\n for (const fileKey in changes[key]) {\n if (changes[key][fileKey] != null) {\n description += changes[key][fileKey].name;\n description += ', ';\n }\n }\n } else {\n description += changes[key];\n description += ', ';\n }\n }\n }\n this.autoDescriptionText = description.substring(0, description.length - 2);\n })\n );\n }\n form.updateValueAndValidity({ onlySelf: false, emitEvent: true });\n }\n\n toFormGroup(formFields: FieldBase<any>[]): FormGroup {\n const group: any = {};\n formFields.forEach(field => {\n let validations;\n if (!field.required || field.hidden) {\n validations = field.validator;\n } else if (field.controlType === 'checkbox') {\n validations = [Validators.requiredTrue, field.validator];\n } else {\n validations = [Validators.required, field.validator];\n }\n\n const formControl = new FormControl({value: field.value, disabled: field.disabled}, validations);\n group[field.id] = formControl;\n this.subscriptions.push(formControl.valueChanges.subscribe(value => (field.value = value)));\n });\n\n return new FormGroup(group);\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\n }\n}\n","import {Input, Component} from '@angular/core';\nimport {FormGroup} from '@angular/forms';\n\n@Component({\n selector: 'va-field',\n styleUrls: ['./field.component.scss'],\n templateUrl: './field.component.html'\n})\nexport class FieldComponent {\n @Input() field: any; // avoid checking union type in template\n @Input() form: FormGroup;\n get isValid(): boolean {\n return this.form.controls[this.field.id].valid || this.form.controls[this.field.id].pristine;\n }\n\n showCheckboxError(field): boolean {\n return this.form.controls[field].errors && this.form.controls[field].errors.required && this.form.controls[field].touched;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FieldBase } from './field-base';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\n@Injectable()\nexport class FieldService {\n createFormControl(field: FieldBase<any>): FormControl {\n if (field.required) {\n return new FormControl(field.value, Validators.required);\n } else {\n return new FormControl(field.value);\n }\n }\n\n toFormGroup(formFields: FieldBase<any>[], subscriptions: Subscription[]): FormGroup {\n const group: any = {};\n formFields.forEach(field => {\n let formControl: FormControl;\n if (field.controlType === 'checkbox') {\n formControl = new FormControl(field.value);\n } else {\n formControl = this.createFormControl(field);\n }\n group[field.id] = formControl;\n if (subscriptions) {\n subscriptions.push(formControl.valueChanges.subscribe(value => (field.value = value)));\n }\n });\n return new FormGroup(group);\n }\n}\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {Pricing} from '../pricing/pricing';\nimport {BilledProduct, BillingModel} from '@vendasta/core/billing';\nimport { Observable, of } from 'rxjs';\nimport { TranslateService } from '@ngx-translate/core';\nimport { En } from '../assets/i18n/en';\n\n@Component({\n selector: 'va-header-container',\n templateUrl: './header-container.component.html',\n styleUrls: ['./header-container.component.scss']\n})\n\nexport class VaHeaderContainerComponent {\n @Input() iconUrl: string;\n @Input() title: string;\n @Input() tagline: string;\n @Input() prerequisite: string;\n @Input() chipLabels: string[];\n @Input() pricing: Pricing;\n @Input() billedProduct: BilledProduct;\n @Input() loaded = true;\n @Input() hasVerifiedContract: boolean;\n @Input() pricingLabel: string;\n @Input() primaryPricingActionLabel: string;\n @Input() pricingActionLabel: string;\n @Input() pricingActionEnabled: boolean;\n @Input() actionEnabled: boolean;\n @Input() actionLabel: string;\n @Input() showAction: boolean;\n @Input() showPricing: boolean;\n @Input() showEnableAddon = false;\n @Input() prerequisiteLabel: string;\n @Output() prerequisiteSelected = new EventEmitter();\n @Output() actionSelected = new EventEmitter();\n @Output() primaryPricingActionSelected = new EventEmitter();\n @Output() pricingActionSelected = new EventEmitter();\n\n constructor(private translateService: TranslateService) {\n this.translateService.setTranslation('en', En.en, true);\n }\n\n onActionSelected(): void {\n this.actionSelected.emit();\n }\n\n onPrerequisiteSelected(): void {\n this.prerequisiteSelected.emit();\n }\n\n showPricingModel(billedProduct: BilledProduct): boolean {\n return billedProduct && [BillingModel.Tiered, BillingModel.Stairstep].includes(billedProduct.billingModel);\n }\n\n getPricingModelTooltips(billingModel: BillingModel): Observable<string> {\n switch (billingModel) {\n case BillingModel.Stairstep:\n return this.translateService.stream('FRONTEND.STORE.PRICE_APPLIES_PER_UNIT');\n case BillingModel.Tiered:\n return this.translateService.stream('FRONTEND.STORE.PRICE_APPLIES_TO_ALL_UNITS');\n default:\n return of('');\n }\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {VaHeaderContainerComponent} from './header-container.component';\nimport {MatChipsModule, MatIconModule, MatButtonModule, MatTooltipModule} from '@angular/material';\nimport {VaPricingModule} from '../pricing/pricing.module';\nimport {VaIconModule} from '@vendasta/uikit';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule,\n VaPricingModule,\n VaIconModule,\n MatChipsModule,\n MatButtonModule,\n MatTooltipModule,\n TranslateModule\n ],\n declarations: [VaHeaderContainerComponent],\n exports: [VaHeaderContainerComponent]\n})\nexport class VaHeaderContainerModule {\n}\n","import {FormGroup} from '@angular/forms';\nimport {DropDownFormSectionData} from '../dropdown-form-section/dropdown-form-section-data';\nexport class OrderFormSectionData {\n parentForm: FormGroup;\n titleText: string;\n subtitleText: string;\n descriptionText: string;\n iconUrl: string;\n primarySection: DropDownFormSectionData;\n subsections: DropDownFormSectionData[];\n}\n","import {Component, Input, OnInit} from '@angular/core';\nimport {DropDownFormSectionData} from '../dropdown-form-section/dropdown-form-section-data';\nimport {OrderFormSectionData} from './order-form-section-data';\n\n@Component({\n selector: 'va-order-form-section',\n templateUrl: 'order-form-section.component.html',\n styleUrls: ['./order-form-section.component.scss'],\n})\n\nexport class OrderFormSectionComponent implements OnInit {\n @Input() data: OrderFormSectionData;\n\n constructor() {}\n\n ngOnInit(): void {\n // The first section should always be expanded.\n const topSection = this.getTopSection();\n if (topSection) {\n topSection.startOpen = true;\n }\n }\n\n getTopSection(): DropDownFormSectionData {\n if (!this.data) {\n return null;\n }\n if (this.data.primarySection) {\n return this.data.primarySection;\n }\n if (this.data.subsections && this.data.subsections.length > 0) {\n return this.data.subsections[0];\n }\n return null;\n }\n}\n","import {FieldBase} from '../fields/field-base';\nimport {FormGroup} from '@angular/forms';\n\nexport class DropDownFormSectionData {\n prepopulatedData: any;\n startOpen: boolean;\n parentForm: FormGroup;\n displayAutoTitle: boolean;\n titleText: string;\n displayAutoDescription: boolean;\n descriptionText: string;\n fields: FieldBase<any>[];\n editingHint: string;\n /* tslint:disable */\n expandable? = true;\n /* tslint:enable */\n}\n","import {DropDownFormSectionData} from '../dropdown-form-section/dropdown-form-section-data';\nimport {OrderFormSectionData} from '../order-form-section/order-form-section-data';\nimport {FieldBase, FieldBaseOptions} from '../fields/field-base';\nimport {DropDownFieldOptions} from '../fields/field-dropdown';\nimport {FileUploadGroupFieldOptions} from '../fields/field-fileuploadgroup';\nimport {TextBoxFieldOptions} from '../fields/field-textbox';\nimport {VBCUserFieldOptions} from '../fields/field-vbcuser';\n\nexport interface OrderLabelsInterface {\n commonForm: {\n headerTitle: string;\n headerText: string;\n editingHint: string;\n businessSectionTitle?: string;\n salespersonSectionTitle?: string;\n contactSectionTitle?: string;\n businessName?: string;\n businessAddress?: string;\n businessPhoneNumber?: string;\n businessAccountGroupId?: string;\n businessWebsite?: string;\n salespersonName?: string;\n salespersonPhoneNumber?: string;\n salespersonEmail?: string;\n contactName?: string;\n contactPhoneNumber?: string;\n contactEmail?: string;\n };\n}\n\nexport type OrderFormFieldOptionsType = (FieldBaseOptions | DropDownFieldOptions | FileUploadGroupFieldOptions | TextBoxFieldOptions | VBCUserFieldOptions)\n\nexport interface OrderFormInterface {\n appId: string;\n addonId?: string;\n commonForm?: IncludedCommonFormFieldsInterface;\n commonFormRequiredFields?: IncludedCommonFormFieldsInterface;\n customFields?: OrderFormFieldOptionsType[];\n}\n\nexport interface IncludedCommonFormFieldsInterface {\n businessName?: boolean;\n businessAddress?: boolean;\n businessPhoneNumber?: boolean;\n businessAccountGroupId?: boolean;\n businessWebsite?: boolean;\n salespersonName?: boolean;\n salespersonPhoneNumber?: boolean;\n salespersonEmail?: boolean;\n contactName?: boolean;\n contactPhoneNumber?: boolean;\n contactEmail?: boolean;\n}\n\nexport interface CommonFormSectionInterface {\n fields: CommonFormFieldInterface[];\n sectionName?: string;\n populatedData?: CommonFormData;\n}\n\nexport interface AddonKeyInterface {\n addonId?: string;\n appId?: string;\n}\n\nexport interface CommonFormFieldInterface extends FieldBase<any> {\n productIds?: string[];\n addonKeys?: AddonKeyInterface[];\n}\n\nexport interface CommonFieldIdsInterface {\n fieldId: string;\n required: boolean;\n}\n\n// Keys are snake cased here because that is the format in which we submit this data to vendors\nexport interface CommonFormData {\n contact_email?: string;\n contact_name?: string;\n contact_phone_number?: string;\n business_account_group_id?: string;\n business_name?: string;\n business_address?: string;\n business_phone_number?: string;\n business_website?: string;\n salesperson_name?: string;\n salesperson_email?: string;\n salesperson_phone_number?: string;\n}\n\nexport class ProductOrderFormSectionData extends OrderFormSectionData {\n productId: string;\n subsections: AddonDropDownFormSectionData[];\n}\n\nexport class AddonDropDownFormSectionData extends DropDownFormSectionData {\n productId: string;\n addonId: string;\n}\n\nexport interface ProductInfoInterface {\n productId: string;\n name?: string;\n tagline?: string;\n icon?: string;\n addonInfo?: AddonInfoInterface[];\n}\n\nexport interface AddonInfoInterface {\n addonId: string;\n name?: string;\n}\n\nexport interface CustomFieldsAnswers {\n productID: string;\n addonKey?: AddonKeyInterface;\n customFieldsAnswers: CustomFieldsAnswer[];\n}\n\nexport interface CustomFieldsAnswer {\n fieldId: string;\n answer?: string;\n}\n\nexport interface OrderFormOptionsInterface {\n bypassRequiredQuestions?: boolean;\n readOnly?: boolean;\n showOfficeUseQuestions?: boolean;\n}\n","import { Injectable } from '@angular/core';\nimport { AddonKey, CommonField, CustomField, Field, FieldType } from '@vendasta/sales-orders';\nimport {\n AddonDropDownFormSectionData,\n CommonFieldIdsInterface,\n CommonFormData,\n CommonFormFieldInterface,\n CommonFormSectionInterface, CustomFieldsAnswer,\n CustomFieldsAnswers,\n OrderFormFieldOptionsType,\n OrderFormInterface,\n OrderLabelsInterface,\n ProductInfoInterface,\n ProductOrderFormSectionData\n} from './interface';\nimport {\n CheckboxField,\n DropdownField,\n FileUploadGroupField,\n FileUploadGroupFieldOptions,\n TextareaField,\n TextboxField,\n VBCUserField,\n VBCUserFieldOptions,\n FieldBase,\n User, DropDownFormSectionData, ControlType,\n} from '../..';\nimport { FormGroup } from '@angular/forms';\nimport uuid from 'uuid/v4';\nimport { OrderFormOptions } from './order-form.component';\n\n@Injectable()\nexport class OrderFormService {\n static camelToSnakeCaseMap = {\n 'contactName': 'contact_name',\n 'contactEmail': 'contact_email',\n 'contactPhoneNumber': 'contact_phone_number',\n 'businessAccountGroupId': 'business_account_group_id',\n 'businessName': 'business_name',\n 'businessAddress': 'business_address',\n 'businessPhoneNumber': 'business_phone_number',\n 'businessWebsite': 'business_website',\n 'salespersonName': 'salesperson_name',\n 'salespersonEmail': 'salesperson_email',\n 'salespersonPhoneNumber': 'salesperson_phone_number'\n };\n\n private static extractRequiredCommonFieldIds(orderForm: OrderFormInterface): string[] {\n if (!orderForm || !orderForm.commonFormRequiredFields) {\n return [];\n }\n return Object.keys(orderForm.commonFormRequiredFields).filter(k => orderForm.commonFormRequiredFields[k]);\n }\n\n private static buildCommonFieldIds(orderForms: OrderFormInterface[]): CommonFieldIdsInterface[] {\n const commonFieldIdsMap: Map<string, CommonFieldIdsInterface> = new Map<string, CommonFieldIdsInterface>();\n for (const key in OrderFormService.camelToSnakeCaseMap) {\n if (key) {\n commonFieldIdsMap.set(key,\n {\n fieldId: key,\n required: false,\n }\n )\n }\n }\n orderForms.map(orderForm => {\n const requiredCommonFieldIds = this.extractRequiredCommonFieldIds(orderForm);\n requiredCommonFieldIds.map(fieldId => {\n const commonFieldId = commonFieldIdsMap.get(fieldId);\n commonFieldId.required = true;\n commonFieldIdsMap.set(fieldId, commonFieldId);\n });\n });\n return Array.from(commonFieldIdsMap.values());\n }\n\n private static fillCommonFormSections(fieldIds: CommonFieldIdsInterface[], commonData: CommonFormData, labels: OrderLabelsInterface,\n options: OrderFormOptions):\n CommonFormSectionInterface[] {\n const commonFormSections = OrderFormService.buildCommonOrderFormFields(fieldIds, labels, options);\n return commonFormSections.map(section => ({...section, populatedData: commonData}));\n }\n\n private static buildCommonOrderFormFields(fieldIds: CommonFieldIdsInterface[], labels: OrderLabelsInterface, options: OrderFormOptions):\n CommonFormSectionInterface[] {\n const businessSection: CommonFormSectionInterface = {\n sectionName: labels.commonForm.businessSectionTitle || 'Business',\n fields: []\n };\n const salespersonSection: CommonFormSectionInterface = {\n sectionName: labels.commonForm.salespersonSectionTitle || 'Salesperson',\n fields: []\n };\n const contactSection: CommonFormSectionInterface = {\n sectionName: labels.commonForm.contactSectionTitle || 'Contact',\n fields: []\n };\n\n for (const field of fieldIds) {\n const fieldLabel = this.getLabelForFieldId(field.fieldId, labels);\n const commonFormField: CommonFormFieldInterface = new TextboxField({\n id: OrderFormService.camelToSnakeCaseMap[field.fieldId],\n label: fieldLabel,\n textboxType: 'text'\n });\n commonFormField.displayOnly = commonFormField.id === 'business_account_group_id';\n commonFormField.disabled = options.readOnly;\n if (!options.bypassRequiredQuestions) {\n commonFormField.required = field.required;\n }\n if (field.fieldId.startsWith('contact')) {\n contactSection.fields.push(commonFormField);\n }\n if (field.fieldId.startsWith('business')) {\n businessSection.fields.push(commonFormField);\n }\n if (field.fieldId.startsWith('salesperson')) {\n if (!options.showOfficeUseQuestions) {\n commonFormField.hidden = true;\n }\n salespersonSection.fields.push(commonFormField);\n }\n }\n return [businessSection, contactSection, salespersonSection].filter(section =>\n section.fields ? section.fields.length > 0 : false\n );\n }\n\n private static getLabelForFieldId(fieldId: string, labels: OrderLabelsInterface): string {\n return labels.commonForm[fieldId] || '';\n }\n\n private static buildOrderFormSectionData(parentForm: FormGroup): AddonDropDownFormSectionData {\n const section = new AddonDropDownFormSectionData();\n section.displayAutoTitle = true;\n section.descriptionText = '';\n section.displayAutoDescription = false;\n section.parentForm = parentForm;\n return section;\n }\n\n private static buildCustomOrderFormFields(customFields: OrderFormFieldOptionsType[], fileUploadUrl: string, users: User[],\n answers: CustomFieldsAnswer[], options: OrderFormOptions):\n FieldBase<any>[] {\n const fieldTypeMap = {\n text: TextboxField,\n textbox: TextboxField,\n dropdown: DropdownField,\n checkbox: CheckboxField,\n file: FileUploadGroupField,\n textarea: TextareaField,\n vbcuser: VBCUserField\n };\n return customFields\n .filter(field => {\n return fieldTypeMap[field.type];\n })\n .map(field => {\n const fieldClass = fieldTypeMap[field.type];\n const result = (function () {\n switch (fieldClass) {\n case VBCUserField:\n const fieldConfig = {\n description: field.description,\n id: field.id,\n required: field.required,\n type: field.type,\n label: field.label,\n forOfficeUseOnly: field.forOfficeUseOnly,\n hidden: field.hidden,\n users: users // TODO: Get users in this component\n } as VBCUserFieldOptions;\n return new VBCUserField(fieldConfig);\n case FileUploadGroupField:\n const uploadField = field as FileUploadGroupFieldOptions;\n uploadField.uploadUrl = fileUploadUrl;\n return new FileUploadGroupField(uploadField);\n default:\n return new fieldClass(field);\n }\n })();\n result.id = OrderFormService.encodeCustomFieldId(field.id);\n if (!options.showOfficeUseQuestions) {\n result.hidden = result.forOfficeUseOnly ? true : result.hidden;\n }\n result.required = options.bypassRequiredQuestions ? false : result.required;\n result.disabled = options.readOnly ? options.readOnly : result.disabled;\n if (answers) {\n const ca = answers.find(a => a.fieldId === field.id);\n if (ca) {\n try {\n result.value = JSON.parse(ca.answer);\n } catch (error) {\n result.value = ca.answer;\n }\n }\n }\n return result\n });\n }\n\n // Different products can have order form fields with the same fieldID, which will cause problem.\n // Please refer to https://github.com/vendasta/business-center-client/pull/1002\n // We will prefix the fieldID with uuid, and take it off before we same the order form into session storage\n private static encodeCustomFieldId(fieldId: string): string {\n const id = uuid();\n return `${id}#${fieldId}`;\n }\n\n private static decodeCustomFieldId(fieldId: string): string {\n return fieldId.replace(new RegExp('(.*#)'), '');\n }\n\n private static mapFieldType(fieldType: ControlType): FieldType {\n switch (fieldType) {\n case 'textbox':\n return FieldType.TEXT;\n case 'textarea':\n return FieldType.TEXTAREA;\n case 'checkbox':\n return FieldType.CHECKBOX;\n case 'dropdown':\n return FieldType.DROPDOWN;\n case 'file':\n return FieldType.FILE;\n case 'vbcuser':\n return FieldType.VBCUSER;\n default:\n return FieldType.NOT_SPECIFIED;\n }\n }\n\n private static orderFieldToSalesOrderField(fieldBase: FieldBase<any>): Field {\n return new Field({\n fieldId: OrderFormService.decodeCustomFieldId(fieldBase.id),\n fieldType: OrderFormService.mapFieldType(fieldBase.controlType),\n label: fieldBase.label,\n description: fieldBase.description || '',\n prefix: fieldBase.prefix || '',\n suffix: fieldBase.suffix || '',\n regexValidator: fieldBase.regexValidator || '',\n regexErrorMessage: fieldBase.regexErrorMessage || '',\n answer: fieldBase.value ? JSON.stringify(fieldBase.value) : 'null'\n });\n }\n\n private static productOrderFormToCustomFields(orderFormData: ProductOrderFormSectionData): CustomField[] {\n const primaryCustomField = new CustomField();\n primaryCustomField.productId = orderFormData.productId;\n primaryCustomField.fields = orderFormData.primarySection\n ? orderFormData.primarySection.fields.map(field => this.orderFieldToSalesOrderField(field))\n : [];\n const secondaryCustomFields = orderFormData.subsections.map(subsection => {\n const customField = new CustomField();\n if (subsection.addonId) {\n customField.addonKey = new AddonKey({\n appId: subsection.productId,\n addonId: subsection.addonId\n });\n } else {\n customField.productId = orderFormData.productId;\n }\n customField.fields = subsection.fields.map(field => this.orderFieldToSalesOrderField(field));\n return customField;\n });\n return [].concat(primaryCustomField, secondaryCustomFields);\n }\n\n public static getCommonFormSections(orderForms: OrderFormInterface[], commonData: CommonFormData, labels: OrderLabelsInterface,\n options: OrderFormOptions):\n CommonFormSectionInterface[] {\n const fieldIds = OrderFormService.buildCommonFieldIds(orderForms);\n return OrderFormService.fillCommonFormSections(fieldIds, commonData, labels, options);\n }\n\n public static getCustomFormSections(orderForms: OrderFormInterface[], products: ProductInfoInterface[], parentForm: FormGroup,\n fileUploadUrl: string, users: User[], answers: CustomFieldsAnswers[], options: OrderFormOptions)\n : ProductOrderFormSectionData[] {\n const formSections = products.map(product => {\n const subsections: AddonDropDownFormSectionData[] = [];\n (product.addonInfo || []).map(addon => {\n const addonOrderForms = orderForms.filter(o => o.addonId === addon.addonId);\n const addonAnswers: CustomFieldsAnswers[] = (answers || []).filter(a => a.addonKey &&\n a.addonKey.appId === product.productId && a.addonKey.addonId === addon.addonId && a.productID === product.productId);\n addonOrderForms.map((addonOrderForm, index) => {\n if (addonOrderForm && addonOrderForm.customFields && addonOrderForm.customFields.length > 0) {\n const addonSection = OrderFormService.buildOrderFormSectionData(parentForm);\n const addonAnswersForThisSpecificFormIndex = (addonAnswers.length > index) ? addonAnswers[index].customFieldsAnswers : [];\n const formFields = OrderFormService.buildCustomOrderFormFields(addonOrderForm.customFields, fileUploadUrl, users,\n addonAnswersForThisSpecificFormIndex, options);\n addonSection.expandable = true;\n addonSection.titleText = addon.name;\n addonSection.fields = formFields;\n addonSection.productId = product.productId;\n addonSection.addonId = addon.addonId;\n subsections.push(addonSection);\n }\n });\n });\n\n const foundOrderForms = orderForms.reduce((orderFormsFound, o) => {\n if (o.appId === product.productId && !o.addonId) {\n orderFormsFound.push(o);\n }\n return orderFormsFound;\n }, []);\n const [primaryOrder, ...otherOrdersForSameProduct] = foundOrderForms;\n\n const productHasOrderForm = primaryOrder && primaryOrder.customFields && primaryOrder.customFields.length > 0;\n if (subsections.length > 0 || productHasOrderForm) {\n const sectionData = new ProductOrderFormSectionData();\n sectionData.productId = product.productId;\n sectionData.parentForm = parentForm;\n sectionData.titleText = product.name;\n sectionData.subtitleText = product.tagline;\n sectionData.descriptionText = ''; // TODO: build the description string to show which common data this form uses\n sectionData.iconUrl = product.icon;\n\n if (productHasOrderForm) {\n const section = OrderFormService.buildOrderFormSectionData(parentForm);\n section.titleText = product.name;\n let productAnswers: CustomFieldsAnswers[] = [];\n if (answers) {\n productAnswers = answers.filter(a => !a.addonKey && a.productID === product.productId);\n }\n const [ firstProductAnswers, ...otherProductAnswers] = productAnswers;\n section.fields = OrderFormService.buildCustomOrderFormFields(primaryOrder.customFields, fileUploadUrl, users,\n firstProductAnswers ? firstProductAnswers.customFieldsAnswers : [], options);\n sectionData.primarySection = section;\n\n otherOrdersForSameProduct.forEach((_, index) => {\n /**\n * Clone the same section to avoid child component from modifying all as if these are all the top section.\n * All sections need to be re-created or else they will have the same id and send repeated data as well.\n */\n const dupeSection = { ...section };\n const answersForSpecificForm = (otherProductAnswers.length > index) ? otherProductAnswers[index].customFieldsAnswers : [];\n dupeSection.fields = OrderFormService.buildCustomOrderFormFields(primaryOrder.customFields, fileUploadUrl, users,\n answersForSpecificForm, options);\n\n subsections.unshift(dupeSection);\n });\n }\n\n sectionData.subsections = subsections;\n return sectionData;\n }\n return null;\n }).filter(s => !!s);\n return formSections;\n }\n\n public static getExtraFieldsSection(extraFields: OrderFormFieldOptionsType[], parentForm: FormGroup, fileUploadUrl: string, users: User[],\n answers: CustomFieldsAnswer[], options: OrderFormOptions): DropDownFormSectionData {\n if (!extraFields || extraFields.length < 1) {\n return null\n }\n const section = OrderFormService.buildOrderFormSectionData(parentForm);\n section.fields = OrderFormService.buildCustomOrderFormFields(extraFields, fileUploadUrl, users, answers, options);\n return section\n }\n\n public static getCustomFieldsData(customFormSections: ProductOrderFormSectionData[]): CustomField[] {\n const customFormData = customFormSections.reduce((acc, orderFormData) => {\n acc = acc.concat(OrderFormService.productOrderFormToCustomFields(orderFormData));\n return acc;\n }, []);\n return customFormData;\n }\n\n public static getCommonFieldsData(commonFormSections: CommonFormSectionInterface[]): CommonField[] {\n let commonFields: CommonField[] = [];\n if (commonFormSections) {\n commonFields = commonFormSections.reduce((acc, group) => {\n const fields = group.fields.map(singleField => {\n const field = OrderFormService.orderFieldToSalesOrderField(singleField);\n if (field.fieldId) {\n return new CommonField({\n field: field,\n productIds: singleField.productIds,\n addonKeys: singleField.addonKeys\n });\n }\n });\n return acc.concat(fields);\n }, [])\n }\n return commonFields;\n }\n\n public static getExtraFieldsData(extraFieldsSection: DropDownFormSectionData): Field[] {\n let extraFieldsData: Field[] = [];\n if (!!extraFieldsSection) {\n extraFieldsData = extraFieldsSection.fields.map(field => OrderFormService.orderFieldToSalesOrderField(field));\n }\n return extraFieldsData;\n }\n\n constructor() {\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport {\n CommonFormData,\n CommonFormSectionInterface, CustomFieldsAnswer,\n CustomFieldsAnswers, OrderFormFieldOptionsType,\n OrderFormInterface, OrderFormOptionsInterface,\n OrderLabelsInterface,\n ProductInfoInterface,\n ProductOrderFormSectionData\n} from './interface';\nimport { OrderFormService } from './order-form.service';\nimport { DropDownFormSectionData, User } from '../..';\nimport { CommonField, CustomField, Field } from '@vendasta/sales-orders';\nimport { TranslateService } from '@ngx-translate/core';\nimport { En } from '../../assets/i18n/en';\nimport {BehaviorSubject} from 'rxjs';\n\n@Component({\n styleUrls: ['order-form.component.scss'],\n templateUrl: 'order-form.component.html',\n providers: [],\n selector: 'va-order-form'\n})\nexport class OrderFormComponent implements OnInit {\n @Input() commonData: CommonFormData;\n @Input() answers: CustomFieldsAnswers[];\n @Input() parentForm: FormGroup;\n @Input() fileUploadUrl: string; // TODO: One standard fileuploadurl in this component\n @Input() orderForms: OrderFormInterface[]; // TODO: Get orderForms in this component\n @Input() productInfo: ProductInfoInterface[]; // TODO: Get productInfo in this component\n @Input() labels: OrderLabelsInterface; // TODO: Handle common field labels with translations in this component\n @Input() users: User[]; // TODO: Get users in this component\n @Input() extraFields: OrderFormFieldOptionsType[]; // TODO: Get this into the component\n @Input() extraFieldsAnswers: CustomFieldsAnswer[]; // TODO: Get this into the component\n @Input() orderFormOptions: OrderFormOptionsInterface;\n\n commonFormSections: CommonFormSectionInterface[];\n customFormSections: ProductOrderFormSectionData[];\n extraFieldsSection: DropDownFormSectionData;\n\n dropdownOpen$$ = new BehaviorSubject<boolean>(false);\n dropdownOpen$ = this.dropdownOpen$$.asObservable();\n\n constructor(private translateService: TranslateService) {\n this.translateService.setTranslation('en', En.en, true);\n }\n\n ngOnInit(): void {\n const options = new OrderFormOptions(this.orderFormOptions || {});\n\n this.commonFormSections = OrderFormService.getCommonFormSections(this.orderForms, this.commonData, this.labels, options);\n this.customFormSections = OrderFormService.getCustomFormSections(this.orderForms, this.productInfo, this.parentForm,\n this.fileUploadUrl, this.users, this.answers, options);\n // TODO: Handle MyCorporation OrderForm (handled in a separate component right now)\n this.extraFieldsSection = OrderFormService.getExtraFieldsSection(this.extraFields, this.parentForm, this.fileUploadUrl,\n this.users, this.extraFieldsAnswers, options);\n\n }\n\n /**\n * returns the data from common form fields in a format that is usable by sales orders\n */\n public getCommonFormData(): CommonField[] {\n return OrderFormService.getCommonFieldsData(this.commonFormSections);\n }\n\n /**\n * returns the data from custom forms in a format that is usable by sales orders\n */\n public getCustomFormData(): CustomField[] {\n return OrderFormService.getCustomFieldsData(this.customFormSections);\n }\n\n /**\n * returns the data from extra fields in a format that is usable by sales orders\n */\n public getExtraFieldsData(): Field[] {\n return OrderFormService.getExtraFieldsData(this.extraFieldsSection);\n }\n\n /**\n * changes the read only state of the sales order form\n */\n public changeReadOnly(readOnly: boolean): void {\n this.orderFormOptions.readOnly = readOnly;\n readOnly ? this.parentForm.disable() : this.parentForm.enable();\n }\n\n public openDropdown(): void {\n this.dropdownOpen$$.next(true);\n }\n}\n\nexport class OrderFormOptions implements OrderFormOptionsInterface {\n bypassRequiredQuestions: boolean;\n readOnly: boolean;\n showOfficeUseQuestions: boolean;\n\n constructor(i: OrderFormOptionsInterface) {\n this.bypassRequiredQuestions = !!i.bypassRequiredQuestions;\n this.readOnly = !!i.readOnly;\n this.showOfficeUseQuestions = !!i.showOfficeUseQuestions;\n }\n\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport const FILES = 'file';\nexport const DROP_DOWN = 'dropdown';\nexport const CHECK_BOX = 'checkbox';\nexport const TEXT_AREA = 'textarea';\nexport const TEXT_BOX = 'textbox';\nexport const BUSINESS_USER = 'vbcuser';\n\nexport type ControlType = 'checkbox' | 'dropdown' | 'file' | 'textbox' | 'textarea' | 'vbcuser';\n\nexport interface FieldBaseOptions {\n // TODO This and marketplace-apps OrderFormFieldInterface should share a common base\n id: string;\n label: string;\n required?: boolean;\n description?: string;\n type?: string;\n prefix?: string;\n suffix?: string;\n regexValidator?: string;\n regexErrorMessage?: string;\n disabled?: boolean;\n forOfficeUseOnly?: boolean;\n hidden?: boolean;\n displayOnly?: boolean;\n}\n\nexport abstract class FieldBase<T> implements FieldBaseOptions {\n value: T;\n id: string;\n label: string;\n required: boolean;\n order: number;\n description: string;\n controlType: ControlType;\n prefix: string;\n suffix: string;\n regexValidator: string;\n regexErrorMessage: string;\n disabled: boolean;\n validator: ValidatorFn;\n forOfficeUseOnly: boolean;\n hidden: boolean;\n displayOnly: boolean;\n\n constructor(options: FieldBaseOptions) {\n this.id = options.id;\n this.label = options.label;\n this.required = !!options.required;\n this.description = options.description || null;\n options.type = options.type === 'text' ? 'textbox' : options.type;\n this.controlType = options.type as ControlType;\n this.prefix = options.prefix;\n this.suffix = options.suffix;\n this.regexValidator = options.regexValidator;\n this.regexErrorMessage = options.regexErrorMessage;\n this.disabled = options.disabled || false;\n this.validator = this.validatorBuilder();\n this.forOfficeUseOnly = !!options.forOfficeUseOnly;\n this.hidden = options.hidden;\n this.displayOnly = options.displayOnly;\n }\n\n getLabel(): string {\n let fieldLabel = this.label;\n if (this.required) {\n fieldLabel += ' *';\n }\n return fieldLabel;\n }\n\n protected validatorBuilder(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: any } => {\n return null\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { AbstractControl, FormArray, FormControl, FormGroup, ValidatorFn, Validators } from '@angular/forms';\nimport { OrderFormFieldInterface, OrderFormFieldOptionInterface } from '@vendasta/core/marketplace-apps';\nimport { BUSINESS_USER, CHECK_BOX, ControlType, DROP_DOWN, FILES, TEXT_AREA, TEXT_BOX } from '../field-base';\n\n@Component({\n selector: 'va-field-builder',\n templateUrl: './field-builder.component.html',\n styleUrls: ['./field-builder.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FieldBuilderComponent implements OnInit {\n @Input() orderFormFieldGroup: FormGroup;\n @Input() supportedFieldTypes: FormFieldInterface[];\n @Output() removeField: EventEmitter<string> = new EventEmitter(null);\n\n showValidators: boolean;\n showSuffixes: boolean;\n\n static createDropDownOption(option: OrderFormFieldOptionInterface, required: boolean): FormGroup {\n return new FormGroup({\n label: new FormControl(option.label || option.value, required ? [Validators.required] : []),\n value: new FormControl(option.value),\n useValue: new FormControl(!!option.value)\n });\n }\n\n static createDropDownOptions(options: OrderFormFieldOptionInterface[]): FormArray {\n if (options === null || options === undefined) {\n options = [];\n }\n const orderFormFieldsGroupArray: FormGroup[] =\n options.map(option => FieldBuilderComponent.createDropDownOption(option, false));\n return new FormArray(orderFormFieldsGroupArray);\n }\n\n static createOrderFormFieldGroup(orderFormField: OrderFormFieldInterface): FormGroup {\n const orderFormFieldGroup = new FormGroup({\n descriptionControl: new FormControl(orderFormField.description, []),\n labelControl: new FormControl(orderFormField.label, [Validators.required]),\n idControl: new FormControl(orderFormField.id, [Validators.required]),\n requiredControl: new FormControl(orderFormField.required || false, []),\n uploadUrlControl: new FormControl(orderFormField.uploadUrl, []),\n prefixControl: new FormControl(orderFormField.prefix, []),\n suffixControl: new FormControl(orderFormField.suffix, []),\n regexValidatorControl: new FormControl(orderFormField.regexValidator, regexValidator()),\n regexErrorMessageControl: new FormControl(orderFormField.regexErrorMessage, []),\n typeControl: new FormControl(getFieldInterface(orderFormField.type), [Validators.required]),\n allowMultiples: new FormControl(orderFormField.allowMultiples || false, []),\n allowDuplicates: new FormControl(orderFormField.allowDuplicates || false, []),\n maxChoices: new FormControl(orderFormField.maxChoices ? orderFormField.maxChoices : 1, [Validators.min(1), numberValidator()]),\n forOfficeUseOnly : new FormControl(orderFormField.forOfficeUseOnly || false, [])\n });\n if (orderFormField.optionsWithLabels) {\n const optionsArray = FieldBuilderComponent.createDropDownOptions(orderFormField.optionsWithLabels);\n orderFormFieldGroup.addControl('optionsFormArray', optionsArray);\n } else if (orderFormField.options) {\n const optionsArray = FieldBuilderComponent.createDropDownOptions(orderFormField.options.map(option => ({label: option})));\n orderFormFieldGroup.addControl('optionsFormArray', optionsArray);\n } else {\n orderFormFieldGroup.addControl('optionsFormArray', new FormArray([]));\n }\n\n return orderFormFieldGroup;\n }\n\n ngOnInit(): void {\n if (!this.supportedFieldTypes || this.supportedFieldTypes.length < 1) {\n this.supportedFieldTypes = FORM_FIELDS;\n }\n this.initForm();\n }\n\n initForm(): void {\n // Check to see if form has been initiated\n if (!this.orderFormFieldGroup.get('labelControl')) {\n this.orderFormFieldGroup =\n FieldBuilderComponent.createOrderFormFieldGroup({});\n }\n }\n\n getOptionsArray(): FormArray {\n return this.orderFormFieldGroup.get('optionsFormArray') as FormArray;\n }\n\n getCurrentFieldInterface(): string {\n const formFieldTypeInterface =\n (this.orderFormFieldGroup.get('typeControl').value as FormFieldInterface);\n return formFieldTypeInterface ? formFieldTypeInterface.id : null;\n }\n\n removeOption(index: number): void {\n const formArray = this.getOptionsArray();\n formArray.removeAt(index);\n }\n\n addOption(): void {\n const fieldArray = this.getOptionsArray();\n fieldArray.push(FieldBuilderComponent.createDropDownOption({label: ''}, true));\n }\n\n getFormValues(): OrderFormFieldInterface {\n const obj: OrderFormFieldInterface = {};\n obj.label = this.orderFormFieldGroup.get('labelControl').value;\n obj.id = this.orderFormFieldGroup.get('idControl').value;\n\n const formFieldType =\n (this.orderFormFieldGroup.get('typeControl').value as\n FormFieldInterface); // use the id instead of the whole object\n obj.type = formFieldType ? formFieldType.id : null;\n\n // Options will be nested under their own form control in the larger Orderformfield array\n const optionsArray = (this.orderFormFieldGroup.get('optionsFormArray') as FormArray);\n if (optionsArray && optionsArray.value) {\n obj.options = optionsArray.value.map(option => option.value || option.label);\n obj.optionsWithLabels = optionsArray.value.map(option => ({label: option.label, value: option.value}));\n }\n\n obj.description = this.orderFormFieldGroup.get('descriptionControl').value;\n obj.required = this.orderFormFieldGroup.get('requiredControl').value || false;\n obj.uploadUrl = this.orderFormFieldGroup.get('uploadUrlControl').value;\n obj.prefix = this.orderFormFieldGroup.get('prefixControl').value;\n obj.suffix = this.orderFormFieldGroup.get('suffixControl').value;\n obj.regexValidator = this.orderFormFieldGroup.get('regexValidatorControl').value;\n obj.regexErrorMessage = this.orderFormFieldGroup.get('regexErrorMessageControl').value;\n obj.allowMultiples = this.orderFormFieldGroup.get('allowMultiples').value || false;\n obj.allowDuplicates = this.orderFormFieldGroup.get('allowDuplicates').value || false;\n obj.maxChoices = this.orderFormFieldGroup.get('maxChoices').value || 1;\n obj.forOfficeUseOnly = this.orderFormFieldGroup.get('forOfficeUseOnly').value || false;\n return obj;\n }\n}\n\n// Validation to ensure supplied regex is valid\nexport function regexValidator(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: any } => {\n try {\n const _ = new RegExp(control.value || '');\n } catch (e) {\n return {'regex': true};\n }\n return null;\n };\n}\n\nexport function numberValidator(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: any } => {\n const isNumber = /^\\d+$/;\n if (isNumber.test(control.value)) {\n return null\n }\n return {'number': true};\n };\n}\n\nexport interface FormFieldInterface {\n id: ControlType;\n name: string;\n}\n\nexport const FORM_FIELDS: FormFieldInterface[] = [\n {id: FILES, name: 'Files'}, {id: DROP_DOWN, name: 'Drop Down'},\n {id: CHECK_BOX, name: 'Check Box'}, {id: TEXT_AREA, name: 'Text Area'},\n {id: TEXT_BOX, name: 'Text Box'}, {id: BUSINESS_USER, name: 'End User'}\n];\n\nexport function getFieldInterface(formFieldId: string): FormFieldInterface {\n return getFormFieldInterfaceFromId((formFieldId as ControlType));\n}\n\nexport function getFormFieldInterfaceFromId(id: ControlType): FormFieldInterface {\n return FORM_FIELDS.find((obj: FormFieldInterface) => obj.id === id);\n}\n","import { OrderConfirmationItem, Pricing } from './interface';\n\nexport class OrderItemListService {\n static getPriceSummary(items: OrderConfirmationItem[]): { items: Pricing[]; includesUndefinedPricing: boolean } {\n if (!items) {\n return { items: [], includesUndefinedPricing: false };\n }\n let includesUndefinedPricing = false;\n const summaryItems = items.reduce((currentArray, item) => {\n if (item.pricing.prices.length <= 0) {\n includesUndefinedPricing = true;\n return currentArray;\n }\n\n item.pricing.prices.map(price => {\n if (!price || price.price < 0) {\n includesUndefinedPricing = true;\n return;\n }\n\n const freq = price.billingFrequency;\n const cur = item.pricing.currency;\n\n const existingCurIndex = currentArray.findIndex(summaryItem => summaryItem.currency === cur);\n let pricing: Pricing = {\n currency: cur,\n prices: []\n };\n if (existingCurIndex > -1) {\n pricing = currentArray[existingCurIndex];\n }\n\n const existingFreqIndex = pricing.prices.findIndex(\n summaryItem => summaryItem.billingFrequency === freq\n );\n const quantifiedPrice = price.price !== null ? price.price * item.quantity : null;\n const quantifiedDiscount = (price.discountAmount || 0) * item.quantity;\n if (existingFreqIndex > -1) {\n pricing.prices[existingFreqIndex] = {\n price: pricing.prices[existingFreqIndex].price + quantifiedPrice,\n billingFrequency: freq,\n discountAmount:\n pricing.prices[existingFreqIndex].discountAmount + quantifiedDiscount\n };\n } else {\n pricing.prices.push({\n price: quantifiedPrice,\n billingFrequency: freq,\n discountAmount: quantifiedDiscount\n });\n }\n if (existingCurIndex > -1) {\n currentArray[existingCurIndex] = pricing;\n } else {\n currentArray.push(pricing);\n }\n });\n return currentArray;\n }, []);\n return { items: summaryItems, includesUndefinedPricing: includesUndefinedPricing };\n }\n}\n","import { Component, Input } from '@angular/core';\nimport {\n OrderConfirmationItem,\n Pricing,\n TaxOption,\n RetailPrice,\n } from './interface';\nimport { OrderItemListService } from './order-item-list.service';\nimport { En } from '../../assets/i18n/en';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'va-order-item-list',\n templateUrl: './order-item-list.component.html',\n styleUrls: ['./order-item-list.component.scss']\n})\nexport class OrderItemListComponent {\n items: OrderConfirmationItem[];\n summaryItems: Pricing[];\n includesUndefinedPricing = false;\n\n @Input() taxOptions: TaxOption[];\n @Input() hidePricing: boolean;\n\n @Input()\n set orderItems(items: OrderConfirmationItem[]) {\n this.items = items || [];\n const summary = OrderItemListService.getPriceSummary(items);\n this.summaryItems = summary.items;\n this.includesUndefinedPricing = summary.includesUndefinedPricing;\n }\n\n constructor(\n private translateService: TranslateService) {\n this.translateService.setTranslation('en', En.en, true);\n }\n\n public calculateTotalPrice(price: RetailPrice): number {\n if (price.price === null) {\n return null;\n }\n\n const totalPrice = price.price - price.discountAmount;\n\n if (!this.taxOptions) {\n return totalPrice;\n }\n\n const taxTotal = this.taxOptions.reduce(\n (all, tax) => all + (tax.percentage * totalPrice),\n 0\n );\n\n return totalPrice + taxTotal;\n }\n\n public buildTaxLabel(tax: TaxOption): string {\n const taxPercentage = Number(tax.percentage * 100).toFixed(2);\n\n return `${tax.label} (${taxPercentage}%)`;\n }\n\n public isFree(): boolean {\n const summaryTotal = this.summaryItems.reduce(\n (all, item) => {\n const totalPrices = item.prices.reduce((acc, price) => acc + price.price, 0);\n\n return all + totalPrices;\n }\n , 0);\n\n return summaryTotal === 0;\n }\n}\n","import { BillingFrequency, Currency, formatBillingFrequency, formatDisplayPrice } from '@vendasta/core/shared';\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'price' })\nexport class PricePipe implements PipeTransform {\n transform(\n value: any,\n currency: Currency,\n billingFrequency?: BillingFrequency,\n isCents: boolean = true,\n translateZero: boolean = true,\n displaySymbol: boolean = true\n ): any {\n return formatDisplayPrice(value, currency, billingFrequency, isCents, translateZero, displaySymbol);\n }\n}\n\n@Pipe({ name: 'formatBillingFrequency' })\nexport class FormatBillingFrequencyPipe implements PipeTransform {\n transform(value: string): string {\n return formatBillingFrequency(value);\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {\n MatButtonModule, MatCheckboxModule, MatExpansionModule, MatIconModule, MatInputModule, MatOptionModule,\n MatProgressSpinnerModule, MatSelectModule, MatCardModule, MatTooltipModule\n} from '@angular/material';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { MatListModule } from '@angular/material/list'\nimport {VaFormsModule} from '@vendasta/forms';\nimport {VaIconModule, VaBadgeModule } from '@vendasta/uikit';\n\nimport {DropDownFormSectionComponent} from './dropdown-form-section/dropdown-form-section.component';\nimport {FieldComponent} from './fields/field.component';\nimport {FieldService} from './fields/field.service';\nimport {VaHeaderContainerModule} from '../header-container/header-container.module';\nimport {OrderFormSectionComponent} from './order-form-section/order-form-section.component';\nimport {OrderFormComponent} from './order-form/order-form.component';\nimport {OrderFormService} from './order-form/order-form.service';\nimport {FieldBuilderComponent} from './fields/field-builder/field-builder.component';\nimport { OrderItemListComponent } from './order-item-list/order-item-list.component';\nimport { OrderItemListService } from './order-item-list/order-item-list.service';\n\nimport { PricePipe, FormatBillingFrequencyPipe } from './../shared/pricing-pipes';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n MatButtonModule,\n MatCheckboxModule,\n MatExpansionModule,\n MatIconModule,\n MatInputModule,\n MatOptionModule,\n MatProgressSpinnerModule,\n MatSelectModule,\n MatCardModule,\n MatTooltipModule,\n ReactiveFormsModule,\n VaFormsModule,\n VaHeaderContainerModule,\n VaIconModule,\n VaFormsModule,\n VaBadgeModule,\n MatListModule,\n TranslateModule,\n ],\n declarations: [\n DropDownFormSectionComponent,\n FieldComponent,\n OrderFormSectionComponent,\n OrderFormComponent,\n FieldBuilderComponent,\n OrderItemListComponent,\n PricePipe,\n FormatBillingFrequencyPipe,\n ],\n exports: [\n DropDownFormSectionComponent,\n FieldComponent,\n OrderFormSectionComponent,\n OrderFormComponent,\n FieldBuilderComponent,\n OrderItemListComponent,\n ],\n providers: [\n FieldService,\n OrderFormService,\n OrderItemListService,\n ]\n})\nexport class VaOrderFormModule {}\n","import {Injectable} from '@angular/core';\nimport {FormControl, FormGroup} from '@angular/forms';\n\n@Injectable()\nexport class StoreService {\n\n markFormsAsTouched(formGroup: FormGroup) {\n for (const key in formGroup.controls) {\n if (formGroup.controls[key] instanceof FormGroup) {\n this.markFormsAsTouched(formGroup.controls[key] as FormGroup);\n } else {\n (formGroup.controls[key] as FormControl).markAsTouched();\n (formGroup.controls[key] as FormControl).updateValueAndValidity();\n }\n }\n }\n}\n","export class File {\n\n constructor(public url: string) {\n this.url = url;\n }\n\n get name(): string {\n return this.url ? this.url.substring(this.url.lastIndexOf('/') + 1, this.url.lastIndexOf('.')) : null;\n }\n\n get icon(): string {\n const ext = this.url ? this.url.substring(this.url.lastIndexOf('.') + 1) : null;\n switch (ext) {\n case 'pdf':\n return 'icon-pdf';\n case 'ppt':\n return 'icon-ppt';\n default:\n return 'icon-docs';\n }\n }\n}\n","export interface Pricing {\n currency: string;\n prices: Price[];\n}\n\nexport interface Price {\n price: number;\n frequency: string;\n isStartingPrice?: boolean;\n}\n\nexport const CONTACT_SALES = -1;\n","import { CONTACT_SALES, Pricing } from '../pricing/pricing';\n\nexport class Sellable {\n pricing: Pricing;\n\n get isFree(): boolean {\n return this.pricing && this.pricing.prices ? this.pricing.prices.some(p => p.price === 0 || p.price === undefined) : false;\n }\n\n get shouldContactSales(): boolean {\n return this.pricing && this.pricing.prices ?\n this.pricing.prices.some(p => p.price === null || p.price === CONTACT_SALES) ||\n this.pricing.prices.length === 0 : true;\n }\n\n static getCapitalizeFirstLetter(inputString: string): string {\n return inputString ? inputString.charAt(0).toUpperCase() + inputString.slice(1) : null;\n }\n\n get formattedPricingList(): string[] {\n if (this.pricing && this.pricing.prices && this.pricing.prices.length) {\n const hasCurrencyAndIsNotUSD = this.pricing.currency && this.pricing.currency !== 'USD';\n const currencyStr = hasCurrencyAndIsNotUSD ? this.pricing.currency : '';\n const currencySymbol = Sellable.getCurrencySymbol(this.pricing.currency);\n\n return this.pricing.prices.map(price => {\n const frequencyStr = price.frequency ? '/ ' + Sellable.getCapitalizeFirstLetter(price.frequency) : '';\n const roundedPrice = ((price.price || 0) / 100.0).toFixed(2);\n const startingAtPrefix = price.isStartingPrice ? 'Starting at ' : '';\n const priceStr = `${startingAtPrefix}${currencySymbol}${roundedPrice} ${currencyStr} ${frequencyStr}`;\n return (priceStr.trim().replace(/\\s+/g, ' '));\n });\n } else {\n return ['Contact Sales'];\n }\n }\n\n get priceStrings(): string[] {\n if (this.shouldContactSales) {\n return ['Contact Sales'];\n }\n\n if (this.isFree) {\n return ['Free'];\n }\n\n return this.formattedPricingList;\n }\n\n get formattedWholesalePrice(): string {\n return this.priceStrings.join(' + ');\n }\n\n static getCurrencySymbol(currency: string): string {\n let currencySymbol = '$';\n switch (currency) {\n case 'EUR': currencySymbol = '\\u20AC'; break;\n case 'GBP': currencySymbol = '\\u00A3'; break;\n case 'CHF': currencySymbol = 'Fr'; break;\n case 'CNY': currencySymbol = '\\u00A5'; break;\n case 'JPY': currencySymbol = '\\u00A5'; break;\n case 'CZK': currencySymbol = 'K\\u010d'; break;\n case 'INR': currencySymbol = '\\u20B9'; break;\n case 'KHR': currencySymbol = '\\u17DB'; break;\n case 'KRW': currencySymbol = '\\u20A9'; break;\n case 'NOK': currencySymbol = 'kr'; break;\n case 'SEK': currencySymbol = 'kr'; break;\n case 'RUB': currencySymbol = '\\u20BD'; break;\n case 'TRY': currencySymbol = '\\u20BA'; break;\n case 'ZAR': currencySymbol = 'R'; break;\n default: currencySymbol = '$'; break;\n }\n return currencySymbol;\n }\n\n}\n","// @dynamic\nexport class CaseTransform {\n static snakeToCamelCase(value: string): string {\n return value ? value.replace(new RegExp(/_/g), ' ').replace(/\\b\\w/g, l => l.toUpperCase())\n .replace(/\\b\\w/, l => l.toLowerCase()).replace(/\\s/g, '') : value;\n }\n\n static lowerToTitleCase(value: string): string {\n // Code taken from https://github.com/gouch/to-title-case to support the proper spec.\n const smallWords = /^(a|an|and|as|at|but|by|en|for|if|in|nor|of|on|or|per|the|to|vs?\\.?|via)$/i;\n\n return value ? value.replace(/[A-Za-z0-9\\u00C0-\\u00FF]+[^\\s-]*/g, function (match, index, title) {\n if (index > 0 && index + match.length !== title.length &&\n match.search(smallWords) > -1 && title.charAt(index - 2) !== ':' &&\n (title.charAt(index + match.length) !== '-' || title.charAt(index - 1) === '-') &&\n title.charAt(index - 1).search(/[^\\s-]/) < 0) {\n return match.toLowerCase();\n }\n\n if (match.substr(1).search(/[A-Z]|\\../) > -1) {\n return match;\n }\n\n return match.charAt(0).toUpperCase() + match.substr(1);\n }) : value;\n };\n}\n","import {File} from '../files/shared/file.model';\nimport {Faq} from '../faqs/shared/faqs.model';\nimport {Sellable} from './sellable';\nimport {CaseTransform} from './case-transform';\nimport {Addon} from '@vendasta/core/shared';\nimport {Restrictions} from '../restrictions/shared/restrictions.model';\n\nconst COLOR_CODES = [\n '#EF5350', '#42A5F5', '#66BB6A', '#FFA726', '#AB47BC', '#FFCA28', '#EC407A', '#26C6DA',\n '#FF7B57'\n];\n\nconst DEFAULT_COLOR = '#808080';\n\nexport class Product extends Sellable {\n productId: string;\n editionId: string;\n editionName: string;\n name: string;\n description: string;\n tagline: string;\n iconUrl: string;\n entryUrl: string;\n screenshotUrls: string[];\n pdfUploadUrls: string[];\n lmiCategories: string[];\n keySellingPoints: string[];\n faqs: Faq[];\n wholesalePrice: number;\n currency: string;\n billingFrequency: string;\n billingId: string;\n isArchived: boolean;\n addons: Addon[] = [];\n files: File[];\n restrictions: Restrictions;\n\n static fromApi(data: any): Product {\n const newProduct = {};\n data = data || {};\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n const newKey = CaseTransform.snakeToCamelCase(key);\n newProduct[newKey] = data[key];\n }\n }\n return new Product(newProduct);\n }\n constructor(data?: any) {\n super();\n data = data || {};\n this.pricing = data.pricing;\n this.productId = data.productId;\n this.editionId = data.editionId;\n this.editionName = data.editionName;\n this.name = data.name;\n this.description = data.description;\n this.tagline = data.tagline;\n this.iconUrl = data.iconUrl;\n this.entryUrl = data.entryUrl;\n this.screenshotUrls = data.screenshotUrls;\n this.pdfUploadUrls = data.pdfUploadUrls;\n this.lmiCategories = data.lmiCategories;\n this.keySellingPoints = data.keySellingPoints;\n this.faqs = data.faqs;\n this.wholesalePrice = data.wholesalePrice;\n this.currency = data.currency;\n this.billingFrequency = data.billingFrequency;\n this.isArchived = data.isArchived;\n this.addons = data.addons;\n this.restrictions = data.restrictions;\n this.billingId = data.billingId;\n if (data.hasOwnProperty('pdfUploadUrls')) {\n this.files = this.pdfUploadUrls ? this.pdfUploadUrls.map(url => new File(url)) : null;\n }\n }\n get iconStyle(): string {\n return this.iconUrl ? `url(\"${this.iconUrl}\") no-repeat center / 100% 100%` : null;\n }\n\n get iconColor(): string {\n // determine an icon color for a product with no icon by using the product name\n if (!this.name) {\n return DEFAULT_COLOR;\n }\n\n let nameSum = 0;\n for (let i = 0; i < this.name.length; i++) {\n nameSum += this.name[i].charCodeAt(0);\n }\n\n const index = nameSum % COLOR_CODES.length;\n return COLOR_CODES[index];\n }\n\n getLmiCategoryNames(): string[] {\n const lmiCategories = this.lmiCategories || [];\n return lmiCategories.map(lmiCategory => CaseTransform.lowerToTitleCase(lmiCategory.toLowerCase().replace(/_/g, ' ')));\n }\n}\n\nexport class ProductWithParent extends Product {\n parentId: string;\n parentName: string;\n parentIconUrl: string;\n multipleActivations: boolean;\n\n static fromApi(data: any): ProductWithParent {\n const newProduct = {};\n data = data || {};\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n const newKey = CaseTransform.snakeToCamelCase(key);\n newProduct[newKey] = data[key];\n }\n }\n return new ProductWithParent(newProduct);\n }\n constructor(data?: any) {\n super(data);\n this.parentId = data.parentId;\n this.parentName = data.parentName;\n this.parentIconUrl = data.parentIconUrl;\n this.multipleActivations = data.multipleActivations || false;\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { Product } from '../shared/product';\nimport { Addon } from '@vendasta/core/shared';\nimport { Pricing } from '../pricing/pricing';\nimport { BilledProduct } from '@vendasta/core/billing';\n\n@Component({\n selector: 'addon-details',\n templateUrl: 'addon-details.component.html',\n styleUrls: ['./addon-details.component.scss']\n})\nexport class AddonDetailsComponent {\n @Input() product: Product;\n @Input() addon: Addon;\n @Input() reseller: true;\n @Input() billedProduct: BilledProduct;\n @Input() hasVerifiedContract = false;\n @Input() loaded = true;\n @Input() showPricing = true;\n @Input() showEnableAddon = false;\n @Input() actionEnabled = false;\n @Output() prerequisiteSelected = new EventEmitter();\n @Output() actionSelected = new EventEmitter();\n\n onPrerequisiteSelected(): void {\n this.prerequisiteSelected.emit();\n }\n onActionSelected(): void {\n this.actionSelected.emit();\n }\n\n getPricing(product: Product, addon: Addon): Pricing {\n return {\n currency: product.currency,\n prices: [\n {\n price: addon.price,\n frequency: addon.billingFrequency ? addon.billingFrequency : 'Monthly'\n }\n ]\n };\n }\n\n get pricingLabel(): string {\n return this.reseller ? 'Wholesale Pricing' : 'Pricing';\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {File} from './shared/file.model';\n\n@Component({\n selector: 'va-files',\n template: `\n <div class=\"va-files file-list-container\" *ngFor=\"let file of files\">\n <mat-icon class=\"file-icon\">insert_drive_file</mat-icon>\n <a [href]=\"file.url\" target=\"_blank\">{{ file.name }}</a>\n </div>`,\n styleUrls: ['./files.component.scss']\n})\n\nexport class VaFilesComponent {\n @Input() files: File[];\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {VaFilesComponent} from './files.component';\nimport {MatIconModule} from '@angular/material';\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule\n ],\n declarations: [VaFilesComponent],\n exports: [VaFilesComponent]\n})\nexport class VaFilesModule {\n}\n","import {Component, Input} from '@angular/core';\nimport {Faq} from './shared/faqs.model';\n\n@Component({\n selector: 'va-faqs',\n template: `\n <div class=\"va-faq\" *ngFor=\"let faq of faqs; let i = index;\">\n <div class=\"question\" (click)=\"toggleFaq(i)\">\n <span>{{ faq.question }}</span>\n <mat-icon>{{ faqIcon(i) }}</mat-icon>\n </div>\n <span class=\"answer\" [ngClass]=\"{'show': isFaqOpen(i) }\" [innerHtml]=\"faq.answer | vaSanitize\"></span>\n </div>`,\n styleUrls: ['./faqs.component.scss']\n})\n\nexport class VaFaqsComponent {\n @Input() faqs: Faq[];\n openFaqs: number[] = [];\n\n toggleFaq(index: number): void {\n if (this.openFaqs.indexOf(index) >= 0) {\n this.openFaqs.splice(this.openFaqs.indexOf(index), 1); // Remove\n } else {\n this.openFaqs.push(index); // Insert\n }\n }\n\n isFaqOpen(index: number): boolean {\n return this.openFaqs.indexOf(index) >= 0;\n }\n\n faqIcon(index: number): string {\n return this.isFaqOpen(index) ? 'keyboard_arrow_up' : 'keyboard_arrow_down';\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {VaFaqsComponent} from './faqs.component';\nimport {MatIconModule} from '@angular/material';\nimport {VaSafeHtmlModule} from '@vendasta/uikit';\n\n@NgModule({\n imports: [CommonModule, MatIconModule, VaSafeHtmlModule],\n declarations: [VaFaqsComponent],\n exports: [VaFaqsComponent]\n})\nexport class VaFaqsModule {}\n","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'va-selling-info',\n template: `\n <section *ngIf=\"description\" class=\"resize\" [innerHtml]=\"filterDescription | vaSafeHtml\"></section>\n <section *ngIf=\"keySellingPoints && keySellingPoints.length > 0\" class=\"key-selling-points\">\n <div *ngFor=\"let ksp of keySellingPoints\" class=\"key-selling-point\">\n <mat-icon>check_circle</mat-icon>\n {{ ksp }}\n </div>\n </section>\n `,\n styleUrls: ['./selling-info.component.scss']\n})\n\nexport class VaSellingInfoComponent {\n @Input() description: String;\n @Input() keySellingPoints: String[];\n\n get filterDescription() {\n const desc = this.description.replace(/max-width:\\d*[^\\\"]/i, 'max-width:100%');\n if ((desc.indexOf('\"max-width:100%\"') === -1) && (desc.indexOf('<iframe ') !== -1)) {\n const index = desc.indexOf('<iframe ') + 7;\n return desc.substr(0, index) + ' style=\"max-width:100%\"' + desc.substr(index);\n }\n return String(desc);\n }\n}\n\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {VaSellingInfoComponent} from './selling-info.component';\nimport {MatIconModule} from '@angular/material';\nimport {VaSafeHtmlModule} from '@vendasta/uikit';\n\n@NgModule({\n imports: [CommonModule, MatIconModule, VaSafeHtmlModule],\n declarations: [VaSellingInfoComponent],\n exports: [VaSellingInfoComponent]\n})\nexport class VaSellingInfoModule {}\n","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'supported-countries',\n template: `\n <span class=\"supported-text\"> Supported Countries: </span>\n <div class=\"flags\">\n <span *ngFor=\"let countryCode of countryCodes\" matTooltip=\"{{countryCode}}\" matTooltipPosition=\"below\"\n class=\"flag-icon flag-icon-{{countryCode.toLowerCase()}}\">\n </span>\n </div>\n `,\n styleUrls: ['./supported-countries.component.scss']\n})\n\nexport class SupportedCountriesComponent {\n @Input() countryCodes: string[];\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {SupportedCountriesComponent} from './country/supported-countries.component';\nimport {MatTooltipModule} from '@angular/material';\n\n@NgModule({\n imports: [CommonModule, MatTooltipModule],\n declarations: [SupportedCountriesComponent],\n exports: [SupportedCountriesComponent]\n})\nexport class RestrictionsModule {}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatProgressSpinnerModule} from '@angular/material/progress-spinner';\nimport {VaBreadcrumbsModule, VaIconModule, VaImageGalleryModule, VaListModule, VaSafeHtmlModule} from '@vendasta/uikit';\nimport {AddonDetailsComponent} from './addon-details.component';\nimport {VaPricingModule} from '../pricing/pricing.module';\nimport {VaFilesModule} from '../files/files.module';\nimport {VaFaqsModule} from '../faqs/faqs.module';\nimport {VaSellingInfoModule} from '../selling-info/selling-info.module';\nimport {VaHeaderContainerModule} from '../header-container/header-container.module';\nimport {RestrictionsModule} from '../restrictions/restrictions.module';\n\n@NgModule({\n imports: [\n CommonModule,\n VaListModule,\n VaImageGalleryModule,\n VaIconModule,\n VaPricingModule,\n VaFilesModule,\n VaFaqsModule,\n VaSellingInfoModule,\n VaHeaderContainerModule,\n VaSafeHtmlModule,\n MatProgressSpinnerModule,\n VaBreadcrumbsModule,\n RestrictionsModule\n ],\n exports: [AddonDetailsComponent],\n declarations: [AddonDetailsComponent],\n providers: [],\n entryComponents: []\n})\nexport class AddonModule {\n}\n","import {Component} from '@angular/core';\n\n@Component({\n selector: 'details-stencil',\n template: `\n <div class=\"details\">\n\n <mat-card class=\"details-header\">\n <div class=\"details-column-0\">\n <div class=\"details-column-0-1\">\n <div class=\"details-icon stencil-shimmer\"></div>\n </div>\n <div class=\"details-column-0-2\">\n <div class=\"details-title stencil-shimmer\"></div>\n <div class=\"details-title stencil-shimmer\"></div>\n </div>\n </div>\n <div class=\"details-column-1\">\n <div class=\"details-column-1-0 stencil-shimmer\"></div>\n <div class=\"details-column-1-1 stencil-shimmer\"></div>\n </div>\n </mat-card>\n\n <mat-card>\n <div class=\"details-box-large stencil-shimmer\"></div>\n </mat-card>\n\n <mat-card class=\"details-body\">\n <div class=\"details-body-column-0\" >\n <div class=\"details-icon-small stencil-shimmer\"></div>\n <div class=\"details-icon-small stencil-shimmer\"></div>\n <div class=\"details-icon-small stencil-shimmer\"></div>\n <div class=\"details-icon-small stencil-shimmer\"></div>\n <div class=\"details-icon-small stencil-shimmer\"></div>\n <div class=\"details-icon-small stencil-shimmer\"></div>\n <div class=\"details-icon-small stencil-shimmer\"></div>\n </div>\n <div class=\"details-body-column-1\">\n <div class=\"details-line stencil-shimmer\"></div>\n <div class=\"details-line stencil-shimmer\"></div>\n <div class=\"details-line stencil-shimmer\"></div>\n <div class=\"details-line stencil-shimmer\"></div>\n <div class=\"details-line stencil-shimmer\"></div>\n <div class=\"details-line stencil-shimmer\"></div>\n <div class=\"details-line stencil-shimmer\"></div>\n </div>\n <div class=\"details-body-column-2\">\n <div class=\"details-box stencil-shimmer\"></div>\n <div class=\"details-box stencil-shimmer\"></div>\n <div class=\"details-box stencil-shimmer\"></div>\n <div class=\"details-box stencil-shimmer\"></div>\n <div class=\"details-box stencil-shimmer\"></div>\n </div>\n </mat-card>\n\n </div>\n `,\n styleUrls: ['./details-stencil.component.scss']\n})\n\nexport class DetailsStencilComponent {\n}\n","import {Component} from '@angular/core';\n\n@Component({\n selector: 'card-stencil',\n template: `\n <div class=\"card-stencil-container\">\n <mat-card class=\"card-stencil\">\n <div class=\"card-stencil-header stencil-shimmer\"></div>\n <div class=\"card-stencil-footer\">\n <div class=\"card-stencil-circle stencil-shimmer\"></div>\n <div>\n <div class=\"card-stencil-line-large stencil-shimmer\"></div>\n <div class=\"card-stencil-line-medium stencil-shimmer\"></div>\n </div>\n </div>\n </mat-card>\n </div>\n `,\n styleUrls: ['card-stencil.component.scss']\n})\n\nexport class CardStencilComponent {\n}\n","import {Component, Input, OnInit} from '@angular/core';\n\n@Component({\n selector: 'card-stencil-list',\n template: `\n <div class=\"row row-gutters\">\n <div *ngFor=\"let _ of cards\" class=\"col-flex\">\n <card-stencil></card-stencil>\n </div>\n </div>\n `,\n styles: [`\n .row {\n display: flex;\n flex-wrap: wrap;\n }\n\n .row + .row-gutters {\n margin-top: 0;\n }\n\n .row-gutters {\n margin-top: -20px;\n margin-left: -20px;\n }\n\n .row-gutters > .col-flex {\n padding-top: 20px;\n padding-left: 20px;\n }\n\n .col-flex {\n position: relative;\n max-width: 100%;\n box-sizing: border-box;\n flex: 0 0 auto;\n width: 100%;\n }\n\n @media screen and (min-width: 480px) {\n .col-flex {\n width: 50%;\n }\n }\n\n @media screen and (min-width: 1200px) {\n\n .col-flex {\n width: 33.333333%;\n }\n }\n\n `]\n})\n\nexport class CardListStencilComponent implements OnInit {\n\n @Input() numCards = 3;\n cards: number[] = [];\n\n ngOnInit() {\n for (let n = 0; n < this.numCards; n++) {\n this.cards.push(n);\n }\n }\n}\n","import {Component} from '@angular/core';\n\n@Component({\n selector: 'search-bar-stencil',\n template: `\n <div class=\"search-bar-stencil-container\">\n <div class=\"search-bar-stencil-line stencil-shimmer\">\n <div class=\"search-bar-stencil-icon\"></div>\n </div>\n </div>\n `,\n styles: [`\n .search-bar-stencil-container {\n height: 52px;\n display: flex;\n align-content: center;\n background-color: white;\n border-radius: 2px;\n }\n .search-bar-stencil-line {\n height: 30px;\n width: 350px;\n margin: auto 10px;\n display: flex;\n justify-content: flex-end;\n }\n .search-bar-stencil-icon {\n background-color: white;\n width: 20px;\n height: 20px;\n margin: auto 5px;\n }\n `]\n})\n\nexport class SearchBarStencilComponent {\n}\n","import {Component, Input, OnInit} from '@angular/core';\n\n@Component({\n selector: 'list-stencil',\n template: `\n <mat-card class=\"list-container\">\n <div *ngIf=\"showHeader\" class=\"list-header stencil-shimmer\" style=\"\"></div>\n <div *ngFor=\"let _ of rows\">\n <div class=\"list-item-row\" [ngStyle]=\"listItemRowStyles\">\n <div class=\"stencil-shimmer\" style=\"margin: 0; padding: 0; width: 100%; height: 80%;\"></div>\n </div>\n </div>\n </mat-card>\n `,\n styles: [`\n .list-container { padding: 0; }\n .list-header { height: 40px; }\n .list-item-row { height: 50px; display: flex; justify-content: space-between; align-items: center; }\n `]\n})\n\nexport class ListStencilComponent implements OnInit {\n\n @Input() showHeader = true;\n @Input() numRows = 3;\n @Input() rowHeight = '51px'; // defaults to height of partner center business tab height (95px for marketplace)\n @Input() sidePadding = '17px'; // defaults to padding on partner center business padding (38px for marketplace)\n\n rows: number[] = []; // this is to turn the number of rows into an arbitrary list so we can loop through them\n listItemRowStyles: any;\n\n ngOnInit() {\n for (let n = 0; n < this.numRows; n++) {\n this.rows.push(n);\n }\n\n // if you think this is gross i agree\n // if you think this is gross and actually have a solution hit me up otherwise just enjoy the magic.\n // determine the height of each row for the table\n\n this.listItemRowStyles = {\n 'height': `${this.rowHeight}`,\n 'padding': `0 ${this.sidePadding}`\n }\n\n }\n}\n","import {NgModule} from '@angular/core';\nimport {\n MatCardModule,\n MatIconModule,\n MatInputModule,\n MatSelectModule,\n MatExpansionModule,\n MatCheckboxModule} from '@angular/material';\nimport {CommonModule} from '@angular/common';\n\nimport {DetailsStencilComponent} from './details-stencil.component';\nimport {CardStencilComponent} from './card-stencil.component';\nimport {CardListStencilComponent} from './card-list-stencil.component';\nimport {SearchBarStencilComponent} from './search-bar-stencil.component';\nimport {ListStencilComponent} from './list-stencil.component';\n\n@NgModule({\n imports: [CommonModule, MatCardModule, MatIconModule, MatInputModule, MatSelectModule, MatExpansionModule, MatCheckboxModule],\n declarations: [DetailsStencilComponent, CardStencilComponent, CardListStencilComponent, SearchBarStencilComponent, ListStencilComponent],\n exports: [DetailsStencilComponent, CardStencilComponent, CardListStencilComponent, SearchBarStencilComponent, ListStencilComponent]\n})\nexport class StencilsModule {}\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ChangeDetectorRef } from '@angular/core';\nimport { Addon } from '@vendasta/core/shared';\nimport { Subscription } from 'rxjs';\nimport { Pricing } from '../pricing/pricing';\nimport { isNullOrUndefined } from 'util';\nimport { BillingService, BilledProduct, buildBilledProductFromProductPricingAndAddon } from '@vendasta/core/billing';\n\n@Component({\n selector: 'va-addon-list',\n templateUrl: './addon-list.component.html',\n styleUrls: ['./addon-list.component.scss']\n})\nexport class VaAddonListComponent implements OnDestroy, OnInit {\n _addons: Addon[];\n @Input('addons')\n set addons(addons: Addon[]) {\n this._addons = addons;\n this.populateBilledProduct();\n }\n @Input() showPricing = true;\n @Input() partnerID: string;\n\n _hasVerifiedContract: boolean = null;\n @Input('hasVerifiedContract')\n set hasVerifiedContract(value: boolean) {\n this._hasVerifiedContract = value;\n this.populateBilledProduct();\n }\n _canAccessContractPricing: boolean = null;\n @Input('canAccessContractPricing')\n set canAccessContractPricing(value: boolean) {\n this._canAccessContractPricing = value;\n this.populateBilledProduct();\n }\n\n @Output() addonSelected = new EventEmitter<String>();\n\n billedProductsMap: Map<string, BilledProduct> = new Map();\n private billedProductLoaded: Map<string, boolean> = new Map();\n private subscriptions: Subscription[] = [];\n\n constructor(private billingService: BillingService, private cdr: ChangeDetectorRef) {}\n\n ngOnInit() {\n this.populateBilledProduct();\n }\n\n populateBilledProduct() {\n if (this.displayContractPricing()) {\n const billingIDs = this._addons.map(a => {\n this.billedProductsMap.set(a.addonId, null);\n this.billedProductLoaded.set(a.addonId, false);\n return a.billingId;\n });\n this.subscriptions.push(\n this.billingService.getMultiProductPricing(this.partnerID, billingIDs).subscribe(pricing => {\n this._addons.forEach(addon => {\n const addonPricing = pricing[addon.billingId];\n if (!addonPricing) {\n return;\n }\n const billedProduct = buildBilledProductFromProductPricingAndAddon(addon, addonPricing);\n this.billedProductsMap.set(addon.addonId, billedProduct);\n this.billedProductLoaded.set(addon.addonId, true);\n });\n this.cdr.detectChanges();\n })\n )\n }\n }\n\n onClick(addonId: String): void {\n this.addonSelected.emit(addonId);\n }\n\n public instanceOfPricing(object: any) {\n if (typeof object === 'number') {\n return false;\n }\n return object.currency !== undefined && object.prices !== undefined;\n }\n\n getDisplayPricing(addon: Addon): Pricing {\n const price: any = addon.price;\n if (price && this.instanceOfPricing(price)) {\n return price;\n }\n return {\n currency: addon.currency,\n prices: [\n {\n price: addon.price,\n frequency: addon.billingFrequency ? addon.billingFrequency : 'Monthly'\n }\n ]\n };\n }\n\n noData(): boolean {\n return isNullOrUndefined(this._hasVerifiedContract) || isNullOrUndefined(this._canAccessContractPricing);\n }\n\n displayContractPricing(): boolean {\n return this._canAccessContractPricing && this._hasVerifiedContract;\n }\n\n isBilledProductLoaded(addon: Addon): boolean {\n\n if (this.noData()) {\n return false;\n }\n if (this.displayContractPricing()) {\n const value = this.billedProductLoaded.get(addon.addonId);\n return value ? value : false;\n }\n return true;\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {VaAddonListComponent} from './addon-list.component';\nimport {MatDividerModule, MatIconModule, MatListModule} from '@angular/material';\nimport {VaPricingModule} from '../pricing/pricing.module';\nimport {BillingModule} from '@vendasta/core/billing';\n\n@NgModule({\n imports: [\n BillingModule,\n CommonModule,\n MatIconModule,\n MatListModule,\n MatDividerModule,\n VaPricingModule\n ],\n declarations: [VaAddonListComponent],\n exports: [VaAddonListComponent]\n})\nexport class VaAddonListModule {\n}\n","import { Inject, Injectable, InjectionToken, NgModule } from '@angular/core';\n\nexport interface HeimdallServiceTokenInterface {\n track(category: string, action: string, label: string, value?: number, dimensions?: {[key: string]: string}): void;\n}\n\nexport const HeimdallServiceToken: InjectionToken<HeimdallServiceTokenInterface> = new InjectionToken<\n HeimdallServiceTokenInterface\n >('HeimdallService');\n\n@Injectable()\nexport class HeimdallClient {\n constructor(@Inject(HeimdallServiceToken) private userEvents: HeimdallServiceTokenInterface) {}\n\n track(category: string, action: string, label: string, value?: number, dimensions?: {[key: string]: string}): void {\n this.userEvents.track(category, action, label, value, dimensions);\n }\n}\n\n@NgModule({\n providers: [HeimdallClient]\n})\nexport class HeimdallClientModule {}\n","import { Component, OnInit, Input, Output, EventEmitter, OnDestroy, Inject } from '@angular/core';\nimport { BehaviorSubject, Observable, combineLatest, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map, startWith, filter, take } from 'rxjs/operators';\n\nimport { Filters, FilterSection, TabbedFilterField, CheckboxFilterField, FilterService, FilterField } from '@vendasta/uikit';\nimport { StoreItem, CategoryToItemListMap } from '../store-item';\nimport { HeimdallServiceToken, HeimdallServiceTokenInterface } from '../heimdall-client-token';\nimport { LMI_CATEGORIES } from '../';\nimport { Categories } from '@vendasta/core/marketplace-packages';\nimport { TranslateService } from '@ngx-translate/core';\nimport { En } from '../assets/i18n/en';\n\nexport const STOREFRONT_FILTER_NAME = 'Store Filters';\n\nexport interface StorefrontCategory {\n id: string,\n name: string,\n packageIds: string[],\n}\n\n@Component({\n selector: 'va-storefront',\n templateUrl: './storefront.component.html',\n styleUrls: ['./storefront.component.scss']\n})\nexport class StorefrontComponent implements OnInit, OnDestroy {\n @Input()\n set categories(value: StorefrontCategory[]) {\n this.categories$$.next(value || []);\n }\n @Input()\n set categoryIdToStoreItemListMap(value: CategoryToItemListMap) {\n this.packagesMap$$.next(value || new Map<string, StoreItem[]>());\n }\n @Input() useCustomCase = false;\n @Output() categorySelected = new EventEmitter<StorefrontCategory>();\n @Output() packageIdSelected = new EventEmitter<string>();\n @Output() getDataForCategory = new EventEmitter<StorefrontCategory>();\n\n private categories$$: BehaviorSubject<StorefrontCategory[]> = new BehaviorSubject<StorefrontCategory[]>([]);\n private packagesMap$$: BehaviorSubject<CategoryToItemListMap> =\n new BehaviorSubject<CategoryToItemListMap>(new Map<string, StoreItem[]>());\n private searchTerm$$: BehaviorSubject<string> = new BehaviorSubject<string>('');\n private selectedCateoryId$$: BehaviorSubject<string> = new BehaviorSubject<string>('');\n private lmiCategoryFilter: Filters;\n filters$: Observable<Filters>;\n filteredItems$: Observable<StoreItem[]>;\n searchTermSubscription: Subscription;\n showLMIFilter$: Observable<boolean>;\n\n constructor(\n @Inject(HeimdallServiceToken) private userEvents: HeimdallServiceTokenInterface,\n private filterService: FilterService,\n private translateService: TranslateService\n ) {\n this.translateService.setTranslation('en', En.en, true);\n }\n\n ngOnInit(): void {\n const lmiCategoryCheckboxList = LMI_CATEGORIES.map((category) => {\n return new CheckboxFilterField({\n name: category.name,\n id: category.categoryId,\n value: false,\n condition: (item: {lmiCategories: string[]}): boolean => {\n let lmiCategories: string[] = [];\n if (item.lmiCategories) {\n lmiCategories = item.lmiCategories.map((cat) => {\n return Categories[cat].toLowerCase();\n });\n }\n return lmiCategories.indexOf(category.categoryId) > -1;\n }\n });\n });\n\n const lmiCategoryFilterSection = new FilterSection({\n title: 'LMI Category',\n type: 'or',\n fields: lmiCategoryCheckboxList\n });\n\n this.lmiCategoryFilter = new Filters(STOREFRONT_FILTER_NAME, [\n lmiCategoryFilterSection\n ]);\n\n this.filters$ = this.categories$$.pipe(\n map(categories => {\n const tabbedFilterField = new TabbedFilterField({\n name: '',\n value: null,\n id: 'categorytab',\n options: categories\n });\n\n const filters = new Filters(STOREFRONT_FILTER_NAME, [\n new FilterSection({\n title: 'Categories',\n type: 'or',\n fields: [tabbedFilterField]\n }),\n lmiCategoryFilterSection\n ]);\n\n return filters;\n })\n );\n\n this.filterService.setFilters(this.lmiCategoryFilter);\n\n this.searchTermSubscription = this.searchTerm$$.asObservable().pipe(\n debounceTime(300),\n distinctUntilChanged()).subscribe(\n searchTerm => this.userEvents.track('store', 'search-input', '', 1, {'searchTerm': searchTerm})\n );\n\n const selectedLMIFilters$ = this.filterService.filters.fieldValuesObservable.pipe(\n startWith([]),\n map(() => {\n return this.lmiCategoryFilter.fields.filter((item: CheckboxFilterField) => item.value);\n })\n );\n\n this.showLMIFilter$ = selectedLMIFilters$.pipe(\n filter(selectedLMIFilters => !!selectedLMIFilters),\n take(1),\n map(selectedLMIFilters => selectedLMIFilters.length > 0)\n );\n\n this.filteredItems$ = combineLatest(this.packagesMap$$, this.searchTerm$$, this.selectedCateoryId$$, selectedLMIFilters$).pipe(\n map(([packages, searchTerm, selectedCategoryId, selectedLMIFilters]) => {\n let storeItems: StoreItem[] = [];\n if (packages.size) {\n storeItems = (selectedCategoryId ? packages.get(selectedCategoryId) : packages.get(Array.from(packages.keys())[0]));\n }\n storeItems = storeItems ? this.lmiCategoryFilter.applyFilters(storeItems) : [];\n\n return searchTerm ? storeItems.filter(item => item.name.toLowerCase().indexOf(searchTerm.toLowerCase()) !== -1) : storeItems;\n })\n );\n }\n\n ngOnDestroy(): void {\n this.searchTermSubscription.unsubscribe();\n }\n\n public onSearchTermChanged(term: string): void {\n this.searchTerm$$.next(term);\n }\n\n public onFieldValueChanged(filterField: FilterField<any>): void {\n if (!(filterField instanceof TabbedFilterField)) {\n return;\n }\n\n this.selectedCateoryId$$.next(filterField.value.id);\n this.categorySelected.emit(filterField.value as StorefrontCategory);\n\n const currentStoreItemsForSelectCategory = this.packagesMap$$.getValue().get(filterField.value.id);\n if (!(currentStoreItemsForSelectCategory && currentStoreItemsForSelectCategory.length)) {\n this.getDataForCategory.emit(filterField.value as StorefrontCategory);\n }\n}\n\n public storeItemClicked(item: StoreItem): void {\n this.packageIdSelected.emit(item.id);\n }\n\n}\n","import {NgModule} from '@angular/core';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {\n MatCardModule,\n MatIconModule,\n MatInputModule,\n MatSelectModule,\n MatExpansionModule,\n MatCheckboxModule} from '@angular/material';\nimport {CommonModule} from '@angular/common';\n\nimport {UIKitModule, FilterService} from '@vendasta/uikit';\n\nimport {StoreCardModule} from './store-card.module';\nimport {StoreComponent} from './store.component';\nimport {VaOrderFormModule} from './order-form/order-form.module';\nimport {StoreService} from './store.service';\nimport {AddonModule} from './addon-details/addon.module';\nimport {StencilsModule} from './stencils/stencils.module';\nimport {VaPricingModule} from './pricing/pricing.module';\nimport {VaAddonListModule} from './addon-list/addon-list.module';\nimport {StorefrontComponent} from './storefront/storefront.component';\nimport {HeimdallClientModule} from './heimdall-client-token';\n\n@NgModule({\n imports: [CommonModule, UIKitModule, MatCardModule, MatIconModule, MatInputModule, FormsModule, ReactiveFormsModule,\n MatSelectModule, MatExpansionModule, MatCheckboxModule, StoreCardModule, VaOrderFormModule, AddonModule, StencilsModule,\n VaPricingModule, VaAddonListModule, HeimdallClientModule],\n declarations: [StoreComponent, StorefrontComponent],\n providers: [StoreService, FilterService],\n exports: [StoreComponent, StoreCardModule, VaOrderFormModule, StencilsModule, StorefrontComponent]\n})\nexport class StoreModule {}\n","export interface LmiCategory {\n name: string;\n categoryId: string;\n}\n\nexport const LMI_CATEGORIES: LmiCategory[] = [\n { name: 'Listings', categoryId: 'listings' },\n { name: 'Social', categoryId: 'social' },\n { name: 'Reputation', categoryId: 'reputation' },\n { name: 'SEO', categoryId: 'seo' },\n { name: 'Website', categoryId: 'website' },\n { name: 'Advertising', categoryId: 'advertising' },\n { name: 'Content & Experience', categoryId: 'content_and_experience' }\n];\n\nexport const LMI_CATEGORY_MAP = LMI_CATEGORIES.reduce((previous, current) => {\n previous[current.categoryId] = current;\n return previous;\n}, {});\n\nexport const LMI_CATEGORIES_BY_NAME = LMI_CATEGORIES.reduce((previous, current) => {\n previous[current.name] = current;\n return previous;\n}, {});\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\n\nimport {Pricing} from '../pricing/pricing';\nimport {Salesperson} from './salesperson';\n\n\n@Component({\n selector: 'va-salesperson-details',\n templateUrl: './salesperson-details.component.html',\n styleUrls: ['./salesperson-details.component.scss']\n})\nexport class VaSalespersonDetailsComponent {\n @Input() salesperson: Salesperson;\n @Input() packagePricing: Pricing;\n @Input() brandName: string;\n @Input() showGetItNow = true;\n @Output() getItNow = new EventEmitter();\n\n onGetItNowSelected(): void {\n this.getItNow.emit(this.salesperson);\n }\n\n get iconUrl(): string {\n return this.salesperson && this.salesperson.photoUrlSecure ?\n this.salesperson.photoUrlSecure :\n 'https://vbc-frontend.storage-download.googleapis.com/salesperson-details/default_sales_person.jpg';\n }\n\n get name(): string {\n return this.salesperson && this.salesperson.formattedName ?\n this.salesperson.formattedName : '';\n }\n\n get title(): string {\n return this.salesperson && this.salesperson.jobTitle ?\n this.salesperson.jobTitle : '';\n }\n\n get email(): string {\n return this.salesperson && this.salesperson.email ?\n this.salesperson.email : '';\n }\n\n get cityAndState(): string {\n return this.salesperson && this.salesperson.city && this.salesperson.state ?\n this.salesperson.city + ', ' + this.salesperson.state : '';\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatButtonModule, MatIconModule} from '@angular/material';\nimport {VaIconModule} from '@vendasta/uikit';\n\nimport {VaPricingModule} from '../pricing/pricing.module';\n\nimport {VaSalespersonDetailsComponent} from './salesperson-details.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n VaIconModule,\n VaPricingModule,\n ],\n declarations: [\n VaSalespersonDetailsComponent\n ],\n exports: [\n VaSalespersonDetailsComponent\n ],\n entryComponents: [\n VaSalespersonDetailsComponent\n ]\n})\nexport class VaSalespersonDetailsModule {\n}\n","import { Sellable } from '../shared/sellable';\nimport { AddonKey } from '@vendasta/core/marketplace-packages';\n\nexport class Package extends Sellable {\n solution_id: string;\n partner_id: string;\n market_id: string;\n name: string;\n icon: string;\n status: string;\n tagline: string;\n header_image_url: string;\n content: string;\n products: string[];\n addon_keys: AddonKey[];\n hide_product_icons_and_names: boolean;\n hide_product_details: boolean;\n createdDate: Date;\n updatedDate: Date;\n productOrder: string[]; // the order the product / addons in the package\n\n static fromApi(data: any): Package {\n const newPackage = new Package();\n if (!data.pricing && data.selling_price) {\n data.pricing = {\n currency: data.currency,\n prices: [{\n price: data.selling_price * 100,\n frequency: data.billingFrequency,\n isStartingPrice: false,\n }]\n };\n }\n Object.assign(newPackage, data);\n if (!newPackage.name) {\n newPackage.name = 'Untitled';\n }\n if (data.created) {\n newPackage.createdDate = new Date(data.created);\n }\n if (data.updated) {\n newPackage.updatedDate = new Date(data.updated);\n }\n return newPackage;\n }\n\n get isPackageFree(): boolean {\n return this.isFree;\n }\n}\n","import { Addon } from '@vendasta/core/shared';\nimport { Product } from '../shared/product';\n\nexport function orderProductsAndAddons(combined: (Product | Addon)[], order: string[]): (Product | Addon)[] {\n if (!order || order.length === 0) {\n return combined || [];\n }\n if (!combined || combined.length === 0) {\n return [];\n }\n\n const itemMap = (combined || []).reduce((m, curr) => {\n m.set(getUniqueProductAddonId(curr), curr);\n return m;\n }, new Map<string, (Product | Addon)>());\n\n const combinedIdList = combined.map(getUniqueProductAddonId);\n const finalOrderedIds = combineProductOrderWithContainedProducts(order, combinedIdList);\n\n const orderedList = finalOrderedIds.reduce((items, id) => {\n items.push(itemMap.get(id));\n return items;\n }, []) as (Product | Addon)[];\n\n return orderedList.filter(filterUniqueAndDefined);\n}\n\nfunction filterUniqueAndDefined(elem, pos, arr) {\n return elem && arr.indexOf(elem) === pos;\n}\n\nexport function combineProductOrderWithContainedProducts(productOrder: string[], itemIds: string[]): string[] {\n if (itemIds == null || itemIds.length === 0) {\n return []\n }\n if (!productOrder || productOrder.length === 0) {\n return itemIds.filter(filterUniqueAndDefined);\n }\n return productOrder\n .filter(elem => itemIds.indexOf(elem) >= 0)\n .concat(itemIds)\n .filter(filterUniqueAndDefined);\n}\n\nexport function getUniqueProductAddonId(thing: any): string {\n return thing['addonId'] || thing['productId'];\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { BehaviorSubject, Observable, ReplaySubject, combineLatest, merge as observableMerge } from 'rxjs';\nimport { Package } from './package';\nimport { Addon } from '@vendasta/core/shared';\nimport { Product } from '../shared/product';\nimport { skipWhile, shareReplay, map, take } from 'rxjs/operators';\nimport { orderProductsAndAddons } from './utils';\n\n@Component({\n selector: 'va-package-details',\n templateUrl: 'package-details.component.html',\n styleUrls: ['./package-details.component.scss']\n})\nexport class VaPackageDetailsComponent {\n @Input() showActionButton = true;\n @Input() showPricing = true;\n @Input() actionLabel = 'Get It Now';\n\n @Output() getItNow = new EventEmitter();\n\n standAloneProducts$$: BehaviorSubject<Product[]> = new BehaviorSubject<Product[]>([]);\n products$: BehaviorSubject<Product[]> = new BehaviorSubject<Product[]>([]);\n addons$: BehaviorSubject<Addon[]> = new BehaviorSubject<Addon[]>([]);\n pkg$: ReplaySubject<Package> = new ReplaySubject<Package>(1);\n itemSelectedEvent$: ReplaySubject<number> = new ReplaySubject<number>(1);\n\n selectedItem$: Observable<Product | Addon>;\n combinedItemsList$: Observable<(Product | Addon)[]>;\n orderedItemsList$: Observable<(Product | Addon)[]>;\n lmiCategories$: Observable<Set<string>>;\n productNameForSingleAddon$: Observable<string>;\n displayTagName$: Observable<string>;\n\n @Input()\n set standAloneProducts(standAloneProducts: Product[]) {\n this.standAloneProducts$$.next(standAloneProducts);\n }\n\n @Input()\n set products(products: Product[]) {\n this.products$.next(products);\n }\n\n @Input()\n set addons(addons: Addon[]) {\n this.addons$.next(addons);\n }\n\n @Input()\n set pkg(pkg: Package) {\n this.pkg$.next(pkg);\n }\n\n static getLmiCategories(products: Product[]): Set<string> {\n let lmiCategories: string[] = [];\n if (products) {\n products.forEach(product => {\n lmiCategories = lmiCategories.concat(product.getLmiCategoryNames());\n });\n }\n return new Set(lmiCategories);\n }\n\n static getDisplayTagline(pkg: Package, items: (Product | Addon)[]): string {\n if (pkg && pkg.tagline) {\n return pkg.tagline;\n } else if (items && items.length === 1) {\n // Single product / addon package.\n return items[0].tagline || '';\n }\n return '';\n }\n\n static getProductNameForSingleAddon(items: (Product | Addon)[]): string {\n if (items && items.length === 1 && items[0] instanceof Addon) {\n const addon = items[0] as Addon;\n return addon.productName;\n }\n }\n\n constructor() {\n this.combinedItemsList$ = combineLatest(this.products$, this.addons$, (products: Product[], addons: Addon[]) => {\n return [].concat(products || []).concat(addons || []) as (Product | Addon)[];\n });\n\n this.orderedItemsList$ = combineLatest(this.combinedItemsList$, this.pkg$, (combined: (Product | Addon)[], pkg: Package) => {\n return orderProductsAndAddons(combined, pkg ? pkg.productOrder || [] : [])\n });\n\n const nonEmptyCombinedItemsList = this.combinedItemsList$.pipe(\n skipWhile(items => !items || items.length === 0),\n shareReplay(1)\n );\n\n // Need to map to an index because that's how product selection works.\n const initialSelectedItem$ = nonEmptyCombinedItemsList.pipe(\n map((_: any) => 0),\n take(1)\n );\n\n const mergedSelection = observableMerge(initialSelectedItem$, this.itemSelectedEvent$);\n\n this.selectedItem$ = combineLatest(mergedSelection, this.orderedItemsList$).pipe(\n map(([index, items]) => {\n return items[index];\n })\n );\n\n this.lmiCategories$ = this.products$.pipe(\n skipWhile(products => !products || products.length === 0),\n map(products => {\n return VaPackageDetailsComponent.getLmiCategories(products);\n })\n );\n\n this.productNameForSingleAddon$ = nonEmptyCombinedItemsList.pipe(\n map(items => {\n return VaPackageDetailsComponent.getProductNameForSingleAddon(items);\n })\n );\n\n this.displayTagName$ = combineLatest(this.pkg$, this.combinedItemsList$).pipe(\n map(([pkg, items]) => {\n return VaPackageDetailsComponent.getDisplayTagline(pkg, items);\n })\n );\n }\n\n selectItem(i: number): void {\n this.itemSelectedEvent$.next(i);\n }\n\n emitGetItNow(): void {\n this.getItNow.emit();\n }\n}\n","import {Component, Input, Output, EventEmitter} from '@angular/core';\nimport {Addon} from '@vendasta/core/shared';\nimport {Product} from '../shared/product';\nimport { TranslateService } from '@ngx-translate/core';\nimport { En } from '../assets/i18n/en';\n\n@Component({\n selector: 'va-products-nav',\n templateUrl: './products-nav.component.html',\n styleUrls: ['./products-nav.component.scss']\n})\n\nexport class VaProductsNavComponent {\n @Input() items: (Addon | Product) [];\n @Input() hideItemsNav: boolean;\n @Output() itemSelected = new EventEmitter();\n\n selectedIndex = 0;\n pageMarker = 0;\n\n constructor(private translateService: TranslateService) {\n this.translateService.setTranslation('en', En.en, true);\n }\n\n onItemSelected(index: any): void {\n this.selectedIndex = index;\n this.itemSelected.emit(index);\n }\n\n moveSlides(slides: HTMLBodyElement): void {\n const sliderWidth = Math.round(slides.offsetWidth / slides.children[0].clientWidth);\n const numSlides = Math.ceil(slides.children.length / sliderWidth);\n if (numSlides === 0) {\n return;\n }\n const pageWidth = slides.offsetWidth;\n let move = 0;\n\n if (this.pageMarker === -1) {\n this.pageMarker = numSlides - 1; // go to end\n move = pageWidth * this.pageMarker;\n slides.style.left = `-${move}px`;\n } else if (this.pageMarker >= numSlides) {\n slides.style.left = '0px';\n this.pageMarker = 0; // reset\n } else {\n move = pageWidth * this.pageMarker;\n slides.style.left = `-${move}px`;\n }\n }\n\n pageNext(slides: HTMLBodyElement): void {\n this.pageMarker++;\n this.moveSlides(slides);\n }\n\n pagePrev(slides: HTMLBodyElement): void {\n this.pageMarker--;\n this.moveSlides(slides);\n }\n}\n","import {Component, Input, Output, EventEmitter} from '@angular/core';\nimport {StoreLineItem} from '../../package-details-v2/interface';\nimport {TranslateService} from '@ngx-translate/core';\nimport {En} from '../../assets/i18n/en';\n\n@Component({\n selector: 'va-products-nav-v2',\n templateUrl: './products-nav-v2.component.html',\n styleUrls: ['./products-nav-v2.component.scss']\n})\n\nexport class ProductsNavV2Component {\n @Input() items: StoreLineItem[];\n @Input() hideItemsNav: boolean;\n @Output() itemSelected = new EventEmitter<string>();\n\n selected_id = '';\n pageMarker = 0;\n\n constructor(private translateService: TranslateService) {\n this.translateService.setTranslation('en', En.en, true);\n }\n\n onItemSelected(id: string): void {\n this.selected_id = id;\n this.itemSelected.emit(id);\n }\n\n moveSlides(slides: HTMLBodyElement): void {\n const sliderWidth = Math.round(slides.offsetWidth / slides.children[0].clientWidth);\n const numSlides = Math.ceil(slides.children.length / sliderWidth);\n if (numSlides === 0) {\n return;\n }\n const pageWidth = slides.offsetWidth;\n let move = 0;\n\n if (this.pageMarker === -1) {\n this.pageMarker = numSlides - 1; // go to end\n move = pageWidth * this.pageMarker;\n slides.style.left = `-${move}px`;\n } else if (this.pageMarker >= numSlides) {\n slides.style.left = '0px';\n this.pageMarker = 0; // reset\n } else {\n move = pageWidth * this.pageMarker;\n slides.style.left = `-${move}px`;\n }\n }\n\n pageNext(slides: HTMLBodyElement): void {\n this.pageMarker++;\n this.moveSlides(slides);\n }\n\n pagePrev(slides: HTMLBodyElement): void {\n this.pageMarker--;\n this.moveSlides(slides);\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatIconModule} from '@angular/material';\nimport {VaProductsNavComponent} from './products-nav.component';\nimport {VaIconModule, VaBadgeModule} from '@vendasta/uikit';\nimport {ProductsNavV2Component} from './products-nav-v2/products-nav-v2.component';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule,\n VaIconModule,\n VaBadgeModule,\n TranslateModule\n ],\n declarations: [VaProductsNavComponent, ProductsNavV2Component],\n exports: [VaProductsNavComponent, ProductsNavV2Component]\n})\n\nexport class VaProductsNavModule {\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatIconModule, MatButtonModule} from '@angular/material';\nimport {VaImageGalleryModule, VaSafeHtmlModule, VaIconModule} from '@vendasta/uikit';\n\nimport {VaPricingModule} from '../pricing/pricing.module';\nimport {VaPackageDetailsComponent} from './package-details.component';\nimport {VaFilesModule} from '../files/files.module';\nimport {VaFaqsModule} from '../faqs/faqs.module';\nimport {VaSellingInfoModule} from '../selling-info/selling-info.module';\nimport {VaHeaderContainerModule} from '../header-container/header-container.module';\nimport {VaAddonListModule} from '../addon-list/addon-list.module';\nimport {VaProductsNavModule} from '../products-nav/products-nav.module';\n\n@NgModule({\n imports: [\n VaImageGalleryModule, CommonModule, MatIconModule, VaSafeHtmlModule, VaIconModule,\n VaPricingModule, MatButtonModule, VaFilesModule, VaFaqsModule, VaSellingInfoModule,\n VaHeaderContainerModule, VaAddonListModule, VaProductsNavModule],\n declarations: [VaPackageDetailsComponent],\n exports: [VaPackageDetailsComponent],\n entryComponents: [VaPackageDetailsComponent]\n})\nexport class VaPackageDetailsModule {}\n","import {Price, Pricing, File} from '..';\nimport {StoreLineItem} from './interface';\nimport {\n LineItem as ProtoLineItem,\n ProductInterface,\n LineItems as ProtoLineItems,\n Package as ProtoPackage,\n Pricing as ProtoPricing,\n Currency as ProtoCurrency,\n MarketAction,\n} from '@vendasta/core/marketplace-packages';\n\nexport class PackageDetails {\n solution_id: string;\n partner_id: string;\n market_id: string;\n name: string;\n icon: string;\n status: string;\n tagline: string;\n header_image_url: string;\n content: string;\n hide_product_icons_and_names: boolean;\n hide_product_details: boolean;\n createdDate: Date;\n updatedDate: Date;\n pricing: Pricing;\n line_items: StoreLineItem[];\n market_action: MarketAction;\n\n get isPackageFree(): boolean {\n const isFreeHelper = (prices: Price[]): boolean => {\n return prices ? prices.some(p => p.price === 0 || p.price === undefined) : false;\n };\n return this.pricing && isFreeHelper(this.pricing.prices);\n }\n}\n\nexport function convertToPackageDetails(data: ProtoPackage, products: ProductInterface[]): PackageDetails {\n if (!data) {\n return undefined;\n }\n\n const newPackage = new PackageDetails();\n if (!data.pricing) {\n data.pricing = ProtoPricing.fromProto({\n currency: undefined,\n prices: [{\n price: 0,\n frequency: undefined,\n isStartingPrice: false,\n }]\n });\n }\n\n Object.assign(newPackage, data);\n\n if (!newPackage.name) {\n newPackage.name = 'Untitled';\n }\n if (data.created) {\n newPackage.createdDate = new Date(data.created);\n }\n if (data.updated) {\n newPackage.updatedDate = new Date(data.updated);\n }\n if (data.lineItems) {\n newPackage.line_items = convertProtoLineItemsToStoreLineItems(data.lineItems, products);\n }\n if (typeof data.pricing.currency === 'number') {\n newPackage.pricing.currency = ProtoCurrency[data.pricing.currency];\n }\n\n return newPackage;\n}\n\nexport function convertProtoLineItemsToStoreLineItems(protoLineItems: ProtoLineItems, products: ProductInterface[]): StoreLineItem[] {\n if (!protoLineItems || !protoLineItems.lineItems || protoLineItems.lineItems.length === 0 || !products || products.length === 0) {\n return [];\n }\n return protoLineItems.lineItems.map(lineItem => {\n const product = products.find(p => p.productId === lineItem.id);\n let parent;\n if (!!lineItem.parentId) {\n parent = products.find(p => p.productId === lineItem.parentId);\n }\n return convertProtoLineItemToStoreLineItem(lineItem, product, parent);\n });\n}\n\nfunction convertProtoLineItemToStoreLineItem(\n protoLineItem: ProtoLineItem,\n product: ProductInterface,\n parentProduct?: ProductInterface\n): StoreLineItem {\n if (!product || !protoLineItem) {\n return undefined;\n }\n\n let files = [];\n if (product.pdfUploadUrls && product.pdfUploadUrls.length > 0) {\n files = product.pdfUploadUrls.map(url => new File(url));\n }\n\n const lineItem = {\n item: {\n id: protoLineItem.id,\n editionId: protoLineItem.editionId,\n icon: product.iconUrl,\n name: product.name,\n editionName: '',\n description: product.description,\n keySellingPoints: product.keySellingPoints,\n faqs: product.faqs,\n files: files,\n screenshotUrls: product.screenshotUrls,\n lmiCategories: [],\n\n },\n quantity: protoLineItem.quantity,\n parent: {}\n } as StoreLineItem;\n\n if (protoLineItem.parentId && parentProduct) {\n lineItem.parent = {\n id: protoLineItem.parentId,\n editionId: '',\n icon: parentProduct.iconUrl,\n name: parentProduct.name,\n editionName: '',\n }\n }\n return lineItem;\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport {Observable, combineLatest, BehaviorSubject, ReplaySubject} from 'rxjs';\nimport {PackageDetails} from './package';\nimport {map, take, tap, filter, shareReplay} from 'rxjs/operators';\nimport {StoreLineItem} from './interface';\nimport { TranslateService } from '@ngx-translate/core';\nimport { En } from '../assets/i18n/en';\n\n@Component({\n selector: 'va-package-details-v2',\n templateUrl: 'package-details-v2.component.html',\n styleUrls: ['./package-details-v2.component.scss']\n})\nexport class VaPackageDetailsV2Component implements OnInit {\n @Input() showActionButton = true;\n @Input() showPricing = true;\n @Input() actionLabel: string;\n @Input() set pkg(pkg: PackageDetails) {\n this.pkg$$.next(pkg);\n }\n @Output() getItNow = new EventEmitter();\n\n pkg$$ = new ReplaySubject<PackageDetails>(1);\n itemSelectedEvent$$ = new BehaviorSubject<string>('');\n selectedItem$: Observable<StoreLineItem>;\n orderedLineItems$: Observable<StoreLineItem[]>;\n productNameForSingleAddon$: Observable<string>;\n lmiCategories$: Observable<string[]>;\n\n constructor(private translateService: TranslateService) {\n this.translateService.setTranslation('en', En.en, true);\n this.orderedLineItems$ = this.pkg$$.pipe(\n map(pkg => pkg.line_items),\n filter(items => !!items || items.length === 0),\n shareReplay(1),\n );\n\n this.productNameForSingleAddon$ = this.orderedLineItems$.pipe(\n map(items => this.getParentsNameForItem(items))\n );\n\n this.selectedItem$ = combineLatest([this.itemSelectedEvent$$, this.orderedLineItems$]).pipe(\n map(([id, lineItems]) => lineItems.find(lineItem => lineItem.item.id === id)),\n );\n\n this.lmiCategories$ = this.orderedLineItems$.pipe(map((lis) => {\n const lmiMap = (lis || []).reduce((prev, li) => {\n if (li && li.item) {\n (li.item.lmiCategories || []).forEach(lmi => prev.set(lmi, lmi))\n }\n return prev;\n }, new Map<string, string>());\n\n const lmiCats = [];\n lmiMap.forEach((v, k) => {\n lmiCats.push(k);\n });\n return lmiCats;\n }));\n\n // Set the initial selected Item\n this.orderedLineItems$.pipe(\n map(lineItems => lineItems[0]),\n tap(lineItem => this.selectItem(lineItem && lineItem.item ? lineItem.item.id : '')),\n take(1)\n ).subscribe();\n }\n\n ngOnInit(): void {\n if (!this.actionLabel) {\n this.actionLabel = this.translateService.instant('FRONTEND.STORE.GET_IT_NOW');\n }\n }\n\n selectItem(id: string): void {\n this.itemSelectedEvent$$.next(id);\n }\n\n emitGetItNow(): void {\n this.getItNow.emit();\n }\n\n getParentsNameForItem(items: StoreLineItem[]): string {\n if (items && items.length === 1 && items[0]) {\n return items[0].parent.name;\n }\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatIconModule, MatButtonModule} from '@angular/material';\nimport {VaImageGalleryModule, VaSafeHtmlModule, VaIconModule} from '@vendasta/uikit';\n\nimport {VaPricingModule} from '../pricing/pricing.module';\nimport {VaPackageDetailsV2Component} from './package-details-v2.component';\nimport {VaFilesModule} from '../files/files.module';\nimport {VaFaqsModule} from '../faqs/faqs.module';\nimport {VaSellingInfoModule} from '../selling-info/selling-info.module';\nimport {VaHeaderContainerModule} from '../header-container/header-container.module';\nimport {VaAddonListModule} from '../addon-list/addon-list.module';\nimport {VaProductsNavModule} from '../products-nav/products-nav.module';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@NgModule({\n imports: [\n VaImageGalleryModule,\n CommonModule,\n MatIconModule,\n VaSafeHtmlModule,\n VaIconModule,\n VaPricingModule,\n MatButtonModule,\n VaFilesModule,\n VaFaqsModule,\n VaSellingInfoModule,\n VaHeaderContainerModule,\n VaAddonListModule,\n VaProductsNavModule,\n TranslateModule\n ],\n declarations: [VaPackageDetailsV2Component],\n exports: [VaPackageDetailsV2Component],\n entryComponents: [VaPackageDetailsV2Component]\n})\nexport class VaPackageDetailsV2Module {\n}\n","import { Product, Package, ProductWithParent } from '../';\nimport { Addon, AddonKey } from '@vendasta/core/marketplace-packages';\n\nexport interface SalesPackage {\n formattedPrices: string;\n packageId: string;\n name: string;\n icon: string;\n productIds: string[];\n products: SalesProduct[];\n addonsWithNoParent: SalesAddon[];\n totalAddons: number;\n activationStatus?: StatusNotificationItem;\n}\n\nexport interface SalesProduct {\n formattedPrices: string;\n productId: string;\n name: string;\n icon: string;\n tagline: string;\n activationStatus?: StatusNotificationItem;\n editionId?: string;\n editionName?: string;\n addons: SalesAddon[];\n parentInfo?: ProductParentInfo;\n}\n\nexport interface ProductParentInfo {\n parentId: string;\n parentName: string;\n parentIconUrl: string;\n multipleActivations: boolean;\n}\n\nexport interface SalesAddon {\n parentId: string;\n addonId: string;\n name: string;\n icon: string;\n tagline: string;\n parentName: string;\n parentIcon: string;\n multipleActivations: boolean;\n activationStatus?: StatusNotificationItem;\n}\n\nexport interface PackageItemActivationStatus {\n packageItemId: string;\n status: ActivationStatus;\n}\n\nexport enum ActivationStatus {\n SUCCESS = 0,\n WARNING = 1,\n ERROR = 2\n}\n\nexport interface StatusNotificationItem {\n icon: string,\n text: string,\n status: ActivationStatus\n}\n\nexport function buildSalesPackages(packages: Package[], products: Product[], addons: Addon[]): SalesPackage[] {\n if (!packages || packages.length < 1) {\n return [];\n }\n return packages.map(pkg => buildSalesPackageFromPackage(pkg, products, addons));\n}\n\nfunction buildSalesPackageFromPackage(pkg: Package, products: Product[], addons: Addon[]): SalesPackage {\n if (!pkg) {\n return null;\n }\n\n const salesProducts = buildSalesProducts(pkg, products, addons);\n // Addons can be in a package even if the parent product is not, this will create salesAddons with no parent\n const addonsWithNoParent: SalesAddon[] = buildSalesAddonsWithNoParent(pkg, products, addons);\n\n return createSalesPackage(pkg, salesProducts, addonsWithNoParent);\n}\n\nexport function buildSalesProducts(pkg: Package, products: Product[], addons: Addon[]): SalesProduct[] {\n if (!(products && products.length && pkg.products && pkg.products.length)) {\n return [];\n }\n const productMap: Map<string, Product> = new Map<string, Product>();\n products.forEach(product => productMap.set(product.productId, product));\n return pkg.products\n .map(productId => {\n const productMatch: Product = productMap.get(productId);\n const addonsInPackage = coerceAddonsForAddonKeys(addons, pkg.addon_keys);\n return productMatch ? buildSalesProductFromProduct(productMatch, addonsInPackage) : null;\n })\n .filter(productItem => productItem);\n}\n\nexport function coerceAddonsForAddonKeys(addons: Addon[], addonKeys: AddonKey[]): Addon[] {\n if (!addons || addons.length === 0 || !addonKeys || addonKeys.length === 0) {\n return [];\n }\n\n return addons.reduce((addonsArray, addon) => {\n const key = addonKeys.find(k => k.addonId === addon.addonId);\n if (key) {\n const quantity = key.quantity || 1;\n for (let i = 0; i < quantity; i++) {\n addonsArray.push(addon)\n }\n }\n return addonsArray;\n }, []);\n}\n\nexport function buildSalesAddonsWithNoParent(pkg: Package, products: Product[], addons: Addon[]): SalesAddon[] {\n if (!addons || addons.length < 1 || !pkg.addon_keys) {\n return [];\n }\n const productMap: Map<string, Product> = new Map<string, Product>();\n products.forEach(product => productMap.set(product.productId, product));\n const addonsMap: Map<string, Addon> = new Map<string, Addon>();\n addons.forEach(addon => addonsMap.set(addon.addonId, addon));\n\n const addonsWithNoParent = pkg.addon_keys.reduce<SalesAddon[]>((addonArray: SalesAddon[], addonKey: AddonKey): SalesAddon[] => {\n if (pkg.products && pkg.products.some(productId => productId === addonKey.appId)) {\n return addonArray || [];\n }\n const parentProduct = productMap.get(addonKey.appId);\n const parentName = parentProduct ? parentProduct.name : null;\n const parentIcon = parentProduct ? parentProduct.iconUrl : null;\n const quantity = addonKey.quantity || 1;\n const addon: Addon = addonsMap.get(addonKey.addonId); // could be undefined\n for (let i = 0; i < quantity; i++) {\n addonArray.push(createSalesAddon(addon, parentName, parentIcon));\n }\n return addonArray;\n }, []);\n return addonsWithNoParent;\n}\n\nexport function buildSalesProductFromProduct(product: Product | ProductWithParent, addons: Addon[]): SalesProduct {\n if (!product) {\n return null;\n }\n if (!addons || addons.length < 1) {\n return createSalesProduct(product, null);\n }\n\n const productAddons = addons.filter(addon => addon.appId === product.productId);\n const salesAddons = createSalesAddons(productAddons);\n return createSalesProduct(product, salesAddons);\n}\n\nfunction createSalesPackage(pkg: Package, salesProducts: SalesProduct[], addonsWithNoParent: SalesAddon[]): SalesPackage {\n let totalAddons = 0;\n for (const key of pkg.addon_keys || []) {\n totalAddons += key.quantity || 1;\n }\n\n return {\n formattedPrices: pkg.priceStrings.join(', '),\n packageId: pkg.solution_id,\n name: pkg.name,\n icon: pkg.icon,\n productIds: pkg.products,\n products: salesProducts || [],\n addonsWithNoParent: addonsWithNoParent || [],\n totalAddons: totalAddons\n }\n}\n\nfunction createSalesProduct(product: Product | ProductWithParent, salesAddons: SalesAddon[]): SalesProduct {\n let parentInfo: ProductParentInfo;\n if (product instanceof ProductWithParent) {\n parentInfo = {\n parentId: product.parentId,\n parentName: product.parentName,\n parentIconUrl: product.parentIconUrl,\n multipleActivations: product.multipleActivations || false,\n }\n }\n return {\n formattedPrices: product.priceStrings.join(', '),\n productId: product.productId,\n name: product.name,\n tagline: product.tagline || '',\n icon: product.iconUrl,\n addons: salesAddons || [],\n editionId: product.editionId,\n editionName: product.editionName,\n parentInfo: parentInfo,\n }\n}\n\nfunction createSalesAddons(addons: Addon[]): SalesAddon[] {\n return addons.map(addon => createSalesAddon(addon));\n}\n\nfunction createSalesAddon(addon: Addon, parentName?: string, parentIcon?: string): SalesAddon {\n return {\n parentId: addon.appId,\n addonId: addon.addonId,\n name: addon.title,\n tagline: addon.tagline || '',\n icon: addon.icon || '',\n multipleActivations: addon.multipleActivations,\n parentIcon: parentIcon || '',\n parentName: parentName || ''\n }\n}\n\nfunction createSalesPackageWithStatus(pkg: SalesPackage, products: SalesProduct[], addons: SalesAddon[],\n activationStatus: StatusNotificationItem): SalesPackage {\n\n return {\n formattedPrices: pkg.formattedPrices,\n packageId: pkg.packageId,\n name: pkg.name,\n icon: pkg.icon,\n productIds: pkg.productIds,\n products: products || [],\n addonsWithNoParent: addons || [],\n activationStatus: activationStatus || null,\n totalAddons: pkg.totalAddons\n }\n}\n\nfunction createSalesProductWithStatus(product: SalesProduct, addons: SalesAddon[], activationStatus: StatusNotificationItem): SalesProduct {\n return {\n formattedPrices: product.formattedPrices,\n productId: product.productId,\n name: product.name,\n editionId: product.editionId,\n editionName: product.editionName,\n tagline: product.tagline,\n icon: product.icon,\n addons: addons || [],\n activationStatus: activationStatus || null,\n parentInfo: product.parentInfo || null,\n };\n}\n\nfunction createSalesAddonWithStatus(addon: SalesAddon, activationStatus: StatusNotificationItem): SalesAddon {\n return {\n parentId: addon.parentId,\n addonId: addon.addonId,\n name: addon.name,\n tagline: addon.tagline,\n icon: addon.icon,\n parentIcon: addon.parentIcon,\n parentName: addon.parentName,\n multipleActivations: addon.multipleActivations,\n activationStatus: activationStatus || null\n }\n}\n\nexport function addStatusesToSalesPackages(salesPackages: SalesPackage[], statuses: PackageItemActivationStatus[]): SalesPackage[] {\n if (!statuses || statuses.length === 0) {\n return salesPackages;\n }\n\n return salesPackages.map(salesPackage => {\n const newProducts = salesPackage.products.map(product => addStatusesToSalesProduct(product, statuses));\n\n const newAddonsWithNoParent = salesPackage.addonsWithNoParent.map(addon => {\n const status = findStatus(statuses, addon.addonId);\n return addStatusesToSalesAddon(addon, status)\n });\n\n const productStatuses = newProducts\n .map(product => product.activationStatus.status);\n const addonStatuses = newProducts\n .map(product => product.addons ? product.addons.map(addon => addon.activationStatus.status) : [])\n .reduce((statusList, reducedList) => reducedList.concat(statusList), []);\n const addonsWithNoParentStatuses = newAddonsWithNoParent\n .map(addon => addon.activationStatus ? addon.activationStatus.status : null);\n const allStatuses = [...productStatuses, ...addonStatuses, ...addonsWithNoParentStatuses];\n\n const packageStatus = convertNumberToActivationStatus(Math.max(...allStatuses));\n const statusNotification = createStatusNotificationItemForPackage(packageStatus);\n\n return createSalesPackageWithStatus(salesPackage, newProducts, newAddonsWithNoParent, statusNotification);\n });\n}\n\nexport function addStatusesToSalesProduct(product: SalesProduct, statuses: PackageItemActivationStatus[]): SalesProduct {\n if (!statuses || statuses.length === 0) {\n return product;\n }\n const productStatus = findStatus(statuses, product.productId);\n const statusNotification = createStatusNotificationItemForPackageItem(productStatus);\n if (!product.addons) {\n return createSalesProductWithStatus(product, null, statusNotification)\n }\n\n const newSalesAddons = product.addons.map(addon => {\n const addonStatus = findStatus(statuses, addon.addonId);\n return addStatusesToSalesAddon(addon, addonStatus)\n });\n\n return createSalesProductWithStatus(product, newSalesAddons, statusNotification);\n}\n\nfunction addStatusesToSalesAddon(addon: SalesAddon, status: ActivationStatus): SalesAddon {\n const addonStatusNotification = createStatusNotificationItemForPackageItem(status);\n return createSalesAddonWithStatus(addon, addonStatusNotification);\n}\n\nfunction findStatus(statuses: PackageItemActivationStatus[], id: string): ActivationStatus {\n if (!statuses || statuses.length <= 0) {\n return null\n }\n const statusIndex = statuses.findIndex(s => {\n return s.packageItemId === id;\n });\n if (statusIndex < 0) {\n return null;\n }\n const status = statuses[statusIndex].status;\n statuses.splice(statusIndex, 1);\n return status;\n}\n\nfunction createStatusNotificationItemForPackageItem(status: ActivationStatus): StatusNotificationItem {\n switch (status) {\n case ActivationStatus.SUCCESS:\n return {icon: 'check_circle', status: status, text: 'Activated'};\n case ActivationStatus.WARNING:\n return {icon: 'warning', status: status, text: 'Already Activated'};\n default:\n return {icon: 'error', status: status, text: 'Activation Errors'};\n }\n}\n\nfunction createStatusNotificationItemForPackage(status: ActivationStatus): StatusNotificationItem {\n switch (status) {\n case ActivationStatus.SUCCESS:\n return {icon: 'check_circle', status: status, text: 'Activated'};\n case ActivationStatus.WARNING:\n return {icon: 'warning', status: status, text: 'Activation Warnings'};\n default:\n return {icon: 'error', status: status, text: 'Activation Errors Occured'};\n }\n}\n\nfunction convertNumberToActivationStatus(number: Number): ActivationStatus {\n switch (number) {\n case 0:\n return ActivationStatus.SUCCESS;\n case 1:\n return ActivationStatus.WARNING;\n default:\n return ActivationStatus.ERROR;\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ActivationStatus, StatusNotificationItem } from '../sales-package';\n\nexport enum ListIndent {\n INDENT_ZERO = 'indent-zero',\n INDENT_ONE = 'indent-one',\n INDENT_TWO = 'indent-two',\n}\n\n@Component({\n selector: 'va-package-dropdown-item',\n templateUrl: './package-dropdown-item.component.html',\n styleUrls: ['./package-dropdown-item.component.scss', '../package-dropdown.component.scss']\n})\nexport class VaPackageDropdownItemComponent implements OnInit {\n @Input() title: string;\n @Input() titleBadge: string;\n @Input() titleDescriptor: string;\n @Input() iconUrl: string;\n @Input() secondaryIconUrl: string;\n @Input() secondaryIconName: string;\n @Input() subtitle: string;\n @Input() statusItem: StatusNotificationItem;\n @Input() enableDropdown = false;\n @Input() indent = ListIndent.INDENT_ZERO;\n @Input() toggleValue: boolean;\n @Input() description: string;\n @Output() itemToggled: EventEmitter<null> = new EventEmitter<null>();\n\n ngOnInit() {\n }\n\n toggleItem(): void {\n this.itemToggled.emit(null);\n }\n\n isActivatedStatus(status: ActivationStatus): boolean {\n return status === ActivationStatus.SUCCESS;\n }\n isWarningStatus(status: ActivationStatus): boolean {\n return status === ActivationStatus.WARNING;\n }\n isErrorStatus(status: ActivationStatus): boolean {\n return status === ActivationStatus.ERROR\n }\n\n}\n","import {Component, Input, OnInit} from '@angular/core';\nimport { trigger, transition, animate, style, state } from '@angular/animations';\nimport { Observable, BehaviorSubject, ReplaySubject, combineLatest, zip } from 'rxjs';\nimport {filter, map, startWith, tap} from 'rxjs/operators';\n\nimport { Addon } from '@vendasta/core/marketplace-packages';\nimport {\n SalesPackage,\n SalesProduct,\n buildSalesPackages,\n buildSalesProductFromProduct,\n addStatusesToSalesPackages,\n addStatusesToSalesProduct,\n PackageItemActivationStatus,\n} from './sales-package';\nimport { Product, ProductWithParent } from '../shared/product';\nimport { Package } from '../package-details/package';\nimport { ListIndent } from './package-dropdown-item/package-dropdown-item.component';\nimport { TranslateService } from '@ngx-translate/core';\nimport { En } from '../assets/i18n/en';\n\ninterface OrderLengthsForToggling {\n packages: number;\n products: number;\n}\n\n@Component({\n selector: 'va-package-dropdown',\n animations: [\n trigger('listAnimationStart', [\n state('void', style({ height: '0px' })),\n state('*', style({ height: '*' })),\n transition('void => *', [animate('0.25s ease')]),\n transition('* => void', [animate('0.25s ease')])\n ])\n ],\n templateUrl: 'package-dropdown.component.html',\n styleUrls: ['./package-dropdown.component.scss']\n})\nexport class VaPackageDropdownComponent implements OnInit {\n // packages in dropdown\n @Input()\n set packages(packages: Package[]) {\n this.packages$$.next(packages);\n }\n\n // products within given packages\n @Input()\n set products(products: Product[]) {\n this.products$$.next(products);\n }\n\n // products not associated with a package\n @Input()\n set standAloneProducts(standAloneProducts: Product[]) {\n this.standAloneProducts$$.next(standAloneProducts);\n }\n\n // statuses for all products and addons\n @Input()\n set statuses(statuses: PackageItemActivationStatus[]) {\n this.statuses$$.next(statuses);\n }\n\n // addons within given packages\n @Input()\n set addons(addons: Addon[]) {\n this.addons$$.next(addons);\n }\n\n // controls whether only one dropdown can be expanded at a time\n @Input() singularDropdown = false;\n\n // hides pricing\n @Input() hidePricing = false;\n\n packageProductIndent = ListIndent.INDENT_ONE;\n packageAddonWithoutProductIndent = ListIndent.INDENT_ONE;\n packageAddonWithProductIndent = ListIndent.INDENT_TWO;\n productAddonIndent = ListIndent.INDENT_ONE;\n\n packages$$: ReplaySubject<Package[]> = new ReplaySubject(1);\n products$$: ReplaySubject<Product[]> = new ReplaySubject(1);\n standAloneProducts$$: ReplaySubject<(Product | ProductWithParent) []> = new ReplaySubject(1);\n statuses$$: BehaviorSubject<PackageItemActivationStatus[]> = new BehaviorSubject([]);\n addons$$: ReplaySubject<Addon[]> = new ReplaySubject(1);\n\n orderItemLengths$$ = new BehaviorSubject<OrderLengthsForToggling> (\n <OrderLengthsForToggling> {\n packages: 0,\n products: 0\n }\n );\n\n templateData$: Observable<{ packages: SalesPackage[]; products: SalesProduct[] }>;\n salesPackages$: Observable<SalesPackage[]>;\n salesProducts$: Observable<SalesProduct[]>;\n packageToggles: boolean[] = [];\n productToggles: boolean[] = [];\n\n constructor(private translateService: TranslateService) {\n this.translateService.setTranslation('en', En.en, true);\n }\n\n ngOnInit(): void {\n const packages$: Observable<Package[]> = this.packages$$.pipe(filter(packages => packages !== null));\n const products$: Observable<Product[]> = this.products$$.pipe(filter(products => products !== null));\n const addons$: Observable<Addon[]> = this.addons$$.pipe(filter(addons => addons !== null));\n\n const salesPackage$ = zip(packages$, products$, addons$).pipe(\n tap(([packages, products, _]) => {\n this.orderItemLengths$$.next(\n <OrderLengthsForToggling> {\n packages: packages.length,\n products: products.length\n });\n }),\n map(([packages, products, addons]) => buildSalesPackages(packages, products, addons)),\n );\n\n this.salesPackages$ = combineLatest(salesPackage$, this.statuses$$).pipe(\n map(([salesPackages, statuses]) => addStatusesToSalesPackages(salesPackages, statuses)),\n startWith([]),\n );\n\n this.salesProducts$ = combineLatest(this.standAloneProducts$$, this.statuses$$).pipe(\n filter(([products, _]) => products !== null),\n map(([products, statuses]: [(Product | ProductWithParent)[], PackageItemActivationStatus[]]): SalesProduct[] => {\n return products.map(p => {\n const addons = p.addons || null;\n const salesProducts = buildSalesProductFromProduct(p, addons);\n return addStatusesToSalesProduct(salesProducts, statuses);\n });\n }),\n startWith([]),\n );\n this.templateData$ = combineLatest(this.salesPackages$, this.salesProducts$).pipe(\n map(([packages, products]) => ({packages: packages, products: products}))\n )\n }\n\n public openAllDropdowns() {\n for (let x = 0; x < this.orderItemLengths$$.getValue().packages; x++) {\n this.packageToggles[x] = true;\n }\n for (let x = 0; x < this.orderItemLengths$$.getValue().products; x++) {\n this.productToggles[x] = true;\n }\n }\n\n public togglePackage(indexToToggle: number): void {\n if (this.singularDropdown) {\n const openedIndex = this.packageToggles.findIndex(value => value === true);\n if (openedIndex !== indexToToggle) {\n this.packageToggles[openedIndex] = false;\n }\n const productOpenedIndex = this.productToggles.findIndex(value => value === true);\n if (productOpenedIndex > -1) {\n this.productToggles[productOpenedIndex] = false;\n }\n }\n this.packageToggles[indexToToggle] = !this.packageToggles[indexToToggle];\n }\n\n public toggleProduct(indexToToggle: number): void {\n if (this.singularDropdown) {\n const openedIndex = this.productToggles.findIndex(value => value === true);\n if (openedIndex !== indexToToggle) {\n this.productToggles[openedIndex] = false;\n }\n const packageOpenedIndex = this.packageToggles.findIndex(value => value === true);\n if (packageOpenedIndex > -1) {\n this.packageToggles[packageOpenedIndex] = false;\n }\n }\n this.productToggles[indexToToggle] = !this.productToggles[indexToToggle];\n }\n\n public standAloneProductDescription(product: SalesProduct): string {\n if (product.addons && product.addons.length > 0) {\n let description = `Contains ${product.addons.length}`;\n description = product.addons.length === 1 ? `${description} Addon` : `${description} Addons`;\n return description;\n }\n return '';\n }\n\n public standAloneProductWithParentDescription(product: SalesProduct): string {\n if (!product.parentInfo) {\n return '';\n }\n\n return `(Requires ${product.parentInfo.parentName})`\n }\n\n public packageDescription(pkg: SalesPackage): string {\n const hasProducts = pkg.products && pkg.products.length > 0;\n if (!hasProducts && pkg.totalAddons === 0) {\n return 'No Items in Package';\n }\n\n let description = '';\n const hasOneProduct = pkg.products && pkg.products.length === 1;\n if (hasProducts || pkg.totalAddons > 0) {\n description = 'Contains ';\n }\n if (hasProducts) {\n description = `${description} ${pkg.products.length}`;\n description = hasOneProduct ? `${description} Product` : `${description} Products`;\n }\n if (hasProducts && pkg.totalAddons > 0) {\n description = `${description} & ${pkg.totalAddons}`;\n description = pkg.totalAddons === 1 ? `${description} Addon` : `${description} Addons`;\n }\n return description;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatCardModule, MatButtonModule, MatListModule, MatIconModule } from '@angular/material';\n\nimport { VaIconModule, VaBadgeModule } from '@vendasta/uikit';\nimport { VaPackageDropdownComponent } from './package-dropdown.component';\nimport { VaPackageDropdownItemComponent } from './package-dropdown-item/package-dropdown-item.component';\nimport { TranslateModule } from '@ngx-translate/core';\n\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n MatCardModule,\n MatListModule,\n MatIconModule,\n VaIconModule,\n VaBadgeModule,\n TranslateModule\n ],\n declarations: [VaPackageDropdownComponent, VaPackageDropdownItemComponent],\n exports: [VaPackageDropdownComponent],\n entryComponents: [VaPackageDropdownComponent]\n})\nexport class VaPackageDropdownModule {}\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {Product} from '../shared/product';\nimport {Price, CONTACT_SALES} from '../pricing/pricing';\nimport {Addon} from '@vendasta/core/shared';\nimport {BilledProduct} from '@vendasta/core/billing';\n\n@Component({\n selector: 'va-product-details',\n templateUrl: 'product-details.component.html',\n styleUrls: ['./product-details.component.scss']\n})\n\nexport class VaProductDetailsComponent {\n @Input() product: Product;\n @Input() billedProduct: BilledProduct;\n @Input() hasVerifiedContract = false;\n @Input() canAccessContractPricing = false;\n @Input() showActionButton = false;\n @Input() showPricing = false;\n @Input() primaryPricingActionLabel: string;\n @Input() pricingActionLabel: string;\n @Input() showPricingAction = false;\n @Input() loaded = true;\n @Input() partnerID: string;\n\n @Output() enableClicked = new EventEmitter();\n @Output() addonSelected = new EventEmitter<string>();\n @Output() primaryPricingActionSelected = new EventEmitter();\n @Output() pricingActionSelected = new EventEmitter();\n private _addons: Addon[];\n\n getAddons(): Addon[] {\n if (!this._addons) {\n this._addons = this.product.addons.map((addon) => Addon.fromApi(addon))\n }\n return this._addons;\n }\n\n getActionLabel(): string {\n if (this.product.isArchived) {\n return 'Enable';\n }\n return 'Enabled';\n }\n\n get price() {\n // NOTE: wholesalePrice = 0 means free, wholesalePrice = null || -1 means \"contact sales\"\n let prices: Price[] = [];\n if (this.product.wholesalePrice !== CONTACT_SALES && this.product.wholesalePrice != null) {\n prices = [{\n price: this.product.wholesalePrice,\n frequency: this.product.billingFrequency\n }]\n }\n return {\n currency: this.product.currency,\n prices: prices\n }\n }\n\n onAddonSelected(addonId: string): void {\n this.addonSelected.emit(addonId);\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {VaImageGalleryModule, VaIconModule, VaSafeHtmlModule} from '@vendasta/uikit';\nimport {VaPricingModule} from '../pricing/pricing.module';\nimport {VaFilesModule} from '../files/files.module';\nimport {VaFaqsModule} from '../faqs/faqs.module';\nimport {VaSellingInfoModule} from '../selling-info/selling-info.module';\nimport {VaProductDetailsComponent} from './product-details.component';\nimport {VaHeaderContainerModule} from '../header-container/header-container.module';\nimport {VaAddonListModule} from '../addon-list/addon-list.module';\nimport {RestrictionsModule} from '../restrictions/restrictions.module';\n\n@NgModule({\n imports: [\n VaImageGalleryModule, CommonModule, VaIconModule,\n VaPricingModule, VaFilesModule, VaFaqsModule, VaSellingInfoModule,\n VaHeaderContainerModule, VaSafeHtmlModule, VaAddonListModule, RestrictionsModule],\n declarations: [VaProductDetailsComponent],\n exports: [VaProductDetailsComponent],\n entryComponents: [VaProductDetailsComponent]\n})\nexport class VaProductDetailsModule {}\n","import { OrderForm, Restrictions, TrialConfiguration } from '@vendasta/core/marketplace-apps';\n\nexport class ResellerItem {\n appId?: string;\n addonId?: string;\n name?: string;\n icon?: string;\n tagline?: string;\n headerImage?: string;\n currency?: string;\n price?: number;\n billingFrequency?: string;\n lmiCategories?: string[];\n enabled: boolean;\n isCustom: boolean;\n orderForm?: OrderForm;\n quantity = 1;\n allowMultipleActivations: boolean;\n usesCustomizationForm: boolean;\n usesActivationSpecificEntryUrl: boolean;\n entryUrl: string;\n restrictions?: Restrictions;\n activationRequiresApproval?: boolean;\n billingId?: string;\n usesEditions: boolean;\n editionIds: string[];\n suggestedRetailPrice: number; // price is in cents\n editionId?: string;\n trialConfiguration?: TrialConfiguration;\n\n constructor(data?: any) {\n data = data || {};\n Object.assign(this, data);\n }\n}\n","import {ControlType, FieldBase} from './field-base';\n\nexport class CheckboxField extends FieldBase<boolean> {\n readonly controlType: ControlType = 'checkbox';\n}\n","import {ControlType, FieldBase, FieldBaseOptions} from './field-base';\nimport {Option as InputOption} from '@vendasta/forms'\nimport { AbstractControl, ValidatorFn } from '@angular/forms';\n\nexport interface Option {\n value: string,\n label: string,\n disabled?: boolean\n}\n\nexport interface DropDownFieldOptions extends FieldBaseOptions {\n options: Option[] | InputOption[] | string[];\n allowMultiples?: boolean;\n allowDuplicates?: boolean;\n maxChoices?: number;\n}\n\nexport class DropdownField extends FieldBase<string | string[]> {\n readonly controlType: ControlType = 'dropdown';\n options: Option[] | InputOption[];\n allowMultiples: boolean;\n allowDuplicates: boolean;\n maxChoices: number;\n\n constructor(options: DropDownFieldOptions) {\n super(options);\n this.options = [];\n if (!!options.options && options.options.length > 0) {\n // Because this typeof guard is on the element and not the array as a whole typescript doesn't recognize it as a valid type assertion\n // The ts-ignore's are required because of this\n if (typeof options.options[0] === 'string') {\n if (options.allowMultiples) {\n // @ts-ignore\n this.options = options.options.map((o: string) => ({value: o, name: o}));\n } else {\n // @ts-ignore\n this.options = options.options.map((o: string) => ({value: o, label: o}));\n }\n } else {\n if (options.allowMultiples) {\n // @ts-ignore\n this.options = options.options.map((o: string) => ({value: o.value, name: o.label}));\n } else {\n // @ts-ignore\n this.options = options.options;\n }\n }\n }\n\n this.allowMultiples = !!options.allowMultiples;\n this.allowDuplicates = !!options.allowDuplicates;\n this.maxChoices = options.maxChoices ? options.maxChoices : 1;\n\n this.validator = this.validatorBuilder();\n }\n\n protected validatorBuilder(): ValidatorFn {\n const maxChoices = this.maxChoices;\n return (control: AbstractControl): { [key: string]: any } => {\n if (Array.isArray(control.value) && maxChoices && control.value.length > maxChoices) {\n return {overMaxChoices: true}\n }\n }\n }\n}\n","import {ControlType, FieldBase, FieldBaseOptions} from './field-base';\n\nconst DEFAULT_NUM_FILES = 5;\n\nexport type FileType = 'image';\n\nexport interface FileUploadGroupFieldOptions extends FieldBaseOptions {\n fileType: FileType;\n uploadUrl: string;\n numFiles: number;\n}\n\nexport class FileUploadGroupField extends FieldBase<string[]> {\n readonly controlType: ControlType = 'file';\n fileType: FileType;\n uploadUrl: string;\n numFiles: number;\n\n constructor(options: FileUploadGroupFieldOptions) {\n super(options);\n if (!options.uploadUrl) {\n throw new Error('uploadUrl is required.');\n }\n this.fileType = options.fileType || 'image';\n this.numFiles = options.numFiles || DEFAULT_NUM_FILES;\n this.uploadUrl = options.uploadUrl;\n this.value = [];\n }\n}\n","import {ControlType, FieldBase, FieldBaseOptions} from './field-base';\n\n\nexport class TextareaField extends FieldBase<string> { controlType: ControlType = 'textarea'; }\n","import {ControlType, FieldBase, FieldBaseOptions} from './field-base';\n\nexport type TextboxType = 'text';\n\nexport interface TextBoxFieldOptions extends FieldBaseOptions {\n textboxType: TextboxType;\n prefix?: string;\n suffix?: string;\n displayOnly?: boolean;\n}\n\nexport class TextboxField extends FieldBase<string> {\n readonly controlType: ControlType = 'textbox';\n textboxType: TextboxType;\n prefix: string;\n suffix: string;\n regexValidator: string;\n regexErrorMessage: string;\n displayOnly: boolean;\n\n constructor(options: TextBoxFieldOptions) {\n super(options);\n this.textboxType = options.textboxType || 'text';\n this.prefix = options.prefix || '';\n this.suffix = options.suffix || '';\n this.regexValidator = options.regexValidator || '';\n this.regexErrorMessage = options.regexErrorMessage || '';\n this.displayOnly = options.displayOnly || false;\n }\n}\n","import {ControlType, FieldBaseOptions} from './field-base';\nimport {DropdownField, Option} from './field-dropdown';\n\nexport interface User {\n userId: string,\n email: string,\n firstName?: string,\n lastName?: string,\n}\n\nexport interface VBCUserFieldOptions extends FieldBaseOptions { users: User[]; }\n\nexport class VBCUserField extends DropdownField {\n readonly controlType: ControlType = 'vbcuser';\n\n constructor(options: VBCUserFieldOptions) {\n super({\n id: options.id,\n label: options.label,\n required: options.required,\n description: options.description,\n options: getOptions(options.users),\n disabled: options.disabled,\n forOfficeUseOnly: options.forOfficeUseOnly\n });\n }\n}\n\nfunction getOptions(vbcUsers: User[]): Option[] {\n if (vbcUsers && vbcUsers.length > 0) {\n vbcUsers.sort(compareUsersByEmail);\n return vbcUsers.map(user => {\n const labelString = createLabelString(user.firstName, user.lastName, user.email);\n\n if (user.userId && user.email && user.firstName && user.lastName) {\n return {\n label: labelString,\n value: JSON.stringify({firstName: user.firstName, lastName: user.lastName, email: user.email, id: user.userId})\n };\n }\n return {label: labelString, value: '', disabled: true};\n });\n }\n return [{label: 'No Users — Please add one to this account', value: '', disabled: true}];\n}\n\nfunction compareUsersByEmail(a: User, b: User): number {\n if (a == null) {\n return -1;\n }\n if (b == null) {\n return 1;\n }\n return a.email.localeCompare(b.email);\n}\n\nfunction createLabelString(firstName: string, lastName: string, email: string): string {\n let returnString = '';\n returnString += firstName ? firstName + ' ' : '';\n returnString += lastName ? lastName + ' ' : '';\n returnString += email ? `(${email})` : '';\n return returnString;\n}\n"],"names":["MatProgressSpinnerModule","MatListModule","observableMerge","ProtoPricing","ProtoCurrency"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AACA,MAAa,EAAE;;AACG,KAAE,GAAG;IACnB,gBAAgB,EAAE;QAChB,OAAO,EAAE,OAAO;QAChB,eAAe,EAAE,eAAe;QAChC,MAAM,EAAE,MAAM;QACd,aAAa,EAAE,aAAa;QAC5B,eAAe,EAAE,SAAS;QAC1B,cAAc,EAAE,QAAQ;QACxB,YAAY,EAAE,8BAA8B;QAC5C,gCAAgC,EAAE,wCAAwC;QAC1E,yBAAyB,EAAE,gGAAgG;QAC3H,YAAY,EAAE,8CAA8C;QAC5D,qBAAqB,EAAE;YACrB,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,MAAM;SACf;QACD,qBAAqB,EAAE,gCAAgC;QACvD,0BAA0B,EAAE,0BAA0B;QACtD,iBAAiB,EAAE;YACjB,qBAAqB,EAAE,qDAAqD;YAC5E,4BAA4B,EAAE,4BAA4B;YAC1D,UAAU,EAAE,UAAU;SACvB;QACD,UAAU,EAAE,UAAU;QACtB,2BAA2B,EAAE,+BAA+B;QAC5D,wBAAwB,EAAE,uCAAuC;QACjE,4BAA4B,EAAE,8CAA8C;QAC5E,SAAS,EAAE,SAAS;QACpB,MAAM,EAAE,MAAM;QACd,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,OAAO;QAChB,YAAY,EAAE,YAAY;QAC1B,oBAAoB,EAAE,8BAA8B;KACrD;CACF,CAAC;;;IAlCF,MAkCE;;;;;;;ACpCJ,MAca,kBAAkB;;;;;IA+C3B,YAAoB,gBAAkC,EAAU,mBAAwC;QAApF,qBAAgB,GAAhB,gBAAgB,CAAkB;QAAU,wBAAmB,GAAnB,mBAAmB,CAAqB;QA9C/F,YAAO,GAAY,IAAI,CAAC;QAExB,kBAAa,GAAG,KAAK,CAAC;QACtB,YAAO,GAAG,KAAK,CAAC;QAChB,wBAAmB,GAAG,KAAK,CAAC;QAC5B,mBAAc,GAAG,IAAI,CAAC;QACtB,WAAM,GAAG,IAAI,CAAC;QAEvB,cAAS,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC,CAAC;QAC/C,oBAAe,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC,CAAC;QAC3D,0BAAqB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;QAqC1D,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAChG,GAAG;;;;QAAC,CAAC,CAAC,OAAO,EAAE,aAAa,EAAE,mBAAmB,CAAC;;kBAC1C,YAAY;;;;YAAG,CAAC,MAA2B;gBAC/C,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI;;;;gBAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAC,GAAG,KAAK,CAAC;aAClF,CAAA;YAED,IAAI,mBAAmB,IAAI,aAAa,EAAE;gBACtC,OAAO,aAAa,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,GAAG,YAAY,CAAC,aAAa,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC;aACrG;YACD,OAAO,CAAC,CAAC,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;SAClD,EAAC,CACH,CAAC;QAEF,IAAI,CAAC,mBAAmB,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAC5G,GAAG;;;;QAAC,CAAC,CAAC,OAAO,EAAE,aAAa,EAAE,mBAAmB,CAAC;;kBAC1C,0BAA0B;;;;YAAG,CAAC,MAA2B;gBAC7D,OAAO,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI;;;;gBAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,EAAC,GAAG,IAAI,CAAC;aAC/F,CAAA;YAED,IAAI,mBAAmB,IAAI,aAAa,EAAE;gBACtC,OAAO,0BAA0B,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;aACjE;YACD,IAAI,CAAC,OAAO,EAAE;gBACV,OAAO,IAAI,CAAC;aACf;YACD,OAAO,0BAA0B,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;SACnD,EAAC,CACH,CAAC;QAEF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG;;;;QAAC,aAAa,IAAI,aAAa,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAC,CAAC,CAAC;QAC5G,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAC9C,SAAS;;;;QAAC,aAAa;;kBACf,sBAAsB,GAAG,aAAa,CAAC,YAAY,CAAC,GAAG;;;;YAAC,WAAW;gBACvE,OAAO,aAAa,CAClB,EAAE,CAAC,WAAW,CAAC,eAAe,CAAC,EAC/B,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,EACxC,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,aAAa,CAAC,gBAAgB,CAAC,EAC5E,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC,EAC1C,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,aAAa,CAAC,gBAAgB,EAAE,WAAW,CAAC,eAAe,CAAC,EACtG,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAC1C,CAAC,IAAI,CACJ,GAAG;;;;gBAAC,CAAC,CAAC,eAAe,EAAE,iBAAiB,EAAE,qBAAqB,EACxD,mBAAmB,EAAE,kBAAkB,EAAE,6BAA6B,CAAC;oBAC5E,OAAO;wBACL,eAAe,EAAE,eAAe;wBAChC,iBAAiB,EAAE,iBAAiB;wBACpC,qBAAqB,EAAE,qBAAqB;wBAC5C,mBAAmB,EAAE,mBAAmB;wBACxC,kBAAkB,EAAE,kBAAkB;wBACtC,6BAA6B,EAAE,6BAA6B;qBAC7D,CAAC;iBACH,EAAC,CACH,CAAA;aACF,EAAC;YACF,OAAO,aAAa,CAAC,GAAG,sBAAsB,CAAC,CAAA;SAChD,EAAC,CACH,CAAC;QAEF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAClC,SAAS;;;;QAAC,OAAO;;kBACT,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG;;;;YAAC,KAAK;gBAC/C,OAAO,aAAa,CAClB,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,EACzB,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,EACrE,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,EACrE,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,SAAS,CAAC,CAC3C,CAAC,IAAI,CACJ,GAAG;;;;gBAAC,CAAC,CAAC,eAAe,EAAE,qCAAqC,EAAE,kCAAkC,EAAE,eAAe,CAAC;oBAChH,OAAO;wBACL,eAAe,EAAE,eAAe;wBAChC,qCAAqC,EAAE,qCAAqC;wBAC5E,kCAAkC,EAAE,kCAAkC;wBACtE,eAAe,EAAE,eAAe;qBACjC,CAAC;iBACH,EAAC,CACH,CAAA;aACF,EAAC;YACF,OAAO,aAAa,CAAC,GAAG,gBAAgB,CAAC,CAAC;SAC3C,EAAC,CACH,CAAC;QAEF,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;KACzD;;;;IAhGD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;KACtC;;;;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;KAC5C;;;;IAED,IAAI,oBAAoB;QACtB,OAAO,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,CAAC;KAClD;;;;;IAwFD,WAAW,CAAC,OAAsB;QAChC,IAAI,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;YACrC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;SACnD;QACD,IAAI,OAAO,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE;YAC3C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;SAC/D;QACD,IAAI,OAAO,CAAC,cAAc,CAAC,qBAAqB,CAAC,EAAE;YACjD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;SAC3E;KACF;;;;;IAED,sBAAsB,CAAC,IAAiB;;YAChC,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,EAAE;YACtB,GAAG,GAAG,GAAG,CAAC;YACV,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;gBAC5C,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;aACjB;SACJ;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,2BAA2B,EAAE,EAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAC,CAAC,CAAC;KACtH;;;;;;IAED,0BAA0B,CAAC,IAAiB,EAAE,SAAkB;QAC5D,OAAO,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAChG,SAAS;;;;QAAC,CAAC,CAAC,WAAW,EAAE,kBAAkB,CAAC;YAC1C,IAAI,WAAW,EAAE;gBACf,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,+CAA+C,EAAE;oBACnF,WAAW,EAAE,WAAW;oBACxB,SAAS,EAAE,kBAAkB;iBAC9B,CAAC,CAAC;aACJ;YACD,OAAO,EAAE,CAAC,kBAAkB,CAAC,CAAC;SAC/B,EAAC,CACH,CAAC;KACL;;;;;IAED,wBAAwB,CAAC,IAAiB;QACtC,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,IAAI,CAC3C,GAAG;;;;QAAC,YAAY,IAAI,YAAY,GAAG,YAAY,GAAG,EAAE,EAAC,CACtD,CAAC;KACL;;;;;;;;IAED,0BAA0B,CAAC,KAAY,EAAE,QAAgB,EAAE,gBAAyB,EAAE,0BAAmC;QAErH,OAAO,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAChD,KAAK,CAAC,KAAK,EACX,QAAQ,sBACP,gBAAgB,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,KACxC,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,KAAK,CAAC,eAAe,IAAI,0BAA0B,CACpD,CAAA;KACJ;;;;;;;IAED,uBAAuB,CAAC,IAAiB,EAAE,SAAuC,EAAE,eAAyB;QACzG,OAAO,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAChD,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,aAAa,CAAC,QAAQ,qBAC3B,SAAS,IACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,eAAe,CAAC,CAAC;KACtB;;;;;IAED,oBAAoB,CAAC,SAAkB;QACnC,OAAO,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;KACrE;;;;IAED,sBAAsB;QACpB,OAAO,aAAa,CAAC;YACnB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,oCAAoC,CAAC;YAClE,IAAI,CAAC,cAAc;YACnB,IAAI,CAAC,QAAQ;YACb,IAAI,CAAC,OAAO;YACZ,IAAI,CAAC,mBAAmB;SACzB,CAAC,CAAC,IAAI,CACL,SAAS;;;;QAAC,CAAC,CAAC,qBAAqB,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,kBAAkB,CAAC;;kBAC9E,SAAS,GAAG,aAAa,GAAG,aAAa,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE;gBACvF,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,EAAE;;gBACnF,eAAe,GAAG,EAAE;YACxB,IAAI,SAAS,KAAK,QAAQ,EAAE;gBAC1B,eAAe,GAAG,qBAAqB,CAAC,IAAI,CAAC;aAC9C;iBAAM,IAAI,SAAS,KAAK,SAAS,EAAE;gBAClC,eAAe,GAAG,qBAAqB,CAAC,KAAK,CAAC;aAC/C;YACD,IAAI,CAAC,eAAe,IAAI,MAAM,IAAI,kBAAkB,EAAE;gBACpD,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;aACf;YACD,IAAI,aAAa,IAAI,aAAa,CAAC,UAAU,EAAE;;sBACvC,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC,OAAO;;sBAC1C,SAAS,GAAG,aAAa,CAAC,UAAU,CAAC,SAAS;gBACpD,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,wCAAwC,EAAE;oBAC5E,OAAO,EAAE,OAAO;oBAChB,eAAe,EAAE,eAAe;oBAChC,SAAS,EAAE,SAAS;iBACrB,CAAC,CAAC;aACJ;YACD,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;SACf,EAAC,CACH,CAAA;KACF;;;YAjPJ,SAAS,SAAC;gBACP,QAAQ,EAAE,YAAY;gBACtB,uxBAAuC;;aAE1C;;;;YARQ,gBAAgB;YAHa,mBAAmB;;;sBAapD,KAAK;4BACL,KAAK;4BACL,KAAK;sBACL,KAAK;kCACL,KAAK;6BACL,KAAK;qBACL,KAAK;;;;IANN,qCAAiC;;IACjC,2CAAsC;;IACtC,2CAA+B;;IAC/B,qCAAyB;;IACzB,iDAAqC;;IACrC,4CAA+B;;IAC/B,oCAAuB;;IAEvB,uCAA+C;;IAC/C,6CAA2D;;IAC3D,mDAA4D;;IAE5D,qCAA6B;;IAC7B,iDAAyC;;IACzC,0CAAkC;;IAElC,8CAOK;;IAEL,wCAKK;;IAEL,gDAAuC;;;;;IAc3B,8CAA0C;;;;;IAAE,iDAAgD;;;;;;;AC7D5G,MAQa,yBAA0B,SAAQ,kBAAkB;;;YALhE,SAAS,SAAC;gBACP,QAAQ,EAAE,mBAAmB;gBAC7B,2sIAAiD;;aAEpD;;;;;;;ACPD,MAQa,qBAAsB,SAAQ,kBAAkB;;;YAL5D,SAAS,SAAC;gBACP,QAAQ,EAAE,eAAe;gBACzB,qjEAA6C;;aAEhD;;;;;;;ACPD,MAiBa,eAAe;;;YAT3B,QAAQ,SAAC;gBACN,OAAO,EAAE;oBACP,YAAY;oBACZ,gBAAgB;oBAChB,eAAe;iBAChB;gBACD,YAAY,EAAE,CAAC,kBAAkB,EAAE,yBAAyB,EAAE,qBAAqB,CAAC;gBACpF,OAAO,EAAE,CAAC,kBAAkB,CAAC;aAChC;;;;;;;AChBD,MA6Ca,kBAAkB;;;;;IAO3B,YAAoB,0BAAsD,EAAU,gBAAkC;QAAlG,+BAA0B,GAA1B,0BAA0B,CAA4B;QAAU,qBAAgB,GAAhB,gBAAgB,CAAkB;QAL5G,qBAAgB,GAAG,IAAI,YAAY,EAAa,CAAC;QACjD,gBAAW,GAAG,IAAI,YAAY,EAAa,CAAC;QAC5C,uBAAkB,GAAG,IAAI,YAAY,EAAa,CAAC;QACnD,kBAAa,GAAG,IAAI,YAAY,EAAa,CAAC;QAGtD,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;KACzD;;;;IAED,qBAAqB;;;cAEf,WAAW,GAAG;YAClB,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;YACtF,SAAS;SACV;;YACG,OAAO,GAAG,CAAC;;cACT,YAAY,GAAG,SAAS;QAC9B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACnB,OAAO,YAAY,CAAC;SACrB;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC9C,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SAC5C;;cACK,KAAK,GAAG,OAAO,GAAG,WAAW,CAAC,MAAM;QAC1C,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;KAC3B;;;;;IAED,mBAAmB,CAAC,QAAgB;QAC9B,OAAO,IAAI,CAAC,0BAA0B,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;KAC3F;;;YArEF,SAAS,SAAC;gBACP,QAAQ,EAAE,eAAe;gBACzB,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAiCT;;aAEJ;;;;YAzCO,0BAA0B;YACzB,gBAAgB;;;mBA0CpB,KAAK;+BACL,MAAM;0BACN,MAAM;iCACN,MAAM;4BACN,MAAM;;;;IAJP,kCAAyB;;IACzB,8CAA2D;;IAC3D,yCAAsD;;IACtD,gDAA6D;;IAC7D,2CAAwD;;;;;IAE5C,wDAA8D;;;;;IAAE,8CAA0C;;;;;;;ACpD1H,MAwBa,eAAe;;;YAf3B,QAAQ,SAAC;gBACN,OAAO,EAAE;oBACL,YAAY;oBACZ,YAAY;oBACZ,aAAa;oBACb,eAAe;oBACf,aAAa;oBACb,aAAa;oBACb,yBAAyB;oBACzB,eAAe;oBACf,eAAe;iBAChB;gBACH,YAAY,EAAE,CAAC,kBAAkB,CAAC;gBAClC,OAAO,EAAE,CAAC,kBAAkB,CAAC;aAChC;;;;;;;ACvBD,MAoBa,cAAc;IAhB3B;QAiBW,UAAK,GAAgB,EAAE,CAAC;QACxB,eAAU,GAAG,IAAI,CAAC;QACjB,gBAAW,GAAG,IAAI,YAAY,EAAa,CAAC;KAUvD;;;;IANC,IAAI,aAAa;QACf,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM;;;;YAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAC,CAAC;SACvG;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;;;YA5BF,SAAS,SAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE;;;;;;;;;;;GAWT;;aAEF;;;oBAEE,KAAK;yBACL,KAAK;0BACL,MAAM;;;;IAFP,+BAAiC;;IACjC,oCAA2B;;IAC3B,qCAAsD;;IAEtD,oCAAmB;;;;;;;ACzBrB,MA4Ca,4BAA4B;;;;IAiBvC,YAAoB,gBAAkC;QAAlC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAf7C,cAAS,GAAG,KAAK,CAAC;QAElB,qBAAgB,GAAG,KAAK,CAAC;QACzB,cAAS,GAAG,EAAE,CAAC;QACf,2BAAsB,GAAG,IAAI,CAAC;QAC9B,oBAAe,GAAG,EAAE,CAAC;QAErB,gBAAW,GAAG,EAAE,CAAC;QACjB,eAAU,GAAG,IAAI,CAAC;QAC3B,wBAAmB,GAAG,EAAE,CAAC;QACzB,aAAQ,GAAG,cAAc,CAAC;QAC1B,kBAAa,GAAmB,EAAE,CAAC;QACnC,gBAAW,GAAG,CAAC,CAAC;QAChB,kBAAa,GAAG,EAAE,CAAC;QAGjB,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;KACzD;;;;IAED,QAAQ;;cACA,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;;;;;;;QAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAM,CAAC,IAAI,CAAC,CAAC,MAAM,GAAE,IAAI,CAAC;QAChF,IAAI,eAAe,EAAE;YACnB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;SACzB;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE;YACjF,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;SACvB;QACD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;;cACvF,IAAI,sBAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,EAAa;QAErF,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC/B,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;gBACrC,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,IAAI,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;oBAC9E,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;iBACzD;aACF;SACF;QACD,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,aAAa,CAAC;YACZ,IAAI,CAAC,aAAa;YAClB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,gCAAgC,CAAC;SAC/D,CAAC,CAAC,SAAS;;;;QAAC,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC;;gBAC/B,aAAa,GAAG,KAAK;YACzB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACnC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,WAAW,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;oBAC7H,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC;oBAC/B,aAAa,GAAG,IAAI,CAAC;oBACrB,IAAI,MAAM,KAAK,SAAS,EAAE;wBACxB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC,mBAAmB,CAAC;wBACvD,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;4BAClE,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;4BAC1B,MAAM;yBACP;qBACF;yBAAM;wBACL,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC,0BAA0B,CAAC;qBAC/D;iBACF;aACF;YACD,IAAI,CAAC,aAAa,EAAE;gBAClB,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC;gBAC/B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC,QAAQ,CAAC;aAC7C;SACF,EAAC,CACH,CAAC;QAEF,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC/B,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,YAAY,CAAC,SAAS;;;;YAAC,OAAO;;oBAC7B,WAAW,GAAG,EAAE;gBACpB,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;oBACzB,IAAI,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;wBAClF,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;4BACxB,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;gCAClC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE;oCACjC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;oCAC1C,WAAW,IAAI,IAAI,CAAC;iCACrB;6BACF;yBACF;6BAAM;4BACL,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;4BAC5B,WAAW,IAAI,IAAI,CAAC;yBACrB;qBACF;iBACF;gBACD,IAAI,CAAC,mBAAmB,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;aAC7E,EAAC,CACH,CAAC;SACH;QACD,IAAI,CAAC,sBAAsB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;KACnE;;;;;IAED,WAAW,CAAC,UAA4B;;cAChC,KAAK,GAAQ,EAAE;QACrB,UAAU,CAAC,OAAO;;;;QAAC,KAAK;;gBAClB,WAAW;YACf,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE;gBACnC,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC;aAC/B;iBAAM,IAAI,KAAK,CAAC,WAAW,KAAK,UAAU,EAAE;gBAC3C,WAAW,GAAG,CAAC,UAAU,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;aAC1D;iBAAM;gBACL,WAAW,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;aACtD;;kBAEK,WAAW,GAAG,IAAI,WAAW,CAAC,EAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAC,EAAE,WAAW,CAAC;YAChG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC;YAC9B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS;;;;YAAC,KAAK,KAAK,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,EAAC,CAAC,CAAC;SAC7F,EAAC,CAAC;QAEH,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;KAC7B;;;;IAED,WAAW;QACT,IAAI,CAAC,aAAa,CAAC,OAAO;;;;QAAC,YAAY,IAAI,YAAY,CAAC,WAAW,EAAE,EAAC,CAAC;KACxE;;;YAxJF,SAAS,SAAC;gBACT,QAAQ,EAAE,0BAA0B;gBACpC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCT;;aAEF;;;;YAvCQ,gBAAgB;;;+BAyCtB,KAAK;wBACL,KAAK;yBACL,KAAK;+BACL,KAAK;wBACL,KAAK;qCACL,KAAK;8BACL,KAAK;qBACL,KAAK;0BACL,KAAK;yBACL,KAAK;;;;IATN,wDAA8B;;IAC9B,iDAA2B;;IAC3B,kDAA+B;;IAC/B,wDAAkC;;IAClC,iDAAwB;;IACxB,8DAAuC;;IACvC,uDAA8B;;IAC9B,8CAAkC;;IAClC,mDAA0B;;IAC1B,kDAA2B;;IAC3B,2DAAyB;;IACzB,gDAA0B;;IAC1B,qDAAmC;;IACnC,mDAAgB;;IAChB,qDAAmB;;;;;IAEP,wDAA0C;;;;;;;AC7DxD,MAQa,cAAc;;;;IAGzB,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC;KAC9F;;;;;IAED,iBAAiB,CAAC,KAAK;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;KAC3H;;;YAdF,SAAS,SAAC;gBACT,QAAQ,EAAE,UAAU;gBAEpB,w9HAAqC;;aACtC;;;oBAEE,KAAK;mBACL,KAAK;;;;IADN,+BAAoB;;IACpB,8BAAyB;;;;;;;ACV3B,MAMa,YAAY;;;;;IACvB,iBAAiB,CAAC,KAAqB;QACrC,IAAI,KAAK,CAAC,QAAQ,EAAE;YAClB,OAAO,IAAI,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;SAC1D;aAAM;YACL,OAAO,IAAI,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACrC;KACF;;;;;;IAED,WAAW,CAAC,UAA4B,EAAE,aAA6B;;cAC/D,KAAK,GAAQ,EAAE;QACrB,UAAU,CAAC,OAAO;;;;QAAC,KAAK;;gBAClB,WAAwB;YAC5B,IAAI,KAAK,CAAC,WAAW,KAAK,UAAU,EAAE;gBACpC,WAAW,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aAC5C;iBAAM;gBACL,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;aAC7C;YACD,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC;YAC9B,IAAI,aAAa,EAAE;gBACjB,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS;;;;gBAAC,KAAK,KAAK,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,EAAC,CAAC,CAAC;aACxF;SACF,EAAC,CAAC;QACH,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;KAC7B;;;YAzBF,UAAU;;;;;;;ACLX,MAaa,0BAA0B;;;;IAyBrC,YAAoB,gBAAkC;QAAlC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAjB7C,WAAM,GAAG,IAAI,CAAC;QAUd,oBAAe,GAAG,KAAK,CAAC;QAEvB,yBAAoB,GAAG,IAAI,YAAY,EAAE,CAAC;QAC1C,mBAAc,GAAG,IAAI,YAAY,EAAE,CAAC;QACpC,iCAA4B,GAAG,IAAI,YAAY,EAAE,CAAC;QAClD,0BAAqB,GAAG,IAAI,YAAY,EAAE,CAAC;QAGnD,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;KACzD;;;;IAED,gBAAgB;QACd,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;KAC5B;;;;IAED,sBAAsB;QACpB,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;KAClC;;;;;IAED,gBAAgB,CAAC,aAA4B;QAC3C,OAAO,aAAa,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;KAC5G;;;;;IAED,uBAAuB,CAAC,YAA0B;QAChD,QAAQ,YAAY;YAClB,KAAK,YAAY,CAAC,SAAS;gBACzB,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,uCAAuC,CAAC,CAAC;YAC/E,KAAK,YAAY,CAAC,MAAM;gBACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,2CAA2C,CAAC,CAAC;YACnF;gBACE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;SACjB;KACF;;;YAxDF,SAAS,SAAC;gBACT,QAAQ,EAAE,qBAAqB;gBAC/B,0mFAAgD;;aAEjD;;;;YAPQ,gBAAgB;;;sBAUtB,KAAK;oBACL,KAAK;sBACL,KAAK;2BACL,KAAK;yBACL,KAAK;sBACL,KAAK;4BACL,KAAK;qBACL,KAAK;kCACL,KAAK;2BACL,KAAK;wCACL,KAAK;iCACL,KAAK;mCACL,KAAK;4BACL,KAAK;0BACL,KAAK;yBACL,KAAK;0BACL,KAAK;8BACL,KAAK;gCACL,KAAK;mCACL,MAAM;6BACN,MAAM;2CACN,MAAM;oCACN,MAAM;;;;IAtBP,6CAAyB;;IACzB,2CAAuB;;IACvB,6CAAyB;;IACzB,kDAA8B;;IAC9B,gDAA8B;;IAC9B,6CAA0B;;IAC1B,mDAAsC;;IACtC,4CAAuB;;IACvB,yDAAsC;;IACtC,kDAA8B;;IAC9B,+DAA2C;;IAC3C,wDAAoC;;IACpC,0DAAuC;;IACvC,mDAAgC;;IAChC,iDAA6B;;IAC7B,gDAA6B;;IAC7B,iDAA8B;;IAC9B,qDAAiC;;IACjC,uDAAmC;;IACnC,0DAAoD;;IACpD,oDAA8C;;IAC9C,kEAA4D;;IAC5D,2DAAqD;;;;;IAEzC,sDAA0C;;;;;;;ACtCxD,MAsBa,uBAAuB;;;YAdnC,QAAQ,SAAC;gBACR,OAAO,EAAE;oBACP,YAAY;oBACZ,aAAa;oBACb,eAAe;oBACf,YAAY;oBACZ,cAAc;oBACd,eAAe;oBACf,gBAAgB;oBAChB,eAAe;iBAChB;gBACD,YAAY,EAAE,CAAC,0BAA0B,CAAC;gBAC1C,OAAO,EAAE,CAAC,0BAA0B,CAAC;aACtC;;;;;;;ACnBD,MAAa,oBAAoB;CAQhC;;;IAPC,0CAAsB;;IACtB,yCAAkB;;IAClB,4CAAqB;;IACrB,+CAAwB;;IACxB,uCAAgB;;IAChB,8CAAwC;;IACxC,2CAAuC;;;;;;;ACTzC,MAUa,yBAAyB;IAGpC,iBAAgB;;;;IAEhB,QAAQ;;;cAEA,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;QACvC,IAAI,UAAU,EAAE;YACd,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC;SAC7B;KACF;;;;IAED,aAAa;QACX,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,OAAO,IAAI,CAAC;SACb;QACD,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;SACjC;QACD,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7D,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;SACjC;QACD,OAAO,IAAI,CAAC;KACb;;;YA9BF,SAAS,SAAC;gBACT,QAAQ,EAAE,uBAAuB;gBACjC,ioFAAgD;;aAEjD;;;;;mBAGE,KAAK;;;;IAAN,yCAAoC;;;;;;;ACRtC,MAAa,uBAAuB;IAApC;;QAWE,eAAU,GAAI,IAAI,CAAC;;KAEpB;CAAA;;;IAZC,mDAAsB;;IACtB,4CAAmB;;IACnB,6CAAsB;;IACtB,mDAA0B;;IAC1B,4CAAkB;;IAClB,yDAAgC;;IAChC,kDAAwB;;IACxB,yCAAyB;;IACzB,8CAAoB;;IAEpB,6CAAmB;;;;;;;ACdrB;;;AAQA,mCAoBC;;;IAnBC,0CAkBE;;;;;AAKJ,iCAMC;;;IALC,mCAAc;;IACd,qCAAiB;;IACjB,wCAA+C;;IAC/C,sDAA6D;;IAC7D,0CAA2C;;;;;AAG7C,gDAYC;;;IAXC,yDAAuB;;IACvB,4DAA0B;;IAC1B,gEAA8B;;IAC9B,mEAAiC;;IACjC,4DAA0B;;IAC1B,4DAA0B;;IAC1B,mEAAiC;;IACjC,6DAA2B;;IAC3B,wDAAsB;;IACtB,+DAA6B;;IAC7B,yDAAuB;;;;;AAGzB,yCAIC;;;IAHC,4CAAmC;;IACnC,iDAAqB;;IACrB,mDAA+B;;;;;AAGjC,gCAGC;;;IAFC,oCAAiB;;IACjB,kCAAe;;;;;AAGjB,uCAGC;;;IAFC,8CAAsB;;IACtB,6CAAgC;;;;;AAGlC,sCAGC;;;IAFC,0CAAgB;;IAChB,2CAAkB;;;;;AAIpB,6BAYC;;;IAXC,uCAAuB;;IACvB,sCAAsB;;IACtB,8CAA8B;;IAC9B,mDAAmC;;IACnC,uCAAuB;;IACvB,0CAA0B;;IAC1B,+CAA+B;;IAC/B,0CAA0B;;IAC1B,0CAA0B;;IAC1B,2CAA2B;;IAC3B,kDAAkC;;AAGpC,MAAa,2BAA4B,SAAQ,oBAAoB;CAGpE;;;IAFC,gDAAkB;;IAClB,kDAA4C;;AAG9C,MAAa,4BAA6B,SAAQ,uBAAuB;CAGxE;;;IAFC,iDAAkB;;IAClB,+CAAgB;;;;;AAGlB,mCAMC;;;IALC,yCAAkB;;IAClB,oCAAc;;IACd,uCAAiB;;IACjB,oCAAc;;IACd,yCAAiC;;;;;AAGnC,iCAGC;;;IAFC,qCAAgB;;IAChB,kCAAc;;;;;AAGhB,kCAIC;;;IAHC,wCAAkB;;IAClB,uCAA6B;;IAC7B,kDAA0C;;;;;AAG5C,iCAGC;;;IAFC,qCAAgB;;IAChB,oCAAgB;;;;;AAGlB,wCAIC;;;IAHC,4DAAkC;;IAClC,6CAAmB;;IACnB,2DAAiC;;;;;;;AC/HnC,MAgCa,gBAAgB;IA+W3B;KACC;;;;;;IAjWO,OAAO,6BAA6B,CAAC,SAA6B;QACxE,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,wBAAwB,EAAE;YACrD,OAAO,EAAE,CAAC;SACX;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC,MAAM;;;;QAAC,CAAC,IAAI,SAAS,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAC,CAAC;KAC3G;;;;;;IAEO,OAAO,mBAAmB,CAAC,UAAgC;;cAC3D,iBAAiB,GAAyC,IAAI,GAAG,EAAmC;QAC1G,KAAK,MAAM,GAAG,IAAI,gBAAgB,CAAC,mBAAmB,EAAE;YACtD,IAAI,GAAG,EAAE;gBACP,iBAAiB,CAAC,GAAG,CAAC,GAAG,EACvB;oBACE,OAAO,EAAE,GAAG;oBACZ,QAAQ,EAAE,KAAK;iBAChB,CACF,CAAA;aACF;SACF;QACD,UAAU,CAAC,GAAG;;;;QAAC,SAAS;;kBAChB,sBAAsB,GAAG,IAAI,CAAC,6BAA6B,CAAC,SAAS,CAAC;YAC5E,sBAAsB,CAAC,GAAG;;;;YAAC,OAAO;;sBAC1B,aAAa,GAAG,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC;gBACpD,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC;gBAC9B,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;aAC/C,EAAC,CAAC;SACJ,EAAC,CAAC;QACH,OAAO,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC;KAC/C;;;;;;;;;IAEO,OAAO,sBAAsB,CAAC,QAAmC,EAAE,UAA0B,EAAE,MAA4B,EAC7F,OAAyB;;cAEvD,kBAAkB,GAAG,gBAAgB,CAAC,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;QACjG,OAAO,kBAAkB,CAAC,GAAG;;;;QAAC,OAAO,uBAAS,OAAO,IAAE,aAAa,EAAE,UAAU,IAAE,EAAC,CAAC;KACrF;;;;;;;;IAEO,OAAO,0BAA0B,CAAC,QAAmC,EAAE,MAA4B,EAAE,OAAyB;;cAE9H,eAAe,GAA+B;YAClD,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC,oBAAoB,IAAI,UAAU;YACjE,MAAM,EAAE,EAAE;SACX;;cACK,kBAAkB,GAA+B;YACrD,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC,uBAAuB,IAAI,aAAa;YACvE,MAAM,EAAE,EAAE;SACX;;cACK,cAAc,GAA+B;YACjD,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC,mBAAmB,IAAI,SAAS;YAC/D,MAAM,EAAE,EAAE;SACX;QAED,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;;kBACtB,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC;;kBAC3D,eAAe,GAA6B,IAAI,YAAY,CAAC;gBACjE,EAAE,EAAE,gBAAgB,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC;gBACvD,KAAK,EAAE,UAAU;gBACjB,WAAW,EAAE,MAAM;aACpB,CAAC;YACF,eAAe,CAAC,WAAW,GAAG,eAAe,CAAC,EAAE,KAAK,2BAA2B,CAAC;YACjF,eAAe,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;YAC5C,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE;gBACpC,eAAe,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;aAC3C;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;gBACvC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aAC7C;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;gBACxC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aAC9C;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;gBAC3C,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE;oBACnC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC;iBAC/B;gBACD,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aACjD;SACF;QACD,OAAO,CAAC,eAAe,EAAE,cAAc,EAAE,kBAAkB,CAAC,CAAC,MAAM;;;;QAAC,OAAO,IACzE,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,EACnD,CAAC;KACH;;;;;;;IAEO,OAAO,kBAAkB,CAAC,OAAe,EAAE,MAA4B;QAC7E,OAAO,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;KACzC;;;;;;IAEO,OAAO,yBAAyB,CAAC,UAAqB;;cACtD,OAAO,GAAG,IAAI,4BAA4B,EAAE;QAClD,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAChC,OAAO,CAAC,eAAe,GAAG,EAAE,CAAC;QAC7B,OAAO,CAAC,sBAAsB,GAAG,KAAK,CAAC;QACvC,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;QAChC,OAAO,OAAO,CAAC;KAChB;;;;;;;;;;IAEO,OAAO,0BAA0B,CAAC,YAAyC,EAAE,aAAqB,EAAE,KAAa,EAC/E,OAA6B,EAAE,OAAyB;;cAE1F,YAAY,GAAG;YACnB,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,YAAY;YACrB,QAAQ,EAAE,aAAa;YACvB,QAAQ,EAAE,aAAa;YACvB,IAAI,EAAE,oBAAoB;YAC1B,QAAQ,EAAE,aAAa;YACvB,OAAO,EAAE,YAAY;SACtB;QACD,OAAO,YAAY;aAChB,MAAM;;;;QAAC,KAAK;YACX,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SACjC,EAAC;aACD,GAAG;;;;QAAC,KAAK;;kBACF,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;;kBACrC,MAAM,GAAG;;;YAAC;gBACd,QAAQ,UAAU;oBAChB,KAAK,YAAY;;8BACT,WAAW,sBAAG;4BAClB,WAAW,EAAE,KAAK,CAAC,WAAW;4BAC9B,EAAE,EAAE,KAAK,CAAC,EAAE;4BACZ,QAAQ,EAAE,KAAK,CAAC,QAAQ;4BACxB,IAAI,EAAE,KAAK,CAAC,IAAI;4BAChB,KAAK,EAAE,KAAK,CAAC,KAAK;4BAClB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;4BACxC,MAAM,EAAE,KAAK,CAAC,MAAM;4BACpB,KAAK,EAAE,KAAK;yBACb,EAAuB;wBACxB,OAAO,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;oBACvC,KAAK,oBAAoB;;8BACjB,WAAW,sBAAG,KAAK,EAA+B;wBACxD,WAAW,CAAC,SAAS,GAAG,aAAa,CAAC;wBACtC,OAAO,IAAI,oBAAoB,CAAC,WAAW,CAAC,CAAC;oBAC/C;wBACE,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;iBAChC;aACF,IAAG;YACJ,MAAM,CAAC,EAAE,GAAG,gBAAgB,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC3D,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE;gBACnC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,gBAAgB,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;aAChE;YACD,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,uBAAuB,GAAG,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;YAC5E,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YACxE,IAAI,OAAO,EAAE;;sBACL,EAAE,GAAG,OAAO,CAAC,IAAI;;;;gBAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,EAAE,EAAC;gBACpD,IAAI,EAAE,EAAE;oBACN,IAAI;wBACF,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;qBACtC;oBAAC,OAAO,KAAK,EAAE;wBACd,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC;qBAC1B;iBACF;aACF;YACD,OAAO,MAAM,CAAA;SACd,EAAC,CAAC;KACN;;;;;;;;;IAKO,OAAO,mBAAmB,CAAC,OAAe;;cAC1C,EAAE,GAAG,IAAI,EAAE;QACjB,OAAO,GAAG,EAAE,IAAI,OAAO,EAAE,CAAC;KAC3B;;;;;;IAEO,OAAO,mBAAmB,CAAC,OAAe;QAChD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;KACjD;;;;;;IAEO,OAAO,YAAY,CAAC,SAAsB;QAChD,QAAQ,SAAS;YACf,KAAK,SAAS;gBACZ,OAAO,SAAS,CAAC,IAAI,CAAC;YACxB,KAAK,UAAU;gBACb,OAAO,SAAS,CAAC,QAAQ,CAAC;YAC5B,KAAK,UAAU;gBACb,OAAO,SAAS,CAAC,QAAQ,CAAC;YAC5B,KAAK,UAAU;gBACb,OAAO,SAAS,CAAC,QAAQ,CAAC;YAC5B,KAAK,MAAM;gBACT,OAAO,SAAS,CAAC,IAAI,CAAC;YACxB,KAAK,SAAS;gBACZ,OAAO,SAAS,CAAC,OAAO,CAAC;YAC3B;gBACE,OAAO,SAAS,CAAC,aAAa,CAAC;SAClC;KACF;;;;;;IAEO,OAAO,2BAA2B,CAAC,SAAyB;QAClE,OAAO,IAAI,KAAK,CAAC;YACf,OAAO,EAAE,gBAAgB,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3D,SAAS,EAAE,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC;YAC/D,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,WAAW,EAAE,SAAS,CAAC,WAAW,IAAI,EAAE;YACxC,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,EAAE;YAC9B,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,EAAE;YAC9B,cAAc,EAAE,SAAS,CAAC,cAAc,IAAI,EAAE;YAC9C,iBAAiB,EAAE,SAAS,CAAC,iBAAiB,IAAI,EAAE;YACpD,MAAM,EAAE,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,MAAM;SACnE,CAAC,CAAC;KACJ;;;;;;IAEO,OAAO,8BAA8B,CAAC,aAA0C;;cAChF,kBAAkB,GAAG,IAAI,WAAW,EAAE;QAC5C,kBAAkB,CAAC,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC;QACvD,kBAAkB,CAAC,MAAM,GAAG,aAAa,CAAC,cAAc;cACpD,aAAa,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG;;;;YAAC,KAAK,IAAI,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAC;cACzF,EAAE,CAAC;;cACD,qBAAqB,GAAG,aAAa,CAAC,WAAW,CAAC,GAAG;;;;QAAC,UAAU;;kBAC9D,WAAW,GAAG,IAAI,WAAW,EAAE;YACrC,IAAI,UAAU,CAAC,OAAO,EAAE;gBACtB,WAAW,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC;oBAClC,KAAK,EAAE,UAAU,CAAC,SAAS;oBAC3B,OAAO,EAAE,UAAU,CAAC,OAAO;iBAC5B,CAAC,CAAC;aACJ;iBAAM;gBACL,WAAW,CAAC,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC;aACjD;YACD,WAAW,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG;;;;YAAC,KAAK,IAAI,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAC,CAAC;YAC7F,OAAO,WAAW,CAAC;SACpB,EAAC;QACF,OAAO,EAAE,CAAC,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC;KAC7D;;;;;;;;IAEM,OAAO,qBAAqB,CAAC,UAAgC,EAAE,UAA0B,EAAE,MAA4B,EAC1F,OAAyB;;cAErD,QAAQ,GAAG,gBAAgB,CAAC,mBAAmB,CAAC,UAAU,CAAC;QACjE,OAAO,gBAAgB,CAAC,sBAAsB,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;KACvF;;;;;;;;;;;IAEM,OAAO,qBAAqB,CAAC,UAAgC,EAAE,QAAgC,EAAE,UAAqB,EACvG,aAAqB,EAAE,KAAa,EAAE,OAA8B,EAAE,OAAyB;;cAE7G,YAAY,GAAG,QAAQ,CAAC,GAAG;;;;QAAC,OAAO;;kBACjC,WAAW,GAAmC,EAAE;YACtD,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,EAAE,GAAG;;;;YAAC,KAAK;;sBAC3B,eAAe,GAAG,UAAU,CAAC,MAAM;;;;gBAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,EAAC;;sBACrE,YAAY,GAA0B,CAAC,OAAO,IAAI,EAAE,EAAE,MAAM;;;;gBAAC,CAAC,IAAI,CAAC,CAAC,QAAQ;oBAChF,CAAC,CAAC,QAAQ,CAAC,KAAK,KAAK,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,EAAC;gBACtH,eAAe,CAAC,GAAG;;;;;gBAAC,CAAC,cAAc,EAAE,KAAK;oBACxC,IAAI,cAAc,IAAI,cAAc,CAAC,YAAY,IAAI,cAAc,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;;8BACrF,YAAY,GAAG,gBAAgB,CAAC,yBAAyB,CAAC,UAAU,CAAC;;8BACrE,oCAAoC,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,KAAK,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,mBAAmB,GAAG,EAAE;;8BACnH,UAAU,GAAG,gBAAgB,CAAC,0BAA0B,CAAC,cAAc,CAAC,YAAY,EAAE,aAAa,EAAE,KAAK,EAC9G,oCAAoC,EAAE,OAAO,CAAC;wBAChD,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC;wBAC/B,YAAY,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;wBACpC,YAAY,CAAC,MAAM,GAAG,UAAU,CAAC;wBACjC,YAAY,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;wBAC3C,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;wBACrC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;qBAChC;iBACF,EAAC,CAAC;aACJ,EAAC,CAAC;;kBAEG,eAAe,GAAG,UAAU,CAAC,MAAM;;;;;YAAC,CAAC,eAAe,EAAE,CAAC;gBAC3D,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE;oBAC/C,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBACzB;gBACD,OAAO,eAAe,CAAC;aACxB,GAAE,EAAE,CAAC;kBACA,CAAC,YAAY,EAAE,GAAG,yBAAyB,CAAC,GAAG,eAAe;;kBAE9D,mBAAmB,GAAG,YAAY,IAAI,YAAY,CAAC,YAAY,IAAI,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;YAC7G,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,mBAAmB,EAAE;;sBAC3C,WAAW,GAAG,IAAI,2BAA2B,EAAE;gBACrD,WAAW,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;gBAC1C,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC;gBACpC,WAAW,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;gBACrC,WAAW,CAAC,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;gBAC3C,WAAW,CAAC,eAAe,GAAG,EAAE,CAAC;gBACjC,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;gBAEnC,IAAI,mBAAmB,EAAE;;0BACjB,OAAO,GAAG,gBAAgB,CAAC,yBAAyB,CAAC,UAAU,CAAC;oBACtE,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;;wBAC7B,cAAc,GAA0B,EAAE;oBAC9C,IAAI,OAAO,EAAE;wBACX,cAAc,GAAG,OAAO,CAAC,MAAM;;;;wBAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,EAAC,CAAC;qBACxF;0BACK,CAAE,mBAAmB,EAAE,GAAG,mBAAmB,CAAC,GAAG,cAAc;oBACrE,OAAO,CAAC,MAAM,GAAG,gBAAgB,CAAC,0BAA0B,CAAC,YAAY,CAAC,YAAY,EAAE,aAAa,EAAE,KAAK,EAC1G,mBAAmB,GAAG,mBAAmB,CAAC,mBAAmB,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;oBAC/E,WAAW,CAAC,cAAc,GAAG,OAAO,CAAC;oBAErC,yBAAyB,CAAC,OAAO;;;;;oBAAC,CAAC,CAAC,EAAE,KAAK;;;;;;8BAKnC,WAAW,qBAAQ,OAAO,CAAE;;8BAC5B,sBAAsB,GAAG,CAAC,mBAAmB,CAAC,MAAM,GAAG,KAAK,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC,mBAAmB,GAAG,EAAE;wBACzH,WAAW,CAAC,MAAM,GAAG,gBAAgB,CAAC,0BAA0B,CAAC,YAAY,CAAC,YAAY,EAAE,aAAa,EAAE,KAAK,EAC9G,sBAAsB,EAAE,OAAO,CAAC,CAAC;wBAEnC,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;qBAClC,EAAC,CAAC;iBACJ;gBAED,WAAW,CAAC,WAAW,GAAG,WAAW,CAAC;gBACtC,OAAO,WAAW,CAAC;aACpB;YACD,OAAO,IAAI,CAAC;SACb,EAAC,CAAC,MAAM;;;;QAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC;QACnB,OAAO,YAAY,CAAC;KACrB;;;;;;;;;;IAEM,OAAO,qBAAqB,CAAC,WAAwC,EAAE,UAAqB,EAAE,aAAqB,EAAE,KAAa,EACnH,OAA6B,EAAE,OAAyB;QAC5E,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1C,OAAO,IAAI,CAAA;SACZ;;cACK,OAAO,GAAG,gBAAgB,CAAC,yBAAyB,CAAC,UAAU,CAAC;QACtE,OAAO,CAAC,MAAM,GAAG,gBAAgB,CAAC,0BAA0B,CAAC,WAAW,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAClH,OAAO,OAAO,CAAA;KACf;;;;;IAEM,OAAO,mBAAmB,CAAC,kBAAiD;;cAC3E,cAAc,GAAG,kBAAkB,CAAC,MAAM;;;;;QAAC,CAAC,GAAG,EAAE,aAAa;YAClE,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,8BAA8B,CAAC,aAAa,CAAC,CAAC,CAAC;YACjF,OAAO,GAAG,CAAC;SACZ,GAAE,EAAE,CAAC;QACN,OAAO,cAAc,CAAC;KACvB;;;;;IAEM,OAAO,mBAAmB,CAAC,kBAAgD;;YAC5E,YAAY,GAAkB,EAAE;QACpC,IAAI,kBAAkB,EAAE;YACtB,YAAY,GAAG,kBAAkB,CAAC,MAAM;;;;;YAAC,CAAC,GAAG,EAAE,KAAK;;sBAC5C,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG;;;;gBAAC,WAAW;;0BACnC,KAAK,GAAG,gBAAgB,CAAC,2BAA2B,CAAC,WAAW,CAAC;oBACvE,IAAI,KAAK,CAAC,OAAO,EAAE;wBACjB,OAAO,IAAI,WAAW,CAAC;4BACrB,KAAK,EAAE,KAAK;4BACZ,UAAU,EAAE,WAAW,CAAC,UAAU;4BAClC,SAAS,EAAE,WAAW,CAAC,SAAS;yBACjC,CAAC,CAAC;qBACJ;iBACF,EAAC;gBACF,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aAC3B,GAAE,EAAE,CAAC,CAAA;SACP;QACD,OAAO,YAAY,CAAC;KACrB;;;;;IAEM,OAAO,kBAAkB,CAAC,kBAA2C;;YACtE,eAAe,GAAY,EAAE;QACjC,IAAI,CAAC,CAAC,kBAAkB,EAAE;YACxB,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,GAAG;;;;YAAC,KAAK,IAAI,gBAAgB,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAC,CAAC;SAC/G;QACD,OAAO,eAAe,CAAC;KACxB;;AA5WM,oCAAmB,GAAG;IAC3B,aAAa,EAAE,cAAc;IAC7B,cAAc,EAAE,eAAe;IAC/B,oBAAoB,EAAE,sBAAsB;IAC5C,wBAAwB,EAAE,2BAA2B;IACrD,cAAc,EAAE,eAAe;IAC/B,iBAAiB,EAAE,kBAAkB;IACrC,qBAAqB,EAAE,uBAAuB;IAC9C,iBAAiB,EAAE,kBAAkB;IACrC,iBAAiB,EAAE,kBAAkB;IACrC,kBAAkB,EAAE,mBAAmB;IACvC,wBAAwB,EAAE,0BAA0B;CACrD,CAAC;;YAdH,UAAU;;;;;;IAET,qCAYE;;;;;;;AC7CJ,MAwBa,kBAAkB;;;;IAoB7B,YAAoB,gBAAkC;QAAlC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAHtD,mBAAc,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;QACrD,kBAAa,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;QAGjD,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;KACzD;;;;IAED,QAAQ;;cACA,OAAO,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC;QAEjE,IAAI,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACzH,IAAI,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,EACjH,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;;QAEzD,IAAI,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,EACpH,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;KAEjD;;;;;IAKM,iBAAiB;QACtB,OAAO,gBAAgB,CAAC,mBAAmB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;KACtE;;;;;IAKM,iBAAiB;QACtB,OAAO,gBAAgB,CAAC,mBAAmB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;KACtE;;;;;IAKM,kBAAkB;QACvB,OAAO,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;KACrE;;;;;;IAKM,cAAc,CAAC,QAAiB;QACrC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC1C,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;KACjE;;;;IAEM,YAAY;QACjB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAChC;;;YAzEF,SAAS,SAAC;gBAET,8mDAAwC;gBACxC,SAAS,EAAE,EAAE;gBACb,QAAQ,EAAE,eAAe;;aAC1B;;;;YATQ,gBAAgB;;;yBAWtB,KAAK;sBACL,KAAK;yBACL,KAAK;4BACL,KAAK;yBACL,KAAK;0BACL,KAAK;qBACL,KAAK;oBACL,KAAK;0BACL,KAAK;iCACL,KAAK;+BACL,KAAK;;;;IAVN,wCAAoC;;IACpC,qCAAwC;;IACxC,wCAA+B;;IAC/B,2CAA+B;;IAC/B,wCAA0C;;IAC1C,yCAA6C;;IAC7C,oCAAsC;;IACtC,mCAAuB;;IACvB,yCAAkD;;IAClD,gDAAkD;;IAClD,8CAAqD;;IAErD,gDAAiD;;IACjD,gDAAkD;;IAClD,gDAA4C;;IAE5C,4CAAqD;;IACrD,2CAAmD;;;;;IAEvC,8CAA0C;;AAkDxD,MAAa,gBAAgB;;;;IAK3B,YAAY,CAA4B;QACtC,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC;QAC3D,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC7B,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC;KAC1D;CAEF;;;IAVC,mDAAiC;;IACjC,oCAAkB;;IAClB,kDAAgC;;;;;;;;AC/FlC,MAAa,KAAK,GAAG,MAAM;;AAC3B,MAAa,SAAS,GAAG,UAAU;;AACnC,MAAa,SAAS,GAAG,UAAU;;AACnC,MAAa,SAAS,GAAG,UAAU;;AACnC,MAAa,QAAQ,GAAG,SAAS;;AACjC,MAAa,aAAa,GAAG,SAAS;;;;AAItC,+BAeC;;;IAbC,8BAAW;;IACX,iCAAc;;IACd,oCAAmB;;IACnB,uCAAqB;;IACrB,gCAAc;;IACd,kCAAgB;;IAChB,kCAAgB;;IAChB,0CAAwB;;IACxB,6CAA2B;;IAC3B,oCAAmB;;IACnB,4CAA2B;;IAC3B,kCAAiB;;IACjB,uCAAsB;;;;;;AAGxB,MAAsB,SAAS;;;;IAkB7B,YAAY,OAAyB;QACnC,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC;QAC/C,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,KAAK,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;QAClE,IAAI,CAAC,WAAW,sBAAG,OAAO,CAAC,IAAI,EAAe,CAAC;QAC/C,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;QACnD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACzC,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;QACnD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;KACxC;;;;IAED,QAAQ;;YACA,UAAU,GAAG,IAAI,CAAC,KAAK;QAC3B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,UAAU,IAAI,IAAI,CAAC;SACtB;QACD,OAAO,UAAU,CAAC;KACrB;;;;;IAES,gBAAgB;QACxB;;;;QAAO,CAAC,OAAwB;YAC9B,OAAO,IAAI,CAAA;SACZ,EAAA;KACF;CACF;;;IAhDC,0BAAS;;IACT,uBAAW;;IACX,0BAAc;;IACd,6BAAkB;;IAClB,0BAAc;;IACd,gCAAoB;;IACpB,gCAAyB;;IACzB,2BAAe;;IACf,2BAAe;;IACf,mCAAuB;;IACvB,sCAA0B;;IAC1B,6BAAkB;;IAClB,8BAAuB;;IACvB,qCAA0B;;IAC1B,2BAAgB;;IAChB,gCAAqB;;;;;;;AC5CvB,MAWa,qBAAqB;IANlC;QASY,gBAAW,GAAyB,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;KAqHtE;;;;;;IAhHC,OAAO,oBAAoB,CAAC,MAAqC,EAAE,QAAiB;QAClF,OAAO,IAAI,SAAS,CAAC;YACnB,KAAK,EAAE,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;YAC3F,KAAK,EAAE,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC;YACpC,QAAQ,EAAE,IAAI,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC1C,CAAC,CAAC;KACJ;;;;;IAED,OAAO,qBAAqB,CAAC,OAAwC;QACnE,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE;YAC7C,OAAO,GAAG,EAAE,CAAC;SACd;;cACK,yBAAyB,GAC7B,OAAO,CAAC,GAAG;;;;QAAC,MAAM,IAAI,qBAAqB,CAAC,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,EAAC;QAClF,OAAO,IAAI,SAAS,CAAC,yBAAyB,CAAC,CAAC;KACjD;;;;;IAED,OAAO,yBAAyB,CAAC,cAAuC;;cAChE,mBAAmB,GAAG,IAAI,SAAS,CAAC;YACxC,kBAAkB,EAAE,IAAI,WAAW,CAAC,cAAc,CAAC,WAAW,EAAE,EAAE,CAAC;YACnE,YAAY,EAAE,IAAI,WAAW,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC1E,SAAS,EAAE,IAAI,WAAW,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACpE,eAAe,EAAE,IAAI,WAAW,CAAC,cAAc,CAAC,QAAQ,IAAI,KAAK,EAAE,EAAE,CAAC;YACtE,gBAAgB,EAAE,IAAI,WAAW,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,CAAC;YAC/D,aAAa,EAAE,IAAI,WAAW,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;YACzD,aAAa,EAAE,IAAI,WAAW,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;YACzD,qBAAqB,EAAE,IAAI,WAAW,CAAC,cAAc,CAAC,cAAc,EAAE,cAAc,EAAE,CAAC;YACvF,wBAAwB,EAAE,IAAI,WAAW,CAAC,cAAc,CAAC,iBAAiB,EAAE,EAAE,CAAC;YAC/E,WAAW,EAAE,IAAI,WAAW,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC3F,cAAc,EAAE,IAAI,WAAW,CAAC,cAAc,CAAC,cAAc,IAAI,KAAK,EAAE,EAAE,CAAC;YAC3E,eAAe,EAAE,IAAI,WAAW,CAAC,cAAc,CAAC,eAAe,IAAI,KAAK,EAAE,EAAE,CAAC;YAC7E,UAAU,EAAE,IAAI,WAAW,CAAC,cAAc,CAAC,UAAU,GAAG,cAAc,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC;YAC9H,gBAAgB,EAAG,IAAI,WAAW,CAAC,cAAc,CAAC,gBAAgB,IAAI,KAAK,EAAE,EAAE,CAAC;SACjF,CAAC;QACF,IAAI,cAAc,CAAC,iBAAiB,EAAE;;kBAC9B,YAAY,GAAG,qBAAqB,CAAC,qBAAqB,CAAC,cAAc,CAAC,iBAAiB,CAAC;YAClG,mBAAmB,CAAC,UAAU,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;SAClE;aAAM,IAAI,cAAc,CAAC,OAAO,EAAE;;kBAC3B,YAAY,GAAG,qBAAqB,CAAC,qBAAqB,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG;;;;YAAC,MAAM,KAAK,EAAC,KAAK,EAAE,MAAM,EAAC,CAAC,EAAC,CAAC;YACzH,mBAAmB,CAAC,UAAU,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;SAClE;aAAM;YACL,mBAAmB,CAAC,UAAU,CAAC,kBAAkB,EAAE,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;SACvE;QAED,OAAO,mBAAmB,CAAC;KAC5B;;;;IAED,QAAQ;QACN,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE;YACpE,IAAI,CAAC,mBAAmB,GAAG,WAAW,CAAC;SACxC;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC;KACjB;;;;IAED,QAAQ;;QAEN,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE;YACjD,IAAI,CAAC,mBAAmB;gBACpB,qBAAqB,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC;SACzD;KACF;;;;IAED,eAAe;QACb,0BAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAc;KACtE;;;;IAED,wBAAwB;;cAChB,sBAAsB,uBACvB,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,KAAK,GAAuB;QAC7E,OAAO,sBAAsB,GAAG,sBAAsB,CAAC,EAAE,GAAG,IAAI,CAAC;KAClE;;;;;IAED,YAAY,CAAC,KAAa;;cAClB,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE;QACxC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KAC3B;;;;IAED,SAAS;;cACD,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE;QACzC,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,EAAC,KAAK,EAAE,EAAE,EAAC,EAAE,IAAI,CAAC,CAAC,CAAC;KAChF;;;;IAED,aAAa;;cACL,GAAG,GAA4B,EAAE;QACvC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC;QAC/D,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC;;cAEnD,aAAa,uBACd,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,KAAK,GAC9B;QACxB,GAAG,CAAC,IAAI,GAAG,aAAa,GAAG,aAAa,CAAC,EAAE,GAAG,IAAI,CAAC;;;cAG7C,YAAY,uBAAI,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAc;QACpF,IAAI,YAAY,IAAI,YAAY,CAAC,KAAK,EAAE;YACtC,GAAG,CAAC,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG;;;;YAAC,MAAM,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAC,CAAC;YAC7E,GAAG,CAAC,iBAAiB,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG;;;;YAAC,MAAM,KAAK,EAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAC,CAAC,EAAC,CAAC;SACxG;QAED,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAC;QAC3E,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC;QAC9E,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,KAAK,CAAC;QACvE,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC;QACjE,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC;QACjE,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,KAAK,CAAC;QACjF,GAAG,CAAC,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,KAAK,CAAC;QACvF,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC;QACnF,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC;QACrF,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QACvE,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC;QACvF,OAAO,GAAG,CAAC;KACZ;;;YA7HF,SAAS,SAAC;gBACT,QAAQ,EAAE,kBAAkB;gBAC5B,i5MAA6C;gBAE7C,eAAe,EAAE,uBAAuB,CAAC,MAAM;;aAChD;;;kCAEE,KAAK;kCACL,KAAK;0BACL,MAAM;;;;IAFP,oDAAwC;;IACxC,oDAAmD;;IACnD,4CAAqE;;IAErE,+CAAwB;;IACxB,6CAAsB;;;;;;AAqHxB,SAAgB,cAAc;IAC5B;;;;IAAO,CAAC,OAAwB;QAC9B,IAAI;;kBACI,CAAC,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;SAC1C;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC;SACxB;QACD,OAAO,IAAI,CAAC;KACb,EAAC;CACH;;;;AAED,SAAgB,eAAe;IAC7B;;;;IAAO,CAAC,OAAwB;;cACxB,QAAQ,GAAG,OAAO;QACxB,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAChC,OAAO,IAAI,CAAA;SACZ;QACD,OAAO,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;KACzB,EAAC;CACH;;;;AAED,iCAGC;;;IAFC,gCAAgB;;IAChB,kCAAa;;;AAGf,MAAa,WAAW,GAAyB;IAC/C,EAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAC,EAAE,EAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAC;IAC9D,EAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAC,EAAE,EAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAC;IACtE,EAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAC,EAAE,EAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAC;CACxE;;;;;AAED,SAAgB,iBAAiB,CAAC,WAAmB;IACnD,OAAO,2BAA2B,qBAAE,WAAW,IAAiB,CAAC;CAClE;;;;;AAED,SAAgB,2BAA2B,CAAC,EAAe;IACzD,OAAO,WAAW,CAAC,IAAI;;;;IAAC,CAAC,GAAuB,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,EAAC,CAAC;CACrE;;;;;;AC1KD,MAAa,oBAAoB;;;;;IAC7B,OAAO,eAAe,CAAC,KAA8B;QACjD,IAAI,CAAC,KAAK,EAAE;YACR,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC;SACzD;;YACG,wBAAwB,GAAG,KAAK;;cAC9B,YAAY,GAAG,KAAK,CAAC,MAAM;;;;;QAAC,CAAC,YAAY,EAAE,IAAI;YACjD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;gBACjC,wBAAwB,GAAG,IAAI,CAAC;gBAChC,OAAO,YAAY,CAAC;aACvB;YAED,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG;;;;YAAC,KAAK;gBAC3B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE;oBAC7B,wBAAwB,GAAG,IAAI,CAAC;oBAChC,OAAO;iBACR;;sBAEK,IAAI,GAAG,KAAK,CAAC,gBAAgB;;sBAC7B,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ;;sBAE3B,gBAAgB,GAAG,YAAY,CAAC,SAAS;;;;gBAAC,WAAW,IAAI,WAAW,CAAC,QAAQ,KAAK,GAAG,EAAC;;oBACxF,OAAO,GAAY;oBACnB,QAAQ,EAAE,GAAG;oBACb,MAAM,EAAE,EAAE;iBACb;gBACD,IAAI,gBAAgB,GAAG,CAAC,CAAC,EAAE;oBACvB,OAAO,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAC;iBAC5C;;sBAEK,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS;;;;gBAC9C,WAAW,IAAI,WAAW,CAAC,gBAAgB,KAAK,IAAI,EACvD;;sBACK,eAAe,GAAG,KAAK,CAAC,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI;;sBAC3E,kBAAkB,GAAG,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ;gBACtE,IAAI,iBAAiB,GAAG,CAAC,CAAC,EAAE;oBACxB,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,GAAG;wBAChC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,KAAK,GAAG,eAAe;wBAChE,gBAAgB,EAAE,IAAI;wBACtB,cAAc,EACV,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,cAAc,GAAG,kBAAkB;qBAC5E,CAAC;iBACL;qBAAM;oBACH,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;wBAChB,KAAK,EAAE,eAAe;wBACtB,gBAAgB,EAAE,IAAI;wBACtB,cAAc,EAAE,kBAAkB;qBACrC,CAAC,CAAC;iBACN;gBACD,IAAI,gBAAgB,GAAG,CAAC,CAAC,EAAE;oBACvB,YAAY,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC;iBAC5C;qBAAM;oBACH,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBAC9B;aACF,EAAC,CAAC;YACH,OAAO,YAAY,CAAC;SACvB,GAAE,EAAE,CAAC;QACN,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,CAAC;KACtF;CACJ;;;;;;AC7DD,MAgBa,sBAAsB;;;;IAgB/B,YACU,gBAAkC;QAAlC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAd5C,6BAAwB,GAAG,KAAK,CAAC;QAe/B,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;KACzD;;;;;IAXD,IACI,UAAU,CAAC,KAA8B;QACzC,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC;;cACnB,OAAO,GAAG,oBAAoB,CAAC,eAAe,CAAC,KAAK,CAAC;QAC3D,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;QAClC,IAAI,CAAC,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,CAAC;KACpE;;;;;IAOM,mBAAmB,CAAC,KAAkB;QAC3C,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE;YACxB,OAAO,IAAI,CAAC;SACb;;cAEK,UAAU,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,cAAc;QAErD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,OAAO,UAAU,CAAC;SACnB;;cAEK,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM;;;;;QACrC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC,GACjD,CAAC,CACF;QAED,OAAO,UAAU,GAAG,QAAQ,CAAC;KAC9B;;;;;IAEM,aAAa,CAAC,GAAc;;cAC3B,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAE7D,OAAO,GAAG,GAAG,CAAC,KAAK,KAAK,aAAa,IAAI,CAAC;KAC3C;;;;IAEM,MAAM;;cACL,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM;;;;;QAC3C,CAAC,GAAG,EAAE,IAAI;;kBACF,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;;;;;YAAC,CAAC,GAAG,EAAE,KAAK,KAAK,GAAG,GAAG,KAAK,CAAC,KAAK,GAAE,CAAC,CAAC;YAE5E,OAAO,GAAG,GAAG,WAAW,CAAC;SAC1B,GACD,CAAC,CAAC;QAEJ,OAAO,YAAY,KAAK,CAAC,CAAC;KAC3B;;;YA7DJ,SAAS,SAAC;gBACP,QAAQ,EAAE,oBAAoB;gBAC9B,+4KAA+C;;aAElD;;;;YANQ,gBAAgB;;;yBAYpB,KAAK;0BACL,KAAK;yBAEL,KAAK;;;;IAPN,uCAA+B;;IAC/B,8CAAwB;;IACxB,0DAAiC;;IAEjC,4CAAiC;;IACjC,6CAA8B;;;;;IAW5B,kDAA0C;;;;;;;ACjChD,MAIa,SAAS;;;;;;;;;;IAClB,SAAS,CACL,KAAU,EACV,QAAkB,EAClB,gBAAmC,EACnC,UAAmB,IAAI,EACvB,gBAAyB,IAAI,EAC7B,gBAAyB,IAAI;QAE7B,OAAO,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;KACvG;;;YAXJ,IAAI,SAAC,EAAE,IAAI,EAAE,OAAO,EAAE;;AAevB,MAAa,0BAA0B;;;;;IACnC,SAAS,CAAC,KAAa;QACnB,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAC;KACxC;;;YAJJ,IAAI,SAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE;;;;;;;ACjBxC,MAyEa,iBAAiB;;;YA/C7B,QAAQ,SAAC;gBACR,OAAO,EAAE;oBACP,YAAY;oBACZ,WAAW;oBACX,eAAe;oBACf,iBAAiB;oBACjB,kBAAkB;oBAClB,aAAa;oBACb,cAAc;oBACd,eAAe;oBACf,wBAAwB;oBACxB,eAAe;oBACf,aAAa;oBACb,gBAAgB;oBAChB,mBAAmB;oBACnB,aAAa;oBACb,uBAAuB;oBACvB,YAAY;oBACZ,aAAa;oBACb,aAAa;oBACb,aAAa;oBACb,eAAe;iBAChB;gBACD,YAAY,EAAE;oBACZ,4BAA4B;oBAC5B,cAAc;oBACd,yBAAyB;oBACzB,kBAAkB;oBAClB,qBAAqB;oBACrB,sBAAsB;oBACtB,SAAS;oBACT,0BAA0B;iBAC3B;gBACD,OAAO,EAAE;oBACP,4BAA4B;oBAC5B,cAAc;oBACd,yBAAyB;oBACzB,kBAAkB;oBAClB,qBAAqB;oBACrB,sBAAsB;iBACvB;gBACD,SAAS,EAAE;oBACT,YAAY;oBACZ,gBAAgB;oBAChB,oBAAoB;iBACrB;aACF;;;;;;;ACxED,MAIa,YAAY;;;;;IAEvB,kBAAkB,CAAC,SAAoB;QACrC,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,QAAQ,EAAE;YACpC,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,SAAS,EAAE;gBAChD,IAAI,CAAC,kBAAkB,oBAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAc,CAAC;aAC/D;iBAAM;gBACL,oBAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAiB,aAAa,EAAE,CAAC;gBACzD,oBAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAiB,sBAAsB,EAAE,CAAC;aACnE;SACF;KACF;;;YAZF,UAAU;;;;;;;ACHX,MAAa,IAAI;;;;IAEb,YAAmB,GAAW;QAAX,QAAG,GAAH,GAAG,CAAQ;QAC1B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;KAClB;;;;IAED,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;KACzG;;;;IAED,IAAI,IAAI;;cACE,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI;QAC/E,QAAQ,GAAG;YACP,KAAK,KAAK;gBACN,OAAO,UAAU,CAAC;YACtB,KAAK,KAAK;gBACN,OAAO,UAAU,CAAC;YACtB;gBACI,OAAO,WAAW,CAAC;SAC1B;KACJ;CACJ;;;IAnBe,mBAAkB;;;;;;;;;;ACFlC,sBAGC;;;IAFG,2BAAiB;;IACjB,yBAAgB;;;;;AAGpB,oBAIC;;;IAHG,sBAAc;;IACd,0BAAkB;;IAClB,gCAA0B;;;AAG9B,MAAa,aAAa,GAAG,CAAC,CAAC;;;;;;ACX/B,MAEa,QAAQ;;;;IAGjB,IAAI,MAAM;QACL,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI;;;;QAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAC,GAAG,KAAK,CAAC;KAC/H;;;;IAED,IAAI,kBAAkB;QAClB,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM;YACtC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI;;;;YAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,aAAa,EAAC;gBAC5E,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC;KAC/C;;;;;IAED,OAAO,wBAAwB,CAAC,WAAmB;QAC/C,OAAO,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;KAC1F;;;;IAED,IAAI,oBAAoB;QACpB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;;kBAC7D,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,KAAK;;kBACjF,WAAW,GAAG,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,EAAE;;kBACjE,cAAc,GAAG,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YAExE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG;;;;YAAC,KAAK;;sBAC1B,YAAY,GAAG,KAAK,CAAC,SAAS,GAAG,IAAI,GAAG,QAAQ,CAAC,wBAAwB,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;;sBAC/F,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;;sBACtD,gBAAgB,GAAG,KAAK,CAAC,eAAe,GAAG,cAAc,GAAG,EAAE;;sBAC9D,QAAQ,GAAG,GAAG,gBAAgB,GAAG,cAAc,GAAG,YAAY,IAAI,WAAW,IAAI,YAAY,EAAE;gBACrG,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;aACjD,EAAC,CAAC;SACN;aAAM;YACH,OAAO,CAAC,eAAe,CAAC,CAAC;SAC5B;KACJ;;;;IAED,IAAI,YAAY;QACZ,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACzB,OAAO,CAAC,eAAe,CAAC,CAAC;SAC5B;QAED,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,OAAO,CAAC,MAAM,CAAC,CAAC;SACnB;QAED,OAAO,IAAI,CAAC,oBAAoB,CAAC;KACpC;;;;IAED,IAAI,uBAAuB;QACvB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACxC;;;;;IAED,OAAO,iBAAiB,CAAC,QAAgB;;YACjC,cAAc,GAAG,GAAG;QACxB,QAAQ,QAAQ;YACZ,KAAK,KAAK;gBAAE,cAAc,GAAG,QAAQ,CAAC;gBAAC,MAAM;YAC7C,KAAK,KAAK;gBAAE,cAAc,GAAG,QAAQ,CAAC;gBAAC,MAAM;YAC7C,KAAK,KAAK;gBAAE,cAAc,GAAG,IAAI,CAAC;gBAAC,MAAM;YACzC,KAAK,KAAK;gBAAE,cAAc,GAAG,QAAQ,CAAC;gBAAC,MAAM;YAC7C,KAAK,KAAK;gBAAE,cAAc,GAAG,QAAQ,CAAC;gBAAC,MAAM;YAC7C,KAAK,KAAK;gBAAE,cAAc,GAAG,SAAS,CAAC;gBAAC,MAAM;YAC9C,KAAK,KAAK;gBAAE,cAAc,GAAG,QAAQ,CAAC;gBAAC,MAAM;YAC7C,KAAK,KAAK;gBAAE,cAAc,GAAG,QAAQ,CAAC;gBAAC,MAAM;YAC7C,KAAK,KAAK;gBAAE,cAAc,GAAG,QAAQ,CAAC;gBAAC,MAAM;YAC7C,KAAK,KAAK;gBAAE,cAAc,GAAG,IAAI,CAAC;gBAAC,MAAM;YACzC,KAAK,KAAK;gBAAE,cAAc,GAAG,IAAI,CAAC;gBAAC,MAAM;YACzC,KAAK,KAAK;gBAAE,cAAc,GAAG,QAAQ,CAAC;gBAAC,MAAM;YAC7C,KAAK,KAAK;gBAAE,cAAc,GAAG,QAAQ,CAAC;gBAAC,MAAM;YAC7C,KAAK,KAAK;gBAAE,cAAc,GAAG,GAAG,CAAC;gBAAC,MAAM;YACxC;gBAAS,cAAc,GAAG,GAAG,CAAC;gBAAC,MAAM;SACxC;QACD,OAAO,cAAc,CAAC;KACzB;CAEJ;;;IAxEG,2BAAiB;;;;;;;;ACFrB,MAAa,aAAa;;;;;IACxB,OAAO,gBAAgB,CAAC,KAAa;QACnC,OAAO,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO;;;;QAAE,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAC;aACrF,OAAO,CAAC,MAAM;;;;QAAE,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC;KACvE;;;;;IAED,OAAO,gBAAgB,CAAC,KAAa;;;cAE7B,UAAU,GAAG,4EAA4E;QAE/F,OAAO,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,mCAAmC;;;;;;QAAE,UAAU,KAAK,EAAE,KAAK,EAAE,KAAK;YAC7F,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;gBACpD,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG;iBAC/D,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC;gBAC/E,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBAC9C,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;aAC5B;YAED,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC5C,OAAO,KAAK,CAAC;aACd;YAED,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACxD,EAAC,GAAG,KAAK,CAAC;KACZ;;CACF;;;;;;AC1BD;MAOM,WAAW,GAAG;IAChB,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;IACtF,SAAS;CACZ;;MAEK,aAAa,GAAG,SAAS;AAE/B,MAAa,OAAQ,SAAQ,QAAQ;;;;IAkCjC,YAAY,IAAU;QACpB,KAAK,EAAE,CAAC;QAhBV,WAAM,GAAY,EAAE,CAAC;QAiBnB,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC9C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC9C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE;YACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG;;;;YAAC,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,EAAC,GAAG,IAAI,CAAC;SACvF;KACF;;;;;IAtCD,OAAO,OAAO,CAAC,IAAS;;cAChB,UAAU,GAAG,EAAE;QACrB,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAClB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;;sBACtB,MAAM,GAAG,aAAa,CAAC,gBAAgB,CAAC,GAAG,CAAC;gBAClD,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;aAChC;SACF;QACD,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;KAChC;;;;IA6BD,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,OAAO,GAAG,QAAQ,IAAI,CAAC,OAAO,iCAAiC,GAAG,IAAI,CAAC;KACtF;;;;IAED,IAAI,SAAS;;QAET,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACZ,OAAO,aAAa,CAAC;SACxB;;YAEG,OAAO,GAAG,CAAC;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACvC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SACzC;;cAEK,KAAK,GAAG,OAAO,GAAG,WAAW,CAAC,MAAM;QAC1C,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;KAC7B;;;;IAED,mBAAmB;;cACX,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,EAAE;QAC9C,OAAO,aAAa,CAAC,GAAG;;;;QAAC,WAAW,IAAI,aAAa,CAAC,gBAAgB,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,EAAC,CAAC;KACvH;CACJ;;;IApFG,4BAAkB;;IAClB,4BAAkB;;IAClB,8BAAoB;;IACpB,uBAAa;;IACb,8BAAoB;;IACpB,0BAAgB;;IAChB,0BAAgB;;IAChB,2BAAiB;;IACjB,iCAAyB;;IACzB,gCAAwB;;IACxB,gCAAwB;;IACxB,mCAA2B;;IAC3B,uBAAY;;IACZ,iCAAuB;;IACvB,2BAAiB;;IACjB,mCAAyB;;IACzB,4BAAkB;;IAClB,6BAAoB;;IACpB,yBAAqB;;IACrB,wBAAc;;IACd,+BAA2B;;AAkE/B,MAAa,iBAAkB,SAAQ,OAAO;;;;;IAM5C,OAAO,OAAO,CAAC,IAAS;;cAChB,UAAU,GAAG,EAAE;QACrB,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAClB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;;sBACtB,MAAM,GAAG,aAAa,CAAC,gBAAgB,CAAC,GAAG,CAAC;gBAClD,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;aAChC;SACF;QACD,OAAO,IAAI,iBAAiB,CAAC,UAAU,CAAC,CAAC;KAC1C;;;;IACD,YAAY,IAAU;QACpB,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,IAAI,KAAK,CAAC;KAC9D;CACF;;;IAvBC,qCAAiB;;IACjB,uCAAmB;;IACnB,0CAAsB;;IACtB,gDAA6B;;;;;;;ACzG/B,MAWa,qBAAqB;IALlC;QAUW,wBAAmB,GAAG,KAAK,CAAC;QAC5B,WAAM,GAAG,IAAI,CAAC;QACd,gBAAW,GAAG,IAAI,CAAC;QACnB,oBAAe,GAAG,KAAK,CAAC;QACxB,kBAAa,GAAG,KAAK,CAAC;QACrB,yBAAoB,GAAG,IAAI,YAAY,EAAE,CAAC;QAC1C,mBAAc,GAAG,IAAI,YAAY,EAAE,CAAC;KAwB/C;;;;IAtBC,sBAAsB;QACpB,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;KAClC;;;;IACD,gBAAgB;QACd,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;KAC5B;;;;;;IAED,UAAU,CAAC,OAAgB,EAAE,KAAY;QACvC,OAAO;YACL,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,MAAM,EAAE;gBACN;oBACE,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,SAAS,EAAE,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,GAAG,SAAS;iBACvE;aACF;SACF,CAAC;KACH;;;;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,QAAQ,GAAG,mBAAmB,GAAG,SAAS,CAAC;KACxD;;;YAvCF,SAAS,SAAC;gBACT,QAAQ,EAAE,eAAe;gBACzB,4qHAA2C;;aAE5C;;;sBAEE,KAAK;oBACL,KAAK;uBACL,KAAK;4BACL,KAAK;kCACL,KAAK;qBACL,KAAK;0BACL,KAAK;8BACL,KAAK;4BACL,KAAK;mCACL,MAAM;6BACN,MAAM;;;;IAVP,wCAA0B;;IAC1B,sCAAsB;;IACtB,yCAAwB;;IACxB,8CAAsC;;IACtC,oDAAqC;;IACrC,uCAAuB;;IACvB,4CAA4B;;IAC5B,gDAAiC;;IACjC,8CAA+B;;IAC/B,qDAAoD;;IACpD,+CAA8C;;;;;;;ACtBhD,MAaa,gBAAgB;;;YAV5B,SAAS,SAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE;;;;WAID;;aAEV;;;oBAGE,KAAK;;;;IAAN,iCAAuB;;;;;;;ACdzB,MAaa,aAAa;;;YARzB,QAAQ,SAAC;gBACR,OAAO,EAAE;oBACP,YAAY;oBACZ,aAAa;iBACd;gBACD,YAAY,EAAE,CAAC,gBAAgB,CAAC;gBAChC,OAAO,EAAE,CAAC,gBAAgB,CAAC;aAC5B;;;;;;;ACZD,MAgBa,eAAe;IAb5B;QAeE,aAAQ,GAAa,EAAE,CAAC;KAiBzB;;;;;IAfC,SAAS,CAAC,KAAa;QACrB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACrC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;SACvD;aAAM;YACL,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC3B;KACF;;;;;IAED,SAAS,CAAC,KAAa;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KAC1C;;;;;IAED,OAAO,CAAC,KAAa;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,mBAAmB,GAAG,qBAAqB,CAAC;KAC5E;;;YA/BF,SAAS,SAAC;gBACT,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE;;;;;;;WAOD;;aAEV;;;mBAGE,KAAK;;;;IAAN,+BAAqB;;IACrB,mCAAwB;;;;;;;AClB1B,MAWa,YAAY;;;YALxB,QAAQ,SAAC;gBACN,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,gBAAgB,CAAC;gBACxD,YAAY,EAAE,CAAC,eAAe,CAAC;gBAC/B,OAAO,EAAE,CAAC,eAAe,CAAC;aAC7B;;;;;;;ACVD,MAgBa,sBAAsB;;;;IAIjC,IAAI,iBAAiB;;cACb,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,qBAAqB,EAAE,gBAAgB,CAAC;QAC9E,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;;kBAC5E,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,yBAAyB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC/E;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;KACrB;;;YAzBF,SAAS,SAAC;gBACT,QAAQ,EAAE,iBAAiB;gBAC3B,QAAQ,EAAE;;;;;;;;KAQP;;aAEJ;;;0BAGE,KAAK;+BACL,KAAK;;;;IADN,6CAA6B;;IAC7B,kDAAoC;;;;;;;AClBtC,MAWa,mBAAmB;;;YAL/B,QAAQ,SAAC;gBACN,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,gBAAgB,CAAC;gBACxD,YAAY,EAAE,CAAC,sBAAsB,CAAC;gBACtC,OAAO,EAAE,CAAC,sBAAsB,CAAC;aACpC;;;;;;;ACVD,MAea,2BAA2B;;;YAbvC,SAAS,SAAC;gBACT,QAAQ,EAAE,qBAAqB;gBAC/B,QAAQ,EAAE;;;;;;;KAOP;;aAEJ;;;2BAGE,KAAK;;;;IAAN,mDAAiC;;;;;;;AChBnC,MAUa,kBAAkB;;;YAL9B,QAAQ,SAAC;gBACN,OAAO,EAAE,CAAC,YAAY,EAAE,gBAAgB,CAAC;gBACzC,YAAY,EAAE,CAAC,2BAA2B,CAAC;gBAC3C,OAAO,EAAE,CAAC,2BAA2B,CAAC;aACzC;;;;;;;ACTD,MAiCa,WAAW;;;YArBvB,QAAQ,SAAC;gBACR,OAAO,EAAE;oBACP,YAAY;oBACZ,YAAY;oBACZ,oBAAoB;oBACpB,YAAY;oBACZ,eAAe;oBACf,aAAa;oBACb,YAAY;oBACZ,mBAAmB;oBACnB,uBAAuB;oBACvB,gBAAgB;oBAChBA,0BAAwB;oBACxB,mBAAmB;oBACnB,kBAAkB;iBACnB;gBACD,OAAO,EAAE,CAAC,qBAAqB,CAAC;gBAChC,YAAY,EAAE,CAAC,qBAAqB,CAAC;gBACrC,SAAS,EAAE,EAAE;gBACb,eAAe,EAAE,EAAE;aACpB;;;;;;;AChCD,MA4Da,uBAAuB;;;YA1DnC,SAAS,SAAC;gBACT,QAAQ,EAAE,iBAAiB;gBAC3B,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDT;;aAEF;;;;;;;AC1DD,MAqBa,oBAAoB;;;YAnBhC,SAAS,SAAC;gBACT,QAAQ,EAAE,cAAc;gBACxB,QAAQ,EAAE;;;;;;;;;;;;;GAaT;;aAEF;;;;;;;ACnBD,MAuDa,wBAAwB;IArDrC;QAuDW,aAAQ,GAAG,CAAC,CAAC;QACtB,UAAK,GAAa,EAAE,CAAC;KAOtB;;;;IALC,QAAQ;QACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE;YACtC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACpB;KACF;;;YA9DF,SAAS,SAAC;gBACT,QAAQ,EAAE,mBAAmB;gBAC7B,QAAQ,EAAE;;;;;;GAMT;yBACQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCR;aACF;;;uBAIE,KAAK;;;;IAAN,4CAAsB;;IACtB,yCAAqB;;;;;;;AC1DvB,MAmCa,yBAAyB;;;YAjCrC,SAAS,SAAC;gBACT,QAAQ,EAAE,oBAAoB;gBAC9B,QAAQ,EAAE;;;;;;GAMT;yBACQ;;;;;;;;;;;;;;;;;;;;;GAqBR;aACF;;;;;;;ACjCD,MAqBa,oBAAoB;IAnBjC;QAqBW,eAAU,GAAG,IAAI,CAAC;QAClB,YAAO,GAAG,CAAC,CAAC;QACZ,cAAS,GAAG,MAAM,CAAC;;QACnB,gBAAW,GAAG,MAAM,CAAC;;QAE9B,SAAI,GAAa,EAAE,CAAC;KAkBrB;;;;IAfC,QAAQ;QACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;YACrC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACnB;;;;QAMD,IAAI,CAAC,iBAAiB,GAAG;YACvB,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE;YAC7B,SAAS,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE;SACnC,CAAA;KAEF;;;YA3CF,SAAS,SAAC;gBACT,QAAQ,EAAE,cAAc;gBACxB,QAAQ,EAAE;;;;;;;;;GAST;yBACQ;;;;GAIR;aACF;;;yBAIE,KAAK;sBACL,KAAK;wBACL,KAAK;0BACL,KAAK;;;;IAHN,0CAA2B;;IAC3B,uCAAqB;;IACrB,yCAA4B;;IAC5B,2CAA8B;;IAE9B,oCAAoB;;IACpB,iDAAuB;;;;;;;AC7BzB,MAqBa,cAAc;;;YAL1B,QAAQ,SAAC;gBACR,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,CAAC;gBAC7H,YAAY,EAAE,CAAC,uBAAuB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,oBAAoB,CAAC;gBACxI,OAAO,EAAE,CAAC,uBAAuB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,oBAAoB,CAAC;aACpI;;;;;;;ACpBD,MAYa,oBAAoB;;;;;IA6B/B,YAAoB,cAA8B,EAAU,GAAsB;QAA9D,mBAAc,GAAd,cAAc,CAAgB;QAAU,QAAG,GAAH,GAAG,CAAmB;QAtBzE,gBAAW,GAAG,IAAI,CAAC;QAG5B,yBAAoB,GAAY,IAAI,CAAC;QAMrC,8BAAyB,GAAY,IAAI,CAAC;QAOhC,kBAAa,GAAG,IAAI,YAAY,EAAU,CAAC;QAErD,sBAAiB,GAA+B,IAAI,GAAG,EAAE,CAAC;QAClD,wBAAmB,GAAyB,IAAI,GAAG,EAAE,CAAC;QACtD,kBAAa,GAAmB,EAAE,CAAC;KAE2C;;;;;IA3BtF,IACI,MAAM,CAAC,MAAe;QACxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;;;;;IAKD,IACI,mBAAmB,CAAC,KAAc;QACpC,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;;;;;IAED,IACI,wBAAwB,CAAC,KAAc;QACzC,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;QACvC,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;;;;IAUD,QAAQ;QACN,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;;;;IAED,qBAAqB;QACnB,IAAI,IAAI,CAAC,sBAAsB,EAAE,EAAE;;kBAC3B,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG;;;;YAAC,CAAC;gBACnC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAC5C,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC/C,OAAO,CAAC,CAAC,SAAS,CAAC;aACpB,EAAC;YACF,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,SAAS;;;;YAAC,OAAO;gBACtF,IAAI,CAAC,OAAO,CAAC,OAAO;;;;gBAAC,KAAK;;0BAClB,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;oBAC7C,IAAI,CAAC,YAAY,EAAE;wBACjB,OAAO;qBACR;;0BACK,aAAa,GAAG,4CAA4C,CAAC,KAAK,EAAE,YAAY,CAAC;oBACvF,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;oBACzD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;iBACnD,EAAC,CAAC;gBACH,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;aAC1B,EAAC,CACH,CAAA;SACF;KACF;;;;;IAED,OAAO,CAAC,OAAe;QACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAClC;;;;;IAEM,iBAAiB,CAAC,MAAW;QAClC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAC9B,OAAO,KAAK,CAAC;SACd;QACD,OAAO,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC;KACrE;;;;;IAED,iBAAiB,CAAC,KAAY;;cACtB,KAAK,GAAQ,KAAK,CAAC,KAAK;QAC9B,IAAI,KAAK,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;YAC1C,OAAO,KAAK,CAAC;SACd;QACD,OAAO;YACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,MAAM,EAAE;gBACN;oBACE,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,SAAS,EAAE,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,GAAG,SAAS;iBACvE;aACF;SACF,CAAC;KACH;;;;IAED,MAAM;QACJ,OAAO,iBAAiB,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;KAC1G;;;;IAED,sBAAsB;QACpB,OAAO,IAAI,CAAC,yBAAyB,IAAI,IAAI,CAAC,oBAAoB,CAAC;KACpE;;;;;IAED,qBAAqB,CAAC,KAAY;QAEhC,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACjB,OAAO,KAAK,CAAC;SACd;QACD,IAAI,IAAI,CAAC,sBAAsB,EAAE,EAAE;;kBAC3B,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;YACzD,OAAO,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;SAC9B;QACD,OAAO,IAAI,CAAC;KACb;;;;IAED,WAAW;QACT,IAAI,CAAC,aAAa,CAAC,OAAO;;;;QAAC,YAAY,IAAI,YAAY,CAAC,WAAW,EAAE,EAAC,CAAC;KACxE;;;YAjHF,SAAS,SAAC;gBACT,QAAQ,EAAE,eAAe;gBACzB,s0CAA0C;;aAE3C;;;;YANQ,cAAc;YAL6C,iBAAiB;;;qBAclF,KAAK,SAAC,QAAQ;0BAKd,KAAK;wBACL,KAAK;kCAGL,KAAK,SAAC,qBAAqB;uCAM3B,KAAK,SAAC,0BAA0B;4BAMhC,MAAM;;;;IAtBP,uCAAiB;;IAMjB,2CAA4B;;IAC5B,yCAA2B;;IAE3B,oDAAqC;;IAMrC,yDAA0C;;IAO1C,6CAAqD;;IAErD,iDAA0D;;;;;IAC1D,mDAA8D;;;;;IAC9D,6CAA2C;;;;;IAE/B,8CAAsC;;;;;IAAE,mCAA8B;;;;;;;ACzCpF,MAmBa,iBAAiB;;;YAZ7B,QAAQ,SAAC;gBACR,OAAO,EAAE;oBACP,aAAa;oBACb,YAAY;oBACZ,aAAa;oBACbC,eAAa;oBACb,gBAAgB;oBAChB,eAAe;iBAChB;gBACD,YAAY,EAAE,CAAC,oBAAoB,CAAC;gBACpC,OAAO,EAAE,CAAC,oBAAoB,CAAC;aAChC;;;;;;;AClBD;;;AAEA,4CAEC;;;;;;;;;;IADC,0GAAmH;;;AAGrH,MAAa,oBAAoB,GAAkD,IAAI,cAAc,CAEjG,iBAAiB,CAAC;AAGtB,MAAa,cAAc;;;;IACzB,YAAkD,UAAyC;QAAzC,eAAU,GAAV,UAAU,CAA+B;KAAI;;;;;;;;;IAE/F,KAAK,CAAC,QAAgB,EAAE,MAAc,EAAE,KAAa,EAAE,KAAc,EAAE,UAAoC;QACzG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;KACnE;;;YANF,UAAU;;;;4CAEI,MAAM,SAAC,oBAAoB;;;;;;;IAA5B,oCAA+E;;AAU7F,MAAa,oBAAoB;;;YAHhC,QAAQ,SAAC;gBACR,SAAS,EAAE,CAAC,cAAc,CAAC;aAC5B;;;;;;;ACrBD;AAYA,MAAa,sBAAsB,GAAG,eAAe;;;;AAErD,iCAIC;;;IAHC,gCAAW;;IACX,kCAAa;;IACb,wCAAqB;;AAQvB,MAAa,mBAAmB;;;;;;IAyB9B,YACwC,UAAyC,EACvE,aAA4B,EAC5B,gBAAkC;QAFJ,eAAU,GAAV,UAAU,CAA+B;QACvE,kBAAa,GAAb,aAAa,CAAe;QAC5B,qBAAgB,GAAhB,gBAAgB,CAAkB;QAnBnC,kBAAa,GAAG,KAAK,CAAC;QACrB,qBAAgB,GAAG,IAAI,YAAY,EAAsB,CAAC;QAC1D,sBAAiB,GAAG,IAAI,YAAY,EAAU,CAAC;QAC/C,uBAAkB,GAAG,IAAI,YAAY,EAAsB,CAAC;QAE9D,iBAAY,GAA0C,IAAI,eAAe,CAAuB,EAAE,CAAC,CAAC;QACpG,kBAAa,GACnB,IAAI,eAAe,CAAwB,IAAI,GAAG,EAAuB,CAAC,CAAC;QACrE,iBAAY,GAA4B,IAAI,eAAe,CAAS,EAAE,CAAC,CAAC;QACxE,wBAAmB,GAA4B,IAAI,eAAe,CAAS,EAAE,CAAC,CAAC;QAYrF,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;KACzD;;;;;IA9BD,IACI,UAAU,CAAC,KAA2B;QACxC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;KACrC;;;;;IACD,IACI,4BAA4B,CAAC,KAA4B;QAC3D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,GAAG,EAAuB,CAAC,CAAC;KAClE;;;;IAyBD,QAAQ;;cACA,uBAAuB,GAAG,cAAc,CAAC,GAAG;;;;QAAC,CAAC,QAAQ;YAC1D,OAAO,IAAI,mBAAmB,CAAC;gBAC3B,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,EAAE,EAAE,QAAQ,CAAC,UAAU;gBACvB,KAAK,EAAE,KAAK;gBACZ,SAAS;;;;gBAAE,CAAC,IAA+B;;wBACrC,aAAa,GAAa,EAAE;oBAChC,IAAI,IAAI,CAAC,aAAa,EAAE;wBACtB,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG;;;;wBAAC,CAAC,GAAG;4BACzC,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;yBACtC,EAAC,CAAC;qBACJ;oBACD,OAAO,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;iBACxD,CAAA;aACJ,CAAC,CAAC;SACJ,EAAC;;cAEI,wBAAwB,GAAG,IAAI,aAAa,CAAC;YACjD,KAAK,EAAE,cAAc;YACrB,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,uBAAuB;SAChC,CAAC;QAEF,IAAI,CAAC,iBAAiB,GAAG,IAAI,OAAO,CAAC,sBAAsB,EAAE;YAC3D,wBAAwB;SACzB,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CACpC,GAAG;;;;QAAC,UAAU;;kBACN,iBAAiB,GAAG,IAAI,iBAAiB,CAAC;gBAC9C,IAAI,EAAE,EAAE;gBACR,KAAK,EAAE,IAAI;gBACX,EAAE,EAAE,aAAa;gBACjB,OAAO,EAAE,UAAU;aACpB,CAAC;;kBAEI,OAAO,GAAG,IAAI,OAAO,CAAC,sBAAsB,EAAE;gBAClD,IAAI,aAAa,CAAC;oBAChB,KAAK,EAAE,YAAY;oBACnB,IAAI,EAAE,IAAI;oBACV,MAAM,EAAE,CAAC,iBAAiB,CAAC;iBAC5B,CAAC;gBACF,wBAAwB;aACzB,CAAC;YAEF,OAAO,OAAO,CAAC;SAChB,EAAC,CACH,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAEtD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,IAAI,CACjE,YAAY,CAAC,GAAG,CAAC,EACjB,oBAAoB,EAAE,CAAC,CAAC,SAAS;;;;QACjC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,EAAE,EAAC,YAAY,EAAE,UAAU,EAAC,CAAC,EAChG,CAAC;;cAEI,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAC/E,SAAS,CAAC,EAAE,CAAC,EACb,GAAG;;;QAAC;YACF,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM;;;;YAAC,CAAC,IAAyB,KAAK,IAAI,CAAC,KAAK,EAAC,CAAC;SACxF,EAAC,CACH;QAED,IAAI,CAAC,cAAc,GAAG,mBAAmB,CAAC,IAAI,CAC5C,MAAM;;;;QAAC,kBAAkB,IAAI,CAAC,CAAC,kBAAkB,EAAC,EAClD,IAAI,CAAC,CAAC,CAAC,EACP,GAAG;;;;QAAC,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAC,CACzD,CAAC;QAEF,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC,IAAI,CAC5H,GAAG;;;;QAAC,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,kBAAkB,EAAE,kBAAkB,CAAC;;gBAC7D,UAAU,GAAgB,EAAE;YAChC,IAAI,QAAQ,CAAC,IAAI,EAAE;gBACjB,UAAU,IAAI,kBAAkB,GAAG,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACrH;YACD,UAAU,GAAG,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;YAE/E,OAAO,UAAU,GAAG,UAAU,CAAC,MAAM;;;;YAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAC,GAAG,UAAU,CAAC;SAC9H,EAAC,CACH,CAAC;KACH;;;;IAED,WAAW;QACT,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;KAC3C;;;;;IAEM,mBAAmB,CAAC,IAAY;QACrC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9B;;;;;IAEM,mBAAmB,CAAC,WAA6B;QACtD,IAAI,EAAE,WAAW,YAAY,iBAAiB,CAAC,EAAE;YAC/C,OAAO;SACR;QAED,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,gBAAgB,CAAC,IAAI,oBAAC,WAAW,CAAC,KAAK,GAAuB,CAAC;;cAE9D,kCAAkC,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QAClG,IAAI,EAAE,kCAAkC,IAAI,kCAAkC,CAAC,MAAM,CAAC,EAAE;YACtF,IAAI,CAAC,kBAAkB,CAAC,IAAI,oBAAC,WAAW,CAAC,KAAK,GAAuB,CAAC;SACvE;KACJ;;;;;IAEQ,gBAAgB,CAAC,IAAe;QACrC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACtC;;;YAlJF,SAAS,SAAC;gBACT,QAAQ,EAAE,eAAe;gBACzB,keAA0C;;aAE3C;;;;4CA2BI,MAAM,SAAC,oBAAoB;YA/CyC,aAAa;YAK7E,gBAAgB;;;yBAiBtB,KAAK;2CAIL,KAAK;4BAIL,KAAK;+BACL,MAAM;gCACN,MAAM;iCACN,MAAM;;;;IAHP,4CAA+B;;IAC/B,+CAAoE;;IACpE,gDAAyD;;IACzD,iDAAsE;;;;;IAEtE,2CAA4G;;;;;IAC5G,4CAC6E;;;;;IAC7E,2CAAgF;;;;;IAChF,kDAAuF;;;;;IACvF,gDAAmC;;IACnC,uCAA8B;;IAC9B,6CAAwC;;IACxC,qDAAqC;;IACrC,6CAAoC;;;;;IAGlC,yCAA+E;;;;;IAC/E,4CAAoC;;;;;IACpC,+CAA0C;;;;;;;ACrD9C,MAgCa,WAAW;;;YARvB,QAAQ,SAAC;gBACR,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,mBAAmB;oBACjH,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,eAAe,EAAE,iBAAiB,EAAE,WAAW,EAAE,cAAc;oBACvH,eAAe,EAAE,iBAAiB,EAAE,oBAAoB,CAAC;gBAC3D,YAAY,EAAE,CAAC,cAAc,EAAE,mBAAmB,CAAC;gBACnD,SAAS,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC;gBACxC,OAAO,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,mBAAmB,CAAC;aACnG;;;;;;;;;;AC/BD,0BAGC;;;IAFG,2BAAa;;IACb,iCAAmB;;;AAGvB,MAAa,cAAc,GAAkB;IACzC,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE;IAC5C,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE;IACxC,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE;IAChD,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE;IAClC,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE;IAC1C,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE;IAClD,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,wBAAwB,EAAE;CACzE;;AAED,MAAa,gBAAgB,GAAG,cAAc,CAAC,MAAM;;;;;AAAC,CAAC,QAAQ,EAAE,OAAO;IACpE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC;IACvC,OAAO,QAAQ,CAAC;CACnB,GAAE,EAAE,CAAC;;AAEN,MAAa,sBAAsB,GAAG,cAAc,CAAC,MAAM;;;;;AAAC,CAAC,QAAQ,EAAE,OAAO;IAC1E,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACjC,OAAO,QAAQ,CAAC;CACnB,GAAE,EAAE,CAAC;;;;;;ACvBN,MAWa,6BAA6B;IAL1C;QASa,iBAAY,GAAG,IAAI,CAAC;QACnB,aAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;KA+B3C;;;;IA7BG,kBAAkB;QAChB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACtC;;;;IAED,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,cAAc;YAC1D,IAAI,CAAC,WAAW,CAAC,cAAc;YAC3B,mGAAmG,CAAC;KAC3G;;;;IAED,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa;YACzD,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,EAAE,CAAC;KACvC;;;;IAED,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ;YACpD,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,EAAE,CAAC;KAClC;;;;IAED,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK;YACjD,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,EAAE,CAAC;KAC/B;;;;IAED,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK;YAC1E,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,EAAE,CAAC;KAC9D;;;YAxCJ,SAAS,SAAC;gBACP,QAAQ,EAAE,wBAAwB;gBAClC,oiCAAmD;;aAEtD;;;0BAEI,KAAK;6BACL,KAAK;wBACL,KAAK;2BACL,KAAK;uBACL,MAAM;;;;IAJP,oDAAkC;;IAClC,uDAAiC;;IACjC,kDAA2B;;IAC3B,qDAA6B;;IAC7B,iDAAwC;;;;;;;AChB5C,MA2Ba,0BAA0B;;;YAlBtC,QAAQ,SAAC;gBACR,OAAO,EAAE;oBACP,YAAY;oBACZ,eAAe;oBACf,aAAa;oBACb,YAAY;oBACZ,eAAe;iBAChB;gBACD,YAAY,EAAE;oBACZ,6BAA6B;iBAC9B;gBACD,OAAO,EAAE;oBACP,6BAA6B;iBAC9B;gBACD,eAAe,EAAE;oBACf,6BAA6B;iBAC9B;aACF;;;;;;;AC1BD,MAGa,OAAQ,SAAQ,QAAQ;;;;;;IAkBnC,OAAO,OAAO,CAAC,IAAS;;cAChB,UAAU,GAAG,IAAI,OAAO,EAAE;QAChC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,EAAE;YACvC,IAAI,CAAC,OAAO,GAAG;gBACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,MAAM,EAAE,CAAC;wBACP,KAAK,EAAE,IAAI,CAAC,aAAa,GAAG,GAAG;wBAC/B,SAAS,EAAE,IAAI,CAAC,gBAAgB;wBAChC,eAAe,EAAE,KAAK;qBACvB,CAAC;aACH,CAAC;SACH;QACD,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;YACpB,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC;SAC9B;QACD,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,UAAU,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACjD;QACD,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,UAAU,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACjD;QACD,OAAO,UAAU,CAAC;KACnB;;;;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;CACF;;;IA7CC,8BAAoB;;IACpB,6BAAmB;;IACnB,4BAAkB;;IAClB,uBAAa;;IACb,uBAAa;;IACb,yBAAe;;IACf,0BAAgB;;IAChB,mCAAyB;;IACzB,0BAAgB;;IAChB,2BAAmB;;IACnB,6BAAuB;;IACvB,+CAAsC;;IACtC,uCAA8B;;IAC9B,8BAAkB;;IAClB,8BAAkB;;IAClB,+BAAuB;;;;;;;;;;;;AChBzB,SAAgB,sBAAsB,CAAC,QAA6B,EAAE,KAAe;IACnF,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QAChC,OAAO,QAAQ,IAAI,EAAE,CAAC;KACvB;IACD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;QACtC,OAAO,EAAE,CAAC;KACX;;UAEK,OAAO,GAAG,CAAC,QAAQ,IAAI,EAAE,EAAE,MAAM;;;;;IAAC,CAAC,CAAC,EAAE,IAAI;QAC9C,CAAC,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QAC3C,OAAO,CAAC,CAAC;KACV,GAAE,IAAI,GAAG,EAA6B,CAAC;;UAElC,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,uBAAuB,CAAC;;UACtD,eAAe,GAAG,wCAAwC,CAAC,KAAK,EAAE,cAAc,CAAC;;UAEjF,WAAW,sBAAG,eAAe,CAAC,MAAM;;;;;IAAC,CAAC,KAAK,EAAE,EAAE;QACnD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5B,OAAO,KAAK,CAAC;KACd,GAAE,EAAE,CAAC,EAAuB;IAE7B,OAAO,WAAW,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;CACnD;;;;;;;AAED,SAAS,sBAAsB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG;IAC5C,OAAO,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC;CAC1C;;;;;;AAED,SAAgB,wCAAwC,CAAC,YAAsB,EAAE,OAAiB;IAChG,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;QAC3C,OAAO,EAAE,CAAA;KACV;IACD,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;QAC9C,OAAO,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;KAC/C;IACD,OAAO,YAAY;SAChB,MAAM;;;;IAAC,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC;SAC1C,MAAM,CAAC,OAAO,CAAC;SACf,MAAM,CAAC,sBAAsB,CAAC,CAAC;CACnC;;;;;AAED,SAAgB,uBAAuB,CAAC,KAAU;IAChD,OAAO,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;CAC/C;;;;;;AC9CD,MAaa,yBAAyB;IAmEpC;QAlES,qBAAgB,GAAG,IAAI,CAAC;QACxB,gBAAW,GAAG,IAAI,CAAC;QACnB,gBAAW,GAAG,YAAY,CAAC;QAE1B,aAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QAExC,yBAAoB,GAA+B,IAAI,eAAe,CAAY,EAAE,CAAC,CAAC;QACtF,cAAS,GAA+B,IAAI,eAAe,CAAY,EAAE,CAAC,CAAC;QAC3E,YAAO,GAA6B,IAAI,eAAe,CAAU,EAAE,CAAC,CAAC;QACrE,SAAI,GAA2B,IAAI,aAAa,CAAU,CAAC,CAAC,CAAC;QAC7D,uBAAkB,GAA0B,IAAI,aAAa,CAAS,CAAC,CAAC,CAAC;QAyDvE,IAAI,CAAC,kBAAkB,GAAG,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO;;;;;QAAE,CAAC,QAAmB,EAAE,MAAe;YACzG,0BAAO,EAAE,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,GAAwB;SAC9E,EAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,GAAG,aAAa,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI;;;;;QAAE,CAAC,QAA6B,EAAE,GAAY;YACrH,OAAO,sBAAsB,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,CAAC,YAAY,IAAI,EAAE,GAAG,EAAE,CAAC,CAAA;SAC3E,EAAC,CAAC;;cAEG,yBAAyB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAC5D,SAAS;;;;QAAC,KAAK,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAC,EAChD,WAAW,CAAC,CAAC,CAAC,CACf;;;cAGK,oBAAoB,GAAG,yBAAyB,CAAC,IAAI,CACzD,GAAG;;;;QAAC,CAAC,CAAM,KAAK,CAAC,EAAC,EAClB,IAAI,CAAC,CAAC,CAAC,CACR;;cAEK,eAAe,GAAGC,KAAe,CAAC,oBAAoB,EAAE,IAAI,CAAC,kBAAkB,CAAC;QAEtF,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAC9E,GAAG;;;;QAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC;YACjB,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;SACrB,EAAC,CACH,CAAC;QAEF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CACvC,SAAS;;;;QAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAC,EACzD,GAAG;;;;QAAC,QAAQ;YACV,OAAO,yBAAyB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;SAC7D,EAAC,CACH,CAAC;QAEF,IAAI,CAAC,0BAA0B,GAAG,yBAAyB,CAAC,IAAI,CAC9D,GAAG;;;;QAAC,KAAK;YACP,OAAO,yBAAyB,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC;SACtE,EAAC,CACH,CAAC;QAEF,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAC3E,GAAG;;;;QAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC;YACf,OAAO,yBAAyB,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SAChE,EAAC,CACH,CAAC;KACH;;;;;IA7FD,IACI,kBAAkB,CAAC,kBAA6B;QAClD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;KACpD;;;;;IAED,IACI,QAAQ,CAAC,QAAmB;QAC9B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC/B;;;;;IAED,IACI,MAAM,CAAC,MAAe;QACxB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC3B;;;;;IAED,IACI,GAAG,CAAC,GAAY;QAClB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACrB;;;;;IAED,OAAO,gBAAgB,CAAC,QAAmB;;YACrC,aAAa,GAAa,EAAE;QAChC,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,OAAO;;;;YAAC,OAAO;gBACtB,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;aACrE,EAAC,CAAC;SACJ;QACD,OAAO,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;KAC/B;;;;;;IAED,OAAO,iBAAiB,CAAC,GAAY,EAAE,KAA0B;QAC/D,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE;YACtB,OAAO,GAAG,CAAC,OAAO,CAAC;SACpB;aAAM,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;;YAEtC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;SAC/B;QACD,OAAO,EAAE,CAAC;KACX;;;;;IAED,OAAO,4BAA4B,CAAC,KAA0B;QAC5D,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,YAAY,KAAK,EAAE;;kBACtD,KAAK,sBAAG,KAAK,CAAC,CAAC,CAAC,EAAS;YAC/B,OAAO,KAAK,CAAC,WAAW,CAAC;SAC1B;KACF;;;;;IAkDD,UAAU,CAAC,CAAS;QAClB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjC;;;;IAED,YAAY;QACV,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACtB;;;YA9HF,SAAS,SAAC;gBACT,QAAQ,EAAE,oBAAoB;gBAC9B,gxFAA6C;;aAE9C;;;;;+BAEE,KAAK;0BACL,KAAK;0BACL,KAAK;uBAEL,MAAM;iCAeN,KAAK;uBAKL,KAAK;qBAKL,KAAK;kBAKL,KAAK;;;;IAlCN,qDAAiC;;IACjC,gDAA4B;;IAC5B,gDAAoC;;IAEpC,6CAAwC;;IAExC,yDAAsF;;IACtF,8CAA2E;;IAC3E,4CAAqE;;IACrE,yCAA6D;;IAC7D,uDAAyE;;IAEzE,kDAA2C;;IAC3C,uDAAoD;;IACpD,sDAAmD;;IACnD,mDAAwC;;IACxC,+DAA+C;;IAC/C,oDAAoC;;;;;;;AC/BtC,MAYa,sBAAsB;;;;IAQjC,YAAoB,gBAAkC;QAAlC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAL5C,iBAAY,GAAG,IAAI,YAAY,EAAE,CAAC;QAE5C,kBAAa,GAAG,CAAC,CAAC;QAClB,eAAU,GAAG,CAAC,CAAC;QAGb,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;KACzD;;;;;IAED,cAAc,CAAC,KAAU;QACvB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC/B;;;;;IAED,UAAU,CAAC,MAAuB;;cAC1B,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;;cAC7E,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,WAAW,CAAC;QACjE,IAAI,SAAS,KAAK,CAAC,EAAE;YACnB,OAAO;SACR;;cACK,SAAS,GAAG,MAAM,CAAC,WAAW;;YAChC,IAAI,GAAG,CAAC;QAEZ,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC,EAAE;YAC1B,IAAI,CAAC,UAAU,GAAG,SAAS,GAAG,CAAC,CAAC;YAChC,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC;SAClC;aAAM,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS,EAAE;YACvC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;SACrB;aAAM;YACL,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC;SAClC;KACF;;;;;IAED,QAAQ,CAAC,MAAuB;QAC9B,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;KACzB;;;;;IAED,QAAQ,CAAC,MAAuB;QAC9B,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;KACzB;;;YArDF,SAAS,SAAC;gBACT,QAAQ,EAAE,iBAAiB;gBAC3B,w3CAA4C;;aAE7C;;;;YAPQ,gBAAgB;;;oBAUtB,KAAK;2BACL,KAAK;2BACL,MAAM;;;;IAFP,uCAAqC;;IACrC,8CAA+B;;IAC/B,8CAA4C;;IAE5C,+CAAkB;;IAClB,4CAAe;;;;;IAEH,kDAA0C;;;;;;;ACpBxD,MAWa,sBAAsB;;;;IAQjC,YAAoB,gBAAkC;QAAlC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAL5C,iBAAY,GAAG,IAAI,YAAY,EAAU,CAAC;QAEpD,gBAAW,GAAG,EAAE,CAAC;QACjB,eAAU,GAAG,CAAC,CAAC;QAGb,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;KACzD;;;;;IAED,cAAc,CAAC,EAAU;QACvB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAC5B;;;;;IAED,UAAU,CAAC,MAAuB;;cAC1B,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;;cAC7E,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,WAAW,CAAC;QACjE,IAAI,SAAS,KAAK,CAAC,EAAE;YACnB,OAAO;SACR;;cACK,SAAS,GAAG,MAAM,CAAC,WAAW;;YAChC,IAAI,GAAG,CAAC;QAEZ,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC,EAAE;YAC1B,IAAI,CAAC,UAAU,GAAG,SAAS,GAAG,CAAC,CAAC;YAChC,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC;SAClC;aAAM,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS,EAAE;YACvC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;SACrB;aAAM;YACL,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC;SAClC;KACF;;;;;IAED,QAAQ,CAAC,MAAuB;QAC9B,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;KACzB;;;;;IAED,QAAQ,CAAC,MAAuB;QAC9B,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;KACzB;;;YArDF,SAAS,SAAC;gBACT,QAAQ,EAAE,oBAAoB;gBAC9B,mnDAA+C;;aAEhD;;;;YAPO,gBAAgB;;;oBAUrB,KAAK;2BACL,KAAK;2BACL,MAAM;;;;IAFP,uCAAgC;;IAChC,8CAA+B;;IAC/B,8CAAoD;;IAEpD,6CAAiB;;IACjB,4CAAe;;;;;IAEH,kDAA0C;;;;;;;ACnBxD,MAoBa,mBAAmB;;;YAZ/B,QAAQ,SAAC;gBACR,OAAO,EAAE;oBACP,YAAY;oBACZ,aAAa;oBACb,YAAY;oBACZ,aAAa;oBACb,eAAe;iBAChB;gBACD,YAAY,EAAE,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;gBAC9D,OAAO,EAAE,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;aAC1D;;;;;;;AClBD,MAuBa,sBAAsB;;;YATlC,QAAQ,SAAC;gBACR,OAAO,EAAE;oBACP,oBAAoB,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY;oBACjF,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,mBAAmB;oBAClF,uBAAuB,EAAE,iBAAiB,EAAE,mBAAmB;iBAAC;gBAChE,YAAY,EAAE,CAAC,yBAAyB,CAAC;gBACzC,OAAO,EAAE,CAAC,yBAAyB,CAAC;gBACpC,eAAe,EAAE,CAAC,yBAAyB,CAAC;aAC/C;;;;;;;ACtBD,MAYa,cAAc;;;;IAkBzB,IAAI,aAAa;;cACT,YAAY;;;;QAAG,CAAC,MAAe;YACnC,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI;;;;YAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAC,GAAG,KAAK,CAAC;SAClF,CAAA;QACD,OAAO,IAAI,CAAC,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;KAC1D;CACF;;;IAvBC,qCAAoB;;IACpB,oCAAmB;;IACnB,mCAAkB;;IAClB,8BAAa;;IACb,8BAAa;;IACb,gCAAe;;IACf,iCAAgB;;IAChB,0CAAyB;;IACzB,iCAAgB;;IAChB,sDAAsC;;IACtC,8CAA8B;;IAC9B,qCAAkB;;IAClB,qCAAkB;;IAClB,iCAAiB;;IACjB,oCAA4B;;IAC5B,uCAA4B;;;;;;;AAU9B,SAAgB,uBAAuB,CAAC,IAAkB,EAAE,QAA4B;IACtF,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,SAAS,CAAC;KAClB;;UAEK,UAAU,GAAG,IAAI,cAAc,EAAE;IACvC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;QACjB,IAAI,CAAC,OAAO,GAAGC,SAAY,CAAC,SAAS,CAAC;YACpC,QAAQ,EAAE,SAAS;YACnB,MAAM,EAAE,CAAC;oBACP,KAAK,EAAE,CAAC;oBACR,SAAS,EAAE,SAAS;oBACpB,eAAe,EAAE,KAAK;iBACvB,CAAC;SACH,CAAC,CAAC;KACJ;IAED,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAEhC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;QACpB,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC;KAC9B;IACD,IAAI,IAAI,CAAC,OAAO,EAAE;QAChB,UAAU,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACjD;IACD,IAAI,IAAI,CAAC,OAAO,EAAE;QAChB,UAAU,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACjD;IACD,IAAI,IAAI,CAAC,SAAS,EAAE;QAClB,UAAU,CAAC,UAAU,GAAG,qCAAqC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;KACzF;IACD,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE;QAC7C,UAAU,CAAC,OAAO,CAAC,QAAQ,GAAGC,QAAa,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;KACpE;IAED,OAAO,UAAU,CAAC;CACnB;;;;;;AAED,SAAgB,qCAAqC,CAAC,cAA8B,EAAE,QAA4B;IAChH,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc,CAAC,SAAS,IAAI,cAAc,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;QAC/H,OAAO,EAAE,CAAC;KACX;IACD,OAAO,cAAc,CAAC,SAAS,CAAC,GAAG;;;;IAAC,QAAQ;;cACpC,OAAO,GAAG,QAAQ,CAAC,IAAI;;;;QAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,EAAE,EAAC;;YAC3D,MAAM;QACV,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE;YACvB,MAAM,GAAG,QAAQ,CAAC,IAAI;;;;YAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,QAAQ,EAAC,CAAC;SAChE;QACD,OAAO,mCAAmC,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;KACvE,EAAC,CAAC;CACJ;;;;;;;AAED,SAAS,mCAAmC,CAC1C,aAA4B,EAC5B,OAAyB,EACzB,aAAgC;IAEhC,IAAI,CAAC,OAAO,IAAI,CAAC,aAAa,EAAE;QAC9B,OAAO,SAAS,CAAC;KAClB;;QAEG,KAAK,GAAG,EAAE;IACd,IAAI,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;QAC7D,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG;;;;QAAC,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,EAAC,CAAC;KACzD;;UAEK,QAAQ,sBAAG;QACf,IAAI,EAAE;YACJ,EAAE,EAAE,aAAa,CAAC,EAAE;YACpB,SAAS,EAAE,aAAa,CAAC,SAAS;YAClC,IAAI,EAAE,OAAO,CAAC,OAAO;YACrB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,WAAW,EAAE,EAAE;YACf,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;YAC1C,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,KAAK,EAAE,KAAK;YACZ,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,aAAa,EAAE,EAAE;SAElB;QACD,QAAQ,EAAE,aAAa,CAAC,QAAQ;QAChC,MAAM,EAAE,EAAE;KACX,EAAiB;IAElB,IAAI,aAAa,CAAC,QAAQ,IAAI,aAAa,EAAE;QAC3C,QAAQ,CAAC,MAAM,GAAG;YAChB,EAAE,EAAE,aAAa,CAAC,QAAQ;YAC1B,SAAS,EAAE,EAAE;YACb,IAAI,EAAE,aAAa,CAAC,OAAO;YAC3B,IAAI,EAAE,aAAa,CAAC,IAAI;YACxB,WAAW,EAAE,EAAE;SAChB,CAAA;KACF;IACD,OAAO,QAAQ,CAAC;CACjB;;;;;;ACrID,MAaa,2BAA2B;;;;IAgBtC,YAAoB,gBAAkC;QAAlC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAf7C,qBAAgB,GAAG,IAAI,CAAC;QACxB,gBAAW,GAAG,IAAI,CAAC;QAKlB,aAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QAExC,UAAK,GAAG,IAAI,aAAa,CAAiB,CAAC,CAAC,CAAC;QAC7C,wBAAmB,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC,CAAC;QAOpD,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACxD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CACtC,GAAG;;;;QAAC,GAAG,IAAI,GAAG,CAAC,UAAU,EAAC,EAC1B,MAAM;;;;QAAC,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAC,EAC9C,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;QAEF,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAC3D,GAAG;;;;QAAC,KAAK,IAAI,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAC,CAChD,CAAC;QAEF,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CACzF,GAAG;;;;QAAC,CAAC,CAAC,EAAE,EAAE,SAAS,CAAC,KAAK,SAAS,CAAC,IAAI;;;;QAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAC,EAAC,CAC9E,CAAC;QAEF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG;;;;QAAC,CAAC,GAAG;;kBAClD,MAAM,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,MAAM;;;;;YAAC,CAAC,IAAI,EAAE,EAAE;gBACzC,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE;oBACjB,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,EAAE,OAAO;;;;oBAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAC,CAAA;iBACjE;gBACD,OAAO,IAAI,CAAC;aACb,GAAE,IAAI,GAAG,EAAkB,CAAC;;kBAEvB,OAAO,GAAG,EAAE;YAClB,MAAM,CAAC,OAAO;;;;;YAAC,CAAC,CAAC,EAAE,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACjB,EAAC,CAAC;YACH,OAAO,OAAO,CAAC;SAChB,EAAC,CAAC,CAAC;;QAGJ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CACzB,GAAG;;;;QAAC,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,EAAC,EAC9B,GAAG;;;;QAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,EAAC,EACnF,IAAI,CAAC,CAAC,CAAC,CACR,CAAC,SAAS,EAAE,CAAC;KACf;;;;;IAjDD,IAAa,GAAG,CAAC,GAAmB;QAClC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACtB;;;;IAiDD,QAAQ;QACN,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;SAC/E;KACF;;;;;IAED,UAAU,CAAC,EAAU;QACnB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACnC;;;;IAED,YAAY;QACV,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACtB;;;;;IAED,qBAAqB,CAAC,KAAsB;QAC1C,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;YAC3C,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;SAC7B;KACF;;;YA9EF,SAAS,SAAC;gBACT,QAAQ,EAAE,uBAAuB;gBACjC,k+EAAgD;;aAEjD;;;;YAPQ,gBAAgB;;;+BAStB,KAAK;0BACL,KAAK;0BACL,KAAK;kBACL,KAAK;uBAGL,MAAM;;;;IANP,uDAAiC;;IACjC,kDAA4B;;IAC5B,kDAA6B;;IAI7B,+CAAwC;;IAExC,4CAA6C;;IAC7C,0DAAsD;;IACtD,oDAAyC;;IACzC,wDAA+C;;IAC/C,iEAA+C;;IAC/C,qDAAqC;;;;;IAEzB,uDAA0C;;;;;;;AC7BxD,MAoCa,wBAAwB;;;YArBpC,QAAQ,SAAC;gBACR,OAAO,EAAE;oBACP,oBAAoB;oBACpB,YAAY;oBACZ,aAAa;oBACb,gBAAgB;oBAChB,YAAY;oBACZ,eAAe;oBACf,eAAe;oBACf,aAAa;oBACb,YAAY;oBACZ,mBAAmB;oBACnB,uBAAuB;oBACvB,iBAAiB;oBACjB,mBAAmB;oBACnB,eAAe;iBAChB;gBACD,YAAY,EAAE,CAAC,2BAA2B,CAAC;gBAC3C,OAAO,EAAE,CAAC,2BAA2B,CAAC;gBACtC,eAAe,EAAE,CAAC,2BAA2B,CAAC;aAC/C;;;;;;;ACnCD;;;AAGA,2BAUC;;;IATC,uCAAwB;;IACxB,iCAAkB;;IAClB,4BAAa;;IACb,4BAAa;;IACb,kCAAqB;;IACrB,gCAAyB;;IACzB,0CAAiC;;IACjC,mCAAoB;;IACpB,wCAA0C;;;;;AAG5C,2BAWC;;;IAVC,uCAAwB;;IACxB,iCAAkB;;IAClB,4BAAa;;IACb,4BAAa;;IACb,+BAAgB;;IAChB,wCAA0C;;IAC1C,iCAAmB;;IACnB,mCAAqB;;IACrB,8BAAqB;;IACrB,kCAA+B;;;;;AAGjC,gCAKC;;;IAJC,qCAAiB;;IACjB,uCAAmB;;IACnB,0CAAsB;;IACtB,gDAA6B;;;;;AAG/B,yBAUC;;;IATC,8BAAiB;;IACjB,6BAAgB;;IAChB,0BAAa;;IACb,0BAAa;;IACb,6BAAgB;;IAChB,gCAAmB;;IACnB,gCAAmB;;IACnB,yCAA6B;;IAC7B,sCAA0C;;;;;AAG5C,0CAGC;;;IAFC,oDAAsB;;IACtB,6CAAyB;;;;IAIzB,UAAW;IACX,UAAW;IACX,QAAS;;;;;;;;AAGX,qCAIC;;;IAHC,sCAAa;;IACb,sCAAa;;IACb,wCAAwB;;;;;;;;AAG1B,SAAgB,kBAAkB,CAAC,QAAmB,EAAE,QAAmB,EAAE,MAAe;IAC1F,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;QACpC,OAAO,EAAE,CAAC;KACX;IACD,OAAO,QAAQ,CAAC,GAAG;;;;IAAC,GAAG,IAAI,4BAA4B,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAC,CAAC;CACjF;;;;;;;AAED,SAAS,4BAA4B,CAAC,GAAY,EAAE,QAAmB,EAAE,MAAe;IACtF,IAAI,CAAC,GAAG,EAAE;QACR,OAAO,IAAI,CAAC;KACb;;UAEK,aAAa,GAAG,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC;;;UAEzD,kBAAkB,GAAiB,4BAA4B,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC;IAE5F,OAAO,kBAAkB,CAAC,GAAG,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAC;CACnE;;;;;;;AAED,SAAgB,kBAAkB,CAAC,GAAY,EAAE,QAAmB,EAAE,MAAe;IACnF,IAAI,EAAE,QAAQ,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;QACzE,OAAO,EAAE,CAAC;KACX;;UACK,UAAU,GAAyB,IAAI,GAAG,EAAmB;IACnE,QAAQ,CAAC,OAAO;;;;IAAC,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,EAAC,CAAC;IACxE,OAAO,GAAG,CAAC,QAAQ;SAChB,GAAG;;;;IAAC,SAAS;;cACN,YAAY,GAAY,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;;cACjD,eAAe,GAAG,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC;QACxE,OAAO,YAAY,GAAG,4BAA4B,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,IAAI,CAAC;KAC1F,EAAC;SACD,MAAM;;;;IAAC,WAAW,IAAI,WAAW,EAAC,CAAC;CACvC;;;;;;AAED,SAAgB,wBAAwB,CAAC,MAAe,EAAE,SAAqB;IAC7E,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;QAC1E,OAAO,EAAE,CAAC;KACX;IAED,OAAO,MAAM,CAAC,MAAM;;;;;IAAC,CAAC,WAAW,EAAE,KAAK;;cAChC,GAAG,GAAG,SAAS,CAAC,IAAI;;;;QAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,EAAC;QAC5D,IAAI,GAAG,EAAE;;kBACD,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,CAAC;YAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;gBACjC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;aACxB;SACF;QACD,OAAO,WAAW,CAAC;KACpB,GAAE,EAAE,CAAC,CAAC;CACR;;;;;;;AAED,SAAgB,4BAA4B,CAAC,GAAY,EAAE,QAAmB,EAAE,MAAe;IAC7F,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE;QACnD,OAAO,EAAE,CAAC;KACX;;UACK,UAAU,GAAyB,IAAI,GAAG,EAAmB;IACnE,QAAQ,CAAC,OAAO;;;;IAAC,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,EAAC,CAAC;;UAClE,SAAS,GAAuB,IAAI,GAAG,EAAiB;IAC9D,MAAM,CAAC,OAAO;;;;IAAC,KAAK,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,EAAC,CAAC;;UAEvD,kBAAkB,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM;;;;;IAAe,CAAC,UAAwB,EAAE,QAAkB;QAC1G,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI;;;;QAAC,SAAS,IAAI,SAAS,KAAK,QAAQ,CAAC,KAAK,EAAC,EAAE;YAChF,OAAO,UAAU,IAAI,EAAE,CAAC;SACzB;;cACK,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;;cAC9C,UAAU,GAAG,aAAa,GAAG,aAAa,CAAC,IAAI,GAAG,IAAI;;cACtD,UAAU,GAAG,aAAa,GAAG,aAAa,CAAC,OAAO,GAAG,IAAI;;cACzD,QAAQ,GAAG,QAAQ,CAAC,QAAQ,IAAI,CAAC;;cACjC,KAAK,GAAU,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;QACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;YACjC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;SAClE;QACD,OAAO,UAAU,CAAC;KACnB,GAAE,EAAE,CAAC;IACN,OAAO,kBAAkB,CAAC;CAC3B;;;;;;AAED,SAAgB,4BAA4B,CAAC,OAAoC,EAAE,MAAe;IAChG,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,IAAI,CAAC;KACb;IACD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;QAChC,OAAO,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;KAC1C;;UAEK,aAAa,GAAG,MAAM,CAAC,MAAM;;;;IAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,OAAO,CAAC,SAAS,EAAC;;UACzE,WAAW,GAAG,iBAAiB,CAAC,aAAa,CAAC;IACpD,OAAO,kBAAkB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;CACjD;;;;;;;AAED,SAAS,kBAAkB,CAAC,GAAY,EAAE,aAA6B,EAAE,kBAAgC;;QACnG,WAAW,GAAG,CAAC;IACnB,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,EAAE,EAAE;QACtC,WAAW,IAAI,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC;KAClC;IAED,OAAO;QACL,eAAe,EAAE,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5C,SAAS,EAAE,GAAG,CAAC,WAAW;QAC1B,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,UAAU,EAAE,GAAG,CAAC,QAAQ;QACxB,QAAQ,EAAE,aAAa,IAAI,EAAE;QAC7B,kBAAkB,EAAE,kBAAkB,IAAI,EAAE;QAC5C,WAAW,EAAE,WAAW;KACzB,CAAA;CACF;;;;;;AAED,SAAS,kBAAkB,CAAC,OAAoC,EAAE,WAAyB;;QACrF,UAA6B;IACjC,IAAI,OAAO,YAAY,iBAAiB,EAAE;QACxC,UAAU,GAAG;YACX,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,IAAI,KAAK;SAC1D,CAAA;KACF;IACD,OAAO;QACL,eAAe,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QAChD,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;QAC9B,IAAI,EAAE,OAAO,CAAC,OAAO;QACrB,MAAM,EAAE,WAAW,IAAI,EAAE;QACzB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,UAAU,EAAE,UAAU;KACvB,CAAA;CACF;;;;;AAED,SAAS,iBAAiB,CAAC,MAAe;IACxC,OAAO,MAAM,CAAC,GAAG;;;;IAAC,KAAK,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAC,CAAC;CACrD;;;;;;;AAED,SAAS,gBAAgB,CAAC,KAAY,EAAE,UAAmB,EAAE,UAAmB;IAC9E,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,KAAK;QACrB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI,EAAE,KAAK,CAAC,KAAK;QACjB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;QAC5B,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;QACtB,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;QAC9C,UAAU,EAAE,UAAU,IAAI,EAAE;QAC5B,UAAU,EAAE,UAAU,IAAI,EAAE;KAC7B,CAAA;CACF;;;;;;;;AAED,SAAS,4BAA4B,CAAC,GAAiB,EAAE,QAAwB,EAAE,MAAoB,EACjE,gBAAwC;IAE5E,OAAO;QACL,eAAe,EAAE,GAAG,CAAC,eAAe;QACpC,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,QAAQ,EAAE,QAAQ,IAAI,EAAE;QACxB,kBAAkB,EAAE,MAAM,IAAI,EAAE;QAChC,gBAAgB,EAAE,gBAAgB,IAAI,IAAI;QAC1C,WAAW,EAAE,GAAG,CAAC,WAAW;KAC7B,CAAA;CACF;;;;;;;AAED,SAAS,4BAA4B,CAAC,OAAqB,EAAE,MAAoB,EAAE,gBAAwC;IACzH,OAAO;QACL,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,MAAM,EAAE,MAAM,IAAI,EAAE;QACpB,gBAAgB,EAAE,gBAAgB,IAAI,IAAI;QAC1C,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI;KACvC,CAAC;CACH;;;;;;AAED,SAAS,0BAA0B,CAAC,KAAiB,EAAE,gBAAwC;IAC7F,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;QAC9C,gBAAgB,EAAE,gBAAgB,IAAI,IAAI;KAC3C,CAAA;CACF;;;;;;AAED,SAAgB,0BAA0B,CAAC,aAA6B,EAAE,QAAuC;IAC/G,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;QACtC,OAAO,aAAa,CAAC;KACtB;IAED,OAAO,aAAa,CAAC,GAAG;;;;IAAC,YAAY;;cAC7B,WAAW,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG;;;;QAAC,OAAO,IAAI,yBAAyB,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAC;;cAEhG,qBAAqB,GAAG,YAAY,CAAC,kBAAkB,CAAC,GAAG;;;;QAAC,KAAK;;kBAC/D,MAAM,GAAG,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC;YAClD,OAAO,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;SAC9C,EAAC;;cAEI,eAAe,GAAG,WAAW;aAChC,GAAG;;;;QAAC,OAAO,IAAI,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAC;;cAC5C,aAAa,GAAG,WAAW;aAC9B,GAAG;;;;QAAC,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG;;;;QAAC,KAAK,IAAI,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAC,GAAG,EAAE,EAAC;aAChG,MAAM;;;;;QAAC,CAAC,UAAU,EAAE,WAAW,KAAK,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,GAAE,EAAE,CAAC;;cACpE,0BAA0B,GAAG,qBAAqB;aACrD,GAAG;;;;QAAC,KAAK,IAAI,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC,MAAM,GAAG,IAAI,EAAC;;cACxE,WAAW,GAAG,CAAC,GAAG,eAAe,EAAE,GAAG,aAAa,EAAE,GAAG,0BAA0B,CAAC;;cAEnF,aAAa,GAAG,+BAA+B,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC;;cACzE,kBAAkB,GAAG,sCAAsC,CAAC,aAAa,CAAC;QAEhF,OAAO,4BAA4B,CAAC,YAAY,EAAE,WAAW,EAAE,qBAAqB,EAAE,kBAAkB,CAAC,CAAC;KAC3G,EAAC,CAAC;CACJ;;;;;;AAED,SAAgB,yBAAyB,CAAC,OAAqB,EAAE,QAAuC;IACtG,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;QACtC,OAAO,OAAO,CAAC;KAChB;;UACK,aAAa,GAAG,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC;;UACvD,kBAAkB,GAAG,0CAA0C,CAAC,aAAa,CAAC;IACpF,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;QACnB,OAAO,4BAA4B,CAAC,OAAO,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAA;KACvE;;UAEK,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG;;;;IAAC,KAAK;;cACvC,WAAW,GAAG,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC;QACvD,OAAO,uBAAuB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;KACnD,EAAC;IAEF,OAAO,4BAA4B,CAAC,OAAO,EAAE,cAAc,EAAE,kBAAkB,CAAC,CAAC;CAClF;;;;;;AAED,SAAS,uBAAuB,CAAC,KAAiB,EAAE,MAAwB;;UACpE,uBAAuB,GAAG,0CAA0C,CAAC,MAAM,CAAC;IAClF,OAAO,0BAA0B,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;CACnE;;;;;;AAED,SAAS,UAAU,CAAC,QAAuC,EAAE,EAAU;IACrE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;QACrC,OAAO,IAAI,CAAA;KACZ;;UACK,WAAW,GAAG,QAAQ,CAAC,SAAS;;;;IAAC,CAAC;QACtC,OAAO,CAAC,CAAC,aAAa,KAAK,EAAE,CAAC;KAC/B,EAAC;IACF,IAAI,WAAW,GAAG,CAAC,EAAE;QACnB,OAAO,IAAI,CAAC;KACb;;UACK,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,MAAM;IAC3C,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAChC,OAAO,MAAM,CAAC;CACf;;;;;AAED,SAAS,0CAA0C,CAAC,MAAwB;IAC1E,QAAQ,MAAM;QACZ,KAAK,gBAAgB,CAAC,OAAO;YAC3B,OAAO,EAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAC,CAAC;QACnE,KAAK,gBAAgB,CAAC,OAAO;YAC3B,OAAO,EAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAC,CAAC;QACtE;YACE,OAAO,EAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAC,CAAC;KACrE;CACF;;;;;AAED,SAAS,sCAAsC,CAAC,MAAwB;IACtE,QAAQ,MAAM;QACZ,KAAK,gBAAgB,CAAC,OAAO;YAC3B,OAAO,EAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAC,CAAC;QACnE,KAAK,gBAAgB,CAAC,OAAO;YAC3B,OAAO,EAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,EAAC,CAAC;QACxE;YACE,OAAO,EAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,2BAA2B,EAAC,CAAC;KAC7E;CACF;;;;;AAED,SAAS,+BAA+B,CAAC,MAAc;IACrD,QAAQ,MAAM;QACZ,KAAK,CAAC;YACJ,OAAO,gBAAgB,CAAC,OAAO,CAAC;QAClC,KAAK,CAAC;YACJ,OAAO,gBAAgB,CAAC,OAAO,CAAC;QAClC;YACE,OAAO,gBAAgB,CAAC,KAAK,CAAC;KACjC;CACF;;;;;;ACnWD;;IAIE,aAAc,aAAa;IAC3B,YAAa,YAAY;IACzB,YAAa,YAAY;;MAQd,8BAA8B;IAL3C;QAcW,mBAAc,GAAG,KAAK,CAAC;QACvB,WAAM,GAAG,UAAU,CAAC,WAAW,CAAC;QAG/B,gBAAW,GAAuB,IAAI,YAAY,EAAQ,CAAC;KAmBtE;;;;IAjBC,QAAQ;KACP;;;;IAED,UAAU;QACR,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC7B;;;;;IAED,iBAAiB,CAAC,MAAwB;QACxC,OAAO,MAAM,KAAK,gBAAgB,CAAC,OAAO,CAAC;KAC5C;;;;;IACD,eAAe,CAAC,MAAwB;QACtC,OAAO,MAAM,KAAK,gBAAgB,CAAC,OAAO,CAAC;KAC5C;;;;;IACD,aAAa,CAAC,MAAwB;QACpC,OAAO,MAAM,KAAK,gBAAgB,CAAC,KAAK,CAAA;KACzC;;;YAnCF,SAAS,SAAC;gBACT,QAAQ,EAAE,0BAA0B;gBACpC,8zEAAqD;;aAEtD;;;oBAEE,KAAK;yBACL,KAAK;8BACL,KAAK;sBACL,KAAK;+BACL,KAAK;gCACL,KAAK;uBACL,KAAK;yBACL,KAAK;6BACL,KAAK;qBACL,KAAK;0BACL,KAAK;0BACL,KAAK;0BACL,MAAM;;;;IAZP,+CAAuB;;IACvB,oDAA4B;;IAC5B,yDAAiC;;IACjC,iDAAyB;;IACzB,0DAAkC;;IAClC,2DAAmC;;IACnC,kDAA0B;;IAC1B,oDAA4C;;IAC5C,wDAAgC;;IAChC,gDAAyC;;IACzC,qDAA8B;;IAC9B,qDAA6B;;IAC7B,qDAAqE;;;;;;;AC3BvE;;;AAqBA,sCAGC;;;IAFC,2CAAiB;;IACjB,2CAAiB;;AAgBnB,MAAa,0BAA0B;;;;IA6DrC,YAAoB,gBAAkC;QAAlC,qBAAgB,GAAhB,gBAAgB,CAAkB;;QA7B7C,qBAAgB,GAAG,KAAK,CAAC;;QAGzB,gBAAW,GAAG,KAAK,CAAC;QAE7B,yBAAoB,GAAG,UAAU,CAAC,UAAU,CAAC;QAC7C,qCAAgC,GAAG,UAAU,CAAC,UAAU,CAAC;QACzD,kCAA6B,GAAG,UAAU,CAAC,UAAU,CAAC;QACtD,uBAAkB,GAAG,UAAU,CAAC,UAAU,CAAC;QAE3C,eAAU,GAA6B,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;QAC5D,eAAU,GAA6B,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;QAC5D,yBAAoB,GAAoD,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;QAC7F,eAAU,GAAmD,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;QACrF,aAAQ,GAA2B,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;QAExD,uBAAkB,GAAG,IAAI,eAAe,oBACZ;YACxB,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,CAAC;SACZ,GACF,CAAC;QAKF,mBAAc,GAAc,EAAE,CAAC;QAC/B,mBAAc,GAAc,EAAE,CAAC;QAG7B,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;KACzD;;;;;;IA7DD,IACI,QAAQ,CAAC,QAAmB;QAC9B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAChC;;;;;;IAGD,IACI,QAAQ,CAAC,QAAmB;QAC9B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAChC;;;;;;IAGD,IACI,kBAAkB,CAAC,kBAA6B;QAClD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;KACpD;;;;;;IAGD,IACI,QAAQ,CAAC,QAAuC;QAClD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAChC;;;;;;IAGD,IACI,MAAM,CAAC,MAAe;QACxB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC5B;;;;IAoCD,QAAQ;;cACA,SAAS,GAA0B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM;;;;QAAC,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAC,CAAC;;cAC9F,SAAS,GAA0B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM;;;;QAAC,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAC,CAAC;;cAC9F,OAAO,GAAwB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM;;;;QAAC,MAAM,IAAI,MAAM,KAAK,IAAI,EAAC,CAAC;;cAEpF,aAAa,GAAG,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,CAC3D,GAAG;;;;QAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC1B,IAAI,CAAC,kBAAkB,CAAC,IAAI,oBACF;gBACxB,QAAQ,EAAE,QAAQ,CAAC,MAAM;gBACzB,QAAQ,EAAE,QAAQ,CAAC,MAAM;aAC1B,GAAC,CAAC;SACJ,EAAC,EACF,GAAG;;;;QAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAC,CACtF;QAED,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CACtE,GAAG;;;;QAAC,CAAC,CAAC,aAAa,EAAE,QAAQ,CAAC,KAAK,0BAA0B,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAC,EACvF,SAAS,CAAC,EAAE,CAAC,CACd,CAAC;QAEF,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAClF,MAAM;;;;QAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,QAAQ,KAAK,IAAI,EAAC,EAC5C,GAAG;;;;QAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAmE;YACzF,OAAO,QAAQ,CAAC,GAAG;;;;YAAC,CAAC;;sBACb,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,IAAI;;sBACzB,aAAa,GAAG,4BAA4B,CAAC,CAAC,EAAE,MAAM,CAAC;gBAC7D,OAAO,yBAAyB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;aAC3D,EAAC,CAAC;SACJ,EAAC,EACF,SAAS,CAAC,EAAE,CAAC,CACd,CAAC;QACF,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAC/E,GAAG;;;;QAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAC,CAAC,EAAC,CAC1E,CAAA;KACF;;;;IAEM,gBAAgB;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE;YACpE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;SAC/B;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE;YACpE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;SAC/B;KACF;;;;;IAEM,aAAa,CAAC,aAAqB;QACxC,IAAI,IAAI,CAAC,gBAAgB,EAAE;;kBACnB,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS;;;;YAAC,KAAK,IAAI,KAAK,KAAK,IAAI,EAAC;YAC1E,IAAI,WAAW,KAAK,aAAa,EAAE;gBACjC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC;aAC1C;;kBACK,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS;;;;YAAC,KAAK,IAAI,KAAK,KAAK,IAAI,EAAC;YACjF,IAAI,kBAAkB,GAAG,CAAC,CAAC,EAAE;gBAC3B,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,GAAG,KAAK,CAAC;aACjD;SACF;QACD,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;KAC1E;;;;;IAEM,aAAa,CAAC,aAAqB;QACxC,IAAI,IAAI,CAAC,gBAAgB,EAAE;;kBACnB,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS;;;;YAAC,KAAK,IAAI,KAAK,KAAK,IAAI,EAAC;YAC1E,IAAI,WAAW,KAAK,aAAa,EAAE;gBACjC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC;aAC1C;;kBACK,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS;;;;YAAC,KAAK,IAAI,KAAK,KAAK,IAAI,EAAC;YACjF,IAAI,kBAAkB,GAAG,CAAC,CAAC,EAAE;gBAC3B,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,GAAG,KAAK,CAAC;aACjD;SACF;QACD,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;KAC1E;;;;;IAEM,4BAA4B,CAAC,OAAqB;QACvD,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;;gBAC3C,WAAW,GAAG,YAAY,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;YACrD,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,GAAG,WAAW,QAAQ,GAAG,GAAG,WAAW,SAAS,CAAC;YAC7F,OAAO,WAAW,CAAC;SACpB;QACD,OAAO,EAAE,CAAC;KACX;;;;;IAEM,sCAAsC,CAAC,OAAqB;QACjE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YACvB,OAAO,EAAE,CAAC;SACX;QAED,OAAO,aAAa,OAAO,CAAC,UAAU,CAAC,UAAU,GAAG,CAAA;KACrD;;;;;IAEM,kBAAkB,CAAC,GAAiB;;cACnC,WAAW,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QAC3D,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,KAAK,CAAC,EAAE;YACzC,OAAO,qBAAqB,CAAC;SAC9B;;YAEG,WAAW,GAAG,EAAE;;cACd,aAAa,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QAC/D,IAAI,WAAW,IAAI,GAAG,CAAC,WAAW,GAAG,CAAC,EAAE;YACtC,WAAW,GAAG,WAAW,CAAC;SAC3B;QACD,IAAI,WAAW,EAAE;YACf,WAAW,GAAG,GAAG,WAAW,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACtD,WAAW,GAAG,aAAa,GAAG,GAAG,WAAW,UAAU,GAAG,GAAG,WAAW,WAAW,CAAC;SACpF;QACD,IAAI,WAAW,IAAI,GAAG,CAAC,WAAW,GAAG,CAAC,EAAE;YACtC,WAAW,GAAG,GAAG,WAAW,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;YACpD,WAAW,GAAG,GAAG,CAAC,WAAW,KAAK,CAAC,GAAG,GAAG,WAAW,QAAQ,GAAG,GAAG,WAAW,SAAS,CAAC;SACxF;QACD,OAAO,WAAW,CAAC;KACpB;;;YA7LF,SAAS,SAAC;gBACT,QAAQ,EAAE,qBAAqB;gBAC/B,UAAU,EAAE;oBACV,OAAO,CAAC,oBAAoB,EAAE;wBAC5B,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;wBACvC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;wBAClC,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;wBAChD,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;qBACjD,CAAC;iBACH;gBACD,urIAA8C;;aAE/C;;;;YApBQ,gBAAgB;;;uBAuBtB,KAAK;uBAML,KAAK;iCAML,KAAK;uBAML,KAAK;qBAML,KAAK;+BAML,KAAK;0BAGL,KAAK;;;;IAHN,sDAAkC;;IAGlC,iDAA6B;;IAE7B,0DAA6C;;IAC7C,sEAAyD;;IACzD,mEAAsD;;IACtD,wDAA2C;;IAE3C,gDAA4D;;IAC5D,gDAA4D;;IAC5D,0DAA6F;;IAC7F,gDAAqF;;IACrF,8CAAwD;;IAExD,wDAKE;;IAEF,mDAAkF;;IAClF,oDAA2C;;IAC3C,oDAA2C;;IAC3C,oDAA+B;;IAC/B,oDAA+B;;;;;IAEnB,sDAA0C;;;;;;;ACpGxD,MAyBa,uBAAuB;;;YAfnC,QAAQ,SAAC;gBACR,OAAO,EAAE;oBACP,YAAY;oBACZ,eAAe;oBACf,aAAa;oBACbH,eAAa;oBACb,aAAa;oBACb,YAAY;oBACZ,aAAa;oBACb,eAAe;iBAChB;gBACD,YAAY,EAAE,CAAC,0BAA0B,EAAE,8BAA8B,CAAC;gBAC1E,OAAO,EAAE,CAAC,0BAA0B,CAAC;gBACrC,eAAe,EAAE,CAAC,0BAA0B,CAAC;aAC9C;;;;;;;ACxBD,MAYa,yBAAyB;IANtC;QASW,wBAAmB,GAAG,KAAK,CAAC;QAC5B,6BAAwB,GAAG,KAAK,CAAC;QACjC,qBAAgB,GAAG,KAAK,CAAC;QACzB,gBAAW,GAAG,KAAK,CAAC;QAGpB,sBAAiB,GAAG,KAAK,CAAC;QAC1B,WAAM,GAAG,IAAI,CAAC;QAGb,kBAAa,GAAG,IAAI,YAAY,EAAE,CAAC;QACnC,kBAAa,GAAG,IAAI,YAAY,EAAU,CAAC;QAC3C,iCAA4B,GAAG,IAAI,YAAY,EAAE,CAAC;QAClD,0BAAqB,GAAG,IAAI,YAAY,EAAE,CAAC;KAmCtD;;;;IAhCC,SAAS;QACL,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACf,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG;;;;YAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAC,CAAA;SAC1E;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;;;;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,OAAO,QAAQ,CAAC;SACjB;QACD,OAAO,SAAS,CAAC;KAClB;;;;IAED,IAAI,KAAK;;;YAEH,MAAM,GAAY,EAAE;QACxB,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,KAAK,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,EAAE;YACxF,MAAM,GAAG,CAAC;oBACR,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;oBAClC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB;iBACzC,CAAC,CAAA;SACH;QACD,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;YAC/B,MAAM,EAAE,MAAM;SACf,CAAA;KACF;;;;;IAED,eAAe,CAAC,OAAe;QAC7B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAClC;;;YAxDF,SAAS,SAAC;gBACT,QAAQ,EAAE,oBAAoB;gBAC9B,qiGAA6C;;aAE9C;;;sBAGE,KAAK;4BACL,KAAK;kCACL,KAAK;uCACL,KAAK;+BACL,KAAK;0BACL,KAAK;wCACL,KAAK;iCACL,KAAK;gCACL,KAAK;qBACL,KAAK;wBACL,KAAK;4BAEL,MAAM;4BACN,MAAM;2CACN,MAAM;oCACN,MAAM;;;;IAfP,4CAA0B;;IAC1B,kDAAsC;;IACtC,wDAAqC;;IACrC,6DAA0C;;IAC1C,qDAAkC;;IAClC,gDAA6B;;IAC7B,8DAA2C;;IAC3C,uDAAoC;;IACpC,sDAAmC;;IACnC,2CAAuB;;IACvB,8CAA2B;;IAE3B,kDAA6C;;IAC7C,kDAAqD;;IACrD,iEAA4D;;IAC5D,0DAAqD;;;;;IACrD,4CAAyB;;;;;;;AC7B3B,MAqBa,sBAAsB;;;YATlC,QAAQ,SAAC;gBACR,OAAO,EAAE;oBACP,oBAAoB,EAAE,YAAY,EAAE,YAAY;oBAChD,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,mBAAmB;oBACjE,uBAAuB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,kBAAkB;iBAAC;gBACjF,YAAY,EAAE,CAAC,yBAAyB,CAAC;gBACzC,OAAO,EAAE,CAAC,yBAAyB,CAAC;gBACpC,eAAe,EAAE,CAAC,yBAAyB,CAAC;aAC/C;;;;;;;AClBD,MAAa,YAAY;;;;IA4BvB,YAAY,IAAU;QAdtB,aAAQ,GAAG,CAAC,CAAC;QAeX,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAClB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAC3B;CACF;;;IA/BC,6BAAe;;IACf,+BAAiB;;IACjB,4BAAc;;IACd,4BAAc;;IACd,+BAAiB;;IACjB,mCAAqB;;IACrB,gCAAkB;;IAClB,6BAAe;;IACf,wCAA0B;;IAC1B,qCAAyB;;IACzB,+BAAiB;;IACjB,gCAAkB;;IAClB,iCAAsB;;IACtB,gCAAa;;IACb,gDAAkC;;IAClC,6CAA+B;;IAC/B,sDAAwC;;IACxC,gCAAiB;;IACjB,oCAA4B;;IAC5B,kDAAqC;;IACrC,iCAAmB;;IACnB,oCAAsB;;IACtB,kCAAqB;;IACrB,4CAA6B;;IAC7B,iCAAmB;;IACnB,0CAAwC;;;;;;;AC5B1C,MAEa,aAAc,SAAQ,SAAkB;IAArD;;QACW,gBAAW,GAAgB,UAAU,CAAC;KAChD;CAAA;;;IADC,oCAA+C;;;;;;;ACHjD;;;AAIA,qBAIC;;;IAHC,uBAAc;;IACd,uBAAc;;IACd,0BAAkB;;;;;AAGpB,mCAKC;;;IAJC,uCAA6C;;IAC7C,8CAAyB;;IACzB,+CAA0B;;IAC1B,0CAAoB;;AAGtB,MAAa,aAAc,SAAQ,SAA4B;;;;IAO7D,YAAY,OAA6B;QACvC,KAAK,CAAC,OAAO,CAAC,CAAC;QAPR,gBAAW,GAAgB,UAAU,CAAC;QAQ7C,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;;;YAGnD,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;gBAC1C,IAAI,OAAO,CAAC,cAAc,EAAE;;oBAE1B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG;;;;oBAAC,CAAC,CAAS,MAAM,EAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAC,CAAC,EAAC,CAAC;iBAC1E;qBAAM;;oBAEL,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG;;;;oBAAC,CAAC,CAAS,MAAM,EAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAC,CAAC,EAAC,CAAC;iBAC3E;aACF;iBAAM;gBACL,IAAI,OAAO,CAAC,cAAc,EAAE;;oBAE1B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG;;;;oBAAC,CAAC,CAAS,MAAM,EAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAC,CAAC,EAAC,CAAC;iBACtF;qBAAM;;oBAEL,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;iBAChC;aACF;SACF;QAED,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;QAC/C,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC;QACjD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;QAE9D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAC1C;;;;;IAES,gBAAgB;;cAClB,UAAU,GAAG,IAAI,CAAC,UAAU;QAClC;;;;QAAO,CAAC,OAAwB;YAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,EAAE;gBACnF,OAAO,EAAC,cAAc,EAAE,IAAI,EAAC,CAAA;aAC9B;SACF,EAAA;KACF;CACF;;;IA9CC,oCAA+C;;IAC/C,gCAAkC;;IAClC,uCAAwB;;IACxB,wCAAyB;;IACzB,mCAAmB;;;;;;;ACtBrB;MAEM,iBAAiB,GAAG,CAAC;;;;AAI3B,0CAIC;;;IAHC,+CAAmB;;IACnB,gDAAkB;;IAClB,+CAAiB;;AAGnB,MAAa,oBAAqB,SAAQ,SAAmB;;;;IAM3D,YAAY,OAAoC;QAC9C,KAAK,CAAC,OAAO,CAAC,CAAC;QANR,gBAAW,GAAgB,MAAM,CAAC;QAOzC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;SAC3C;QACD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC;QAC5C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,iBAAiB,CAAC;QACtD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;KACjB;CACF;;;IAfC,2CAA2C;;IAC3C,wCAAmB;;IACnB,yCAAkB;;IAClB,wCAAiB;;;;;;;AChBnB,MAGa,aAAc,SAAQ,SAAiB;IAApD;;QAAuD,gBAAW,GAAgB,UAAU,CAAC;KAAE;CAAA;;;IAAxC,oCAAsC;;;;;;;ACH7F;;;AAIA,kCAKC;;;IAJC,0CAAyB;;IACzB,qCAAgB;;IAChB,qCAAgB;;IAChB,0CAAsB;;AAGxB,MAAa,YAAa,SAAQ,SAAiB;;;;IASjD,YAAY,OAA4B;QACtC,KAAK,CAAC,OAAO,CAAC,CAAC;QATR,gBAAW,GAAgB,SAAS,CAAC;QAU5C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC;QACjD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC;QACnD,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,EAAE,CAAC;QACzD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,KAAK,CAAC;KACjD;CACF;;;IAjBC,mCAA8C;;IAC9C,mCAAyB;;IACzB,8BAAe;;IACf,8BAAe;;IACf,sCAAuB;;IACvB,yCAA0B;;IAC1B,mCAAqB;;;;;;;ACjBvB;;;AAEA,mBAKC;;;IAJC,sBAAe;;IACf,qBAAc;;IACd,yBAAmB;;IACnB,wBAAkB;;;;;AAGpB,kCAAgF;;;IAAhB,oCAAc;;AAE9E,MAAa,YAAa,SAAQ,aAAa;;;;IAG7C,YAAY,OAA4B;QACtC,KAAK,CAAC;YACJ,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;YAClC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;SAC3C,CAAC,CAAC;QAXI,gBAAW,GAAgB,SAAS,CAAC;KAY7C;CACF;;;IAbC,mCAA8C;;;;;;AAehD,SAAS,UAAU,CAAC,QAAgB;IAClC,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;QACnC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACnC,OAAO,QAAQ,CAAC,GAAG;;;;QAAC,IAAI;;kBAChB,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC;YAEhF,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAChE,OAAO;oBACL,KAAK,EAAE,WAAW;oBAClB,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,EAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAC,CAAC;iBAChH,CAAC;aACH;YACD,OAAO,EAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;SACxD,EAAC,CAAC;KACJ;IACD,OAAO,CAAC,EAAC,KAAK,EAAE,2CAA2C,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;CAC1F;;;;;;AAED,SAAS,mBAAmB,CAAC,CAAO,EAAE,CAAO;IAC3C,IAAI,CAAC,IAAI,IAAI,EAAE;QACb,OAAO,CAAC,CAAC,CAAC;KACX;IACD,IAAI,CAAC,IAAI,IAAI,EAAE;QACb,OAAO,CAAC,CAAC;KACV;IACD,OAAO,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;CACvC;;;;;;;AAED,SAAS,iBAAiB,CAAC,SAAiB,EAAE,QAAgB,EAAE,KAAa;;QACvE,YAAY,GAAG,EAAE;IACrB,YAAY,IAAI,SAAS,GAAG,SAAS,GAAG,GAAG,GAAG,EAAE,CAAC;IACjD,YAAY,IAAI,QAAQ,GAAG,QAAQ,GAAG,GAAG,GAAG,EAAE,CAAC;IAC/C,YAAY,IAAI,KAAK,GAAG,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;IAC1C,OAAO,YAAY,CAAC;CACrB;;;;;;;;;;;;;;;;;;;;;;;;"}
\No newline at end of file