{"version":3,"file":"ngx-google-translate-ui.mjs","sources":["../../../projects/ngx-google-translate-ui/src/lib/meta/languages.ts","../../../projects/ngx-google-translate-ui/src/lib/components/form/ngx-google-translate-ui-form.service.ts","../../../projects/ngx-google-translate-ui/src/lib/services/google-translation.service.ts","../../../projects/ngx-google-translate-ui/src/lib/components/presentation/translation-results/translation-results.component.ts","../../../projects/ngx-google-translate-ui/src/lib/components/presentation/translation-results/translation-results.component.html","../../../projects/ngx-google-translate-ui/src/lib/components/presentation/translation-fields/translation-fields.component.ts","../../../projects/ngx-google-translate-ui/src/lib/components/presentation/translation-fields/translation-fields.component.html","../../../projects/ngx-google-translate-ui/src/lib/components/container/ngx-google-translate-ui.component.ts","../../../projects/ngx-google-translate-ui/src/lib/components/container/ngx-google-translate-ui.component.html","../../../projects/ngx-google-translate-ui/src/lib/ngx-google-translate-ui.module.ts","../../../projects/ngx-google-translate-ui/src/public-api.ts","../../../projects/ngx-google-translate-ui/src/ngx-google-translate-ui.ts"],"sourcesContent":["export const LANGS: { [key: string]: string } = {\n\t// auto: 'Automatic', // not really needed\n\taf: 'Afrikaans',\n\tsq: 'Albanian',\n\tam: 'Amharic',\n\tar: 'Arabic',\n\thy: 'Armenian',\n\taz: 'Azerbaijani',\n\teu: 'Basque',\n\tbe: 'Belarusian',\n\tbn: 'Bengali',\n\tbs: 'Bosnian',\n\tbg: 'Bulgarian',\n\tca: 'Catalan',\n\tceb: 'Cebuano',\n\tny: 'Chichewa',\n\t'zh-cn': 'Chinese Simplified',\n\t'zh-tw': 'Chinese Traditional',\n\tco: 'Corsican',\n\thr: 'Croatian',\n\tcs: 'Czech',\n\tda: 'Danish',\n\tnl: 'Dutch',\n\ten: 'English',\n\teo: 'Esperanto',\n\tet: 'Estonian',\n\ttl: 'Filipino',\n\tfi: 'Finnish',\n\tfr: 'French',\n\tfy: 'Frisian',\n\tgl: 'Galician',\n\tka: 'Georgian',\n\tde: 'German',\n\tel: 'Greek',\n\tgu: 'Gujarati',\n\tht: 'Haitian Creole',\n\tha: 'Hausa',\n\thaw: 'Hawaiian',\n\tiw: 'Hebrew',\n\thi: 'Hindi',\n\thmn: 'Hmong',\n\thu: 'Hungarian',\n\tis: 'Icelandic',\n\tig: 'Igbo',\n\tid: 'Indonesian',\n\tga: 'Irish',\n\tit: 'Italian',\n\tja: 'Japanese',\n\tjw: 'Javanese',\n\tkn: 'Kannada',\n\tkk: 'Kazakh',\n\tkm: 'Khmer',\n\tko: 'Korean',\n\tku: 'Kurdish (Kurmanji)',\n\tky: 'Kyrgyz',\n\tlo: 'Lao',\n\tla: 'Latin',\n\tlv: 'Latvian',\n\tlt: 'Lithuanian',\n\tlb: 'Luxembourgish',\n\tmk: 'Macedonian',\n\tmg: 'Malagasy',\n\tms: 'Malay',\n\tml: 'Malayalam',\n\tmt: 'Maltese',\n\tmi: 'Maori',\n\tmr: 'Marathi',\n\tmn: 'Mongolian',\n\tmy: 'Myanmar (Burmese)',\n\tne: 'Nepali',\n\tno: 'Norwegian',\n\tps: 'Pashto',\n\tfa: 'Persian',\n\tpl: 'Polish',\n\tpt: 'Portuguese',\n\tma: 'Punjabi',\n\tro: 'Romanian',\n\tru: 'Russian',\n\tsm: 'Samoan',\n\tgd: 'Scots Gaelic',\n\tsr: 'Serbian',\n\tst: 'Sesotho',\n\tsn: 'Shona',\n\tsd: 'Sindhi',\n\tsi: 'Sinhala',\n\tsk: 'Slovak',\n\tsl: 'Slovenian',\n\tso: 'Somali',\n\tes: 'Spanish',\n\tsu: 'Sundanese',\n\tsw: 'Swahili',\n\tsv: 'Swedish',\n\ttg: 'Tajik',\n\tta: 'Tamil',\n\tte: 'Telugu',\n\tth: 'Thai',\n\ttr: 'Turkish',\n\tuk: 'Ukrainian',\n\tur: 'Urdu',\n\tuz: 'Uzbek',\n\tvi: 'Vietnamese',\n\tcy: 'Welsh',\n\txh: 'Xhosa',\n\tyi: 'Yiddish',\n\tyo: 'Yoruba',\n\tzu: 'Zulu'\n}\n\nexport const POPULAR_LANGS: { [key: string]: string } = {\n\thr: 'Croatian',\n\tcs: 'Czech',\n\ten: 'English',\n\tfr: 'French',\n\tde: 'German',\n\tit: 'Italian',\n\tsk: 'Slovak',\n\tsl: 'Slovenian'\n}\n","import { Injectable } from '@angular/core'\nimport { FormGroup, NonNullableFormBuilder, Validators } from '@angular/forms'\nimport { INgxGoogleTranslateUiForm } from './ngx-google-translate-ui-form.model'\n\n@Injectable()\nexport class NgxGoogleTranslateUiFormService {\n\tprivate form!: FormGroup<INgxGoogleTranslateUiForm>\n\n\tconstructor(private formBuilder: NonNullableFormBuilder) {}\n\n\tcreateFormGroup(): FormGroup<INgxGoogleTranslateUiForm> {\n\t\tthis.form = this.formBuilder.group<INgxGoogleTranslateUiForm>({\n\t\t\tapiKey: this.formBuilder.control('', Validators.required),\n\t\t\ttranslationText: this.formBuilder.control('', Validators.required),\n\t\t\ttargetLangs: this.formBuilder.control([], Validators.required),\n\t\t\tonlyPopularLangs: this.formBuilder.control(false)\n\t\t})\n\n\t\treturn this.form\n\t}\n}\n","import { HttpClient, HttpErrorResponse } from '@angular/common/http'\nimport { Injectable } from '@angular/core'\nimport { MatSnackBar } from '@angular/material/snack-bar'\nimport { Observable, throwError } from 'rxjs'\nimport { catchError, map } from 'rxjs/operators'\nimport {\n\tIGoogleTranslationRequest,\n\tIGoogleTranslationResponse,\n\tIGoogleTranslationsData\n} from '../models'\n\nconst GOOGLE_TRANSLATION_URL =\n\t'https://translation.googleapis.com/language/translate/v2?key='\n\n@Injectable({ providedIn: 'root' })\nexport class GoogleTranslationService {\n\tconstructor(private httpClient: HttpClient, private snackBar: MatSnackBar) {}\n\n\t/**\n\t * @param   apiKey - User's Google API key.\n\t * @param   targetLang - Language code used in translation - (ISO-639 codes).\n\t * @param   text - Text to translate - one or multiple strings.\n\t * @param   errorCallback - Optional, custom error callback function. Defaulted to snackbar message and rethrow error.\n\t *\n\t *\n\t * @returns Observable - Returns texts translated into target language.\n\t */\n\tgetTranslation$(\n\t\tapiKey: string,\n\t\ttargetLang: string,\n\t\ttext: string | string[],\n\t\terrorCallback?: () => Observable<any>\n\t): Observable<IGoogleTranslationsData> {\n\t\tconst requestBody: IGoogleTranslationRequest = {\n\t\t\tq: text,\n\t\t\ttarget: targetLang\n\t\t}\n\n\t\treturn this.httpClient\n\t\t\t.post<IGoogleTranslationResponse>(\n\t\t\t\t`${GOOGLE_TRANSLATION_URL}${apiKey}`,\n\t\t\t\trequestBody\n\t\t\t)\n\t\t\t.pipe(\n\t\t\t\tmap((response: IGoogleTranslationResponse) => response.data),\n\t\t\t\tcatchError((error: HttpErrorResponse) => {\n\t\t\t\t\treturn errorCallback\n\t\t\t\t\t\t? errorCallback()\n\t\t\t\t\t\t: this.showErrorSnackbarMessage(error)\n\t\t\t\t})\n\t\t\t)\n\t}\n\n\tprivate showErrorSnackbarMessage(\n\t\terror: HttpErrorResponse\n\t): Observable<never> {\n\t\tthis.snackBar.open(\n\t\t\t`Something went wrong on contacting Cloud Translation API!`,\n\t\t\t'X',\n\t\t\t{\n\t\t\t\tduration: 5000\n\t\t\t}\n\t\t)\n\n\t\treturn throwError(() => error)\n\t}\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core'\nimport { MatSnackBar } from '@angular/material/snack-bar'\nimport { ITranslationResultUi } from '../../../models'\n\n@Component({\n\tselector: 'ngx-google-translation-results',\n\ttemplateUrl: './translation-results.component.html',\n\tstyleUrls: ['./translation-results.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TranslationResultsComponent {\n\t@Input()\n\ttranslationResult: ITranslationResultUi[] = []\n\n\tconstructor(private snackBar: MatSnackBar) {}\n\n\topenSnackBar(lang?: string): void {\n\t\tthis.snackBar.open(\n\t\t\tlang\n\t\t\t\t? `Copied translation for ${lang} language.`\n\t\t\t\t: `Copied translation for all languages.`,\n\t\t\t'X',\n\t\t\t{\n\t\t\t\thorizontalPosition: 'left',\n\t\t\t\tverticalPosition: 'bottom',\n\t\t\t\tduration: 4000\n\t\t\t}\n\t\t)\n\t}\n\n\tonCopyAll(): string {\n\t\treturn JSON.stringify(this.translationResult)\n\t}\n}\n","<div class=\"translations\" *ngFor=\"let translation of translationResult\">\n\t<span>{{ translation.language }}:</span>\n\n\t<div class=\"translations__result\">\n\t\t<span>{{ translation.translation }}</span>\n\n\t\t<button\n\t\t\tmat-icon-button\n\t\t\t[cdkCopyToClipboard]=\"translation.translation\"\n\t\t\t(click)=\"openSnackBar(translation.language)\"\n\t\t>\n\t\t\t<mat-icon matListIcon matTooltip=\"Copy translation\"\n\t\t\t\t>content_copy</mat-icon\n\t\t\t>\n\t\t</button>\n\t</div>\n\n\t<mat-divider class=\"breaker\"></mat-divider>\n</div>\n\n<button\n\tclass=\"copy-all\"\n\tmat-icon-button\n\tcolor=\"primary\"\n\t[cdkCopyToClipboard]=\"onCopyAll()\"\n\t(click)=\"openSnackBar()\"\n\tmatTooltip=\"Copy all translated data\"\n>\n\t<mat-icon>copy_all</mat-icon>\n</button>\n","import { ChangeDetectionStrategy, Component } from '@angular/core'\nimport { ControlContainer, FormGroup } from '@angular/forms'\nimport { LANGS, POPULAR_LANGS } from '../../../meta'\nimport { INgxGoogleTranslateUiForm } from '../../form'\n\nconst CLOUD_CREDENTIALS_TOOLTIP_MSG = `\nTo get an API key:\n    1. Go to the Google Cloud Console.\n    2. Click the project drop-down and select or create the project for which you want to add an API key.\n    3. Click the menu button and select APIs & Services > Credentials.\n    4. On the Credentials page, click + Create Credentials > API key. The API key created dialog displays the newly created API key.\n    5. Click Close. The new API key is listed on the Credentials page under API Keys.`\n\n@Component({\n\tselector: 'ngx-google-translation-fields',\n\ttemplateUrl: './translation-fields.component.html',\n\tstyleUrls: ['./translation-fields.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TranslationFieldsComponent {\n\treadonly ALL_LANGS = LANGS\n\treadonly POPULAR_LANGS = POPULAR_LANGS\n\treadonly CLOUD_CRED_TOOLTIP_MSG = CLOUD_CREDENTIALS_TOOLTIP_MSG\n\n\tformGroup!: FormGroup<INgxGoogleTranslateUiForm>\n\thideKey = false\n\n\tconstructor(private parentForm: ControlContainer) {}\n\n\tngOnInit(): void {\n\t\tthis.formGroup = this.parentForm\n\t\t\t.control as FormGroup<INgxGoogleTranslateUiForm>\n\t}\n\n\toriginalOrder = (): number => {\n\t\treturn 0\n\t}\n\n\tonCloudCredentialsHelpClick(e: Event): void {\n\t\te.stopPropagation()\n\t\twindow.open('https://console.cloud.google.com/', 'parent')\n\t}\n\n\tonPopularLangsChange(): void {\n\t\tthis.formGroup.controls.targetLangs.reset([])\n\t}\n}\n","<mat-form-field class=\"w-80\" appearance=\"fill\">\n\t<mat-label>Google API key</mat-label>\n\t<input\n\t\tmatInput\n\t\t[formControl]=\"formGroup.controls.apiKey\"\n\t\tplaceholder=\"Google API key\"\n\t\t[type]=\"hideKey ? 'password' : 'text'\"\n\t/>\n\n\t<mat-icon matSuffix (click)=\"hideKey = !hideKey\">{{\n\t\thideKey ? 'visibility_off' : 'visibility'\n\t}}</mat-icon>\n\n\t<mat-icon\n\t\tmatPrefix\n\t\tclass=\"key-info\"\n\t\t(click)=\"onCloudCredentialsHelpClick($event)\"\n\t\t[matTooltip]=\"CLOUD_CRED_TOOLTIP_MSG\"\n\t\tmatTooltipClass=\"tooltip-message\"\n\t\tmatTooltipPosition=\"below\"\n\t>\n\t\thelp_outline\n\t</mat-icon>\n\t<mat-error *ngIf=\"formGroup.controls.apiKey.invalid\"\n\t\t>Required field</mat-error\n\t>\n</mat-form-field>\n\n<mat-form-field class=\"full-width\" appearance=\"fill\">\n\t<mat-label>Insert text</mat-label>\n\t<textarea\n\t\tmatInput\n\t\tclass=\"textarea\"\n\t\t[formControl]=\"formGroup.controls.translationText\"\n\t\tplaceholder=\"Text to translate\"\n\t></textarea>\n\t<mat-error *ngIf=\"formGroup.controls.translationText.invalid\"\n\t\t>Required field</mat-error\n\t>\n</mat-form-field>\n\n<mat-form-field appearance=\"fill\" class=\"full-width\">\n\t<mat-label>Languages</mat-label>\n\t<mat-select [formControl]=\"formGroup.controls.targetLangs\" multiple>\n\t\t<mat-option\n\t\t\t*ngFor=\"\n\t\t\t\tlet lang of (formGroup.controls.onlyPopularLangs.value\n\t\t\t\t\t? POPULAR_LANGS\n\t\t\t\t\t: ALL_LANGS\n\t\t\t\t) | keyvalue : originalOrder\n\t\t\t\"\n\t\t\t[value]=\"lang.key\"\n\t\t\t>{{ lang.value }}</mat-option\n\t\t>\n\t</mat-select>\n\t<mat-error *ngIf=\"formGroup.controls.targetLangs.invalid\"\n\t\t>Choose at least one language</mat-error\n\t>\n</mat-form-field>\n\n<mat-slide-toggle\n\t[formControl]=\"formGroup.controls.onlyPopularLangs\"\n\t(change)=\"onPopularLangsChange()\"\n\t>Only popular languages</mat-slide-toggle\n>\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tInject,\n\tOnInit,\n\tOptional\n} from '@angular/core'\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog'\nimport {\n\tcatchError,\n\tEMPTY,\n\tforkJoin,\n\tmap,\n\tObservable,\n\tof,\n\tSubject,\n\tswitchMap\n} from 'rxjs'\nimport { LANGS } from '../../meta'\nimport {\n\tINgxGoogleTranslateUiDialogData,\n\tITranslationResultUi\n} from '../../models'\nimport { GoogleTranslationService } from '../../services/google-translation.service'\nimport { NgxGoogleTranslateUiFormService } from '../form'\n\n@Component({\n\tselector: 'ngx-google-translate-ui',\n\ttemplateUrl: './ngx-google-translate-ui.component.html',\n\tstyleUrls: ['./ngx-google-translate-ui.component.scss'],\n\tproviders: [NgxGoogleTranslateUiFormService],\n\tchangeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgxGoogleTranslateUiComponent implements OnInit {\n\ttranslations$: Observable<ITranslationResultUi[] | undefined> | undefined\n\tformGroup = this.formService.createFormGroup()\n\n\tprivate search$ = new Subject<boolean>()\n\n\tconstructor(\n\t\tprivate formService: NgxGoogleTranslateUiFormService,\n\t\tprivate googleService: GoogleTranslationService,\n\t\t@Optional()\n\t\t@Inject(MAT_DIALOG_DATA)\n\t\tpublic dialogData: INgxGoogleTranslateUiDialogData\n\t) {}\n\n\tngOnInit(): void {\n\t\tthis.translations$ = this.setTranslationSearch$()\n\n\t\tif (!this.dialogData) {\n\t\t\treturn\n\t\t}\n\n\t\tthis.formGroup.patchValue({\n\t\t\tapiKey: this.dialogData.googleApiKey,\n\t\t\ttranslationText: this.dialogData.translationText\n\t\t})\n\t}\n\n\tonSearch(): void {\n\t\tthis.search$.next(true)\n\t}\n\n\tonReset(): void {\n\t\tthis.formGroup.patchValue({\n\t\t\ttranslationText: '',\n\t\t\ttargetLangs: []\n\t\t})\n\n\t\tthis.search$.next(false)\n\t}\n\n\tprivate setTranslationSearch$(): Observable<\n\t\tITranslationResultUi[] | undefined\n\t> {\n\t\treturn this.search$.pipe(\n\t\t\tswitchMap(search => (search ? this.getTranslations$() : of(undefined)))\n\t\t)\n\t}\n\n\tprivate getTranslations$(): Observable<ITranslationResultUi[]> {\n\t\tconst { apiKey, targetLangs, translationText } =\n\t\t\tthis.formGroup.getRawValue()\n\n\t\tconst translations$ = targetLangs.map(targetLang =>\n\t\t\tthis.googleService\n\t\t\t\t.getTranslation$(apiKey, targetLang, translationText)\n\t\t\t\t.pipe(\n\t\t\t\t\tmap(result => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tlanguage: LANGS[targetLang.toLowerCase()],\n\t\t\t\t\t\t\ttranslation: result.translations?.[0]?.translatedText ?? ''\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\tcatchError(() => EMPTY)\n\t\t\t\t)\n\t\t)\n\n\t\treturn forkJoin(translations$)\n\t}\n}\n","<mat-card class=\"container\">\n\t<mat-card-header>\n\t\t<mat-card-title>Google Multi Translator</mat-card-title>\n\t\t<mat-card-subtitle>Cloud Translation API</mat-card-subtitle>\n\t</mat-card-header>\n\n\t<mat-card-content>\n\t\t<form [formGroup]=\"formGroup\">\n\t\t\t<ngx-google-translation-fields></ngx-google-translation-fields>\n\t\t</form>\n\t</mat-card-content>\n\n\t<mat-card-actions align=\"end\" class=\"actions\">\n\t\t<button\n\t\t\tid=\"reset\"\n\t\t\tmat-raised-button\n\t\t\t(click)=\"onReset()\"\n\t\t\tmatTooltip=\"Clear text and selected languages\"\n\t\t>\n\t\t\tReset\n\t\t</button>\n\n\t\t<button\n\t\t\tid=\"search\"\n\t\t\tmat-raised-button\n\t\t\tcolor=\"primary\"\n\t\t\t(click)=\"onSearch()\"\n\t\t\t[disabled]=\"!formGroup.valid\"\n\t\t>\n\t\t\tTranslate\n\t\t</button>\n\t</mat-card-actions>\n\n\t<ngx-google-translation-results\n\t\t*ngIf=\"translations$ | async as translations\"\n\t\t[translationResult]=\"translations\"\n\t></ngx-google-translation-results>\n</mat-card>\n","import { ClipboardModule } from '@angular/cdk/clipboard'\nimport { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { ReactiveFormsModule } from '@angular/forms'\nimport { MatButtonModule } from '@angular/material/button'\nimport { MatCardModule } from '@angular/material/card'\nimport { MatDividerModule } from '@angular/material/divider'\nimport { MatIconModule } from '@angular/material/icon'\nimport { MatInputModule } from '@angular/material/input'\nimport { MatListModule } from '@angular/material/list'\nimport { MatSelectModule } from '@angular/material/select'\nimport { MatSnackBarModule } from '@angular/material/snack-bar'\nimport { MatTooltipModule } from '@angular/material/tooltip'\nimport { MatDialogModule } from '@angular/material/dialog'\nimport { MatSliderModule } from '@angular/material/slider'\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle'\nimport { NgxGoogleTranslateUiComponent } from './components/container/ngx-google-translate-ui.component'\nimport { TranslationResultsComponent } from './components/presentation/translation-results/translation-results.component'\nimport { NoopAnimationsModule } from '@angular/platform-browser/animations'\nimport { TranslationFieldsComponent } from './components/presentation/translation-fields/translation-fields.component'\n\n@NgModule({\n\tdeclarations: [\n\t\tNgxGoogleTranslateUiComponent,\n\t\tTranslationResultsComponent,\n\t\tTranslationFieldsComponent\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tReactiveFormsModule,\n\t\tMatInputModule,\n\t\tMatSelectModule,\n\t\tMatListModule,\n\t\tMatDividerModule,\n\t\tMatButtonModule,\n\t\tMatCardModule,\n\t\tMatTooltipModule,\n\t\tMatIconModule,\n\t\tMatSnackBarModule,\n\t\tMatDialogModule,\n\t\tMatSliderModule,\n\t\tMatSlideToggleModule,\n\t\tNoopAnimationsModule,\n\t\tClipboardModule\n\t],\n\texports: [NgxGoogleTranslateUiComponent]\n})\nexport class NgxGoogleTranslateUiModule {}\n","/*\n * Public API Surface of ngx-google-translate-ui\n */\n\nexport { NgxGoogleTranslateUiComponent } from './lib/components/container/ngx-google-translate-ui.component'\nexport { NgxGoogleTranslateUiModule } from './lib/ngx-google-translate-ui.module'\n\nexport {\n\tIGoogleTranslationsData,\n\tIGoogleTranslation\n} from './lib/models/google-translation.model'\nexport { GoogleTranslationService } from './lib/services/google-translation.service'\n\nexport { INgxGoogleTranslateUiDialogData } from './lib/models/ngx-google-translate-ui-dialog-data.model'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i5","i7","i3","i4","i6","i8","map","catchError","i8.TranslationResultsComponent","i9.TranslationFieldsComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAO,MAAM,KAAK,GAA8B;;AAE/C,IAAA,EAAE,EAAE,WAAW;AACf,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,QAAQ;AACZ,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,EAAE,EAAE,aAAa;AACjB,IAAA,EAAE,EAAE,QAAQ;AACZ,IAAA,EAAE,EAAE,YAAY;AAChB,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,WAAW;AACf,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,OAAO,EAAE,oBAAoB;AAC7B,IAAA,OAAO,EAAE,qBAAqB;AAC9B,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,EAAE,EAAE,OAAO;AACX,IAAA,EAAE,EAAE,QAAQ;AACZ,IAAA,EAAE,EAAE,OAAO;AACX,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,WAAW;AACf,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,QAAQ;AACZ,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,EAAE,EAAE,QAAQ;AACZ,IAAA,EAAE,EAAE,OAAO;AACX,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,EAAE,EAAE,gBAAgB;AACpB,IAAA,EAAE,EAAE,OAAO;AACX,IAAA,GAAG,EAAE,UAAU;AACf,IAAA,EAAE,EAAE,QAAQ;AACZ,IAAA,EAAE,EAAE,OAAO;AACX,IAAA,GAAG,EAAE,OAAO;AACZ,IAAA,EAAE,EAAE,WAAW;AACf,IAAA,EAAE,EAAE,WAAW;AACf,IAAA,EAAE,EAAE,MAAM;AACV,IAAA,EAAE,EAAE,YAAY;AAChB,IAAA,EAAE,EAAE,OAAO;AACX,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,QAAQ;AACZ,IAAA,EAAE,EAAE,OAAO;AACX,IAAA,EAAE,EAAE,QAAQ;AACZ,IAAA,EAAE,EAAE,oBAAoB;AACxB,IAAA,EAAE,EAAE,QAAQ;AACZ,IAAA,EAAE,EAAE,KAAK;AACT,IAAA,EAAE,EAAE,OAAO;AACX,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,YAAY;AAChB,IAAA,EAAE,EAAE,eAAe;AACnB,IAAA,EAAE,EAAE,YAAY;AAChB,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,EAAE,EAAE,OAAO;AACX,IAAA,EAAE,EAAE,WAAW;AACf,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,OAAO;AACX,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,WAAW;AACf,IAAA,EAAE,EAAE,mBAAmB;AACvB,IAAA,EAAE,EAAE,QAAQ;AACZ,IAAA,EAAE,EAAE,WAAW;AACf,IAAA,EAAE,EAAE,QAAQ;AACZ,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,QAAQ;AACZ,IAAA,EAAE,EAAE,YAAY;AAChB,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,QAAQ;AACZ,IAAA,EAAE,EAAE,cAAc;AAClB,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,OAAO;AACX,IAAA,EAAE,EAAE,QAAQ;AACZ,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,QAAQ;AACZ,IAAA,EAAE,EAAE,WAAW;AACf,IAAA,EAAE,EAAE,QAAQ;AACZ,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,WAAW;AACf,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,OAAO;AACX,IAAA,EAAE,EAAE,OAAO;AACX,IAAA,EAAE,EAAE,QAAQ;AACZ,IAAA,EAAE,EAAE,MAAM;AACV,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,WAAW;AACf,IAAA,EAAE,EAAE,MAAM;AACV,IAAA,EAAE,EAAE,OAAO;AACX,IAAA,EAAE,EAAE,YAAY;AAChB,IAAA,EAAE,EAAE,OAAO;AACX,IAAA,EAAE,EAAE,OAAO;AACX,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,QAAQ;AACZ,IAAA,EAAE,EAAE,MAAM;CACV,CAAA;AAEM,MAAM,aAAa,GAA8B;AACvD,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,EAAE,EAAE,OAAO;AACX,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,QAAQ;AACZ,IAAA,EAAE,EAAE,QAAQ;AACZ,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,EAAE,EAAE,QAAQ;AACZ,IAAA,EAAE,EAAE,WAAW;CACf;;MChHY,+BAA+B,CAAA;AAG3C,IAAA,WAAA,CAAoB,WAAmC,EAAA;QAAnC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAwB;KAAI;IAE3D,eAAe,GAAA;QACd,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAA4B;AAC7D,YAAA,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACzD,YAAA,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AAClE,YAAA,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;YAC9D,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;AACjD,SAAA,CAAC,CAAA;QAEF,OAAO,IAAI,CAAC,IAAI,CAAA;KAChB;;4HAdW,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;gIAA/B,+BAA+B,EAAA,CAAA,CAAA;2FAA/B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAD3C,UAAU;;;ACOX,MAAM,sBAAsB,GAC3B,+DAA+D,CAAA;MAGnD,wBAAwB,CAAA;IACpC,WAAoB,CAAA,UAAsB,EAAU,QAAqB,EAAA;QAArD,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QAAU,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAa;KAAI;AAE7E;;;;;;;;AAQG;AACH,IAAA,eAAe,CACd,MAAc,EACd,UAAkB,EAClB,IAAuB,EACvB,aAAqC,EAAA;AAErC,QAAA,MAAM,WAAW,GAA8B;AAC9C,YAAA,CAAC,EAAE,IAAI;AACP,YAAA,MAAM,EAAE,UAAU;SAClB,CAAA;QAED,OAAO,IAAI,CAAC,UAAU;aACpB,IAAI,CACJ,GAAG,sBAAsB,CAAA,EAAG,MAAM,CAAE,CAAA,EACpC,WAAW,CACX;AACA,aAAA,IAAI,CACJ,GAAG,CAAC,CAAC,QAAoC,KAAK,QAAQ,CAAC,IAAI,CAAC,EAC5D,UAAU,CAAC,CAAC,KAAwB,KAAI;AACvC,YAAA,OAAO,aAAa;kBACjB,aAAa,EAAE;AACjB,kBAAE,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAA;SACvC,CAAC,CACF,CAAA;KACF;AAEO,IAAA,wBAAwB,CAC/B,KAAwB,EAAA;QAExB,IAAI,CAAC,QAAQ,CAAC,IAAI,CACjB,CAA2D,yDAAA,CAAA,EAC3D,GAAG,EACH;AACC,YAAA,QAAQ,EAAE,IAAI;AACd,SAAA,CACD,CAAA;AAED,QAAA,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC,CAAA;KAC9B;;qHAlDW,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,cADX,MAAM,EAAA,CAAA,CAAA;2FACnB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;MCJrB,2BAA2B,CAAA;AAIvC,IAAA,WAAA,CAAoB,QAAqB,EAAA;QAArB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAa;QAFzC,IAAiB,CAAA,iBAAA,GAA2B,EAAE,CAAA;KAED;AAE7C,IAAA,YAAY,CAAC,IAAa,EAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CACjB,IAAI;cACD,CAA0B,uBAAA,EAAA,IAAI,CAAY,UAAA,CAAA;AAC5C,cAAE,CAAA,qCAAA,CAAuC,EAC1C,GAAG,EACH;AACC,YAAA,kBAAkB,EAAE,MAAM;AAC1B,YAAA,gBAAgB,EAAE,QAAQ;AAC1B,YAAA,QAAQ,EAAE,IAAI;AACd,SAAA,CACD,CAAA;KACD;IAED,SAAS,GAAA;QACR,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;KAC7C;;wHAtBW,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,2BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,0HCVxC,qxBA8BA,EAAA,MAAA,EAAA,CAAA,wYAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDpBa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;+BACC,gCAAgC,EAAA,eAAA,EAGzB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qxBAAA,EAAA,MAAA,EAAA,CAAA,wYAAA,CAAA,EAAA,CAAA;kGAI/C,iBAAiB,EAAA,CAAA;sBADhB,KAAK;;;AENP,MAAM,6BAA6B,GAAG,CAAA;;;;;;sFAMgD,CAAA;MAQzE,0BAA0B,CAAA;AAQtC,IAAA,WAAA,CAAoB,UAA4B,EAAA;QAA5B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAkB;QAPvC,IAAS,CAAA,SAAA,GAAG,KAAK,CAAA;QACjB,IAAa,CAAA,aAAA,GAAG,aAAa,CAAA;QAC7B,IAAsB,CAAA,sBAAA,GAAG,6BAA6B,CAAA;QAG/D,IAAO,CAAA,OAAA,GAAG,KAAK,CAAA;QASf,IAAa,CAAA,aAAA,GAAG,MAAa;AAC5B,YAAA,OAAO,CAAC,CAAA;AACT,SAAC,CAAA;KATmD;IAEpD,QAAQ,GAAA;AACP,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU;AAC9B,aAAA,OAA+C,CAAA;KACjD;AAMD,IAAA,2BAA2B,CAAC,CAAQ,EAAA;QACnC,CAAC,CAAC,eAAe,EAAE,CAAA;AACnB,QAAA,MAAM,CAAC,IAAI,CAAC,mCAAmC,EAAE,QAAQ,CAAC,CAAA;KAC1D;IAED,oBAAoB,GAAA;QACnB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;KAC7C;;uHA1BW,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,qECnBvC,22DAiEA,EAAA,MAAA,EAAA,CAAA,kTAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,8BAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FD9Ca,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;+BACC,+BAA+B,EAAA,eAAA,EAGxB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,22DAAA,EAAA,MAAA,EAAA,CAAA,kTAAA,CAAA,EAAA,CAAA;;;MEgBnC,6BAA6B,CAAA;AAMzC,IAAA,WAAA,CACS,WAA4C,EAC5C,aAAuC,EAGxC,UAA2C,EAAA;QAJ1C,IAAW,CAAA,WAAA,GAAX,WAAW,CAAiC;QAC5C,IAAa,CAAA,aAAA,GAAb,aAAa,CAA0B;QAGxC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAiC;AATnD,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAA;AAEtC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAW,CAAA;KAQpC;IAEJ,QAAQ,GAAA;AACP,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAA;AAEjD,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACrB,OAAM;AACN,SAAA;AAED,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;AACzB,YAAA,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY;AACpC,YAAA,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe;AAChD,SAAA,CAAC,CAAA;KACF;IAED,QAAQ,GAAA;AACP,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;KACvB;IAED,OAAO,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;AACzB,YAAA,eAAe,EAAE,EAAE;AACnB,YAAA,WAAW,EAAE,EAAE;AACf,SAAA,CAAC,CAAA;AAEF,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;KACxB;IAEO,qBAAqB,GAAA;AAG5B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CACvB,SAAS,CAAC,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CACvE,CAAA;KACD;IAEO,gBAAgB,GAAA;AACvB,QAAA,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,GAC7C,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAA;AAE7B,QAAA,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,IAC/C,IAAI,CAAC,aAAa;AAChB,aAAA,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,eAAe,CAAC;AACpD,aAAA,IAAI,CACJO,KAAG,CAAC,MAAM,IAAG;YACZ,OAAO;AACN,gBAAA,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;gBACzC,WAAW,EAAE,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE,cAAc,IAAI,EAAE;aAC3D,CAAA;SACD,CAAC,EACFC,YAAU,CAAC,MAAM,KAAK,CAAC,CACvB,CACF,CAAA;AAED,QAAA,OAAO,QAAQ,CAAC,aAAa,CAAC,CAAA;KAC9B;;AAnEW,6BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,mGAUhC,eAAe,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAVZ,6BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,EAH9B,QAAA,EAAA,yBAAA,EAAA,SAAA,EAAA,CAAC,+BAA+B,CAAC,0BC9B7C,g/BAsCA,EAAA,MAAA,EAAA,CAAA,yIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,2BAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAP,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDLa,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAPzC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,aAGxB,CAAC,+BAA+B,CAAC,EAC3B,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,g/BAAA,EAAA,MAAA,EAAA,CAAA,yIAAA,CAAA,EAAA,CAAA;;0BAW7C,QAAQ;;0BACR,MAAM;2BAAC,eAAe,CAAA;;;MEIZ,0BAA0B,CAAA;;uHAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA1B,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,iBAxBrC,6BAA6B;QAC7B,2BAA2B;AAC3B,QAAA,0BAA0B,aAG1B,YAAY;QACZ,mBAAmB;QACnB,cAAc;QACd,eAAe;QACf,aAAa;QACb,gBAAgB;QAChB,eAAe;QACf,aAAa;QACb,gBAAgB;QAChB,aAAa;QACb,iBAAiB;QACjB,eAAe;QACf,eAAe;QACf,oBAAoB;QACpB,oBAAoB;AACpB,QAAA,eAAe,aAEN,6BAA6B,CAAA,EAAA,CAAA,CAAA;AAE3B,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,YAnBrC,YAAY;QACZ,mBAAmB;QACnB,cAAc;QACd,eAAe;QACf,aAAa;QACb,gBAAgB;QAChB,eAAe;QACf,aAAa;QACb,gBAAgB;QAChB,aAAa;QACb,iBAAiB;QACjB,eAAe;QACf,eAAe;QACf,oBAAoB;QACpB,oBAAoB;QACpB,eAAe,CAAA,EAAA,CAAA,CAAA;2FAIJ,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBA1BtC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,YAAY,EAAE;wBACb,6BAA6B;wBAC7B,2BAA2B;wBAC3B,0BAA0B;AAC1B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACR,YAAY;wBACZ,mBAAmB;wBACnB,cAAc;wBACd,eAAe;wBACf,aAAa;wBACb,gBAAgB;wBAChB,eAAe;wBACf,aAAa;wBACb,gBAAgB;wBAChB,aAAa;wBACb,iBAAiB;wBACjB,eAAe;wBACf,eAAe;wBACf,oBAAoB;wBACpB,oBAAoB;wBACpB,eAAe;AACf,qBAAA;oBACD,OAAO,EAAE,CAAC,6BAA6B,CAAC;AACxC,iBAAA,CAAA;;;AC9CD;;AAEG;;ACFH;;AAEG;;;;"}