{"version":3,"file":"sdcorejs-angular-forms-radio.mjs","sources":["../../../projects/sdcorejs-angular/forms/radio/src/radio.component.ts","../../../projects/sdcorejs-angular/forms/radio/src/radio.component.html","../../../projects/sdcorejs-angular/forms/radio/sdcorejs-angular-forms-radio.ts"],"sourcesContent":["import { Utilities } from '@sdcorejs/utils/fns';\n\nimport { CommonModule } from '@angular/common';\nimport {\n  booleanAttribute,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  computed,\n  contentChild,\n  inject,\n  input,\n  model,\n  OnDestroy,\n  OnInit,\n  output,\n} from '@angular/core';\nimport { ReactiveFormsModule, ValidatorFn, Validators } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { Subscription } from 'rxjs';\n\nimport { SdLabelDefDirective, SdSuffixDefDirective, SdViewDefDirective } from '@sdcorejs/angular/forms/directives';\n\nimport {\n  SdFormControl,\n  SdInlineErrorValidator,\n  sdFormControlState,\n  SdViewed,\n  SdViewedInput,\n  sdViewedInline,\n  sdViewedTransform,\n  ɵsdFormControlConnector,\n  ɵSdFormControlParent,\n} from '@sdcorejs/angular/forms/models';\nimport { sdIsEmpty, sdSerializeDataValue } from '@sdcorejs/angular/utilities/data-state';\nimport { Color } from '@sdcorejs/utils/models';\nimport { TranslatePipe } from '@sdcorejs/angular/i18n';\nimport { SdEmptyPipe } from '@sdcorejs/angular/pipes';\nimport { SdLabel } from '@sdcorejs/angular/forms/label';\nimport { SdHrefDirective } from '@sdcorejs/angular/directives';\n\n@Component({\n  selector: 'sd-radio',\n  templateUrl: './radio.component.html',\n  styleUrl: './radio.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  host: {\n    // why: host class .sd-c-<x> + default sd-c-primary cho fallback. Thay data-sd-color\n    // để tránh edge case host-attr-binding không reactive trong vài cảnh build pipeline.\n    '[class.sd-c-primary]': \"color() === 'primary'\",\n    '[class.sd-c-secondary]': \"color() === 'secondary'\",\n    '[class.sd-c-info]': \"color() === 'info'\",\n    '[class.sd-c-success]': \"color() === 'success'\",\n    '[class.sd-c-warning]': \"color() === 'warning'\",\n    '[class.sd-c-error]': \"color() === 'error'\",\n  },\n  imports: [\n    CommonModule,\n    ReactiveFormsModule,\n    MatTooltipModule,\n    MatFormFieldModule,\n    MatRadioModule,\n    SdLabel,\n    SdEmptyPipe,\n    SdHrefDirective,\n    TranslatePipe,\n  ],\n})\nexport class SdRadio implements OnInit, OnDestroy {\n  readonly #ref = inject(ChangeDetectorRef);\n\n  readonly id = `I${Utilities.generateUuid()}`;\n  readonly labelId = `${this.id}-label`;\n  readonly errorId = `${this.id}-error`;\n  readonly #defaultName = Utilities.generateUuid();\n  formControl = new SdFormControl();\n  #subscription = new Subscription();\n\n  // Inputs — accept null|undefined at boundary, transform to canonical\n  readonly autoIdInput = input<string | undefined, string | null | undefined>(undefined, {\n    alias: 'autoId',\n    transform: (v): string | undefined => v ?? undefined,\n  });\n  readonly name = input<string | undefined, string | null | undefined>(undefined, {\n    transform: (v): string | undefined => v ?? undefined,\n  });\n  readonly form = input<ɵSdFormControlParent>(undefined);\n  readonly label = input<string | undefined, string | null | undefined>(undefined, {\n    transform: (v): string | undefined => v ?? undefined,\n  });\n  readonly placeholder = input<string | undefined, string | null | undefined>(undefined, {\n    transform: (v): string | undefined => v ?? undefined,\n  });\n  readonly display = input<'row' | 'column', 'row' | 'column' | null | undefined>('row', {\n    transform: (v): 'row' | 'column' => v || 'row',\n  });\n  readonly items = input<any[], any[] | null | undefined>([], {\n    transform: (v): any[] => (Array.isArray(v) ? v : []),\n  });\n  readonly valueField = input.required<string>();\n  readonly displayField = input.required<string>();\n  readonly required = input(false, { transform: booleanAttribute });\n  readonly inlineError = input<string | undefined, string | null | undefined>(undefined, {\n    transform: (v): string | undefined => v ?? undefined,\n  });\n  readonly disabled = input(false, { transform: booleanAttribute });\n  /** Display mode: `false` edit · `true` static view · `'inline'` interactive (disabled `'inline'` → static). */\n  readonly viewed = input<SdViewed, SdViewedInput>(false, { transform: sdViewedTransform });\n\n  // why: tri-state viewed — `'inline'` keeps the radio group interactive; disabled `'inline'` → static.\n  readonly #viewedState = sdViewedInline(this.viewed, undefined, this.disabled);\n  /** `true` when the static read-only view should render. */\n  readonly isViewed = this.#viewedState.isViewed;\n  // why: legacy callers pass `null` → fallback to 'primary'. Color enum mở rộng hơn ThemePalette,\n  // áp dụng qua host attr [data-sd-color] + SCSS override MDC token vars (mat [color] không nhận 'success'/'info'/...).\n  readonly color = input<Color, Color | null | undefined>('primary', {\n    transform: (v): Color => v || 'primary',\n  });\n  readonly hyperlink = input<string | undefined, string | null | undefined>(undefined, {\n    transform: (v): string | undefined => v ?? undefined,\n  });\n\n  // Two-way model\n  readonly model = model<number | string | boolean | undefined | null>(undefined);\n\n  // Content children\n  readonly sdSuffixDef = contentChild(SdSuffixDefDirective);\n  readonly sdLabelDef = contentChild(SdLabelDefDirective);\n  readonly sdViewDef = contentChild(SdViewDefDirective);\n\n  // Outputs (modelChange auto-generated by model() signal)\n  readonly sdChange = output<unknown>();\n  readonly sdSelection = output<{ value: any | any[]; item?: any }>();\n\n  // Computed (template bindings)\n  readonly autoId = computed(() => (this.autoIdInput() ? `forms-radio-${this.autoIdInput()}` : undefined));\n  // Kept for back-compat with templates that read `normalizedItems()` — alias of items()\n  readonly normalizedItems = computed(() => this.items());\n  readonly #state = sdFormControlState(computed(() => this.formControl));\n  readonly dataDisabled = computed(() => (this.#state().disabled ? 'true' : 'false'));\n  readonly dataEmpty = computed(() => (sdIsEmpty(this.#state().value) ? 'true' : 'false'));\n  readonly dataValue = computed(() => sdSerializeDataValue(this.#state().value));\n  readonly dataRequired = computed(() => (this.required() ? 'true' : 'false'));\n  readonly visibleError = computed<'required' | 'inlineError' | undefined>(() => {\n    if (!this.#state().touched) return undefined;\n    if (this.formControl.hasError('required')) return 'required';\n    if (this.formControl.hasError('inlineError')) return 'inlineError';\n    return undefined;\n  });\n  readonly ariaLabelledBy = computed(() => (this.sdLabelDef()?.templateRef || this.label() ? this.labelId : undefined));\n  readonly ariaLabel = computed(() => (this.ariaLabelledBy() ? undefined : this.placeholder() || undefined));\n  readonly ariaDescribedBy = computed(() => (this.visibleError() ? this.errorId : undefined));\n  readonly ariaInvalid = computed(() => (this.#state().invalid ? 'true' : 'false'));\n\n  readonly viewedText = computed(() => {\n    const items = this.items();\n    const vField = this.valueField();\n    const dField = this.displayField();\n    // why: tìm item match value rồi trả về string ở `displayField`, không trả nguyên object (sẽ in [object Object]).\n    const match = items.find(e => this.formControl?.value?.toString() === e?.[vField]?.toString());\n    return match?.[dField] ?? '';\n  });\n\n  readonly #formConnector = ɵsdFormControlConnector<\n    number | string | boolean | undefined | null,\n    number | string | boolean | undefined | null\n  >({\n    form: this.form,\n    name: computed(() => this.name() || this.#defaultName),\n    control: computed(() => this.formControl),\n    model: this.model,\n    writeModel: value => {\n      const vField = this.valueField();\n      this.model.set(value);\n      this.sdChange.emit(value);\n      this.sdSelection.emit({\n        value,\n        item: this.items().find(item => value?.toString() === item?.[vField]?.toString()),\n      });\n    },\n    validators: computed(() => {\n      const validators: ValidatorFn[] = [];\n      if (this.required()) validators.push(Validators.required);\n      if (this.inlineError()) validators.push(SdInlineErrorValidator);\n      return validators;\n    }),\n    disabled: this.disabled,\n  });\n\n  ngOnInit() {\n    this.#subscription.add(\n      this.formControl.sdChanges.subscribe(() => {\n        this.#ref.markForCheck();\n      })\n    );\n  }\n\n  ngOnDestroy() {\n    this.#subscription.unsubscribe();\n  }\n\n  reValidate = () => {\n    this.formControl.updateValueAndValidity({ emitEvent: true });\n  };\n}\n","@let _sdLabelDef = sdLabelDef();\n@let _sdSuffixDef = sdSuffixDef();\n@let _label = label();\n@let _display = display();\n@let _valueField = valueField();\n@let _hyperlink = hyperlink();\n\n@if (isViewed()) {\n  @if (_sdLabelDef?.templateRef) {\n    <ng-container *ngTemplateOutlet=\"_sdLabelDef!.templateRef\"> </ng-container>\n  } @else if (_label) {\n    <div class=\"T14R text-secondary\">{{ _label }}</div>\n  }\n  @if (_hyperlink) {\n    <!-- Nếu có hyperlink thì dùng thẻ a -->\n    <a [sdHref]=\"_hyperlink!\">{{ viewedText() || placeholder() }}</a>\n  } @else {\n    <!-- Ngoài ra dùng thẻ mặc định -->\n    <div class=\"T14M\">{{ viewedText() || placeholder() | sdEmpty }}</div>\n  }\n} @else {\n  <section [ngClass]=\"{ 'c-section': _display === 'row' }\">\n    @if (_sdLabelDef?.templateRef) {\n      <div [id]=\"labelId\"><ng-container *ngTemplateOutlet=\"_sdLabelDef!.templateRef\"> </ng-container></div>\n    } @else if (_label) {\n      <sd-label [attr.id]=\"labelId\" [label]=\"_label!\" [required]=\"required()\"></sd-label>\n    }\n    <mat-radio-group\n      [class.c-radio-group-column]=\"_display === 'column'\"\n      [class.c-radio-group-row]=\"_display === 'row'\"\n      [formControl]=\"formControl\"\n      [attr.data-autoId]=\"autoId()\"\n      [attr.data-disabled]=\"dataDisabled()\"\n      [attr.data-empty]=\"dataEmpty()\"\n      [attr.data-value]=\"dataValue()\"\n      [attr.data-required]=\"dataRequired()\"\n      [attr.aria-labelledby]=\"ariaLabelledBy()\"\n      [attr.aria-label]=\"ariaLabel()\"\n      [attr.aria-describedby]=\"ariaDescribedBy()\"\n      [attr.aria-invalid]=\"ariaInvalid()\"\n      [attr.aria-required]=\"dataRequired()\">\n      @for (item of normalizedItems(); track item[valueField()]) {\n        <mat-radio-button [class.m-0]=\"_display === 'column'\" [class.mr-16]=\"_display === 'row'\" [value]=\"item[_valueField]\">\n          {{ item[displayField()] }}\n        </mat-radio-button>\n      }\n    </mat-radio-group>\n\n    @if (_sdSuffixDef?.templateRef) {\n      <ng-container *ngTemplateOutlet=\"_sdSuffixDef!.templateRef\"> </ng-container>\n    }\n\n    @if (visibleError() === 'required') {\n      <mat-error [id]=\"errorId\">\n        {{ 'core.form.radio.required' | translate }}\n      </mat-error>\n    } @else if (visibleError() === 'inlineError') {\n      <mat-error [id]=\"errorId\">\n        {{ inlineError() }}\n      </mat-error>\n    }\n  </section>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["ɵsdFormControlConnector"],"mappings":";;;;;;;;;;;;;;;;;;;;;MAuEa,OAAO,CAAA;AACT,IAAA,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAEhC,IAAA,EAAE,GAAG,CAAA,CAAA,EAAI,SAAS,CAAC,YAAY,EAAE,EAAE;AACnC,IAAA,OAAO,GAAG,CAAA,EAAG,IAAI,CAAC,EAAE,QAAQ;AAC5B,IAAA,OAAO,GAAG,CAAA,EAAG,IAAI,CAAC,EAAE,QAAQ;AAC5B,IAAA,YAAY,GAAG,SAAS,CAAC,YAAY,EAAE;AAChD,IAAA,WAAW,GAAG,IAAI,aAAa,EAAE;AACjC,IAAA,aAAa,GAAG,IAAI,YAAY,EAAE;;AAGzB,IAAA,WAAW,GAAG,KAAK,CAAgD,SAAS,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EACnF,KAAK,EAAE,QAAQ;YACf,SAAS,EAAE,CAAC,CAAC,KAAyB,CAAC,IAAI,SAAS,EAAA,CAAA,GAAA,CAFiC;AACrF,YAAA,KAAK,EAAE,QAAQ;YACf,SAAS,EAAE,CAAC,CAAC,KAAyB,CAAC,IAAI,SAAS;AACrD,SAAA,CAAA,CAAA,CAAC;AACO,IAAA,IAAI,GAAG,KAAK,CAAgD,SAAS,wCAC5E,SAAS,EAAE,CAAC,CAAC,KAAyB,CAAC,IAAI,SAAS,EAAA,CAAA,GAAA,CAD0B;YAC9E,SAAS,EAAE,CAAC,CAAC,KAAyB,CAAC,IAAI,SAAS;AACrD,SAAA,CAAA,CAAA,CAAC;AACO,IAAA,IAAI,GAAG,KAAK,CAAuB,SAAS,gDAAC;AAC7C,IAAA,KAAK,GAAG,KAAK,CAAgD,SAAS,yCAC7E,SAAS,EAAE,CAAC,CAAC,KAAyB,CAAC,IAAI,SAAS,EAAA,CAAA,GAAA,CAD2B;YAC/E,SAAS,EAAE,CAAC,CAAC,KAAyB,CAAC,IAAI,SAAS;AACrD,SAAA,CAAA,CAAA,CAAC;AACO,IAAA,WAAW,GAAG,KAAK,CAAgD,SAAS,+CACnF,SAAS,EAAE,CAAC,CAAC,KAAyB,CAAC,IAAI,SAAS,EAAA,CAAA,GAAA,CADiC;YACrF,SAAS,EAAE,CAAC,CAAC,KAAyB,CAAC,IAAI,SAAS;AACrD,SAAA,CAAA,CAAA,CAAC;AACO,IAAA,OAAO,GAAG,KAAK,CAAwD,KAAK,2CACnF,SAAS,EAAE,CAAC,CAAC,KAAuB,CAAC,IAAI,KAAK,EAAA,CAAA,GAAA,CADuC;YACrF,SAAS,EAAE,CAAC,CAAC,KAAuB,CAAC,IAAI,KAAK;AAC/C,SAAA,CAAA,CAAA,CAAC;AACO,IAAA,KAAK,GAAG,KAAK,CAAkC,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EACxD,SAAS,EAAE,CAAC,CAAC,MAAa,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAA,CAAA,GAAA,CADM;YAC1D,SAAS,EAAE,CAAC,CAAC,MAAa,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AACrD,SAAA,CAAA,CAAA,CAAC;AACO,IAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,qDAAU;AACrC,IAAA,YAAY,GAAG,KAAK,CAAC,QAAQ,uDAAU;AACvC,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,4CAAI,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA7B,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAC;AACxD,IAAA,WAAW,GAAG,KAAK,CAAgD,SAAS,+CACnF,SAAS,EAAE,CAAC,CAAC,KAAyB,CAAC,IAAI,SAAS,EAAA,CAAA,GAAA,CADiC;YACrF,SAAS,EAAE,CAAC,CAAC,KAAyB,CAAC,IAAI,SAAS;AACrD,SAAA,CAAA,CAAA,CAAC;AACO,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,4CAAI,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA7B,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAC;;AAExD,IAAA,MAAM,GAAG,KAAK,CAA0B,KAAK,0CAAI,SAAS,EAAE,iBAAiB,EAAA,CAAA,GAAA,CAA9B,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAC;;AAGhF,IAAA,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC;;AAEpE,IAAA,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ;;;AAGrC,IAAA,KAAK,GAAG,KAAK,CAAkC,SAAS,yCAC/D,SAAS,EAAE,CAAC,CAAC,KAAY,CAAC,IAAI,SAAS,EAAA,CAAA,GAAA,CAD0B;YACjE,SAAS,EAAE,CAAC,CAAC,KAAY,CAAC,IAAI,SAAS;AACxC,SAAA,CAAA,CAAA,CAAC;AACO,IAAA,SAAS,GAAG,KAAK,CAAgD,SAAS,6CACjF,SAAS,EAAE,CAAC,CAAC,KAAyB,CAAC,IAAI,SAAS,EAAA,CAAA,GAAA,CAD+B;YACnF,SAAS,EAAE,CAAC,CAAC,KAAyB,CAAC,IAAI,SAAS;AACrD,SAAA,CAAA,CAAA,CAAC;;AAGO,IAAA,KAAK,GAAG,KAAK,CAA+C,SAAS,iDAAC;;AAGtE,IAAA,WAAW,GAAG,YAAY,CAAC,oBAAoB,uDAAC;AAChD,IAAA,UAAU,GAAG,YAAY,CAAC,mBAAmB,sDAAC;AAC9C,IAAA,SAAS,GAAG,YAAY,CAAC,kBAAkB,qDAAC;;IAG5C,QAAQ,GAAG,MAAM,EAAW;IAC5B,WAAW,GAAG,MAAM,EAAsC;;IAG1D,MAAM,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,CAAA,YAAA,EAAe,IAAI,CAAC,WAAW,EAAE,CAAA,CAAE,GAAG,SAAS,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;IAE/F,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC9C,IAAA,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7D,YAAY,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAC1E,SAAS,GAAG,QAAQ,CAAC,OAAO,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC/E,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qDAAC;IACrE,YAAY,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,GAAG,MAAM,GAAG,OAAO,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AACnE,IAAA,YAAY,GAAG,QAAQ,CAAyC,MAAK;AAC5E,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO;AAAE,YAAA,OAAO,SAAS;AAC5C,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC;AAAE,YAAA,OAAO,UAAU;AAC5D,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC;AAAE,YAAA,OAAO,aAAa;AAClE,QAAA,OAAO,SAAS;AAClB,IAAA,CAAC,wDAAC;AACO,IAAA,cAAc,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,UAAU,EAAE,EAAE,WAAW,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,0DAAC;IAC5G,SAAS,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,cAAc,EAAE,GAAG,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,SAAS,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IACjG,eAAe,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAClF,WAAW,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAExE,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAClC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;AAChC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE;;AAElC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;AAC9F,QAAA,OAAO,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE;AAC9B,IAAA,CAAC,sDAAC;IAEO,cAAc,GAAGA,uBAAuB,CAG/C;QACA,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,QAAA,IAAI,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;QACtD,OAAO,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC;QACzC,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,UAAU,EAAE,KAAK,IAAG;AAClB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;AAChC,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACrB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AACzB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBACpB,KAAK;gBACL,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,GAAG,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;AAClF,aAAA,CAAC;QACJ,CAAC;AACD,QAAA,UAAU,EAAE,QAAQ,CAAC,MAAK;YACxB,MAAM,UAAU,GAAkB,EAAE;YACpC,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,gBAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YACzD,IAAI,IAAI,CAAC,WAAW,EAAE;AAAE,gBAAA,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC;AAC/D,YAAA,OAAO,UAAU;AACnB,QAAA,CAAC,CAAC;QACF,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACxB,KAAA,CAAC;IAEF,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,MAAK;AACxC,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;QAC1B,CAAC,CAAC,CACH;IACH;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;IAClC;IAEA,UAAU,GAAG,MAAK;QAChB,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC9D,IAAA,CAAC;wGAvIU,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAP,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA0DkB,oBAAoB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACrB,mBAAmB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACpB,kBAAkB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnItD,07EA+DA,EAAA,MAAA,EAAA,CAAA,o5CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDHI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,yTACnB,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEP,eAAe,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EADf,WAAW,EAAA,IAAA,EAAA,SAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAEX,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAGJ,OAAO,EAAA,UAAA,EAAA,CAAA;kBA5BnB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,mBAGH,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EAAA,IAAA,EACV;;;AAGJ,wBAAA,sBAAsB,EAAE,uBAAuB;AAC/C,wBAAA,wBAAwB,EAAE,yBAAyB;AACnD,wBAAA,mBAAmB,EAAE,oBAAoB;AACzC,wBAAA,sBAAsB,EAAE,uBAAuB;AAC/C,wBAAA,sBAAsB,EAAE,uBAAuB;AAC/C,wBAAA,oBAAoB,EAAE,qBAAqB;qBAC5C,EAAA,OAAA,EACQ;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,gBAAgB;wBAChB,kBAAkB;wBAClB,cAAc;wBACd,OAAO;wBACP,WAAW;wBACX,eAAe;wBACf,aAAa;AACd,qBAAA,EAAA,QAAA,EAAA,07EAAA,EAAA,MAAA,EAAA,CAAA,o5CAAA,CAAA,EAAA;unDA4DmC,oBAAoB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MACrB,mBAAmB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MACpB,kBAAkB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEnItD;;AAEG;;;;"}